PageSourceSearch

https://hausum.com/inspeccion/

html hausum.com collected 2026-10-04 10:21:37 UTC 265,628 bytes, 3,180 lines download raw bytes

1<!DOCTYPE html>
2<html lang="es-ES" prefix="og: https://ogp.me/ns#">
3<head>
4	<meta charset="UTF-8">
5<script>
6var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),document.addEventListener("gform/theme/scripts_loaded",function(){gform.themeScriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,themeScriptsLoaded:!1,isFormEditor:()=>"function"==typeof InitializeEditor,callIfLoaded:function(o){return!(!gform.domLoaded||!gform.scriptsLoaded||!gform.themeScriptsLoaded&&!gform.isFormEditor()||(gform.isFormEditor()&&console.warn("The use of gform.initializeOnLoaded() is deprecated in the form editor context and will be removed in Gravity Forms 3.1."),o(),0))},initializeOnLoaded:function(o){gform.callIfLoaded(o)||(document.addEventListener("gform_main_scripts_loaded",()=>{gform.scriptsLoaded=!0,gform.callIfLoaded(o)}),document.addEventListener("gform/theme/scripts_loaded",()=>{gform.themeScriptsLoaded=!0,gform.callIfLoaded(o)}),window.addEventListener("DOMContentLoaded",()=>{gform.domLoaded=!0,gform.callIfLoaded(o)}))},hooks:{action:{},filter:{}},addAction:function(o,r,e,t){gform.addHook("action",o,r,e,t)},addFilter:function(o,r,e,t){gform.addHook("filter",o,r,e,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,r){gform.removeHook("action",o,r)},removeFilter:function(o,r,e){gform.removeHook("filter",o,r,e)},addHook:function(o,r,e,t,n){null==gform.hooks[o][r]&&(gform.hooks[o][r]=[]);var d=gform.hooks[o][r];null==n&&(n=r+"_"+d.length),gform.hooks[o][r].push({tag:n,callable:e,priority:t=null==t?10:t})},doHook:function(r,o,e){var t;if(e=Array.prototype.slice.call(e,1),null!=gform.hooks[r][o]&&((o=gform.hooks[r][o]).sort(function(o,r){return o.priority-r.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==r?t.apply(null,e):e[0]=t.apply(null,e)})),"filter"==r)return e[0]},removeHook:function(o,r,t,n){var e;null!=gform.hooks[o][r]&&(e=(e=gform.hooks[o][r]).filter(function(o,r,e){return!!(null!=n&&n!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][r]=e)}});
7</script>
7
8
9	<meta name="viewport" content="width=device-width, initial-scale=1.0">
10	<link rel="profile" href="https://gmpg.org/xfn/11">
11	<link rel="preconnect" href="https://fonts.googleapis.com">
12	<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
13		<link rel="preload" href="https://hausum.com/wp-content/themes/hausum-theme/fonts/aptos-display-bold.woff2" as="font" type="font/woff2" crossorigin>
14	<link rel="preload" href="https://hausum.com/wp-content/themes/hausum-theme/fonts/aptos-regular.woff2" as="font" type="font/woff2" crossorigin>
15	<meta name="viewport" content="width=device-width, initial-scale=1.0">
16<link rel="alternate" hreflang="en" href="https://hausum.com/en/inspection/" />
17<link rel="alternate" hreflang="fr" href="https://hausum.com/fr/inspection/" />
18<link rel="alternate" hreflang="de" href="https://hausum.com/de/inspektion/" />
19<link rel="alternate" hreflang="es" href="https://hausum.com/inspeccion/" />
20<link rel="alternate" hreflang="ca" href="https://hausum.com/ca/inspeccio/" />
21<link rel="alternate" hreflang="nl" href="https://hausum.com/nl/ins
21pectie/" />
22<link rel="alternate" hreflang="x-default" href="https://hausum.com/inspeccion/" />
23
24<!-- Google Tag Manager for WordPress by gtm4wp.com -->
25<script data-cfasync="false" data-pagespeed-no-defer>
26	var gtm4wp_datalayer_name = "dataLayer";
27	var dataLayer = dataLayer || [];
28	(function(){dataLayer.push(arguments);})('set', 'developer_id.dNGJiYT', true);
29</script>
29
30<!-- End Google Tag Manager for WordPress by gtm4wp.com -->	<!-- Google Consent Mode v2 Default -->
31	
31<script>
32	window.dataLayer = window.dataLayer || [];
33	function gtag(){dataLayer.push(arguments);}
34	
35	// Read cookie helper
36	function hsmGetConsentCookie() {
37		var name = "hsm_cookie_consent=";
38		var decodedCookie = decodeURIComponent(document.cookie);
39		var ca = decodedCookie.split(';');
40		for(var i = 0; i < ca.length; i++) {
41			var c = ca[i].trim();
42			if (c.indexOf(name) === 0) return c.substring(name.length, c.length);
43		}
44		return "";
45	}
46	
47	var userConsent = hsmGetConsentCookie();
48	var consentState = userConsent === 'all' ? 'granted' : 'denied';
49	
50	gtag('consent', 'default', {
51		'ad_storage': consentState,
52		'analytics_storage': consentState,
53		'ad_user_data': consentState,
54		'ad_personalization': consentState,
55		'wait_for_update': 500
56	});
57	</script>
57
58		
58<script id="grecaptcha-adblock-polyfill">
59	(function() {
60		if (typeof window.grecaptcha === 'undefined') {
61			window.grecaptcha = {
62				ready: function(cb) { if (typeof cb === 'function') { try { cb(); } catch(e){} } },
63				execute: function() { return Promise.resolve('adblock_fallback_token'); },
64				render: function() { return 0; },
65				getResponse: function() { return 'adblock_fallback_token'; },
66				reset: function() {}
67			};
68		}
69	})();
70	</script>
70
71		<style id="hausum-select-contrast-fix">
72		select option,
73		.gform_wrapper select option,
74		.gfield select option,
75		.form-row select option,
76		.modal select option,
77		.lightbox_form select option,
78		.gform_wrapper select.gfield_select option {
79			background-color: #0A1E3C !important;
80			color: #FFFFFF !important;
81		}
82		select option:hover,
83		select option:focus,
84		select option:active,
85		select option:checked {
86			background-color: #2E9BFF !important;
87			color: #FFFFFF !important;
88		}
89
90		/* ===== POPUP DARK MODALS & LIGHTBOX FORM HIGH-CONTRAST FIX ===== */
91		#hsm-modal-gf-39 .gfield_label,
92		#hsm-modal-gf-39 label,
93		#modal-lead .gfield_label,
94		#modal-lead label,
95		.lightbox_form .gfield_label,
96		.lightbox_form label {
97			color: #FFFFFF !important;
98			opacity: 1 !important;
99		}
100
101		/* Form Inputs & Textareas High Contrast for Dark Modals */
102		#hsm-modal-gf-39 input[type="text"],
103		#hsm-modal-gf-39 input[type="email"],
104		#hsm-modal-gf-39 input[type="tel"],
105		#hsm-modal-gf-39 input[type="url"],
106		#hsm-modal-gf-39 input[type="number"],
107		#hsm-modal-gf-39 textarea,
108		#modal-lead input[type="text"],
109		#modal-lead input[type="email"],
110		#modal-lead input[type="tel"],
111		#modal-lead textarea,
112		.lightbox_form input {
113			color: #FFFFFF !important;
114			background-color: rgba(255, 255, 255, 0.12) !important;
115			border: 1.5px solid rgba(255, 255, 255, 0.35) !important;
116			border-radius: 8px !important;
117		}
118
119		#hsm-modal-gf-39 input::placeholder,
120		#hsm-modal-gf-39 textarea::placeholder,
121		#modal-lead input::placeholder,
122		.lightbox_form input::placeholder {
123			color: #CBD5E1 !important;
124			opacity: 1 !important;
125		}
126
127		/* Standard Light Background Gravity Form Styles (e.g. /reserva/) */
128		.gform_wrapper:not(#hsm-modal-gf-39):not(#modal-lead) .gfield_label,
129		.gform_wrapper:not(#hsm-modal-gf-39):not(#modal-lead) label,
130		.gform_wrapper:not(#hsm-modal-gf-39):not(#modal-lead) .gform-field-label,
131		.gform_wrapper:not(#hsm-modal-gf-39):not(#modal-lead) .gfield_consent_label,
132		.gform_wrapper:not(#hsm-modal-gf-39):not(#modal-lead) .gform_title,
133		.gform_wrapper:not(#hsm-modal-gf-39):not(#modal-lead) .gfield_description,
134		.gform_wrapper:not(#hsm-modal-gf-39):not(#modal-lead) .gsection_title,
135		.gform_wrapper:not(#hsm-modal-gf-39):not(#modal-lead) legend {
136			color: #0A1E3C !important;
137			opacity: 1 !important;
138			font-weight: 600 !important;
139		}
140
141		.gform_wrapper:not(#hsm-modal-gf-39):not(#modal-lead) input[type="text"],
142		.gform_wrapper:not(#hsm-modal-gf-39):not(#modal-lead) input[type="email"],
143		.gform_wrapper:not(#hsm-modal-gf-39):not(#modal-lead) input[type="tel"],
144		.gform_wrapper:not(#hsm-modal-gf-39):not(#modal-lead) input[type="url"],
145		.gform_wrapper:not(#hsm-modal-gf-39):not(#modal-lead) input[type="number"],
146		.gform_wrapper:not(#hsm-modal-gf-39):not(#modal-lead) input[type="password"],
147		.gform_wrapper:not(#hsm-modal-gf-39):not(#modal-lead) textarea,
148		.gform_wrapper:not(#hsm-modal-gf-39):not(#modal-lead) select {
149			color: #0F172A !important;
150			background-color: #FFFFFF !important;
151			border: 1.5px solid #CBD5E1 !important;
152			border-radius: 8px !important;
153		}
154
155		.gform_wrapper:not(#hsm-modal-gf-39):not(#modal-lead) input::placeholder,
156		.gform_wrapper:not(#hsm-modal-gf-39):not(#modal-lead) textarea::placeholder {
157			color: #64748B !important;
158			opacity: 1 !important;
159		}
160
161		/* Required Asterisk Red Contrast */
162		.gform_wrapper .gfield_required,
163		.gfield_required,
164		label .gfield_required,
165		span.gfield_required {
166			color: #EF4444 !important;
167			font-weight: bold !important;
168			opacity: 1 !important;
169		}
170
171		.gform_wrapper .gfield_checkbox label a,
172		.gform_wrapper .ginput_container_consent label a {
173			color: #2563EB !important;
174			font-weight: 700 !important;
175			text-decoration: underline !important;
176		}
177
178		/* Restore readable white title text on the darker "Sobre el inmueble" cards in /reserva/.
179		   The global .gform-field-label navy rule above otherwise wins by specificity and makes
180		   these cards' dark-blue/navy backgrounds hard to read. */
181		#gform_wrapper_28 .hausum-tipo-inmueble .gchoice:not(#_):nth-of-type(3) .gform-field-label,
182		#gform_wrapper_28 .hausum-tipo-inmueble .gchoice:not(#_):nth-of-type(4) .gform-field-label,
183		#gform_wrapper_28 .hausum-tipo-inmueble .gchoice:not(#_):nth-of-type(5) .gform-field-label {
184			color: #FFFFFF !important;
185		}
186	</style>
187	
188<!-- Optimización en motores de búsqueda por Rank Math PRO -  https://rankmath.com/ -->
189<title>Inspección de inmuebles: Profesionales en inspecciones de vivienda | Hausum</title>
190<meta name="description" content="Hausum profesionales en inspecciones de viviendas te ayudamos a revisar cualquier desperfecto antes de comprar tu futura vivienda. Contrata a un home inspector de confianza."/>
191<meta name="robots" content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"/>
192<link rel="canonical" href="https://hausum.com/inspeccion/" />
193<meta property="og:locale" content="es_ES" />
194<meta property="og:type" content="article" />
195<meta property="og:title" content="Inspección de inmuebles: Profesionales en inspecciones de vivienda | Hausum" />
196<meta property="og:description" content="Hausum profesionales en inspecciones de viviendas te ayudamos a revisar cualquier desperfecto antes de comprar tu futura vivienda. Contrata a un home inspector de confianza." />
197<meta property="og:url" content="https://hausum.com/inspeccion/" />
198<meta property="og:site_name" content="Buyyourhome" />
199<meta property="og:updated_time" content="2026-07-17T09:08:00+02:00" />
200<meta property="og:image" content="https://hausum.com/wp-content/uploads/2026/08/hausum-og-inspector.jpg?v=3" />
201<meta property="og:image:secure_url" content="https://hausum.com/wp-content/uploads/2026/08/hausum-og-inspector.jpg?v=3" />
202<meta property="og:image:alt" content="Inspección de inmuebles" />
203<meta property="article:published_time" content="2025-01-19T09:26:59+01:00" />
204<meta property="article:modified_time" content="2026-07-17T09:08:00+02:00" />
205<meta name="twitter:card" content="summary_large_image" />
206<meta name="twitter:title" content="Inspección de inmuebles: Profesionales en inspecciones de vivienda | Hausum" />
207<meta name="twitter:description" content="Hausum profesionales en inspecciones de viviendas te ayudamos a revisar cualquier desperfecto antes de comprar tu futura vivienda. Contrata a un home inspector de confianza." />
208<meta name="twitter:image" content="https://hausum.com/wp-content/uploads/2026/08/hausum-og-inspector.jpg?v=3" />
209<meta name="twitter:label1" content="Tiempo de lectura" />
210<meta name="twitter:data1" content="Menos de un minuto" />
211<script type="application/ld+json" class="rank-math-schema-pro">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://hausum.com/#organization","name":"Buyyourhome"},{"@type":"WebSite","@id":"https://hausum.com/#website","url":"https://hausum.com","name":"Buyyourhome","publisher":{"@id":"https://hausum.com/#organization"},"inLanguage":"es"},{"@type":"WebPage","@id":"https://hausum.com/inspeccion/#webpage","url":"https://hausum.com/inspeccion/","name":"Inspecci\u00f3n de inmuebles: Profesionales en inspecciones de vivienda | Hausum","datePublished":"2025-01-19T09:26:59+01:00","dateModified":"2026-07-17T09:08:00+02:00","isPartOf":{"@id":"https://hausum.com/#website"},"inLanguage":"es"},{"@type":"Person","@id":"https://hausum.com/author/admbyht4/","name":"Hausum","url":"https://hausum.com/author/admbyht4/","image":{"@type":"ImageObject","@id":"https://secure.gravatar.com/avatar/46d1d14a97aea9adfcf2ca7dbf3c19a1396284214b3bd06594409e23a59277d5?s=96&amp;d=mm&amp;r=g","url":"https://secure.gravatar.com/avatar/46d1d14a97aea9adfcf2ca7dbf3c19a1396284214b3bd06594409e23a59277d5?s=96&amp;d=mm&amp;r=g","caption":"Hausum","inLanguage":"es"},"worksFor":{"@id":"https://hausum.com/#organization"}},{"@type":"Article","headline":"Inspecci\u00f3n de inmuebles: Profesionales en inspecciones de vivienda | Hausum","datePublished":"2025-01-19T09:26:59+01:00","dateModified":"2026-07-17T09:08:00+02:00","author":{"@id":"https://hausum.com/author/admbyht4/","name":"Hausum"},"publisher":{"@id":"https://hausum.com/#organization"},"description":"Hausum profesionales en inspecciones de viviendas te ayudamos a revisar cualquier desperfecto antes de comprar tu futura vivienda. Contrata a un home inspector de confianza.","name":"Inspecci\u00f3n de inmuebles: Profesionales en inspecciones de vivienda | Hausum","@id":"https://hausum.com/inspeccion/#richSnippet","isPartOf":{"@id":"https://hausum.com/inspeccion/#webpage"},"inLanguage":"es","mainEntityOfPage":{"@id":"https://hausum.com/inspeccion/#webpage"}}]}</script>
211
212<!-- /Plugin Rank Math WordPress SEO -->
213
214<link rel='dns-prefetch' href='//cdnjs.cloudflare.com' />
215<link rel='dns-prefetch' href='//maps.googleapis.com' />
216<link rel='dns-prefetch' href='//unpkg.com' />
217<link rel='dns-prefetch' href='//www.google.com' />
218<meta property="og:locale" content="es_ES" />
219<meta property="og:type" content="website" />
220<meta property="og:title" content="Inspección de inmuebles · Hausum" />
221<meta property="og:description" content="Conoce el estado real de la vivienda que vas a comprar con un informe técnico independiente hecho por arquitectos colegiados." />
222<meta property="og:url" content="https://hausum.com/inspeccion/" />
223<meta property="og:site_name" content="Hausum" />
224<meta property="og:image" content="https://hausum.com/wp-content/uploads/2026/08/hausum-og-inspector.jpg?v=3" />
225<meta property="og:image:secure_url" content="https://hausum.com/wp-content/uploads/2026/08/hausum-og-inspector.jpg?v=3" />
226<meta property="og:image:width" content="1200" />
227<meta property="og:image:height" content="630" />
228<meta property="og:image:type" content="image/jpeg" />
229<meta name="twitter:card" content="summary_large_image" />
230<meta name="twitter:title" content="Inspección de inmuebles · Hausum" />
231<meta name="twitter:description" content="Conoce el estado real de la vivienda que vas a comprar con un informe técnico independiente hecho por arquitectos colegiados." />
232<meta name="twitter:image" content="https://hausum.com/wp-content/uploads/2026/08/hausum-og-inspector.jpg?v=3" />
233<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://hausum.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fhausum.com%2Finspeccion%2F" />
234<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://hausum.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fhausum.com%2Finspeccion%2F&#038;format=xml" />
235<style id="wp-img-auto-sizes-contain-inline-css">
236img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
237/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
238</style>
239<style id="wp-emoji-styles-inline-css">
240
241	img.wp-smiley, img.emoji {
242		display: inline !important;
243		border: none !important;
244		box-shadow: none !important;
245		height: 1em !important;
246		width: 1em !important;
247		margin: 0 0.07em !important;
248		vertical-align: -0.1em !important;
249		background: none !important;
250		padding: 0 !important;
251	}
252/*# sourceURL=wp-emoji-styles-inline-css */
253</style>
254<style id="wp-block-library-inline-css">
255:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
255--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
256
257/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */
258</style>
259<style id="classic-theme-styles-inline-css">
260/*! This file is auto-generated */
261.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
262/*# sourceURL=/wp-includes/css/classic-themes.min.css */
263</style>
264
265<style id="global-styles-inline-css">
266:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
2660) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
266.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
267:where(.wp-block-gp-entry-blocks-entries-loop.is-layout-flex){gap: 1.25em;}:where(.wp-block-gp-entry-blocks-entries-loop.is-layout-grid){gap: 1.25em;}
268/*# sourceURL=global-styles-inline-css */
269</style>
270
271<link rel='stylesheet' id='intl-tel-input-css-css' href='https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/css/intlTelInput.css?ver=17.0.19' media='all' />
272<link rel='stylesheet' id='wpml-menu-item-0-css' href='https://hausum.com/wp-content/plugins/sitepress-multilingual-cms/templates/language-switchers/menu-item/style.min.css?ver=1' media='all' />
273<link rel='stylesheet' id='leaflet-css-css' href='https://unpkg.com/[email protected]/dist/leaflet.css?ver=1.9.4' media='all' />
274<link rel='stylesheet' id='wp-cadastre-public-css-css' href='https://hausum.com/wp-content/plugins/WPCadastre/assets/css/wp-cadastre-public.css?ver=1.0.7' media='all' />
275<link rel='stylesheet' id='hausum-style-css' href='https://hausum.com/wp-content/themes/hausum-theme/style.css?ver=1.0.0' media='all' />
276<link rel='stylesheet' id='hausum-inspeccion-css' href='https://hausum.com/wp-content/themes/hausum-theme/css/inspeccion.css?ver=1.0.0' media='all' />
277<script id="wpml-cookie-js-extra">
278var wpml_cookies = {"wp-wpml_current_language":{"value":"es","expires":1,"path":"/"}};
279var wpml_cookies = {"wp-wpml_current_language":{"value":"es","expires":1,"path":"/"}};
280//# sourceURL=wpml-cookie-js-extra
281</script>
vendor: 1 bytes, line 281
281
282<script data-wp-strategy="defer" defer id="wpml-cookie-js" src="https://hausum.com/wp-content/plugins/sitepress-multilingual-cms/res/js/cookies/language-cookie.js?ver=497000"></script>
vendor: 1 bytes, line 282
282
283<script id="jquery-core-js" src="https://hausum.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 283
283
284<script id="jquery-migrate-js" src="https://hausum.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
284
285<link rel="https://api.w.org/" href="https://hausum.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://hausum.com/wp-json/wp/v2/pages/18102" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://hausum.com/xmlrpc.php?rsd" />
286<meta name="generator" content="WordPress 7.1.2" />
287<link rel='shortlink' href='https://hausum.com/?p=18102' />
288<meta name="generator" content="WPML ver:4.9.7 stt:8,37,1,4,3,2;" />
289<meta name="ti-site-data" content="eyJyIjoiMTowITc6MCEzMDowIiwibyI6Imh0dHBzOlwvXC9oYXVzdW0uY29tP3RpLW9ubGluZS11c2Vycy1nb29nbGU9MSZhbXA7cD0lMkZpbnNwZWNjaW9uJTJGJmFtcDtfd3Bub25jZT1jZDI4MTcwZTIwIn0=" />
290<!-- Google Tag Manager for WordPress by gtm4wp.com -->
291<!-- GTM Container placement set to automatic -->
292<script data-cfasync="false" data-pagespeed-no-defer>
293	var dataLayer_content = {"pagePostType":"page","pagePostType2":"single-page","pagePostAuthor":"Hausum"};
294	dataLayer.push( dataLayer_content );
295</script>
vendor: 1 bytes, line 295
295
296<script data-cfasync="false" data-pagespeed-no-defer>
vendor: 322 bytes, lines 296-301
296
297(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
298new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
299j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
300'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
301})(window,document,'script','dataLayer','
301GTM-TL44TWPX
vendor: 4 bytes, line 301
301');
302</script>
302
303<!-- End Google Tag Manager for WordPress by gtm4wp.com -->
304<script type="application/ld+json">
305{
306  "@context": "https://schema.org",
307  "@type": "Organization",
308  "@id": "https://hausum.com/#organization",
309  "name": "Hausum",
310  "url": "https://hausum.com/",
311  "logo": "https://hausum.com/wp-content/uploads/2023/04/hausum-principal.svg",
312  "email": "[email protected]",
313  "telephone": "+34930900232",
314  "address": {
315    "@type": "PostalAddress",
316    "streetAddress": "Diputació 170, Baixos",
317    "postalCode": "08011",
318    "addressLocality": "Barcelona",
319    "addressCountry": "ES"
320  },
321  "contactPoint": {
322    "@type": "ContactPoint",
323    "contactType": "customer service",
324    "telephone": "+34930900232",
325    "email": "[email protected]",
326    "areaServed": "ES",
327    "availableLanguage": ["es", "en"]
328  },
329  "sameAs": [
330    "https://www.instagram.com/hausum_com/",
331    "https://www.tiktok.com/@hausum.com",
332    "https://es.linkedin.com/company/hausum"
333  ]
334}
335</script>
335
336
337
338<script>
339(function () {
340  const SCRIPT_ID = "ldjson-faqpage";
341  const MAX_FAQS = 50;
342
343  const containersSelectors = [
344    ".faq",
345    ".faqs",
346    ".faq-list",
347    ".accordion",
348    ".elementor-accordion",
349    ".elementor-toggle",
350    ".wp-block-details",
351    "[data-faq]",
352    "[itemtype*='FAQPage']"
353  ];
354
355  const cleanText = (t) =>
356    (t || "")
357      .replace(/\s+/g, " ")
358      .replace(/\u00A0/g, " ")
359      .trim();
360
361  const htmlToText = (node) => {
362    if (!node) return "";
363    const clone = node.cloneNode(true);
364    clone.querySelectorAll("script, style, noscript").forEach((el) => el.remove());
365    clone.querySelectorAll("br").forEach((br) => br.replaceWith("\n"));
366    clone.querySelectorAll("p, li, div, section, article").forEach((el) => el.insertAdjacentText("beforeend", "\n"));
367    return cleanText(clone.textContent || "");
368  };
369
370  const uniqueBy = (arr, keyFn) => {
371    const seen = new Set();
372    return arr.filter((x) => {
373      const k = keyFn(x);
374      if (!k || seen.has(k)) return false;
375      seen.add(k);
376      return true;
377    });
378  };
379
380  const findContainers = () => {
381    const set = new Set();
382    containersSelectors.forEach((sel) => {
383      document.querySelectorAll(sel).forEach((el) => set.add(el));
384    });
385    if (set.size === 0) {
386      document.querySelectorAll("details, [role='tablist'], [aria-expanded]").forEach((el) => set.add(el));
387    }
388    return Array.from(set);
389  };
390
391  const extractFaqsFromContainer = (container) => {
392    const faqs = [];
393
394    container.querySelectorAll("details").forEach((d) => {
395      const q = cleanText(d.querySelector("summary")?.textContent);
396      if (!q) return;
397      const answerNodes = Array.from(d.childNodes).filter((n) => !(n.nodeType === 1 && n.tagName === "SUMMARY"));
398      const wrapper = document.createElement("div");
399      answerNodes.forEach((n) => wrapper.appendChild(n.cloneNode(true)));
400      const a = cleanText(htmlToText(wrapper));
401      if (a) faqs.push({ q, a });
402    });
403
404    container.querySelectorAll(".elementor-accordion-item").forEach((item) => {
405      const q = cleanText(item.querySelector(".elementor-tab-title")?.textContent);
406      const aNode = item.querySelector(".elementor-tab-content");
407      const a = cleanText(htmlToText(aNode));
408      if (q && a) faqs.push({ q, a });
409    });
410
411    container.querySelectorAll(".accordion-item").forEach((item) => {
412      const q =
413        cleanText(item.querySelector(".accordion-header, .accordion-button")?.textContent) ||
414        cleanText(item.querySelector("[data-bs-toggle], button, a")?.textContent);
415      const aNode = item.querySelector(".accordion-body, .collapse, .accordion-collapse");
416      const a = cleanText(htmlToText(aNode));
417      if (q && a) faqs.push({ q, a });
418    });
419
420    container.querySelectorAll("[itemtype*='schema.org/Question']").forEach((qNode) => {
421      const q =
422        cleanText(qNode.querySelector("[itemprop='name']")?.textContent) ||
423        cleanText(qNode.querySelector("[itemprop='text']")?.textContent) ||
424        cleanText(qNode.textContent);
425      const aNode =
426        qNode.querySelector("[itemtype*='schema.org/Answer'] [itemprop='text']") ||
427        qNode.querySelector("[itemtype*='schema.org/Answer']") ||
428        qNode.querySelector("[itemprop='acceptedAnswer']") ||
429        qNode.querySelector("[itemprop='suggestedAnswer']");
430      const a = cleanText(htmlToText(aNode));
431      if (q && a) faqs.push({ q, a });
432    });
433
434    if (faqs.length < 2) {
435      const headings = container.querySelectorAll("h3, h4, h5");
436      headings.forEach((h) => {
437        const q = cleanText(h.textContent);
438        if (!q) return;
439
440        let next = h.nextElementSibling;
441        let a = "";
442        let steps = 0;
443
444        while (next && steps < 4 && !a) {
445          if (/^H[3-6]$/i.test(next.tagName)) break;
446          if (["P", "DIV", "UL", "OL", "SECTION", "ARTICLE"].includes(next.tagName)) {
447            a = cleanText(htmlToText(next));
448          }
449          next = next.nextElementSibling;
450          steps++;
451        }
452
453        if (a && (q.includes("?") || q.length <= 120)) faqs.push({ q, a });
454      });
455    }
456
457    return faqs
458      .map(({ q, a }) => ({ q: cleanText(q), a: cleanText(a) }))
459      .filter(({ q, a }) => q && a && q.length >= 3 && a.length >= 3);
460  };
461
462  const buildJsonLd = (faqs) => ({
463    "@context": "https://schema.org",
464    "@type": "FAQPage",
465    "mainEntity": faqs.slice(0, MAX_FAQS).map(({ q, a }) => ({
466      "@type": "Question",
467      "name": q,
468      "acceptedAnswer": { "@type": "Answer", "text": a }
469    }))
470  });
471
472  const upsertLdScript = (json) => {
473    if (!json || !json.mainEntity || json.mainEntity.length === 0) {
474      const existing = document.getElementById(SCRIPT_ID);
475      if (existing) existing.remove();
476      return;
477    }
478
479    const jsonText = JSON.stringify(json);
480    let script = document.getElementById(SCRIPT_ID);
481
482    if (!script) {
483      script = document.createElement("script");
484      script.type = "application/ld+json";
485      script.id = SCRIPT_ID;
486      document.head.appendChild(script);
487    }
488
489    if (script.textContent !== jsonText) {
490      script.textContent = jsonText;
491    }
492  };
493
494  const render = () => {
495    const containers = findContainers();
496    let allFaqs = [];
497    containers.forEach((c) => (allFaqs = allFaqs.concat(extractFaqsFromContainer(c))));
498    allFaqs = uniqueBy(allFaqs, (x) => x.q.toLowerCase());
499
500    if (allFaqs.length < 2) {
501      upsertLdScript(null);
502      return;
503    }
504
505    upsertLdScript(buildJsonLd(allFaqs));
506  };
507
508  if (document.readyState === "loading") {
509    document.addEventListener("DOMContentLoaded", render, { once: true });
510  } else {
511    render();
512  }
513
514  const observer = new MutationObserver(() => {
515    clearTimeout(observer.__t);
516    observer.__t = setTimeout(render, 300);
517  });
518
519  observer.observe(document.documentElement, {
520    childList: true,
521    subtree: true,
522    characterData: true
523  });
524})();
525</script>
525
526
527
528<script type="application/ld+json">
529{
530  "@context": "https://schema.org",
531  "@graph": [
532    {
533      "@type": "Organization",
534      "@id": "https://hausum.com/#organization",
535      "name": "Hausum",
536      "url": "https://hausum.com/",
537      "logo": "https://hausum.com/wp-content/uploads/2023/04/hausum-principal.svg",
538      "email": "[email protected]",
539      "telephone": "+34930900232",
540      "address": {
541        "@type": "PostalAddress",
542        "streetAddress": "Diputació 170, Baixos",
543        "postalCode": "08011",
544        "addressLocality": "Barcelona",
545        "addressCountry": "ES"
546      },
547      "sameAs": [
548        "https://www.instagram.com/hausum_com/",
549        "https://www.tiktok.com/@hausum.com",
550        "https://es.linkedin.com/company/hausum"
551      ]
552    },
553    {
554      "@type": "Service",
555      "@id": "https://hausum.com/#service-inspeccion-viviendas",
556      "name": "Inspección de Viviendas",
557      "serviceType": "Inspección de viviendas",
558      "description": "Conoce el estado real del inmueble, evita sorpresas y reparaciones costosas, negocia con fundamento, y recibe tu informe en menos de 24h, todo 100% online.",
559      "provider": { "@id": "https://hausum.com/#organization" },
560      "areaServed": { "@type": "Country", "name": "ES" },
561      "audience": {
562        "@type": "Audience",
563        "audienceType": "Particular y empresa"
564      }
565    }
566  ]
567}
568</script>
568
569
570
571<script type="application/ld+json">
572{
573  "@context": "https://schema.org",
574  "@type": "WebSite",
575  "@id": "https://hausum.com/#website",
576  "url": "https://hausum.com/",
577  "name": "Hausum",
578  "publisher": {
579    "@id": "https://hausum.com/#organization"
580  }
581}
582</script>
582
583
584<link rel="icon" href="https://hausum.com/wp-content/uploads/2023/04/segell-hausum.svg" sizes="32x32" />
585<link rel="icon" href="https://hausum.com/wp-content/uploads/2023/04/segell-hausum.svg" sizes="192x192" />
586<link rel="apple-touch-icon" href="https://hausum.com/wp-content/uploads/2023/04/segell-hausum.svg" />
587<meta name="msapplication-TileImage" content="https://hausum.com/wp-content/uploads/2023/04/segell-hausum.svg" />
588<style id="wp-custom-css">
589
590.gform_required_legend, #gform_previous_button_28_117{
591	display: none!important;
592}
593
594/* CONTENIDOR DELS MÈTODES DE PAGAMENT */
595.metode-pagament .gfield_radio {
596    display: flex;
597    flex-wrap: wrap;
598    align-items: center;
599    gap: 18px 28px;
600}
601
602/* CADA OPCIÓ */
603.metode-pagament .gchoice {
604    display: flex !important;
605    align-items: center;
606    gap: 9px;
607    margin: 0 !important;
608}
609
610/* RADIO BUTTON */
611.metode-pagament .gchoice input[type="radio"] {
612    flex: 0 0 auto;
613    margin: 0 !important;
614    cursor: pointer;
615}
616
617/* CONFIGURACIÓ GENERAL DELS LOGOS */
618.metode-pagament .gchoice label {
619    display: block !important;
620    height: 42px;
621    margin: 0 !important;
622    padding: 0 !important;
623
624    background-repeat: no-repeat;
625    background-position: left center;
626    background-size: contain;
627
628    color: transparent !important;
629    font-size: 0 !important;
630    line-height: 0 !important;
631
632    cursor: pointer;
633    max-width: none !important;
634}
635
636/* VISA / MASTERCARD */
637.metode-pagament .gchoice:nth-child(1) label {
638    width: 125px;
639    background-image: url("https://hausum.com/wp-content/uploads/2026/07/Visa-def.png");
640}
641
642/* BIZUM */
643.metode-pagament .gchoice:nth-child(2) label {
644    width: 140px;
645    background-image: url("https://hausum.com/wp-content/uploads/2026/07/bizum-def.png");
646}
647
648/* GOOGLE PAY / APPLE PAY */
649.metode-pagament .gchoice:nth-child(3) label {
650    width: 150px;
651    background-image: url("https://hausum.com/wp-content/uploads/2026/07/google-apple-pay.png");
652}
653
654/* MÒBIL */
655@media only screen and (max-width: 767px) {
656
657    .metode-pagament .gfield_radio {
658        display: flex !important;
659        flex-direction: column !important;
660        align-items: flex-start !important;
661        gap: 18px !important;
662        width: 100% !important;
663    }
664
665    .metode-pagament .gchoice {
666        display: flex !important;
667        flex-direction: row !important;
668        align-items: center !important;
669        gap: 12px !important;
670        width: 100% !important;
671        min-height: 40px !important;
672        margin: 0 !important;
673    }
674
675    .metode-pagament .gchoice input[type="radio"] {
676        display: block !important;
677        flex: 0 0 auto !important;
678        width: 16px !important;
679        height: 16px !important;
680        margin: 0 !important;
681    }
682
683    .metode-pagament .gchoice label {
684        display: block !important;
685        flex: 0 0 auto !important;
686        min-width: 120px !important;
687        min-height: 40px !important;
688        margin: 0 !important;
689        padding: 0 !important;
690
691        background-repeat: no-repeat !important;
692        background-position: left center !important;
693        background-size: contain !important;
694
695        color: transparent !important;
696        font-size: 0 !important;
697        line-height: 0 !important;
698
699        opacity: 1 !important;
700        visibility: visible !important;
701    }
702
703    /* VISA */
704    .metode-pagament .gchoice:nth-child(1) label {
705        width: 125px !important;
706        background-image: url("https://hausum.com/wp-content/uploads/2026/07/Visa-def.png") !important;
707    }
708
709    /* BIZUM */
710    .metode-pagament .gchoice:nth-child(2) label {
711        width: 140px !important;
712        background-image: url("https://hausum.com/wp-content/uploads/2026/07/bizum-def.png") !important;
713    }
714
715    /* GOOGLE PAY + APPLE PAY */
716    .metode-pagament .gchoice:nth-child(3) label {
717        width: 150px !important;
718        background-image: url("https://hausum.com/wp-content/uploads/2026/07/google-apple-pay.png") !important;
719    }
720}
721}
722</style>
723	<style id="hausum-phone-field-fix">
724		/* Fix intlTelInput flag overlapping phone number in Gravity Forms */
725		.gform_wrapper .gfield .iti input[type="tel"],
726		.gform_wrapper .gfield .iti input[type="text"],
727		.gform_wrapper .ginput_container_phone .iti input,
728		.gfield .iti input,
729		.iti input[type="tel"],
730		.iti input[type="text"] {
731			padding-left: 55px !important;
732		}
733
734		/* If separate dial code or country code prefix is shown next to flag */
735		.gform_wrapper .gfield .iti--separate-dial-code input[type="tel"],
736		.gform_wrapper .gfield .iti--separate-dial-code input[type="text"],
737		.gform_wrapper .ginput_container_phone .iti--separate-dial-code input,
738		.gfield .iti--separate-dial-code input,
739		.iti--separate-dial-code input[type="tel"],
740		.iti--separate-dial-code input[type="text"] {
741			padding-left: 85px !important;
742		}
743
744		/* Ensure flag container is properly positioned */
745		.gform_wrapper .iti__flag-container,
746		.iti__flag-container {
747			z-index: 5 !important;
748		}
749
750		.gform_wrapper .iti__selected-flag,
751		.iti__selected-flag {
752			padding: 0 6px 0 8px !important;
753			border-top-left-radius: inherit;
754			border-bottom-left-radius: inherit;
755		}
756	</style>
757	<link rel='stylesheet' id='spf_intlTelInput-css' href='https://hausum.com/wp-content/plugins/smart-phone-field-for-gravity-forms/assets/css/intlTelInput.min.css?ver=2.2.2' media='all' />
758<link rel='stylesheet' id='gform_basic-css' href='https://hausum.com/wp-content/plugins/gravityforms/assets/css/dist/basic.min.css?ver=3.1.3' media='all' />
759<link rel='stylesheet' id='gform_theme_components-css' href='https://hausum.com/wp-content/plugins/gravityforms/assets/css/dist/theme-components.min.css?ver=3.1.3' media='all' />
760<link rel='stylesheet' id='gform_theme-css' href='https://hausum.com/wp-content/plugins/gravityforms/assets/css/dist/theme.min.css?ver=3.1.3' media='all' />
761
762</head>
763<body class="wp-singular page-template page-template-page-inspeccion page-template-page-inspeccion-php page page-id-18102 wp-theme-hausum-theme">
764
765<!-- GTM Container placement set to automatic -->
766<!-- Google Tag Manager (noscript) -->
767				<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TL44TWPX" height="0" width="0" style="display:none;visibility:hidden" aria-hidden="true"></iframe></noscript>
768<!-- End Google Tag Manager (noscript) -->
769<!-- PROMO -->
770<div class="promo">🛡 Garantía total · si no encontramos defectos, te devolvemos el dinero</div>
771
772<!-- NAV -->
773<nav class="nav">
774	<div class="nav-wrap">
775		<a href="https://hausum.com/" class="logo" aria-label="Hausum Home">
776			<img src="https://hausum.com/wp-content/uploads/2023/04/hausum-blanco.svg" alt="HAUSUM" class="logo-img" style="height: 32px; width: auto; display: block;" />
777		</a>
778		
779		<div class="nav-links">
780			<ul class="nav-menu-list"><li id="menu-item-51613" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-51613"><a href="https://hausum.com/legal/">Legal</a></li>
781<li id="menu-item-51615" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-51615"><a href="https://hausum.com/tarifas/">Tarifas</a></li>
782<li id="menu-item-51617" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-18102 current_page_item menu-item-51617"><a href="https://hausum.com/inspeccion/" aria-current="page">Inspección</a></li>
783<li id="menu-item-51616" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-51616"><a href="https://hausum.com/home-inspector/">Home inspector</a></li>
784<li id="menu-item-54356" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-54356"><a href="https://hausum.com/preguntas-frequentes/">FAQS</a></li>
785</ul>		</div>
786		
787		<div class="nav-right">
788								<div class="lang-dropdown">
789						<button type="button" class="lang-btn" aria-label="Idioma">
790							<svg class="globe" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="#2E9BFF" stroke-width="2"><circle cx="12" cy="12" r="9"/><path d="M3.6 9h16.8M3.6 15h16.8"/><path d="M11.5 3a17 17 0 0 0 0 18M12.5 3a17 17 0 0 1 0 18"/></svg>
791							<span>ES</span>
792							<svg class="chev" viewBox="0 0 24 24" width="12" height="12" fill="none" stroke="#9DB4D6" stroke-width="2.2"><path d="M6 9l6 6 6-6"/></svg>
793						</button>
794						<div class="lang-menu">
795															<a href="https://hausum.com/nl/inspectie/" class="lang-menu-item ">
796									Nederlands (NL)
797								</a>
798															<a href="https://hausum.com/fr/inspection/" class="lang-menu-item ">
799									Français (FR)
800								</a>
801															<a href="https://hausum.com/inspeccion/" class="lang-menu-item active">
802									Español (ES)
803								</a>
804															<a href="https://hausum.com/en/inspection/" class="lang-menu-item ">
805									English (EN)
806								</a>
807															<a href="https://hausum.com/de/inspektion/" class="lang-menu-item ">
808									Deutsch (DE)
809								</a>
810															<a href="https://hausum.com/ca/inspeccio/" class="lang-menu-item ">
811									Català (CA)
812								</a>
813													</div>
814					</div>
815								<a href="https://hausum.com/reserva/" class="nav-cta">
816				<span class="nav-cta-text-full">Programar inspección</span>
817				<span class="nav-cta-text-mobile">Reservar</span>
818				<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="#fff" stroke-width="2.6"><path d="M5 12h14"/><path d="M13 6l6 6-6 6"/></svg>
819			</a>
820			<button class="burger" type="button" aria-label="Abrir menú" aria-expanded="false" onclick="var n=document.querySelector('.nav');var open=n.classList.toggle('menu-open');this.setAttribute('aria-expanded',open);">
821				<svg viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="#fff" stroke-width="2.2"><path d="M4 7h16M4 12h16M4 17h16"/></svg>
822			</button>
823		</div>
824	</div>
825	
826	<!-- Mobile Menu -->
827	<div class="mobile-menu">
828		<ul class="mobile-menu-list"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-51613"><a href="https://hausum.com/legal/">Legal</a></li>
829<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-51615"><a href="https://hausum.com/tarifas/">Tarifas</a></li>
830<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-18102 current_page_item menu-item-51617"><a href="https://hausum.com/inspeccion/" aria-current="page">Inspección</a></li>
831<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-51616"><a href="https://hausum.com/home-inspector/">Home inspector</a></li>
832<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-54356"><a href="https://hausum.com/preguntas-frequentes/">FAQS</a></li>
833</ul>	</div>
834</nav>
835
836<div id="content" class="site-content">
837
838<main>
839
840  <!-- HERO SECTION (DARK NAVY BANNER - SEO & LEAD CAPTURE ENHANCED) -->
841  <header class="page-hero" style="padding: 70px 0 55px; background:#0A1E3C;">
842    <div class="wrap">
843      <div class="eyebrow" style="color:#2E9BFF; font-weight:700; letter-spacing:0.05em; text-transform:uppercase; font-size:13px; margin-bottom:12px;">
844        Inspección Técnica de Viviendas &amp; Valoración de Inmuebles      </div>
845      <h1 class="headline" style="max-width:940px; margin-bottom:22px; color:#FFFFFF; font-weight:800; line-height:1.2; font-size:clamp(28px, 4vw, 46px);">
846        Informe Técnico de Inspección de Viviendas y Valoración de Compra      </h1>
847      <p class="lede" style="max-width:840px; margin-bottom:32px; font-size:18px; line-height:1.65; color:#B0C5E2;">
848        En Hausum te ayudamos a comprar tu vivienda con total seguridad. Nuestros arquitectos colegiados realizan informes técnicos exhaustivos de +200 puntos de control y te ofrecemos herramientas gratuitas de análisis de riesgos y checklists de visita.      </p>
849      <div style="display:flex; gap:16px; flex-wrap:wrap; align-items:center;">
850        <a href="#" class="cta lightbox_form_btn_2" aria-label="Informe de ejemplo">Informe de ejemplo          <svg viewbox="0 0 24 24" width="18" height="18" fill="none" stroke="#fff" stroke-width="2.5"><path d="M5 12h14"/><path d="M13 6l6 6-6 6"/></svg>
851        </a>
852        <div style="position:relative; display:inline-block;" id="hsm-tools-dropdown-wrapper">
853          <button type="button" id="hsm-tools-dropdown-btn" class="cta" style="background:transparent; border:1px solid rgba(46,155,255,0.4); color:#2E9BFF; cursor:pointer; display:inline-flex; align-items:center; gap:8px;">
854            <span>Ver herramientas gratuitas</span>
855            <svg id="hsm-dropdown-arrow" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="#2E9BFF" stroke-width="2.5" style="transition:transform 0.25s ease;"><path d="M19 9l-7 7-7-7"/></svg>
856          </button>
857          <div id="hsm-tools-dropdown-menu" style="display:none; position:absolute; top:calc(100% + 8px); left:0; min-width:280px; background:#0F2A52; border:1px solid rgba(46,155,255,0.35); border-radius:14px; box-shadow:0 14px 35px rgba(0,0,0,0.5); z-index:99; padding:8px 0; overflow:hidden; backdrop-filter:blur(10px);">
858            <a href="#herramientas" class="hsm-dropdown-item" style="display:flex; align-items:center; gap:10px; padding:12px 18px; color:#FFFFFF; text-decoration:none; font-size:14.5px; font-weight:600; transition:background 0.2s ease, color 0.2s ease;">
859              <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="#2E9BFF" stroke-width="2.5"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><path d="M14 2v6h6"/></svg>
860              <span>Checklist técnica de visita</span>
861            </a>
862            <div style="height:1px; background:rgba(46,155,255,0.15); margin:4px 0;"></div>
863            <a href="#catastro" class="hsm-dropdown-item" style="display:flex; align-items:center; gap:10px; padding:12px 18px; color:#FFFFFF; text-decoration:none; font-size:14.5px; font-weight:600; transition:background 0.2s ease, color 0.2s ease;">
864              <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="#2E9BFF" stroke-width="2.5"><path d="M3 21h18M5 21V7l7-4 7 4v14M9 10h6M9 14h6M9 18h6"/></svg>
865              <span>Informe catastral y de riesgos</span>
866            </a>
867          </div>
868        </div>
869      </div>
870    </div>
871  </header>
872
873  <!-- HERRAMIENTAS GRATUITAS DE VALORACIÓN PRELIMINAR (#herramientas) -->
874  <section class="sec light" id="herramientas" style="padding:64px 0; background:#F4F8FD;">
875    <div class="wrap">
876      <div class="sec-head" style="margin-bottom:38px;">
877        <p class="eyebrow" style="color:#0072BC; font-weight:700; font-size:13px; text-transform:uppercase; letter-spacing:0.05em; margin-bottom:8px;">Valoración preliminar gratuita</p>
878        <h2 class="headline" style="color:#0F2A52; font-size:32px; font-weight:800;">HERRAMIENTAS GRATUITAS PARA EVALUAR UN INMUEBLE ANTES DE COMPRAR</h2>
879        <p class="lede" style="max-width:820px; color:#3A4F6E; font-size:16.5px; line-height:1.6; margin-top:10px;">Antes de realizar una oferta económica o firmar el contrato de arras, evalúa los indicios de riesgo estructural, conservación y estado técnico de la propiedad sin coste.</p>
880      </div>
881
882      <!-- CHECKLIST DEFINITIVA (HERRAMIENTAS BANNER) -->
883      <div style="background:#FFFFFF; border:1px solid #D5E4F5; border-radius:24px; padding:32px; box-shadow:0 12px 30px rgba(15,42,82,0.06); margin-top:20px; display:flex; flex-direction:column; justify-content:space-between;">
884        <div>
885          <div style="display:inline-flex; align-items:center; gap:6px; background:#EBF3FC; color:#0072BC; padding:5px 14px; border-radius:12px; font-weight:700; font-size:12px; text-transform:uppercase; margin-bottom:16px; letter-spacing:0.05em;">
886            <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><path d="M14 2v6h6"/></svg>
887            <span>Guía PDF gratuita</span>
888          </div>
889          <h3 style="font-size:22px; color:#0F2A52; margin-bottom:14px; font-weight:700;">Checklist técnica para visitas a viviendas</h3>
890          <p style="color:#3A4F6E; font-size:15px; line-height:1.6; margin-bottom:18px;">
891            Descarga nuestra guía técnica en PDF para revisar los puntos críticos en tus 20 minutos de visita: estructura, fontanería, electricidad, humedades y cierres.          </p>
892        </div>
893        <div>
894          <a href="#" class="cta lightbox_form_btn_3" style="width:100%; justify-content:center; background:#2E9BFF; color:#fff; border:0; padding:12px 20px; border-radius:12px; font-weight:700; text-decoration:none; display:inline-flex; align-items:center; gap:8px;">Descargar checklist gratuita            <svg viewbox="0 0 24 24" width="18" height="18" fill="none" stroke="#fff" stroke-width="2.5"><path d="M5 12h14"/><path d="M13 6l6 6-6 6"/></svg>
895          </a>
896        </div>
897      </div>
898    </div>
899  </section>
900
901  <!-- SECCIÓN CATASTRO DEDICADA (#catastro) -->
902  <section class="sec sec-a" id="catastro" style="border-top:1px solid #D5E4F5; border-bottom:1px solid #D5E4F5; padding:64px 0; background:#0A1E3C;">
903    <div class="wrap">
904      <div class="sec-head" style="margin-bottom:32px;">
905        <p class="eyebrow" style="color:#2E9BFF; font-weight:700; font-size:13px; text-transform:uppercase; letter-spacing:0.05em; margin-bottom:8px;">
905Informe técnico de riesgos del inmueble</p>
906        <h2 class="headline" style="color:#FFFFFF; font-size:32px; font-weight:800;">Informe catastral y valoración de riesgos</h2>
907        <p class="lede" style="max-width:820px; color:#B0C5E2; font-size:16.5px; line-height:1.6; margin-top:10px;">Introduce cualquier dirección o referencia catastral oficial en España para generar un informe instantáneo con datos catastrales oficiales, superficie real, valoración de mercado, IBI estimado y riesgos naturales (radón, inundabilidad e incendios).</p>
908      </div>
909
910      <div style="background:rgba(10,30,60,0.75); border:1px solid rgba(46,155,255,0.25); border-radius:24px; padding:32px; box-shadow:0 24px 60px rgba(0,0,0,0.45);">
911        <style>:root { --wp-cadastre-accent: #2563eb; }</style>		<div id="wp-cadastre-container" class="wp-cadastre-wrap theme-glassmorphic">
912
913			<!-- Indicador de Pasos (Wizard) -->
914			<div class="wpc-steps-bar" id="wpc-steps-bar">
915				<div class="wpc-step active" data-step="1">
916					<div class="wpc-step-icon">1</div>
917					<div class="wpc-step-label">Dirección</div>
918				</div>
919				<div class="wpc-step-line" data-line="1"></div>
920				<div class="wpc-step" data-step="2">
921					<div class="wpc-step-icon">2</div>
922					<div class="wpc-step-label">Tu inmueble</div>
923				</div>
924				<div class="wpc-step-line" data-line="2"></div>
925				<div class="wpc-step" data-step="3">
926					<div class="wpc-step-icon">3</div>
927					<div class="wpc-step-label">Datos</div>
928				</div>
929				<div class="wpc-step-line" data-line="3"></div>
930				<div class="wpc-step" data-step="4">
931					<div class="wpc-step-icon">4</div>
932					<div class="wpc-step-label">Informe</div>
933				</div>
934			</div>
935
936			<!-- PASO 1: Dirección del inmueble -->
937			<div id="wpc-step1-card" class="wpc-step1-card">
938				<h2>¿Qué piso quieres analizar?</h2>
939				<p class="wpc-step1-subtitle">Introduce la dirección completa del inmueble</p>
940
941				<!-- Cercador Principal -->
942				<div class="wp-cadastre-search-bar">
943					<div class="wp-cadastre-input-wrapper">
944						<span class="wp-cadastre-search-icon" id="wp-cadastre-search-icon"></span>
945						<input type="text" id="wp-cadastre-search-input" placeholder="Ej: Calle Mayor 15, Madrid" autocomplete="off" />
946						<button type="button" id="wp-cadastre-submit-rc-btn" class="wp-cadastre-rc-submit-btn" style="display: none;">
947							Consultar						</button>
948						<button type="button" id="wp-cadastre-clear-btn" style="display: none;">&times;</button>
949						<span class="wp-cadastre-spinner" id="wp-cadastre-search-spinner" style="display: none;"></span>
950					</div>
951					<div id="wp-cadastre-autocomplete-results" class="wp-cadastre-autocomplete-dropdown" style="display: none;"></div>
952				</div>
953
954				<!-- Commutador de Mode de Cerca: Adreça vs Referència Catastral (com a enllaços discrets) -->
955				<div class="wp-cadastre-search-mode-bar wpc-step1-mode-links">
956					<button type="button" class="wp-cadastre-mode-btn active" data-mode="address">
957						Buscar por dirección					</button>
958					<button type="button" class="wp-cadastre-mode-btn" data-mode="rc">
959						¿No aparece? Busca por referencia catastral					</button>
960				</div>
961
962				<div class="wpc-step1-divider">o si no la encuentras</div>
963
964				<button type="button" id="wpc-show-map-btn" class="wpc-btn-map-picker">
965					🗺️ Seleccionar en el mapa				</button>
966			</div>
967
968			<!-- PASO 2 y 3: Mapa + Barra Lateral (Drawer), ocult fins que hi ha una cerca o clic al mapa -->
969			<div id="wpc-step2-area" style="display: none;">
970
971			<!-- Cos Principal: Mapa + Barra Lateral (Drawer). El mapa comença ocult
972			     (classe wpc-no-map): només es mostra quan l'usuari l'obre explícitament,
973			     des del Pas 1 ("Seleccionar en el mapa") o des del Pas 2 ("Búscalo en el mapa"). -->
974			<div class="wp-cadastre-main-content wpc-no-map" id="wpc-main-content">
975
976				<!-- Contenidor del Mapa -->
977				<div class="wp-cadastre-map-wrapper">
978					<div id="wp-cadastre-map"></div>
979				</div>
980
981				<!-- Barra de Detalls (Drawer) -->
982				<div id="wp-cadastre-drawer" class="wp-cadastre-drawer">
983
984					<button type="button" class="wpc-step2-back-link" id="wpc-back-to-step1-btn">
985						← Nueva búsqueda					</button>
986
987					<!-- Estat Inicial -->
988					<div class="wp-cadastre-drawer-state" id="state-initial">
989						<div class="wp-cadastre-info-helper">
990							<span class="wp-cadastre-icon-large"></span>
991							<h3>Búsqueda catastral</h3>
992							<p>Busca una dirección en el buscador superior o haz clic directamente sobre cualquier edificio del mapa para consultar su información catastral oficial.</p>
993						</div>
994					</div>
995
996					<!-- Estat de Càrrega amb Spinner i Text Explícit -->
997					<div class="wp-cadastre-drawer-state" id="state-loading" style="display: none;">
998						<div class="wp-cadastre-info-helper" style="padding: 24px 16px;">
999							<div class="wp-cadastre-spinner-large"></div>
1000							<h3 id="wpc-loading-title" style="margin-top: 16px; font-size: 16px; font-weight: 700; color: var(--wpc-text);">Consultando el Catastro...</h3>
1001							<p id="wpc-loading-sub" style="font-size: 13px; color: var(--wpc-text-muted); margin-top: 4px;">Obteniendo las fincas e inmuebles de la Sede Electrónica del Catastro de España...</p>
1002						</div>
1003						<div class="wp-cadastre-skeleton-wrapper" style="margin-top: 16px;">
1004							<div class="wp-cadastre-skeleton-header"></div>
1005							<div class="wp-cadastre-skeleton-text"></div>
1006							<div class="wp-cadastre-skeleton-text short"></div>
1007							<div class="wp-cadastre-skeleton-grid">
1008								<div></div><div></div><div></div><div></div>
1009							</div>
1010						</div>
1011					</div>
1012
1013					<!-- Estat de Resultats de la Parcel·la / Edifici (PAS 2: "Tu inmueble") -->
1014					<div class="wp-cadastre-drawer-state" id="state-results" style="display: none;">
1015
1016						<!-- Capçalera de l'edifici -->
1017						<div class="wp-cadastre-building-header">
1018							<h3 id="wp-cadastre-b-address">Calle del Edificio</h3>
1019							<div class="wp-cadastre-b-meta">
1020								<span><strong>Finca Ref:</strong> <span id="wp-cadastre-b-ref">1234567XX1234X</span></span>
1021							</div>
1022							<button type="button" id="wpc-toggle-map-btn" class="wpc-toggle-map-inline">
1023								🗺️ ¿No es el inmueble que buscabas? Búscalo en el mapa							</button>
1024						</div>
1025
1026						<!-- Selector de Divisions / Unitats -->
1027						<div class="wp-cadastre-divisions-section">
1028							<h4>Divisiones del edificio (<span id="wp-cadastre-divisions-count">0</span>)</h4>
1029							<p class="wp-cadastre-helper-text">El edificio tiene divisiones horizontales. Selecciona una unidad para ver su información:</p>
1030							<div id="wp-cadastre-divisions-container" class="wp-cadastre-divisions-grid">
1031								<!-- Es renderitza dinàmicament per JS -->
1032							</div>
1033						</div>
1034
1035					</div> <!-- Fi Estat Resultats -->
1036
1037				</div> <!-- Fi Barra de Detalls (Drawer) -->
1038
1039			</div> <!-- Fi Cos Principal -->
1040
1041			</div> <!-- Fi wpc-step2-area -->
1042
1043			<!-- PASO 3: Datos del inmueble seleccionado -->
1044			<div id="wpc-step3-card" class="wpc-wizard-card" style="display: none;">
1045				<button type="button" class="wpc-step2-back-link" id="wpc-back-to-step2-btn">
1046					← Elegir otra unidad				</button>
1047
1048				<div id="wp-cadastre-unit-details" class="wp-cadastre-unit-details-card">
1049
1050					<!-- Imatge Street View Façana -->
1051					<div id="wp-cadastre-streetview-container" class="wp-cadastre-streetview-box">
1052						<!-- S'incrusta dinàmicament per JS (iframe o botó) -->
1053					</div>
1054
1055					<!-- Dades de la Unitat -->
1056					<div class="wp-cadastre-details-header">
1057						<h4 id="wp-cadastre-u-label">Planta 0, Porta A</h4>
1058					</div>
1059
1060					<div class="wp-cadastre-details-grid">
1061						<div class="wp-cadastre-detail-item">
1062							<span class="label">Superficie construida</span>
1063							<span class="value" id="wp-cadastre-u-surface">0 m²</span>
1064						</div>
1065						<div class="wp-cadastre-detail-item">
1066							<span class="label">Año construcción</span>
1067							<span class="value" id="wp-cadastre-u-year">1900</span>
1068						</div>
1069						<div class="wp-cadastre-detail-item">
1070							<span class="label">Uso principal</span>
1071							<span class="value" id="wp-cadastre-u-use">Residencial</span>
1072						</div>
1073						<div class="wp-cadastre-detail-item">
1074							<span class="label">IBI Estimado</span>
1075							<span class="value" id="wp-cadastre-u-ibi">0,00 €/año</span>
1076						</div>
1077						<div class="wp-cadastre-detail-item">
1078							<span class="label">Tasa Residuos Est.</span>
1079							<span class="value" id="wp-cadastre-u-residuos">0,00 €/año</span>
1080						</div>
1081						<div class="wp-cadastre-detail-item">
1082							<span class="label">Ref. Catastral completa</span>
1083							<div class="wp-cadastre-copy-wrapper">
1084								<span class="value mono" id="wp-cadastre-u-rc">00000000000000000000</span>
1085								<button type="button" id="wp-cadastre-copy-rc-btn" class="wp-cadastre-copy-btn" title="Copiar Referencia"></button>
1086							</div>
1087						</div>
1088					</div>
1089
1090					<!-- Components de l'immoble -->
1091					<div class="wp-cadastre-components-section" id="wp-cadastre-components-wrapper" style="display: none; margin-top: 16px;">
1092						<h5 style="color: #0A1E3C; font-size: 14px; margin-bottom: 8px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px;">Elementos constructivos</h5>
1093						<ul id="wp-cadastre-components-list" class="wp-cadastre-components-list">
1094							<!-- Elements constructius -->
1095						</ul>
1096					</div>
1097
1098					<!-- Explicación de los m² del Catastro (plegada per defecte) -->
1099					<details class="wpc-info-note">
1100						<summary>¿Cómo calcula el Catastro los m²?</summary>
1101						<p>La superficie indicada es la Superficie Construida con Elementos Comunes. Esto incluye la superficie propia de la vivienda más el coeficiente proporcional de pasillos, escaleras y portal. La superficie útil real de la vivienda suele ser entre un 15% y un 25% inferior. Las terrazas descubiertas no computan, mientras que las cubiertas computan al 50% (o al 100% si están cerradas por tres de sus lados).</p>
1102					</details>
1103
1104					<!-- Advertencia sobre impuestos municipales estimados -->
1105					<p class="wpc-taxes-disclaimer-small">
1106						* Los importes de IBI y tasa de residuos son estimaciones teóricas orientativas calculadas por el sistema según los coeficientes del municipio. No sustituyen al recibo oficial emitido por el Ayuntamiento.					</p>
1107				</div>
1108
1109				<button type="button" id="wpc-goto-step4-btn" class="wpc-step-continue-btn">
1110					Continuar →				</button>
1111			</div>
1112
1113			<!-- PASO 4: Descarga del informe -->
1114			<div id="wpc-step4-card" class="wpc-wizard-card wpc-step4-card" style="display: none;">
1115				<button type="button" class="wpc-step2-back-link" id="wpc-back-to-step3-btn">
1116					← Volver a los datos				</button>
1117
1118				<div class="wpc-upsell-badge">GRATUITO</div>
1119				<h2 class="wpc-upsell-title">Descarga el Informe Completo en PDF</h2>
1120				<p class="wpc-upsell-subtitle">Obtén un informe profesional de 9 páginas al instante para este inmueble, incluyendo:</p>
1121
1122				<ul class="wpc-upsell-list">
1123					<li><span class="wpc-upsell-check">✓</span><span><strong>Análisis de fachada y cubierta por IA</strong> (grietas, humedades, etc.)</span></li>
1124					<li><span class="wpc-upsell-check">✓</span><span>Verificación de <strong>ITE obligatoria</strong> y certificado energético</span></li>
1125					<li><span class="wpc-upsell-check">✓</span><span>
1125Riesgos naturales de la zona (sísmicos, inundabilidad e incendio)</span></li>
1126					<li><span class="wpc-upsell-check">✓</span><span>Riesgo de <strong>Gas Radón</strong> (CTE DB-HS6)</span></li>
1127					<li><span class="wpc-upsell-check">✓</span><span>Estimación de <strong>precio de mercado y coste de reformas</strong></span></li>
1128				</ul>
1129
1130				<button type="button" class="wpc-upsell-download-btn" id="wp-cadastre-buy-report-btn">
1131					Descargar Informe (Gratis)				</button>
1132			</div>
1133
1134		</div> <!-- Fi Plugin Wrap -->
1135
1136		<!-- Modal per a Formulari 39 (Descarga de Informe) -->
1137		<div id="hsm-modal-gf-39" class="hsm-modal" style="display:none; position:fixed; inset:0; z-index:999999; background:rgba(10,30,60,0.88); backdrop-filter:blur(8px); justify-content:center; align-items:center; padding:20px; overflow-y:auto;">
1138			<style>
1139				/* Catch-all: force every text node inside the dark modal to be white,
1140				   regardless of which Gravity Forms theme/markup version is active.
1141				   Inputs, buttons and links are excluded here and styled explicitly below,
1142				   since they sit on a light field background, not the dark modal background. */
1143				#hsm-modal-gf-39,
1144				#hsm-modal-gf-39 *:not(input):not(textarea):not(select):not(button):not(a) {
1145					color: #FFFFFF !important;
1146					opacity: 1 !important;
1147				}
1148				#hsm-modal-gf-39 h3,
1149				#hsm-modal-gf-39 .gform_title {
1150					color: #FFFFFF !important;
1151					font-weight: 700 !important;
1152					text-align: center !important;
1153				}
1154				#hsm-modal-gf-39 label,
1155				#hsm-modal-gf-39 .gfield_label,
1156				#hsm-modal-gf-39 .gform-field-label,
1157				#hsm-modal-gf-39 .gform-field-label__text {
1158					color: #FFFFFF !important;
1159					font-weight: 600 !important;
1160					font-size: 14px !important;
1161				}
1162				#hsm-modal-gf-39 .gfield_required,
1163				#hsm-modal-gf-39 .gfield_required * {
1164					color: #FF6B6B !important;
1165					font-weight: 700 !important;
1166				}
1167				#hsm-modal-gf-39 .gfield_description,
1168				#hsm-modal-gf-39 .gform_description {
1169					color: #C7D6EC !important;
1170				}
1171				/* Inputs: solid, opaque, high-contrast field style (dark text on a light field)
1172				   instead of white-on-translucent, which is what made the previous version unreadable. */
1173				#hsm-modal-gf-39 input[type="text"],
1174				#hsm-modal-gf-39 input[type="email"],
1175				#hsm-modal-gf-39 input[type="tel"],
1176				#hsm-modal-gf-39 input[type="number"],
1177				#hsm-modal-gf-39 select,
1178				#hsm-modal-gf-39 textarea {
1179					color: #0F2A52 !important;
1180					background-color: #FFFFFF !important;
1181					border: 1.5px solid rgba(255, 255, 255, 0.5) !important;
1182					border-radius: 10px !important;
1183					font-size: 15px !important;
1184					padding: 12px 16px !important;
1185					opacity: 1 !important;
1186					-webkit-text-fill-color: #0F2A52 !important;
1187				}
1188				#hsm-modal-gf-39 input::placeholder,
1189				#hsm-modal-gf-39 textarea::placeholder {
1190					color: #64748B !important;
1191					opacity: 1 !important;
1192				}
1193				#hsm-modal-gf-39 input::-webkit-input-placeholder,
1194				#hsm-modal-gf-39 textarea::-webkit-input-placeholder {
1195					color: #64748B !important;
1196					opacity: 1 !important;
1197				}
1198				#hsm-modal-gf-39 input::-moz-placeholder,
1199				#hsm-modal-gf-39 textarea::-moz-placeholder {
1200					color: #64748B !important;
1201					opacity: 1 !important;
1202				}
1203				#hsm-modal-gf-39 .gfield_consent_label,
1204				#hsm-modal-gf-39 .ginput_container_consent label,
1205				#hsm-modal-gf-39 .gfield_checkbox label,
1206				#hsm-modal-gf-39 .gfield_checkbox *,
1207				#hsm-modal-gf-39 .gfield_radio label {
1208					color: #FFFFFF !important;
1209					font-size: 13px !important;
1210				}
1211				#hsm-modal-gf-39 a {
1212					color: #7FC2FF !important;
1213					font-weight: 700 !important;
1214					text-decoration: underline !important;
1215				}
1216				#hsm-modal-gf-39 .validation_message,
1217				#hsm-modal-gf-39 .gfield_validation_message,
1218				#hsm-modal-gf-39 .gform_validation_errors,
1219				#hsm-modal-gf-39 .gform_validation_errors * {
1220					color: #FFD3D3 !important;
1221					font-weight: 600 !important;
1222				}
1223				#hsm-modal-gf-39 input[type="submit"],
1224				#hsm-modal-gf-39 button[type="submit"],
1225				#hsm-modal-gf-39 .gform_button {
1226					background-color: #1d4ed8 !important;
1227					color: #FFFFFF !important;
1228					font-size: 16px !important;
1229					font-weight: 700 !important;
1230					border-radius: 10px !important;
1231					border: none !important;
1232					padding: 14px 24px !important;
1233					width: 100% !important;
1234					cursor: pointer !important;
1235					box-shadow: 0 4px 14px rgba(29, 78, 216, 0.4) !important;
1236				}
1237			</style>
1238			<div class="hsm-modal-content" style="position:relative; width:100%; max-width:540px; background:#0F2A52; border:1px solid rgba(46,155,255,0.3); border-radius:20px; padding:30px; color:#fff; box-shadow:0 20px 50px rgba(0,0,0,0.5);">
1239				<button type="button" class="hsm-modal-close" onclick="document.getElementById('hsm-modal-gf-39').style.display='none'" style="position:absolute; top:15px; right:15px; background:none; border:none;
1239 color:#9FC6F2; font-size:24px; cursor:pointer; width:36px; height:36px; display:flex; align-items:center; justify-content:center; border-radius:50%;">&times;</button>
1240				<h3 style="margin-bottom:15px; font-size:20px; color:#ffffff !important; font-family:'Aptos',sans-serif; text-align:center; opacity: 1 !important;">ANÁLISIS DE RIESGOS VIVIENDA</h3>
1241				
1242                <div class='gf_browser_chrome gform_wrapper gravity-theme gform-theme--no-framework' data-form-theme='gravity-theme' data-form-index='0' id='gform_wrapper_39' >
1243                        <div class='gform_heading'>
1244							<p class='gform_required_legend'>&quot;<span class="gfield_required gfield_required_asterisk">*</span>&quot; señala los campos obligatorios</p>
1245                        </div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_39' id='gform_39'  action='/inspeccion/' data-formid='39' novalidate><div class='gf_invisible ginput_recaptchav3' data-sitekey='6LdTW0spAAAAALFeuF-v--QUUGrYoyWxqhHfY3_b' data-tabindex='0'><input id="input_7cc471b21c38ab084beaaabb5227a3fd" class="gfield_recaptcha_response" type="hidden" name="input_7cc471b21c38ab084beaaabb5227a3fd" value=""/></div>
1246                        <div class='gform-body gform_body'><div id='gform_fields_39' class='gform_fields top_label form_sublabel_below description_below validation_below'><div id="field_39_15" class="gfield gfield--type-honeypot gform_validation_container field_sublabel_below gfield--has-description field_description_below field_validation_below gfield_visibility_visible"  ><label class='gfield_label gform-field-label' for='input_39_15'><span class='gform-field-label__text'>Comments</span></label><div class='ginput_container'><input name='input_15' id='input_39_15' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_39_15'>Este campo es un campo de validación y debe quedar sin cambios.</div></div><div id="field_39_2" class="gfield gfield--type-text gfield--input-type-text gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"  ><label class='gfield_label gform-field-label' for='input_39_2'><span class='gform-field-label__text'>Nombre</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_text'><input name='input_2' id='input_39_2' type='text' value='' class='large'    placeholder='Nombre *' aria-required="true" aria-invalid="false"   /></div></div><div id="field_39_1" class="gfield gfield--type-email gfield--input-type-email gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible gpev-field"  data-field-class="gpev-field" ><label class='gfield_label gform-field-label' for='input_39_1'><span class='gform-field-label__text'>Email</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_email'>
1247                            <input name='input_1' id='input_39_1' type='email' value='' class='large'   placeholder='Email *' aria-required="true" aria-invalid="false"  />
1248                        </div></div><div id="field_39_9" class="gfield gfield--type-phone gfield--input-type-phone gfield--phone-format-international gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"  ><label class='gfield_label gform-field-label' for='input_39_9'><span class='gform-field-label__text'>Teléfono</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_phone'><input name='input_9' id='input_39_9' type='tel' value='' class='large'  placeholder='Teléfono *' aria-required="true" aria-invalid="false"    /></div></div><fieldset id="field_39_8" class="gfield gfield--type-consent gfield--type-choice gfield--in
1248put-type-consent gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible gfield--choice-align-vertical"  ><legend class='gfield_label gform-field-label gfield_label_before_complex' ><span class='gform-field-label__text'>Consentimiento</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></legend><div class='ginput_container ginput_container_consent'><input name='input_8.1' id='input_39_8_1' type='checkbox' value='1'   aria-required="true" aria-invalid="false"   /> <label class="gform-field-label gform-field-label--type-inline gfield_consent_label" for='input_39_8_1' ><span class='gform-field-label__text'>Acepto la <a href="/politica-privacidad/" target="_blank" style="text-decoration: underline;">política de privacidad</a> y los <a href="/terminos-y-condiciones/" target="_blank" style="text-decoration: underline;">términos y condiciones</a>.</span><span class="gfield_required gfield_required_asterisk">*</span></label><input type='hidden' name='input_8.2' value='Acepto la &lt;a href=&quot;/politica-privacidad/&quot; target=&quot;_blank&quot; style=&quot;text-decoration: underline;&quot;&gt;política de privacidad&lt;/a&gt; y los &lt;a href=&quot;/terminos-y-condiciones/&quot; target=&quot;_blank&quot; style=&quot;text-decoration: underline;&quot;&gt;términos y condiciones&lt;/a&gt;.' class='gform_hidden' /><input type='hidden' name='input_8.3' value='22' class='gform_hidden' /></div></fieldset><div id="field_39_10" class="gfield gfield--type-hidden gfield--input-type-hidden gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"  ><div class='ginput_container ginput_container_text'><input name='input_10' id='input_39_10' type='hidden' class='gform_hidden'  aria-invalid="false" value='' /></div></div><div id="field_39_11" class="gfield gfield--type-hidden gfield--input-type-hidden gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"  ><div class='ginput_container ginput_container_text'><input name='input_11' id='input_39_11' type='hidden' class='gform_hidden'  aria-invalid="false" value='' /></div></div><div id="field_39_12" class="gfield gfield--type-hidden gfield--input-type-hidden gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"  ><div class='ginput_container ginput_container_text'><input name='input_12' id='input_39_12' type='hidden' class='gform_hidden'  aria-invalid="false" value='' /></div></div><div id="field_39_13" class="gfield gfield--type-hidden gfield--input-type-hidden gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"  ><div class='ginput_container ginput_container_text'><input name='input_13' id='input_39_13' type='hidden' class='gform_hidden'  aria-invalid="false" value='' /></div></div><div id="field_39_14" class="gfield gfield--type-hidden gfield--input-type-hidden gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"  ><div class='ginput_container ginput_container_text'><input name='input_14' id='input_39_14' type='hidden' class='gform_hidden'  aria-invalid="false" value='' /></div></div></div></div>
1249        <div class='gform-footer gform_footer top_label'> <button type='submit' id='gform_submit_button_39' class='gform_button button' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' >Descargar</button> <input type='hidden' name='gform_ajax' value='form_id=39&amp;title=&amp;description=&amp;tabindex=0&amp;theme=gravity-theme&amp;hash=92fd563ba8ee195ad9f74c00c1aacd0b' />
1250            <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_39' value='iframe' />
1251            <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_39' id='gform_theme_39' value='gravity-theme' />
1252            <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_39' id='gform_style_settings_39' value='' />
1253            <input type='hidden' class='gform_hidden' name='is_submit_39' value='1' />
1254            <input type='hidden' class='gform_hidden' name='gform_submit' value='39' />
1255            
1256            <input type='hidden' class='gform_hidden' name='gform_currency' data-currency='EUR' value='vKQUMzJ9NYUbCaU6rMViRYydP4Vx7MI2xQol6clGSmOxUCx15FEg7YYmMUhAPSLjG5PJ1TcBndOI6uVdW45GGLoS4kLTJ8J+zR9HC9VOZ9PLBKk=' />
1257            <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' />
1258            <input type='hidden' class='gform_hidden' name='state_39' value='WyJ7XCI4LjFcIjpcIjQ2MDU4NTRmMjlmZjhlMmM0ZTQ5NWI1ZjVmZjY1OGFiXCIsXCI4LjJcIjpcImI4ZWY5ZGNhYTA1OGEyNzRkMmQwOWFjNGJkOWMwYzA1XCIsXCI4LjNcIjpcIjQ1NWVjNGVlODVmZGYyM2E4MjQxOTg5ZTk3ZGRjMDg1XCIsXCJnZm9ybV9zdWJtaXNzaW9uX21ldGhvZFwiOltcIjk3ODY5ZDdlYjk2MGFiMmE0MDE1ZDAwMTg3MDMxMmQ0XCIsXCI4OGMxODY3ODc0MjVkZGUzODc2MzAwZTcwODUyZGM5ZFwiLFwiOTllYWJjN2QyZGEwYzY5YmJjZjEyYTYwYzViNzRkZWFcIl0sXCJnZm9ybV90aGVtZVwiOlwiNmExNGUzY2Q4YmVhYWZkYjc3NDRmZjVjMDA3MTU1YTVcIixcImdmb3JtX3N0eWxlX3NldHRpbmdzXCI6XCJkMGRkOTMxY2Q1YjM4MzViMmViODRjYWUwMThkMmFmOFwiLFwiZm9ybV9pZFwiOlwiOTY0ZGZjYmUwZWRlYmUzNjJiYjhkNWQwYmYzODVmMmRcIixcInVybFwiOlwiMDg5YWE5NzRhYWYzYWY2NjdlYzI2NTc5YzMwNzY1YjNcIixcInN0YXRlX3RpbWVzdGFtcFwiOlwiM2VjY2UyOTk0YmU5NGY5YzA0ZTk0NjYwZjRkYzk5MjNcIn0iLCI2MzQwNjExZDYzNWRkMDIxZDg1ZGVlNzdmODAxMGM5MiIsMTc5MTEwOTI5Nl0=' />
1259            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_39' id='gform_target_page_number_39' value='0' />
1260            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_39' id='gform_source_page_number_39' value='1' />
1261            <input type='hidden' name='gform_field_values' value='' />
1262            
1263        </div>
1264                        </form>
1265                        </div>
1266		                <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_39' id='gform_ajax_frame_39' title='Este iframe contiene la lógica necesaria para gestionar formularios con ajax activado.'></iframe>
1267		                
1267<script>
1268gform.initializeOnLoaded( function() {jQuery('#gform_ajax_frame_39').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_39');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_39').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_39').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_39').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_39').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */  }, 50 );var current_page = jQuery('#gform_source_page_number_39').val();jQuery(document).trigger('gform_page_loaded', [39, current_page]);window['gf_submitting_39'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_39').replaceWith(confirmation_content);jQuery(document).trigger('gform_confirmation_loaded', [39]);window['gf_submitting_39'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_39').text());}else{jQuery('#gform_39').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger("gform_pre_post_render", [{ formId: "39", currentPage: "current_page", abort: function() { this.preventDefault(); } }]);        if (event && event.defaultPrevented) {                return;        }        const gformWrapperDiv = document.getElementById( "gform_wrapper_39" );        if ( gformWrapperDiv ) {            const visibilitySpan = document.createElement( "span" );            visibilitySpan.id = "gform_visibility_test_39";            gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan );        }        const visibilityTestDiv = document.getElementById( "gform_visibility_test_39" );        let postRenderFired = false;        function triggerPostRender() {            if ( postRenderFired ) {                return;            }            postRenderFired = true;            gform.core.triggerPostRenderEvents( 39, current_page );            if ( visibilityTestDiv ) {                visibilityTestDiv.parentNode.removeChild( visibilityTestDiv );            }        }        function debounce( func, wait, immediate ) {            var timeout;            return function() {                var context = this, args = arguments;                var later = function() {                    timeout = null;                    if ( !immediate ) func.apply( context, args );                };                var callNow = immediate && !timeout;                clearTimeout( timeout );                timeout = setTimeout( later, wait );                if ( callNow ) func.apply( context, args );            };        }        const debouncedTriggerPostRender = debounce( function() {            triggerPostRender();        }, 200 );        if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) {            const observer = new MutationObserver( ( mutations ) => {                mutations.forEach( ( mutation ) => {                    if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) {                        debouncedTriggerPostRender();                        observer.disconnect();                    }                });            });            observer.observe( document.body, {                attributes: true,                childList: false,                subtree: true,                attributeFilter: [ 'style', 'class' ],            });        } else {            triggerPostRender();        }    } );} );
1269</script>
vendor: 1 bytes, line 1269
1269
1270<script>
1271gform.initializeOnLoaded( function() { jQuery(document).on('gform_post_render', function(event, formId, currentPage){if(formId == 39) {if(typeof Placeholders != 'undefined'){
1272                        Placeholders.enable();
1273                    }} } );jQuery(document).on('gform_post_conditional_logic', function(event, formId, fields, isInit){} ) } );
1274</script>
vendor: 1 bytes, line 1274
1274
1275<script>
1276gform.initializeOnLoaded( function() {jQuery(document).trigger("gform_pre_post_render", [{ formId: "39", currentPage: "1", abort: function() { this.preventDefault(); } }]);        if (event && event.defaultPrevented) {                return;        }        const gformWrapperDiv = document.getElementById( "gform_wrapper_39" );        if ( gformWrapperDiv ) {            const visibilitySpan = document.createElement( "span" );            visibilitySpan.id = "gform_visibility_test_39";            gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan );        }        const visibilityTestDiv = document.getElementById( "gform_visibility_test_39" );        let postRenderFired = false;        function triggerPostRender() {            if ( postRenderFired ) {                return;            }            postRenderFired = true;            gform.core.triggerPostRenderEvents( 39, 1 );            if ( visibilityTestDiv ) {                visibilityTestDiv.parentNode.removeChild( visibilityTestDiv );            }        }        function debounce( func, wait, immediate ) {            var timeout;            return function() {                var context = this, args = arguments;                var later = function() {                    timeout = null;                    if ( !immediate ) func.apply( context, args );                };                var callNow = immediate && !timeout;                clearTimeout( timeout );                timeout = setTimeout( later, wait );                if ( callNow ) func.apply( context, args );            };        }        const debouncedTriggerPostRender = debounce( function() {            triggerPostRender();        }, 200 );        if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) {            const observer = new MutationObserver( ( mutations ) => {                mutations.forEach( ( mutation ) => {                    if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) {                        debouncedTriggerPostRender();                        observer.disconnect();                    }                });            });            observer.observe( document.body, {                attributes: true,                childList: false,                subtree: true,                attributeFilter: [ 'style', 'class' ],            });        } else {            triggerPostRender();        }    } );
1277</script>
1277
1278			</div>
1279		</div>
1280		      </div>
1281    </div>
1282  </section>
1283
1284  <!-- INFORME TÉCNICO DE INSPECCIÓN (+200 PUNTOS) (#informe-tecnico) -->
1285  <section class="sec light" id="informe-tecnico" style="padding:64px 0; background:#F4F8FD;">
1286    <div class="wrap">
1287      <div class="sec-head">
1288        <div class="eyebrow" style="color:#0072BC; font-weight:700; font-size:13px; text-transform:uppercase; letter-spacing:0.05em; margin-bottom:8px;">Diagnóstico técnico profesional</div>
1289        <h2 class="headline" style="color:#0F2A52; font-size:32px; font-weight:800;">Informe Técnico de Inspección con más de 200 puntos de control</h2>
1290        <p class="lede" style="max-width:840px; color:#3A4F6E; font-size:16.5px; line-height:1.6; margin-top:10px;">Inspección in situ minuciosa realizada por un arquitecto colegiado. Analizamos con instrumentación especializada (cámaras termográficas, higrómetros y medidores de presión) el estado real del inmueble para que decidas con total certeza.</p>
1291      </div>
1292
1293      <!-- 6 PILLARS GRID WITH MULTILINGUAL SEO OPTIMIZED COPY -->
1294      <div class="benefit-grid" style="margin-top:36px; display:grid; grid-template-columns:repeat(auto-fit, minmax(300px, 1fr)); gap:24px;">
1295        <div class="card" style="background:#FFFFFF; border:1px solid #D5E4F5; border-radius:20px; padding:28px; box-shadow:0 8px 24px rgba(15,42,82,0.05);">
1296          <div style="margin-bottom:14px; color:#0072BC;">
1297            <svg viewBox="0 0 24 24" width="32" height="32" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21h18M5 21V7l7-4 7 4v14M9 10h6M9 14h6M9 18h6"/></svg>
1298          </div>
1299          <h3 style="font-size:19px; color:#0F2A52; font-weight:700; margin-bottom:10px;">Estructura y Cimentación</h3>
1300          <p style="color:#3A4F6E; font-size:14.5px; line-height:1.55;">Evaluación de elementos portantes, muros de carga, forjados, pilares, vigas, grietas y estabilidad estructural del edificio.</p>
1301        </div>
1302
1303        <div class="card" style="background:#FFFFFF; border:1px solid #D5E4F5; border-radius:20px; padding:28px; box-shadow:0 8px 24px rgba(15,42,82,0.05);">
1304          <div style="margin-bottom:14px; color:#0072BC;">
1305            <svg viewBox="0 0 24 24" width="32" height="32" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/></svg>
1306          </div>
1307          <h3 style="font-size:19px; color:#0F2A52; font-weight:700; margin-bottom:10px;">Humedades y Filtraciones</h3>
1308          <p style="color:#3A4F6E; font-size:14.5px; line-height:1.55;">Localización de humedades por capilaridad, condensación o filtración mediante cámaras termográficas e higrómetros.</p>
1309        </div>
1310
1311        <div class="card" style="background:#FFFFFF; border:1px solid #D5E4F5; border-radius:20px; padding:28px; box-shadow:0 8px 24px rgba(15,42,82,0.05);">
1312          <div style="margin-bottom:14px; color:#0072BC;">
1313            <svg viewBox="0 0 24 24" width="32" height="32" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg>
1314          </div>
1315          <h3 style="font-size:19px; color:#0F2A52; font-weight:700; margin-bottom:10px;">Instalaciones y Suministros</h3>
1316          <p style="color:#3A4F6E; font-size:14.5px; line-height:1.55;">Pruebas del cuadro eléctrico, cableado, fontanería, presión de agua, desagües, caldera y climatización.</p>
1317        </div>
1318
1319        <div class="card" style="background:#FFFFFF; border:1px solid #D5E4F5; border-radius:20px; padding:28px; box-shadow:0 8px 24px rgba(15,42,82,0.05);">
1320          <div style="margin-bottom:14px; color:#0072BC;">
1321            <svg viewBox="0 0 24 24" width="32" height="32" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M12 3v18M3 12h18"/></svg>
1322          </div>
1323          <h3 style="font-size:19px; color:#0F2A52; font-weight:700; margin-bottom:10px;">Carpinterías y Aislamiento</h3>
1324          <p style="color:#3A4F6E; font-size:14.5px; line-height:1.55;">Inspección de ventanas, cierres perimetrales, persianas, puentes térmicos y estanqueidad acústica y térmica.</p>
1325        </div>
1326
1327        <div class="card" style="background:#FFFFFF; border:1px solid #D5E4F5; border-radius:20px; padding:28px; box-shadow:0 8px 24px rgba(15,42,82,0.05);">
1328          <div style="margin-bottom:14px; color:#0072BC;">
1329            <svg viewBox="0 0 24 24" width="32" height="32" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 21V8a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v13M3 21h18M9 10h1M14 10h1M9 14h1M14 14h1"/></svg>
1330          </div>
1331          <h3 style="font-size:19px; color:#0F2A52; font-weight:700; margin-bottom:10px;">Zonas Comunes e ITE/IEE</h3>
1332          <p style="color:#3A4F6E; font-size:14.5px; line-height:1.55;">Revisión de fachada, cubierta, tejado, ascensor, zonas comunitarias y situación de la ITE/IEE para evitar derramas.</p>
1333        </div>
1334
1335        <div class="card" style="background:#FFFFFF; border:1px solid #D5E4F5; border-radius:20px; padding:28px; box-shadow:0 8px 24px rgba(15,42,82,0.05);">
1336          <div style="margin-bottom:14px; color:#0072BC;">
1337            <svg viewBox="0 0 24 24" width="32" height="32" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><path d="M14 2v6h6M16 13H8M16 17H8M10 9H8"/></svg>
1338          </div>
1339          <h3 style="font-size:19px; color:#0F2A52; font-weight:700; margin-bottom:10px;">Estimación de Costes y Negociación</h3>
1340          <p style="color:#3A4F6E; font-size:14.5px; line-height:1.55;">Resumen ejecutivo con reportaje fotográfico y presupuesto estimado de reparaciones para negociar el precio de compra.</p>
1341        </div>
1342      </div>
1343
1344      <div style="margin-top:40px; text-align:center;">
1345        <a href="https://hausum.com/reserva/" class="cta" style="font-size:16px; padding:14px 34px; background:#2E9BFF; color:#fff; border-radius:12px; font-weight:700; text-decoration:none; display:inline-flex; align-items:center; gap:8px;">Programar inspección técnica          <svg viewbox="0 0 24 24" width="18" height="18" fill="none" stroke="#fff" stroke-width="2.5"><path d="M5 12h14"/><path d="M13 6l6 6-6 6"/></svg>
1346        </a>
1347      </div>
1348    </div>
1349  </section>
1350
1351  <!-- COLABORADORS Y PARTNERS (#colaboradores) -->
1352  <section class="sec light" id="colaboradores" style="border-top:1px solid #D5E4F5; padding:64px 0; background:#FFFFFF;">
1353    <div class="wrap" style="text-align:center;">
1354      <div class="sec-head center">
1355        <div class="eyebrow" style="color:#0072BC; font-weight:700; font-size:13px; text-transform:uppercase; letter-spacing:0.05em; margin-bottom:8px;">
1355Alianzas estratégicas</div>
1356        <h2 class="headline" style="color:#0F2A52; font-size:32px; font-weight:800;">Colaboradores y portales inmobiliarios de confianza</h2>
1357        <p class="lede" style="max-width:780px; margin:10px auto 0; color:#3A4F6E; font-size:16.5px; line-height:1.6;">Trabajamos en alianza con los principales portales inmobiliarios, entidades financieras y profesionales del sector para ofrecer una cobertura y garantía integral.</p>
1358      </div>
1359
1360      <!-- COLLABORATORS PLUGIN SHORTCODE -->
1361      <div style="margin-top:24px;">
1362        		<style id="hsm-collaborators-styles">
1363			.hsm-collaborators-grid {
1364				display: flex;
1365				flex-wrap: wrap;
1366				align-items: center;
1367				justify-content: center;
1368				gap: 24px 32px;
1369				margin-top: 32px;
1370				margin-bottom: 20px;
1371			}
1372			.hsm-collab-card {
1373				display: flex;
1374				flex-direction: column;
1375				align-items: center;
1376				justify-content: center;
1377				padding: 22px 32px;
1378				background: #FFFFFF;
1379				border: 1px solid #D5E4F5;
1380				border-radius: 20px;
1381				text-decoration: none;
1382				transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
1383				box-shadow: 0 8px 24px rgba(15, 42, 82, 0.06);
1384				min-width: 190px;
1385				text-align: center;
1386			}
1387			.hsm-collab-card:hover {
1388				background: #F0F6FE;
1389				border-color: #2E9BFF;
1390				transform: translateY(-3px);
1391				box-shadow: 0 14px 32px rgba(15, 42, 82, 0.12);
1392			}
1393			.sec-a .hsm-collab-card {
1394				background: rgba(10, 30, 60, 0.45);
1395				border-color: rgba(46, 155, 255, 0.2);
1396				box-shadow: none;
1397			}
1398			.sec-a .hsm-collab-card:hover {
1399				background: rgba(20, 48, 88, 0.7);
1400				border-color: rgba(46, 155, 255, 0.5);
1401			}
1402			.hsm-collab-logo-wrap {
1403				display: flex;
1404				align-items: center;
1405				justify-content: center;
1406				min-height: 38px;
1407				margin-bottom: 8px;
1408			}
1409			.hsm-collab-logo-wrap img {
1410				max-height: 38px;
1411				max-width: 170px;
1412				width: auto;
1413				object-fit: contain;
1414				transition: filter 0.25s ease;
1415			}
1416			.hsm-collab-name {
1417				font-family: 'Aptos', -apple-system, BlinkMacSystemFont, sans-serif;
1418				font-size: 16px;
1419				font-weight: 800;
1420				color: #0F2A52;
1421				letter-spacing: 0.02em;
1422				transition: color 0.25s ease;
1423			}
1424			.sec-a .hsm-collab-name {
1425				color: #FFFFFF;
1426			}
1427			.hsm-collab-card:hover .hsm-collab-name {
1428				color: #0072BC;
1429			}
1430			.sec-a .hsm-collab-card:hover .hsm-collab-name {
1431				color: #2E9BFF;
1432			}
1433			@media (max-width: 768px) {
1434				.hsm-collaborators-grid {
1435					gap: 16px 20px;
1436				}
1437				.hsm-collab-card {
1438					padding: 16px 24px;
1439					min-width: 140px;
1440				}
1441				.hsm-collab-logo-wrap img {
1442					max-height: 30px;
1443					max-width: 140px;
1444				}
1445				.hsm-collab-name {
1446					font-size: 14.5px;
1447				}
1448			}
1449		</style>
1450
1451		<div class="hsm-collaborators-grid">
1452							<a class="hsm-collab-card" href="https://www.estilguru.com/" target="_blank" rel="noopener noreferrer" title="Estil Guru">
1453											<div class="hsm-collab-logo-wrap">
1454							<img src="https://hausum.com/wp-content/uploads/2026/08/IMG_5634.jpeg" alt="Estil Guru" loading="lazy" />
1455						</div>
1456										<span class="hsm-collab-name">Estil Guru</span>
1457				</a>
1458							<a class="hsm-collab-card" href="https://cajaislant.com/" target="_blank" rel="noopener noreferrer" title="Cajaislant">
1459											<div class="hsm-collab-logo-wrap">
1460							<img src="https://hausum.com/wp-content/uploads/2026/08/IMG_5635.png" alt="Cajaislant" loading="lazy" />
1461						</div>
1462										<span class="hsm-collab-name">Cajaislant</span>
1463				</a>
1464							<a class="hsm-collab-card" href="https://www.solerpalau.com/es-es/" target="_blank" rel="noopener noreferrer" title="Soler &#038; Palau">
1465											<div class="hsm-collab-logo-wrap">
1466							<img src="https://hausum.com/wp-content/uploads/2026/08/IMG_5633.png" alt="Soler &#038; Palau" loading="lazy" />
1467						</div>
1468										<span class="hsm-collab-name">Soler &#038; Palau</span>
1469				</a>
1470					</div>
1471		      </div>
1472    </div>
1473  </section>
1474
1475  <!-- PROTECCIÓN JURÍDICA Y VICIOS OCULTOS (#vicios-ocultos) -->
1476  <section class="sec light" id="vicios-ocultos" style="border-top:1px solid #D5E4F5; padding:64px 0; background:#F4F8FD;">
1477    <div class="wrap">
1478      <div class="sec-head">
1479        <div class="eyebrow" style="color:#0072BC; font-weight:700; font-size:13px; text-transform:uppercase; letter-spacing:0.05em; margin-bottom:8px;">Protección jurídica al comprador</div>
1480        <h2 class="headline" style="color:#0F2A52; font-size:32px; font-weight:800;">Vicios ocultos, obra nueva y defectos de construcción</h2>
1481      </div>
1482      <div class="body-text" style="margin-top:24px; max-width:840px; color:#26405F; font-size:15.5px; line-height:1.65;">
1483        <p style="margin-bottom:14px;">Si estás pensando en comprar un inmueble de segunda mano (piso, casa, chalet o local comercial), conocer su estado real es fundamental para negociar un precio justo o desestimar opciones de alto riesgo.</p>
1484        <p style="margin-bottom:14px;">Si ya has realizado la compra y has detectado patologías no informadas, te asesoramos en la reclamación por vicios ocultos ante el vendedor.</p>
1485        <p style="margin-bottom:14px;">En viviendas de obra nueva, ponemos a tu disposición arquitectos expertos para redactar el acta de repasos previa a la entrega de llaves y exigir la subsanación al promotor.</p>
1486      </div>
1487      <div style="display:flex; gap:16px; flex-wrap:wrap; margin-top:28px;">
1488        <a href="https://hausum.com/inspeccion-de-casas-nuevas/" class="cta" style="background:#2E9BFF; color:#fff; padding:12px 24px; border-radius:12px; font-weight:700; text-decoration:none; display:inline-flex; align-items:center; gap:8px;">Inspección obra nueva          <svg viewbox="0 0 24 24" width="18" height="18" fill="none" stroke="#fff" stroke-width="2.5"><path d="M5 12h14"/><path d="M13 6l6 6-6 6"/></svg>
1489        </a>
1490        <a href="https://hausum.com/inspeccion-locales-comerciales/" class="cta" style="background:#EBF3FC; border:1px solid #B8D6F5; color:#0072BC; padding:12px 24px; border-radius:12px; font-weight:700; text-decoration:none; display:inline-flex; align-items:center; gap:8px;">Inspección local comercial          <svg viewbox="0 0 24 24" width="18" height="18" fill="none" stroke="#0072BC" stroke-width="2.5"><path d="M5 12h14"/><path d="M13 6l6 6-6 6"/></svg>
1491        </a>
1492      </div>
1493    </div>
1494  </section>
1495
1496  <!-- TECNOLOGÍA Y COBERTURA NACIONAL (#cobertura) -->
1497  <section class="sec sec-a" id="cobertura" style="padding:64px 0; background:#0A1E3C; border-top:1px solid #D5E4F5;">
1498    <div class="wrap" style="text-align:center;">
1499      <div class="sec-head center">
1500        <div class="eyebrow" style="color:#2E9BFF; font-weight:700; font-size:13px; text-transform:uppercase; letter-spacing:0.05em; margin-bottom:8px;">Tecnología propia y garantía</div>
1501        <h2 class="headline" style="color:#FFFFFF; font-size:32px; font-weight:800;">Aplicación propia de inspección e informe técnico en menos de 24 horas</h2>
1502        <p class="lede" style="max-width:820px; margin:10px auto 0; color:#B0C5E2; font-size:16.5px; line-height:1.6;">Nuestra aplicación de inspección propia permite a nuestros arquitectos digitalizar los hallazgos en tiempo real durante la visita. Recibirás tu informe técnico completo en menos de 24 horas y dispondrás de una consulta personalizada con el técnico.</p>
1503      </div>
1504
1505      <div style="margin-top:32px; margin-bottom:44px;">
1506        <div class="city-pill-row" style="justify-content:center;">
1507          <a href="https://hausum.com/home-inspector-madrid/">Madrid</a>
1508          <a href="https://hausum.com/home-inspector-barcelona/">Barcelona</a>
1509          <a href="https://hausum.com/home-inspector-valencia/">Valencia</a>
1510          <a href="https://hausum.com/home-inspector-girona/">Girona</a>
1511          <a href="https://hausum.com/home-inspector-lleida/">Lleida</a>
1512          <a href="https://hausum.com/home-inspector-tarragona/">Tarragona</a>
1513        </div>
1514      </div>
1515
1516      <div>
1517        <a href="https://hausum.com/reserva/" class="cta" style="font-size:16px; padding:14px 34px; background:#2E9BFF; color:#fff; border-radius:12px; font-weight:700; text-decoration:none; display:inline-flex; align-items:center; gap:8px;">Programar visita ahora          <svg viewbox="0 0 24 24" width="18" height="18" fill="none" stroke="#fff" stroke-width="2.5"><path d="M5 12h14"/><path d="M13 6l6 6-6 6"/></svg>
1518        </a>
1519      </div>
1520    </div>
1521  </section>
1522
1523<script>
1524document.addEventListener('DOMContentLoaded', function() {
1525  var btn = document.getElementById('hsm-tools-dropdown-btn');
1526  var menu = document.getElementById('hsm-tools-dropdown-menu');
1527  var arrow = document.getElementById('hsm-dropdown-arrow');
1528  if (btn && menu) {
1529    btn.addEventListener('click', function(e) {
1530      e.stopPropagation();
1531      var isVisible = menu.style.display === 'block';
1532      menu.style.display = isVisible ? 'none' : 'block';
1533      if (arrow) arrow.style.transform = isVisible ? 'rotate(0deg)' : 'rotate(180deg)';
1534    });
1535
1536    document.addEventListener('click', function(e) {
1537      if (!btn.contains(e.target) && !menu.contains(e.target)) {
1538        menu.style.display = 'none';
1539        if (arrow) arrow.style.transform = 'rotate(0deg)';
1540      }
1541    });
1542
1543    var items = menu.querySelectorAll('a');
1544    items.forEach(function(item) {
1545      item.addEventListener('click', function() {
1546        menu.style.display = 'none';
1547        if (arrow) arrow.style.transform = 'rotate(0deg)';
1548      });
1549      item.addEventListener('mouseenter', function() {
1550        this.style.background = 'rgba(46,155,255,0.18)';
1551      });
1552      item.addEventListener('mouseleave', function() {
1553        this.style.background = 'transparent';
1554      });
1555    });
1556  }
1557});
1558</script>
1558
1559
1560</main>
1561
1562</div><!-- #content -->
1563
1564<footer class="footer">
1565	<div class="wrap">
1566		<div class="foot-top">
1567			<div class="foot-brand">
1568				<a href="https://hausum.com/" class="logo" aria-label="Hausum Home">
1569					<img src="https://hausum.com/wp-content/uploads/2023/04/hausum-blanco.svg" alt="HAUSUM" class="logo-img" style="height: 32px; width: auto; display: block;" />
1570				</a>
1571				<p>Inspección independiente de viviendas por arquitectos colegiados. Informe técnico en menos de 24h para que decidas con datos reales.</p>
1572			</div>
1573			<div class="foot-links">
1574				<div class="foot-col">
1575					<h4>Servicios</h4>
1576					<a href="https://hausum.com/#servicios">Inspección de 2ª mano</a>
1577					<a href="https://hausum.com/#servicios">Obra nueva</a>
1578					<a href="https://hausum.com/#servicios">Local comercial</a>
1579					<a href="https://hausum.com/#servicios">Cobertura legal</a>
1580				</div>
1581				<div class="foot-col">
1582					<h4>Hausum</h4>
1583													<a href="https://hausum.com/legal/">Legal</a>
1584																<a href="https://hausum.com/tarifas/">Tarifas</a>
1585																<a href="https://hausum.com/inspeccion/">Inspección</a>
1586																<a href="https://hausum.com/home-inspector/">Home inspector</a>
1587																<a href="https://hausum.com/preguntas-frequentes/">FAQS</a>
1588													<a href="https://hausum.com/contacto/">Contacto</a>
1589					<a href="https://hausum.com/manifiesto/">Sobre Nosotros</a>
1590				</div>
1591				<div class="foot-col">
1592					<h4>Síguenos</h4>
1593					<a href="https://www.youtube.com/@Hausum" target="_blank" rel="noopener">YouTube</a>
1594					<a href="https://www.instagram.com/hausum_com/" target="_blank" rel="noopener">Instagram</a>
1595					<a href="https://www.tiktok.com/@hausum.com" target="_blank" rel="noopener">TikTok</a>
1596					<a href="https://www.linkedin.com/company/Hausum/" target="_blank" rel="noopener">LinkedIn</a>
1597				</div>
1598			</div>
1599		</div>
1600		
1601		<div class="foot-bottom">
1602			<span>© 2026 Hausum · Arquitectos colegiados</span>
1603			<span class="foot-legal-links" style="display:inline-flex; gap:12px; align-items:center; opacity:0.85;">
1604				<a href="https://hausum.com/aviso-legal/" style="color:inherit; text-decoration:none; transition:color 0.15s;">Aviso legal</a>
1605				<span style="opacity:0.4;">·</span>
1606				<a href="https://hausum.com/terminos-y-condiciones/" style="color:inherit; text-decoration:none; transition:color 0.15s;">Términos y condiciones</a>
1607				<span style="opacity:0.4;">·</span>
1608				<a href="https://hausum.com/politica-privacidad/" style="color:inherit; text-decoration:none; transition:color 0.15s;">Política de privacidad</a>
1609				<span style="opacity:0.4;">·</span>
1610				<a href="https://hausum.com/politica-de-cookies-ue/" style="color:inherit; text-decoration:none; transition:color 0.15s;">Política de cookies</a>
1611				<span style="opacity:0.4;">·</span>
1612				<a href="https://hausum.com/contacto/" style="color:inherit; text-decoration:none; transition:color 0.15s;">Contacto</a>
1613			</span>
1614			<span>🛡 Garantía total · si no encontramos defectos, te devolvemos el dinero</span>
1615		</div>
1616		
1617		<div class="foot-provinces">
1618			<b>Inspecciones por provincia</b>
1619			<a href="https://hausum.com/home-inspector-madrid/">Madrid</a><span class="sep">·</span>
1620			<a href="https://hausum.com/home-inspector-barcelona/">Barcelona</a><span class="sep">·</span>
1621			<a href="https://hausum.com/home-inspector-valencia/">Valencia</a><span class="sep">·</span>
1622			<a href="https://hausum.com/home-inspector-sevilla/">Sevilla</a><span class="sep">·</span>
1623			<a href="https://hausum.com/home-inspector-malaga/">Málaga</a><span class="sep">·</span>
1624			<a href="https://hausum.com/home-inspector-zaragoza/">Zaragoza</a><span class="sep">·</span>
1625			<a href="https://hausum.com/home-inspector-bilbao/">Bilbao</a><span class="sep">·</span>
1626			<a href="https://hausum.com/home-inspector-alicante/">Alicante</a><span class="sep">·</span>
1627			<a href="https://hausum.com/home-inspector-murcia/">Murcia</a><span class="sep">·</span>
1628			<a href="https://hausum.com/home-inspector-mallorca/">Mallorca</a><span class="sep">·</span>
1629			<a href="https://hausum.com/home-inspector-las-palmas/">Las Palmas</a><span class="sep">·</span>
1630			<a href="https://hausum.com/home-inspector-cordoba/">Córdoba</a><span class="sep">·</span>
1631			<a href="https://hausum.com/home-inspector-valladolid/">Valladolid</a><span class="sep">·</span>
1632			<a href="https://hausum.com/home-inspector-granada/">Granada</a><span class="sep">·</span>
1633			<a href="https://hausum.com/home-inspector-vitoria/">Vitoria</a><span class="sep">·</span>
1634			<a href="https://hausum.com/home-inspector-oviedo/">Oviedo</a><span class="sep">·</span>
1635			<a href="https://hausum.com/home-inspector-cantabria/">Cantabria</a><span class="sep">·</span>
1636			<a href="https://hausum.com/home-inspector-navarra/">Navarra</a><span class="sep">·</span>
1637			<a href="https://hausum.com/home-inspector-la-rioja/">La Rioja</a><span class="sep">·</span>
1638			<a href="https://hausum.com/home-inspector-san-sebastian/">San Sebastián</a><span class="sep">·</span>
1639			<a href="https://hausum.com/home-inspector-toledo/">Toledo</a><span class="sep">·</span>
1640			<a href="https://hausum.com/home-inspector-caceres/">Cáceres</a><span class="sep">·</span>
1641			<a href="https://hausum.com/home-inspector-badajoz/">Badajoz</a><span class="sep">·</span>
1642			<a href="https://hausum.com/home-inspector-huelva/">Huelva</a><span class="sep">·</span>
1643			<a href="https://hausum.com/home-inspector-jaen/">Jaén</a><span class="sep">·</span>
1644			<a href="https://hausum.com/home-inspector-almeria/">Almería</a><span class="sep">·</span>
1645			<a href="https://hausum.com/home-inspector-cadiz/">Cádiz</a><span class="sep">·</span>
1646			<a href="https://hausum.com/home-inspector-salamanca/">Salamanca</a><span class="sep">·</span>
1647			<a href="https://hausum.com/home-inspector-burgos/">Burgos</a><span class="sep">·</span>
1648			<a href="https://hausum.com/home-inspector-leon/">León</a><span class="sep">·</span>
1649			<a href="https://hausum.com/home-inspector-palencia/">Palencia</a><span class="sep">·</span>
1650			<a href="https://hausum.com/home-inspector-zamora/">Zamora</a><span class="sep">·</span>
1651			<a href="https://hausum.com/home-inspector-segovia/">Segovia</a><span class="sep">·</span>
1652			<a href="https://hausum.com/home-inspector-avila/">Ávila</a><span class="sep">·</span>
1653			<a href="https://hausum.com/home-inspector-soria/">Soria</a><span class="sep">·</span>
1654			<a href="https://hausum.com/home-inspector-guadalajara/">Guadalajara</a><span class="sep">·</span>
1655			<a href="https://hausum.com/home-inspector-cuenca/">Cuenca</a><span class="sep">·</span>
1656			<a href="https://hausum.com/home-inspector-albacete/">Albacete</a><span class="sep">·</span>
1657			<a href="https://hausum.com/home-inspector-ciudad-real/">Ciudad Real</a><span class="sep">·</span>
1658			<a href="https://hausum.com/home-inspector-lugo/">Lugo</a><span class="sep">·</span>
1659			<a href="https://hausum.com/home-inspector-ourense/">Ourense</a><span class="sep">·</span>
1660			<a href="https://hausum.com/home-inspector-pontevedra/">Pontevedra</a><span class="sep">·</span>
1661			<a href="https://hausum.com/home-inspector-a-coruna/">A Coruña</a><span class="sep">·</span>
1662			<a href="https://hausum.com/home-inspector-teruel/">Teruel</a><span class="sep">·</span>
1663			<a href="https://hausum.com/home-inspector-huesca/">Huesca</a><span class="sep">·</span>
1664			<a href="https://hausum.com/home-inspector-lleida/">Lleida</a><span class="sep">·</span>
1665			<a href="https://hausum.com/home-inspector-tarragona/">Tarragona</a><span class="sep">·</span>
1666			<a href="https://hausum.com/home-inspector-girona/">Girona</a><span class="sep">·</span>
1667			<a href="https://hausum.com/home-inspector-castellon/">Castellón</a><span class="sep">·</span>
1668			<a href="https://hausum.com/home-inspector-tenerife/">Tenerife</a><span class="sep">·</span>
1669			<a href="https://hausum.com/home-inspector-ibiza/">Ibiza</a><span class="sep">·</span>
1670			<a href="https://hausum.com/home-inspector-menorca/">Menorca</a>
1671		</div>
1672	</div>
1673</footer>
1674
1675<!-- BARRA FIJA MÓVIL -->
1676<div class="mobile-cta-bar">
1677	<a href="tel:+34930900232" class="call" aria-label="Llamar a Hausum">
1678		<svg viewBox="0 0 24 24">
1678<path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.36 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.34 1.85.573 2.81.7A2 2 0 0 1 22 16.92z"/></svg>
1679	</a>
1680	<a href="https://hausum.com/reserva/" class="book">Programar visita</a>
1681	<a href="https://wa.me/34930900232?text=%C2%A1Hola%20Hausum!" class="wa" target="_blank" rel="noopener noreferrer" aria-label="WhatsApp">
1682		<svg viewBox="0 0 24 24" fill="#fff" stroke="none"><path d="M12 2C6.48 2 2 6.48 2 12c0 1.85.5 3.58 1.38 5.07L2 22l5.06-1.33A9.94 9.94 0 0 0 12 22c5.52 0 10-4.48 10-10S17.52 2 12 2zm0 18c-1.6 0-3.1-.43-4.4-1.18l-.32-.19-3.28.86.88-3.2-.21-.33A7.96 7.96 0 0 1 4 12c0-4.41 3.59-8 8-8s8 3.59 8 8-3.59 8-8 8zm4.4-5.88c-.24-.12-1.43-.7-1.65-.78-.22-.08-.38-.12-.54.12-.16.24-.62.78-.76.94-.14.16-.28.18-.52.06-.24-.12-1.01-.37-1.92-1.18-.71-.63-1.19-1.41-1.33-1.65-.14-.24-.01-.37.11-.49.11-.11.24-.28.36-.42.12-.14.16-.24.24-.4.08-.16.04-.3-.02-.42-.06-.12-.54-1.3-.74-1.78-.19-.46-.39-.4-.54-.4h-.46c-.16 0-.42.06-.64.3-.22.24-.84.82-.84 2s.86 2.32.98 2.48c.12.16 1.7 2.6 4.13 3.64.58.25 1.03.4 1.38.51.58.18 1.11.16 1.53.1.47-.07 1.43-.58 1.63-1.14.2-.56.2-1.04.14-1.14-.06-.1-.22-.16-.46-.28z"/></svg>
1683	</a>
1684</div>
1685
1686<!-- NATIVE GDPR COOKIE CONSENT BANNER (EU LAW / AEPD COMPLIANT, ZERO OVERHEAD) -->
1687<div id="hsm-cookie-banner" style="display:none; position:fixed; bottom:20px; right:20px; max-width:420px; z-index:999999; background:#0A1E3C; border:1px solid rgba(46,155,255,0.3); border-radius:18px; padding:22px; box-shadow:0 16px 40px rgba(0,0,0,0.6); color:#EAF3FF; font-family:'Aptos',sans-serif; font-size:13.5px; line-height:1.5;">
1688	<div style="font-weight:700; font-size:16px; color:#fff; margin-bottom:8px; display:flex; align-items:center; gap:8px;">
1689		<span>🍪 Control de Cookies y Privacidad</span>
1690	</div>
1691	<p style="margin-bottom:12px; color:#A6BAD6; font-size:13px; line-height:1.45;">
1692		Utilizamos cookies propias y de terceros para garantizar la funcionalidad técnica del sitio, analizar la navegación y recordar tus preferencias de conformidad con el RGPD y la LSSI-CE.	</p>
1693	<div style="margin-bottom:14px; font-size:12.5px; color:#7C90AE; display:flex; gap:10px; align-items:center;">
1694		<a href="https://hausum.com/aviso-legal/" target="_blank" style="color:#2E9BFF; text-decoration:underline;">Aviso legal</a>
1695		<span>·</span>
1696		<a href="https://hausum.com/politica-privacidad/" target="_blank" style="color:#2E9BFF; text-decoration:underline;">Política de privacidad</a>
1697		<span>·</span>
1698		<a href="https://hausum.com/politica-de-cookies-ue/" target="_blank" style="color:#2E9BFF; text-decoration:underline;">Política de cookies</a>
1699	</div>
1700	<div style="display:flex; gap:8px; flex-wrap:wrap; align-items:center;">
1701		<!-- Symmetric design complying with LSSI-CE/AEPD guidelines -->
1702		<button id="hsm-accept-cookies" style="flex:1; min-width:110px; background:#2E9BFF; color:#fff; border:0; padding:10px 14px; border-radius:10px; font-weight:700; font-size:13px; cursor:pointer; text-align:center; transition:background 0.15s;">Aceptar todas</button>
1703		<button id="hsm-reject-cookies" style="flex:1; min-width:110px; background:#1C3456; color:#CBDAF0; border:1px solid rgba(46,155,255,0.3); padding:10px 14px; border-radius:10px; font-weight:700; font-size:13px; cursor:pointer; text-align:center; transition:background 0.15s;">Solo esenciales</button>
1704	</div>
1705</div>
1706
1707<!-- Floating Revocation Button -->
1708<button id="hsm-cookie-trigger" aria-label="Ajustes de privacidad" style="position:fixed; bottom:20px; left:20px; width:40px; height:40px; border-radius:50%; background:#0A1E3C; border:1px solid rgba(46,155,255,0.4); color:#2E9BFF; cursor:pointer; z-index:195; display:flex; align-items:center; justify-content:center; box-shadow:0 4px 12px rgba(0,0,0,0.3); transition:transform 0.15s;">
1709	<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z"/><circle cx="12" cy="12" r="3"/></svg>
1710</button>
1711
1712<style id="hsm-cookie-mobile-override">
1713/* Position cookie consent buttons & banners above the mobile sticky action bar */
1714@media (max-width: 768px) {
1715	#hsm-cookie-trigger,
1716	.hsm-cookie-trigger-btn,
1717	#cmplz-manage-consent-container,
1718	.cmplz-manage-consent-container,
1719	#cmplz-manage-consent,
1720	.cmplz-manage-consent,
1721	button.cmplz-manage-consent,
1722	.cmplz-btn.cmplz-manage-consent,
1723	.cookie-notice-revoke,
1724	.cookieyes-badge,
1725	#cky-badge,
1726	.cky-btn-revisit,
1727	.iubenda-cs-badge,
1728	#catapult-cookie-bar,
1729	.cc-revoke,
1730	.ot-sdk-show-settings,
1731	#ot-sdk-btn-floating {
1732		bottom: 84px !important;
1733		left: 16px !important;
1734		right: auto !important;
1735		top: auto !important;
1736		z-index: 195 !important;
1737	}
1738	#hsm-cookie-banner,
1739	#cmplz-cookiebanner,
1740	.cmplz-cookiebanner,
1741	#cky-consent-banner,
1742	.cookie-notice-container {
1743		bottom: 84px !important;
1744		left: 12px !important;
1745		right: 12px !important;
1746		max-width: calc(100vw - 24px) !important;
1747	}
1748}
1749</style>
1750
1751<script>
1752(function(){
1753	function getCookie(name) {
1754		var v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
1755		return v ? v[2] : null;
1756	}
1757	function setCookie(name, value, days) {
1758		var d = new Date();
1759		d.setTime(d.getTime() + 24*60*60*1000*days);
1760		document.cookie = name + "=" + value + ";path=/;expires=" + d.toGMTString() + ";Secure;SameSite=Lax";
1761	}
1762	function updateConsent(all) {
1763		var state = all ? 'granted' : 'denied';
1764		setCookie('hsm_cookie_consent', all ? 'all' : 'essential', 365); // 12 months expiration
1765		if (typeof gtag !== 'undefined') {
1766			gtag('consent', 'update', {
1767				'ad_storage': state,
1768				'analytics_storage': state,
1769				'ad_user_data': state,
1770				'ad_personalization': state
1771			});
1772		}
1773		document.getElementById('hsm-cookie-banner').style.display = 'none';
1774	}
1775	
1776	// Show banner if no consent cookie is set
1777	if (!getCookie('hsm_cookie_consent')) {
1778		document.getElementById('hsm-cookie-banner').style.display = 'block';
1779	}
1780	
1781	var btnAccept = document.getElementById('hsm-accept-cookies');
1782	var btnReject = document.getElementById('hsm-reject-cookies');
1783	if (btnAccept) btnAccept.onclick = function() { updateConsent(true); };
1784	if (btnReject) btnReject.onclick = function() { updateConsent(false); };
1785	
1786	// Revocation triggers
1787	var openBanner = function() { document.getElementById('hsm-cookie-banner').style.display = 'block'; };
1788	var trigger = document.getElementById('hsm-cookie-trigger');
1789	if (trigger) trigger.onclick = openBanner;
1790	
1791	// Delegate to reopen links (.hsm-reopen-cookies) inside page policy texts
1792	document.addEventListener('click', function(e) {
1793		if (e.target.closest('.hsm-reopen-cookies')) {
1794			e.preventDefault();
1795			openBanner();
1796		}
1797	});
1798})();
1799</script>
1799
1800
1801
1802<!-- GRAVITY FORMS POPUP MODALS -->
1803<div id="hsm-modal-gf-21" class="hsm-modal" style="display:none; position:fixed; inset:0; z-index:999999; background:rgba(10,30,60,0.85); backdrop-filter:blur(8px); justify-content:center; align-items:center; padding:20px; overflow-y:auto;">
1804	<div class="hsm-modal-content" style="position:relative; width:100%; max-width:540px; background:#0F2A52; border:1px solid rgba(46,155,255,0.3); border-radius:20px; padding:30px; color:#fff; box-shadow:0 20px 50px rgba(0,0,0,0.5);">
1805		<button type="button" class="hsm-modal-close" onclick="document.getElementById('hsm-modal-gf-21').style.display='none'" style="position:absolute; top:15px; right:15px; background:none; border:none; color:#9FC6F2; font-size:24px; cursor:pointer; width:36px; height:36px; display:flex; align-items:center; justify-content:center; border-radius:50%;">&times;</button>
1806		<h3 style="margin-bottom:15px; font-size:20px; color:#fff; font-family:'Aptos',sans-serif; text-align:center;">Informe de ejemplo</h3>
1807		
1808                <div class='gf_browser_chrome gform_wrapper gravity-theme gform-theme--no-framework' data-form-theme='gravity-theme' data-form-index='0' id='gform_wrapper_21' >
1809                        <div class='gform_heading'>
1810							<p class='gform_required_legend'>&quot;<span class="gfield_required gfield_required_asterisk">*</span>&quot; señala los campos obligatorios</p>
1811                        </div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_21' id='gform_21'  action='/inspeccion/' data-formid='21' novalidate><div class='gf_invisible ginput_recaptchav3' data-sitekey='6LdTW0spAAAAALFeuF-v--QUUGrYoyWxqhHfY3_b' data-tabindex='0'><input id="input_d7a6db9dd654e595355eeec24f75b368" class="gfield_recaptcha_response" type="hidden" name="input_d7a6db9dd654e595355eeec24f75b368" value=""/></div>
1812                        <div class='gform-body gform_body'><div id='gform_fields_21' class='gform_fields top_label form_sublabel_below description_below validation_below'><div id="field_21_10" class="gfield gfield--type-honeypot gform_validation_container field_sublabel_below gfield--has-description field_description_below field_validation_below gfield_visibility_visible"  ><label class='gfield_label gform-field-label' for='input_21_10'><span class='gform-field-label__text'>Phone</span></label><div class='ginput_container'><input name='input_10' id='input_21_10' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_21_10'>Este campo es un campo de validación y debe quedar sin cambios.</div></div><div id="field_21_2" class="gfield gfield--type-text gfield--input-type-text gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"  ><label class='gfield_label gform-field-label' for='input_21_2'><span class='gform-field-label__text'>Nombre</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_text'><input name='input_2' id='input_21_2' type='text' value='' class='large'    placeholder='Nombre *' aria-required="true" aria-invalid="false"   /></div></div><div id="field_21_1" class="gfield gfield--type-email gfield--input-type-email gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible gpev-field"  data-field-class="gpev-field" ><label class='gfield_label gform-field-label' for='input_21_1'><span class='gform-field-label__text'>Email</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_email'>
1813                            <input name='input_1' id='input_21_1' type='email' value='' class='large'   placeholder='Email *' aria-required="true" aria-invalid="false"  />
1814                        </div></div><div id="field_21_9" class="gfield gfield--type-phone gfield--in
1814put-type-phone gfield--phone-format-international gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"  ><label class='gfield_label gform-field-label' for='input_21_9'><span class='gform-field-label__text'>Teléfono</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_phone'><input name='input_9' id='input_21_9' type='tel' value='' class='large'  placeholder='Teléfono *' aria-required="true" aria-invalid="false"    /></div></div><div id="field_21_6" class="gfield gfield--type-select gfield--input-type-select gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"  ><label class='gfield_label gform-field-label' for='input_21_6'><span class='gform-field-label__text'>¿Dónde se encuentra la propiedad?</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_select'><select name='input_6' id='input_21_6' class='large gfield_select'    aria-required="true" aria-invalid="false" ><option value='' selected='selected' class='gf_placeholder' disabled>Provincia</option><option value='Albacete' >Albacete</option><option value='Alicante/Alacant' >Alicante/Alacant</option><option value='Almería' >Almería</option><option value='Araba/Álava' >Araba/Álava</option><option value='Asturias' >Asturias</option><option value='Ávila' >Ávila</option><option value='Badajoz' >Badajoz</option><option value='Balears, Illes' >Balears, Illes</option><option value='Barcelona' >Barcelona</option><option value='Bizkaia' >Bizkaia</option><option value='Burgos' >Burgos</option><option value='Cáceres' >Cáceres</option><option value='Cádiz' >Cádiz</option><option value='Cantabria' >Cantabria</option><option value='Castellón/Castelló' >Castellón/Castelló</option><option value='Ciudad Real' >Ciudad Real</option><option value='Córdoba' >Córdoba</option><option value='Coruña, A' >Coruña, A</option><option value='Cuenca' >Cuenca</option><option value='Gipuzkoa' >Gipuzkoa</option><option value='Girona' >Girona</option><option value='Granada' >Granada</option><option value='Guadalajara' >Guadalajara</option><option value='Huelva' >Huelva</option><option value='Huesca' >Huesca</option><option value='Jaén' >Jaén</option><option value='León' >León</option><option value='Lleida' >Lleida</option><option value='Lugo' >Lugo</option><option value='Madrid' >Madrid</option><option value='Málaga' >Málaga</option><option value='Murcia' >Murcia</option><option value='Navarra' >Navarra</option><option value='Ourense' >Ourense</option><option value='Palencia' >Palencia</option><option value='Palmas, Las' >Palmas, Las</option><option value='Pontevedra' >Pontevedra</option><option value='Rioja, La' >Rioja, La</option><option value='Salamanca' >Salamanca</option><option value='Santa Cruz de Tenerife' >Santa Cruz de Tenerife</option><option value='Segovia' >Segovia</option><option value='Sevilla' >Sevilla</option><option value='Soria' >Soria</option><option value='Tarragona' >Tarragona</option><option value='Teruel' >Teruel</option><option value='Toledo' >Toledo</option><option value='Valencia/València' >Valencia/València</option><option value='Valladolid' >Valladolid</option><option value='Zamora' >Zamora</option><option value='Zaragoza' >Zaragoza</option></select></div></div><div id="field_21_7" class="gfield gfield--type-select gfield--input-type-select gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"  ><label class='gfield_label gform-field-label' for='input_21_7'><span class='gform-field-label__text'>¿Por qué estás valorando contratar el servicio?</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_select'><select name='input_7' id='input_21_7' class='large gfield_select'    aria-required="true" aria-invalid="false" ><option value='' selected='selected' class='gf_placeholder' disabled>Razón</option><option value='Estoy pensando en adquirir una inmueble de segundamano' >Estoy pensando en adquirir un inmueble de segunda mano</option><option value='He adquirido un inmueble de segundamano recientemente y quiero inspeccionarla' >He adquirido un inmueble de segunda mano recientemente y quiero inspeccionarlo</option><option value='Me entregarán un inmueble de Obra nueva en breves' >Me entregarán un inmueble de obra nueva en breve</option></select></div></div><fieldset id="field_21_8" class="gfield gfield--type-consent gfield--type-choice gfield--in
1814put-type-consent gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible gfield--choice-align-vertical"  ><legend class='gfield_label gform-field-label gfield_label_before_complex' ><span class='gform-field-label__text'>Consentimiento</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></legend><div class='ginput_container ginput_container_consent'><input name='input_8.1' id='input_21_8_1' type='checkbox' value='1'   aria-required="true" aria-invalid="false"   /> <label class="gform-field-label gform-field-label--type-inline gfield_consent_label" for='input_21_8_1' ><span class='gform-field-label__text'>Acepto la <a href="/politica-privacidad/" target="_blank" style="text-decoration: underline;">política de privacidad</a> y los <a href="/terminos-y-condiciones/" target="_blank" style="text-decoration: underline;">términos y condiciones</a>.</span><span class="gfield_required gfield_required_asterisk">*</span></label><input type='hidden' name='input_8.2' value='Acepto la &lt;a href=&quot;/politica-privacidad/&quot; target=&quot;_blank&quot; style=&quot;text-decoration: underline;&quot;&gt;política de privacidad&lt;/a&gt; y los &lt;a href=&quot;/terminos-y-condiciones/&quot; target=&quot;_blank&quot; style=&quot;text-decoration: underline;&quot;&gt;términos y condiciones&lt;/a&gt;.' class='gform_hidden' /><input type='hidden' name='input_8.3' value='5' class='gform_hidden' /></div></fieldset></div></div>
1815        <div class='gform-footer gform_footer top_label'> <button type='submit' id='gform_submit_button_21' class='gform_button button' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' >Enviar</button> <input type='hidden' name='gform_ajax' value='form_id=21&amp;title=&amp;description=&amp;tabindex=0&amp;theme=gravity-theme&amp;hash=6195d2900ce95adda8af367d83c1dfcb' />
1816            <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_21' value='iframe' />
1817            <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_21' id='gform_theme_21' value='gravity-theme' />
1818            <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_21' id='gform_style_settings_21' value='' />
1819            <input type='hidden' class='gform_hidden' name='is_submit_21' value='1' />
1820            <input type='hidden' class='gform_hidden' name='gform_submit' value='21' />
1821            
1822            <input type='hidden' class='gform_hidden' name='gform_currency' data-currency='EUR' value='rPupLs4DmSK0MziVY5aRCiMKTVvdBHmVGc/27wuo8Urn4r4Bg6yVG9FAxvGB5yUBPSZ6xjkeofk3m2l5fU/sy+13UMdA6HiggxNzbHt8wa4aU8E=' />
1823            <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' />
1824            <input type='hidden' class='gform_hidden' name='state_21' value='WyJ7XCI2XCI6W1wiMTI0MGI1Nzc5NTQxMThiMTdmYWNlODU0OTVmYTk4OGZcIixcImFlMWE3MjI3MWIwZDAxOTBhYzM0OGI5MjIwMmU4ODUzXCIsXCIzZWI2MTE1OTA5Y2Q4MGJiMWI3ZTUyMjAzNDI3MjRlYVwiLFwiNmFkMGJkNGY1OGViNTU3NzMzZDEzMzgwZTM2NDczMDBcIixcIjA2NTE3NGZjNmRiMTgzODM5Yzk2MDlmZDU1NDA0ZDMzXCIsXCIyMjJlMDNjOTYwODQyODQ0ZTM1YTQ2ZDhjMjYyZjZhY1wiLFwiYjRhNTBiN2ZiMmNlNDA5ZmU2MzNlMmFmNmVhZTljZTBcIixcImJlNjI2OGM2NGE2YWJmN2U3ZTBlYTQyYzdmNjMzZmEwXCIsXCIzN2ExMTRiNTc2NDVhNWI4NDExNzBiNGNmNDFjMzliYlwiLFwiMzI5NTA3ODEyOGE5YTgxMTRkOTcyNDA4NTA1NWNjMzRcIixcIjQ3MjdlNDdjN2YwODVjMzc3MTg1NDI0YzZlZDhmNDAxXCIsXCIyMmIzNzUwNjE4MDgyM2Y0ZDllZGZmZDBkZjA0NDg4Y1wiLFwiODMxY2I5ZjQ5MTk2ZDJjZThkNWU3Yjg1OTA2Y2FkOWRcIixcIjFlYzgzNDZjNzAxNGVjZmM5Njg1NDdhMzA2NjMwN2YwXCIsXCIwM2MwMjZiYjE5YWNkZDFmY2FjN2FhMDEwYjBiNWU2N1wiLFwiNjc0ZDkzZmY0NzkwZTNlZmIxN2E5ZjU0NzQ3Yjk1ZWFcIixcImE4YTU3NDIxZTMwZTJjYWMxNjU4ZWM0OTZkMDI4ZjQ2XCIsXCI4NDU1NzkxNTQ0YzM0YWQ5MDVkNmI2NTEyOTBkN2U5OFwiLFwiYTMwZDJlZWQ2ZjFkOTM2MThiMDc3NWI4MTY3NWQyZjNcIixcImI5YzExZGI2ZWNkZTYxYTBhOGZmY2E0NTNiMTA2OGZiXCIsXCI3ZjU2YmFiOTJhMjYxMjA0NTIzYTgyY2RjOWNiYzk4NVwiLFwiMjkxYWE5ZWY0NzA5NDJmNjkyNDE4ZDljM2IxMzY2MTNcIixcIjlmZjEyNTM5YTRjZjgzMGJkOGMxN2IzYjg5ZjNkOWE0XCIsXCJmOWUyZDA2NWNjZGJlMDE3ZGExYjVkOWYyYTYyM2VlNlwiLFwiYmJiYjE2ZGUxZTUxNDAyNzRiZWI3ZWFkMzI5YTNjNGVcIixcImNkMmVjNjEwMTM3N2ExYmE0MzJjYTU0MDI1OTIxYjBjXCIsXCIyYWU4MzBiODcwMTA1Njc1ZDY2MzE2YjY5M2NlZDRkZFwiLFwiOWI0ZjkyOTIxMjE4M2JmMWZkZDJkN2Y5NDAyYjVkNWZcIixcImJjNTlhNTdhOGE2ZjA4ODkxOTcyZDRjYjI2ZjY1YTc0XCIsXCJkNzg1NWQ0ODU5MzQ2ZjUxYWM1NTg1NDJlOGViNjk2OVwiLFwiN2RiMzMzMGExNzk1NTcwYzg0ZDE2NTk2NzI2YzQ1ZmZcIixcIjE1NzUzNTBlNGU4YWFmYmRlZDQ1MDU1NDg2N2NlNWZkXCIsXCJmZTdkYjVmMDVlYjdjMmI0NTVlOGM0ODliZmM2Zjc1NlwiLFwiMDAyZDBjNzM4NDI4NDBmYTE3ZjBlNTU3MzUzNjVkMzRcIixcIjFiZDI3OGVmNzFmMTAyNGJmYWJkOTcwODUxNzdhNGI3XCIsXCIwNWU4NjQwMTNlOWQ1MTkyZWQ2ZDhmZGIxZjc3NDlmZlwiLFwiZmIwZThmNjk3YTE3NWMwZjQxNjMxNzRjZTU1NGUxNGZcIixcImNlZDg0YTFlOTc2YzM3MzEzZTc5M2I5MWJiY2ZmZThhXCIsXCIzMDQzYjdlMzBiODM4MGMzNDkwYzkwYjdjZDcyZTkwOFwiLFwiNDk3MzMwOTZlYmZkMzVlYjY4MzBlNTQwZGY2YWE1OGZcIixcIjk0Y2JjY2RiMzQxMjgzNjIzOGE3NjMwODVmMWE4YWQyXCIsXCI2OGJkMTJkOTk3ZjA3MzI4ZGI2OWIwMDlkMDlhNjE0OVwiLFwiMjliOTQwNWVmODJmMmNmNjIyNTM4YTVjOWRmNjc0NzBcIixcIjI4MjdhMmI2ZGU5YmJ
1824kYjJiNzg4M2MwZWFhOTg4NGVjXCIsXCI0NGQ5ZWU1MjQ0ODM5ODdiNzdiODI1ZDA3ODg2M2YyNFwiLFwiMDJjNjg1ZjZiN2NmMGU5MTdlNjBlZWQ2Y2Y0N2YxNzVcIixcImY4Y2JmZDgyMTI3NzEyODMwNTVkY2E2ZGJhMjVjNzUxXCIsXCI2N2YxODVhNzE5MDdiNDVkMTM1MjE0MmM5ZjVjYzY4MlwiLFwiZDcyMGQyMzA3YTdiYWM4N2YzMDY5NWRkYWYwMzJjNjdcIixcImViMzhmNTJmNGZkNzAzNjdkZDc1ZTJhOGY1MDZhZWI4XCJdLFwiN1wiOltcIjliOGM0OGM1OGU1MTdmYzMzNzMwZWFkYjkwYzI4ZjBhXCIsXCJkMzdkNTAzODIzZGY0OGQ4NzhhOGFjODcwMWY4NTdlZlwiLFwiYTg0ODNmOWU1YjZhNTgwOGU4NmQ0YzNhMmVjN2Y3MTNcIl0sXCI4LjFcIjpcIjQ2MDU4NTRmMjlmZjhlMmM0ZTQ5NWI1ZjVmZjY1OGFiXCIsXCI4LjJcIjpcImI4ZWY5ZGNhYTA1OGEyNzRkMmQwOWFjNGJkOWMwYzA1XCIsXCI4LjNcIjpcImY3ZTIxNWE0YWY0MTIwNzZmODZlM2M2YTVkYTJhZDI3XCIsXCJnZm9ybV9zdWJtaXNzaW9uX21ldGhvZFwiOltcIjk3ODY5ZDdlYjk2MGFiMmE0MDE1ZDAwMTg3MDMxMmQ0XCIsXCI4OGMxODY3ODc0MjVkZGUzODc2MzAwZTcwODUyZGM5ZFwiLFwiOTllYWJjN2QyZGEwYzY5YmJjZjEyYTYwYzViNzRkZWFcIl0sXCJnZm9ybV90aGVtZVwiOlwiNmExNGUzY2Q4YmVhYWZkYjc3NDRmZjVjMDA3MTU1YTVcIixcImdmb3JtX3N0eWxlX3NldHRpbmdzXCI6XCJkMGRkOTMxY2Q1YjM4MzViMmViODRjYWUwMThkMmFmOFwiLFwiZm9ybV9pZFwiOlwiZTRhZGU4YWUyYTAzYjM0ZjA4ZjhjYTFmNGY4ZTFhZWRcIixcInVybFwiOlwiMDg5YWE5NzRhYWYzYWY2NjdlYzI2NTc5YzMwNzY1YjNcIixcInN0YXRlX3RpbWVzdGFtcFwiOlwiM2VjY2UyOTk0YmU5NGY5YzA0ZTk0NjYwZjRkYzk5MjNcIn0iLCI2MGE0YmI5ODIxY2YyNzA5ZDI1YWUzZWUyNDgwNTEwZCIsMTc5MTEwOTI5Nl0=' />
1825            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_21' id='gform_target_page_number_21' value='0' />
1826            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_21' id='gform_source_page_number_21' value='1' />
1827            <input type='hidden' name='gform_field_values' value='' />
1828            
1829        </div>
1830                        </form>
1831                        </div>
1832		                <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_21' id='gform_ajax_frame_21' title='Este iframe contiene la lógica necesaria para gestionar formularios con ajax activado.'></iframe>
1833		                
1833<script>
1834gform.initializeOnLoaded( function() {jQuery('#gform_ajax_frame_21').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_21');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_21').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_21').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_21').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_21').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */  }, 50 );var current_page = jQuery('#gform_source_page_number_21').val();jQuery(document).trigger('gform_page_loaded', [21, current_page]);window['gf_submitting_21'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_21').replaceWith(confirmation_content);jQuery(document).trigger('gform_confirmation_loaded', [21]);window['gf_submitting_21'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_21').text());}else{jQuery('#gform_21').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger("gform_pre_post_render", [{ formId: "21", currentPage: "current_page", abort: function() { this.preventDefault(); } }]);        if (event && event.defaultPrevented) {                return;        }        const gformWrapperDiv = document.getElementById( "gform_wrapper_21" );        if ( gformWrapperDiv ) {            const visibilitySpan = document.createElement( "span" );            visibilitySpan.id = "gform_visibility_test_21";            gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan );        }        const visibilityTestDiv = document.getElementById( "gform_visibility_test_21" );        let postRenderFired = false;        function triggerPostRender() {            if ( postRenderFired ) {                return;            }            postRenderFired = true;            gform.core.triggerPostRenderEvents( 21, current_page );            if ( visibilityTestDiv ) {                visibilityTestDiv.parentNode.removeChild( visibilityTestDiv );            }        }        function debounce( func, wait, immediate ) {            var timeout;            return function() {                var context = this, args = arguments;                var later = function() {                    timeout = null;                    if ( !immediate ) func.apply( context, args );                };                var callNow = immediate && !timeout;                clearTimeout( timeout );                timeout = setTimeout( later, wait );                if ( callNow ) func.apply( context, args );            };        }        const debouncedTriggerPostRender = debounce( function() {            triggerPostRender();        }, 200 );        if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) {            const observer = new MutationObserver( ( mutations ) => {                mutations.forEach( ( mutation ) => {                    if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) {                        debouncedTriggerPostRender();                        observer.disconnect();                    }                });            });            observer.observe( document.body, {                attributes: true,                childList: false,                subtree: true,                attributeFilter: [ 'style', 'class' ],            });        } else {            triggerPostRender();        }    } );} );
1835</script>
vendor: 1 bytes, line 1835
1835
1836<script>
1837gform.initializeOnLoaded( function() { jQuery(document).on('gform_post_render', function(event, formId, currentPage){if(formId == 21) {if(typeof Placeholders != 'undefined'){
1838                        Placeholders.enable();
1839                    }} } );jQuery(document).on('gform_post_conditional_logic', function(event, formId, fields, isInit){} ) } );
1840</script>
vendor: 1 bytes, line 1840
1840
1841<script>
1842gform.initializeOnLoaded( function() {jQuery(document).trigger("gform_pre_post_render", [{ formId: "21", currentPage: "1", abort: function() { this.preventDefault(); } }]);        if (event && event.defaultPrevented) {                return;        }        const gformWrapperDiv = document.getElementById( "gform_wrapper_21" );        if ( gformWrapperDiv ) {            const visibilitySpan = document.createElement( "span" );            visibilitySpan.id = "gform_visibility_test_21";            gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan );        }        const visibilityTestDiv = document.getElementById( "gform_visibility_test_21" );        let postRenderFired = false;        function triggerPostRender() {            if ( postRenderFired ) {                return;            }            postRenderFired = true;            gform.core.triggerPostRenderEvents( 21, 1 );            if ( visibilityTestDiv ) {                visibilityTestDiv.parentNode.removeChild( visibilityTestDiv );            }        }        function debounce( func, wait, immediate ) {            var timeout;            return function() {                var context = this, args = arguments;                var later = function() {                    timeout = null;                    if ( !immediate ) func.apply( context, args );                };                var callNow = immediate && !timeout;                clearTimeout( timeout );                timeout = setTimeout( later, wait );                if ( callNow ) func.apply( context, args );            };        }        const debouncedTriggerPostRender = debounce( function() {            triggerPostRender();        }, 200 );        if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) {            const observer = new MutationObserver( ( mutations ) => {                mutations.forEach( ( mutation ) => {                    if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) {                        debouncedTriggerPostRender();                        observer.disconnect();                    }                });            });            observer.observe( document.body, {                attributes: true,                childList: false,                subtree: true,                attributeFilter: [ 'style', 'class' ],            });        } else {            triggerPostRender();        }    } );
1843</script>
1843
1844	</div>
1845</div>
1846
1847<div id="hsm-modal-gf-35" class="hsm-modal" style="display:none; position:fixed; inset:0; z-index:999999; background:rgba(10,30,60,0.85); backdrop-filter:blur(8px); justify-content:center; align-items:center; padding:20px; overflow-y:auto;">
1848	<div class="hsm-modal-content" style="position:relative; width:100%; max-width:540px; background:#0F2A52; border:1px solid rgba(46,155,255,0.3); border-radius:20px; padding:30px; color:#fff; box-shadow:0 20px 50px rgba(0,0,0,0.5);">
1849		<button type="button" class="hsm-modal-close" onclick="document.getElementById('hsm-modal-gf-35').style.display='none'" style="position:absolute; top:15px; right:15px; background:none; border:none; color:#9FC6F2; font-size:24px; cursor:pointer; width:36px; height:36px; display:flex; align-items:center; justify-content:center; border-radius:50%;">&times;</button>
1850		<h3 style="margin-bottom:15px; font-size:20px; color:#fff; font-family:'Aptos',sans-serif; text-align:center;">Checklist definitiva</h3>
1851		
1852                <div class='gf_browser_chrome gform_wrapper gravity-theme gform-theme--no-framework' data-form-theme='gravity-theme' data-form-index='0' id='gform_wrapper_35' >
1853                        <div class='gform_heading'>
1854							<p class='gform_required_legend'>&quot;<span class="gfield_required gfield_required_asterisk">*</span>&quot; señala los campos obligatorios</p>
1855                        </div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_35' id='gform_35'  action='/inspeccion/' data-formid='35' novalidate><div class='gf_invisible ginput_recaptchav3' data-sitekey='6LdTW0spAAAAALFeuF-v--QUUGrYoyWxqhHfY3_b' data-tabindex='0'><input id="input_668f8ad2ae323c857956fefc63e0865e" class="gfield_recaptcha_response" type="hidden" name="input_668f8ad2ae323c857956fefc63e0865e" value=""/></div>
1856                        <div class='gform-body gform_body'><div id='gform_fields_35' class='gform_fields top_label form_sublabel_below description_below validation_below'><div id="field_35_10" class="gfield gfield--type-honeypot gform_validation_container field_sublabel_below gfield--has-description field_description_below field_validation_below gfield_visibility_visible"  ><label class='gfield_label gform-field-label' for='input_35_10'><span class='gform-field-label__text'>URL</span></label><div class='ginput_container'><input name='input_10' id='input_35_10' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_35_10'>Este campo es un campo de validación y debe quedar sin cambios.</div></div><div id="field_35_2" class="gfield gfield--type-text gfield--input-type-text gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"  ><label class='gfield_label gform-field-label' for='input_35_2'><span class='gform-field-label__text'>Nombre</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_text'><input name='input_2' id='input_35_2' type='text' value='' class='large'    placeholder='Nombre *' aria-required="true" aria-invalid="false"   /></div></div><div id="field_35_1" class="gfield gfield--type-email gfield--input-type-email gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible gpev-field"  data-field-class="gpev-field" ><label class='gfield_label gform-field-label' for='input_35_1'><span class='gform-field-label__text'>Email</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_email'>
1857                            <input name='input_1' id='input_35_1' type='email' value='' class='large'   placeholder='Email *' aria-required="true" aria-invalid="false"  />
1858                        </div></div><div id="field_35_9" class="gfield gfield--type-phone gfield--input-type-phone gfield--phone-format-international gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"  ><label class='gfield_label gform-field-label' for='input_35_9'><span class='gform-field-label__text'>Teléfono</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_phone'><input name='input_9' id='input_35_9' type='tel' value='' class='large'  placeholder='Teléfono *' aria-required="true" aria-invalid="false"    /></div></div>
1858<div id="field_35_6" class="gfield gfield--type-select gfield--input-type-select gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"  ><label class='gfield_label gform-field-label' for='input_35_6'><span class='gform-field-label__text'>¿Dónde se encuentra la propiedad?</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_select'><select name='input_6' id='input_35_6' class='large gfield_select'    aria-required="true" aria-invalid="false" ><option value='' selected='selected' class='gf_placeholder' disabled>Provincia</option><option value='Albacete' >Albacete</option><option value='Alicante/Alacant' >Alicante/Alacant</option><option value='Almería' >Almería</option><option value='Araba/Álava' >Araba/Álava</option><option value='Asturias' >Asturias</option><option value='Ávila' >Ávila</option><option value='Badajoz' >Badajoz</option><option value='Balears, Illes' >Balears, Illes</option><option value='Barcelona' >Barcelona</option><option value='Bizkaia' >Bizkaia</option><option value='Burgos' >Burgos</option><option value='Cáceres' >Cáceres</option><option value='Cádiz' >Cádiz</option><option value='Cantabria' >Cantabria</option><option value='Castellón/Castelló' >Castellón/Castelló</option><option value='Ciudad Real' >Ciudad Real</option><option value='Córdoba' >Córdoba</option><option value='Coruña, A' >Coruña, A</option><option value='Cuenca' >Cuenca</option><option value='Gipuzkoa' >Gipuzkoa</option><option value='Girona' >Girona</option><option value='Granada' >Granada</option><option value='Guadalajara' >Guadalajara</option><option value='Huelva' >Huelva</option><option value='Huesca' >Huesca</option><option value='Jaén' >Jaén</option><option value='León' >León</option><option value='Lleida' >Lleida</option><option value='Lugo' >Lugo</option><option value='Madrid' >Madrid</option><option value='Málaga' >Málaga</option><option value='Murcia' >Murcia</option><option value='Navarra' >Navarra</option><option value='Ourense' >Ourense</option><option value='Palencia' >Palencia</option><option value='Palmas, Las' >Palmas, Las</option><option value='Pontevedra' >Pontevedra</option><option value='Rioja, La' >Rioja, La</option><option value='Salamanca' >Salamanca</option><option value='Santa Cruz de Tenerife' >Santa Cruz de Tenerife</option><option value='Segovia' >Segovia</option><option value='Sevilla' >Sevilla</option><option value='Soria' >Soria</option><option value='Tarragona' >Tarragona</option><option value='Teruel' >Teruel</option><option value='Toledo' >Toledo</option><option value='Valencia/València' >Valencia/València</option><option value='Valladolid' >Valladolid</option><option value='Zamora' >Zamora</option><option value='Zaragoza' >Zaragoza</option></select></div></div><fieldset id="field_35_8" class="gfield gfield--type-consent gfield--type-choice gfield--input-type-consent gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible gfield--choice-align-vertical"  ><legend class='gfield_label gform-field-label gfield_label_before_complex' ><span class='gform-field-label__text'>Consentimiento</span><span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></legend><div class='ginput_container ginput_container_consent'><input name='input_8.1' id='input_35_8_1' type='checkbox' value='1'   aria-required="true" aria-invalid="false"   /> <label class="gform-field-label gform-field-label--type-inline gfield_consent_label" for='input_35_8_1' ><span class='gform-field-label__text'>Acepto la <a href="/politica-privacidad/" target="_blank" style="text-decoration: underline;">política de privacidad</a> y los <a href="/terminos-y-condiciones/" target="_blank" style="text-decoration: underline;">términos y condiciones</a>.</span><span class="gfield_required gfield_required_asterisk">*</span></label><input type='hidden' name='input_8.2' value='Acepto la &lt;a href=&quot;/politica-privacidad/&quot; target=&quot;_blank&quot; style=&quot;text-decoration: underline;&quot;&gt;política de privacidad&lt;/a&gt; y los &lt;a href=&quot;/terminos-y-condiciones/&quot; target=&quot;_blank&quot; style=&quot;text-decoration: underline;&quot;&gt;términos y condiciones&lt;/a&gt;.' class='gform_hidden' /><input type='hidden' name='input_8.3' value='18' class='gform_hidden' /></div></fieldset></div></div>
1859        <div class='gform-footer gform_footer top_label'> <button type='submit' id='gform_submit_button_35' class='gform_button button' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' >Descargar</button> <input type='hidden' name='gform_ajax' value='form_id=35&amp;title=&amp;description=&amp;tabindex=0&amp;theme=gravity-theme&amp;hash=39895c61ff19e882d08ea17488c0875a' />
1860            <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_35' value='iframe' />
1861            <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_35' id='gform_theme_35' value='gravity-theme' />
1862            <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_35' id='gform_style_settings_35' value='' />
1863            <input type='hidden' class='gform_hidden' name='is_submit_35' value='1' />
1864            <input type='hidden' class='gform_hidden' name='gform_submit' value='35' />
1865            
1866            <input type='hidden' class='gform_hidden' name='gform_currency' data-currency='EUR' value='MFbBrdJZlZBqqhADF7pIbE7wjDE3ydSen+Qc/mp3XEJknSRNwIMCmNaeJknq/7ykyKgK+XrcYp7L3GktNKpKymyFffMduc6BES7wwZrrpStnbSc=' />
1867            <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' />
1868            <input type='hidden' class='gform_hidden' name='state_35' value='WyJ7XCI2XCI6W1wiMTI0MGI1Nzc5NTQxMThiMTdmYWNlODU0OTVmYTk4OGZcIixcImFlMWE3MjI3MWIwZDAxOTBhYzM0OGI5MjIwMmU4ODUzXCIsXCIzZWI2MTE1OTA5Y2Q4MGJiMWI3ZTUyMjAzNDI3MjRlYVwiLFwiNmFkMGJkNGY1OGViNTU3NzMzZDEzMzgwZTM2NDczMDBcIixcIjA2NTE3NGZjNmRiMTgzODM5Yzk2MDlmZDU1NDA0ZDMzXCIsXCIyMjJlMDNjOTYwODQyODQ0ZTM1YTQ2ZDhjMjYyZjZhY1wiLFwiYjRhNTBiN2ZiMmNlNDA5ZmU2MzNlMmFmNmVhZTljZTBcIixcImJlNjI2OGM2NGE2YWJmN2U3ZTBlYTQyYzdmNjMzZmEwXCIsXCIzN2ExMTRiNTc2NDVhNWI4NDExNzBiNGNmNDFjMzliYlwiLFwiMzI5NTA3ODEyOGE5YTgxMTRkOTcyNDA4NTA1NWNjMzRcIixcIjQ3MjdlNDdjN2YwODVjMzc3MTg1NDI0YzZlZDhmNDAxXCIsXCIyMmIzNzUwNjE4MDgyM2Y0ZDllZGZmZDBkZjA0NDg4Y1wiLFwiODMxY2I5ZjQ5MTk2ZDJjZThkNWU3Yjg1OTA2Y2FkOWRcIixcIjFlYzgzNDZjNzAxNGVjZmM5Njg1NDdhMzA2NjMwN2YwXCIsXCIwM2MwMjZiYjE5YWNkZDFmY2FjN2FhMDEwYjBiNWU2N1wiLFwiNjc0ZDkzZmY0NzkwZTNlZmIxN2E5ZjU0NzQ3Yjk1ZWFcIixcImE4YTU3NDIxZTMwZTJjYWMxNjU4ZWM0OTZkMDI4ZjQ2XCIsXCI4NDU1NzkxNTQ0YzM0YWQ5MDVkNmI2NTEyOTBkN2U5OFwiLFwiYTMwZDJlZWQ2ZjFkOTM2MThiMDc3NWI4MTY3NWQyZjNcIixcImI5YzExZGI2ZWNkZTYxYTBhOGZmY2E0NTNiMTA2OGZiXCIsXCI3ZjU2YmFiOTJhMjYxMjA0NTIzYTgyY2RjOWNiYzk4NVwiLFwiMjkxYWE5ZWY0NzA5NDJmNjkyNDE4ZDljM2IxMzY2MTNcIixcIjlmZjEyNTM5YTRjZjgzMGJkOGMxN2IzYjg5ZjNkOWE0XCIsXCJmOWUyZDA2NWNjZGJlMDE3ZGExYjVkOWYyYTYyM2VlNlwiLFwiYmJiYjE2ZGUxZTUxNDAyNzRiZWI3ZWFkMzI5YTNjNGVcIixcImNkMmVjNjEwMTM3N2ExYmE0MzJjYTU0MDI1OTIxYjBjXCIsXCIyYWU4MzBiODcwMTA1Njc1ZDY2MzE2YjY5M2NlZDRkZFwiLFwiOWI0ZjkyOTIxMjE4M2JmMWZkZDJkN2Y5NDAyYjVkNWZcIixcImJjNTlhNTdhOGE2ZjA4ODkxOTcyZDRjYjI2ZjY1YTc0XCIsXCJkNzg1NWQ0ODU5MzQ2ZjUxYWM1NTg1NDJlOGViNjk2OVwiLFwiN2RiMzMzMGExNzk1NTcwYzg0ZDE2NTk2NzI2YzQ1ZmZcIixcIjE1NzUzNTBlNGU4YWFmYmRlZDQ1MDU1NDg2N2NlNWZkXCIsXCJmZTdkYjVmMDVlYjdjMmI0NTVlOGM0ODliZmM2Zjc1NlwiLFwiMDAyZDBjNzM4NDI4NDBmYTE3ZjBlNTU3MzUzNjVkMzRcIixcIjFiZDI3OGVmNzFmMTAyNGJmYWJkOTcwODUxNzdhNGI3XCIsXCIwNWU4NjQwMTNlOWQ1MTkyZWQ2ZDhmZGIxZjc3NDlmZlwiLFwiZmIwZThmNjk3YTE3NWMwZjQxNjMxNzRjZTU1NGUxNGZcIixcImNlZDg0YTFlOTc2YzM3MzEzZTc5M2I5MWJiY2ZmZThhXCIsXCIzMDQzYjdlMzBiODM4MGMzNDkwYzkwYjdjZDcyZTkwOFwiLFwiNDk3MzMwOTZlYmZkMzVlYjY4MzBlNTQwZGY2YWE1OGZcIixcIjk0Y2JjY2RiMzQxMjgzNjIzOGE3NjMwODVmMWE4YWQyXCIsXCI2OGJkMTJkOTk3ZjA3MzI4ZGI2OWIwMDlkMDlhNjE0OVwiLFwiMjliOTQwNWVmODJmMmNmNjIyNTM4YTVjOWRmNjc0NzBcIixcIjI4MjdhMmI2ZGU5YmJ
1868kYjJiNzg4M2MwZWFhOTg4NGVjXCIsXCI0NGQ5ZWU1MjQ0ODM5ODdiNzdiODI1ZDA3ODg2M2YyNFwiLFwiMDJjNjg1ZjZiN2NmMGU5MTdlNjBlZWQ2Y2Y0N2YxNzVcIixcImY4Y2JmZDgyMTI3NzEyODMwNTVkY2E2ZGJhMjVjNzUxXCIsXCI2N2YxODVhNzE5MDdiNDVkMTM1MjE0MmM5ZjVjYzY4MlwiLFwiZDcyMGQyMzA3YTdiYWM4N2YzMDY5NWRkYWYwMzJjNjdcIixcImViMzhmNTJmNGZkNzAzNjdkZDc1ZTJhOGY1MDZhZWI4XCJdLFwiOC4xXCI6XCI0NjA1ODU0ZjI5ZmY4ZTJjNGU0OTViNWY1ZmY2NThhYlwiLFwiOC4yXCI6XCJiOGVmOWRjYWEwNThhMjc0ZDJkMDlhYzRiZDljMGMwNVwiLFwiOC4zXCI6XCIxODdhZjEyYmNkOWRlOWIxZGZlNTA2MGU3OTY4OWE5YlwiLFwiZ2Zvcm1fc3VibWlzc2lvbl9tZXRob2RcIjpbXCI5Nzg2OWQ3ZWI5NjBhYjJhNDAxNWQwMDE4NzAzMTJkNFwiLFwiODhjMTg2Nzg3NDI1ZGRlMzg3NjMwMGU3MDg1MmRjOWRcIixcIjk5ZWFiYzdkMmRhMGM2OWJiY2YxMmE2MGM1Yjc0ZGVhXCJdLFwiZ2Zvcm1fdGhlbWVcIjpcIjZhMTRlM2NkOGJlYWFmZGI3NzQ0ZmY1YzAwNzE1NWE1XCIsXCJnZm9ybV9zdHlsZV9zZXR0aW5nc1wiOlwiZDBkZDkzMWNkNWIzODM1YjJlYjg0Y2FlMDE4ZDJhZjhcIixcImZvcm1faWRcIjpcImZhYWUwMWJjMTJkMDQwYWQ0YjkxMmI4ZTljYjMyYjNjXCIsXCJ1cmxcIjpcIjA4OWFhOTc0YWFmM2FmNjY3ZWMyNjU3OWMzMDc2NWIzXCIsXCJzdGF0ZV90aW1lc3RhbXBcIjpcIjNlY2NlMjk5NGJlOTRmOWMwNGU5NDY2MGY0ZGM5OTIzXCJ9IiwiOThkMjQ2NGY4MjJiN2MxYjI5YTBmMmYxMjZkYWY1ZTQiLDE3OTExMDkyOTZd' />
1869            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_35' id='gform_target_page_number_35' value='0' />
1870            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_35' id='gform_source_page_number_35' value='1' />
1871            <input type='hidden' name='gform_field_values' value='' />
1872            
1873        </div>
1874                        </form>
1875                        </div>
1876		                <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_35' id='gform_ajax_frame_35' title='Este iframe contiene la lógica necesaria para gestionar formularios con ajax activado.'></iframe>
1877		                
1877<script>
1878gform.initializeOnLoaded( function() {jQuery('#gform_ajax_frame_35').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_35');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_35').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_35').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_35').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_35').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */  }, 50 );var current_page = jQuery('#gform_source_page_number_35').val();jQuery(document).trigger('gform_page_loaded', [35, current_page]);window['gf_submitting_35'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_35').replaceWith(confirmation_content);jQuery(document).trigger('gform_confirmation_loaded', [35]);window['gf_submitting_35'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_35').text());}else{jQuery('#gform_35').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger("gform_pre_post_render", [{ formId: "35", currentPage: "current_page", abort: function() { this.preventDefault(); } }]);        if (event && event.defaultPrevented) {                return;        }        const gformWrapperDiv = document.getElementById( "gform_wrapper_35" );        if ( gformWrapperDiv ) {            const visibilitySpan = document.createElement( "span" );            visibilitySpan.id = "gform_visibility_test_35";            gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan );        }        const visibilityTestDiv = document.getElementById( "gform_visibility_test_35" );        let postRenderFired = false;        function triggerPostRender() {            if ( postRenderFired ) {                return;            }            postRenderFired = true;            gform.core.triggerPostRenderEvents( 35, current_page );            if ( visibilityTestDiv ) {                visibilityTestDiv.parentNode.removeChild( visibilityTestDiv );            }        }        function debounce( func, wait, immediate ) {            var timeout;            return function() {                var context = this, args = arguments;                var later = function() {                    timeout = null;                    if ( !immediate ) func.apply( context, args );                };                var callNow = immediate && !timeout;                clearTimeout( timeout );                timeout = setTimeout( later, wait );                if ( callNow ) func.apply( context, args );            };        }        const debouncedTriggerPostRender = debounce( function() {            triggerPostRender();        }, 200 );        if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) {            const observer = new MutationObserver( ( mutations ) => {                mutations.forEach( ( mutation ) => {                    if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) {                        debouncedTriggerPostRender();                        observer.disconnect();                    }                });            });            observer.observe( document.body, {                attributes: true,                childList: false,                subtree: true,                attributeFilter: [ 'style', 'class' ],            });        } else {            triggerPostRender();        }    } );} );
1879</script>
vendor: 1 bytes, line 1879
1879
1880<script>
1881gform.initializeOnLoaded( function() { jQuery(document).on('gform_post_render', function(event, formId, currentPage){if(formId == 35) {if(typeof Placeholders != 'undefined'){
1882                        Placeholders.enable();
1883                    }} } );jQuery(document).on('gform_post_conditional_logic', function(event, formId, fields, isInit){} ) } );
1884</script>
vendor: 1 bytes, line 1884
1884
1885<script>
1886gform.initializeOnLoaded( function() {jQuery(document).trigger("gform_pre_post_render", [{ formId: "35", currentPage: "1", abort: function() { this.preventDefault(); } }]);        if (event && event.defaultPrevented) {                return;        }        const gformWrapperDiv = document.getElementById( "gform_wrapper_35" );        if ( gformWrapperDiv ) {            const visibilitySpan = document.createElement( "span" );            visibilitySpan.id = "gform_visibility_test_35";            gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan );        }        const visibilityTestDiv = document.getElementById( "gform_visibility_test_35" );        let postRenderFired = false;        function triggerPostRender() {            if ( postRenderFired ) {                return;            }            postRenderFired = true;            gform.core.triggerPostRenderEvents( 35, 1 );            if ( visibilityTestDiv ) {                visibilityTestDiv.parentNode.removeChild( visibilityTestDiv );            }        }        function debounce( func, wait, immediate ) {            var timeout;            return function() {                var context = this, args = arguments;                var later = function() {                    timeout = null;                    if ( !immediate ) func.apply( context, args );                };                var callNow = immediate && !timeout;                clearTimeout( timeout );                timeout = setTimeout( later, wait );                if ( callNow ) func.apply( context, args );            };        }        const debouncedTriggerPostRender = debounce( function() {            triggerPostRender();        }, 200 );        if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) {            const observer = new MutationObserver( ( mutations ) => {                mutations.forEach( ( mutation ) => {                    if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) {                        debouncedTriggerPostRender();                        observer.disconnect();                    }                });            });            observer.observe( document.body, {                attributes: true,                childList: false,                subtree: true,                attributeFilter: [ 'style', 'class' ],            });        } else {            triggerPostRender();        }    } );
1887</script>
1887
1888	</div>
1889</div>
1890
1891<script>
1892document.addEventListener('DOMContentLoaded', function(){
1893	document.addEventListener('click', function(e){
1894		var b2 = e.target.closest('.lightbox_form_btn_2');
1895		if (b2) {
1896			e.preventDefault();
1897			var m2 = document.getElementById('hsm-modal-gf-21');
1898			if (m2) m2.style.display = 'flex';
1899		}
1900		var b3 = e.target.closest('.lightbox_form_btn_3');
1901		if (b3) {
1902			e.preventDefault();
1903			var m3 = document.getElementById('hsm-modal-gf-35');
1904			if (m3) m3.style.display = 'flex';
1905		}
1906	});
1907});
1908</script>
1908
1909
1910<script type="speculationrules">
1911{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/hausum-theme/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
1912</script>
1912
1913
1914<script>
1915/* Hausum Landing Ads -> n8n Omnia (dedup negocio por telefono). ADITIVO: no toca el envio a HubSpot ni el precio. */
1916(function(){
1917  if(location.pathname.indexOf('inspeccion-vivienda-landing')===-1) return;
1918  var OMNIA='https://hausum-n8n.conexiatec.com/webhook/hausum-landing-ads-deal';
1919  function sendOmnia(){
1920    try{
1921      var g=function(id){var el=document.getElementById(id);return el?String(el.value||'').trim():'';};
1922      var m2=parseInt(g('f-m2'),10)||0;
1923      var precio=m2<100?345:m2<200?395:m2<300?445:m2<400?495:545;
1924      var mot=document.querySelector('input[name="motivo"]:checked');
1925      var body={firstname:g('f-nombre'),phone:g('f-telefono'),zip:g('f-cp'),email:g('f-email'),
1926                metros_cuadrados:String(m2),motivo_inspeccion:mot?mot.value:'',precio_inspeccion:String(precio)};
1927      if(!body.phone && !body.email) return;
1928      fetch(OMNIA,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(body),keepalive:true}).catch(function(){});
1929    }catch(e){}
1930  }
1931  function tryWrap(){
1932    if(window.__omniaWrapped) return true;
1933    if(typeof window.submitForm!=='function') return false;
1934    var _orig=window.submitForm;
1935    window.submitForm=function(){ sendOmnia(); return _orig.apply(this,arguments); };
1936    window.__omniaWrapped=true;
1937    return true;
1938  }
1939  if(!tryWrap()){
1940    var n=0,iv=setInterval(function(){ if(tryWrap()||++n>100) clearInterval(iv); },50);
1941    document.addEventListener('DOMContentLoaded',tryWrap);
1942    window.addEventListener('load',tryWrap);
1943  }
1944})();
1945</script>
vendor: 1 bytes, line 1945
1945
1946<script type="text/javascript">
1947jQuery( function() {
1948if ( window.Cookies ) {
1949Cookies.set( "gp_easy_passthrough_session", "f6932d6a6091a2e07ae38aed79ab3d38||1791111096||1791110736", {"expires": new Date( new Date().getTime() + 1800000 ),"path": "/","domain": "","SameSite": "Lax","secure": false} );
1950}
1951} );
1952</script>
vendor: 1 bytes, line 1952
1952
1953<script id="intl-tel-input-js-js" defer src="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/js/intlTelInput.min.js?ver=17.0.19"></script>
vendor: 1 bytes, line 1953
1953
1954<script id="google-maps-api-js" defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyC1mhSjg--HSbn9udYqIGnahp458sKgLWo&#038;libraries=places"></script>
vendor: 1 bytes, line 1954
1954
1955<script id="leaflet-js-js" defer src="https://unpkg.com/[email protected]/dist/leaflet.js?ver=1.9.4"></script>
vendor: 1 bytes, line 1955
1955
1956<script id="wp-cadastre-public-js-js-extra">
1957var wpCadastreParams = {"ajax_url":"https://hausum.com/wp-admin/admin-ajax.php","nonce":"94382712be","map_provider":"google","google_key":"AIzaSyC1mhSjg--HSbn9udYqIGnahp458sKgLWo","default_lat":"40.416729","default_lng":"-3.703339","default_zoom":"16","street_view":"embed","accent_color":"#2563eb","theme":"glassmorphic","texts":{"search_mode_address":"Buscar por Direcci\u00f3n","search_mode_rc":"Buscar por Referencia Catastral","search_placeholder":"Buscar una calle y n\u00famero (ej: Alcal\u00e1 1, Madrid)...","rc_placeholder":"Introduce la referencia catastral (14 o 20 caracteres)...","btn_consultar":"Consultar","invalid_rc_length":"La referencia catastral debe tener 14 o 20 caracteres (ej: 7188304DF3878G).","no_results":"No se han encontrado resultados","searching":"Buscando datos en el Catastro...","loading_details":"Cargando datos del catastro...","select_division":"Selecciona una unidad del edificio","step1_title":"1. Selecciona la Escalera o Zona del edificio:","
1957step2_title":"2. Selecciona la Planta / Vivienda:","quick_filter_placeholder":"Buscar piso o puerta (ej: 2\u00ba 1\u00aa)...","no_filtered_units":"No se ha encontrado ning\u00fan inmueble que coincida con la b\u00fasqueda.","unit_singular":"unidad","unit_plural":"unidades","parking":"Aparcamientos","trasteros":"Trasteros","locales":"Locales","escalera":"Escalera","num_prefix":"N\u00ba","copy_success":"\u00a1Referencia copiada!","error_catastro":"Error al comunicar con el servicio del Catastro"}};
1958var wpCadastreParams = {"ajax_url":"https://hausum.com/wp-admin/admin-ajax.php","nonce":"94382712be","map_provider":"google","google_key":"AIzaSyC1mhSjg--HSbn9udYqIGnahp458sKgLWo","default_lat":"40.416729","default_lng":"-3.703339","default_zoom":"16","street_view":"embed","accent_color":"#2563eb","theme":"glassmorphic","texts":{"search_mode_address":"Buscar por Direcci\u00f3n","search_mode_rc":"Buscar por Referencia Catastral","search_placeholder":"Buscar una calle y n\u00famero (ej: Alcal\u00e1 1, Madrid)...","rc_placeholder":"Introduce la referencia catastral (14 o 20 caracteres)...","btn_consultar":"Consultar","invalid_rc_length":"La referencia catastral debe tener 14 o 20 caracteres (ej: 7188304DF3878G).","no_results":"No se han encontrado resultados","searching":"Buscando datos en el Catastro...","loading_details":"Cargando datos del catastro...","select_division":"Selecciona una unidad del edificio","step1_title":"1. Selecciona la Escalera o Zona del edificio:","step2_title":"2. Selecciona la Planta / Vivienda:","quick_filter_placeholder":"Buscar piso o puerta (ej: 2\u00ba 1\u00aa)...","no_filtered_units":"No se ha encontrado ning\u00fan inmueble que coincida con la b\u00fasqueda.","unit_singular":"unidad","unit_plural":"unidades","parking":"Aparcamientos","trasteros":"Trasteros","locales":"Locales","escalera":"Escalera","num_prefix":"N\u00ba","copy_success":"\u00a1Referencia copiada!","error_catastro":"Error al comunicar con el servicio del Catastro"}};
1959//# sourceURL=wp-cadastre-public-js-js-extra
1960</script>
vendor: 1 bytes, line 1960
1960
1961<script id="wp-cadastre-public-js-js" defer src="https://hausum.com/wp-content/plugins/WPCadastre/assets/js/wp-cadastre-public.js?ver=1.0.7"></script>
vendor: 1 bytes, line 1961
1961
1962<script id="hausum-navigation-js" defer src="https://hausum.com/wp-content/themes/hausum-theme/js/navigation.js?ver=1.0.0"></script>
vendor: 1 bytes, line 1962
1962
1963<script id="gforms_recaptcha_recaptcha-js-extra">
1964var gforms_recaptcha_recaptcha_strings = {"nonce":"da1adc24e5","disconnect":"Disconnecting","change_connection_type":"Resetting","spinner":"https://hausum.com/wp-content/plugins/gravityforms/images/spinner.svg","connection_type":"classic","disable_badge":"1","change_connection_type_title":"Change Connection Type","change_connection_type_message":"Changing the connection type will delete your current settings.  Do you want to proceed?","disconnect_title":"Disconnect","disconnect_message":"Disconnecting from reCAPTCHA will delete your current settings.  Do you want to proceed?","site_key":"6LdTW0spAAAAALFeuF-v--QUUGrYoyWxqhHfY3_b"};
1965//# sourceURL=gforms_recaptcha_recaptcha-js-extra
1966</script>
vendor: 121 bytes, lines 1966-1967
1966
1967<script data-wp-strategy="defer" id="gforms_recaptcha_recaptcha-js" src="https://www.google.com/recaptcha/api.js?render=
19676LdTW0spAAAAALFeuF-v--QUUGrYoyWxqhHfY3_b
vendor: 27 bytes, line 1967
1967&#038;ver=2.2.2"></script>
1968<script data-wp-strategy="defer" id="gforms_recaptcha_frontend-js" src="https://hausum.com/wp-content/plugins/gravityformsrecaptcha/js/frontend.min.js?ver=2.2.2"></script>
vendor: 1 bytes, line 1968
1968
1969<script id="wp-dom-ready-js" defer src="https://hausum.com/wp-includes/js/dist/dom-ready.min.js?ver=3fe927cab37bf38d6a23"></script>
vendor: 1 bytes, line 1969
1969
1970<script id="wp-hooks-js" src="https://hausum.com/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255"></script>
vendor: 1 bytes, line 1970
1970
1971<script id="wp-i18n-js" src="https://hausum.com/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216"></script>
vendor: 1 bytes, line 1971
1971
1972<script id="wp-i18n-js-after">
1973wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
1974//# sourceURL=wp-i18n-js-after
1975</script>
vendor: 1 bytes, line 1975
1975
1976<script id="wp-a11y-js-translations">
1977( function( domain, translations ) {
1978	var localeData = translations.locale_data[ domain ] || translations.locale_data.messages;
1979	localeData[""].domain = domain;
1980	wp.i18n.setLocaleData( localeData, domain );
1981} )( "default", {"translation-revision-date":"2026-09-18 06:15:56+0000","generator":"GlotPress\/4.1.0","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"es"},"Notifications":["Avisos"]}},"comment":{"reference":"wp-includes\/js\/dist\/a11y.js"}} );
1982//# sourceURL=wp-a11y-js-translations
1983</script>
vendor: 1 bytes, line 1983
1983
1984<script id="wp-a11y-js" src="https://hausum.com/wp-includes/js/dist/a11y.min.js?ver=31c6cec5a4ff7aff483d"></script>
vendor: 1 bytes, line 1984
1984
1985<script id="gform_json-js" src="https://hausum.com/wp-content/plugins/gravityforms/js/jquery.json.min.js?ver=3.1.3"></script>
vendor: 1 bytes, line 1985
1985
1986<script id="gform_gravityforms-js-extra">
1987var gform_i18n = {"datepicker":{"wdOffset":1,"helpTextShort":"Press F1 for help","helpText":"Press the arrow keys to navigate by day, PageUp and PageDown to navigate by month, Alt+PageUp and Alt+PageDown to navigate by year, or Escape to cancel.","openOnFocusHelpText":"Press Down arrow to browse the calendar, or Escape to close.","tooltipTxt":"Press Escape to cancel","disabledTxt":"Desactivado","markedTxt":"Seleccionado","prevTxt":"Anterior","nextTxt":"Siguiente","monthTxt":"Mes","yearTxt":"A\u00f1o","months":["Enero","Febrero","Marzo","Abril","May","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],"days":[{"s":"S","l":"Domingo"},{"s":"M","l":"Lunes"},{"s":"T","l":"Martes"},{"s":"W","l":"Mi\u00e9rcoles"},{"s":"T","l":"Jueves"},{"s":"F","l":"Viernes"},{"s":"S","l":"S\u00e1bado"}]}};
1988var gf_legacy_multi = [];
1989var gform_gravityforms = {"strings":{"invalid_file_extension":"Este tipo de archivo no est\u00e1 permitido. Debe ser uno de los siguientes:","file_uploaded":"Archivo subido","delete_file":"Borrar este archivo","in_progress":"en curso","file_exceeds_limit":"El archivo excede el l\u00edmite de tama\u00f1o","illegal_extension":"Este tipo de archivo no est\u00e1 permitido.","max_reached":"N\u00ba m\u00e1ximo de archivos alcanzado","unknown_error":"Hubo un problema al guardar el archivo en el servidor","currently_uploading":"Por favor espera a que se complete la subida","cancel":"Cancelar","cancel_upload":"Cancelar esta subida","cancelled":"Cancelada","error":"Error","message":"Mensaje"},"vars":{"images_url":"https://hausum.com/wp-content/plugins/gravityforms/images"}};
1990var gf_global = {"gf_currency_config":{"name":"Euro","symbol_left":"","symbol_right":"&#8364;","symbol_padding":" ","thousand_separator":".","decimal_separator":",","decimals":2,"code":"EUR"},"base_url":"https://hausum.com/wp-content/plugins/gravityforms","number_formats":[],"version_hash":"6283974bc66209b23a599fea367b0d77","countries":{"AF":"Afghanist\u00e1n","AX":"Islas \u00c5land","AL":"Albania","DZ":"Argelia","AS":"Samoa Americana","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Ant\u00e1rtida","AG":"Antigua y Barbuda","AR":"Argentina","AM":"Armenia","AW":"Aruba","AU":"Australia","AT":"Austria","AZ":"Azerbaiy\u00e1n","BS":"Bahamas","BH":"Bar\u00e9in","BD":"Bangladesh","BB":"Barbados","BY":"Bielorusia","BE":"B\u00e9lgica","BZ":"Belice","BJ":"Benin","BM":"Bermuda","BT":"Bhut\u00e1n","BO":"Bolivia","BQ":"Bonaire, San Eustaquio y Saba","BA":"Bosnia y Herzegovina","BW":"Botswana","BV":"Isla Bouvet","BR":"Brasil","IO":"Territorio Brit\u00e1nico del Oc\u00e9ano \u00cdndico","BN":"Brunei Darussalam","BG":"Bulgaria","BF":"Burkina Faso","BI":"Burundi","CV":"Cabo Verde","KH":"Camboya","CM":"Camer\u00fan","CA":"Canada","KY":"Islas Caim\u00e1n","CF":"Rep\u00fablica Centroafricana","TD":"Chad","CL":"Chile","CN":"China","CX":"Isla de Navidad","CC":"Islas Cocos","CO":"Colombia","KM":"Comoras","CD":"Congo, Rep\u00fablica Democr\u00e1tica del","CG":"Congo","CK":"Islas Cook","CR":"Costa Rica","CI":"Costa de Marfil","HR":"Croacia","CU":"Cuba","CW":"Curazao","CY":"Chipre","CZ":"Chequia","DK":"Dinamarca","DJ":"Djibouti","DM":"Dominica","DO":"Rep\u00fablica Dominicana","EC":"Ecuador","EG":"Egipto","SV":"El Salvador","GQ":"Guinea Ecuatorial","ER":"Eritrea","EE":"Estonia","SZ":"Esuatini","ET":"Etiop\u00eda","FK":"Islas Malvinas","FO":"Islas Faroe","FJ":"Fiji","FI":"Finlandia","FR":"Francia","GF":"Guayana Francesa","PF":"Polinesia Francesa","TF":"Tierras Australes y Ant\u00e1rticas Francesas","GA":"Gab\u00f3n","GM":"Gambia","GE":"Georgia","DE":"Alemania","GH":"Ghana","GI":"Gibraltar","GR":"Grecia","GL":"Groenlandia","GD":"Granada","GP":"Guadalupe","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GN":"Guinea","GW":"Guinea Bissau","GY":"Guayana","HT":"Hait\u00ed","HM":"Islas Heard y McDonald","VA":"Santa Sede","HN":"Honduras","HK":"Hong Kong","HU":"Hungr\u00eda","IS":"Islandia","IN":"India","ID":"Indonesia","IR":"Ir\u00e1n","IQ":"Iraq","IE":"Irlanda","IM":"Isla de Man","IL":"Israel","IT":"Italia","JM":"Jamaica","JP":"Jap\u00f3n","JE":"Jersey","JO":"Jord\u00e1n","KZ":"Kazajist\u00e1n","KE":"Kenia","KI":"Kiribati","KP":"Corea, Rep\u00fablica Popular Democr\u00e1tica de","KR":"Corea, Rep\u00fablica de","KW":"Kuwait","KG":"Kirguist\u00e1n","LA":"Rep\u00fablica Democr\u00e1tica Popular de Laos","LV":"Lituania","LB":"L\u00edbano","LS":"Lesoto","LR":"Liberia","LY":"LIbia","LI":"Liechtenstein","LT":"Lituania","LU":"Luxemburgo","MO":"Macau","MG":"Madagascar","MW":"Malawi","MY":"Malasia","MV":"Maldivas","ML":"Mali","MT":"Malta","MH":"Islas Marshall","MQ":"Martinica","MR":"Mauritania","MU":"Mauricio","YT":"Mayotte","MX":"M\u00e9xico","FM":"Micronesia","MD":"Moldavia","MC":"Monaco","MN":"Mongolia","ME":"Montenegro","MS":"Montserrat","MA":"Marruecos","MZ":"Mozambique","MM":"Myanmar","NA":"Namibia","NR":"Nauru","NP":"Nepal","NL":"Paises Bajos","NC":"Nueva Caledonia","NZ":"Nueva Zelanda","NI":"Nicaragua","NE":"N\u00edger","NG":"Nigeria","NU":"Niue","NF":"Isla Norfolk","MK":"Macedonia del Norte","MP":"Islas Marianas del Norte","NO":"Noruega","OM":"Om\u00e1n","PK":"Pakist\u00e1n","PW":"Palau","PS":"Palestina, Estado de","PA":"Panam\u00e1","PG":"Pap\u00faa Nueva Guinea","PY":"Paraguay","PE":"Per\u00fa","PH":"Filipinas","PN":"Pitcairn","PL":"Polonia","PT":"Portugal","PR":"Puerto Rico","QA":"Qatar","RE":"Reuni\u00f3n","RO":"Ruman\u00eda","RU":"Federaci\u00f3n Rusa","RW":"Ruanda","BL":"San Bartolom\u00e9","SH":"Santa Elena, Ascensi\u00f3n y Trist\u00e1n de Acu\u00f1a","KN":"San Crist\u00f3bal y Nieves","LC":"Santa Luc\u00eda","MF":"San Mart\u00edn","PM":"San Pedro y Miquel\u00f3n","VC":"San Vicente y las Granadinas","WS":"Samoa","SM":"San Marino","ST":"Santo Tom\u00e9 y Principe","SA":"Arabia Saudita","SN":"Senegal","RS":"Serbia","SC":"Seychelles","SL":"Sierra Leona","SG":"Singapur","SX":"Sint Maarten","SK":"Eslovaquia","SI":"Eslovenia","SB":"Islas Salom\u00f3n","SO":"Somalia","ZA":"Sud\u00e1frica","GS":"Ji\u017en\u00ed Georgie a Ji\u017en\u00ed Sandwichovy ostrovy","SS":"Sud\u00e1n del Sur","ES":"Espa\u00f1a","LK":"Sri Lanka","SD":"Sud\u00e1n","SR":"Surinam","SJ":"Svalbard y Jan Mayen","SE":"Suecia","CH":"Suiza","SY":"Rep\u00fablica \u00c1rabe de Siria","TW":"Taiwan","TJ":"Tayikist\u00e1n","TZ":"Tanzania (Rep\u00fablica Unida de)","TH":"Tailandia","TL":"Timor Oriental","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad y Tobago","TN":"T\u00fanez","TR":"Turqu\u00eda","TM":"Turkmenist\u00e1n","TC":"Islas Turcas y Caicos","TV":"Tuvalu","UG":"Uganda","UA":"Ucrania","AE":"Emiratos \u00c1rabes Unidos","GB":"Reino Unido","US":"Estados Unidos","UY":"Uruguay","UM":"Islas Ultramarinas Menores de Estados Unidos","UZ":"Uzbekist\u00e1n","VU":"Vanuatu","VE":"Venezuela","VN":"Vietnam","VG":"Islas V\u00edrgenes Brit\u00e1nicas","VI":"Islas V\u00edrgenes de los Estados Unidos","WF":"Wallis y Futuna","EH":"Sahara Occidental","YE":"Yemen","ZM":"Zambia","ZW":"Zimbaue"},"strings":{"newRowAdded":"Nueva fila a\u00f1adida.","rowRemoved":"Fila eliminada","formSaved":"Se ha guardado el formulario. El contenido incluye el enlace para volver y completar el formulario."}};
1991var gf_global = {"gf_currency_config":{"name":"Euro","symbol_left":"","symbol_right":"&#8364;
1991","symbol_padding":" ","thousand_separator":".","decimal_separator":",","decimals":2,"code":"EUR"},"base_url":"https://hausum.com/wp-content/plugins/gravityforms","number_formats":[],"version_hash":"6283974bc66209b23a599fea367b0d77","countries":{"AF":"Afghanist\u00e1n","AX":"Islas \u00c5land","AL":"Albania","DZ":"Argelia","AS":"Samoa Americana","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Ant\u00e1rtida","AG":"Antigua y Barbuda","AR":"Argentina","AM":"Armenia","AW":"Aruba","AU":"Australia","AT":"Austria","AZ":"Azerbaiy\u00e1n","BS":"Bahamas","BH":"Bar\u00e9in","BD":"Bangladesh","BB":"Barbados","BY":"Bielorusia","BE":"B\u00e9lgica","BZ":"Belice","BJ":"Benin","BM":"Bermuda","BT":"Bhut\u00e1n","BO":"Bolivia","BQ":"Bonaire, San Eustaquio y Saba","BA":"Bosnia y Herzegovina","BW":"Botswana","BV":"Isla Bouvet","BR":"Brasil","IO":"Territorio Brit\u00e1nico del Oc\u00e9ano \u00cdndico","BN":"Brunei Darussalam","BG":"Bulgaria","BF":"Burkina Faso","BI":"Burundi","CV":"Cabo Verde","KH":"Camboya","CM":"Camer\u00fan","CA":"Canada","KY":"Islas Caim\u00e1n","CF":"Rep\u00fablica Centroafricana","TD":"Chad","CL":"Chile","CN":"China","CX":"Isla de Navidad","CC":"Islas Cocos","CO":"Colombia","KM":"Comoras","CD":"Congo, Rep\u00fablica Democr\u00e1tica del","CG":"Congo","CK":"Islas Cook","CR":"Costa Rica","CI":"Costa de Marfil","HR":"Croacia","CU":"Cuba","CW":"Curazao","CY":"Chipre","CZ":"Chequia","DK":"Dinamarca","DJ":"Djibouti","DM":"Dominica","DO":"Rep\u00fablica Dominicana","EC":"Ecuador","EG":"Egipto","SV":"El Salvador","GQ":"Guinea Ecuatorial","ER":"Eritrea","EE":"Estonia","SZ":"Esuatini","ET":"Etiop\u00eda","FK":"Islas Malvinas","FO":"Islas Faroe","FJ":"Fiji","FI":"Finlandia","FR":"Francia","GF":"Guayana Francesa","PF":"Polinesia Francesa","TF":"Tierras Australes y Ant\u00e1rticas Francesas","GA":"Gab\u00f3n","GM":"Gambia","GE":"Georgia","DE":"Alemania","GH":"Ghana","GI":"Gibraltar","GR":"Grecia","GL":"Groenlandia","GD":"Granada","GP":"Guadalupe","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GN":"Guinea","GW":"Guinea Bissau","GY":"Guayana","HT":"Hait\u00ed","HM":"Islas Heard y McDonald","VA":"Santa Sede","HN":"Honduras","HK":"Hong Kong","HU":"Hungr\u00eda","IS":"Islandia","IN":"India","ID":"Indonesia","IR":"Ir\u00e1n","IQ":"Iraq","IE":"Irlanda","IM":"Isla de Man","IL":"Israel","IT":"Italia","JM":"Jamaica","JP":"Jap\u00f3n","JE":"Jersey","JO":"Jord\u00e1n","KZ":"Kazajist\u00e1n","KE":"Kenia","KI":"Kiribati","KP":"Corea, Rep\u00fablica Popular Democr\u00e1tica de","KR":"Corea, Rep\u00fablica de","KW":"Kuwait","KG":"Kirguist\u00e1n","LA":"Rep\u00fablica Democr\u00e1tica Popular de Laos","LV":"Lituania","LB":"L\u00edbano","LS":"Lesoto","LR":"Liberia","LY":"LIbia","LI":"Liechtenstein","LT":"Lituania","LU":"Luxemburgo","MO":"Macau","MG":"Madagascar","MW":"Malawi","MY":"Malasia","MV":"Maldivas","ML":"Mali","MT":"Malta","MH":"Islas Marshall","MQ":"Martinica","MR":"Mauritania","MU":"Mauricio","YT":"Mayotte","MX":"M\u00e9xico","FM":"Micronesia","MD":"Moldavia","MC":"Monaco","MN":"Mongolia","ME":"Montenegro","MS":"Montserrat","MA":"Marruecos","MZ":"Mozambique","MM":"Myanmar","NA":"Namibia","NR":"Nauru","NP":"Nepal","NL":"Paises Bajos","NC":"Nueva Caledonia","NZ":"Nueva Zelanda","NI":"Nicaragua","NE":"N\u00edger","NG":"Nigeria","NU":"Niue","NF":"Isla Norfolk","MK":"Macedonia del Norte","MP":"Islas Marianas del Norte","NO":"Noruega","OM":"Om\u00e1n","PK":"Pakist\u00e1n","PW":"Palau","PS":"Palestina, Estado de","PA":"Panam\u00e1","PG":"Pap\u00faa Nueva Guinea","PY":"Paraguay","PE":"Per\u00fa","PH":"Filipinas","PN":"Pitcairn","PL":"Polonia","PT":"Portugal","PR":"Puerto Rico","QA":"Qatar","RE":"Reuni\u00f3n","RO":"Ruman\u00eda","RU":"Federaci\u00f3n Rusa","RW":"Ruanda","BL":"San Bartolom\u00e9","SH":"Santa Elena, Ascensi\u00f3n y Trist\u00e1n de Acu\u00f1a","KN":"San Crist\u00f3bal y Nieves","LC":"Santa Luc\u00eda","MF":"San Mart\u00edn","PM":"San Pedro y Miquel\u00f3n","VC":"San Vicente y las Granadinas","WS":"Samoa","SM":"San Marino","ST":"Santo Tom\u00e9 y Principe","SA":"Arabia Saudita","SN":"Senegal","RS":"Serbia","SC":"Seychelles","SL":"Sierra Leona","SG":"Singapur","SX":"Sint Maarten","SK":"Eslovaquia","SI":"Eslovenia","SB":"Islas Salom\u00f3n","SO":"Somalia","ZA":"Sud\u00e1frica","GS":"Ji\u017en\u00ed Georgie a Ji\u017en\u00ed Sandwichovy ostrovy","SS":"Sud\u00e1n del Sur","ES":"Espa\u00f1a","LK":"Sri Lanka","SD":"Sud\u00e1n","SR":"Surinam","SJ":"Svalbard y Jan Mayen","SE":"Suecia","CH":"Suiza","SY":"Rep\u00fablica \u00c1rabe de Siria","TW":"Taiwan","TJ":"Tayikist\u00e1n","TZ":"Tanzania (Rep\u00fablica Unida de)","TH":"Tailandia","TL":"Timor Oriental","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad y Tobago","TN":"T\u00fanez","TR":"Turqu\u00eda","TM":"Turkmenist\u00e1n","TC":"Islas Turcas y Caicos","TV":"Tuvalu","UG":"Uganda","UA":"Ucrania","AE":"Emiratos \u00c1rabes Unidos","GB":"Reino Unido","US":"Estados Unidos","UY":"Uruguay","UM":"Islas Ultramarinas Menores de Estados Unidos","UZ":"Uzbekist\u00e1n","VU":"Vanuatu","VE":"Venezuela","VN":"Vietnam","VG":"Islas V\u00edrgenes Brit\u00e1nicas","VI":"Islas V\u00edrgenes de los Estados Unidos","WF":"Wallis y Futuna","EH":"Sahara Occidental","YE":"Yemen","ZM":"Zambia","ZW":"Zimbaue"},"strings":{"newRowAdded":"Nueva fila a\u00f1adida.","rowRemoved":"Fila eliminada","formSaved":"Se ha guardado el formulario. El contenido incluye el enlace para volver y completar el formulario."}};
1992var gf_global = {"gf_currency_config":{"name":"Euro","symbol_left":"","symbol_right":"&#8364;
1992","symbol_padding":" ","thousand_separator":".","decimal_separator":",","decimals":2,"code":"EUR"},"base_url":"https://hausum.com/wp-content/plugins/gravityforms","number_formats":[],"version_hash":"6283974bc66209b23a599fea367b0d77","countries":{"AF":"Afghanist\u00e1n","AX":"Islas \u00c5land","AL":"Albania","DZ":"Argelia","AS":"Samoa Americana","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Ant\u00e1rtida","AG":"Antigua y Barbuda","AR":"Argentina","AM":"Armenia","AW":"Aruba","AU":"Australia","AT":"Austria","AZ":"Azerbaiy\u00e1n","BS":"Bahamas","BH":"Bar\u00e9in","BD":"Bangladesh","BB":"Barbados","BY":"Bielorusia","BE":"B\u00e9lgica","BZ":"Belice","BJ":"Benin","BM":"Bermuda","BT":"Bhut\u00e1n","BO":"Bolivia","BQ":"Bonaire, San Eustaquio y Saba","BA":"Bosnia y Herzegovina","BW":"Botswana","BV":"Isla Bouvet","BR":"Brasil","IO":"Territorio Brit\u00e1nico del Oc\u00e9ano \u00cdndico","BN":"Brunei Darussalam","BG":"Bulgaria","BF":"Burkina Faso","BI":"Burundi","CV":"Cabo Verde","KH":"Camboya","CM":"Camer\u00fan","CA":"Canada","KY":"Islas Caim\u00e1n","CF":"Rep\u00fablica Centroafricana","TD":"Chad","CL":"Chile","CN":"China","CX":"Isla de Navidad","CC":"Islas Cocos","CO":"Colombia","KM":"Comoras","CD":"Congo, Rep\u00fablica Democr\u00e1tica del","CG":"Congo","CK":"Islas Cook","CR":"Costa Rica","CI":"Costa de Marfil","HR":"Croacia","CU":"Cuba","CW":"Curazao","CY":"Chipre","CZ":"Chequia","DK":"Dinamarca","DJ":"Djibouti","DM":"Dominica","DO":"Rep\u00fablica Dominicana","EC":"Ecuador","EG":"Egipto","SV":"El Salvador","GQ":"Guinea Ecuatorial","ER":"Eritrea","EE":"Estonia","SZ":"Esuatini","ET":"Etiop\u00eda","FK":"Islas Malvinas","FO":"Islas Faroe","FJ":"Fiji","FI":"Finlandia","FR":"Francia","GF":"Guayana Francesa","PF":"Polinesia Francesa","TF":"Tierras Australes y Ant\u00e1rticas Francesas","GA":"Gab\u00f3n","GM":"Gambia","GE":"Georgia","DE":"Alemania","GH":"Ghana","GI":"Gibraltar","GR":"Grecia","GL":"Groenlandia","GD":"Granada","GP":"Guadalupe","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GN":"Guinea","GW":"Guinea Bissau","GY":"Guayana","HT":"Hait\u00ed","HM":"Islas Heard y McDonald","VA":"Santa Sede","HN":"Honduras","HK":"Hong Kong","HU":"Hungr\u00eda","IS":"Islandia","IN":"India","ID":"Indonesia","IR":"Ir\u00e1n","IQ":"Iraq","IE":"Irlanda","IM":"Isla de Man","IL":"Israel","IT":"Italia","JM":"Jamaica","JP":"Jap\u00f3n","JE":"Jersey","JO":"Jord\u00e1n","KZ":"Kazajist\u00e1n","KE":"Kenia","KI":"Kiribati","KP":"Corea, Rep\u00fablica Popular Democr\u00e1tica de","KR":"Corea, Rep\u00fablica de","KW":"Kuwait","KG":"Kirguist\u00e1n","LA":"Rep\u00fablica Democr\u00e1tica Popular de Laos","LV":"Lituania","LB":"L\u00edbano","LS":"Lesoto","LR":"Liberia","LY":"LIbia","LI":"Liechtenstein","LT":"Lituania","LU":"Luxemburgo","MO":"Macau","MG":"Madagascar","MW":"Malawi","MY":"Malasia","MV":"Maldivas","ML":"Mali","MT":"Malta","MH":"Islas Marshall","MQ":"Martinica","MR":"Mauritania","MU":"Mauricio","YT":"Mayotte","MX":"M\u00e9xico","FM":"Micronesia","MD":"Moldavia","MC":"Monaco","MN":"Mongolia","ME":"Montenegro","MS":"Montserrat","MA":"Marruecos","MZ":"Mozambique","MM":"Myanmar","NA":"Namibia","NR":"Nauru","NP":"Nepal","NL":"Paises Bajos","NC":"Nueva Caledonia","NZ":"Nueva Zelanda","NI":"Nicaragua","NE":"N\u00edger","NG":"Nigeria","NU":"Niue","NF":"Isla Norfolk","MK":"Macedonia del Norte","MP":"Islas Marianas del Norte","NO":"Noruega","OM":"Om\u00e1n","PK":"Pakist\u00e1n","PW":"Palau","PS":"Palestina, Estado de","PA":"Panam\u00e1","PG":"Pap\u00faa Nueva Guinea","PY":"Paraguay","PE":"Per\u00fa","PH":"Filipinas","PN":"Pitcairn","PL":"Polonia","PT":"Portugal","PR":"Puerto Rico","QA":"Qatar","RE":"Reuni\u00f3n","RO":"Ruman\u00eda","RU":"Federaci\u00f3n Rusa","RW":"Ruanda","BL":"San Bartolom\u00e9","SH":"Santa Elena, Ascensi\u00f3n y Trist\u00e1n de Acu\u00f1a","KN":"San Crist\u00f3bal y Nieves","LC":"Santa Luc\u00eda","MF":"San Mart\u00edn","PM":"San Pedro y Miquel\u00f3n","VC":"San Vicente y las Granadinas","WS":"Samoa","SM":"San Marino","ST":"Santo Tom\u00e9 y Principe","SA":"Arabia Saudita","SN":"Senegal","RS":"Serbia","SC":"Seychelles","SL":"Sierra Leona","SG":"Singapur","SX":"Sint Maarten","SK":"Eslovaquia","SI":"Eslovenia","SB":"Islas Salom\u00f3n","SO":"Somalia","ZA":"Sud\u00e1frica","GS":"Ji\u017en\u00ed Georgie a Ji\u017en\u00ed Sandwichovy ostrovy","SS":"Sud\u00e1n del Sur","ES":"Espa\u00f1a","LK":"Sri Lanka","SD":"Sud\u00e1n","SR":"Surinam","SJ":"Svalbard y Jan Mayen","SE":"Suecia","CH":"Suiza","SY":"Rep\u00fablica \u00c1rabe de Siria","TW":"Taiwan","TJ":"Tayikist\u00e1n","TZ":"Tanzania (Rep\u00fablica Unida de)","TH":"Tailandia","TL":"Timor Oriental","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad y Tobago","TN":"T\u00fanez","TR":"Turqu\u00eda","TM":"Turkmenist\u00e1n","TC":"Islas Turcas y Caicos","TV":"Tuvalu","UG":"Uganda","UA":"Ucrania","AE":"Emiratos \u00c1rabes Unidos","GB":"Reino Unido","US":"Estados Unidos","UY":"Uruguay","UM":"Islas Ultramarinas Menores de Estados Unidos","UZ":"Uzbekist\u00e1n","VU":"Vanuatu","VE":"Venezuela","VN":"Vietnam","VG":"Islas V\u00edrgenes Brit\u00e1nicas","VI":"Islas V\u00edrgenes de los Estados Unidos","WF":"Wallis y Futuna","EH":"Sahara Occidental","YE":"Yemen","ZM":"Zambia","ZW":"Zimbaue"},"strings":{"newRowAdded":"Nueva fila a\u00f1adida.","rowRemoved":"Fila eliminada","formSaved":"Se ha guardado el formulario. El contenido incluye el enlace para volver y completar el formulario."}};
1993//# sourceURL=gform_gravityforms-js-extra
1994</script>
vendor: 1 bytes, line 1994
1994
1995<script id="gform_gravityforms-js" src="https://hausum.com/wp-content/plugins/gravityforms/js/gravityforms.min.js?ver=3.1.3"></script>
vendor: 1 bytes, line 1995
1995
1996<script id="gform_placeholder-js" src="https://hausum.com/wp-content/plugins/gravityforms/js/placeholders.jquery.min.js?ver=3.1.3"></script>
vendor: 1 bytes, line 1996
1996
1997<script id="gform_gravityforms_utils-js" defer='defer' src="https://hausum.com/wp-content/plugins/gravityforms/assets/js/dist/utils.min.js?ver=d7e103405223e60d2719f4c330fd11cf"></script>
vendor: 1 bytes, line 1997
1997
1998<script id="gform_gravityforms_theme_vendors-js" defer='defer' src="https://hausum.com/wp-content/plugins/gravityforms/assets/js/dist/vendor-theme.min.js?ver=0c901cb641ce64b99c20ea1a4d208cc9"></script>
vendor: 1 bytes, line 1998
1998
1999<script id="gform_gravityforms_theme-js-extra">
2000var gform_theme_config = {"common":{"form":{"honeypot":{"version_hash":"6283974bc66209b23a599fea367b0d77"},"ajax":{"ajaxurl":"https://hausum.com/wp-admin/admin-ajax.php","ajax_submission_nonce":"979956d6f7","i18n":{"step_announcement":"Paso %1$s de %2$s, %3$s","unknown_error":"Se ha producido un error desconocido al procesar tu solicitud. Por favor, int\u00e9ntalo de nuevo.","error_403":"La solicitud ha sido bloqueada (error 403) por motivos de seguridad desconocidos. Elimina cualquier texto que parezca c\u00f3digo (scripts o consultas a la base de datos) y vuelve a intentarlo."}}}},"hmr_dev":"","public_path":"https://hausum.com/wp-content/plugins/gravityforms/assets/js/dist/","config_nonce":"c292d60187"};
2001//# sourceURL=gform_gravityforms_theme-js-extra
2002</script>
vendor: 1 bytes, line 2002
2002
2003<script id="gform_gravityforms_theme-js" defer='defer' src="https://hausum.com/wp-content/plugins/gravityforms/assets/js/dist/scripts-theme.min.js?ver=373fcf115e257ba62fdd1a205717b981"></script>
vendor: 1 bytes, line 2003
2003
2004<script id="redsys_for_gravity-js" src="https://hausum.com/wp-content/plugins/redsys-for-gravity/assets/redsys-for-gravity.js?ver=3.1.3"></script>
vendor: 1 bytes, line 2004
2004
2005<script id="spf_intlTelInput-js" src="https://hausum.com/wp-content/plugins/smart-phone-field-for-gravity-forms/assets/js/intlTelInputWithUtils.min.js?ver=2.2.2"></script>
vendor: 1 bytes, line 2005
2005
2006<script id="spf_main-js" src="https://hausum.com/wp-content/plugins/smart-phone-field-for-gravity-forms/assets/js/spf_main.js?ver=1791109296"></script>
vendor: 1 bytes, line 2006
2006
2007<script id="gpep_vendor_cookie-js" defer src="https://hausum.com/wp-content/plugins/gp-easy-passthrough/js/vendor/js.cookie.js?ver=1.10.3"></script>
vendor: 1 bytes, line 2007
2007
2008<script id="wp-emoji-settings" type="application/json">
2009{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://hausum.com/wp-includes/js/wp-emoji-release.min.js?ver=7.1.2"}}
2010</script>
vendor: 1 bytes, line 2010
2010
2011<script type="module">
2012/*! This file is auto-generated */
2013var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
2014//# sourceURL=https://hausum.com/wp-includes/js/wp-emoji-loader.min.js
2015</script>
2015
2016    
2016<script>
2017    (function () {
2018        'use strict';
2019
2020        // Textos traducidos por WPML según el idioma de la página actual.
2021        const T = {"selecciona_vivienda":"-- Selecciona tu vivienda --","cual_es_tu_vivienda":"\u00bfCu\u00e1l es tu vivienda?","buscando_unidades":"Buscando unidades en el edificio...","no_unidades":"No se encontraron unidades. Selecciona la superficie manualmente.","error_catastro":"Error al consultar el Catastro. Selecciona la superficie manualmente.","dir_confirmada":"\u2713 Direcci\u00f3n del inmueble confirmada","datos_vivienda":"\u2713 Datos de la vivienda seleccionada","dir":"Direcci\u00f3n","provincia":"Provincia","cp":"C\u00f3digo postal","ref_catastral":"Ref. catastral","planta":"Planta","anio_construccion":"A\u00f1o construcci\u00f3n","superficie":"Superficie","puerta":"Puerta","bloque":"Bloque","escalera":"Escalera","segundo_sotano":"Segundo S\u00f3tano","sotano":"S\u00f3tano","planta_baja":"Planta Baja","entreplanta":"Entreplanta","atico":"\u00c1tico","planta_n":"Planta %s","sotano_n":"S\u00f3tano %s","planta_ordinal":"%s\u00aa Planta","m2_construidos":"m\u00b2 construidos","no_disponible":"\u2014","m2_1":"Menos de 100m2","m2_2":"De 100 a 199 m2","m2_3":"De 200 a 299 m2","m2_4":"De 300 a 399 m2","m2_5":"De 400 a 499 m2","m2_6":"De 500 a 699 m2","m2_7":"De 700 a 899 m2","m2_8":"M\u00e1s de 900 m2"};
2022        // Textos en castellano: para los VALORES que viajan con el formulario
2023        // (n8n/HubSpot). T solo se usa para lo que ve el usuario.
2024        const T_ES = {"selecciona_vivienda":"-- Selecciona tu vivienda --","cual_es_tu_vivienda":"\u00bfCu\u00e1l es tu vivienda?","buscando_unidades":"Buscando unidades en el edificio...","no_unidades":"No se encontraron unidades. Selecciona la superficie manualmente.","error_catastro":"Error al consultar el Catastro. Selecciona la superficie manualmente.","dir_confirmada":"\u2713 Direcci\u00f3n del inmueble confirmada","datos_vivienda":"\u2713 Datos de la vivienda seleccionada","dir":"Direcci\u00f3n","provincia":"Provincia","cp":"C\u00f3digo postal","ref_catastral":"Ref. catastral","planta":"Planta","anio_construccion":"A\u00f1o construcci\u00f3n","superficie":"Superficie","puerta":"Puerta","bloque":"Bloque","escalera":"Escalera","segundo_sotano":"Segundo S\u00f3tano","sotano":"S\u00f3tano","planta_baja":"Planta Baja","entreplanta":"Entreplanta","atico":"\u00c1tico","planta_n":"Planta %s","sotano_n":"S\u00f3tano %s","planta_ordinal":"%s\u00aa Planta","m2_construidos":"m\u00b2 construidos","no_disponible":"\u2014","m2_1":"Menos de 100m2","m2_2":"De 100 a 199 m2","m2_3":"De 200 a 299 m2","m2_4":"De 300 a 399 m2","m2_5":"De 400 a 499 m2","m2_6":"De 500 a 699 m2","m2_7":"De 700 a 899 m2","m2_8":"M\u00e1s de 900 m2"};
2025
2026        /* ══════════════════════════════════════════════════════════════════
2027           CONFIGURACIÓN — ajustar los IDs de campo de Gravity Forms aquí
2028           ══════════════════════════════════════════════════════════════════ */
2029        const FORM_ID = 28;
2030
2031        const FIELDS = {
2032            tipo:         114,   // ID del campo "Sobre el inmueble" (radio)
2033            direccion:    119,   // input de búsqueda de dirección
2034            cp:           53,
2035            refCatastral: 118,
2036            provincia:    54,
2037            superficie:   73,
2038            dirCompleta:  11,
2039            // Campo select de GF "¿Cuál es tu vivienda?" que el script rellena
2040            // con los pisos del Catastro. Requisitos en el editor de GF:
2041            // tipo Desplegable, SIN lógica condicional, NO obligatorio.
2042            // Si es null se usa el listado propio de radios como fallback.
2043            piso:         116,
2044        };
2045
2046        // Bloquear el botón "Continuar" hasta que el paso esté completo (como en la demo)
2047        const BLOQUEAR_AVANCE = true;
2048
2049        // ─── Endpoints n8n ───────────────────────────────────────────────
2050        const N8N_BASE         = 'https://n8n.hausum.com/webhook';
2051        const AUTOCOMPLETE_URL = N8N_BASE + '/hausum-autocomplete';
2052        const PORTAL_URL       = N8N_BASE + '/hausum-portal';
2053        const INMUEBLES_URL    = N8N_BASE + '/hausum-inmuebles';
2054
2055        // Mapeo etiqueta visible → clave lógica del tipo de inmueble
2056        const TIPOS = [
2057            { key: 'obra_nueva', match: ['obra nueva'] },
2058            { key: 'segunda',    match: ['segunda mano', 'segunda'] },
2059            { key: 'propiedad',  match: ['mi propiedad', 'propiedad'] },
2060            { key: 'demanda',    match: ['demanda'] },
2061            { key: 'legal',      match: ['dudas legales', 'legal'] },
2062        ];
2063
2064        /* ══════════════════════════════════════════════════════════════════
2065           ESTADO
2066           ══════════════════════════════════════════════════════════════════ */
2067        const state = {
2068            tipo:           '',     // '' | 'obra_nueva' | 'segunda' | 'propiedad' | 'demanda' | 'legal'
2069            modoCatastro:   false,  // true = el input de dirección usa autocompletado
2070            direccionBase:  '',     // dirección del portal elegido (base para construir la etiqueta)
2071            selectedStreet: null,
2072            provincia:      '',
2073            pisoRc:         null,   // RC del inmueble seleccionado
2074            inmuebles:      [],     // lista de pisos del portal resuelto (para el select de GF)
2075            manual:         false,  // true = Catastro sin datos: m2 y dirección a mano
2076        };
2077
2078        let debounce;
2079        let dropdown, pisosWrap, resumenWrap, tipoField, form;
2080        // Cancela la petición de autocompletado (o de portal) anterior si
2081        // sigue en vuelo cuando se dispara una nueva del MISMO tipo — evita
2082        // que una respuesta lenta y desactualizada pise a una más reciente.
2083        // Van en variables separadas: son independientes (autocompletado
2084        // busca calles, portal resuelve el número) y pueden solaparse en el
2085        // tiempo si el usuario elige una calle y sigue escribiendo el número;
2086        // compartir una sola variable haría que una cancelase a la otra.
2087        let peticionAutocomplete, peticionPortal;
2088
2089        /* ══════════════════════════════════════════════════════════════════
2090           HELPERS DOM / GRAVITY FORMS
2091           ══════════════════════════════════════════════════════════════════ */
2092        function norm(s) {
2093            return (s || '').toString().toLowerCase()
2094                .normalize('NFD').replace(/[\u0300-\u036f]/g, '').trim();
2095        }
2096
2097        function inputEl(key) {
2098            const id = FIELDS[key];
2099            return id ? document.getElementById('input_' + FORM_ID + '_' + id) : null;
2100        }
2101
2102        function setInput(el, value, readonly) {
2103            if (!el) return;
2104            el.value = value || '';
2105            if (readonly) {
2106                el.setAttribute('readonly', 'readonly');
2107                el.style.background = '#f3f4f6';
2108                el.style.color      = '#6b7280';
2109                el.style.cursor     = 'not-allowed';
2110            } else {
2111                el.removeAttribute('readonly');
2112                el.style.background = '';
2113                el.style.color      = '';
2114                el.style.cursor     = '';
2115            }
2116            el.dispatchEvent(new Event('change', { bubbles: true }));
2117        }
2118
2119        /* Campo 11 (dirección completa) es un campo de tipo DIRECCIÓN de GF:
2120           no existe #input_28_11 a secas, sino subcampos _1 (calle), _4
2121           (provincia) y _5 (CP). Es el que viaja a n8n, así que se pinta
2122           cada vez que se resuelve una dirección. Si algún día se 
2122cambia
2123           por un campo de texto simple, también funciona. */
2124        function setDirCompleta(label, cp, province) {
2125            const base   = 'input_' + FORM_ID + '_' + FIELDS.dirCompleta;
2126            const simple = document.getElementById(base);
2127            if (simple) { setInput(simple, label, true); sincronizarDuplicados(); return; }
2128            [['_1', label], ['_4', province], ['_5', cp]].forEach(function (par) {
2129                if (par[0] !== '_1' && !par[1]) return; // solo la calle puede vaciarse
2130                const el = document.getElementById(base + par[0]);
2131                if (!el) return;
2132                el.value = par[1] || '';
2133                // Solo lo escribe el script: bloqueado para el usuario (también en móvil)
2134                el.setAttribute('readonly', 'readonly');
2135                el.style.background = '#f3f4f6';
2136                el.style.color      = '#6b7280';
2137                el.dispatchEvent(new Event('change', { bubbles: true }));
2138            });
2139            // Si el plugin de transiciones clonó el DOM y hay más de un nodo
2140            // con este mismo ID, propaga el valor a TODOS ahora mismo — no
2141            // esperar al submit final, porque la siguiente escritura (p.ej.
2142            // al elegir el piso) podría aterrizar en un clon distinto al que
2143            // finalmente se envía, dejando 11_1 con un valor incompleto.
2144            sincronizarDuplicados();
2145        }
2146
2147        function setSelect(el, value) {
2148            if (!el || !value) return;
2149            Array.from(el.options).forEach(opt => {
2150                if (opt.value.trim() === value.trim() || opt.text.trim() === value.trim()) {
2151                    el.value = opt.value;
2152                    el.dispatchEvent(new Event('change', { bubbles: true }));
2153                }
2154            });
2155        }
2156
2157        function bloquearSelect(el, bloquear) {
2158            if (!el) return;
2159            el.style.background    = bloquear ? '#f3f4f6' : '';
2160            el.style.color         = bloquear ? '#6b7280' : '';
2161            el.style.pointerEvents = bloquear ? 'none' : '';
2162            el.style.cursor        = bloquear ? 'not-allowed' : '';
2163        }
2164
2165        function limpiarCampo(key) {
2166            const el = inputEl(key);
2167            if (!el) return;
2168            if (el.tagName === 'SELECT') { el.selectedIndex = 0; }
2169            else { el.value = ''; }
2170            el.dispatchEvent(new Event('change', { bubbles: true }));
2171        }
2172
2173        /* ══════════════════════════════════════════════════════════════════
2174           TIPO DE INMUEBLE
2175           ══════════════════════════════════════════════════════════════════ */
2176        function tipoKeyFromText(text) {
2177            const t = norm(text);
2178            if (!t) return '';
2179            for (const tipo of TIPOS) {
2180                if (tipo.match.some(m => t.indexOf(m) !== -1)) return tipo.key;
2181            }
2182            return '';
2183        }
2184
2185        // Localiza el campo del tipo de inmueble: por ID configurado o buscando
2186        // el campo que contenga una opción "Obra nueva".
2187        function findTipoField() {
2188            if (FIELDS.tipo) return document.getElementById('field_' + FORM_ID + '_' + FIELDS.tipo);
2189            const f = document.getElementById('gform_' + FORM_ID);
2190            if (!f) return null;
2191
2192            const campos = f.querySelectorAll('.gfield');
2193            for (const campo of campos) {
2194                const opciones = campo.querySelectorAll('input[type=radio], input[type=checkbox], option');
2195                for (const op of opciones) {
2196                    const texto = op.tagName === 'OPTION'
2197                        ? op.textContent
2198                        : (campo.querySelector('label[for="' + op.id + '"]') || {}).textContent;
2199                    if (tipoKeyFromText(texto) === 'obra_nueva') return campo;
2200                }
2201            }
2202            return null;
2203        }
2204
2205        function getTipoSeleccionado() {
2206            if (!tipoField) return '';
2207            const radio = tipoField.querySelector('input[type=radio]:checked, input[type=checkbox]:checked');
2208            if (radio) {
2209                const lbl = tipoField.querySelector('label[for="' + radio.id + '"]');
2210                return tipoKeyFromText(lbl ? lbl.textContent : radio.value) || tipoKeyFromText(radio.value);
2211            }
2212            const select = tipoField.querySelector('select');
2213            if (select && select.value) {
2214                const opt = select.options[select.selectedIndex];
2215                return tipoKeyFromText(opt ? opt.textContent : select.value);
2216            }
2217            return '';
2218        }
2219
2220        /* ══════════════════════════════════════════════════════════════════
2221           DATOS CATASTRALES
2222           ══════════════════════════════════════════════════════════════════ */
2223        /* Tramos de superficie. El VALOR del campo 73 es SIEMPRE el texto en
2224           castellano (lo fuerza hausum_valores_es_pro() en PHP): la lógica condicional de los campos de precio 74-91 y
2225           de los planos 33-45, y el precio de las tarjetas, comparan contra
2226           este valor. WPML solo traduce la ETIQUETA visible (T.m2_x).
2227           Mismo orden que las opciones del campo 73. */
2228        const M2_VALUES = [
2229            'Menos de 100m2', 'De 100 a 199 m2', 'De 200 a 299 m2', 'De 300 a 399 m2',
2230            'De 400 a 499 m2', 'De 500 a 699 m2', 'De 700 a 899 m2', 'Más de 900 m2',
2231        ];
2232        const M2_LABELS = [T.m2_1, T.m2_2, T.m2_3, T.m2_4, T.m2_5, T.m2_6, T.m2_7, T.m2_8];
2233
2234        // Devuelve el valor canónico (castellano) del tramo
2235        function m2ARango(m2) {
2236            const n = parseInt(m2);
2237            if (isNaN(n))  return '';
2238            if (n < 100)   return M2_VALUES[0];
2239            if (n < 200)   return M2_VALUES[1];
2240            if (n < 300)   return M2_VALUES[2];
2241            if (n < 400)   return M2_VALUES[3];
2242            if (n < 500)   return M2_VALUES[4];
2243            if (n < 700)   return M2_VALUES[5];
2244            if (n < 900)   return M2_VALUES[6];
2245            return M2_VALUES[7];
2246        }
2247
2248        function m2Label(valor) {
2249            const i = M2_VALUES.indexOf(valor);
2250            return i === -1 ? valor : (M2_LABELS[i] || valor);
2251        }
2252
2253        // Opciones reales del select 73 (sin placeholder vacío), en orden
2254        function opcionesSuperficie(el) {
2255            return Array.from(el.options).filter(o => o.value.trim() !== '');
2256        }
2257
2258        // Selecciona el tramo por valor canónico. Si el valor de las opciones
2259        // llegara traducido (campo sin "Mostrar valores"), cae a la posición.
2260        function setSuperficie(valor) {
2261            const el = inputEl('superficie');
2262            if (!el || !valor) return;
2263            const opts = opcionesSuperficie(el);
2264            let opt = opts.find(o => o.value.trim() === valor);
2265            if (!opt) opt = opts[M2_VALUES.indexOf(valor)];
2266            if (!opt) return;
2267            el.value = opt.value;
2268            el.dispatchEvent(new Event('change', { bubbles: true }));
2269        }
2270
2271        // Valor canónico del tramo elegido en el select 73 (por valor o posición)
2272        function superficieSeleccionada() {
2273            const el = inputEl('superficie');
2274            if (!el || !el.value) return '';
2275            const v = el.value.trim();
2276            if (M2_VALUES.indexOf(v) !== -1) return v;
2277            return M2_VALUES[opcionesSuperficie(el).indexOf(el.options[el.selectedIndex])] || '';
2278        }
2279
2280        function guardarM2Sesion(valor) {
2281            if (!valor) return;
2282            sessionStorage.setItem('hausum_m2',       valor);          // castellano (lógica/precio)
2283            sessionStorage.setItem('hausum_m2_label', m2Label(valor)); // traducido (solo mostrar)
2284        }
2285
2286        function plantaLabel(pt, D) {
2287            D = D || T;
2288            if (!pt || pt === '') return '';
2289            const upper = pt.toUpperCase();
2290            if (upper === 'SS')                   return D.segundo_sotano;
2291            if (upper === 'ST')                   return D.sotano;
2292            if (upper === 'BJ' || upper === 'PB') return D.planta_baja;
2293            if (upper === 'EN')                   return D.entreplanta;
2294            if (upper === 'PR')                   return D.planta_baja;
2295            if (upper === 'AT')                   return D.atico;
2296            const n = parseInt(pt);
2297            if (isNaN(n))  return D.planta_n.replace('%s', pt);
2298            if (n < -1)    return D.sotano_n.replace('%s', Math.abs(n));
2299            if (n === -1)  return D.sotano;
2300            if (n === 0)   return D.planta_baja;
2301            return D.planta_ordinal.replace('%s', n);
2302        }
2303
2304        // D = diccionario de textos (por defecto el del idioma de la página)
2305        function buildLabel(item, D) {
2306            D = D || T;
2307            const parts = [state.direccionBase];
2308            if (item.bq) parts.push(D.bloque + ' ' + item.bq);
2309            const pt = plantaLabel(item.pt, D);
2310            if (pt)      parts.push(pt);
2311            if (item.pu) parts.push(D.puerta + ' ' + item.pu);
2312            if (item.es) parts.push(D.escalera + ' ' + item.es);
2313            return parts.filter(Boolean).join(', ');
2314        }
2315
2316        // Misma dirección SIEMPRE en castellano: es la que viaja con el form
2317        function buildValor(item) {
2318            return buildLabel(item, T_ES);
2319        }
2320
2321        // hausum_dir = castellano (valor); hausum_dir_label = traducido (mostrar)
2322        function guardarDirSesion(valor, etiqueta) {
2323            sessionStorage.setItem('hausum_dir', valor || '');
2324            if (etiqueta && etiqueta !== valor) sessionStorage.setItem('hausum_dir_label', etiqueta);
2325            else sessionStorage.removeItem('hausum_dir_label');
2326        }
2327
2328        /* ══════════════════════════════════════════════════════════════════
2329           PERSISTENCIA ENTRE PÁGINAS DEL FORMULARIO
2330           ══════════════════════════════════════════════════════════════════ */
2331        const SS_KEYS = ['hausum_rc', 'hausum_cp', 'hausum_m2', 'hausum_m2_label', 'hausum_prov', 'hausum_dir', 'hausum_dir_label', 'hausum_tipo',
2332                         'hausum_item', 'hausum_base', 'hausum_inmuebles', 'hausum_manual'];
2333
2334        function guardarSesion(item, province) {
2335            sessionStorage.setItem('hausum_rc',   item.rc);
2336            sessionStorage.setItem('hausum_cp',   item.cp);
2337            guardarM2Sesion(m2ARango(item.sfc));
2338            sessionStorage.setItem('hausum_prov', province || '');
2339            guardarDirSesion(buildValor(item), buildLabel(item));
2340            sessionStorage.setItem('hausum_tipo', state.tipo);
2341            // Necesario para reconstruir la pantalla al volver atrás
2342            sessionStorage.setItem('hausum_item',      JSON.stringify(item));
2343            sessionStorage.setItem('hausum_base',      state.direccionBase || '');
2344            sessionStorage.setItem('hausum_inmuebles', JSON.stringify(state.inmuebles || []));
2345        }
2346
2347        function limpiarSesion() {
2348            SS_KEYS.forEach(k => sessionStorage.removeItem(k));
2349        }
2350
2351        // Páginas posteriores del formulario: rellena y bloquea los campos ya resueltos
2352        function aplicarSesion() {
2353            const rc   = sessionStorage.getItem('hausum_rc');
2354            const cp   = sessionStorage.getItem('hausum_cp');
2355            const m2   = sessionStorage.getItem('hausum_m2');
2356            const prov = sessionStorage.getItem('hausum_prov');
2357            const dir  = sessionStorage.getItem('hausum_dir');
2358
2359            if (rc)   setInput(inputEl('refCatastral'), rc,  true);
2360            if (cp)   setInput(inputEl('cp'),           cp,  true);
2361            if (dir)  setDirCompleta(dir, cp, prov);
2362            if (prov) { setSelect(inputEl('provincia'),  prov); bloquearSelect(inputEl('provincia'), true); }
2363            if (m2)   { setSuperficie(m2);                     bloquearSelect(inputEl('superficie'), true); }
2364        }
2365
2366        /* Campos 54 (provincia), 53 (CP) y 118 (ref. catastral) de la página
2367           de inspección: visibles SOLO si el paso de dirección no pudo
2368           autorrellenarlos (modo manual) o el tipo es obra nueva. Si el
2369           Catastro ya los resolvió, se ocultan — pero siguen sin lógica
2370           condicional de GF, así que su valor sigue viajando igualmente.
2371           En su lugar se muestra un banner de resumen (mismo estilo que el
2372           de la página de dirección) con los datos ya confirmados. */
2373        function renderResumenInspeccion() {
2374            const wrapProvincia = document.getElementById('field_' + FORM_ID + '_' + FIELDS.provincia);
2375            if (!wrapProvincia) return;
2376
2377            const dir  = sessionStorage.getItem('hausum_dir_label') || sessionStorage.getItem('hausum_dir') || '';
2378            const prov = sessionStorage.getItem('hausum_prov') || '';
2379            const cp   = sessionStorage.getItem('hausum_cp')   || '';
2380            const rc   = sessionStorage.getItem('hausum_rc')   || '';
2381
2382            let banner = document.getElementById('hausum-resumen-inspeccion');
2383            if (!banner) {
2384                banner = document.createElement('div');
2385                banner.id = 'hausum-resumen-inspeccion';
2386                banner.style.cssText = 'grid-column:1 / -1;width:100%;box-sizing:border-box;';
2387                wrapProvincia.parentNode.insertBefore(banner, wrapProvincia);
2388            }
2389
2390            banner.innerHTML =
2391                '<div style="background:#eff6ff;border:1.5px solid #dbeafe;border-radius:8px;padding:12px 14px;margin-bottom:16px;">' +
2392                  '<div style="font-size:13px;color:#003e73;font-weight:600;margin-bottom:8px;">' + T.dir_confirmada + '</div>' +
2393                  '<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;">' +
2394                    '<div style="grid-column:1 / -1;">' + celda(T.dir, dir || T.no_disponible) + '</div>' +
2395                    celda(T.provincia, prov || T.no_disponible) +
2396                    celda(T.cp, cp || T.no_disponible) +
2397                    celda(T.ref_catastral, rc || T.no_disponible) +
2398                  '</div>' +
2399                '</div>';
2400            banner.style.display = 'block';
2401        }
2402
2403        function aplicarVisibilidadInspeccion() {
2404            const tipo = sessionStorage.getItem('hausum_tipo') || '';
2405            const rc   = sessionStorage.getItem('hausum_rc')  || '';
2406            // Regla: con ref. catastral conocida se muestra el banner de
2407            // resumen; sin ella (obra nueva, modo manual o Catastro sin
2408            // resolver), los campos quedan visibles para rellenar a mano.
2409            const mostrar = tipo === 'obra_nueva' || !rc;
2410
2411            [FIELDS.provincia, FIELDS.cp, FIELDS.refCatastral].forEach(function (id) {
2412                const wrap = document.getElementById('field_' + FORM_ID + '_' + id);
2413                if (wrap) wrap.style.display = mostrar ? '' : 'none';
2414            });
2415
2416            if (mostrar) {
2417                const banner = document.getElementById('hausum-resumen-inspeccion');
2418                if (banner) banner.style.display = 'none';
2419            } else {
2420                renderResumenInspeccion();
2421            }
2422        }
2423
2424        // Al volver a la página de dirección: reconstruye el input, el select
2425        // de piso/vivienda y el recuadro de resumen con lo guardado en sesión.
2426        // Devuelve true si había algo que restaurar.
2427        function restaurarPaso(dirInput) {
2428            if (!state.tipo || state.tipo === 'obra_nueva') return false;
2429
2430            let item = null;
2431            try { item = JSON.parse(sessionStorage.getItem('hausum_item') || 'null'); } catch (e) {}
2432            if (!item) {
2433                // Flujo manual (Catastro sin dirección/unidades): restaurar la
2434                // dirección escrita y volver a mostrar el desplegable de m2.
2435                if (sessionStorage.getItem('hausum_manual') === '1') {
2436                    if (!dirInput.value.trim()) dirInput.value = sessionStorage.getItem('hausum_dir') || '';
2437                    activarManual(true);
2438                    return true;
2439                }
2440                return false;
2441            }
2442
2443            state.direccionBase = sessionStorage.getItem('hausum_base') || '';
2444            state.provincia     = sessionStorage.getItem('hausum_prov') || '';
2445            try { state.inmuebles = JSON.parse(sessionStorage.getItem('hausum_inmuebles') || '[]'); } catch (e) { state.inmuebles = []; }
2446
2447            if (!dirInput.value.trim() && state.direccionBase) dirInput.value = state.direccionBase;
2448            state.selectedStreet = { type: 'portal', address: state.direccionBase };
2449
2450            const sel = inputEl('piso');
2451            if (sel && state.inmuebles.length > 1) {
2452                sel.innerHTML = '';
2453                const ph = document.createElement('option');
2454                ph.value       = '';
2455                ph.textContent = T.selecciona_vivienda;
2456                sel.appendChild(ph);
2457                state.inmuebles.forEach(function (i) {
2458                    const opt = document.createElement('option');
2459                    const etiqueta = buildLabel(i);
2460                    opt.value       = buildValor(i);   // castellano (viaja con el form)
2461                    opt.setAttribute('data-rc', i.rc);
2462                    opt.textContent = etiqueta + (i.sfc ? ' · ' + i.sfc + ' m²' : '');
2463                    sel.appendChild(opt);
2464                });
2465                sel.value = buildValor(item);
2466                mostrarCampoPiso(true);
2467            }
2468
2469            rellenarCampos(item, state.provincia);
2470            return true;
2471        }
2472
2473        /* ══════════════════════════════════════════════════════════════════
2474           MODO DEL INPUT DE DIRECCIÓN
2475           La visibilidad de los campos la decide la lógica condicional de GF;
2476           aquí solo se decide si el input usa autocompletado o texto libre.
2477           ══════════════════════════════════════════════════════════════════ */
2478        function actualizarModo() {
2479            if (!tipoField) {
2480                // Sin campo de tipo localizable: autocompletado siempre activo
2481                // para no bloquear el flujo por un fallo de detección.
2482                state.modoCatastro = true;
2483                return;
2484            }
2485            state.modoCatastro = !!state.tipo && state.tipo !== 'obra_nueva';
2486            // Campo 73 (superficie): solo lo elige el usuario en obra nueva.
2487            // En el resto de flujos queda oculto y lo rellena el JS con el
2488            // tramo del Catastro (por eso NO lleva lógica condicional de GF:
2489            // GF lo desactivaría y su valor no viajaría con el formulario).
2490            mostrarCampoSuperficie(state.tipo === 'obra_nueva' || state.manual);
2491            if (state.tipo === 'obra_nueva') {
2492                bloquearSelect(inputEl('superficie'), false);
2493                cerrarDropdown();
2494                // Se oculta el bloque de pisos pero SIN vaciarlo: si el usuario
2495                // vuelve a un tipo con Catastro, recupera lo que tenía.
2496                mostrarCampoPiso(false);
2497                if (pisosWrap)   pisosWrap.style.display   = 'none';
2498                if (resumenWrap) resumenWrap.style.display = 'none';
2499            } else {
2500                const sel = inputEl('piso');
2501                if (sel && sel.options.length > 1) mostrarCampoPiso(true);
2502                if (resumenWrap && resumenWrap.innerHTML) resumenWrap.style.display = 'block';
2503            }
2504        }
2505
2506        function mostrarCampoSuperficie(visible) {
2507            const wrapEl = document.getElementById('field_' + FORM_ID + '_' + FIELDS.superficie);
2508            if (wrapEl) wrapEl.style.display = visible ? '' : 'none';
2509        }
2510
2511        /* Modo manual: el Catastro no encuentra la dirección/unidades o la
2512           superficie viene a 0. Se muestra el desplegable de m2 sea cual sea
2513           el tipo elegido en "Sobre el inmueble", y el paso se completa con
2514           dirección escrita + tramo elegido a mano. */
2515        function activarManual(on) {
2516            state.manual = !!on;
2517            if (on) sessionStorage.setItem('hausum_manual', '1');
2518            else    sessionStorage.removeItem('hausum_manual');
2519            mostrarCampoSuperficie(state.tipo === 'obra_nueva' || state.manual);
2520            if (state.manual) bloquearSelect(inputEl('superficie'), false);
2521            actualizarBoton();
2522        }
2523
2524        /* ─── Campo select de GF para el piso ────────────────────────────
2525           Este campo NO tiene lógica condicional de GF (por eso podemos
2526           mostrar/ocultar su contenedor desde JS sin el problema del
2527           disabled). El script regenera sus <option> con cada portal. */
2528        function pisoFieldWrap() {
2529            return FIELDS.piso ? document.getElementById('field_' + FORM_ID + '_' + FIELDS.piso) : null;
2530        }
2531
2532        function mostrarCampoPiso(visible) {
2533            const wrapEl = pisoFieldWrap();
2534            if (wrapEl) wrapEl.style.display = visible ? '' : 'none';
2535        }
2536
2537        function resetCampoPiso() {
2538            const sel = inputEl('piso');
2539            if (!sel) return;
2540            sel.innerHTML = '';
2541            mostrarCampoPiso(false);
2542        }
2543
2544        function ocultarPisos() {
2545            if (pisosWrap)   { pisosWrap.style.display = 'none';   pisosWrap.innerHTML = ''; }
2546            if (resumenWrap) { resumenWrap.style.display = 'none'; resumenWrap.innerHTML = ''; }
2547            resetCampoPiso();
2548            state.inmuebles = [];
2549        }
2550
2551        function cerrarDropdown() {
2552            if (dropdown) { dropdown.style.display = 'none'; dropdown.innerHTML = ''; }
2553        }
2554
2555        /* Si el plugin de transiciones clona páginas (swiper), hay IDs
2556           duplicados: getElementById rellena solo el primero y el input que
2557           realmente se envía puede quedar vacío. Antes de cada envío se copia
2558           el valor del elemento relleno a todos los que compartan ID. */
2559        function sincronizarDuplicados() {
2560            const ids = [FIELDS.direccion, FIELDS.cp, FIELDS.refCatastral, FIELDS.provincia, FIELDS.superficie]
2561                .map(function (id) { return 'input_' + FORM_ID + '_' + id; })
2562                .concat(['_1', '_2', '_3', '_4', '_5', '_6'].map(function (s) {
2563                    return 'input_' + FORM_ID + '_' + FIELDS.dirCompleta + s;
2564                }));
2565
2566            ids.forEach(function (id) {
2567                const els = document.querySelectorAll('[id="' + id + '"]');
2568                if (els.length < 2) return;
2569                const src = Array.prototype.find.call(els, function (e) { return (e.value || '').trim() !== ''; });
2570                if (!src) return;
2571                els.forEach(function (e) { if (e !== src) e.value = src.value; });
2572            });
2573        }
2574
2575        // Cambio de tipo de inmueble: NO borra la dirección ni el piso ya
2576        // elegidos (petición expresa) — solo cambia el modo del input y
2577        // guarda el tipo para las pantallas siguientes.
2578        function onTipoChange() {
2579            const nuevo = getTipoSeleccionado();
2580            if (nuevo === state.tipo) return;
2581
2582            state.tipo = nuevo;
2583            sessionStorage.setItem('hausum_tipo', nuevo);
2584
2585            cerrarDropdown();
2586            actualizarModo();
2587            actualizarBoton();
2588        }
2589
2590        /* ══════════════════════════════════════════════════════════════════
2591           VALIDACIÓN DEL PASO (equivalente a canStep1 de la demo)
2592           ══════════════════════════════════════════════════════════════════ */
2593        function pasoCompleto() {
2594            if (!state.tipo) return false;
2595            if (state.tipo === 'obra_nueva' || state.manual) {
2596                const dir = inputEl('direccion');
2597                const sup = inputEl('superficie');
2598                return !!(dir && dir.value.trim().length > 3) && !!(sup && sup.value);
2599            }
2600            return !!state.pisoRc;
2601        }
2602
2603        function botonAvance() {
2604            if (!tipoField) return null;
2605            const page = tipoField.closest('.gform_page') || form;
2606            if (!page) return null;
2607            return page.querySelector('.gform_next_button')
2608                || page.querySelector('#gform_submit_button_' + FORM_ID);
2609        }
2610
2611        function actualizarBoton() {
2612            if (!BLOQUEAR_AVANCE) return;
2613            const btn = botonAvance();
2614            if (!btn) return;
2615            const ok = pasoCompleto();
2616            btn.disabled           = !ok;
2617            btn.style.opacity      = ok ? '' : '.4';
2618            btn.style.cursor       = ok ? '' : 'not-allowed';
2619            btn.setAttribute('aria-disabled', ok ? 'false' : 'true');
2620        }
2621
2622        /* ══════════════════════════════════════════════════════════════════
2623           RELLENO DE CAMPOS AL ELEGIR VIVIENDA
2624           ══════════════════════════════════════════════════════════════════ */
2625        function rellenarCampos(item, province) {
2626            const label = buildLabel(item);   // traducido: solo para mostrar
2627            const valor = buildValor(item);   // castellano: viaja con el form
2628            state.pisoRc = item.rc;
2629
2630            guardarSesion(item, province);
2631
2632            // Los rellena el script: bloqueados para el usuario (también en móvil)
2633            setInput(inputEl('refCatastral'), item.rc, true);
2634            setInput(inputEl('cp'),           item.cp, true);
2635            setDirCompleta(valor, item.cp, province);
2636            if (province) {
2637                setSelect(inputEl('provincia'), province);
2638                bloquearSelect(inputEl('provincia'), true);
2639            }
2640
2641            // Superficie del Catastro: si viene a 0 o vacía, que el usuario
2642            // elija el tramo a mano (modo manual).
2643            const rango = m2ARango(item.sfc);
2644            if (rango && parseInt(item.sfc) > 0) {
2645                setSuperficie(rango);
2646                activarManual(false);
2647            } else {
2648                activarManual(true);
2649            }
2650
2651            renderResumen(item, label);
2652            actualizarBoton();
2653        }
2654
2655        // Panel "Datos de la vivienda seleccionada" de la demo
2656        function renderResumen(item, label) {
2657            if (!resumenWrap) return;
2658            const planta = plantaLabel(item.pt) || T.no_disponible;
2659            const puerta = item.pu ? T.puerta + ' ' + item.pu : '';
2660            const ano    = item.ant || item.ano || '';   // requiere devolver `ant` desde n8n (opcional)
2661
2662            resumenWrap.innerHTML =
2663                '<div style="background:#eff6ff;border:1.5px solid #dbeafe;border-radius:8px;padding:12px 14px;margin-top:12px;">' +
2664                  '<div style="font-size:13px;color:#003e73;font-weight:600;margin-bottom:8px;">' + T.datos_vivienda + '</div>' +
2665                  '<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;">' +
2666                    celda(T.dir, label) +
2667                    celda(T.planta, planta + (puerta ? ' · ' + puerta : '')) +
2668                    (ano ? celda(T.anio_construccion, ano) : '') +
2669                    celda(T.superficie, (item.sfc || T.no_disponible) + ' ' + T.m2_construidos) +
2670                  '</div>' +
2671                  '<div style="margin-top:8px;font-size:11px;color:#6b7280;overflow-wrap:anywhere;">' + T.ref_catastral + ': ' + item.rc + '</div>' +
2672                '</div>';
2673            resumenWrap.style.display = 'block';
2674        }
2675
2676        function celda(titulo, valor) {
2677            // white-space:nowrap en el título evita que "Código postal" se
2678            // parta; overflow-wrap en el valor permite cortar cadenas largas
2679            // sin espacios (ref. catastral) en vez de desbordar en móvil.
2680            return '<div style="min-width:0;">
2680' +
2681                   '<span style="font-size:11px;color:#6b7280;white-space:nowrap;">' + titulo + '</span><br>' +
2682                   '<strong style="font-size:13px;color:#111827;overflow-wrap:anywhere;">' + valor + '</strong></div>';
2683        }
2684
2685        /* ══════════════════════════════════════════════════════════════════
2686           CATASTRO: PORTAL → INMUEBLES
2687           ══════════════════════════════════════════════════════════════════ */
2688        function loadInmuebles(refCatastral, province) {
2689            state.provincia = province || '';
2690            state.pisoRc    = null;
2691            if (resumenWrap) { resumenWrap.innerHTML = ''; resumenWrap.style.display = 'none'; }
2692            actualizarBoton();
2693
2694            pisosWrap.innerHTML     = '<p style="font-size:13px;color:#6b7280;margin:0;">' + T.buscando_unidades + '</p>';
2695            pisosWrap.style.display = 'block';
2696
2697            fetch(INMUEBLES_URL + '?rc=' + encodeURIComponent(refCatastral))
2698                .then(r => r.json())
2699                .then(data => {
2700                    if (!data.inmuebles || !data.inmuebles.length) {
2701                        pisosWrap.innerHTML = '<p style="color:#dc2626;font-size:13px;margin:0;">' + T.no_unidades + '</p>';
2702                        activarManual(true);
2703                        return;
2704                    }
2705                    // Unifamiliar: una sola unidad, se autoselecciona
2706                    if (data.tipo === 'unifamiliar' && data.inmuebles.length === 1) {
2707                        pisosWrap.innerHTML     = '';
2708                        pisosWrap.style.display = 'none';
2709                        rellenarCampos(data.inmuebles[0], province);
2710                        return;
2711                    }
2712                    renderPisos(data.inmuebles, province);
2713                })
2714                .catch(() => {
2715                    pisosWrap.innerHTML = '<p style="color:#dc2626;font-size:13px;margin:0;">' + T.error_catastro + '</p>';
2716                    activarManual(true);
2717                });
2718        }
2719
2720        function renderPisos(inmuebles, province) {
2721            state.inmuebles = inmuebles;
2722
2723            // Vía principal: select nativo de GF (FIELDS.piso configurado)
2724            const sel = inputEl('piso');
2725            if (sel) {
2726                pisosWrap.innerHTML     = '';
2727                pisosWrap.style.display = 'none';
2728
2729                sel.innerHTML = '';
2730                const ph = document.createElement('option');
2731                ph.value       = '';
2732                ph.textContent = T.selecciona_vivienda;
2733                sel.appendChild(ph);
2734
2735                inmuebles.forEach(item => {
2736                    const opt = document.createElement('option');
2737                    const etiqueta = buildLabel(item);
2738                    // El VALOR que viaja con el formulario es la dirección
2739                    // completa EN CASTELLANO (la RC ya va en el campo 118); el
2740                    // texto visible va traducido. La RC se guarda en data-rc
2741                    // para localizar el inmueble al seleccionar.
2742                    opt.value       = buildValor(item);
2743                    opt.setAttribute('data-rc', item.rc);
2744                    opt.textContent = etiqueta + (item.sfc ? ' · ' + item.sfc + ' m²' : '');
2745                    sel.appendChild(opt);
2746                });
2747
2748                sel.value = '';
2749                mostrarCampoPiso(true);
2750                return;
2751            }
2752
2753            // Fallback: listado propio de radios (si no hay campo GF configurado)
2754            pisosWrap.innerHTML = '';
2755
2756            const titulo = document.createElement('p');
2757            titulo.style.cssText = 'font-size:14px;font-weight:600;color:#111827;margin:0 0 12px 0;';
2758            titulo.textContent   = T.cual_es_tu_vivienda;
2759            pisosWrap.appendChild(titulo);
2760
2761            inmuebles.forEach(item => {
2762                const label = buildLabel(item);
2763
2764                const opcion = document.createElement('label');
2765                opcion.style.cssText = 'display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border:1px solid #d1d5db;border-radius:6px;cursor:pointer;font-size:13px;color:#374151;background:#fff;margin-bottom:6px;user-select:none;';
2766                opcion.title = item.uso + ' · ' + item.sfc + ' m²';
2767
2768                const radio = document.createElement('input');
2769                radio.type  = 'radio';
2770                radio.name  = 'hausum_piso';
2771                radio.value = item.rc;
2772                radio.style.cssText = 'accent-color:#003e73;margin-top:2px;flex-shrink:0;';
2773
2774                const texto = document.createElement('span');
2775                texto.textContent = label;
2776
2777                radio.addEventListener('change', () => {
2778                    pisosWrap.querySelectorAll('label').forEach(l => {
2779                        l.style.borderColor = '#d1d5db';
2780                        l.style.background  = '#fff';
2781                        l.style.color       = '#374151';
2782                    });
2783                    opcion.style.borderColor = '#003e73';
2784                    opcion.style.background  = '#eff6ff';
2785                    opcion.style.color       = '#003e73';
2786
2787                    rellenarCampos(item, province);
2788                });
2789
2790                opcion.appendChild(radio);
2791                opcion.appendChild(texto);
2792                pisosWrap.appendChild(opcion);
2793            });
2794
2795            pisosWrap.style.display = 'block';
2796        }
2797
2798        /* ══════════════════════════════════════════════════════════════════
2799           INIT
2800           ══════════════════════════════════════════════════════════════════ */
2801        function init() {
2802            form      = document.getElementById('gform_' + FORM_ID);
2803            tipoField = findTipoField();
2804            const dirInput = inputEl('direccion');
2805
2806            if (!tipoField) {
2807                console.warn('[Hausum] No se encontró el campo "Sobre el inmueble". Fija su ID en FIELDS.tipo si la autodetección falla.');
2808            }
2809
2810            // Página del formulario sin el bloque de dirección: solo restaurar datos
2811            if (!dirInput) {
2812                console.warn('[Hausum] No se encontró #input_' + FORM_ID + '_' + FIELDS.direccion + '. Revisa el ID en FIELDS.direccion — sin él no se activa el autocompletado.');
2813                aplicarSesion();
2814                aplicarVisibilidadInspeccion();
2815                if (form && !form.dataset.hausumSync) {
2816                    form.dataset.hausumSync = '1';
2817                    form.addEventListener('submit', sincronizarDuplicados, true);
2818                }
2819                return;
2820            }
2821            if (dirInput.dataset.hausumInit) return;
2822            dirInput.dataset.hausumInit = '1';
2823
2824            const wrap = dirInput.parentNode;
2825            wrap.style.position = 'relative';
2826
2827            dropdown = document.createElement('ul');
2828            dropdown.id = 'hausum-dropdown';
2829            dropdown.style.cssText = 'position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #d1d5db;border-top:none;border-radius:0 0 6px 6px;box-shadow:0 4px 12px rgba(0,0,0,0.1);list-style:none;margin:0;padding:0;z-index:9999;display:none;max-height:280px;overflow-y:auto;';
2830            wrap.appendChild(dropdown);
2831
2832            pisosWrap = document.createElement('div');
2833            pisosWrap.id = 'hausum-pisos';
2834            pisosWrap.style.cssText = 'margin-top:16px;display:none;';
2835            wrap.parentNode.insertBefore(pisosWrap, wrap.nextSibling);
2836
2837            resumenWrap = document.createElement('div');
2838            resumenWrap.id = 'hausum-resumen';
2839            // grid-column a ancho completo: el contenedor de campos de GF es un
2840            // grid, y un <div> suelto insertado dentro hereda el ancho de una
2841            // sola columna si no se le indica lo contrario.
2842            resumenWrap.style.cssText = 'display:none;grid-column:1 / -1;width:100%;box-sizing:border-box;';
2843            // El resumen va DEBAJO del campo de superficie (m²). Si por lo que
2844            // sea no existe, cae al select de piso o al listado propio de radios.
2845            const superficieWrapEl = document.getElementById('field_' + FORM_ID + '_' + FIELDS.superficie);
2846            const pisoWrapEl = pisoFieldWrap();
2847            if (superficieWrapEl) {
2848                superficieWrapEl.parentNode.insertBefore(resumenWrap, superficieWrapEl.nextSibling);
2849            } else if (pisoWrapEl) {
2850                pisoWrapEl.parentNode.insertBefore(resumenWrap, pisoWrapEl.nextSibling);
2851            } else {
2852                pisosWrap.parentNode.insertBefore(resumenWrap, pisosWrap.nextSibling);
2853            }
2854
2855            // Sincronizar IDs duplicados en cada envío (avance de página o
2856            // envío final). Fase de captura: se ejecuta antes de que el
2857            // navegador serialice el formulario.
2858            if (form && !form.dataset.hausumSync) {
2859                form.dataset.hausumSync = '1';
2860                form.addEventListener('submit', sincronizarDuplicados, true);
2861            }
2862
2863            // Estado inicial del tipo (puede venir preseleccionado al volver atrás en el form)
2864            state.tipo = getTipoSeleccionado();
2865            actualizarModo();
2866
2867            if (tipoField) {
2868                tipoField.addEventListener('change', onTipoChange);
2869                tipoField.addEventListener('click',  () => setTimeout(onTipoChange, 0));
2870            }
2871
2872            // ─── Autocompletado de calle ─────────────────────────────────
2873            dirInput.addEventListener('input', function () {
2874                clearTimeout(debounce);
2875
2876                if (state.tipo === 'obra_nueva') {
2877                    // Dirección libre: se copia tal cual al campo que viaja con el
2878                    // formulario y se guarda en sesión para el recuadro de resumen
2879                    // de la página de precios.
2880                    setDirCompleta(this.value, '', '');
2881                    guardarDirSesion(this.value);
2882                    actualizarBoton();
2883                    return;
2884                }
2885                if (!state.modoCatastro) return;
2886
2887                ocultarPisos();
2888                state.selectedStreet = null;
2889                state.direccionBase  = '';
2890                state.pisoRc         = null;
2891                actualizarBoton();
2892
2893                // El campo 11 viaja a n8n: mantenerlo sincronizado con lo
2894                // escrito también cubre el modo manual (dirección no encontrada).
2895                setDirCompleta(this.value, '', '');
2896                guardarDirSesion(this.value);
2897
2898                const q = this.value.trim();
2899                if (q.length < 3) { cerrarDropdown(); return; }
2900
2901                debounce = setTimeout(() => {
2902                    if (peticionAutocomplete) peticionAutocomplete.abort();
2903                    const ctrl = new AbortController();
2904                    peticionAutocomplete = ctrl;
2905                    fetch(AUTOCOMPLETE_URL + '?q=' + encodeURIComponent(q), { signal: ctrl.signal })
2906                        .then(r => r.json())
2907                        .then(results => {
2908                            dropdown.innerHTML = '';
2909                            if (!results || !results.length) {
2910                                // Dirección no encontrada: superficie a mano
2911                                dropdown.style.display = 'none';
2912                                activarManual(true);
2913                                return;
2914                            }
2915                            activarManual(false);
2916                            results.forEach(r => {
2917                                const li = document.createElement('li');
2918                                li.style.cssText = 'padding:10px 14px;cursor:pointer;font-size:14px;border-bottom:1px solid #f3f4f6;color:#111827;background:#fff;';
2919                                li.textContent = r.address;
2920                                li.addEventListener('mouseenter', () => li.style.background = '#f9fafb');
2921                                li.addEventListener('mouseleave', () => li.style.background = '#fff');
2922                                li.addEventListener('mousedown', (e) => {
2923                                    e.preventDefault();
2924                                    dirInput.value         = r.address;
2925                                    dropdown.style.display = 'none';
2926                                    state.selectedStreet   = r;
2927                                    state.direccionBase    = r.address;
2928                                    if (r.type === 'portal' && r.refCatastral) {
2929                                        setInput(inputEl('cp'), r.postalCode, true);
2930                                        setSelect(inputEl('provincia'), r.province);
2931                                        bloquearSelect(inputEl('provincia'), true);
2932                                        setDirCompleta(r.address, r.postalCode, r.province);
2933                                        loadInmuebles(r.refCatastral, r.province);
2934                                    }
2935                                });
2936                                dropdown.appendChild(li);
2937                            });
2938                            dropdown.style.display = 'block';
2939                        })
2940                        .catch(err => {
2941                            if (err.name === 'AbortError') return;
2942                            dropdown.style.display = 'none';
2943                            activarManual(true);
2944                        });
2945                }, 350);
2946            });
2947
2948            // ─── Resolución de portal al teclear el número ───────────────
2949            dirInput.addEventListener('keyup', function () {
2950                if (!state.modoCatastro) return;
2951                if (!state.selectedStreet || state.selectedStreet.type === 'portal') return;
2952                const val = this.value.trim();
2953                if (!/\d+\s*$/.test(val)) return;
2954
2955                clearTimeout(debounce);
2956                debounce = setTimeout(() => {
2957                    if (peticionPortal) peticionPortal.abort();
2958                    const ctrl = new AbortController();
2959                    peticionPortal = ctrl;
2960                    fetch(PORTAL_URL + '?q=' + encodeURIComponent(val), { signal: ctrl.signal })
2961                        .then(r => r.json())
2962                        .then(portal => {
2963                            if (!portal || !portal.refCatastral) return;
2964                            state.direccionBase = portal.address || val;
2965                            setInput(inputEl('cp'), portal.postalCode, true);
2966                            setSelect(inputEl('provincia'), portal.province);
2967                            bloquearSelect(inputEl('provincia'), true);
2968                            setDirCompleta(state.direccionBase, portal.postalCode, portal.province);
2969                            ocultarPisos();
2970                            loadInmuebles(portal.refCatastral, portal.province);
2971                        })
2972                        .catch(() => {});
2973                }, 600);
2974            });
2975
2976            dirInput.addEventListener('blur', () => {
2977                setTimeout(() => { dropdown.style.display = 'none'; }, 150);
2978            });
2979
2980            document.addEventListener('click', e => {
2981                if (!wrap.contains(e.target)) dropdown.style.display = 'none';
2982            });
2983
2984            // Superficie: guarda el tramo elegido en sesión — lo usa el precio
2985            // dinámico de las tarjetas de precio (página siguiente). guardarSesion()
2986            // ya lo hace en el flujo Catastro, pero en obra nueva el usuario elige
2987            // este campo a mano y ese cambio no pasaba por guardarSesion().
2988            const supEl = inputEl('superficie');
2989            if (supEl) supEl.addEventListener('change', () => {
2990                guardarM2Sesion(superficieSeleccionada());
2991                actualizarBoton();
2992            });
2993
2994            // Select de GF "¿Cuál es tu vivienda?": oculto hasta resolver un
2995            // portal; al elegir opción se rellenan los campos técnicos.
2996            const pisoSel = inputEl('piso');
2997            if (pisoSel && !pisoSel.dataset.hausumPiso) {
2998                pisoSel.dataset.hausumPiso = '1';
2999                mostrarCampoPiso(false);
3000                pisoSel.addEventListener('change', function () {
3001                    const opt  = this.options[this.selectedIndex];
3002                    const rc   = opt ? opt.getAttribute('data-rc') : '';
3003                    const item = state.inmuebles.find(i => i.rc === rc);
3004                    if (item) {
3005                        rellenarCampos(item, state.provincia);
3006                    } else {
3007                        state.pisoRc = null;
3008                        if (resumenWrap) { resumenWrap.innerHTML = ''; resumenWrap.style.display = 'none'; }
3009                        actualizarBoton();
3010                    }
3011                });
3012            } else if (FIELDS.piso && !pisoSel) {
3013                console.warn('[Hausum] FIELDS.piso = ' + FIELDS.piso + ' pero no existe #input_' + FORM_ID + '_' + FIELDS.piso + '. Se usará el listado propio como fallback.');
3014            }
3015
3016            // Al volver a esta página: reconstruir dirección + piso + resumen.
3017            // Si no había nada que restaurar, aplicar la sesión como siempre.
3018            if (!restaurarPaso(dirInput)) aplicarSesion();
3019            // Por si todas las páginas del form conviven en el mismo DOM
3020            // (según el modo de paginación), esto no molesta aunque los
3021            // wrappers 54/53/118 no existan en el contexto de esta página.
3022            aplicarVisibilidadInspeccion();
3023            actualizarBoton();
3024        }
3025
3026        /* ══════════════════════════════════════════════════════════════════
3027           CICLO DE VIDA DE GRAVITY FORMS (multipágina + AJAX)
3028           ══════════════════════════════════════════════════════════════════ */
3029        // Carga inicial: no depende de jQuery, así que se ejecuta siempre,
3030        // sin importar en qué orden cargue el resto de scripts de la página.
3031        if (inputEl('direccion') || document.getElementById('gform_' + FORM_ID)) init();
3032
3033        // Repinta tras cada paginación AJAX de Gravity Forms (requiere jQuery).
3034        // Se espera activamente a que jQuery exista en vez de asumir un orden
3035        // de carga concreto: algunos plugins de caché/optimización (defer/async)
3036        // rompen el orden de ejecución aunque el hook de PHP esté bien priorizado.
3037        (function esperarJQuery(intentos) {
3038            intentos = intentos || 0;
3039            if (window.jQuery) {
3040                // gform_page_loaded además de gform_post_render: algunas
3041                // transiciones de página (GP Page Transitions, sobre todo en
3042                // móvil) solo disparan la primera — sin ella no se reaplicaría
3043                // el bloqueo de los campos autorrellenados.
3044                jQuery(document).on('gform_post_render gform_page_loaded', function (event, formId) {
3045                    if (formId != FORM_ID) return;
3046
3047                    ['#hausum-dropdown', '#hausum-pisos', '#hausum-resumen', '#hausum-resumen-inspeccion'].forEach(sel => {
3048                        const el = document.querySelector(sel);
3049                        if (el) el.remove();
3050                    });
3051
3052                    const campo = inputEl('direccion');
3053                    if (campo) delete campo.dataset.hausumInit;
3054
3055                    init();
3056                });
3057                return;
3058            }
3059            if (intentos > 100) {
3060                console.warn('[Hausum] jQuery nunca llegó a cargar (10s). La re-inicialización tras cambiar de página del formulario no funcionará.');
3061                return;
3062            }
3063            setTimeout(() => esperarJQuery(intentos + 1), 100);
3064        })();
3065
3066    })();
3067    </script>
3067
3068    <div id="lightbox_form" class="white-popup mfp-hide"><div style="z-index: 104600; position: relative;"></div></div>
3068<script>
3069				jQuery(document).ready(function() {
3070					if (typeof jQuery.fn.magnificPopup !== "undefined") {
3071						jQuery(".lightbox_form_btn").magnificPopup({
3072							items: {
3073								src: "#lightbox_form",
3074								type: "inline"
3075							},
3076							type:"inline",
3077						}, 0);
3078					}
3079				});
3080			</script>
3080	<!-- Global Floating WhatsApp Button -->
3081	<a href="https://wa.me/34930900232?text=%C2%A1Hola%20Hausum!" class="hsm-floating-wa" target="_blank" rel="noopener noreferrer" aria-label="Chat WhatsApp Hausum">
3082		<span class="wa-tooltip">¿Dudas? Chat WhatsApp</span>
3083		<div class="wa-icon">
3084			<svg viewBox="0 0 24 24" width="30" height="30" fill="#ffffff"><path d="M12 2C6.48 2 2 6.48 2 12c0 1.85.5 3.58 1.38 5.07L2 22l5.06-1.33A9.94 9.94 0 0 0 12 22c5.52 0 10-4.48 10-10S17.52 2 12 2zm0 18c-1.6 0-3.1-.43-4.4-1.18l-.32-.19-3.28.86.88-3.2-.21-.33A7.96 7.96 0 0 1 4 12c0-4.41 3.59-8 8-8s8 3.59 8 8-3.59 8-8 8zm4.4-5.88c-.24-.12-1.43-.7-1.65-.78-.22-.08-.38-.12-.54.12-.16.24-.62.78-.76.94-.14.16-.28.18-.52.06-.24-.12-1.01-.37-1.92-1.18-.71-.63-1.19-1.41-1.33-1.65-.14-.24-.01-.37.11-.49.11-.11.24-.28.36-.42.12-.14.16-.24.24-.4.08-.16.04-.3-.02-.42-.06-.12-.54-1.3-.74-1.78-.19-.46-.39-.4-.54-.4h-.46c-.16 0-.42.06-.64.3-.22.24-.84.82-.84 2s.86 2.32.98 2.48c.12.16 1.7 2.6 4.13 3.64.58.25 1.03.4 1.38.51.58.18 1.11.16 1.53.1.47-.07 1.43-.58 1.63-1.14.2-.56.2-1.04.14-1.14-.06-.1-.22-.16-.46-.28z"/></svg>
3085		</div>
3086	</a>
3087
3088	<style id="hsm-floating-wa-styles">
3089	.hsm-floating-wa {
3090		position: fixed;
3091		bottom: 24px;
3092		right: 24px;
3093		z-index: 99995;
3094		display: flex;
3095		align-items: center;
3096		gap: 10px;
3097		text-decoration: none !important;
3098		transition: transform 0.22s cubic-bezier(0.4, 0, 0.2, 1);
3099	}
3100	.hsm-floating-wa:hover {
3101		transform: translateY(-4px) scale(1.05);
3102	}
3103	.hsm-floating-wa .wa-icon {
3104		width: 58px;
3105		height: 58px;
3106		border-radius: 50%;
3107		background: linear-gradient(135deg, #25D366 0%, #128C7E 100%);
3108		display: flex;
3109		align-items: center;
3110		justify-content: center;
3111		box-shadow: 0 10px 28px rgba(37, 211, 102, 0.45), 0 2px 8px rgba(10, 30, 60, 0.3);
3112		position: relative;
3113	}
3114	.hsm-floating-wa .wa-icon::before {
3115		content: '';
3116		position: absolute;
3117		inset: -2px;
3118		border-radius: 50%;
3119		background: #25D366;
3120		opacity: 0.5;
3121		animation: hsm-wa-pulse 2.4s infinite;
3122		z-index: -1;
3123	}
3124	@keyframes hsm-wa-pulse {
3125		0% { transform: scale(1); opacity: 0.5; }
3126		70% { transform: scale(1.48); opacity: 0; }
3127		100% { transform: scale(1.48); opacity: 0; }
3128	}
3129	.hsm-floating-wa .wa-tooltip {
3130		background: #0A1E3C;
3131		color: #ffffff;
3132		font-family: 'Aptos', 'Outfit', -apple-system, sans-serif;
3133		font-weight: 700;
3134		font-size: 13.5px;
3135		padding: 9px 16px;
3136		border-radius: 14px;
3137		box-shadow: 0 10px 24px rgba(10, 30, 60, 0.35);
3138		border: 1px solid rgba(46, 155, 255, 0.35);
3139		white-space: nowrap;
3140		opacity: 0;
3141		transform: translateX(12px);
3142		pointer-events: none;
3143		transition: opacity 0.22s ease, transform 0.22s ease;
3144	}
3145	.hsm-floating-wa:hover .wa-tooltip {
3146		opacity: 1;
3147		transform: translateX(0);
3148	}
3149	@media (max-width: 680px) {
3150		.hsm-floating-wa {
3151			display: none !important;
3152		}
3153	}
3154	</style>
3155		
3155<script id="hsm-clean-code-leaks">
3156	(function() {
3157		function cleanCodeLeaks() {
3158			var walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null, false);
3159			var node;
3160			while (node = walker.nextNode()) {
3161				if (node.nodeValue && node.nodeValue.indexOf("fbq('track', 'Lead')") !== -1) {
3162					node.nodeValue = node.nodeValue.replace(/fbq\('track',\s*'Lead'\);?/g, '');
3163				}
3164			}
3165		}
3166		if (document.readyState === 'loading') {
3167			document.addEventListener('DOMContentLoaded', cleanCodeLeaks);
3168		} else {
3169			cleanCodeLeaks();
3170		}
3171		document.addEventListener('gform_page_loaded', cleanCodeLeaks);
3172		document.addEventListener('gform_post_render', cleanCodeLeaks);
3173		if (window.MutationObserver) {
3174			var observer = new MutationObserver(cleanCodeLeaks);
3175			observer.observe(document.body, { childList: true, subtree: true, characterData: true });
3176		}
3177	})();
3178	</script>
3178
3179	</body>
3180</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.