{"id":41952,"date":"2022-06-16T15:14:22","date_gmt":"2022-06-16T15:14:22","guid":{"rendered":"https:\/\/spaineasy.com\/property-search\/"},"modified":"2026-10-16T11:09:33","modified_gmt":"2026-10-16T11:09:33","slug":"ricerca-immobiliare","status":"publish","type":"page","link":"https:\/\/spaineasy.com\/it\/ricerca-immobiliare\/","title":{"rendered":"Ricerca immobiliare"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:0px;--awb-padding-right:0px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-padding-top-small:0.5em;--awb-padding-right-small:0px;--awb-padding-bottom-small:0px;--awb-padding-left-small:0px;--awb-margin-top:0px;--awb-margin-bottom:0px;--awb-margin-top-small:0px;--awb-margin-bottom-small:0px;--awb-min-height:1200px;--awb-flex-wrap:wrap;\" id=\"sablewarm\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1216.8px;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:0%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:0%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"ole-form-outer\" style=\"min-height:100vh; width:100%; background:#fdfaf1; display:flex; align-items:flex-start; justify-content:center;\">\n  <div id=\"ole-form-root\"><\/div>\n<\/div>\n\n<script>\n(function(){\n\n  \"use strict\";\n\n  \/* =========================================================\n     1) HUBSPOT + OUTPUT CONFIG  (SpainEasy brand)\n     ========================================================= *\/\n  var HS = {\n    portalId: \"26258389\",\n    formGuid: \"14d59464-0052-402a-940c-17bd74709ff3\", \/\/ SpainEasy form \"Your property search (Optimized)\"\n    googleMapsKey: \"AIzaSyC-DNEU1BU8KyQPlRVDRGJEb1cwtZ3W6nk\", \/\/ restricted to spaineasy.com \u2014 enables Spanish city autocomplete (falls back to pills)\n    sendToHubSpot: true,\n    redirectUrl: \"\/it\/grazie\/\", \/\/ success -> thank-you page (passes firstname & location params)\n    subscriptionTypeId: 152859509, \/\/ \"Marketing Information\" (account-level)\n    fields: {\n      timing:     \"o_en_tesvous_dans_votre_projet_\",\n      worries:    \"questce_qui_vous_inquite_le_plus_\",\n      budget:     \"budget_pour_l_achat\",\n      location:   \"ville_ou_region_recherchee\",\n      property:   \"quelles_caractristiques_recherchezvous_dans_le_bien_immobilier_\",\n      motivation: \"quelle_est_votre_principale_motivation_pour_acheter_en_espagne_\",\n      service:    \"seriezvous_intress_par_un_service_qui_gre_les_dmarches_sur_place_pour_vous_\",\n      cb_days:    \"jour_rappel_souhaite\",\n      cb_slot:    \"creneau_rappel\",\n      cb_date:    \"date_rappel_souhaitee\",\n      cb_clienttime: \"heure_chez_le_client\", \/\/ single-line text \u2014 local time at the client + their time zone\n      cb_rdv:     \"a_voulu_prendre_rendez_vous\",\n      firstname:  \"firstname\", lastname:\"lastname\", email:\"email\", phone:\"phone\"\n    }\n  };\n\n  var SHOW_HERO = true;\n  var RISKS_FORMAT = \"quiz\";\n  var CLOSE_URL = \"https:\/\/spaineasy.com\/\";\n  var RDV_URL = \"\/it\/fissi-un-appuntamento\/\"; \/\/ booking page, used if \"Preferisco prenotare una call\"\n  var PRIVACY_URL = \"https:\/\/spaineasy.com\/it\/termini-di-utilizzo-e-informativa-sulla-privacy\/\";\n  var SCROLL_TOTOP = true;\n  var SCROLL_OFFSET = 24;\n\n  \/* =========================================================\n     2) STEPS  (American English)\n     ========================================================= *\/\n  var STEPS = [\n    { id:\"timing\", type:\"single\", required:true, ebIco:\"award\", heroIco:\"calendar-clock\",\n      heroCap:\"Ogni progetto ha il suo ritmo: noi ci adattiamo al Suo.\",\n      eyebrow:\"Competenza dalla parte di chi acquista\",\n      q:\"Quando desidera iniziare la ricerca?\",\n      options:[\n        {label:\"Il prima possibile\", ic:\"zap\"},\n        {label:\"Entro i prossimi 6 mesi\", ic:\"calendar-days\"},\n        {label:\"Entro 12 mesi\", ic:\"sprout\"},\n        {label:\"Dipende da qualcosa in corso (vendita di una casa, risparmi\u2026)\", ic:\"git-branch\"},\n        {label:\"Per ora sto solo dando un\u2019occhiata\", ic:\"lightbulb\"}\n      ],\n      react:{\n        \"Il prima possibile\":{emoji:\"\\u2600\\uFE0F\",msg:\"Ol\u00e9! Possiamo partire subito.\"},\n        \"Entro i prossimi 6 mesi\":{emoji:\"\\uD83D\\uDDD3\\uFE0F\",msg:\"Il periodo ideale per prepararsi con calma.\"},\n        \"Entro 12 mesi\":{emoji:\"\\uD83C\\uDF31\",msg:\"Tutto il tempo per trovare la casa giusta.\"},\n        \"Dipende da qualcosa in corso (vendita di una casa, risparmi\u2026)\":{emoji:\"\\uD83E\\uDD1D\",msg:\"Ci adattiamo al Suo ritmo, senza alcuna pressione.\"},\n        \"Per ora sto solo dando un\u2019occhiata\":{emoji:\"\\uD83D\\uDCA1\",msg:\"Si guardi intorno con calma: noi ci siamo ogni volta che vorr\u00e0.\"}\n      }},\n\n    { id:\"worries\", type:\"multi\", required:true, ebIco:\"shield-check\", heroIco:\"shield-check\",\n      heroCap:\"Le Sue preoccupazioni sono esattamente ci\u00f2 di cui ci facciamo carico.\",\n      eyebrow:\"Un consulente d\u2019acquisto che lavora solo per Lei\",\n      q:\"Che cosa La preoccupa di pi\u00f9?\", sub:\"Selezioni tutte le risposte che desidera\",\n      options:[\n        {label:\"Aspetti legali e burocrazia (NIE, notaio)\", ic:\"file-text\"},\n        {label:\"La barriera linguistica (spagnolo)\", ic:\"languages\"},\n        {label:\"Se l\u2019immobile \u00e8 in buone condizioni\", ic:\"search-check\"},\n        {label:\"La distanza (andare e venire dall\u2019estero)\", ic:\"plane\"},\n        {label:\"La procedura di rogito spagnola (meno verifiche che altrove)\", ic:\"scale\"},\n        {label:\"Trasferimenti di denaro, valuta e tasse\", ic:\"banknote\"},\n        {label:\"Poco tempo a disposizione\", ic:\"clock\"}\n      ],\n      optMsg:{\n        \"Aspetti legali e burocrazia (NIE, notaio)\":{emoji:\"\\uD83D\\uDDC2\\uFE0F\",msg:\"La burocrazia \u2014 NIE, notaio, banca \u2014 ce ne occupiamo noi dall\u2019inizio alla fine, cos\u00ec Lei non deve farlo.\"},\n        \"La barriera linguistica (spagnolo)\":{emoji:\"\\uD83D\\uDDE3\\uFE0F\",msg:\"Barriera linguistica? Traduciamo e negoziamo in spagnolo per Lei e Le spieghiamo tutto in modo chiaro, in inglese.\"},\n        \"Se l\u2019immobile \u00e8 in buone condizioni\":{emoji:\"\\uD83D\\uDD0D\",msg:\"Ispezioniamo e verifichiamo tutto sul posto, prima che Lei si impegni.\"},\n        \"La distanza (andare e venire dall\u2019estero)\":{emoji:\"\\u2708\\uFE0F\",msg:\"Siamo i Suoi occhi e le Sue orecchie in Spagna: molti meno viaggi per Lei.\"},\n        \"La procedura di rogito spagnola (meno verifiche che altrove)\":{emoji:\"\\u2696\\uFE0F\",msg:\"Svolgiamo una nostra due diligence legale in aggiunta a quella del notaio: nulla ci sfugge.\"},\n        \"Trasferimenti di denaro, valuta e tasse\":{emoji:\"\\uD83D\\uDCB1\",msg:\"Le mettiamo in contatto con esperti di cambi e di fiscalit\u00e0 che conoscono a fondo i trasferimenti internazionali verso la Spagna.\"},\n        \"Poco tempo a disposizione\":{emoji:\"\\u23F3\",msg:\"Noi facciamo il lavoro pi\u00f9 impegnativo; l\u2019ultima parola resta a Lei.\"}\n      },\n      multiMsg:{\n        \"2\":{emoji:\"\\uD83D\\uDEE1\\uFE0F\",msg:\"Due preoccupazioni concrete, ed \u00e8 proprio ci\u00f2 che mettiamo in sicurezza per Lei, dall\u2019inizio alla fine.\"},\n        \"3\":{emoji:\"\\uD83D\\uDEE1\\uFE0F\",msg:\"Tre preoccupazioni legittime. La buona notizia: occuparcene \u00e8 il nostro mestiere.\"},\n        \"4\":{emoji:\"\\uD83D\\uDCAA\",msg:\"Avere molte domande \u00e8 normale quando si compra all\u2019estero. \u00c8 esattamente per questo che esiste SpainEasy.\"},\n        \"5\":{emoji:\"\\uD83D\\uDCAA\",msg:\"Individua quasi ogni insidia, e fa bene. Le disinnescheremo una per una.\"},\n        \"6\":{emoji:\"\\uD83E\\uDD1D\",msg:\"Ha il quadro completo. Di ciascuno di questi punti ci occupiamo noi.\"},\n        \"7\":{emoji:\"\\uD83E\\uDD1D\",msg:\"Ha il quadro completo. Di ciascuno di questi punti ci occupiamo noi.\"}\n      },\n      reactAny:{emoji:\"\\uD83D\\uDEE1\\uFE0F\",msg:\"Ognuno di questi punti \u00e8 compito nostro: ce ne occupiamo noi.\"}},\n\n    { id:\"location\", type:\"location\", required:true, ebIco:\"map\", heroIco:\"map-pin\",\n      heroCap:\"Tutta la Spagna, da costa a costa: cerchiamo ovunque per Lei.\",\n      eyebrow:\"Copriamo tutta la Spagna\",\n      q:\"In quale zona della Spagna sta cercando?\", placeholder:\"ad es. Marbella\",\n      cities:[\"Alicante\",\"Barcellona\",\"Benidorm\",\"Cadice\",\"Estepona\",\"Fuengirola\",\"Girona\",\"Granada\",\"Ibiza\",\"Madrid\",\"Malaga\",\"Marbella\",\"Mijas\",\"Nerja\",\"Palma di Maiorca\",\"Siviglia\",\"Sitges\",\"Tarragona\",\"Torrevieja\",\"Valencia\"],\n      regions:[\"Costa del Sol\",\"Costa Blanca\",\"Costa Brava\",\"Costa Dorada\",\"Andalusia\",\"Isole Baleari\",\"Isole Canarie\",\"Catalogna\"]},\n\n    { id:\"budget\", type:\"budget\", required:true, ebIco:\"handshake\", heroIco:\"wallet\",\n      heroCap:\"Negoziamo sempre nel Suo interesse: spesso con un vantaggio ben superiore alla nostra parcella.\",\n      eyebrow:\"Negoziamo sempre nel Suo interesse\",\n      q:\"Qual \u00e8 il Suo budget?\", placeholder:\"ad es. 350.000 \u20ac\", min:100000,\n      pills:[150000,200000,250000,300000,400000,500000,750000,1000000,1500000,2000000,3000000],\n      reactRanges:[\n        {max:149999,  emoji:\"\\uD83E\\uDDED\",msg:\"Sotto i 150.000 \u20ac \u00e8 pi\u00f9 difficile, ma troviamo comunque vere occasioni nelle zone giuste.\"},\n        {max:299999,  emoji:\"\\uD83D\\uDD0D\",msg:\"In questa fascia ci sono vere opportunit\u00e0 da scoprire.\"},\n        {max:499999,  emoji:\"\\u2600\\uFE0F\",msg:\"Una fascia ideale per una casa sotto il sole spagnolo.\"},\n        {max:999999,  emoji:\"\\uD83C\\uDFE1\",msg:\"Abbastanza per puntare a qualcosa di davvero speciale.\"},\n        {max:999999999,emoji:\"\\u2728\",msg:\"Ol\u00e9! Il segmento alto del mercato spagnolo \u00e8 alla Sua portata.\"}\n      ]},\n\n    { id:\"property\", type:\"single\", required:true, ebIco:\"key-round\", heroIco:\"home\",\n      heroCap:\"Cerchiamo la casa adatta a Lei, non una che abbiamo per caso in portafoglio.\",\n      eyebrow:\"Diversi da un\u2019agenzia che vende i propri immobili\",\n      q:\"Che tipo di immobile cerca?\",\n      options:[\n        {label:\"Appartamento\", ic:\"building-2\"},\n        {label:\"Casa\", ic:\"home\"},\n        {label:\"Casa con giardino o piscina\", ic:\"trees\"},\n        {label:\"Immobile di lusso\", ic:\"gem\"},\n        {label:\"Altro\", ic:\"search\"}\n      ],\n      react:{\n        \"Appartamento\":{emoji:\"\\uD83C\\uDF07\",msg:\"Pratico, luminoso e facile da gestire: un classico spagnolo.\"},\n        \"Casa\":{emoji:\"\\uD83C\\uDFE0\",msg:\"Spazio e sole tutti per Lei.\"},\n        \"Casa con giardino o piscina\":{emoji:\"\\uD83C\\uDF3F\",msg:\"Terrazza, giardino, piscina: il sogno.\"},\n        \"Immobile di lusso\":{emoji:\"\\u2728\",msg:\"Il segmento alto: sappiamo esattamente dove cercare.\"},\n        \"Altro\":{emoji:\"\\uD83D\\uDD0E\",msg:\"Ci racconti tutto: troveremo la soluzione giusta.\"}\n      }},\n\n    { id:\"motivation\", type:\"single\", required:true, ebIco:\"compass\", heroIco:\"compass\",\n      heroCap:\"Casa, rifugio, pensione o ritorno: il Suo obiettivo guida la nostra ricerca.\",\n      eyebrow:\"Assistenza in tutta la Spagna\",\n      q:\"Qual \u00e8 il motivo principale del Suo acquisto in Spagna?\",\n      options:[\n        {label:\"Trasferimento \/ abitazione principale\", ic:\"sun\"},\n        {label:\"Vacanza \/ seconda casa\", ic:\"umbrella\"},\n        {label:\"Pensione\", ic:\"palmtree\"},\n        {label:\"Investimento locativo\", ic:\"trending-up\"},\n        {label:\"Altro\", ic:\"handshake\"}\n      ],\n      react:{\n        \"Trasferimento \/ abitazione principale\":{emoji:\"\\u2600\\uFE0F\",msg:\"Inizia una vita tutta nuova all\u2019insegna del sole.\"},\n        \"Vacanza \/ seconda casa\":{emoji:\"\\uD83C\\uDFD6\\uFE0F\",msg:\"Il Suo angolo di Mediterraneo in cui rifugiarsi.\"},\n        \"Pensione\":{emoji:\"\\uD83C\\uDF34\",msg:\"Sole, mattine pi\u00f9 lente, costo della vita pi\u00f9 basso: ben meritato.\"},\n        \"Investimento locativo\":{emoji:\"\\uD83D\\uDCC8\",msg:\"Il mercato degli affitti in Spagna \u00e8 solido e in crescita.\"},\n        \"Altro\":{emoji:\"\\uD83E\\uDD1D\",msg:\"Qualunque sia il Suo obiettivo, adatteremo la ricerca di conseguenza.\"}\n      }},\n\n    { id:\"service\", type:\"single\", variant:\"yesno\", required:true, ebIco:\"headset\", heroIco:\"concierge-bell\",\n      heroCap:\"Possiamo occuparci di tutto sul posto per Lei: visite, pratiche, trattativa.\",\n      eyebrow:\"Cosa dicono di noi gli acquirenti\",\n      q:\"Desidera che ci occupiamo noi dell\u2019intero processo sul posto?\",\n      options:[\n        {label:\"S\u00ec, mi farebbe risparmiare moltissimo tempo\", tone:\"pos\", ic:\"thumbs-up\"},\n        {label:\"No, preferisco occuparmene personalmente\", tone:\"neg\", ic:\"hand\"}\n      ],\n      react:{ \"S\u00ec, mi farebbe risparmiare moltissimo tempo\":{emoji:\"\\uD83D\\uDE4C\",msg:\"Ol\u00e9! Ci occupiamo noi di tutto.\"} }},\n\n    \/* Educational path: shown only if \"No\" to service (ids edu_*). *\/\n    { id:\"edu_couts\", type:\"teach\", skip:true, quizMix:true, ebIco:\"plane\", heroIco:\"plane\",\n      heroCap:\"Andare da soli \u00e8 possibile: vediamo insieme che cosa comporta davvero.\",\n      eyebrow:\"Punto 1 \u2014 i costi nascosti\",\n      q:\"Comprare da soli costa pi\u00f9 di quanto si pensi, ancora prima di firmare.\",\n      quiz:{ ask:\"Per visitare le case e poi concludere l\u2019acquisto, quanti viaggi andata e ritorno in Spagna dovrebbe prevedere una coppia?\",\n        options:[{label:\"Solo uno\"},{label:\"Due\"},{label:\"Almeno tre\",correct:true}],\n        reveal:\"Di solito 3 viaggi andata e ritorno (2 per le visite + il rogito), diverse notti in albergo e giorni di ferie, oltre a un avvocato che verifichi i documenti e a un traduttore, obbligatorio dal notaio. Il conto sale in fretta.\" },\n      body:\"Prima ancora del prezzo della casa: circa 3 viaggi andata e ritorno (visite + rogito), notti in albergo, giorni di ferie, un avvocato che esamini i documenti e un traduttore, obbligatorio dal notaio. Costi che spesso si dimentica di sommare.\" },\n\n    { id:\"edu_notaire\", type:\"teach\", skip:true, quizMix:true, ebIco:\"scale\", heroIco:\"landmark\",\n      heroCap:\"Il notaio spagnolo non svolge gli stessi controlli di altri sistemi.\",\n      eyebrow:\"Punto 2 \u2014 sicurezza legale\",\n      q:\"Il notaio non verifica ci\u00f2 che si potrebbe pensare.\",\n      quiz:{ ask:\"Vero o falso: un semplice ritardo burocratico (NIE non rilasciato in tempo) pu\u00f2 costarLe denaro.\",\n        options:[{label:\"Falso: si pu\u00f2 sempre riprogrammare\"},{label:\"Vero, e pu\u00f2 costare caro\",correct:true}],\n        reveal:\"Vero. Senza il NIE in tempo, il rogito slitta e si pu\u00f2 perdere la caparra di prenotazione, in genere il 10% del prezzo. E il notaio non controlla n\u00e9 debiti\/gravami in sospeso n\u00e9 se l\u2019immobile \u00e8 stato costruito legalmente.\" },\n      body:\"Il notaio autentica l\u2019atto, ma non verifica n\u00e9 debiti\/gravami n\u00e9 la situazione giuridica dell\u2019immobile. Peggio ancora: un NIE non rilasciato in tempo pu\u00f2 far slittare il rogito e costarLe la caparra di prenotazione, circa il 10% del prezzo.\" },\n\n    { id:\"edu_objectivite\", type:\"teach\", skip:true, ebIco:\"compass\", heroIco:\"user-check\",\n      heroCap:\"Da soli, deve farsi carico di avvocato, traduttore e di tutte le ricerche.\",\n      eyebrow:\"Punto 3 \u2014 chi lavora per Lei?\",\n      q:\"Da soli, tutto ricade su di Lei.\",\n      quiz:{ ask:\"Comprando da soli, chi verifica l\u2019immobile e difende i SUOI interessi?\",\n        options:[{label:\"L\u2019agenzia che mostra l\u2019immobile\"},{label:\"Il notaio\"},{label:\"Lei, insieme ai professionisti che incarica\",correct:true}],\n        reveal:\"Lei. Un\u2019agenzia rappresenta l\u2019immobile del venditore: i controlli non sono il suo compito e alcune spingono a firmare in fretta. Da soli, deve incaricare un avvocato, un traduttore e svolgere ogni ricerca. SpainEasy sta dalla Sua parte.\" },\n      body:\"Da soli, incarica l\u2019avvocato, il traduttore e svolge ogni ricerca, di fronte ad agenzie che rappresentano l\u2019immobile del venditore (la verifica non \u00e8 il loro compito e alcune spingono a firmare in fretta). SpainEasy sta dalla Sua parte: cerchiamo, verifichiamo, traduciamo e negoziamo nel Suo interesse.\" },\n\n    { id:\"edu_valeur\", type:\"teach\", skip:true, ebIco:\"piggy-bank\", heroIco:\"piggy-bank\",\n      heroCap:\"\u00abProbabilmente costa troppo\u00bb\u2026 ecco esattamente che cosa Le porta.\",\n      eyebrow:\"Punto 4 \u2014 il conto reale\",\n      q:\"\u00abIl vostro servizio probabilmente \u00e8 costoso\u2026\u00bb\",\n      body:\"Siamo concreti. Ecco che cosa Le fa risparmiare la nostra assistenza e quali trappole Le evita.\",\n      valueRecap:{\n        saves:[\n          {ic:\"plane\", t:\"Viaggi inutili: le case le visitiamo noi per Lei\"},\n          {ic:\"clock\", t:\"Settimane di ricerche e di pratiche\"},\n          {ic:\"languages\", t:\"Avvocato e traduttore coordinati per Lei, in inglese\"},\n          {ic:\"badge-percent\", t:\"Ci battiamo per ottenere il miglior prezzo (esempi sul nostro sito)\"}\n        ],\n        avoids:[\n          {ic:\"scale\", t:\"Debiti nascosti o un immobile costruito abusivamente che passano inosservati\"},\n          {ic:\"alarm-clock\", t:\"Un NIE in ritardo che Le costa la caparra del 10%\"},\n          {ic:\"search-check\", t:\"Una casa non conforme o un difetto nascosto\"},\n          {ic:\"trending-up\", t:\"Pagare troppo perch\u00e9 l\u2019affare non \u00e8 stato negoziato\"}\n        ]\n      },\n      closing:{ t:\"Compra pi\u00f9 in fretta, con tranquillit\u00e0, e spesso spendendo meno.\", d:\"Ci occupiamo noi delle volture delle utenze (acqua ed elettricit\u00e0); il resto (imposte da non residente, IBI, certificato digitale, assicurazioni\u2026) \u00e8 facoltativo, con lo stesso team di lingua inglese.\" } },\n\n    { id:\"callback\", type:\"callback\", required:false, ebIco:\"phone-call\", heroIco:\"calendar-clock\",\n      heroCap:\"La richiameremo quando Le fa comodo, oppure pu\u00f2 prenotare direttamente un orario.\",\n      eyebrow:\"Risposta entro 24 ore\",\n      q:\"Quando \u00e8 il momento migliore per chiamarLa?\", sub:\"Scelga un giorno e una fascia oraria nel Suo fuso orario: \u00e8 facoltativo\",\n      days:[\n        {label:\"Mon\",dow:1},{label:\"Tue\",dow:2},{label:\"Wed\",dow:3},\n        {label:\"Thu\",dow:4},{label:\"Fri\",dow:5},{label:\"Sat\",dow:6}\n      ] },\n\n    { id:\"contact\", type:\"contact\", required:true, ebIco:\"badge-check\", heroIco:\"phone-call\",\n      heroCap:\"Ultimo passo: La contatteremo a breve, senza alcun impegno.\",\n      eyebrow:\"Ultimo passo\",\n      q:\"Solo i Suoi dati, cos\u00ec potremo ricontattarLa rapidamente.\",\n      consent:\"Inviando questo modulo, accetta di condividere i Suoi dati affinch\u00e9 il nostro team possa contattarLa in merito al Suo progetto.\"}\n  ];\n\n  var ORDER = [\"timing\",\"worries\",\"budget\",\"location\",\"property\",\"motivation\",\"service\",\"edu_couts\",\"edu_notaire\",\"edu_objectivite\",\"edu_valeur\",\"callback\",\"contact\"];\n  var RISK_IDS = [\"edu_couts\",\"edu_notaire\",\"edu_objectivite\",\"edu_valeur\"];\n  function isEdu(id){ return RISK_IDS.indexOf(id)>-1; }\n\n  \/* =========================================================\n     2b) CALLBACK \u2014 timezone-aware (US buyer)\n     ========================================================= *\/\n  var US_ZONES = [\n    {l:\"ET\", tz:\"America\/New_York\"},\n    {l:\"CT\", tz:\"America\/Chicago\"},\n    {l:\"MT\", tz:\"America\/Denver\"},\n    {l:\"PT\", tz:\"America\/Los_Angeles\"}\n  ];\n  \/\/ \"Altro Paese\" picker \u2014 short token + IANA zone\n  var WORLD_ZONES = [\n    {l:\"USA \u2014 Alaska (AKST)\", s:\"AKST\", tz:\"America\/Anchorage\"},\n    {l:\"USA \u2014 Hawaii (HST)\", s:\"HST\", tz:\"Pacific\/Honolulu\"},\n    {l:\"Canada \u2014 Toronto (ET)\", s:\"ET\", tz:\"America\/Toronto\"},\n    {l:\"Canada \u2014 Vancouver (PT)\", s:\"PT\", tz:\"America\/Vancouver\"},\n    {l:\"Messico \u2014 Citt\u00e0 del Messico\", s:\"CST\", tz:\"America\/Mexico_City\"},\n    {l:\"Brasile \u2014 San Paolo\", s:\"BRT\", tz:\"America\/Sao_Paulo\"},\n    {l:\"Argentina \u2014 Buenos Aires\", s:\"ART\", tz:\"America\/Argentina\/Buenos_Aires\"},\n    {l:\"Regno Unito \/ Irlanda \u2014 Londra\", s:\"ora UK\", tz:\"Europe\/London\"},\n    {l:\"Italia \u2014 Roma\", s:\"CET\", tz:\"Europe\/Rome\"},\n    {l:\"Portogallo \u2014 Lisbona\", s:\"WET\", tz:\"Europe\/Lisbon\"},\n    {l:\"Francia \/ Spagna \u2014 Parigi\", s:\"CET\", tz:\"Europe\/Paris\"},\n    {l:\"Europa centrale \u2014 Berlino\", s:\"CET\", tz:\"Europe\/Berlin\"},\n    {l:\"Grecia \/ Europa orientale \u2014 Atene\", s:\"EET\", tz:\"Europe\/Athens\"},\n    {l:\"Turchia \u2014 Istanbul\", s:\"TRT\", tz:\"Europe\/Istanbul\"},\n    {l:\"Marocco \u2014 Casablanca\", s:\"ora locale\", tz:\"Africa\/Casablanca\"},\n    {l:\"Sudafrica \u2014 Johannesburg\", s:\"SAST\", tz:\"Africa\/Johannesburg\"},\n    {l:\"Emirati Arabi \u2014 Dubai\", s:\"GST\", tz:\"Asia\/Dubai\"},\n    {l:\"Israele \u2014 Tel Aviv\", s:\"ora locale\", tz:\"Asia\/Jerusalem\"},\n    {l:\"India \u2014 Mumbai\", s:\"IST\", tz:\"Asia\/Kolkata\"},\n    {l:\"Singapore\", s:\"SGT\", tz:\"Asia\/Singapore\"},\n    {l:\"Hong Kong\", s:\"HKT\", tz:\"Asia\/Hong_Kong\"},\n    {l:\"Giappone \u2014 Tokyo\", s:\"JST\", tz:\"Asia\/Tokyo\"},\n    {l:\"Australia \u2014 Perth\", s:\"AWST\", tz:\"Australia\/Perth\"},\n    {l:\"Australia \u2014 Sydney\", s:\"AEST\", tz:\"Australia\/Sydney\"},\n    {l:\"Nuova Zelanda \u2014 Auckland\", s:\"NZST\", tz:\"Pacific\/Auckland\"}\n  ];\n  \/\/ SpainEasy office: calls only happen during Spanish business hours (Europe\/Madrid, CET\/CEST).\n  var TEAM = { tz:\"Europe\/Madrid\", week:{open:9,close:19}, sat:{open:10,close:14}, localFloor:7, localCeil:21 };\n  function cbDetectIana(){ var tz=\"\"; try{ tz=Intl.DateTimeFormat().resolvedOptions().timeZone||\"\"; }catch(e){} return tz||\"America\/New_York\"; }\n  function cbUsLabelFor(tz){ for(var i=0;i<US_ZONES.length;i++) if(US_ZONES[i].tz===tz) return US_ZONES[i].l; return null; }\n  function cbWorldFor(tz){ for(var j=0;j<WORLD_ZONES.length;j++) if(WORLD_ZONES[j].tz===tz) return WORLD_ZONES[j]; return null; }\n  function cbShortFromTz(tz){ return String(tz||\"\").split(\"\/\").pop().replace(\/_\/g,\" \"); }\n  function cbInitZone(){ if(state.answers.cb_tz) return; var tz=cbDetectIana(); state.answers.cb_tz=tz; var w=cbWorldFor(tz); state.answers.cb_zone = cbUsLabelFor(tz) || (w?w.s:null) || cbShortFromTz(tz); }\n  function cbIsUsZone(){ for(var i=0;i<US_ZONES.length;i++) if(US_ZONES[i].tz===state.answers.cb_tz) return true; return false; }\n  function cbZoneIana(){ if(state.answers.cb_tz) return state.answers.cb_tz; var l=state.answers.cb_zone; for(var i=0;i<US_ZONES.length;i++) if(US_ZONES[i].l===l) return US_ZONES[i].tz; return cbDetectIana(); }\n  function cbZoneShort(){ return state.answers.cb_zone || cbShortFromTz(cbZoneIana()); }\n  var CB_DOWS = {\"Mon\":1,\"Tue\":2,\"Wed\":3,\"Thu\":4,\"Fri\":5,\"Sat\":6};\n  var CB_DAY_FULL = {\"Mon\":\"luned\u00ec\",\"Tue\":\"marted\u00ec\",\"Wed\":\"mercoled\u00ec\",\"Thu\":\"gioved\u00ec\",\"Fri\":\"venerd\u00ec\",\"Sat\":\"sabato\"};\n  var CB_MONTHS = [\"gen\",\"feb\",\"mar\",\"apr\",\"mag\",\"giu\",\"lug\",\"ago\",\"set\",\"ott\",\"nov\",\"dic\"];\n  var CB_DAY_SHORT = {\"Mon\":\"Lun\",\"Tue\":\"Mar\",\"Wed\":\"Mer\",\"Thu\":\"Gio\",\"Fri\":\"Ven\",\"Sat\":\"Sab\"};\n  function fmt12(h){ h=((h%24)+24)%24; return h+\":00\"; }\n  function cbWantsRdv(){ return state.answers.cb_rdv === true; }\n  function cbIsSaturday(){ return Array.isArray(state.answers.cb_days) && state.answers.cb_days.indexOf(\"Sat\")>-1; }\n  function cbNextDateForDow(dow){ var now=new Date(), d=new Date(now.getFullYear(),now.getMonth(),now.getDate()); var diff=(dow-d.getDay()+7)%7; d.setDate(d.getDate()+diff); return d; }\n  function cbNearestDateObj(){\n    var a=state.answers;\n    if(a.cb_days_indif || !Array.isArray(a.cb_days) || !a.cb_days.length) return null;\n    var times=[];\n    a.cb_days.forEach(function(lbl){ if(CB_DOWS[lbl]!=null) times.push(cbNextDateForDow(CB_DOWS[lbl]).getTime()); });\n    if(!times.length) return null;\n    return new Date(Math.min.apply(null,times));\n  }\n  function cbDateLong(d){ return d ? (CB_DAY_FULL[Object.keys(CB_DOWS).find(function(k){return CB_DOWS[k]===d.getDay();})] || \"\")+\" \"+d.getDate()+\" \"+CB_MONTHS[d.getMonth()] : \"\"; }\n  function cbTzOffsetMin(date, tz){\n    try{\n      var dtf = new Intl.DateTimeFormat(\"en-US\",{timeZone:tz,hour12:false,year:\"numeric\",month:\"2-digit\",day:\"2-digit\",hour:\"2-digit\",minute:\"2-digit\",second:\"2-digit\"});\n      var pr = {}; dtf.formatToParts(date).forEach(function(x){ pr[x.type]=x.value; });\n      var asUTC = Date.UTC(pr.year, pr.month-1, pr.day, pr.hour, pr.minute, pr.second);\n      return Math.round((asUTC - date.getTime())\/60000);\n    }catch(e){ return null; }\n  }\n  function cbInstantForLocalHour(dateObj, H, tz){ var guess=Date.UTC(dateObj.getFullYear(),dateObj.getMonth(),dateObj.getDate(),H,0,0); var off=cbTzOffsetMin(new Date(guess),tz); return (off==null)?guess:(guess-off*60000); }\n  function cbTzPartsAt(instant, tz){ var off=cbTzOffsetMin(new Date(instant),tz); var d=new Date(instant+((off||0)*60000)); return {dow:d.getUTCDay(), hour:d.getUTCHours()}; }\n  function cbSlotStartMs(dateObj, hour24){ if(!dateObj || hour24==null) return null; return cbInstantForLocalHour(dateObj, hour24, cbZoneIana()); }\n  function cbBizForMadDow(dow){ if(dow===6) return TEAM.sat; if(dow>=1&&dow<=5) return TEAM.week; return null; }\n  function cbWindowDate(){\n    if(cbIsSaturday()) return cbNextDateForDow(6);\n    var d=cbNearestDateObj(); if(d) return d;\n    var now=new Date(), x=new Date(now.getFullYear(),now.getMonth(),now.getDate());\n    for(var i=0;i<8;i++){ var t=new Date(x); t.setDate(x.getDate()+i); var dw=t.getDay(); if(dw>=1&&dw<=5) return t; }\n    return x;\n  }\n  \/\/ Buyer-local start hours that map to inside SpainEasy's Madrid office hours\n  function cbAllowedHours(){\n    var d=cbWindowDate(); if(!d) return []; var tz=cbZoneIana(), res=[];\n    for(var H=TEAM.localFloor; H<=TEAM.localCeil; H++){\n      var inst=cbInstantForLocalHour(d,H,tz), mp=cbTzPartsAt(inst, TEAM.tz);\n      var biz=cbBizForMadDow(mp.dow); if(!biz) continue;\n      if(mp.hour>=biz.open && mp.hour<=biz.close-1) res.push(H);\n    }\n    return res;\n  }\n  function cbCurrentSlots(){ var a=cbAllowedHours(), out=[]; for(var i=0;i<a.length;i+=2){ var H=a[i]; out.push({h:H, l:fmt12(H)+\"\\u2013\"+fmt12(H+2)}); } return out; }\n  function cbHours(){ return cbAllowedHours(); }\n  function cbHasSlots(){ return cbCurrentSlots().length>0; }\n  function cbSlotLabel(h){ var s=cbCurrentSlots(); for(var i=0;i<s.length;i++) if(s[i].h===h) return s[i].l; return fmt12(h)+\"\\u2013\"+fmt12(h+2); }\n  function cbSlotsHTML(){\n    var slots=cbCurrentSlots(), html=\"\";\n    slots.forEach(function(s){\n      html += '<button type=\"button\" class=\"ole-pill'+(!state.answers.cb_precise && !state.answers.cb_any && state.answers.cb_slot===s.h?\" sel\":\"\")+'\" data-cbslot=\"'+s.h+'\">'+esc(s.l)+'<\/button>';\n    });\n    if(cbHours().length) html += '<button type=\"button\" class=\"ole-pill ole-pill-precise'+(state.answers.cb_precise?\" sel\":\"\")+'\" data-cbprecise=\"1\"><span class=\"ole-pill-ico ole-ico\"><i data-lucide=\"alarm-clock\"><\/i><\/span>Orario preciso<\/button>';\n    html += '<button type=\"button\" class=\"ole-pill'+(state.answers.cb_any?\" sel\":\"\")+'\" data-cbany=\"1\">Qualsiasi ora va bene<\/button>';\n    return html;\n  }\n  function cbHoursHTML(){\n    return cbHours().map(function(hh){\n      return '<button type=\"button\" class=\"ole-pill'+(state.answers.cb_hour===hh?\" sel\":\"\")+'\" data-cbhour=\"'+hh+'\">'+esc(fmt12(hh))+'<\/button>';\n    }).join(\"\");\n  }\n  function cbPreciseMsg(){\n    var h=state.answers.cb_hour; if(h==null) return \"\";\n    return \"Faremo il possibile per chiamarLa verso le \"+fmt12(h)+\" \"+cbZoneShort()+\". Siamo in Spagna, quindi non possiamo garantire il minuto esatto: per fissare un orario preciso, prenoti una call.\";\n  }\n  function cbReaction(){\n    var a=state.answers, z=cbZoneShort();\n    if(cbWantsRdv()) return {emoji:\"\\uD83D\\uDCC5\",msg:\"Perfetto: sceglier\u00e0 l\u2019orario dell\u2019appuntamento subito dopo questo modulo.\"};\n    if(a.cb_any) return {emoji:\"\\uD83D\\uDC4D\",msg:\"Benissimo: troveremo il momento migliore per raggiungerLa durante l\u2019orario d\u2019ufficio spagnolo.\"};\n    var dObj=cbNearestDateObj(); var dTxt=dObj?cbDateLong(dObj):\"\";\n    if(a.cb_precise && a.cb_hour!=null) return {emoji:\"\\uD83D\\uDC4D\",msg:\"Preso nota: faremo il possibile per chiamarLa \"+(dTxt?dTxt+\" \":\"\")+\"verso le \"+fmt12(a.cb_hour)+\" \"+z+\".\"};\n    var sTxt = a.cb_slot!=null ? cbSlotLabel(a.cb_slot) : \"\";\n    if(dTxt && sTxt) return {emoji:\"\\uD83D\\uDC4D\",msg:\"Benissimo: cercheremo di chiamarLa \"+dTxt+\", \"+sTxt+\" \"+z+\".\"};\n    if(dTxt) return {emoji:\"\\uD83D\\uDC4D\",msg:\"Benissimo: cercheremo di chiamarLa \"+dTxt+\".\"};\n    if(sTxt) return {emoji:\"\\uD83D\\uDC4D\",msg:\"Benissimo: cercheremo di chiamarLa \"+sTxt+\" \"+z+\".\"};\n    if(a.cb_days_indif) return {emoji:\"\\uD83D\\uDC4D\",msg:\"Perfetto: La chiameremo il prima possibile.\"};\n    return null;\n  }\n  function cbRecapText(){\n    var a=state.answers, z=cbZoneShort();\n    if(cbWantsRdv()) return \"Prenoter\u00e0 una call subito dopo\";\n    if(a.cb_any){ var dA=cbNearestDateObj(); var dAt=dA?cbDateLong(dA):\"\"; return dAt ? (\"Chiamata: \"+dAt+\" \u2014 a qualsiasi ora\") : \"Chiamata a qualsiasi ora\"; }\n    var dObj=cbNearestDateObj(); var dTxt=dObj?cbDateLong(dObj):\"\";\n    if(a.cb_precise && a.cb_hour!=null) return \"Chiamata: \"+(dTxt?dTxt+\", \":\"\")+\"verso le \"+fmt12(a.cb_hour)+\" \"+z;\n    var sTxt = a.cb_slot!=null ? cbSlotLabel(a.cb_slot) : \"\";\n    if(dTxt && sTxt) return \"Chiamata: \"+dTxt+\", \"+sTxt+\" \"+z;\n    if(dTxt) return \"Chiamata: \"+dTxt;\n    if(sTxt) return \"Chiamata: \"+sTxt+\" \"+z;\n    if(a.cb_days_indif) return \"Chiamata il prima possibile\";\n    return \"\";\n  }\n  \/\/ The requested call time expressed in the CLIENT's own local time + zone (for HubSpot \"Heure chez le client\").\n  function cbClientTimeStr(){\n    var a=state.answers, z=cbZoneShort();\n    if(cbWantsRdv()) return \"Sceglier\u00e0 un orario sulla pagina di prenotazione\";\n    var dObj=cbNearestDateObj(); var dTxt=dObj?cbDateLong(dObj):(a.cb_days_indif?\"Qualsiasi giorno\":\"\");\n    var t=\"\";\n    if(a.cb_any) t=\"a qualsiasi ora\";\n    else if(a.cb_precise && a.cb_hour!=null) t=\"verso le \"+fmt12(a.cb_hour);\n    else if(a.cb_slot!=null) t=cbSlotLabel(a.cb_slot);\n    if(!dTxt && !t) return \"\";\n    var s=(dTxt||\"\")+((dTxt&&t)?\", \":\"\")+(t||\"\");\n    return s+\" \"+z+\" (ora locale del cliente)\";\n  }\n\n  \/* =========================================================\n     3) LOCATION FLAVOR\n     ========================================================= *\/\n  var CITY_REF = {\n    \"Alicante\":\"il castello di Santa B\u00e1rbara e le spiagge\",\n    \"Barcellona\":\"Gaud\u00ed, la Sagrada Fam\u00edlia e Las Ramblas\",\n    \"Benidorm\":\"lo skyline e le spiagge animate\",\n    \"Cadice\":\"una delle citt\u00e0 pi\u00f9 antiche d\u2019Europa\",\n    \"Estepona\":\"il suo centro storico fiorito\",\n    \"Fuengirola\":\"il suo lungomare rilassato\",\n    \"Girona\":\"i suoi vicoli medievali\",\n    \"Granada\":\"l\u2019Alhambra e la Sierra Nevada\",\n    \"Ibiza\":\"calette turchesi e vita da isola\",\n    \"Madrid\":\"il Prado, il parco del Retiro e l\u2019energia della citt\u00e0\",\n    \"Malaga\":\"la citt\u00e0 natale di Picasso\",\n    \"Marbella\":\"il glamour di Puerto Ban\u00fas\",\n    \"Mijas\":\"il fascino bianco del suo borgo in collina\",\n    \"Nerja\":\"il celebre Balc\u00f3n de Europa\",\n    \"Palma di Maiorca\":\"la cattedrale e lo stile balearico\",\n    \"Siviglia\":\"flamenco, la Giralda e i cortili fioriti\",\n    \"Sitges\":\"la sua eleganza di citt\u00e0 di mare, vicino a Barcellona\",\n    \"Tarragona\":\"il suo anfiteatro romano sul mare\",\n    \"Torrevieja\":\"le sue lagune rosa e il sole\",\n    \"Valencia\":\"la paella e la Citt\u00e0 delle Arti e delle Scienze\",\n    \"Costa del Sol\":\"oltre 300 giorni di sole all\u2019anno\",\n    \"Costa Blanca\":\"spiagge da cartolina tutto l\u2019anno\",\n    \"Costa Brava\":\"calette selvagge e carattere\",\n    \"Costa Dorada\":\"sabbia dorata e patrimonio romano\",\n    \"Andalusia\":\"flamenco, tapas e buona vita\",\n    \"Isole Baleari\":\"luce e acque turchesi\",\n    \"Isole Canarie\":\"eterna primavera\",\n    \"Catalogna\":\"mare, montagna e fascino catalano\"\n  };\n  var CITY_NOTE = {\n    \"Alicante\":\"il gioiello della Costa Blanca\",\"Barcellona\":\"la citt\u00e0 di Gaud\u00ed\",\"Benidorm\":\"la piccola Manhattan della Spagna\",\n    \"Cadice\":\"la citt\u00e0 pi\u00f9 antica d\u2019Europa\",\"Estepona\":\"il giardino della Costa del Sol\",\"Fuengirola\":\"vita di mare, senza pensieri\",\n    \"Girona\":\"un gioiello medievale catalano\",\"Granada\":\"la citt\u00e0 dell\u2019Alhambra\",\"Ibiza\":\"vita da isola tra acque turchesi\",\"Madrid\":\"il cuore della Spagna\",\n    \"Malaga\":\"la citt\u00e0 natale di Picasso\",\"Marbella\":\"il glamour della Costa del Sol\",\"Mijas\":\"un borgo bianco in collina\",\n    \"Nerja\":\"il Balcone d\u2019Europa\",\"Palma di Maiorca\":\"il gioiello delle Baleari\",\"Siviglia\":\"la capitale del flamenco\",\n    \"Sitges\":\"eleganza di mare\",\"Tarragona\":\"patrimonio romano sul mare\",\"Torrevieja\":\"lagune rosa e saline\",\n    \"Valencia\":\"la patria della paella\",\"Costa del Sol\":\"oltre 300 giorni di sole all\u2019anno\",\"Costa Blanca\":\"sole tutto l\u2019anno\",\n    \"Costa Brava\":\"calette selvagge\",\"Costa Dorada\":\"sabbia dorata e rovine romane\",\"Andalusia\":\"flamenco e buona vita\",\n    \"Isole Baleari\":\"acque turchesi\",\"Isole Canarie\":\"eterna primavera\",\"Catalogna\":\"mare e carattere catalano\"\n  };\n  var REGION_NOTE = {\n    \"Andaluc\u00eda\":\"il sole andaluso e il flamenco\",\"Comunidad Valenciana\":\"il sole della costa valenciana\",\"Comunitat Valenciana\":\"il sole della costa valenciana\",\n    \"Catalu\u00f1a\":\"mare e carattere catalano\",\"Catalunya\":\"mare e carattere catalano\",\"Islas Baleares\":\"l\u2019acqua turchese delle Baleari\",\"Illes Balears\":\"l\u2019acqua turchese delle Baleari\",\n    \"Canarias\":\"l\u2019eterna primavera delle Canarie\",\"Islas Canarias\":\"l\u2019eterna primavera delle Canarie\",\"Regi\u00f3n de Murcia\":\"la dolce Costa C\u00e1lida\",\"Comunidad de Madrid\":\"il cuore della Spagna\",\n    \"Galicia\":\"la costa e la natura della Galizia\",\"Pa\u00eds Vasco\":\"il mare e la cucina baschi\",\"Andalusia\":\"il sole andaluso e il flamenco\"\n  };\n  var LOC_PILL = {\n    \"Alicante\":{emoji:\"\\uD83C\\uDF0A\",msg:\"Alicante: mare turchese e un centro storico vivace.\"},\n    \"Barcellona\":{emoji:\"\\u2728\",msg:\"Barcellona: la grande citt\u00e0 che non dorme mai.\"},\n    \"Benidorm\":{emoji:\"\\uD83C\\uDFD9\\uFE0F\",msg:\"Benidorm: skyline, spiagge e animazione tutto l\u2019anno.\"},\n    \"Cadice\":{emoji:\"\\uD83C\\uDF0A\",msg:\"Cadice: una delle citt\u00e0 pi\u00f9 antiche d\u2019Europa, affacciata sull\u2019Atlantico.\"},\n    \"Estepona\":{emoji:\"\\uD83C\\uDF3A\",msg:\"Estepona: il gioiello fiorito della Costa del Sol.\"},\n    \"Fuengirola\":{emoji:\"\\uD83C\\uDFD6\\uFE0F\",msg:\"Fuengirola: rilassata, soleggiata, con i piedi nell\u2019acqua.\"},\n    \"Girona\":{emoji:\"\\uD83C\\uDFF0\",msg:\"Girona: vicoli medievali e calma catalana.\"},\n    \"Granada\":{emoji:\"\\uD83C\\uDFD4\\uFE0F\",msg:\"Granada: l\u2019Alhambra con la Sierra Nevada alle spalle.\"},\n    \"Ibiza\":{emoji:\"\\uD83C\\uDFDD\\uFE0F\",msg:\"Ibiza: calette turchesi e vita da isola.\"},\n    \"Madrid\":{emoji:\"\\u2728\",msg:\"Madrid: il cuore vibrante della Spagna.\"},\n    \"Malaga\":{emoji:\"\\u2600\\uFE0F\",msg:\"Malaga: la citt\u00e0 natale di Picasso, soleggiata e viva.\"},\n    \"Marbella\":{emoji:\"\\uD83C\\uDF34\",msg:\"Marbella: tutto il glamour della Costa del Sol.\"},\n    \"Mijas\":{emoji:\"\\uD83E\\uDD0D\",msg:\"Mijas: il fascino dei paesi bianchi sopra la costa.\"},\n    \"Nerja\":{emoji:\"\\uD83C\\uDF05\",msg:\"Nerja: il Balcone d\u2019Europa sul Mediterraneo.\"},\n    \"Palma di Maiorca\":{emoji:\"\\uD83C\\uDFDD\\uFE0F\",msg:\"Palma di Maiorca: eleganza insulare alle Baleari.\"},\n    \"Siviglia\":{emoji:\"\\uD83D\\uDC83\",msg:\"Siviglia: flamenco, cortili e vita andalusa.\"},\n    \"Sitges\":{emoji:\"\\uD83C\\uDF0A\",msg:\"Sitges: eleganza di mare, poco a sud di Barcellona.\"},\n    \"Tarragona\":{emoji:\"\\uD83C\\uDFDB\\uFE0F\",msg:\"Tarragona: patrimonio romano affacciato sul Mediterraneo.\"},\n    \"Torrevieja\":{emoji:\"\\uD83C\\uDF38\",msg:\"Torrevieja: lagune rosa e sole quasi tutto l\u2019anno.\"},\n    \"Valencia\":{emoji:\"\\uD83E\\uDD58\",msg:\"Valencia: paella, spiagge e un tocco di modernit\u00e0.\"},\n    \"Costa del Sol\":{emoji:\"\\u2600\\uFE0F\",msg:\"La Costa del Sol: oltre 300 giorni di sole all\u2019anno.\"},\n    \"Costa Blanca\":{emoji:\"\\uD83C\\uDFD6\\uFE0F\",msg:\"La Costa Blanca: spiagge da cartolina tutto l\u2019anno.\"},\n    \"Costa Brava\":{emoji:\"\\uD83C\\uDF0A\",msg:\"La Costa Brava: calette selvagge e carattere.\"},\n    \"Costa Dorada\":{emoji:\"\\uD83C\\uDFDB\\uFE0F\",msg:\"La Costa Dorada: sabbia dorata e patrimonio romano.\"},\n    \"Andalusia\":{emoji:\"\\uD83D\\uDC83\",msg:\"Andalusia: sole, mare e arte di vivere.\"},\n    \"Isole Baleari\":{emoji:\"\\uD83C\\uDFDD\\uFE0F\",msg:\"Le Baleari: un angolo di paradiso mediterraneo.\"},\n    \"Isole Canarie\":{emoji:\"\\uD83C\\uDF34\",msg:\"Le Canarie: eterna primavera, tutto l\u2019anno.\"},\n    \"Catalogna\":{emoji:\"\\uD83C\\uDF0A\",msg:\"Catalogna: calette selvagge, cultura e ottima tavola.\"}\n  };\n  var REACTIONS = [\n    {match:[\"malaga\",\"m\u00e1laga\",\"marbella\",\"estepona\",\"fuengirola\",\"nerja\",\"mijas\",\"costa del sol\"],emoji:\"\\u2600\\uFE0F\",msg:\"La Costa del Sol: oltre 300 giorni di sole all\u2019anno.\"},\n    {match:[\"seville\",\"sevilla\",\"siviglia\",\"cadice\",\"andalusia\",\"cadiz\",\"c\u00e1diz\",\"granada\",\"almeria\",\"almer\u00eda\",\"andaluc\"],emoji:\"\\uD83D\\uDC83\",msg:\"Andalusia: sole, mare e arte di vivere.\"},\n    {match:[\"alicante\",\"benidorm\",\"calpe\",\"denia\",\"javea\",\"j\u00e1vea\",\"torrevieja\",\"costa blanca\"],emoji:\"\\uD83C\\uDFD6\\uFE0F\",msg:\"La Costa Blanca: spiagge da cartolina tutto l\u2019anno.\"},\n    {match:[\"valencia\",\"valence\"],emoji:\"\\uD83E\\uDD58\",msg:\"Valencia: paella, spiagge e vita rilassata.\"},\n    {match:[\"murcia\",\"costa calida\",\"costa c\u00e1lida\"],emoji:\"\\uD83C\\uDF05\",msg:\"La Costa C\u00e1lida: il mare pi\u00f9 dolce di Spagna.\"},\n    {match:[\"barcelona\",\"barcellona\",\"girona\",\"sitges\",\"lloret\",\"roses\",\"tarragona\",\"costa brava\",\"costa dorada\",\"catal\"],emoji:\"\\uD83C\\uDF0A\",msg:\"Catalogna: calette selvagge, cultura e ottima tavola.\"},\n    {match:[\"palma\",\"mallorca\",\"maiorca\",\"baleares\",\"balearic\",\"baleari\",\"ibiza\",\"menorca\"],emoji:\"\\uD83C\\uDFDD\\uFE0F\",msg:\"Le Baleari: un angolo di paradiso mediterraneo.\"},\n    {match:[\"canar\",\"tenerife\",\"las palmas\",\"fuerteventura\",\"lanzarote\"],emoji:\"\\uD83C\\uDF34\",msg:\"Le Canarie: eterna primavera, tutto l\u2019anno.\"},\n    {match:[\"madrid\"],emoji:\"\\u2728\",msg:\"Madrid: il cuore vibrante della Spagna.\"}\n  ];\n\n  \/* =========================================================\n     4) UTILITIES\n     ========================================================= *\/\n  var root = document.getElementById(\"ole-form-root\");\n  if(!root) return;\n  var state = { i:0, answers:{}, history:[], locked:false, busy:false, reaction:null };\n  var startTime = Date.now();\n  var gMapsReady = false;\n  var nf = new Intl.NumberFormat(\"it-IT\");\n  function fmt(n){ return nf.format(n) + \" \u20ac\"; }\n  function getCookie(k){ var m=document.cookie.match(\"(^|;)\\\\s*\"+k+\"\\\\s*=\\\\s*([^;]+)\"); return m?m.pop():\"\"; }\n  function esc(s){ var a=String.fromCharCode(38); return String(s).replace(\/&\/g,a+\"#38;\").replace(\/<\/g,a+\"#60;\").replace(\/>\/g,a+\"#62;\").replace(\/\"\/g,a+\"#34;\"); }\n  function refreshIcons(){ if(window.lucide && lucide.createIcons){ try{ lucide.createIcons(); }catch(e){} } }\n  function stepIndexById(id){ for(var i=0;i<STEPS.length;i++) if(STEPS[i].id===id) return i; return -1; }\n  function isRisksPath(){ return \/^no\/i.test(state.answers.service||\"\"); }\n  function hasAnswers(){ for(var k in state.answers){ if(state.answers.hasOwnProperty(k)){ var v=state.answers[k]; if(Array.isArray(v)?v.length:(v!==null&&v!==undefined&&v!==\"\")) return true; } } return false; }\n\n  var LS_KEY=\"spaineasy_form_v1_\"+((location.pathname.match(\/^\\\/([a-z]{2})\\\/\/)||[])[1]||\"en\"), LS_TTL=1000*60*60*24*7;\n  var _saveT=null;\n  function saveState(){ try{ localStorage.setItem(LS_KEY, JSON.stringify({ i:state.i, answers:state.answers, history:state.history, t:Date.now() })); }catch(e){} }\n  function saveSoon(){ clearTimeout(_saveT); _saveT=setTimeout(saveState,250); }\n  function loadState(){\n    try{\n      var raw=localStorage.getItem(LS_KEY); if(!raw) return false;\n      var s=JSON.parse(raw);\n      if(!s || !s.t || (Date.now()-s.t)>LS_TTL){ localStorage.removeItem(LS_KEY); return false; }\n      if(typeof s.i===\"number\" && s.answers && typeof s.answers===\"object\"){\n        state.i=Math.min(Math.max(s.i,0), STEPS.length-1);\n        state.answers=s.answers; state.history=Array.isArray(s.history)?s.history:[];\n        return true;\n      }\n    }catch(e){}\n    return false;\n  }\n  function clearState(){ try{ localStorage.removeItem(LS_KEY); }catch(e){} }\n\n  var MAIL_DOMAINS=[\"gmail.com\",\"yahoo.com\",\"hotmail.com\",\"outlook.com\",\"icloud.com\",\"aol.com\",\"comcast.net\",\"att.net\",\"verizon.net\",\"sbcglobal.net\",\"me.com\",\"live.com\",\"msn.com\",\"ymail.com\",\"protonmail.com\"];\n  var MAIL_TLDS=[\"com\",\"net\",\"org\",\"us\",\"edu\",\"co\",\"io\",\"gov\"];\n  function lev(a,b){ var m=a.length,n=b.length; if(!m) return n; if(!n) return m; var d=[],i,j; for(i=0;i<=m;i++) d[i]=[i]; for(j=0;j<=n;j++) d[0][j]=j; for(i=1;i<=m;i++) for(j=1;j<=n;j++){ var c=a.charAt(i-1)===b.charAt(j-1)?0:1; d[i][j]=Math.min(d[i-1][j]+1,d[i][j-1]+1,d[i-1][j-1]+c); } return d[m][n]; }\n  function suggestEmail(email){\n    if(!email) return null;\n    var at=email.lastIndexOf(\"@\"); if(at<1) return null;\n    var local=email.slice(0,at), domain=email.slice(at+1).toLowerCase();\n    if(!domain || domain.indexOf(\".\")<1) return null;\n    if(MAIL_DOMAINS.indexOf(domain)>-1) return null;\n    var best=null,bd=99,i;\n    for(i=0;i<MAIL_DOMAINS.length;i++){ var dd=lev(domain,MAIL_DOMAINS[i]); if(dd<bd){ bd=dd; best=MAIL_DOMAINS[i]; } }\n    if(best && bd>0 && bd<=2) return local+\"@\"+best;\n    var dot=domain.lastIndexOf(\".\"), sld=domain.slice(0,dot), tld=domain.slice(dot+1);\n    if(MAIL_TLDS.indexOf(tld)===-1){ var bt=null,bt2=99; for(i=0;i<MAIL_TLDS.length;i++){ var td=lev(tld,MAIL_TLDS[i]); if(td<bt2){ bt2=td; bt=MAIL_TLDS[i]; } } if(bt && bt2>0 && bt2<=1) return local+\"@\"+sld+\".\"+bt; }\n    return null;\n  }\n\n  function recapHTML(){\n    var a=state.answers, rows=[];\n    function row(ic,val){ if(val) rows.push('<div class=\"ole-recap-item\"><span class=\"ole-recap-ico ole-ico\"><i data-lucide=\"'+ic+'\"><\/i><\/span><span class=\"ole-recap-val\">'+esc(val)+'<\/span><\/div>'); }\n    row(\"home\", a.property);\n    var loc = a.location ? cityName(a.location) : \"\";\n    if(loc){\n      var flavor = CITY_NOTE[loc];\n      if(!flavor){ var m=(a.location||\"\").match(\/\\(([^)]+)\\)\/); if(m) flavor=REGION_NOTE[m[1].trim()]; }\n      var noteFull = flavor ? \"(\"+flavor+\")\" : \"\";\n      var locHtml = esc(loc) + (noteFull ? ' <span class=\"ole-recap-note\" id=\"ole-recap-note\" data-note=\"'+esc(noteFull)+'\"><\/span>' : '');\n      rows.push('<div class=\"ole-recap-item\"><span class=\"ole-recap-ico ole-ico\"><i data-lucide=\"map-pin\"><\/i><\/span><span class=\"ole-recap-val\">'+locHtml+'<\/span><\/div>');\n    }\n    row(\"wallet\", a.budget?fmt(a.budget):\"\");\n    row(\"calendar-clock\", a.timing);\n    row(\"compass\", a.motivation);\n    var cbTxt = cbRecapText();\n    if(cbTxt){ rows.push('<div class=\"ole-recap-item ole-recap-cb\" id=\"ole-recap-cb-edit\" role=\"button\" tabindex=\"0\" aria-label=\"Modifica l\u2019orario della chiamata\"><span class=\"ole-recap-ico ole-ico\"><i data-lucide=\"'+(cbWantsRdv()?\"calendar-check\":\"phone-call\")+'\"><\/i><\/span><span class=\"ole-recap-val\">'+esc(cbTxt)+'<\/span><span class=\"ole-recap-edit\"><i data-lucide=\"pencil\"><\/i>Modifica<\/span><\/div>'); }\n    if(!rows.length) return \"\";\n    return '<div class=\"ole-recap\"><div class=\"ole-recap-title\"><span class=\"ole-ico\"><i data-lucide=\"clipboard-check\"><\/i><\/span>Il Suo progetto<\/div>'+rows.join(\"\")+'<\/div>';\n  }\n\n  function cityReaction(v){ if(!v) return null; var s=String(v).toLowerCase(); for(var i=0;i<REACTIONS.length;i++) for(var j=0;j<REACTIONS[i].match.length;j++) if(s.indexOf(REACTIONS[i].match[j].toLowerCase())>-1) return REACTIONS[i]; return null; }\n  function reactionFor(step, value){\n    if(step.type===\"location\"){ return LOC_PILL[value] || cityReaction(value); }\n    if(step.type===\"single\" && step.react){\n      var rb = step.react[value] || null;\n      if(step.id===\"property\" && rb && value!==\"Altro\" && state.answers.location){\n        var pcity = cityName(state.answers.location); var ref = CITY_REF[pcity];\n        return { emoji:\"\\uD83D\\uDCCD\", msg: value+\" \"+locWithPrep(pcity)+(ref ? \" \u2014 \"+ref : \"\")+\". Un bel progetto!\" };\n      }\n      return rb;\n    }\n    if(step.type===\"multi\"){\n      if(!Array.isArray(value) || !value.length) return null;\n      if(value.length===1 && step.optMsg) return step.optMsg[value[0]] || step.reactAny || null;\n      if(step.multiMsg && step.multiMsg[String(value.length)]) return step.multiMsg[String(value.length)];\n      return step.reactAny || null;\n    }\n    if(step.type===\"budget\" && value){ return budgetReaction(value); }\n    return null;\n  }\n  function posHTML(){\n    return '<div class=\"ole-pos\" id=\"ole-pos\">'+\n      '<div class=\"ole-pos-head\"><span class=\"ole-pos-ico ole-ico\"><i data-lucide=\"compass\"><\/i><\/span>'+\n        '<div><strong>Ol\u00e9 \u00e8 un \u00abcacciatore di case\u00bb per chi compra, non un\u2019agenzia.<\/strong>'+\n        '<span>Cerchiamo, verifichiamo e negoziamo per Lei, nel Suo esclusivo interesse.<\/span><\/div>'+\n      '<\/div>'+\n      '<button type=\"button\" class=\"ole-pos-toggle\" id=\"ole-pos-toggle\" aria-expanded=\"false\">Come funziona? <i data-lucide=\"chevron-down\"><\/i><\/button>'+\n      '<div class=\"ole-pos-steps\">'+\n        '<div class=\"ole-pos-step\"><span class=\"ole-pos-step-ico ole-ico\"><i data-lucide=\"search\"><\/i><\/span><div><div class=\"ole-pos-step-t\">Cerchiamo<\/div><div class=\"ole-pos-step-d\">Troviamo l\u2019immobile giusto per Lei, in qualsiasi zona della Spagna.<\/div><\/div><\/div>'+\n        '<div class=\"ole-pos-step\"><span class=\"ole-pos-step-ico ole-ico\"><i data-lucide=\"shield-check\"><\/i><\/span><div><div class=\"ole-pos-step-t\">Verifichiamo<\/div><div class=\"ole-pos-step-d\">Situazione giuridica, debiti, stato reale: controlliamo tutto prima che Lei si impegni.<\/div><\/div><\/div>'+\n        '<div class=\"ole-pos-step\"><span class=\"ole-pos-step-ico ole-ico\"><i data-lucide=\"badge-percent\"><\/i><\/span><div><div class=\"ole-pos-step-t\">Negoziamo<\/div><div class=\"ole-pos-step-d\">Difendiamo il Suo budget per ottenere il miglior prezzo, nel Suo esclusivo interesse.<\/div><\/div><\/div>'+\n      '<\/div>'+\n    '<\/div>';\n  }\n\n  var CITY_MIN = {\n    \/* alias spagnoli (nomi restituiti da Google Places in spagnolo) *\/\n    \"Barcelona\":250000, \"Sevilla\":150000, \"Seville\":150000, \"C\u00e1diz\":120000, \"Cadiz\":120000, \"M\u00e1laga\":200000, \"Palma\":200000, \"Palma de Mallorca\":200000, \"Gerona\":130000,\n    \/* --- Values matching Ol\\u00e9's confirmed FR reference (same numeric minimums) --- *\/\n    \"Alicante\":150000, \"Torrevieja\":150000, \"Malaga\":200000, \"Fuengirola\":200000,\n    \"Marbella\":250000, \"Estepona\":250000, \"Madrid\":250000, \"Valencia\":170000,\n    \"Siviglia\":150000, \"Barcellona\":250000,\n    \/* --- Provisional estimates (to confirm) --- *\/\n    \"Benidorm\":150000, \"Cadice\":120000, \"Girona\":130000, \"Nerja\":160000,\n    \"Palma di Maiorca\":200000, \"Tarragona\":120000\n    \/* No reference figure yet for: Granada, Ibiza, Mijas, Sitges \\u2014 left unmapped on purpose, falls back to the generic budget-tier reaction below *\/\n  };\n  var REGION_MIN = {\n    \/* nomi italiani (Google Places in italiano) *\/\n    \"Andalusia\":70000, \"Comunit\u00e0 Valenciana\":90000, \"Catalogna\":120000, \"Isole Baleari\":200000, \"Isole Canarie\":130000, \"Regione di Murcia\":70000, \"Comunit\u00e0 di Madrid\":180000, \"Galizia\":80000, \"Paesi Baschi\":150000, \"Asturie\":90000, \"Aragona\":90000, \"Castiglia e Le\u00f3n\":80000, \"Castiglia-La Mancia\":70000, \"Estremadura\":60000, \"Comunit\u00e0 Forale di Navarra\":110000,\n    \"Andaluc\\u00eda\":70000, \"Comunidad Valenciana\":90000, \"Comunitat Valenciana\":90000,\n    \"Catalu\\u00f1a\":120000, \"Catalunya\":120000, \"Islas Baleares\":200000, \"Illes Balears\":200000,\n    \"Canarias\":130000, \"Islas Canarias\":130000, \"Regi\\u00f3n de Murcia\":70000,\n    \"Comunidad de Madrid\":180000, \"Galicia\":80000, \"Pa\\u00eds Vasco\":150000, \"Euskadi\":150000,\n    \"Cantabria\":110000, \"Asturias\":90000, \"Principado de Asturias\":90000, \"Arag\\u00f3n\":90000,\n    \"Castilla y Le\\u00f3n\":80000, \"Castilla-La Mancha\":70000, \"Extremadura\":60000,\n    \"Navarra\":110000, \"Comunidad Foral de Navarra\":110000, \"La Rioja\":90000\n  };\n  function locMinBudget(){\n    var loc = state.answers.location;\n    if(!loc) return null;\n    var city = cityName(loc);\n    if(CITY_MIN[city] != null) return CITY_MIN[city];\n    var m = String(loc).match(\/\\(([^)]+)\\)\/);\n    if(m && REGION_MIN[m[1].trim()] != null) return REGION_MIN[m[1].trim()];\n    return null;\n  }\n  function budgetReaction(v){\n    if(!v) return null;\n    var hasCity = !!state.answers.location;\n    var place = hasCity ? locWithPrep(cityName(state.answers.location)) : \"\";\n    var min = locMinBudget();\n    if(min != null){\n      if(v < min){\n        var msg = \"Gli immobili \"+place+\" attorno a \"+fmt(v)+\" sono rari (preveda almeno \"+fmt(min)+\"). Allargare la ricerca ai comuni vicini \u00e8 spesso possibile: cercheremo la migliore opportunit\u00e0 per Lei.\";\n        return { emoji:\"\\ud83e\\udded\", warn:true, msg:msg };\n      }\n      if(v < min*1.4)  return { emoji:\"\\ud83d\\udc4d\", msg:\"Un budget realistico \"+place+\": ci sono reali opportunit\u00e0 per trovare qualcosa di ottimo.\" };\n      if(v < min*2.5)  return { emoji:\"\\u2600\\ufe0f\", msg:\"Ottimo margine \"+place+\" \u2014 possiamo puntare a qualcosa di davvero speciale.\" };\n      return { emoji:\"\\u2728\", msg:\"Ol\u00e9! Con questo budget \"+place+\", il segmento alto \u00e8 alla Sua portata.\" };\n    }\n    var step = STEPS[stepIndexById(\"budget\")];\n    if(step && step.reactRanges){\n      for(var i=0;i<step.reactRanges.length;i++) if(v<=step.reactRanges[i].max) return step.reactRanges[i];\n    }\n    return null;\n  }\n\n  function cityName(v){ return String(v||\"\").split(\"(\")[0].trim(); }\n  function locWithPrep(place){\n    var p=String(place||\"\").trim(); if(!p) return \"\";\n    if(p.indexOf(\"Isole \")===0) return \"nelle \"+p;\n    if(p.indexOf(\"Costa \")===0) return \"sulla \"+p;\n    if(p.indexOf(\"Comunit\u00e0\")===0||p.indexOf(\"Regione \")===0) return \"nella \"+p;\n    if(p.indexOf(\"Paesi \")===0) return \"nei \"+p;\n    if(p===\"Andalusia\"||p===\"Catalogna\"||p===\"Galizia\"||p===\"Cantabria\"||p===\"Asturie\"||p===\"Aragona\"||p===\"Navarra\"||p===\"Estremadura\"||p===\"La Rioja\"||p.indexOf(\"Castiglia\")===0) return \"in \"+p;\n    if(\/^[Aa]\/.test(p)) return \"ad \"+p;\n    return \"a \"+p;\n  }\n  function prefersReducedMotion(){ return !!(window.matchMedia && window.matchMedia(\"(prefers-reduced-motion:reduce)\").matches); }\n  function setReaction(step, value){ state.reaction = reactionFor(step, value) || null; }\n  var QUIZ_OK = [\"Esatto, proprio cos\u00ec.\",\"Corretto, bravo!\",\"Perfetto: ha occhio per questi dettagli.\",\"Esattamente, ben fatto.\",\"S\u00ec! Conosce gi\u00e0 bene l\u2019argomento.\"];\n  var QUIZ_KO = [\"\u00c8 la trappola pi\u00f9 comune: per fortuna \u00e8 proprio ci\u00f2 che mettiamo in sicurezza.\",\"Quasi! Ed \u00e8 proprio qui che entriamo in gioco.\",\"Non proprio: niente paura, ce ne occupiamo noi.\",\"Errore frequente: \u00e8 esattamente il motivo per cui esistiamo.\",\"Quasi, ma \u00e8 proprio il genere di dettaglio di cui ci facciamo carico.\"];\n  function pickVaried(pool, key){ if(pool.length<=1) return pool[0]; var last=state[key], i; do{ i=Math.floor(Math.random()*pool.length); } while(i===last); state[key]=i; return pool[i]; }\n  function showReaction(step, value, instant){ setReaction(step, value); renderBadge(true, instant); }\n  function heroCapFor(step){\n    if(step.id===\"contact\"){\n      if(isRisksPath()) return \"Ol\u00e9! Lo vede con chiarezza: \u00e8 esattamente il motivo per cui esistiamo.\";\n      if(state.answers.location) return \"Ultimo passo: La contatteremo presto in merito al Suo progetto \"+locWithPrep(cityName(state.answers.location))+\".\";\n    }\n    return step.heroCap||\"\";\n  }\n  function twChars(msg){ var out=\"\"; for(var i=0;i<msg.length;i++){ var ch=msg.charAt(i); out += '<span class=\"ole-tw\">'+(ch===\" \"?\" \":esc(ch))+'<\/span>'; } return out; }\n  function startTyping(b, r){\n    var q = String.fromCharCode(8220);\n    var emoji = r.emoji ? '<span class=\"ole-emoji ole-emoji-live\">'+ r.emoji +'<\/span>' : '';\n    b.className = \"ole-hero-msg reacted typing\";\n    b.innerHTML = '<span class=\"ole-q-mark\">'+q+'<\/span><span class=\"ole-hero-cap\">'+ twChars(r.msg) +'<\/span>'+ emoji + '<span class=\"ole-typing\"><span><\/span><span><\/span><span><\/span><\/span>';\n    b._typingT = setTimeout(function(){\n      b._typingT=null; b.classList.remove(\"typing\"); b.classList.add(\"writing\");\n      var spans=b.querySelectorAll(\".ole-tw\"), emo=b.querySelector(\".ole-emoji-live\"), i=0;\n      (function tick(){ if(i<spans.length){ spans[i].style.opacity=\"1\"; i++; b._twT=setTimeout(tick,15); } else { b._twT=null; if(emo) emo.style.opacity=\"1\"; b.classList.add(\"done\"); } })();\n    }, 520);\n  }\n  function renderBadge(animate, instant){\n    var b=document.getElementById(\"ole-badge\"); if(!b) return;\n    if(b._typingT){ clearTimeout(b._typingT); b._typingT=null; }\n    if(b._twT){ clearTimeout(b._twT); b._twT=null; }\n    b.style.minHeight=\"\";\n    var step=STEPS[state.i], r=state.reaction;\n    if(!r){ b.className=\"ole-hero-msg\"; b.innerHTML='<span class=\"ole-hero-cap\">'+esc(heroCapFor(step))+'<\/span>'; return; }\n    if(animate && !instant && !prefersReducedMotion()){ startTyping(b, r); }\n    else {\n      b.className=\"ole-hero-msg reacted\";\n      b.innerHTML='<span class=\"ole-q-mark\">'+String.fromCharCode(8220)+'<\/span><span class=\"ole-hero-cap\">'+esc(r.msg)+'<\/span>'+(r.emoji?'<span class=\"ole-emoji\">'+r.emoji+'<\/span>':'');\n      if(animate){ void b.offsetWidth; b.classList.add(\"bump\"); setTimeout(function(){ b.classList.remove(\"bump\"); },420); }\n    }\n  }\n\n  \/* =========================================================\n     5) STRUCTURE\n     ========================================================= *\/\n  root.innerHTML =\n    '<div class=\"ole-card\">'+\n      '<div class=\"ole-head\">'+\n        '<div class=\"ole-head-top\">'+\n          '<span class=\"ole-eyebrow\" id=\"ole-eyebrow\"><\/span>'+\n          '<button type=\"button\" class=\"ole-close\" id=\"ole-close\" aria-label=\"Chiudi il modulo\"><i data-lucide=\"x\"><\/i><\/button>'+\n        '<\/div>'+\n        '<div class=\"ole-progress-wrap\">'+\n          '<div class=\"ole-track\"><div class=\"ole-bar\" id=\"ole-bar\"><span class=\"ole-bar-shine\"><\/span><span class=\"ole-sun\"><\/span><\/div><\/div>'+\n          '<span class=\"ole-count\" id=\"ole-count\"><\/span>'+\n        '<\/div>'+\n      '<\/div>'+\n      '<div class=\"ole-body\" id=\"ole-body\"><\/div>'+\n      '<div class=\"ole-foot\" id=\"ole-foot\"><\/div>'+\n      '<div class=\"ole-confirm\" id=\"ole-confirm\">'+\n        '<div class=\"ole-confirm-sheet\">'+\n          '<div class=\"ole-confirm-ico\"><i data-lucide=\"log-out\"><\/i><\/div>'+\n          '<h4>Uscire dal modulo?<\/h4>'+\n          '<p>Le Sue risposte non verranno salvate. Mancano pochi passi per il Suo posto al sole di Spagna.<\/p>'+\n          '<div class=\"ole-confirm-actions\">'+\n            '<button type=\"button\" class=\"ole-confirm-stay\" id=\"ole-stay\">Continua<\/button>'+\n            '<button type=\"button\" class=\"ole-confirm-quit\" id=\"ole-quit\">Esci comunque<\/button>'+\n          '<\/div>'+\n        '<\/div>'+\n      '<\/div>'+\n      '<input class=\"ole-hp\" type=\"text\" name=\"Hypot_field\" id=\"ole-hp\" tabindex=\"-1\" autocomplete=\"off\" aria-hidden=\"true\">'+\n    '<\/div>';\n\n  var bodyEl=document.getElementById(\"ole-body\"), barEl=document.getElementById(\"ole-bar\"),\n      countEl=document.getElementById(\"ole-count\"), eyebrowEl=document.getElementById(\"ole-eyebrow\"),\n      footEl=document.getElementById(\"ole-foot\");\n  bodyEl.addEventListener(\"input\", saveSoon);\n  bodyEl.addEventListener(\"change\", saveSoon);\n  bodyEl.addEventListener(\"click\", saveSoon);\n\n  var confirmEl=document.getElementById(\"ole-confirm\");\n  document.getElementById(\"ole-close\").onclick=function(){ if(hasAnswers()){ confirmEl.classList.add(\"show\"); } else { quit(); } };\n  document.getElementById(\"ole-stay\").onclick=function(){ confirmEl.classList.remove(\"show\"); };\n  document.getElementById(\"ole-quit\").onclick=quit;\n  confirmEl.addEventListener(\"click\",function(e){ if(e.target===confirmEl) confirmEl.classList.remove(\"show\"); });\n  function quit(){ clearState(); if(CLOSE_URL){ window.location.href=CLOSE_URL; } else if(window.history && window.history.length>1){ window.history.back(); } else { confirmEl.classList.remove(\"show\"); } }\n\n  \/* =========================================================\n     6) RENDER\n     ========================================================= *\/\n  function stepNumber(){ var seq=ORDER.filter(function(id){ return !isEdu(id) || isRisksPath(); }); return { pos: seq.indexOf(STEPS[state.i].id)+1, total: seq.length }; }\n\n  function render(animClass){\n    var step=STEPS[state.i], n=stepNumber();\n    if(step.type===\"teach\" || step.type===\"callback\") state.reaction=null;\n    var rem=n.total-n.pos;\n    if(step.type===\"contact\") countEl.textContent=\"Ultimo passo\";\n    else if(rem===1) countEl.textContent=\"Ancora un passo!\";\n    else if(rem===2) countEl.textContent=\"Ancora 2 domande!\";\n    else countEl.textContent=\"Passo \"+n.pos+\" \/ \"+n.total;\n    barEl.style.width=Math.round((n.pos\/n.total)*100)+\"%\";\n    eyebrowEl.className=\"ole-eyebrow ebIn\";\n    eyebrowEl.innerHTML=(step.ebIco?'<span class=\"ole-ico ole-eb-ico\"><i data-lucide=\"'+step.ebIco+'\"><\/i><\/span>':'')+esc(step.eyebrow||\"\");\n\n    var wrap=document.createElement(\"div\");\n    wrap.className=\"ole-step \"+(animClass||\"in-right\");\n    wrap.innerHTML=stepHTML(step);\n    bodyEl.innerHTML=\"\"; bodyEl.appendChild(wrap);\n\n    renderFoot(step); wireStep(step, wrap); wireFoot(step); applyCascade(wrap);\n    bodyEl.scrollTop=0; renderBadge(true); refreshIcons(); clearFx(wrap); lockInput(); saveState();\n  }\n\n  function lockNow(){ bodyEl.style.pointerEvents=\"none\"; footEl.style.pointerEvents=\"none\"; }\n  function lockInput(){ lockNow(); setTimeout(function(){ bodyEl.style.pointerEvents=\"\"; footEl.style.pointerEvents=\"\"; state.busy=false; }, 450); }\n  function applyCascade(wrap){\n    if(prefersReducedMotion()) return;\n    var sel=\".ole-q, .ole-teach-body, .ole-quiz-ask, .ole-quiz-opt, .ole-opt, .ole-value-card, .ole-closing, .ole-field, .ole-recap, .ole-info-bonus, .ole-cb-label, .ole-cb-rdv\";\n    var els=[].slice.call(wrap.querySelectorAll(sel));\n    for(var i=0;i<els.length;i++){ els[i].classList.add(\"ole-rise\"); els[i].style.animationDelay=(0.03+Math.min(i,8)*0.05)+\"s\"; }\n  }\n  function clearFx(wrap){\n    setTimeout(function(){\n      wrap.classList.remove(\"in-right\",\"in-left\"); eyebrowEl.classList.remove(\"ebIn\");\n      var fx=wrap.querySelectorAll(\".fx\"); for(var i=0;i<fx.length;i++) fx[i].classList.remove(\"fx\");\n      var rs=wrap.querySelectorAll(\".ole-rise\"); for(var j=0;j<rs.length;j++){ rs[j].classList.remove(\"ole-rise\"); rs[j].style.animationDelay=\"\"; }\n    }, 1000);\n  }\n  function heroHTML(step){ if(!SHOW_HERO) return \"\"; return '<div class=\"ole-hero\"><div class=\"ole-hero-ico ole-ico fx\"><i data-lucide=\"'+(step.heroIco||\"sun\")+'\"><\/i><\/div><div class=\"ole-hero-msg\" id=\"ole-badge\"><\/div><\/div>'; }\n\n  function stepHTML(step){\n    var h=(step.id===\"timing\")?posHTML():\"\";\n    h+=heroHTML(step);\n    h += '<div class=\"ole-q\">'+esc(step.q)+(step.required?' <span class=\"req\">*<\/span>':'')+'<\/div>';\n    if(step.sub) h += '<div class=\"ole-sub\">'+esc(step.sub)+'<\/div>';\n\n    if(step.type===\"single\" || step.type===\"multi\"){\n      h += '<div class=\"ole-options\">';\n      step.options.forEach(function(opt){\n        var label=(typeof opt===\"object\")?opt.label:opt;\n        var icon=(typeof opt===\"object\"&&opt.ic)?opt.ic:\"circle\";\n        var tone=(typeof opt===\"object\"&&opt.tone)?(\" tone-\"+opt.tone):\"\";\n        var sel=isSelected(step,label)?\" sel\":\"\";\n        h += '<button type=\"button\" class=\"ole-opt'+tone+sel+'\" data-type=\"'+step.type+'\" data-val=\"'+esc(label)+'\"><span class=\"ole-opt-ico ole-ico\"><i data-lucide=\"'+icon+'\"><\/i><\/span><span class=\"ole-opt-label\">'+esc(label)+'<\/span><span class=\"ole-mark\"><\/span><\/button>';\n      });\n      h += '<\/div>';\n    }\n    else if(step.type===\"budget\"){\n      var bv=state.answers.budget?nf.format(state.answers.budget):\"\";\n      h += '<div class=\"ole-field has-ico\"><span class=\"ole-field-ico ole-ico\"><i data-lucide=\"euro\"><\/i><\/span><input class=\"ole-input\" id=\"ole-budget\" inputmode=\"numeric\" autocomplete=\"off\" placeholder=\"'+esc(step.placeholder)+'\" value=\"'+esc(bv)+'\"><\/div>';\n      h += '<div class=\"ole-errmsg\" id=\"err-budget\"><\/div>';\n      h += '<div class=\"ole-pills\">';\n      step.pills.forEach(function(v){ h += '<button type=\"button\" class=\"ole-pill'+(state.answers.budget===v?\" sel\":\"\")+'\" data-budget=\"'+v+'\">'+fmt(v)+'<\/button>'; });\n      h += '<\/div>';\n    }\n    else if(step.type===\"location\"){\n      var lv=state.answers.location||\"\";\n      h += '<div class=\"ole-field has-ico\"><span class=\"ole-field-ico ole-ico\"><i data-lucide=\"search\"><\/i><\/span><input class=\"ole-input\" id=\"ole-loc\" autocomplete=\"off\" placeholder=\"'+esc(step.placeholder)+'\" value=\"'+esc(lv)+'\"><\/div>';\n      h += '<div class=\"ole-pills loc-pills\">';\n      step.cities.forEach(function(c){ h += '<button type=\"button\" class=\"ole-pill'+(state.answers.location===c?\" sel\":\"\")+'\" data-loc=\"'+esc(c)+'\">'+esc(c)+'<\/button>'; });\n      h += '<\/div><div class=\"ole-pills sep loc-pills\">';\n      step.regions.forEach(function(r){ h += '<button type=\"button\" class=\"ole-pill region'+(state.answers.location===r?\" sel\":\"\")+'\" data-loc=\"'+esc(r)+'\"><span class=\"ole-pill-ico ole-ico\"><i data-lucide=\"waves\"><\/i><\/span>'+esc(r)+'<\/button>'; });\n      h += '<\/div>';\n    }\n    else if(step.type===\"teach\"){\n      var showQuiz = step.quiz && (RISKS_FORMAT===\"quiz\" || (RISKS_FORMAT===\"mix\" && step.quizMix));\n      if(showQuiz){\n        h += '<div class=\"ole-quiz\"><div class=\"ole-quiz-ask\">'+esc(step.quiz.ask)+'<\/div><div class=\"ole-quiz-opts\">';\n        step.quiz.options.forEach(function(o,idx){ h += '<button type=\"button\" class=\"ole-quiz-opt\" data-correct=\"'+(o.correct?\"1\":\"0\")+'\" data-idx=\"'+idx+'\"><span class=\"ole-quiz-mark\"><\/span><span class=\"ole-quiz-lbl\">'+esc(o.label)+'<\/span><\/button>'; });\n        h += '<\/div><div class=\"ole-quiz-reveal\" id=\"ole-quiz-reveal\"><div class=\"ole-quiz-reveal-ico ole-ico\"><i data-lucide=\"lightbulb\"><\/i><\/div><div class=\"ole-quiz-reveal-txt\">'+esc(step.quiz.reveal)+'<\/div><\/div><\/div>';\n      } else if(step.body){ h += '<div class=\"ole-teach-body\">'+esc(step.body)+'<\/div>'; }\n      if(step.valueRecap){\n        var vr=step.valueRecap; h += '<div class=\"ole-value\">';\n        if(vr.saves && vr.saves.length){ h += '<div class=\"ole-value-card gain\"><div class=\"ole-value-title\"><span class=\"ole-ico\"><i data-lucide=\"piggy-bank\"><\/i><\/span>Che cosa Le facciamo risparmiare<\/div>'; vr.saves.forEach(function(it){ h += '<div class=\"ole-value-item\"><span class=\"ole-value-ico ole-ico\"><i data-lucide=\"'+it.ic+'\"><\/i><\/span><span>'+esc(it.t)+'<\/span><\/div>'; }); h += '<\/div>'; }\n        if(vr.avoids && vr.avoids.length){ h += '<div class=\"ole-value-card avoid\"><div class=\"ole-value-title\"><span class=\"ole-ico\"><i data-lucide=\"shield-check\"><\/i><\/span>Le trappole da cui La teniamo lontano<\/div>'; vr.avoids.forEach(function(it){ h += '<div class=\"ole-value-item\"><span class=\"ole-value-ico ole-ico\"><i data-lucide=\"'+it.ic+'\"><\/i><\/span><span>'+esc(it.t)+'<\/span><\/div>'; }); h += '<\/div>'; }\n        h += '<\/div>';\n      }\n      if(step.closing) h += '<div class=\"ole-closing\"><div class=\"ole-closing-ico ole-ico\"><i data-lucide=\"badge-check\"><\/i><\/div><div><div class=\"ole-closing-t\">'+esc(step.closing.t)+'<\/div><div class=\"ole-closing-d\">'+esc(step.closing.d)+'<\/div><\/div><\/div>';\n    }\n    else if(step.type===\"callback\"){\n      cbInitZone();\n      var zNow=cbZoneShort(); var isOther=!cbIsUsZone();\n      h += '<div class=\"ole-cb-fields'+(state.answers.cb_rdv?\" hidden\":\"\")+'\" id=\"ole-cb-fields\">';\n      h += '<div class=\"ole-cb-label\"><span class=\"ole-ico\"><i data-lucide=\"globe\"><\/i><\/span>Il Suo fuso orario<\/div>';\n      h += '<div class=\"ole-pills ole-cb-zones\" id=\"ole-cb-zones\">';\n      US_ZONES.forEach(function(z){ h += '<button type=\"button\" class=\"ole-pill'+(!isOther && state.answers.cb_tz===z.tz?\" sel\":\"\")+'\" data-cbzone=\"'+z.l+'\" data-cbtz=\"'+z.tz+'\">'+esc(z.l)+'<\/button>'; });\n      h += '<button type=\"button\" class=\"ole-pill'+(isOther?\" sel\":\"\")+'\" data-cbother=\"1\"><span class=\"ole-pill-ico ole-ico\"><i data-lucide=\"globe-2\"><\/i><\/span>Altro Paese<\/button>';\n      h += '<\/div>';\n      h += '<select class=\"ole-cb-select'+(isOther?\" show\":\"\")+'\" id=\"ole-cb-select\" aria-label=\"Selezioni il Suo fuso orario\"><option value=\"\">Selezioni il Suo Paese \/ fuso orario\u2026<\/option>';\n      WORLD_ZONES.forEach(function(z){ h += '<option value=\"'+esc(z.tz)+'\" data-s=\"'+esc(z.s)+'\"'+(isOther && state.answers.cb_tz===z.tz?\" selected\":\"\")+'>'+esc(z.l)+'<\/option>'; });\n      h += '<\/select>';\n      h += '<div class=\"ole-cb-label sep\"><span class=\"ole-ico\"><i data-lucide=\"calendar\"><\/i><\/span>Giorno<\/div>';\n      h += '<div class=\"ole-pills ole-cb-days\" id=\"ole-cb-days\">';\n      step.days.forEach(function(d){ var sel=(Array.isArray(state.answers.cb_days)&&state.answers.cb_days.indexOf(d.label)>-1)?\" sel\":\"\"; h += '<button type=\"button\" class=\"ole-pill'+sel+'\" data-cbday=\"'+esc(d.label)+'\" data-dow=\"'+d.dow+'\">'+esc(CB_DAY_SHORT[d.label]||d.label)+'<\/button>'; });\n      h += '<button type=\"button\" class=\"ole-pill'+(state.answers.cb_days_indif?\" sel\":\"\")+'\" data-cbday-indif=\"1\">Qualsiasi giorno<\/button>';\n      h += '<\/div>';\n      h += '<div class=\"ole-cb-label sep\"><span class=\"ole-ico\"><i data-lucide=\"clock\"><\/i><\/span>Fascia oraria<\/div>';\n      h += 'Orari nel Suo fuso orario locale ('+esc(zNow)+'). Chiamiamo solo durante l\u2019orario d\u2019ufficio spagnolo: queste fasce corrispondono gi\u00e0 ai momenti in cui possiamo raggiungerLa.<\/div>';\n      h += '<div class=\"ole-pills ole-cb-slots\" id=\"ole-cb-slots\">'+cbSlotsHTML()+'<\/div>';\n      h += '<div class=\"ole-cb-empty\" id=\"ole-cb-empty\" style=\"'+(cbHasSlots()?\"display:none\":\"\")+'\">Con la differenza di fuso orario tra la Spagna e la Sua zona, le fasce di chiamata disponibili per questo giorno sono molto limitate. Scelga <strong>\u00abQualsiasi ora va bene\u00bb<\/strong> e troveremo il momento migliore, oppure prenoti una call per fissare un orario.<\/div>';\n      h += '<div class=\"ole-cb-precise'+(state.answers.cb_precise?\" show\":\"\")+'\" id=\"ole-cb-precise\"><div class=\"ole-cb-precise-inner\"><div class=\"ole-cb-mini\">Quale orario preferisce?<\/div><div class=\"ole-pills ole-cb-hours\" id=\"ole-cb-hours\">'+cbHoursHTML()+'<\/div><div class=\"ole-cb-precise-note'+(state.answers.cb_precise&&state.answers.cb_hour!=null?\" show\":\"\")+'\" id=\"ole-cb-precise-note\"><span class=\"ole-cb-precise-note-ico ole-ico\"><i data-lucide=\"info\"><\/i><\/span><div class=\"ole-cb-precise-note-body\"><span id=\"ole-cb-precise-note-txt\">'+esc(cbPreciseMsg())+'<\/span><button type=\"button\" class=\"ole-cb-precise-rdv\" id=\"ole-cb-precise-rdv\"><span class=\"ole-ico\"><i data-lucide=\"calendar-check\"><\/i><\/span>Prenota una call<\/button><\/div><\/div><\/div><\/div>';\n      h += '<div class=\"ole-cb-office\"><span class=\"ole-ico\"><i data-lucide=\"info\"><\/i><\/span><span>Siamo in Spagna e chiamiamo durante il nostro orario di lavoro (9:00\u201319:00 CET, lun\u2013ven). Faremo il possibile per raggiungerLa nella fascia scelta.<\/span><\/div>';\n      h += '<\/div>';\n      h += '<button type=\"button\" class=\"ole-cb-rdv'+(state.answers.cb_rdv?\" on\":\"\")+'\" id=\"ole-cb-rdv\" aria-pressed=\"'+(state.answers.cb_rdv?\"true\":\"false\")+'\"><span class=\"ole-cb-rdv-mark\"><\/span><span class=\"ole-cb-rdv-ico ole-ico\"><i data-lucide=\"calendar-check\"><\/i><\/span><span class=\"ole-cb-rdv-txt\">Preferisco prenotare direttamente una call<\/span><\/button>';\n      h += '<div class=\"ole-cb-rdv-note'+(state.answers.cb_rdv?\" show\":\"\")+'\" id=\"ole-cb-rdv-note\"><span class=\"ole-cb-rdv-note-ico ole-ico\"><i data-lucide=\"info\"><\/i><\/span><span>Al termine del modulo verr\u00e0 indirizzato alla nostra pagina di prenotazione per scegliere direttamente un orario con un consulente.<\/span><\/div>';\n    }\n    else if(step.type===\"contact\"){\n      var a=state.answers;\n      h += recapHTML();\n      h += proofHTML();\n      h += '<form class=\"ole-cform\" autocomplete=\"on\" onsubmit=\"return false;\">'+\n           '<div class=\"ole-grid2\">'+ field(\"firstname\",\"Nome\",\"text\",a.firstname,\"Maria\",\"given-name\")+ field(\"lastname\",\"Cognome\",\"text\",a.lastname,\"Rossi\",\"family-name\")+ '<\/div>'+\n           field(\"email\",\"E-mail\",\"email\",a.email,\"maria.rossi@email.com\",\"email\")+\n           '<div class=\"ole-suggest\" id=\"sugg-email\" aria-live=\"polite\"><\/div>'+\n           '<div class=\"ole-phone-msg\" id=\"ole-phone-msg\"><\/div>'+\n           field(\"phone\",\"Telefono\",\"tel\",a.phone,\"333 123 4567\",\"tel\")+\n           '<div class=\"ole-consent\"><span class=\"ole-ico\"><i data-lucide=\"shield-check\"><\/i><\/span><span>'+esc(step.consent)+' <a class=\"ole-consent-link\" href=\"'+esc(PRIVACY_URL)+'\" target=\"_blank\" rel=\"noopener noreferrer\">Informativa sulla privacy<\/a>. <span style=\"color:var(--blue)\">*<\/span><\/span><\/div>'+\n           '<\/form>';\n    }\n    return h;\n  }\n\n  var PROOF_LINES = [\n    'Lavorer\u00e0 con un consulente dedicato, <strong>di lingua inglese<\/strong>, dalla ricerca alla firma.',\n    'Siamo i Suoi <strong>occhi e orecchie<\/strong> sul posto, in Spagna.',\n    'Ci occupiamo della burocrazia \u2014 <strong>NIE, notaio, banca<\/strong> \u2014 cos\u00ec Lei non deve farlo.',\n    'Il momento migliore per iniziare era ieri. Il secondo migliore \u00e8 <strong>adesso<\/strong>.',\n    'Il Suo posto sotto il sole spagnolo potrebbe essere <strong>pi\u00f9 vicino di quanto potrebbe pensare<\/strong>.'\n  ];\n  function proofHTML(){ return '<div class=\"ole-proof\"><span class=\"ole-proof-ico ole-ico\"><i data-lucide=\"sparkles\"><\/i><\/span><span class=\"ole-proof-rot\" id=\"ole-proof-rot\"><\/span><\/div>'; }\n  function initProof(wrap){\n    var el=wrap.querySelector(\"#ole-proof-rot\"); if(!el) return; var i=0;\n    if(state._proofIv){ clearInterval(state._proofIv); }\n    el.innerHTML='<span class=\"ole-proof-line\">'+PROOF_LINES[0]+'<\/span>';\n    state._proofIv=setInterval(function(){ el.classList.add(\"out\"); setTimeout(function(){ i=(i+1)%PROOF_LINES.length; el.innerHTML='<span class=\"ole-proof-line\">'+PROOF_LINES[i]+'<\/span>'; el.classList.remove(\"out\"); },450); },5200);\n  }\n\n  function field(id,label,type,val,ph,ac){\n    var im=(type===\"email\")?'inputmode=\"email\" ':(type===\"tel\")?'inputmode=\"tel\" ':'';\n    var extra=(type===\"email\")?'autocapitalize=\"off\" autocorrect=\"off\" spellcheck=\"false\" ':(type===\"text\")?'autocapitalize=\"words\" ':'';\n    return '<div class=\"ole-field\"><label class=\"ole-label\" for=\"ole-'+id+'\">'+esc(label)+' <span class=\"req\">*<\/span><\/label><input class=\"ole-input\" id=\"ole-'+id+'\" name=\"'+id+'\" type=\"'+type+'\" autocomplete=\"'+(ac||\"on\")+'\" '+im+extra+'value=\"'+esc(val||\"\")+'\" placeholder=\"'+esc(ph)+'\"><div class=\"ole-errmsg\" id=\"err-'+id+'\"><\/div><\/div>';\n  }\n\n  function renderFoot(step){\n    var html=\"\", primary=\"\";\n    if(step.type===\"contact\"){\n      var ctaCity=state.answers.location?cityName(state.answers.location):\"\";\n      var ctaLabel=ctaCity?(\"Avvia la mia ricerca \"+locWithPrep(ctaCity)):\"Invia la mia richiesta\";\n      primary='<button type=\"button\" class=\"ole-next sun\" id=\"ole-next\"><span class=\"ole-spin\" id=\"ole-spin\"><\/span><span id=\"ole-next-label\">'+esc(ctaLabel)+'<\/span> <i data-lucide=\"check\"><\/i><\/button>';\n    } else if(step.type===\"teach\"){ primary='<button type=\"button\" class=\"ole-next\" id=\"ole-next\">'+esc(step.cta||\"Avanti\")+' <i data-lucide=\"arrow-right\"><\/i><\/button>'; }\n    else if(step.type===\"multi\" || step.type===\"budget\" || step.type===\"location\" || step.type===\"callback\"){ primary='<button type=\"button\" class=\"ole-next\" id=\"ole-next\">Avanti <i data-lucide=\"arrow-right\"><\/i><\/button>'; }\n    if(primary) html += primary;\n    if(step.type===\"contact\") html += '<div class=\"ole-trust\"><span><i data-lucide=\"lock\"><\/i> Nessun impegno<\/span><span><i data-lucide=\"clock\"><\/i> Risposta entro 24 ore<\/span><span><i data-lucide=\"message-circle\"><\/i> Team di lingua inglese<\/span><\/div>';\n    if(step.type===\"teach\" && step.skip) html += '<button type=\"button\" class=\"ole-skip\" id=\"ole-skip\">Salta questo passaggio<\/button>';\n    if(state.history.length>0) html += '<button type=\"button\" class=\"ole-back\" id=\"ole-back\"><i data-lucide=\"chevron-left\"><\/i> Indietro<\/button>';\n    footEl.innerHTML=html;\n  }\n\n  function isSelected(step,label){ var v=state.answers[step.id]; if(step.type===\"multi\") return Array.isArray(v)&&v.indexOf(label)>-1; return v===label; }\n\n  \/* =========================================================\n     7) INTERACTIONS\n     ========================================================= *\/\n  function wireFoot(step){\n    var back=footEl.querySelector(\"#ole-back\"); if(back) back.onclick=prev;\n    var next=footEl.querySelector(\"#ole-next\"); if(!next) return;\n    if(step.type===\"contact\") next.onclick=submit;\n    else if(step.type===\"teach\"){ next.onclick=function(){ nextStep(); }; var sk=footEl.querySelector(\"#ole-skip\"); if(sk) sk.onclick=skipToContact; }\n    else next.onclick=function(){ if(validate(step)) nextStep(); };\n  }\n\n  function wireStep(step, wrap){\n    var posT = wrap.querySelector(\"#ole-pos-toggle\");\n    if(posT) posT.onclick=function(){ var p=wrap.querySelector(\"#ole-pos\"); if(p){ var open=p.classList.toggle(\"open\"); posT.setAttribute(\"aria-expanded\", open?\"true\":\"false\"); } refreshIcons(); };\n    if(step.type===\"single\" || step.type===\"multi\"){\n      wrap.querySelectorAll(\".ole-opt\").forEach(function(btn){\n        btn.onclick=function(){\n          var val=btn.getAttribute(\"data-val\");\n          if(step.type===\"multi\"){\n            var arr=state.answers[step.id]||[]; var k=arr.indexOf(val);\n            if(k>-1) arr.splice(k,1); else arr.push(val);\n            state.answers[step.id]=arr; btn.classList.toggle(\"sel\"); btn.classList.add(\"pulse\");\n            setTimeout(function(){btn.classList.remove(\"pulse\");},350); showReaction(step, arr);\n          } else {\n            wrap.querySelectorAll(\".ole-opt\").forEach(function(b){b.classList.remove(\"sel\");});\n            btn.classList.add(\"sel\",\"pulse\"); state.answers[step.id]=val; setReaction(step, val); lockAdvance();\n          }\n        };\n      });\n    }\n    else if(step.type===\"budget\"){\n      var inp=wrap.querySelector(\"#ole-budget\");\n      function applyBudget(el){\n        var raw=el.value, caret=el.selectionStart==null?raw.length:el.selectionStart;\n        var before=raw.slice(0,caret).replace(\/\\D\/g,\"\").length;\n        var d=raw.replace(\/[^\\d]\/g,\"\"); state.answers.budget=d?parseInt(d,10):null;\n        var f=d?nf.format(parseInt(d,10)):\"\"; el.value=f;\n        var pos=0,seen=0; while(pos<f.length && seen<before){ var c=f.charCodeAt(pos); if(c>=48&&c<=57) seen++; pos++; }\n        try{ el.setSelectionRange(pos,pos); }catch(e){}\n        wrap.querySelectorAll(\".ole-pill\").forEach(function(p){ p.classList.toggle(\"sel\", parseInt(p.dataset.budget,10)===state.answers.budget); });\n        showReaction(step, state.answers.budget, true); setErr(\"budget\",\"\");\n      }\n      inp.addEventListener(\"input\",function(){ applyBudget(inp); });\n      wrap.querySelectorAll(\".ole-pill\").forEach(function(p){ p.onclick=function(){ var v=parseInt(p.dataset.budget,10); state.answers.budget=v; inp.value=nf.format(v); wrap.querySelectorAll(\".ole-pill\").forEach(function(x){x.classList.toggle(\"sel\",x===p);}); setReaction(step, v); lockAdvance(); }; });\n    }\n    else if(step.type===\"location\"){\n      var loc=wrap.querySelector(\"#ole-loc\");\n      var pills=[].slice.call(wrap.querySelectorAll(\".ole-pill\"));\n      pills.forEach(function(p){ p.onclick=function(){ var v=p.getAttribute(\"data-loc\"); state.answers.location=v; loc.value=v; pills.forEach(function(x){x.classList.toggle(\"sel\",x===p);}); setReaction(step, v); lockAdvance(); }; });\n      loc.addEventListener(\"input\",function(){ state.answers.location=loc.value; showReaction(step, loc.value, true); var t=loc.value.toLowerCase().trim(); pills.forEach(function(p){ p.classList.toggle(\"sel\", p.getAttribute(\"data-loc\")===loc.value); p.classList.toggle(\"hidden\", t.length>0 && p.getAttribute(\"data-loc\").toLowerCase().indexOf(t)===-1); }); });\n      if(HS.googleMapsKey) loadGoogleMaps(HS.googleMapsKey, function(){ gMapsReady=true; initLocationAutocomplete(loc, pills, step); });\n    }\n    else if(step.type===\"contact\"){\n      [\"firstname\",\"lastname\",\"email\"].forEach(function(id){ var el=wrap.querySelector(\"#ole-\"+id); if(el) el.addEventListener(\"input\", function(){ if(id===\"email\"){ var lo=el.value.toLowerCase(); if(lo!==el.value){ var p=el.selectionStart; el.value=lo; try{ el.setSelectionRange(p,p); }catch(e){} } } state.answers[id]=el.value; }); });\n      var phEl=wrap.querySelector(\"#ole-phone\"); if(phEl) phEl.addEventListener(\"input\", function(){ state.answers.phone=phEl.value; });\n      var em=wrap.querySelector(\"#ole-email\"), sug=wrap.querySelector(\"#sugg-email\");\n      function clearSug(){ if(sug){ sug.innerHTML=\"\"; sug.classList.remove(\"show\"); } }\n      function checkSug(){ if(!em||!sug) return; var s=suggestEmail(em.value.trim()); if(s){ sug.innerHTML='Intendeva <button type=\"button\" class=\"ole-suggest-link\" data-email=\"'+esc(s)+'\">'+esc(s)+'<\/button>?'; sug.classList.add(\"show\"); } else clearSug(); }\n      if(em){ em.addEventListener(\"blur\", checkSug); em.addEventListener(\"input\", clearSug); }\n      if(sug){ sug.addEventListener(\"click\", function(e){ var t=e.target; if(t&&t.classList&&t.classList.contains(\"ole-suggest-link\")){ em.value=t.getAttribute(\"data-email\"); state.answers.email=em.value; clearSug(); setErr(\"email\",\"\"); em.focus(); } }); }\n      initPhone(wrap); initProof(wrap);\n      var cbEdit=wrap.querySelector(\"#ole-recap-cb-edit\");\n      if(cbEdit){ var goEditCb=function(){ if(state.busy) return; var t=stepIndexById(\"callback\"); if(t<0||t===state.i) return; if(state.history.length && state.history[state.history.length-1]===t) transitionTo(state.history.pop(),-1); else transitionTo(t,-1); }; cbEdit.addEventListener(\"click\", goEditCb); cbEdit.addEventListener(\"keydown\", function(e){ if(e.key===\"Enter\"||e.key===\" \"){ e.preventDefault(); goEditCb(); } }); }\n      var cform=wrap.querySelector(\".ole-cform\"); if(cform) cform.addEventListener(\"keydown\", function(e){ if(e.key===\"Enter\"){ e.preventDefault(); submit(); } });\n      var noteEl=wrap.querySelector(\"#ole-recap-note\");\n      if(noteEl){ var noteTxt=noteEl.getAttribute(\"data-note\")||\"\"; if(noteTxt){ if(state._noteT) clearTimeout(state._noteT); if(state._noteTw) clearTimeout(state._noteTw); state._noteT=setTimeout(function(){ noteEl.classList.add(\"writing\"); var i=0; (function tick(){ noteEl.textContent=noteTxt.slice(0,i); if(i<noteTxt.length){ i++; state._noteTw=setTimeout(tick,30); } else { state._noteTw=null; noteEl.classList.remove(\"writing\"); } })(); },2000); } }\n    }\n    else if(step.type===\"callback\"){\n      var fieldsEl=wrap.querySelector(\"#ole-cb-fields\"), slotsEl=wrap.querySelector(\"#ole-cb-slots\"), noteEl=wrap.querySelector(\"#ole-cb-rdv-note\");\n      var rdvBtn=wrap.querySelector(\"#ole-cb-rdv\"), preciseEl=wrap.querySelector(\"#ole-cb-precise\"), hoursEl=wrap.querySelector(\"#ole-cb-hours\");\n      var pNoteEl=wrap.querySelector(\"#ole-cb-precise-note\"), pNoteTxt=wrap.querySelector(\"#ole-cb-precise-note-txt\"), pRdvBtn=wrap.querySelector(\"#ole-cb-precise-rdv\");\n      var hintEl=wrap.querySelector(\".ole-cb-hint\");\n      var selEl=wrap.querySelector(\"#ole-cb-select\");\n      var emptyEl=wrap.querySelector(\"#ole-cb-empty\");\n      cbInitZone();\n      function cbSyncEmpty(){ if(emptyEl) emptyEl.style.display = cbHasSlots()?\"none\":\"\"; }\n      function cbHint(){ if(hintEl) hintEl.textContent=\"Orari nel Suo fuso orario locale (\"+cbZoneShort()+\"). Chiamiamo solo durante l\u2019orario d\u2019ufficio spagnolo: queste fasce corrispondono gi\u00e0 ai momenti in cui possiamo raggiungerLa.\"; }\n      function cbUpdate(){ state.reaction=cbReaction(); renderBadge(true); saveSoon(); }\n      function cbSetRdv(on){ state.answers.cb_rdv=on; if(rdvBtn){ rdvBtn.classList.toggle(\"on\",on); rdvBtn.setAttribute(\"aria-pressed\",on?\"true\":\"false\"); } if(fieldsEl) fieldsEl.classList.toggle(\"hidden\",on); if(noteEl) noteEl.classList.toggle(\"show\",on); cbUpdate(); }\n      function cbSyncPrecise(){ if(preciseEl) preciseEl.classList.toggle(\"show\", !!state.answers.cb_precise); if(pNoteEl) pNoteEl.classList.toggle(\"show\", !!(state.answers.cb_precise&&state.answers.cb_hour!=null)); if(pNoteTxt) pNoteTxt.textContent=cbPreciseMsg(); }\n      function cbWireHours(){ if(!hoursEl) return; hoursEl.querySelectorAll(\"[data-cbhour]\").forEach(function(btn){ btn.onclick=function(){ var v=parseInt(btn.getAttribute(\"data-cbhour\"),10), was=btn.classList.contains(\"sel\"); hoursEl.querySelectorAll(\"[data-cbhour]\").forEach(function(b){b.classList.remove(\"sel\");}); if(!was){ btn.classList.add(\"sel\"); state.answers.cb_hour=v; } else state.answers.cb_hour=null; cbSyncPrecise(); cbUpdate(); }; }); }\n      function cbRefreshHours(){ if(!hoursEl) return; var allowed=cbHours(); if(state.answers.cb_hour!=null && allowed.indexOf(state.answers.cb_hour)===-1) state.answers.cb_hour=null; hoursEl.innerHTML=cbHoursHTML(); cbWireHours(); refreshIcons(); }\n      function cbClearAny(){ state.answers.cb_any=false; var ab=slotsEl.querySelector(\"[data-cbany]\"); if(ab) ab.classList.remove(\"sel\"); }\n      function cbWireSlots(){\n        slotsEl.querySelectorAll(\"[data-cbslot]\").forEach(function(btn){ btn.onclick=function(){ var v=parseInt(btn.getAttribute(\"data-cbslot\"),10), was=btn.classList.contains(\"sel\"); slotsEl.querySelectorAll(\"[data-cbslot]\").forEach(function(b){b.classList.remove(\"sel\");}); state.answers.cb_precise=false; state.answers.cb_hour=null; cbClearAny(); var pp=slotsEl.querySelector(\"[data-cbprecise]\"); if(pp) pp.classList.remove(\"sel\"); if(!was){ btn.classList.add(\"sel\"); state.answers.cb_slot=v; } else state.answers.cb_slot=null; cbSyncPrecise(); cbUpdate(); }; });\n        var pBtn=slotsEl.querySelector(\"[data-cbprecise]\");\n        if(pBtn) pBtn.onclick=function(){ var on=!state.answers.cb_precise; state.answers.cb_precise=on; cbClearAny(); if(on){ state.answers.cb_slot=null; slotsEl.querySelectorAll(\"[data-cbslot]\").forEach(function(b){b.classList.remove(\"sel\");}); } else { state.answers.cb_hour=null; } pBtn.classList.toggle(\"sel\",on); cbRefreshHours(); cbSyncPrecise(); cbUpdate(); };\n        var anyBtn=slotsEl.querySelector(\"[data-cbany]\");\n        if(anyBtn) anyBtn.onclick=function(){ var on=!state.answers.cb_any; state.answers.cb_any=on; if(on){ state.answers.cb_slot=null; state.answers.cb_precise=false; state.answers.cb_hour=null; slotsEl.querySelectorAll(\"[data-cbslot]\").forEach(function(b){b.classList.remove(\"sel\");}); var pp=slotsEl.querySelector(\"[data-cbprecise]\"); if(pp) pp.classList.remove(\"sel\"); } anyBtn.classList.toggle(\"sel\",on); cbRefreshHours(); cbSyncPrecise(); cbUpdate(); };\n      }\n      function cbRefreshSlots(){ if(state.answers.cb_slot!=null){ var ok=cbCurrentSlots().some(function(s){return s.h===state.answers.cb_slot;}); if(!ok) state.answers.cb_slot=null; } slotsEl.innerHTML=cbSlotsHTML(); cbWireSlots(); cbRefreshHours(); cbSyncPrecise(); cbSyncEmpty(); refreshIcons(); }\n      function cbSetZone(tz, label){ state.answers.cb_tz=tz; state.answers.cb_zone=label||cbShortFromTz(tz); cbHint(); cbRefreshSlots(); cbUpdate(); }\n      \/\/ US zone pills\n      wrap.querySelectorAll(\"[data-cbzone]\").forEach(function(btn){ btn.onclick=function(){ wrap.querySelectorAll(\"[data-cbzone]\").forEach(function(b){ b.classList.remove(\"sel\"); }); btn.classList.add(\"sel\"); var ob=wrap.querySelector(\"[data-cbother]\"); if(ob) ob.classList.remove(\"sel\"); if(selEl){ selEl.classList.remove(\"show\"); selEl.value=\"\"; } cbSetZone(btn.getAttribute(\"data-cbtz\"), btn.getAttribute(\"data-cbzone\")); }; });\n      \/\/ \"Altro Paese\" pill -> reveal world-zone select\n      var otherBtn=wrap.querySelector(\"[data-cbother]\");\n      if(otherBtn) otherBtn.onclick=function(){ wrap.querySelectorAll(\"[data-cbzone]\").forEach(function(b){ b.classList.remove(\"sel\"); }); otherBtn.classList.add(\"sel\"); if(selEl){ selEl.classList.add(\"show\"); try{ selEl.focus(); }catch(e){} } };\n      if(selEl) selEl.addEventListener(\"change\", function(){ var tz=selEl.value; if(!tz) return; var opt=selEl.options[selEl.selectedIndex]; var s=opt?opt.getAttribute(\"data-s\"):null; wrap.querySelectorAll(\"[data-cbzone]\").forEach(function(b){ b.classList.remove(\"sel\"); }); if(otherBtn) otherBtn.classList.add(\"sel\"); cbSetZone(tz, s); });\n      \/\/ Day pills (Saturday exclusive)\n      wrap.querySelectorAll(\"[data-cbday]\").forEach(function(btn){ btn.onclick=function(){ var label=btn.getAttribute(\"data-cbday\"); state.answers.cb_days_indif=false; var di=wrap.querySelector(\"[data-cbday-indif]\"); if(di) di.classList.remove(\"sel\"); var arr=state.answers.cb_days||[]; var wasSel=arr.indexOf(label)>-1; if(label===\"Sat\"){ arr=wasSel?[]:[\"Sat\"]; } else { arr=arr.filter(function(x){return x!==\"Sat\";}); var k=arr.indexOf(label); if(k>-1) arr.splice(k,1); else arr.push(label); } state.answers.cb_days=arr; wrap.querySelectorAll(\"[data-cbday]\").forEach(function(b){ b.classList.toggle(\"sel\", arr.indexOf(b.getAttribute(\"data-cbday\"))>-1); }); btn.classList.add(\"pulse\"); setTimeout(function(){btn.classList.remove(\"pulse\");},350); cbRefreshSlots(); cbUpdate(); }; });\n      var dind=wrap.querySelector(\"[data-cbday-indif]\");\n      if(dind) dind.onclick=function(){ var on=!dind.classList.contains(\"sel\"); state.answers.cb_days_indif=on; state.answers.cb_days=[]; wrap.querySelectorAll(\"[data-cbday]\").forEach(function(b){b.classList.remove(\"sel\");}); dind.classList.toggle(\"sel\",on); cbRefreshSlots(); cbUpdate(); };\n      cbWireSlots(); cbWireHours(); cbSyncPrecise(); cbSyncEmpty();\n      if(pRdvBtn) pRdvBtn.onclick=function(){ cbSetRdv(true); };\n      if(rdvBtn) rdvBtn.onclick=function(){ cbSetRdv(!state.answers.cb_rdv); };\n    }\n    if(step.type===\"teach\"){\n      var quiz=wrap.querySelector(\".ole-quiz\");\n      if(quiz){\n        var opts=[].slice.call(quiz.querySelectorAll(\".ole-quiz-opt\")); var reveal=quiz.querySelector(\"#ole-quiz-reveal\");\n        opts.forEach(function(b){ b.onclick=function(){ if(quiz.classList.contains(\"answered\")) return; quiz.classList.add(\"answered\"); var correct=b.getAttribute(\"data-correct\")===\"1\"; opts.forEach(function(x){ var isC=x.getAttribute(\"data-correct\")===\"1\"; if(isC){ x.classList.add(\"correct\"); } if(x===b && !correct){ x.classList.add(\"wrong\"); } x.classList.add(\"locked\"); }); if(reveal) reveal.classList.add(\"show\"); state.reaction=correct?{emoji:\"\\uD83D\\uDC4F\",msg:pickVaried(QUIZ_OK,\"_qok\")}:{emoji:\"\\uD83D\\uDE2C\",msg:pickVaried(QUIZ_KO,\"_qko\")}; renderBadge(true); refreshIcons(); }; });\n      }\n    }\n  }\n\n  function lockAdvance(){ if(state.locked) return; state.locked=true; setTimeout(function(){ state.locked=false; nextStep(); }, 340); }\n\n  \/* =========================================================\n     8) VALIDATION\n     ========================================================= *\/\n  function validate(step){\n    if(step.type===\"contact\") return validateContact();\n    if(!step.required) return true;\n    var v=state.answers[step.id];\n    if(step.type===\"multi\") return Array.isArray(v)&&v.length>0;\n    if(step.type===\"budget\"){ if(!v||v<=0){ setErr(\"budget\",\"Inserisca il budget per continuare.\"); return false; } if(step.min&&v<step.min){ setErr(\"budget\",\"Lavoriamo su progetti a partire da \"+fmt(step.min)+\" in su.\"); return false; } setErr(\"budget\",\"\"); return true; }\n    return !!v;\n  }\n  function validateContact(){\n    var ok=true;\n    [[\"firstname\",\"Inserisca il Suo nome\"],[\"lastname\",\"Inserisca il Suo cognome\"]].forEach(function(f){ var el=document.getElementById(\"ole-\"+f[0]); var v=el.value.trim(); state.answers[f[0]]=v; setErr(f[0], v?\"\":f[1]); if(!v) ok=false; });\n    var ev=document.getElementById(\"ole-email\").value.trim(); state.answers.email=ev;\n    var emOk=\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$\/.test(ev); setErr(\"email\", emOk?\"\":\"Inserisca un indirizzo e-mail valido\"); if(!emOk) ok=false;\n    var phoneEl=document.getElementById(\"ole-phone\");\n    if(itiPhone && window.intlTelInputUtils){ var phValid=itiPhone.isValidNumber(); state.answers.phone=phValid?itiPhone.getNumber():phoneEl.value.trim(); setErr(\"phone\", phValid?\"\":\"Numero non valido per il Paese selezionato\"); if(!phValid) ok=false; }\n    else { var pv=phoneEl.value.trim(); state.answers.phone=pv; var phOk=\/^[+0-9][0-9 ().-]{7,}$\/.test(pv); setErr(\"phone\", phOk?\"\":\"Inserisca un numero di telefono valido\"); if(!phOk) ok=false; }\n    return ok;\n  }\n  function setErr(id,msg){ var inp=document.getElementById(\"ole-\"+id), err=document.getElementById(\"err-\"+id); if(!inp) return; inp.classList.toggle(\"err\",!!msg); if(err){ err.textContent=msg||\"\"; err.classList.toggle(\"show\",!!msg); } }\n\n  \/* =========================================================\n     9) NAVIGATION\n     ========================================================= *\/\n  function computeNext(){\n    var cur=STEPS[state.i];\n    if(cur.id===\"service\") return stepIndexById(isRisksPath() ? RISK_IDS[0] : \"callback\");\n    var ei=RISK_IDS.indexOf(cur.id);\n    if(ei>-1) return ei<RISK_IDS.length-1 ? stepIndexById(RISK_IDS[ei+1]) : stepIndexById(\"callback\");\n    var n=state.i+1; while(STEPS[n] && isEdu(STEPS[n].id)) n++; return n;\n  }\n  function skipToContact(){ if(state.busy) return; state.history.push(state.i); transitionTo(stepIndexById(\"callback\"),1); }\n  function nextStep(){ if(state.busy) return; var t=computeNext(); if(t>=STEPS.length) return; state.history.push(state.i); transitionTo(t,1); }\n  function prev(){ if(state.busy || !state.history.length) return; transitionTo(state.history.pop(),-1); }\n  function transitionTo(target,dir){ state.busy=true; lockNow(); scrollFormToTop(); var cur=bodyEl.querySelector(\".ole-step\"); cur.classList.remove(\"in-right\",\"in-left\"); cur.classList.add(dir>0?\"out-left\":\"out-right\"); setTimeout(function(){ state.i=target; render(dir>0?\"in-right\":\"in-left\"); }, 300); }\n  function scrollFormToTop(){ if(!SCROLL_TOTOP) return; try{ var reduce=window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion:reduce)\").matches; window.scrollTo({ top:0, left:0, behavior:reduce?\"auto\":\"smooth\" }); }catch(e){ try{ window.scrollTo(0,0); }catch(_e){} } }\n\n  \/* =========================================================\n     10) HUBSPOT SUBMIT\n     ========================================================= *\/\n  function buildFields(){\n    var a=state.answers,f=HS.fields,out=[];\n    function push(name,val){ if(name&&val!=null&&val!==\"\") out.push({name:name,value:String(val)}); }\n    push(f.timing,a.timing);\n    push(f.worries, Array.isArray(a.worries)?a.worries.join(\";\"):a.worries);\n    push(f.budget,a.budget); push(f.location,a.location);\n    push(f.property,a.property); push(f.motivation,a.motivation); push(f.service,a.service);\n    push(f.cb_rdv, cbWantsRdv() ? \"Yes\" : \"\");\n    push(f.cb_clienttime, cbClientTimeStr());\n    if(!cbWantsRdv()){\n      var z=cbZoneShort();\n      var cbDays = a.cb_days_indif ? \"Qualsiasi giorno\" : (Array.isArray(a.cb_days) && a.cb_days.length ? a.cb_days.join(\";\") : \"\");\n      push(f.cb_days, cbDays);\n      var cbd=cbNearestDateObj();\n      if(a.cb_any){\n        push(f.cb_slot, \"Qualsiasi ora (\"+z+\")\");\n        var cbMsA = cbd ? cbSlotStartMs(cbd, cbAllowedHours()[0]!=null?cbAllowedHours()[0]:9) : null;\n        push(f.cb_date, cbMsA!=null ? String(cbMsA) : \"\");\n      } else if(a.cb_precise && a.cb_hour!=null){\n        push(f.cb_slot, fmt12(a.cb_hour)+\" \"+z+\" (exact time requested)\");\n        var cbMsP = cbd ? cbSlotStartMs(cbd, a.cb_hour) : null;\n        push(f.cb_date, cbMsP!=null ? String(cbMsP) : \"\");\n      } else if(a.cb_slot!=null){\n        push(f.cb_slot, cbSlotLabel(a.cb_slot)+\" \"+z);\n        var cbMs = cbd ? cbSlotStartMs(cbd, a.cb_slot) : null;\n        push(f.cb_date, cbMs!=null ? String(cbMs) : \"\");\n      }\n    }\n    push(f.firstname,a.firstname); push(f.lastname,a.lastname); push(f.email, a.email?String(a.email).trim().toLowerCase():a.email); push(f.phone,a.phone);\n    return out;\n  }\n  function submit(){\n    var step=STEPS[state.i];\n    if(!validateContact()) return;\n    var hp=document.getElementById(\"ole-hp\"); if(hp && hp.value){ finish(); return; }\n    if(Date.now()-startTime < 3000){ finish(); return; }\n    var btn=document.getElementById(\"ole-next\"), spin=document.getElementById(\"ole-spin\"), label=document.getElementById(\"ole-next-label\");\n    btn.disabled=true; if(spin) spin.style.display=\"inline-block\"; if(label) label.textContent=\"Invio in corso\u2026\";\n    if(!HS.sendToHubSpot){ console.log(\"[SpainEasy] Payload ready:\", buildFields()); setTimeout(finish,800); return; }\n    var ctx={ pageUri:location.href, pageName:document.title };\n    var hutk=getCookie(\"hubspotutk\"); if(hutk) ctx.hutk=hutk;\n    var payload={ fields:buildFields(), context:ctx };\n    if(HS.subscriptionTypeId){ payload.legalConsentOptions={ legitimateInterest:{ value:true, subscriptionTypeId:HS.subscriptionTypeId, legalBasis:\"LEAD\", text:step.consent } }; }\n    fetch(\"https:\/\/api.hsforms.com\/submissions\/v3\/integration\/submit\/\"+HS.portalId+\"\/\"+HS.formGuid, { method:\"POST\", headers:{\"Content-Type\":\"application\/json\"}, body:JSON.stringify(payload) })\n      .then(function(r){ if(!r.ok) return r.json().then(function(e){throw e;}); return r.json(); })\n      .then(function(){ finish(); })\n      .catch(function(err){ console.error(\"[SpainEasy] HubSpot error:\", err); btn.disabled=false; if(spin) spin.style.display=\"none\"; if(label) label.textContent=\"Riprova\"; });\n  }\n  \/* GTM \/ Google Ads conversion \u2014 SpainEasy fires a DISTINCT event so US leads are NEVER\n     mixed with the French \"ole_lead_submit\". Rebuild the same Ads\/Meta\/TikTok\/GA4 tags in\n     the SpainEasy GTM container, triggered on Custom Event = \"spaineasy_lead_submit\". *\/\n  function pushEnhancedConversionEvent(cb){\n    window.dataLayer = window.dataLayer || [];\n    var a=state.answers;\n    var email=(a.email||\"\").trim().toLowerCase();\n    var phone=(a.phone||\"\").replace(\/\\s+\/g,\"\");\n    var first=(a.firstname||\"\").trim();\n    var last=(a.lastname||\"\").trim();\n    window.dataLayer.push({\n      event:\"spaineasy_lead_submit\",\n      brand:\"SpainEasy\",\n      lead_email:email, lead_phone:phone, first_name:first, last_name:last,\n      enhanced_conversion_data:{ email:email, phone_number:phone, first_name:first, last_name:last },\n      lead_form_name:\"spaineasy_property_search\",\n      lead_location:a.location||\"\", lead_budget:a.budget||\"\", lead_currency:\"EUR\",\n      eventCallback:function(){ if(cb) cb(); }, eventTimeout:1500\n    });\n  }\n  function buildRedirectUrl(){\n    var a=state.answers;\n    if(cbWantsRdv()){\n      var ru=RDV_URL, rq=[];\n      if(a.firstname){ rq.push(\"firstname=\"+encodeURIComponent(a.firstname)); rq.push(\"firstName=\"+encodeURIComponent(a.firstname)); }\n      if(a.lastname){ rq.push(\"lastname=\"+encodeURIComponent(a.lastname)); rq.push(\"lastName=\"+encodeURIComponent(a.lastname)); }\n      if(a.email){ rq.push(\"email=\"+encodeURIComponent(String(a.email).trim().toLowerCase())); }\n      if(a.phone){ rq.push(\"phone=\"+encodeURIComponent(a.phone)); }\n      if(rq.length) ru += (ru.indexOf(\"?\")>-1?\"&\":\"?\")+rq.join(\"&\");\n      return ru;\n    }\n    var u=HS.redirectUrl, q=[];\n    if(a.firstname) q.push(\"firstname=\"+encodeURIComponent(a.firstname));\n    if(a.location)  q.push(\"location=\"+encodeURIComponent(a.location));\n    if(q.length) u += (u.indexOf(\"?\")>-1?\"&\":\"?\")+q.join(\"&\");\n    return u;\n  }\n  function finish(){\n    var done=false;\n    var redirect=(cbWantsRdv() || HS.redirectUrl) ? buildRedirectUrl() : null;\n    function go(){\n      if(done) return; done=true; clearState();\n      if(redirect){ window.location.href=redirect; return; }\n      barEl.style.width=\"100%\"; footEl.innerHTML=\"\";\n      bodyEl.innerHTML='<div class=\"ole-success\"><div class=\"ole-check\"><svg viewBox=\"0 0 40 40\"><path d=\"M11 21 L17 27 L29 13\"\/><\/svg><\/div><h3>Tutto fatto, grazie!<\/h3><p>Il nostro team sta esaminando il Suo progetto e La contatter\u00e0 molto presto.<\/p><\/div>';\n    }\n    pushEnhancedConversionEvent(go);\n    setTimeout(go, 1800);\n  }\n\n  \/* =========================================================\n     11) GOOGLE PLACES (optional)\n     ========================================================= *\/\n  function loadGoogleMaps(key, cb){\n    if(window.google && google.maps && google.maps.places){ cb&&cb(); return; }\n    if(document.getElementById(\"ole-gmaps\")){ pollMaps(cb); return; }\n    var s=document.createElement(\"script\"); s.id=\"ole-gmaps\"; s.async=true;\n    s.src=\"https:\/\/maps.googleapis.com\/maps\/api\/js?key=\"+encodeURIComponent(key)+\"&libraries=places&loading=async&language=it\";\n    s.onload=function(){ pollMaps(cb); }; s.onerror=function(){ console.warn(\"[SpainEasy] Google Maps failed.\"); };\n    document.head.appendChild(s);\n  }\n  function pollMaps(cb){ var n=0,iv=setInterval(function(){ if(window.google&&google.maps&&google.maps.places){clearInterval(iv);cb&&cb();} else if(++n>40){clearInterval(iv);} },150); }\n  function initLocationAutocomplete(input, pills, step){\n    if(!input || input.dataset.acDone) return; input.dataset.acDone=\"1\";\n    try{\n      var ac=new google.maps.places.Autocomplete(input,{ componentRestrictions:{country:\"es\"}, types:[\"(cities)\"], fields:[\"address_components\",\"name\"] });\n      ac.addListener(\"place_changed\", function(){ var place=ac.getPlace(); if(!place||!place.address_components){ state.answers.location=input.value; return; } var city=place.name, region=\"\"; place.address_components.forEach(function(c){ if(c.types.indexOf(\"administrative_area_level_1\")>-1) region=c.long_name; }); var val=region?(city+\" (\"+region+\")\"):city; setTimeout(function(){ input.value=val; state.answers.location=val; },10); if(pills) pills.forEach(function(p){ p.classList.remove(\"sel\",\"hidden\"); }); setReaction(step, val); lockAdvance(); });\n    }catch(e){ console.warn(\"[SpainEasy] Google Places not initialized:\", e); }\n  }\n\n  \/* =========================================================\n     12) LUCIDE ICONS\n     ========================================================= *\/\n  function loadLucide(){ if(window.lucide){ refreshIcons(); return; } if(document.getElementById(\"ole-lucide\")) return; var s=document.createElement(\"script\"); s.id=\"ole-lucide\"; s.async=true; s.src=\"https:\/\/unpkg.com\/lucide@latest\/dist\/umd\/lucide.min.js\"; s.onload=refreshIcons; s.onerror=function(){ console.warn(\"[SpainEasy] Lucide failed.\"); }; document.head.appendChild(s); }\n\n  \/* =========================================================\n     12b) INTERNATIONAL PHONE (US default)\n     ========================================================= *\/\n  var itiPhone=null, lastPhoneIso=null, phoneBlurred=false;\n  function maybeBlurPhone(input){ try{ if(itiPhone && itiPhone.isValidNumber && itiPhone.isValidNumber()){ if(!phoneBlurred){ phoneBlurred=true; setTimeout(function(){ try{ input.blur(); }catch(e){} try{ var btn=document.getElementById(\"ole-next\"); if(btn){ var r=btn.getBoundingClientRect(); var vh=window.innerHeight||document.documentElement.clientHeight; var delta=r.bottom-vh+26; if(delta>4){ var reduce=window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion:reduce)\").matches; window.scrollBy({top:delta,left:0,behavior:reduce?\"auto\":\"smooth\"}); } } }catch(e){} }, 160); } } else { phoneBlurred=false; } }catch(e){} }\n  var COUNTRY_MSG = {\n    us:{emoji:\"\\uD83C\\uDDFA\\uD83C\\uDDF8\",msg:\"La maggior parte dei nostri clienti vive negli Stati Uniti: La guidiamo in inglese, a ogni passo.\"},\n    ca:{emoji:\"\\uD83C\\uDDE8\\uD83C\\uDDE6\",msg:\"Compra dal Canada? Siamo i Suoi occhi e le Sue orecchie sul posto, in Spagna.\"},\n    gb:{emoji:\"\\uD83C\\uDDEC\\uD83C\\uDDE7\",msg:\"Molti acquirenti britannici si affidano a noi per un acquisto sereno in Spagna, con assistenza in inglese.\"},\n    es:{emoji:\"\\uD83C\\uDDEA\\uD83C\\uDDF8\",msg:\"Si trova gi\u00e0 in Spagna? Rendiamo ogni passo pi\u00f9 semplice, in inglese, proprio al Suo fianco.\"}\n  };\n  function showPhoneReaction(){ if(!itiPhone||!itiPhone.getSelectedCountryData) return; var input=document.getElementById(\"ole-phone\"); var el=document.getElementById(\"ole-phone-msg\"); var hasDigits=input&&input.value.replace(\/\\D\/g,\"\").length>0; if(!hasDigits){ if(el){ el.className=\"ole-phone-msg\"; el.innerHTML=\"\"; } lastPhoneIso=null; return; } var iso=(itiPhone.getSelectedCountryData()||{}).iso2; if(iso===lastPhoneIso) return; lastPhoneIso=iso; renderPhoneMsg(COUNTRY_MSG[iso]||null); }\n  function renderPhoneMsg(r){ var el=document.getElementById(\"ole-phone-msg\"); if(!el) return; if(!r){ el.className=\"ole-phone-msg\"; el.innerHTML=\"\"; return; } el.innerHTML='<span class=\"ole-q-mark\">'+String.fromCharCode(8220)+'<\/span><span class=\"ole-phone-cap\">'+esc(r.msg)+'<\/span>'+(r.emoji?'<span class=\"ole-emoji\">'+r.emoji+'<\/span>':''); el.className=\"ole-phone-msg show\"; void el.offsetWidth; el.classList.add(\"bumpp\"); setTimeout(function(){ el.classList.remove(\"bumpp\"); },430); }\n  function loadIntlTel(cb){ if(window.intlTelInput){ cb&&cb(); return; } if(document.getElementById(\"ole-iti-js\")){ var n=0,iv=setInterval(function(){ if(window.intlTelInput){clearInterval(iv);cb&&cb();} else if(++n>60){clearInterval(iv);} },150); return; } var css=document.createElement(\"link\"); css.rel=\"stylesheet\"; css.href=\"https:\/\/cdn.jsdelivr.net\/npm\/intl-tel-input@18.2.1\/build\/css\/intlTelInput.css\"; document.head.appendChild(css); var s=document.createElement(\"script\"); s.id=\"ole-iti-js\"; s.async=true; s.src=\"https:\/\/cdn.jsdelivr.net\/npm\/intl-tel-input@18.2.1\/build\/js\/intlTelInput.min.js\"; s.onload=function(){ cb&&cb(); }; s.onerror=function(){ console.warn(\"[SpainEasy] intl-tel-input not loaded (simple field fallback).\"); }; document.head.appendChild(s); }\n  var PHONE_TPL_CACHE={};\n  function phoneTemplate(iso){ if(!iso) return null; if(PHONE_TPL_CACHE[iso]!==undefined) return PHONE_TPL_CACHE[iso]; var tpl=null; try{ var U=window.intlTelInputUtils; if(U){ var ex=U.getExampleNumber(iso,false,U.numberType.MOBILE); var nat=ex?U.formatNumber(ex,iso,U.numberFormat.NATIONAL):\"\"; if(nat&&\/\\d\/.test(nat)) tpl=nat.replace(\/\\d\/g,\"D\"); } }catch(e){} PHONE_TPL_CACHE[iso]=tpl; return tpl; }\n  function applyPhoneTemplate(digits, tpl){ if(!tpl) return digits; var out=\"\",di=0; for(var i=0;i<tpl.length&&di<digits.length;i++){ out += (tpl.charAt(i)===\"D\")?digits.charAt(di++):tpl.charAt(i); } if(di<digits.length) out += digits.slice(di); return out; }\n  function formatPhoneLive(el){ if(!el||!itiPhone||!itiPhone.getSelectedCountryData) return; var iso=(itiPhone.getSelectedCountryData()||{}).iso2; var tpl=phoneTemplate(iso); if(!tpl) return; var raw=el.value, caret=(el.selectionStart==null)?raw.length:el.selectionStart; var before=raw.slice(0,caret).replace(\/\\D\/g,\"\").length; var digits=raw.replace(\/\\D\/g,\"\"); var exact=null; try{ if(itiPhone.isValidNumber&&itiPhone.isValidNumber()){ exact=window.intlTelInputUtils.formatNumber(itiPhone.getNumber(),iso,window.intlTelInputUtils.numberFormat.NATIONAL); } }catch(e){} var f=exact||applyPhoneTemplate(digits,tpl); if(f===raw) return; el.value=f; var pos=0,seen=0; while(pos<f.length&&seen<before){ var c=f.charCodeAt(pos); if(c>=48&&c<=57) seen++; pos++; } try{ el.setSelectionRange(pos,pos); }catch(e){} }\n  \/\/ Adapt the phone country to the visitor: browser locale -> timezone -> IP (with fallback).\n  var TZ_COUNTRY = { \"America\/New_York\":\"us\",\"America\/Detroit\":\"us\",\"America\/Chicago\":\"us\",\"America\/Denver\":\"us\",\"America\/Phoenix\":\"us\",\"America\/Los_Angeles\":\"us\",\"America\/Anchorage\":\"us\",\"Pacific\/Honolulu\":\"us\",\"America\/Toronto\":\"ca\",\"America\/Vancouver\":\"ca\",\"America\/Edmonton\":\"ca\",\"America\/Mexico_City\":\"mx\",\"America\/Sao_Paulo\":\"br\",\"America\/Argentina\/Buenos_Aires\":\"ar\",\"Europe\/London\":\"gb\",\"Europe\/Dublin\":\"ie\",\"Europe\/Paris\":\"fr\",\"Europe\/Rome\":\"it\",\"Europe\/Zurich\":\"ch\",\"Europe\/Madrid\":\"es\",\"Europe\/Berlin\":\"de\",\"Europe\/Lisbon\":\"pt\",\"Europe\/Athens\":\"gr\",\"Europe\/Istanbul\":\"tr\",\"Asia\/Dubai\":\"ae\",\"Asia\/Kolkata\":\"in\",\"Asia\/Singapore\":\"sg\",\"Asia\/Hong_Kong\":\"hk\",\"Asia\/Tokyo\":\"jp\",\"Australia\/Sydney\":\"au\",\"Australia\/Perth\":\"au\",\"Pacific\/Auckland\":\"nz\",\"Africa\/Johannesburg\":\"za\",\"Africa\/Casablanca\":\"ma\",\"Asia\/Jerusalem\":\"il\" };\n  function guessCountryBrowser(){\n    try{ var langs=navigator.languages||[navigator.language||\"\"]; for(var i=0;i<langs.length;i++){ var m=String(langs[i]||\"\").match(\/-([A-Za-z]{2})$\/); if(m) return m[1].toLowerCase(); } }catch(e){}\n    try{ var tz=Intl.DateTimeFormat().resolvedOptions().timeZone||\"\"; if(TZ_COUNTRY[tz]) return TZ_COUNTRY[tz]; }catch(e){}\n    return \"us\";\n  }\n  function geoLookup(cb){\n    var done=false; function fin(c){ if(done) return; done=true; cb((c||\"us\").toLowerCase()); }\n    var t=setTimeout(function(){ fin(guessCountryBrowser()); }, 1300);\n    try{ fetch(\"https:\/\/ipapi.co\/json\/\").then(function(r){ return r.json(); }).then(function(d){ clearTimeout(t); fin((d&&d.country_code?String(d.country_code):\"\")||guessCountryBrowser()); }).catch(function(){ clearTimeout(t); fin(guessCountryBrowser()); }); }\n    catch(e){ clearTimeout(t); fin(guessCountryBrowser()); }\n  }\n  function initPhone(wrap){ var input=(wrap||document).querySelector(\"#ole-phone\"); if(!input||input.dataset.itiDone) return; loadIntlTel(function(){ if(!window.intlTelInput||input.dataset.itiDone) return; input.dataset.itiDone=\"1\"; try{ itiPhone=window.intlTelInput(input,{ initialCountry:\"auto\", geoIpLookup:geoLookup, preferredCountries:[\"it\",\"ch\",\"es\",\"gb\",\"us\"], separateDialCode:true, autoPlaceholder:\"aggressive\", dropdownContainer:document.body, utilsScript:\"https:\/\/cdn.jsdelivr.net\/npm\/intl-tel-input@18.2.1\/build\/js\/utils.js\" }); lastPhoneIso=null; phoneBlurred=false; input.addEventListener(\"input\",function(){ setErr(\"phone\",\"\"); formatPhoneLive(input); showPhoneReaction(); maybeBlurPhone(input); }); input.addEventListener(\"countrychange\",function(){ setErr(\"phone\",\"\"); formatPhoneLive(input); showPhoneReaction(); }); }catch(e){ console.warn(\"[SpainEasy] international phone not initialized:\", e); itiPhone=null; } }); }\n\n  \/* =========================================================\n     13) BOOT\n     ========================================================= *\/\n  loadLucide(); loadIntlTel();\n  if(HS.googleMapsKey) loadGoogleMaps(HS.googleMapsKey, function(){ gMapsReady=true; });\n  loadState();\n  function oleSlug(s){ return String(s||\"\").toLowerCase().normalize(\"NFD\").replace(\/[\\u0300-\\u036f]\/g,\"\").replace(\/[^a-z0-9]+\/g,\"-\").replace(\/^-+|-+$\/g,\"\"); }\n  var LIEU_ALIAS={ \"valence\":\"Valencia\",\"barcelone\":\"Barcellona\",\"seville\":\"Siviglia\",\"sevilla\":\"Siviglia\",\"costa-del-sol\":\"Costa del Sol\",\"costa-blanca\":\"Costa Blanca\",\"costa-brava\":\"Costa Brava\",\"andalusia\":\"Andalusia\",\"andalousie\":\"Andalusia\",\"mallorca\":\"Palma di Maiorca\",\"majorca\":\"Palma di Maiorca\" };\n  (function prefillFromUrl(){ var p; try{ p=new URLSearchParams(window.location.search); }catch(e){ return; } var lieu=p.get(\"location\")||p.get(\"lieu\"); if(!lieu) return; var slug=oleSlug(lieu), loc=STEPS[stepIndexById(\"location\")], label=null; if(LIEU_ALIAS[slug]) label=LIEU_ALIAS[slug]; if(!label && loc){ var all=(loc.cities||[]).concat(loc.regions||[]); for(var i=0;i<all.length;i++){ if(oleSlug(all[i])===slug){ label=all[i]; break; } } } if(!label){ label=slug.split(\"-\").map(function(w){ return w?w.charAt(0).toUpperCase()+w.slice(1):w; }).join(\" \"); } state.answers.location=label; })();\n  render(\"in-right\");\n})();\n<\/script><\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":41953,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"100-width.php","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-41952","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>SpainEasy - Ricerca di immobili<\/title>\n<meta name=\"description\" content=\"Avvii la ricerca del suo immobile rispondendo alle nostre domande. La ricontatteremo presto per fissare un appuntamento.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/spaineasy.com\/it\/ricerca-immobiliare\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SpainEasy - Ricerca di immobili\" \/>\n<meta property=\"og:description\" content=\"Avvii la ricerca del suo immobile rispondendo alle nostre domande. La ricontatteremo presto per fissare un appuntamento.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/spaineasy.com\/it\/ricerca-immobiliare\/\" \/>\n<meta property=\"og:site_name\" content=\"SpainEasy\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SpainEasyEstate\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-16T11:09:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/spaineasy.com\/wp-content\/uploads\/2023\/08\/Maison-en-Espagne-avec-piscine-a-linterieur.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"21 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/spaineasy.com\\\/it\\\/ricerca-immobiliare\\\/\",\"url\":\"https:\\\/\\\/spaineasy.com\\\/it\\\/ricerca-immobiliare\\\/\",\"name\":\"SpainEasy - Ricerca di immobili\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/spaineasy.com\\\/it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/spaineasy.com\\\/it\\\/ricerca-immobiliare\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/spaineasy.com\\\/it\\\/ricerca-immobiliare\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/spaineasy.com\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/Maison-en-Espagne-avec-piscine-a-linterieur.jpg\",\"datePublished\":\"2022-06-16T15:14:22+00:00\",\"dateModified\":\"2026-10-16T11:09:33+00:00\",\"description\":\"Avvii la ricerca del suo immobile rispondendo alle nostre domande. La ricontatteremo presto per fissare un appuntamento.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/spaineasy.com\\\/it\\\/ricerca-immobiliare\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/spaineasy.com\\\/it\\\/ricerca-immobiliare\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/spaineasy.com\\\/it\\\/ricerca-immobiliare\\\/#primaryimage\",\"url\":\"https:\\\/\\\/spaineasy.com\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/Maison-en-Espagne-avec-piscine-a-linterieur.jpg\",\"contentUrl\":\"https:\\\/\\\/spaineasy.com\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/Maison-en-Espagne-avec-piscine-a-linterieur.jpg\",\"width\":1200,\"height\":630,\"caption\":\"Maison luxueuse en Espagne avec piscine \u00e0 l'int\u00e9rieur\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/spaineasy.com\\\/it\\\/ricerca-immobiliare\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/spaineasy.com\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ricerca immobiliare\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/spaineasy.com\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/spaineasy.com\\\/it\\\/\",\"name\":\"SpainEasy\",\"description\":\"Your personal English-speaking real estate agent in Spain.\",\"publisher\":{\"@id\":\"https:\\\/\\\/spaineasy.com\\\/it\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/spaineasy.com\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/spaineasy.com\\\/it\\\/#organization\",\"name\":\"SpainEasy\",\"url\":\"https:\\\/\\\/spaineasy.com\\\/it\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/spaineasy.com\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/spaineasy.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/spaineasy192.png\",\"contentUrl\":\"https:\\\/\\\/spaineasy.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/spaineasy192.png\",\"width\":192,\"height\":192,\"caption\":\"SpainEasy\"},\"image\":{\"@id\":\"https:\\\/\\\/spaineasy.com\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/SpainEasyEstate\",\"https:\\\/\\\/www.youtube.com\\\/watch?v=mq5f8eHO6l8\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SpainEasy - Ricerca di immobili","description":"Avvii la ricerca del suo immobile rispondendo alle nostre domande. La ricontatteremo presto per fissare un appuntamento.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/spaineasy.com\/it\/ricerca-immobiliare\/","og_locale":"it_IT","og_type":"article","og_title":"SpainEasy - Ricerca di immobili","og_description":"Avvii la ricerca del suo immobile rispondendo alle nostre domande. La ricontatteremo presto per fissare un appuntamento.","og_url":"https:\/\/spaineasy.com\/it\/ricerca-immobiliare\/","og_site_name":"SpainEasy","article_publisher":"https:\/\/www.facebook.com\/SpainEasyEstate","article_modified_time":"2026-10-16T11:09:33+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/spaineasy.com\/wp-content\/uploads\/2023\/08\/Maison-en-Espagne-avec-piscine-a-linterieur.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"21 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/spaineasy.com\/it\/ricerca-immobiliare\/","url":"https:\/\/spaineasy.com\/it\/ricerca-immobiliare\/","name":"SpainEasy - Ricerca di immobili","isPartOf":{"@id":"https:\/\/spaineasy.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/spaineasy.com\/it\/ricerca-immobiliare\/#primaryimage"},"image":{"@id":"https:\/\/spaineasy.com\/it\/ricerca-immobiliare\/#primaryimage"},"thumbnailUrl":"https:\/\/spaineasy.com\/wp-content\/uploads\/2023\/08\/Maison-en-Espagne-avec-piscine-a-linterieur.jpg","datePublished":"2022-06-16T15:14:22+00:00","dateModified":"2026-10-16T11:09:33+00:00","description":"Avvii la ricerca del suo immobile rispondendo alle nostre domande. La ricontatteremo presto per fissare un appuntamento.","breadcrumb":{"@id":"https:\/\/spaineasy.com\/it\/ricerca-immobiliare\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/spaineasy.com\/it\/ricerca-immobiliare\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/spaineasy.com\/it\/ricerca-immobiliare\/#primaryimage","url":"https:\/\/spaineasy.com\/wp-content\/uploads\/2023\/08\/Maison-en-Espagne-avec-piscine-a-linterieur.jpg","contentUrl":"https:\/\/spaineasy.com\/wp-content\/uploads\/2023\/08\/Maison-en-Espagne-avec-piscine-a-linterieur.jpg","width":1200,"height":630,"caption":"Maison luxueuse en Espagne avec piscine \u00e0 l'int\u00e9rieur"},{"@type":"BreadcrumbList","@id":"https:\/\/spaineasy.com\/it\/ricerca-immobiliare\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/spaineasy.com\/it\/"},{"@type":"ListItem","position":2,"name":"Ricerca immobiliare"}]},{"@type":"WebSite","@id":"https:\/\/spaineasy.com\/it\/#website","url":"https:\/\/spaineasy.com\/it\/","name":"SpainEasy","description":"Your personal English-speaking real estate agent in Spain.","publisher":{"@id":"https:\/\/spaineasy.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/spaineasy.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/spaineasy.com\/it\/#organization","name":"SpainEasy","url":"https:\/\/spaineasy.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/spaineasy.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/spaineasy.com\/wp-content\/uploads\/2024\/03\/spaineasy192.png","contentUrl":"https:\/\/spaineasy.com\/wp-content\/uploads\/2024\/03\/spaineasy192.png","width":192,"height":192,"caption":"SpainEasy"},"image":{"@id":"https:\/\/spaineasy.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SpainEasyEstate","https:\/\/www.youtube.com\/watch?v=mq5f8eHO6l8"]}]}},"_links":{"self":[{"href":"https:\/\/spaineasy.com\/it\/wp-json\/wp\/v2\/pages\/41952","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spaineasy.com\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/spaineasy.com\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/spaineasy.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spaineasy.com\/it\/wp-json\/wp\/v2\/comments?post=41952"}],"version-history":[{"count":4,"href":"https:\/\/spaineasy.com\/it\/wp-json\/wp\/v2\/pages\/41952\/revisions"}],"predecessor-version":[{"id":42315,"href":"https:\/\/spaineasy.com\/it\/wp-json\/wp\/v2\/pages\/41952\/revisions\/42315"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/spaineasy.com\/it\/wp-json\/wp\/v2\/media\/41953"}],"wp:attachment":[{"href":"https:\/\/spaineasy.com\/it\/wp-json\/wp\/v2\/media?parent=41952"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}