/* =====================================================================
   GMC Inmuebles · Mapa de propiedades en España — edición «Lujo»
   Temas: .inmo-map--noir (por defecto) y .inmo-map--marfil
   ===================================================================== */
.inmo-map{
  --inmo-serif:'Cormorant Garamond','Cormorant',Georgia,'Times New Roman',serif;
  --inmo-sans:'Jost','Helvetica Neue',Helvetica,Arial,sans-serif;
  --inmo-ease:cubic-bezier(.22,.61,.36,1);
  --inmo-bg:#0d0c0a;
  --inmo-bg-2:#13110f;
  --inmo-surface:#181613;
  --inmo-ink:#f1ece2;
  --inmo-muted:#8f877b;
  --inmo-line:rgba(241,236,226,.12);
  --inmo-line-2:rgba(241,236,226,.28);
  --inmo-accent:#c9a96e;
  --inmo-accent-ink:#0d0c0a;
  --inmo-sea:#0d0c0a;
  --inmo-land:#1d1a16;
  --inmo-land-line:rgba(201,169,110,.55);
  --inmo-prov:rgba(241,236,226,.07);
  --inmo-nb:#141210;
  --inmo-nb-line:rgba(241,236,226,.07);
  --inmo-dots:rgba(241,236,226,.05);
  --inmo-k:1;
  position:relative;
  container:inmomap / inline-size;
  background:var(--inmo-bg);
  color:var(--inmo-ink);
  font-family:var(--inmo-sans);
  font-size:15px;
  font-weight:300;
  line-height:1.6;
  padding:clamp(56px,8vw,128px) clamp(18px,4.5vw,72px) clamp(64px,9vw,140px);
  -webkit-font-smoothing:antialiased;
}
.inmo-map--marfil{
  --inmo-bg:#f4f0e8;--inmo-bg-2:#efe9de;--inmo-surface:#fbf9f4;--inmo-ink:#16140f;--inmo-muted:#7c7368;
  --inmo-line:rgba(22,20,15,.12);--inmo-line-2:rgba(22,20,15,.3);--inmo-accent:#9a7a50;--inmo-accent-ink:#fff;
  --inmo-sea:#eee8dc;--inmo-land:#f8f5ef;--inmo-land-line:rgba(154,122,80,.6);--inmo-prov:rgba(22,20,15,.08);
  --inmo-nb:#e7e0d3;--inmo-nb-line:rgba(22,20,15,.06);--inmo-dots:rgba(22,20,15,.06);
}
.inmo-map,.inmo-map *,.inmo-map *::before,.inmo-map *::after{box-sizing:border-box}
.inmo-map button{appearance:none;-webkit-appearance:none;background:none;border:0;border-radius:0;padding:0;margin:0;font:inherit;color:inherit;letter-spacing:inherit;text-transform:none;box-shadow:none;cursor:pointer;line-height:inherit;min-height:0;width:auto;text-align:left}
.inmo-map a{color:inherit;text-decoration:none}
.inmo-map :focus-visible{outline:1px solid var(--inmo-accent);outline-offset:3px}
.inmo-map [hidden]{display:none !important}
.inmo-map svg{display:block}
.inmo-map .inmo-map__wrap{max-width:1440px;margin:0 auto}

/* Cabecera */
.inmo-map .inmo-map__head{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:end;gap:32px 80px;margin:0 0 clamp(44px,5vw,72px)}
.inmo-map .inmo-kicker{display:flex;align-items:center;gap:16px;margin:0 0 clamp(22px,3vw,34px);font-size:11px;font-weight:400;letter-spacing:.38em;text-transform:uppercase;color:var(--inmo-accent)}
.inmo-map .inmo-kicker::before{content:"";width:56px;height:1px;background:currentColor}
.inmo-map .inmo-title{margin:0;font-family:var(--inmo-serif);font-weight:300;font-size:clamp(46px,6.6cqi,112px);line-height:.9;letter-spacing:-.025em;color:var(--inmo-ink)}
.inmo-map .inmo-title em{font-style:italic;color:var(--inmo-accent)}
.inmo-map .inmo-intro{margin:0;max-width:44ch;justify-self:end;font-size:16px;line-height:1.8;color:var(--inmo-muted)}

/* Barra */
.inmo-map .inmo-map__bar{display:flex;align-items:stretch;gap:0;min-height:68px;border-top:1px solid var(--inmo-line-2);border-bottom:1px solid var(--inmo-line)}
.inmo-map .inmo-map__ops{display:flex;align-items:center;gap:24px;padding-right:28px;border-right:1px solid var(--inmo-line)}
.inmo-map .inmo-map__ops button{position:relative;padding:6px 0;font-family:var(--inmo-serif);font-size:21px;font-weight:300;color:var(--inmo-muted);white-space:nowrap;transition:color .3s}
.inmo-map .inmo-map__ops button::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--inmo-accent);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--inmo-ease)}
.inmo-map .inmo-map__ops button:hover{color:var(--inmo-ink);background:none}
.inmo-map .inmo-map__ops button[aria-pressed="true"]{color:var(--inmo-ink)}
.inmo-map .inmo-map__ops button[aria-pressed="true"]::after{transform:scaleX(1)}
.inmo-map .inmo-map__zonas{display:flex;align-items:center;gap:6px;padding:0 0 0 22px;overflow-x:auto;scrollbar-width:none;flex:1;min-width:0;-webkit-mask-image:linear-gradient(90deg,#000 92%,transparent);mask-image:linear-gradient(90deg,#000 92%,transparent)}
.inmo-map .inmo-map__zonas::-webkit-scrollbar{display:none}
.inmo-map .inmo-map__zonas button{flex:none;padding:8px 14px;border:1px solid transparent;font-size:12.5px;letter-spacing:.04em;color:var(--inmo-muted);white-space:nowrap;transition:color .3s,border-color .3s}
.inmo-map .inmo-map__zonas button:hover{color:var(--inmo-ink);background:none}
.inmo-map .inmo-map__zonas button[aria-pressed="true"]{color:var(--inmo-ink);border-color:var(--inmo-accent)}
.inmo-map .inmo-map__zonas sup{font-family:var(--inmo-serif);font-size:13px;font-style:italic;color:var(--inmo-accent);margin-left:2px}

/* Distribución */
.inmo-map .inmo-map__layout{display:grid;grid-template-columns:360px minmax(0,1fr);border-bottom:1px solid var(--inmo-line)}
.inmo-map .inmo-map__side{position:relative;border-right:1px solid var(--inmo-line)}
.inmo-map .inmo-map__listbox{position:absolute;inset:0;overflow:auto;scrollbar-width:thin;scrollbar-color:var(--inmo-line-2) transparent}
.inmo-map .inmo-map__count{position:sticky;top:0;z-index:2;margin:0;padding:22px 24px 16px;background:var(--inmo-bg);font-size:10.5px;letter-spacing:.3em;text-transform:uppercase;color:var(--inmo-muted)}
.inmo-map .inmo-map__count strong{font-family:var(--inmo-serif);font-size:24px;font-weight:300;font-style:italic;letter-spacing:0;color:var(--inmo-ink);margin-right:8px}
.inmo-map .inmo-map__list{list-style:none;margin:0;padding:0 0 12px}
.inmo-map .inmo-map__list li{margin:0;padding:0}
.inmo-map .inmo-li{position:relative;display:grid;grid-template-columns:92px minmax(0,1fr);gap:16px;width:100%;padding:14px 24px;border-top:1px solid var(--inmo-line);transition:background .35s}
.inmo-map .inmo-li::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--inmo-accent);transform:scaleY(0);transition:transform .45s var(--inmo-ease)}
.inmo-map .inmo-li:hover,.inmo-map .inmo-li.is-on{background:var(--inmo-bg-2)}
.inmo-map .inmo-li.is-on::before{transform:scaleY(1)}
.inmo-map .inmo-li__img{display:block;aspect-ratio:1;overflow:hidden;background:var(--inmo-surface)}
.inmo-map .inmo-li__img img{width:100%;height:100%;max-width:none;object-fit:cover;display:block;transition:transform 1.2s var(--inmo-ease)}
.inmo-map .inmo-li:hover .inmo-li__img img{transform:scale(1.08)}
.inmo-map .inmo-li__txt{display:flex;flex-direction:column;justify-content:center;gap:4px;min-width:0}
.inmo-map .inmo-li__loc{font-size:9.5px;letter-spacing:.3em;text-transform:uppercase;color:var(--inmo-accent)}
.inmo-map .inmo-li__title{font-family:var(--inmo-serif);font-size:19px;font-weight:400;line-height:1.15;color:var(--inmo-ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.inmo-map .inmo-li__price{font-size:13px;color:var(--inmo-muted)}
.inmo-map .inmo-li__price small{margin-left:3px}

/* Escenario del mapa */
.inmo-map .inmo-map__stage{position:relative;aspect-ratio:3/2;min-height:420px;overflow:hidden;background:var(--inmo-sea);background-image:radial-gradient(var(--inmo-dots) 1px,transparent 1px);background-size:22px 22px;touch-action:none}
.inmo-map [data-svg]{width:100%;height:100%;cursor:grab;opacity:0;transition:opacity 1.2s var(--inmo-ease)}
.inmo-map.is-ready [data-svg]{opacity:1}
.inmo-map [data-svg]:active{cursor:grabbing}
.inmo-map .inmo-map__nb{fill:var(--inmo-nb);stroke:var(--inmo-nb-line);stroke-width:.6;vector-effect:non-scaling-stroke}
.inmo-map .inmo-map__land{fill:var(--inmo-land);stroke:var(--inmo-land-line);stroke-width:.9;vector-effect:non-scaling-stroke}
.inmo-map .inmo-map__mesh{fill:none;stroke:var(--inmo-prov);stroke-width:.7;vector-effect:non-scaling-stroke}
.inmo-map .inmo-map__inset{fill:none;stroke:var(--inmo-line-2);stroke-width:.8;stroke-dasharray:3 4;vector-effect:non-scaling-stroke}

/* Pines */
.inmo-map .inmo-pin{cursor:pointer;outline:none}
.inmo-map .inmo-pin__halo{fill:var(--inmo-accent);opacity:.16;transform-box:fill-box;transform-origin:center;animation:inmoPulse 2.8s ease-out infinite}
.inmo-map .inmo-pin__ring{fill:var(--inmo-bg);stroke:var(--inmo-accent);stroke-width:1.2}
.inmo-map .inmo-pin__dot{fill:var(--inmo-accent)}
.inmo-map .inmo-pin__body{fill:var(--inmo-accent);stroke:var(--inmo-bg);stroke-width:2;transition:fill .3s}
.inmo-map .inmo-pin__n{fill:var(--inmo-accent-ink);font-family:var(--inmo-serif);font-size:16px;font-weight:500;text-anchor:middle;pointer-events:none}
.inmo-map .inmo-pin__lbl{fill:var(--inmo-ink);font-family:var(--inmo-sans);font-size:9.5px;font-weight:400;letter-spacing:.24em;text-transform:uppercase;paint-order:stroke;stroke:var(--inmo-sea);stroke-width:4px;stroke-linejoin:round;pointer-events:none;opacity:.9}
.inmo-map .inmo-pin:hover .inmo-pin__ring,.inmo-map .inmo-pin.is-hot .inmo-pin__ring,.inmo-map .inmo-pin.is-open .inmo-pin__ring,.inmo-map .inmo-pin:focus-visible .inmo-pin__ring{fill:var(--inmo-accent)}
.inmo-map .inmo-pin:hover .inmo-pin__dot,.inmo-map .inmo-pin.is-hot .inmo-pin__dot,.inmo-map .inmo-pin.is-open .inmo-pin__dot{fill:var(--inmo-bg)}
.inmo-map .inmo-pin.is-hot .inmo-pin__halo,.inmo-map .inmo-pin.is-open .inmo-pin__halo,.inmo-map .inmo-pin:hover .inmo-pin__halo{opacity:.35}
.inmo-map .inmo-pin--grupo:hover .inmo-pin__body,.inmo-map .inmo-pin--grupo.is-hot .inmo-pin__body{fill:var(--inmo-ink)}
@keyframes inmoPulse{0%{transform:scale(.6);opacity:.35}100%{transform:scale(1.6);opacity:0}}

/* Controles */
.inmo-map .inmo-map__ctrl{position:absolute;right:20px;bottom:20px;z-index:3;display:flex;flex-direction:column;border:1px solid var(--inmo-line-2);background:var(--inmo-bg)}
.inmo-map .inmo-map__ctrl button{display:grid;place-items:center;width:44px;height:44px;color:var(--inmo-ink);transition:background .3s,color .3s}
.inmo-map .inmo-map__ctrl button + button{border-top:1px solid var(--inmo-line)}
.inmo-map .inmo-map__ctrl button:hover{background:var(--inmo-accent);color:var(--inmo-accent-ink)}
.inmo-map .inmo-map__legend{position:absolute;left:24px;top:22px;z-index:3;display:flex;align-items:center;gap:10px;margin:0;font-size:9.5px;letter-spacing:.3em;text-transform:uppercase;color:var(--inmo-muted);pointer-events:none}
.inmo-map .inmo-map__legend::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--inmo-accent);box-shadow:0 0 0 4px rgba(201,169,110,.2)}
.inmo-map .inmo-map__hint{position:absolute;left:50%;top:50%;z-index:4;margin:0;padding:14px 22px;background:rgba(0,0,0,.72);color:#f1ece2;font-size:12px;letter-spacing:.14em;transform:translate(-50%,-50%);opacity:0;pointer-events:none;transition:opacity .4s}
.inmo-map .inmo-map__hint.is-on{opacity:1}

/* Tarjeta emergente */
.inmo-map .inmo-pop{position:absolute;left:var(--x);top:var(--y);z-index:5;width:400px;display:grid;grid-template-columns:136px minmax(0,1fr);background:var(--inmo-surface);border:1px solid var(--inmo-line-2);box-shadow:0 40px 80px -24px rgba(0,0,0,.6);transform:translate(-50%,calc(-100% - 22px)) translateY(10px);opacity:0;transition:opacity .4s var(--inmo-ease),transform .4s var(--inmo-ease)}
.inmo-map .inmo-pop.is-on{opacity:1;transform:translate(-50%,calc(-100% - 22px))}
.inmo-map .inmo-pop.is-below{transform:translate(-50%,22px) translateY(-10px)}
.inmo-map .inmo-pop.is-below.is-on{transform:translate(-50%,22px)}
.inmo-map .inmo-pop.is-left{margin-left:-150px}
.inmo-map .inmo-pop.is-right{margin-left:150px}
.inmo-map .inmo-pop.is-out{opacity:0;pointer-events:none}
.inmo-map .inmo-pop__x{position:absolute;top:8px;right:8px;z-index:2;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:transparent;color:var(--inmo-muted);font-size:18px;line-height:1;text-align:center}
.inmo-map .inmo-pop__x:hover{background:var(--inmo-accent);color:var(--inmo-accent-ink)}
.inmo-map .inmo-pop__media{position:relative;display:block;min-height:100%;overflow:hidden;background:var(--inmo-bg-2)}
.inmo-map .inmo-pop__media img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover;display:block;transition:transform 1.4s var(--inmo-ease)}
.inmo-map .inmo-pop__media:hover img{transform:scale(1.05)}
.inmo-map .inmo-pop__tag{position:absolute;left:8px;top:8px;padding:5px 8px;background:rgba(13,12,10,.55);border:1px solid rgba(255,255,255,.22);color:#f1ece2;font-size:9px;letter-spacing:.28em;text-transform:uppercase}
.inmo-map .inmo-pop__body{padding:18px 20px 18px}
.inmo-map .inmo-pop__loc{margin:0 0 8px;font-size:9.5px;letter-spacing:.3em;text-transform:uppercase;color:var(--inmo-accent)}
.inmo-map .inmo-pop__title{margin:0 22px 6px 0;font-family:var(--inmo-serif);font-size:21px;font-weight:400;line-height:1.12;color:var(--inmo-ink)}
.inmo-map .inmo-pop__specs{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px;font-size:12.5px;color:var(--inmo-muted)}
.inmo-map .inmo-pop__foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:14px;border-top:1px solid var(--inmo-line)}
.inmo-map .inmo-pop__price{margin:0;white-space:nowrap;font-family:var(--inmo-serif);font-size:24px;line-height:1}
.inmo-map .inmo-pop__price small{font-family:var(--inmo-sans);font-size:11px;color:var(--inmo-muted);margin-left:4px}
.inmo-map .inmo-pop__price em{font-size:18px}
.inmo-map .inmo-pop__cta{display:inline-flex;align-items:center;gap:10px;font-size:9.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--inmo-accent);white-space:nowrap}
.inmo-map .inmo-pop__cta svg{transition:transform .5s var(--inmo-ease)}
.inmo-map .inmo-pop__cta:hover svg{transform:translateX(5px)}

/* Adaptación al ancho disponible */
@container inmomap (max-width:1000px){
  .inmo-map .inmo-map__head{grid-template-columns:1fr}
  .inmo-map .inmo-intro{justify-self:start}
  .inmo-map .inmo-map__layout{grid-template-columns:1fr}
  .inmo-map .inmo-map__side{order:2;border-right:0;border-top:1px solid var(--inmo-line)}
  .inmo-map .inmo-map__listbox{position:static;max-height:none;overflow:visible}
  .inmo-map .inmo-map__list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  .inmo-map .inmo-map__list li:nth-child(odd) .inmo-li{border-right:1px solid var(--inmo-line)}
}
@container inmomap (max-width:640px){
  .inmo-map .inmo-map__bar{flex-direction:column}
  .inmo-map .inmo-map__ops{padding:14px 0;border-right:0;border-bottom:1px solid var(--inmo-line)}
  .inmo-map .inmo-map__zonas{padding:10px 0}
  .inmo-map .inmo-map__stage{aspect-ratio:1.25;min-height:0}
  .inmo-map .inmo-map__list{grid-template-columns:1fr}
  .inmo-map .inmo-map__list li:nth-child(odd) .inmo-li{border-right:0}
  .inmo-map .inmo-li{padding:14px 0}
  .inmo-map .inmo-map__count{padding:20px 0 14px}
  .inmo-map .inmo-pop,.inmo-map .inmo-pop.is-below,.inmo-map .inmo-pop.is-left,.inmo-map .inmo-pop.is-right{left:12px !important;right:12px;top:auto !important;bottom:12px;width:auto;margin:0;transform:translateY(20px)}
  .inmo-map .inmo-pop.is-on,.inmo-map .inmo-pop.is-below.is-on{transform:none}
  .inmo-map .inmo-pop.is-out{opacity:1;pointer-events:auto}
  .inmo-map .inmo-pop{grid-template-columns:104px minmax(0,1fr)}
  .inmo-map .inmo-map__ctrl{right:10px;bottom:10px;flex-direction:row}
  .inmo-map .inmo-map__ctrl button{width:38px;height:38px}
  .inmo-map .inmo-map__ctrl button + button{border-top:0;border-left:1px solid var(--inmo-line)}
  .inmo-map .inmo-map__legend{display:none}
}
@media (prefers-reduced-motion:reduce){
  .inmo-map *{animation:none !important;transition:none !important}
}

/* Sin bordes: el contenedor de Elementor que lleva el shortcode no añade relleno ni márgenes */
.e-con:has(> .elementor-widget-shortcode .inmo-map),.e-con:has(> .e-con-inner > .elementor-widget-shortcode .inmo-map){--padding-top:0px;--padding-right:0px;--padding-bottom:0px;--padding-left:0px;--gap:0px;--row-gap:0px;--column-gap:0px;padding:0 !important;gap:0 !important}
.elementor-widget-shortcode:has(.inmo-map){margin:0 !important;--kit-widget-spacing:0px}
.elementor-column:has(.elementor-widget-shortcode .inmo-map) > .elementor-widget-wrap{padding:0 !important}
.elementor-section:has(.elementor-widget-shortcode .inmo-map) > .elementor-container{max-width:none}

/* Versión compacta (dentro del inicio) */
.inmo-map[data-compacto]{padding-top:0;padding-bottom:0;background:transparent}
