#adalup-madrid-map{margin:0 !important;}
#adalup-madrid-map .leaflet-tile-pane{filter:grayscale(100%) contrast(1.05);}
#adalup-madrid-map .leaflet-control-attribution{font-size:9px;opacity:.45;background:rgba(255,255,255,.5);padding:0 4px;}
#adalup-madrid-map .leaflet-control-attribution a{color:#6A7684;}
#adalup-madrid-map .leaflet-popup-content-wrapper{border-radius:12px;padding:0;box-shadow:0 12px 30px rgba(0,0,0,.18);}
#adalup-madrid-map .leaflet-popup-content{margin:0;width:230px !important;}
#adalup-madrid-map .adalup-card-img{display:block;width:100%;height:130px;object-fit:cover;border-radius:12px 12px 0 0;}
#adalup-madrid-map .leaflet-popup-tip{background:#fff;}
.adalup-price-pin{background:#1B6DE0;color:#fff;font-family:Poppins,sans-serif;font-weight:700;font-size:13px;padding:5px 11px;border-radius:16px;box-shadow:0 4px 10px rgba(27,109,224,.4);white-space:nowrap;border:2px solid #fff;}
.adalup-price-pin:after{content:"";position:absolute;left:50%;bottom:-7px;transform:translateX(-50%);border-left:6px solid transparent;border-right:6px solid transparent;border-top:7px solid #fff;}
.adalup-card{background:#fff;border-radius:10px;padding:12px;font-family:Poppins,sans-serif;}
.adalup-card .z{color:#1B6DE0;font-size:11px;font-weight:600;margin:0 0 4px;letter-spacing:.3px;}
.adalup-card .t{color:#1A2A3A;font-size:18px;font-weight:600;margin:0 0 4px;line-height:1.2;}
.adalup-card .s{color:#6A7684;font-size:13px;font-weight:400;margin:0 0 10px;}
.adalup-card .p{color:#1A2A3A;font-size:18px;font-weight:700;margin:0;}
.adalup-card .n{color:#9AA5B1;font-size:11px;font-weight:600;margin:0 0 12px;}
.adalup-card .b{display:inline-block;color:#1A2A3A;background:#F2F5F8;font-size:13px;font-weight:600;border-radius:6px;padding:8px 16px;text-decoration:none;}
.adalup-card .b:hover{background:#1B6DE0;color:#fff;}
(function(){
var BASE='/index.php?rest_route=';
function num(v){ if(v===null||v===undefined) return NaN; return parseFloat(String(v).replace(',','.')); }
function esc(s){ if(s===null||s===undefined) return ''; return String(s).replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"'); }
function initMap(rooms){
var el=document.getElementById('adalup-madrid-map');
if(!el||el._init) return; el._init=true;
var map=L.map('adalup-madrid-map',{scrollWheelZoom:false,zoomControl:true,attributionControl:false}).setView([40.4318,-3.7038],14);
window.__adalupMap=map;function __adalupFix(){try{map.invalidateSize(true);}catch(e){}}map.whenReady(function(){setTimeout(__adalupFix,0);setTimeout(__adalupFix,200);setTimeout(__adalupFix,600);});try{new ResizeObserver(__adalupFix).observe(document.getElementById('adalup-madrid-map'));}catch(e){}window.addEventListener('resize',__adalupFix);
L.control.attribution({prefix:false}).addTo(map);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',{maxZoom:19,attribution:'© OpenStreetMap contributors'}).addTo(map);
var bounds=[];
rooms.forEach(function(r){
if(isNaN(r.lat)||isNaN(r.lng)) return;
var priceTxt='\u20ac '+esc(r.precio);
var icon=L.divIcon({className:'',html:'
'+priceTxt+'
',iconSize:[70,30],iconAnchor:[35,34]});
var pop='
'+(r.imagen?'
+')
':'')+'
'+esc(r.zona)+'
'+esc(r.titulo)+'
'+esc(r.sub)+'
'+priceTxt+'
per month \u00b7 all inclusive
View \u2192';
L.marker([r.lat,r.lng],{icon:icon}).addTo(map).bindPopup(pop,{closeButton:true,offset:[0,-30]});
bounds.push([r.lat,r.lng]);
});
if(bounds.length) map.fitBounds(bounds,{padding:[70,70]});
}
function loadData(){
var zonaMap={};
fetch(BASE+'/wp/v2/zona&per_page=100').then(function(r){return r.json();}).then(function(z){
if(Array.isArray(z)) z.forEach(function(t){ zonaMap[t.id]=t.name; });
}).catch(function(){}).then(function(){
return fetch(BASE+'/wp/v2/rooms&per_page=100');
}).then(function(r){return r.json();}).then(function(list){
var rooms=(list||[]).map(function(x){
var m=x.meta||{};
var zid=(x.zona&&x.zona.length)?x.zona[0]:null;
return {
lat:num(m.latitud), lng:num(m.longitud),
precio:m.precio||'', sub:m.subtitulo||'',
titulo:(x.title&&x.title.rendered)?x.title.rendered:'',
zona:zid&&zonaMap[zid]?zonaMap[zid]:'',
url:x.link||'#',imagen:x.imagen||''
};
});
initMap(rooms);
}).catch(function(e){ console.log('adalup map error', e); });
}
function boot(){
if(typeof L!=='undefined'){ loadData(); return; }
var s=document.createElement('script');
s.src='https://unpkg.com/leaflet@1.9.4/dist/leaflet.js';
s.onload=loadData; document.body.appendChild(s);
}
boot();
})();