(function(){ var css= ".ef-rep-top,.ef-price-card,.ef-rep-grid,.ef-disclaimer,.ef-cta-block{display:none!important;}"+ ".ef-rep-redesign{font-family:'DM Sans',sans-serif;max-width:640px;margin:0 auto;border-radius:16px;overflow:hidden;box-shadow:0 4px 24px rgba(0,0,0,.10);border:1px solid #E8DDD8;background:#fff;}"+ ".ef-rep-header{background:#C84B2F;padding:28px 32px 24px;text-align:center;}"+ ".ef-rep-badge{display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.15);color:#fff;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:4px 14px;border-radius:99px;margin-bottom:12px;}"+ ".ef-rep-title-new{font-family:'DM Serif Display',serif;font-size:26px;color:#fff;margin:0 0 6px;font-weight:700;line-height:1.2;}"+ ".ef-rep-addr-new{font-size:13px;color:rgba(255,255,255,.75);margin:0;}"+ ".ef-rep-price-block{background:#fff;padding:28px 32px 16px;text-align:center;border-bottom:1px solid #E8DDD8;}"+ ".ef-rep-price-label{font-size:10px;font-weight:700;color:#6B6B6B;text-transform:uppercase;letter-spacing:.1em;margin-bottom:12px;}"+ ".ef-rep-price-val-new{font-family:'DM Serif Display',serif;font-size:34px;font-weight:700;color:#C84B2F;line-height:1;margin-bottom:8px;}"+ ".ef-rep-price-pm2{font-size:13px;color:#6B6B6B;}"+ ".ef-rep-disclaimer-new{background:#FEF3CD;border:1px solid #F9C851;border-left:4px solid #E6A817;border-radius:8px;padding:10px 14px;margin:16px 32px 0;font-size:12px;color:#6B4A00;line-height:1.5;text-align:left;}"+ ".ef-rep-recap{background:#fff;padding:20px 32px 24px;border-bottom:1px solid #E8DDD8;}"+ ".ef-rep-recap-title{font-size:10px;font-weight:700;color:#6B6B6B;text-transform:uppercase;letter-spacing:.1em;margin-bottom:14px;}"+ ".ef-rep-grid-new{display:grid;grid-template-columns:1fr 1fr;gap:8px;}"+ ".ef-rep-item{background:#FFF8F3;border:1px solid #E8DDD8;border-radius:10px;padding:12px 14px;}"+ ".ef-rep-key{font-size:10px;color:#6B6B6B;font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px;}"+ ".ef-rep-val{font-size:14px;color:#1A1A1A;font-weight:600;}"+ ".ef-rep-cta{background:#FFF8F3;padding:24px 32px;text-align:center;}"+ ".ef-rep-cta p{font-size:14px;color:#6B6B6B;margin:0 0 14px;line-height:1.5;}"+ ".ef-rep-cta-btn-new{display:inline-block;background:#C84B2F;color:#fff;font-family:'DM Sans',sans-serif;font-size:14px;font-weight:700;padding:13px 28px;border-radius:8px;text-decoration:none;cursor:pointer;border:none;transition:transform .15s,box-shadow .15s;}"+ ".ef-rep-cta-btn-new:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(200,75,47,.25);}"+ ".ef-rep-restart-link{display:block;margin-top:10px;font-size:12px;color:#6B6B6B;cursor:pointer;text-decoration:underline;background:none;border:none;font-family:'DM Sans',sans-serif;}"+ ".ef-rep-footer{background:#F5EFEB;padding:12px 32px;text-align:center;border-top:1px solid #E8DDD8;}"+ ".ef-rep-footer a{font-size:11px;color:#6B6B6B;text-decoration:none;margin:0 6px;}"+ ".ef-rep-footer a:hover{color:#C84B2F;}"+ "@media(max-width:520px){.ef-rep-header,.ef-rep-price-block,.ef-rep-recap,.ef-rep-cta{padding-left:20px;padding-right:20px;}.ef-rep-price-val-new{font-size:26px;}.ef-rep-grid-new{grid-template-columns:1fr;}.ef-rep-disclaimer-new{margin:16px 20px 0;}}"; var st=document.createElement("style");st.textContent=css;document.head.appendChild(st); /* Prix IMSEE Monaco par quartier/rue */ var MONACO_PM2={ "larvotto":71167,"monte-carlo":54009,"casino":54009,"moulins":54009, "fontvieille":52518,"iris":52518,"fontvielle":52518, "condamine":52104,"grimaldi":52104,"albert":52104,"caroline":52104, "rousse":51265,"belgique":51265,"foch":51265, "jardin exotique":45168,"labande":45168,"quarantaine":45168, "moneghetti":43797,"france":43797,"revoires":43797, "rocher":50000,"monaco-ville":50000,"basse":50000,"palais":50000,"turbie":50000, "mareterra":100000 }; function getMonacoPm2(addr){ var a=(addr||"").toLowerCase(); for(var k in MONACO_PM2){if(a.indexOf(k)>-1)return MONACO_PM2[k];} return 52861; /* moyenne Monaco */ } /* Extrait les prix en supprimant les separateurs de milliers */ function fmtPrice(txt){ if(!txt)return""; var clean=txt.replace(/ /g,"").replace(/ /g,""); var matches=clean.match(/\d+/g); if(!matches)return txt; var prices=matches.map(Number).filter(function(n){return n>1000;}); if(!prices.length)return txt; if(prices.length===1)return prices[0].toLocaleString("fr-FR")+" €"; return prices[0].toLocaleString("fr-FR")+" € — "+prices[prices.length-1].toLocaleString("fr-FR")+" €"; } function fmtPm2(txt,surf){ var clean=(txt||"").replace(/ /g,"").replace(/ /g,""); var n=clean.match(/\d+/g); var pm=(n&&n.length>0&&Number(n[0])>1000)?Number(n[0]).toLocaleString("fr-FR")+" €/m²":""; var s=surf?surf+" m²":""; if(!pm&&!s)return""; if(!pm)return s; return pm+" · "+s; } /* Lit element DOM + corrige encodage UTF-8 garble */ function rv(id){ var e=document.getElementById(id);if(!e)return""; var v=(e.textContent||"").trim(); /* Corrige les encodages garbles courants */ v=v.replace(/m[Â\xc2]+[²\xb2]/g,"m²") .replace(/[Â\xc2][·\xb7]/g,"·") .replace(/[Â\xc2]\s/g,"") .replace(/\xc3\xa8/g,"è").replace(/\xc3\xa9/g,"é") .replace(/\xc3\x89/g,"É").replace(/\xc3\x80/g,"À"); return(v===""||v==="--"||v==="Aucun"||v==="Non")?"":v; } function buildRep(){ var isMonaco=window.location.pathname.indexOf("monaco")>-1; var addr=rv("ef-r-addr"); var priceRaw=(document.getElementById("ef-r-price")||{textContent:""}).textContent||""; var pm2Raw=(document.getElementById("ef-r-pm2")||{textContent:""}).textContent||""; var surfRaw=rv("ef-r-surface")||""; var surfNum=surfRaw.replace(/[^\d]/g,""); var price, pm2; if(isMonaco&&surfNum){ /* Override prix avec données IMSEE */ var pm2val=getMonacoPm2(addr); var surf=parseInt(surfNum,10); var min=Math.round(pm2val*surf*0.88); var max=Math.round(pm2val*surf*1.12); price=min.toLocaleString("fr-FR")+" € — "+max.toLocaleString("fr-FR")+" €"; pm2=pm2val.toLocaleString("fr-FR")+" €/m² · "+surf+" m²"; }else{ price=fmtPrice(priceRaw); pm2=fmtPm2(pm2Raw,surfNum); } var fields=[ {k:"Type de bien",v:rv("ef-r-type")}, {k:"Surface",v:surfRaw||(surfNum?surfNum+" m²":"")}, {k:"Pièces",v:rv("ef-r-pieces")}, {k:"Construction",v:rv("ef-r-annee")}, {k:"État",v:rv("ef-r-etat")}, {k:"Extérieur",v:rv("ef-r-ext")}, {k:"Étage",v:rv("ef-r-etage")}, {k:"Stationnement",v:rv("ef-r-parking")} ]; var grid=fields.map(function(f){ return'
'+addr+'
'+ 'Obtenez une estimation précise et gratuite par l\'un de nos experts locaux
'+ ''+ ''+ '