/* El mapa real es la superficie principal; la grilla queda como indice alternativo. */
.has-lugares-map .lugares-shell{display:block}
.has-lugares-map .lugares-panel{padding:0}
.has-lugares-map .lugares-filter,.has-lugares-map .lugares-map,.has-lugares-map .lugares-index{position:relative;left:50%;width:min(1460px,calc(100vw - 64px));transform:translateX(-50%)}
.has-lugares-map .lugares-filter{justify-content:flex-start;margin-bottom:18px}
.has-lugares-map .lugares-filter>div{justify-content:flex-start}
.lugares-map{isolation:isolate}
.lugares-map-viewport{position:relative;overflow:hidden;border:1px solid #d4e4ed;border-radius:4px;background:#dce8ed;box-shadow:0 26px 58px -48px rgba(0,66,116,.5)}
.lugares-map-canvas{position:relative;width:100%;height:clamp(560px,52vw,710px)}
.lugares-map-status{position:absolute;z-index:8;inset:0;display:grid;place-items:center;padding:24px;background:rgba(241,247,250,.92);color:#00588f;font:800 .82rem/1.5 "Libre Franklin",system-ui,sans-serif;text-align:center}
.lugares-map-status[hidden]{display:none!important}
.lugares-map .maplibregl-ctrl-top-right{top:12px;right:12px}
.lugares-map .maplibregl-ctrl-group{overflow:hidden;border:1px solid #c9dce6;border-radius:4px;background:#fff;box-shadow:0 7px 22px rgba(0,47,85,.16)}
.lugares-map .maplibregl-ctrl-group button{width:38px;height:38px}
.lugares-map .maplibregl-ctrl-attrib{margin:0 0 8px 9px;padding:3px 6px;border-radius:3px;background:rgba(255,255,255,.92);color:#2d536a;font-size:10px}
.lugares-map .maplibregl-ctrl-attrib a{color:#006197}
.lugares-map .maplibregl-cooperative-gesture-screen{font-family:"Libre Franklin",system-ui,sans-serif}

.lugares-map-pin{display:block;width:42px;height:49px;padding:0;border:0;background:none;color:#00588f;cursor:pointer}
.lugares-map-pin[hidden]{display:none!important}
.lugares-map-pin-dot{position:absolute;left:2px;top:0;display:grid;place-items:center;width:38px;height:38px;border:4px solid #fff;border-radius:50% 50% 50% 0;background:#008fd3;box-shadow:0 0 0 4px rgba(0,143,211,.14),-6px 8px 18px rgba(0,46,86,.28);transform:rotate(-45deg);transition:transform .22s ease,box-shadow .22s ease}
.lugares-map-pin-dot::after{content:"";width:11px;height:11px;border-radius:50%;background:#fff}
.lugares-map-pin-label{position:absolute;top:4px;left:48px;display:block;width:max-content;max-width:170px;padding:8px 10px;border:1px solid #d5e3eb;border-radius:4px;background:rgba(255,255,255,.97);color:#00588f;font:800 .7rem/1.25 "Libre Franklin",system-ui,sans-serif;text-align:left;white-space:normal;box-shadow:0 7px 20px rgba(0,46,86,.15)}
.lugares-map-pin[data-label-side="left"] .lugares-map-pin-label{right:48px;left:auto;text-align:right}
.lugares-map-pin[data-label-side="below"] .lugares-map-pin-label{top:65px;left:50%;transform:translateX(-50%);text-align:center}
.lugares-map-pin:hover,.lugares-map-pin.is-active{z-index:10!important}
.lugares-map-pin:hover .lugares-map-pin-dot,.lugares-map-pin.is-active .lugares-map-pin-dot{transform:rotate(-45deg) scale(1.12);box-shadow:0 0 0 7px rgba(0,143,211,.21),-8px 12px 23px rgba(0,46,86,.3)}
.lugares-map-pin.is-active .lugares-map-pin-label{border-color:#008fd3;background:#008fd3;color:#fff}
.lugares-map-pin:focus-visible{outline:0}
.lugares-map-pin:focus-visible .lugares-map-pin-dot{outline:3px solid #003a63;outline-offset:6px}
.lugares-map-pin.is-sede{width:62px;height:62px}
.lugares-map-pin.is-sede .lugares-map-pin-dot{left:0;width:62px;height:62px;border-radius:50%;background:#004b80;box-shadow:0 0 0 7px rgba(0,97,151,.16),0 12px 30px rgba(0,46,86,.26);transform:none}
.lugares-map-pin.is-sede .lugares-map-pin-dot::after{display:none}
.lugares-map-pin.is-sede img{width:50px;height:50px;object-fit:contain;filter:brightness(0) invert(1)}
.lugares-map-pin.is-sede:hover .lugares-map-pin-dot,.lugares-map-pin.is-sede.is-active .lugares-map-pin-dot{transform:scale(1.08)}
.lugares-map-pin.is-sede .lugares-map-pin-label{color:#003a63;font-size:.68rem}
.lugares-map-pin.is-sede.is-active .lugares-map-pin-label{color:#fff}

.lugares-map-preview{position:absolute;z-index:7;right:24px;bottom:32px;width:min(345px,34%);overflow:hidden;border:1px solid #d4e4ed;border-radius:4px;background:#fff;box-shadow:0 26px 56px rgba(0,47,85,.26);animation:lugaresPreviewIn .28s ease both}
.lugares-map-preview[hidden]{display:none!important}
.lugares-map-preview-image{height:180px;background:#dcebf4}
.lugares-map-preview-image img{display:block;width:100%;height:100%;object-fit:cover}
.lugares-map-preview-close{position:absolute;z-index:1;right:12px;top:12px;display:grid;place-items:center;width:34px;height:34px;border:1px solid rgba(255,255,255,.7);border-radius:50%;background:rgba(255,255,255,.94);color:#006197;cursor:pointer}
.lugares-map-preview-close svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.lugares-map-preview-body{padding:19px 21px 21px}
.lugares-map-preview-type{display:block;margin-bottom:8px;color:#008fd3;font:900 .6rem/1 "Libre Franklin",system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase}
.lugares-map-preview h3{color:#004274;font-size:1.35rem;line-height:1.2;font-weight:800}
.lugares-map-preview p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;margin:9px 0 15px;color:#566d7d;font-size:.86rem;line-height:1.48}
.lugares-map-preview-more{display:flex;align-items:center;justify-content:space-between;width:100%;padding:15px 0 0;border:0;border-top:1px solid #dce7ed;background:none;color:#007bb7;font:900 .65rem/1.2 "Libre Franklin",system-ui,sans-serif;letter-spacing:.08em;text-align:left;text-transform:uppercase;cursor:pointer}
.lugares-map-preview-more span{font-size:1.15rem}
.lugares-map-preview-more:hover{color:#003a63}
.lugares-map-preview-more:focus-visible,.lugares-map-preview-close:focus-visible{outline:3px solid #008fd3;outline-offset:2px}
@keyframes lugaresPreviewIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}

.lugares-index{margin-top:22px}
.lugares-index summary{display:flex;align-items:center;justify-content:space-between;gap:12px;width:max-content;min-width:245px;margin-left:auto;padding:12px 0;border-bottom:1px solid #9dc8dd;color:#006197;font:800 .77rem/1.2 "Libre Franklin",system-ui,sans-serif;cursor:pointer;list-style:none}
.lugares-index summary::-webkit-details-marker{display:none}
.lugares-index summary::after{content:"+";font-size:1.3rem;font-weight:400}
.lugares-index[open] summary::after{content:"−"}
.lugares-index summary:focus-visible{outline:3px solid #008fd3;outline-offset:3px}
.lugares-index .lugares-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:24px 0 0}
.lugares-index .lugar-card{min-height:370px}
.lugares-index .lugar-card-body{padding:20px}
.lugares-index .lugar-card strong{font-size:1.12rem}
.lugares-index .lugar-card-copy{font-size:.86rem;line-height:1.5}
.lugar-card-num{display:inline-block;margin-right:8px;padding-right:8px;border-right:1px solid rgba(255,255,255,.5)}

@media(max-width:900px){
  .has-lugares-map .lugares-filter,.has-lugares-map .lugares-map,.has-lugares-map .lugares-index{width:100%;left:auto;transform:none}
  .lugares-map-canvas{height:510px}
  .lugares-map-preview{position:relative;right:auto;bottom:auto;width:100%;display:grid;grid-template-columns:118px minmax(0,1fr);border:0;border-top:1px solid #d4e4ed;border-radius:0;box-shadow:none}
  .lugares-map-preview-image{height:100%;min-height:170px}
  .lugares-map-preview-body{padding:16px 16px 14px}
  .lugares-map-preview h3{font-size:1.1rem}
  .lugares-map-preview p{-webkit-line-clamp:2;font-size:.77rem;margin:6px 0 9px}
  .lugares-map-preview-more{padding-top:9px;font-size:.6rem}
  .lugares-index .lugares-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:680px){
  .has-lugares-map .lugares-filter{gap:10px;margin-bottom:14px}
  .has-lugares-map .lugares-filter>div{gap:6px}
  .has-lugares-map .lugares-filter button{padding:8px 10px;font-size:.59rem}
  .lugares-map-canvas{height:470px}
  .lugares-map-pin-label{max-width:125px;font-size:.63rem;padding:7px 8px}
  .lugares-map-pin[data-place-id="ministerio-agricultura"] .lugares-map-pin-label,
  .lugares-map-pin[data-place-id="paseo-colon"] .lugares-map-pin-label{display:none}
  .lugares-map-pin.is-active .lugares-map-pin-label{display:block}
  .lugares-map .maplibregl-ctrl-top-right{top:7px;right:7px}
  .lugares-map .maplibregl-ctrl-group button{width:34px;height:34px}
  .lugares-map-preview{grid-template-columns:100px minmax(0,1fr)}
  .lugares-map-preview-image{min-height:160px}
  .lugares-map-preview-body{padding:13px 14px 12px}
  .lugares-map-preview-type{font-size:.53rem}
  .lugares-map-preview h3{font-size:1rem}
  .lugares-map-preview p{font-size:.72rem;line-height:1.35}
  .lugares-map-preview-more{font-size:.55rem}
  .lugares-index .lugares-grid{display:flex;gap:12px;margin:18px -14px 0;padding:0 14px 12px;overflow-x:auto;scroll-snap-type:x proximity}
  .lugares-index .lugar-card{flex:0 0 min(78vw,300px);min-height:370px}
}
@media(prefers-reduced-motion:reduce){.lugares-map-pin-dot,.lugares-map-preview{animation:none;transition:none}}
