body.place-map-page{overflow:hidden}
body.place-map-page footer{display:none}
.place-map-shell{
  position:relative;
  width:100%;
  min-height:calc(100dvh - 94px);
  margin-top:94px;
  background:#eef5fb;
  overflow:hidden;
}
.place-map-canvas{
  position:relative;
  width:100%;
  height:calc(100dvh - 94px);
  min-height:640px;
  background:#dfeaf5;
}
.place-map-overlay{
  position:absolute;
  top:10px;
  left:10px;
  z-index:3;
  width:calc(100% - 10px);
  pointer-events:none;
}
body.place-map-info-open .place-map-overlay{z-index:1}
body.place-map-info-open .place-map-canvas{z-index:2}
.place-map-title-card{
  width:auto;
  display:flex;
  padding:0;
  border:0;
  background:transparent;
  box-shadow:none;
  backdrop-filter:none;
  pointer-events:none;
}
.place-map-actions{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:.55rem;
  pointer-events:auto;
}
.place-map-filter-row,
.place-map-button-row{
  position:relative;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:.5rem;
}
.place-map-button-row{width:260px}
.place-map-filter-row{
  width:340px;
  grid-template-columns:minmax(0,1.25fr) minmax(0,.95fr);
}
.map-back-link{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1.5px solid var(--border);
  border-radius:999px;
  background:white;
  color:var(--text);
  font-weight:800;
  font-size:.78rem;
  padding:.55rem .9rem;
  box-shadow:0 10px 26px rgba(18,34,51,.12);
}
.map-back-link:hover{border-color:var(--blue);color:var(--blue)}
.place-map-location{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.42rem;
  background:white;
  border:1.5px solid var(--border);
  border-radius:999px;
  font-size:.78rem;
  color:var(--text);
  font-weight:800;
  padding:.55rem .9rem;
  cursor:pointer;
  box-shadow:0 10px 26px rgba(18,34,51,.12);
}
.place-map-location:hover{border-color:var(--blue);color:var(--blue)}
.place-map-location:disabled{
  cursor:progress;
  opacity:.78;
}
.place-map-select{position:relative;min-width:0}
.place-map-select-button{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.42rem;
  width:100%;
  min-height:38px;
  padding:.46rem .72rem;
  border:1.5px solid var(--border);
  border-radius:999px;
  background:white;
  box-shadow:0 10px 26px rgba(18,34,51,.12);
  color:var(--text);
  cursor:pointer;
  text-align:left;
}
.place-map-select-button span{
  flex-shrink:0;
  color:var(--text2);
  font-size:.7rem;
  font-weight:900;
  line-height:1;
}
.place-map-select-button strong{
  display:block;
  min-width:0;
  margin-right:auto;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
  font-size:.78rem;
  line-height:1.1;
}
.place-map-select-button i{
  flex-shrink:0;
  color:var(--blue);
  font-size:.72rem;
  transition:transform .18s ease;
}
.place-map-select.is-open .place-map-select-button i{transform:rotate(180deg)}
.place-map-select-menu{
  position:absolute;
  top:calc(100% + 8px);
  left:0;
  z-index:8;
  display:none;
  width:260px;
  max-height:310px;
  overflow-x:hidden;
  overflow-y:auto;
  box-sizing:border-box;
  scrollbar-gutter:stable;
  padding:.4rem .55rem .4rem .4rem;
  border:1px solid var(--border);
  border-radius:16px;
  background:white;
  box-shadow:0 18px 40px rgba(18,34,51,.18);
}
.place-map-select-menu::-webkit-scrollbar{width:8px}
.place-map-select-menu::-webkit-scrollbar-track{background:transparent}
.place-map-select-menu::-webkit-scrollbar-thumb{
  border:2px solid rgba(255,255,255,.88);
  border-radius:999px;
  background:rgba(27,142,240,.35);
}
.place-map-select:nth-child(2) .place-map-select-menu{left:0;right:auto}
.place-map-select.is-open .place-map-select-menu{display:grid;gap:.15rem}
.place-map-select-menu button{
  display:flex;
  align-items:center;
  width:100%;
  min-height:34px;
  padding:.45rem .6rem;
  border:0;
  border-radius:10px;
  background:transparent;
  color:var(--text);
  font-size:.78rem;
  font-weight:800;
  cursor:pointer;
  text-align:left;
}
.place-map-select-menu button:hover,
.place-map-select-menu button.is-selected{
  background:#edf6ff;
  color:var(--blue);
}
.place-photo-marker{
  position:relative;
  width:54px;
  height:54px;
  border:3px solid white;
  border-radius:18px;
  background:#eaf4ff;
  box-shadow:0 8px 20px rgba(18,34,51,.22);
  overflow:hidden;
  cursor:pointer;
  transform:translateY(-4px);
}
.place-photo-marker::after{
  content:'';
  position:absolute;
  left:50%;
  bottom:-7px;
  width:13px;
  height:13px;
  background:white;
  border-right:3px solid white;
  border-bottom:3px solid white;
  transform:translateX(-50%) rotate(45deg);
}
.place-photo-marker img{width:100%;height:100%;object-fit:cover;display:block;position:relative;z-index:1}
.place-photo-marker-fallback{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:var(--blue);font-size:1.25rem;position:relative;z-index:1}
.place-map-cluster{display:inline-flex;align-items:center;justify-content:center;width:54px;height:54px;border:3px solid #fff;border-radius:999px;background:var(--blue);color:#fff;font-family:'Nunito',sans-serif;font-size:1rem;font-weight:900;box-shadow:0 8px 20px rgba(18,34,51,.22);cursor:pointer}
.place-current-marker{display:block;width:18px;height:18px;border:3px solid #fff;border-radius:999px;background:var(--blue);box-shadow:0 4px 14px rgba(27,142,240,.35)}
.gm-style .gm-style-iw-c{
  z-index:20!important;
  overflow:hidden!important;
  border-radius:18px!important;
  padding:0!important;
  box-shadow:0 18px 44px rgba(18,34,51,.2)!important;
}
.gm-style .gm-style-iw-d{
  overflow:auto!important;
  max-height:calc(100dvh - 150px)!important;
  margin:0!important;
}
.gm-style .gm-style-iw-chr,
.gm-style .gm-style-iw-ch{display:none!important}
.gm-style .gm-ui-hover-effect{display:none!important}
.place-map-popup{
  position:relative;
  width:340px;
  max-width:calc(100vw - 56px);
  overflow:hidden;
  background:white;
  border-radius:18px;
}
.place-map-popup-close{
  position:absolute;
  top:10px;
  right:10px;
  z-index:3;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:34px;
  height:34px;
  border:0;
  border-radius:50%;
  background:rgba(255,255,255,.94);
  color:var(--text);
  box-shadow:0 8px 18px rgba(18,34,51,.14);
  cursor:pointer;
}
.place-map-popup-hero{
  display:block;
  width:100%;
  aspect-ratio:4/3;
  object-fit:cover;
  background:var(--sky);
}
.place-map-popup-body{padding:1rem}
.place-map-popup-head{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:start;
  gap:.7rem;
  margin-bottom:.4rem;
}
.place-map-popup-meta{
  display:block;
  font-size:.75rem;
  color:var(--mint-dark);
  font-weight:900;
  margin-bottom:.28rem;
}
.place-map-popup-title{
  display:block;
  color:var(--text);
  font-size:1.05rem;
  font-weight:900;
  line-height:1.25;
  margin-bottom:0;
}
.place-map-popup-contact{
  display:grid;
  gap:.28rem;
  margin-bottom:.58rem;
}
.place-map-popup-contact span{
  display:flex;
  align-items:flex-start;
  gap:.38rem;
  color:var(--text2);
  font-size:.78rem;
  font-weight:700;
  line-height:1.38;
}
.place-map-popup-contact i{
  width:14px;
  color:var(--blue);
  line-height:1.35;
  text-align:center;
  flex-shrink:0;
}
.place-map-popup-summary{
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
  font-size:.82rem;
  color:var(--text2);
  font-weight:650;
  line-height:1.5;
  margin-bottom:.75rem;
}
.place-map-popup-gallery{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:.35rem;
  margin-bottom:.85rem;
}
.place-map-popup-gallery span{
  display:block;
  aspect-ratio:1/1;
  border-radius:10px;
  overflow:hidden;
  background:var(--sky);
}
.place-map-popup-gallery img{width:100%;height:100%;object-fit:cover;display:block}
.place-map-popup-posts{
  display:grid;
  gap:.45rem;
  padding:.65rem;
  border-radius:12px;
  background:#f5f9fd;
  margin-bottom:.85rem;
}
.place-map-popup-posts em{
  font-style:normal;
  font-size:.72rem;
  color:var(--text2);
  font-weight:900;
}
.place-map-popup-posts a{
  display:grid;
  grid-template-columns:34px 1fr;
  align-items:center;
  gap:.5rem;
  min-width:0;
}
.place-map-popup-posts img,
.post-thumb-empty{
  width:34px;
  height:34px;
  border-radius:8px;
  object-fit:cover;
  background:#e2f0ff;
}
.post-thumb-empty{display:flex;align-items:center;justify-content:center;color:var(--blue)}
.place-map-popup-posts strong{
  display:block;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
  color:var(--text);
  font-size:.78rem;
}
.place-map-popup-link{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:30px;
  padding:.42rem .65rem;
  border:1px solid #cce5ff;
  border-radius:999px;
  background:#edf6ff;
  color:var(--blue);
  font-size:.76rem;
  font-weight:900;
  white-space:nowrap;
}
.place-map-sheet{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  z-index:10;
  display:none;
  pointer-events:none;
  transform:translateY(100%);
  transition:transform .24s ease;
}
.place-map-sheet[aria-hidden="false"]{
  transform:translateY(0);
  pointer-events:auto;
}
.place-map-sheet-close{
  position:absolute;
  top:10px;
  right:18px;
  z-index:2;
  width:34px;
  height:34px;
  border:0;
  border-radius:50%;
  background:rgba(255,255,255,.92);
  color:var(--text);
  box-shadow:0 8px 18px rgba(18,34,51,.14);
  cursor:pointer;
}
.place-map-sheet-content{
  max-height:62dvh;
  overflow:auto;
  border-radius:24px 24px 0 0;
  background:white;
  box-shadow:0 -18px 42px rgba(18,34,51,.2);
}
.place-map-sheet-card .place-map-popup{
  width:100%;
  max-width:none;
  border-radius:24px 24px 0 0;
}
.place-map-empty{
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  background:white;
  border:1.5px solid var(--border);
  border-radius:14px;
  padding:1rem 1.2rem;
  font-weight:800;
  color:var(--text2);
}
.place-map-toast{
  position:fixed;
  left:50%;
  top:118px;
  z-index:9999;
  max-width:min(420px,calc(100vw - 32px));
  padding:.72rem 1rem;
  border-radius:999px;
  background:rgba(18,34,51,.92);
  color:white;
  font-size:.86rem;
  font-weight:800;
  box-shadow:0 16px 36px rgba(18,34,51,.22);
  transform:translate(-50%,-10px);
  opacity:0;
  pointer-events:none;
  transition:opacity .18s ease,transform .18s ease;
}
.place-map-toast.is-visible{
  opacity:1;
  transform:translate(-50%,0);
}
@media(max-width:900px){
  .place-map-shell{min-height:calc(100dvh - 60px);margin-top:60px}
  .place-map-canvas{height:calc(100dvh - 60px);min-height:0}
  .place-map-overlay{top:14px;width:calc(100% - 24px)}
  .place-map-title-card{width:auto;padding:0}
  .place-map-button-row{width:260px}
  .place-map-filter-row{width:330px}
  .map-back-link,.place-map-location{font-size:.74rem;padding:.52rem .68rem}
  .place-map-select-button{min-height:38px;padding:.46rem .66rem}
  .place-map-select-button strong{font-size:.76rem}
}
@media(max-width:600px){
  .place-map-title-card{width:auto}
  .place-map-actions{gap:.45rem}
  .place-map-button-row{width:min(260px,calc(100vw - 24px))}
  .place-map-filter-row{width:min(330px,calc(100vw - 24px))}
  .place-map-filter-row,.place-map-button-row{gap:.42rem}
  .map-back-link,.place-map-location{font-size:.72rem;padding:.48rem .72rem}
  .place-map-select-button{min-height:37px;padding:.42rem .6rem}
  .place-map-select-button span{font-size:.63rem}
  .place-map-select-button strong{font-size:.74rem}
  .place-map-select-menu{width:260px;max-width:calc(100vw - 24px);max-height:250px}
  .place-map-select:nth-child(2) .place-map-select-menu{left:0;right:auto}
  .place-photo-marker{width:46px;height:46px;border-radius:15px}
  .gm-style .gm-style-iw-c{display:none!important}
  .place-map-sheet{display:block}
  .place-map-popup{width:100%;max-width:none}
  .place-map-sheet-card .place-map-popup-close{display:none}
  .place-map-popup-hero{aspect-ratio:16/8.5}
  .place-map-popup-body{padding:.78rem}
  .place-map-popup-head{gap:.5rem;margin-bottom:.32rem}
  .place-map-popup-link{min-height:28px;padding:.36rem .56rem;font-size:.7rem}
  .place-map-popup-title{font-size:.96rem;margin-bottom:.3rem}
  .place-map-popup-meta{font-size:.7rem}
  .place-map-popup-contact{gap:.2rem;margin-bottom:.42rem}
  .place-map-popup-contact span{font-size:.72rem;line-height:1.28}
  .place-map-popup-summary{font-size:.74rem;line-height:1.38;margin-bottom:.55rem;-webkit-line-clamp:2}
  .place-map-popup-gallery{gap:.25rem;margin-bottom:.6rem}
  .place-map-popup-gallery span{border-radius:8px}
  .place-map-popup-posts{padding:.48rem;gap:.35rem;margin-bottom:.6rem}
  .place-map-popup-posts a{grid-template-columns:28px 1fr;gap:.42rem}
  .place-map-popup-posts img,
  .post-thumb-empty{width:28px;height:28px;border-radius:7px}
  .place-map-popup-posts strong{font-size:.72rem}
}
