.sm-section{width:100%;}
.sm-head{max-width:1200px;margin:0 auto 18px;padding:0 14px;}
.sm-headline{margin:0;font-size:44px;font-weight:800;letter-spacing:-0.02em;}
.sm-underline{width:120px;height:5px;background:#0097d7;margin:10px 0 0;}

.sm-mapstage{position:relative;width:100%;}
.sm-map{width:100%;height:100%;}

.sm-mapplaceholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:18px;background:repeating-linear-gradient(45deg,rgba(0,0,0,.04),rgba(0,0,0,.04) 10px,rgba(0,0,0,.02) 10px,rgba(0,0,0,.02) 20px);z-index:2;}

.sm-popup{position:absolute;left:6%;top:50%;transform:translateY(-50%);width:min(560px,90vw);background:#fff;border-radius:18px;box-shadow:0 18px 48px rgba(0,0,0,.18);border:1px solid rgba(0,0,0,.10);padding:22px 22px 18px;z-index:5;display:none;}
.sm-popup.is-open{display:block;}
@media (max-width:780px){.sm-popup{left:14px;right:14px;width:auto;top:auto;bottom:14px;transform:none;}}

.sm-popup__close{position:absolute;top:12px;right:12px;width:40px;height:40px;border-radius:999px;border:1px solid rgba(0,0,0,.12);background:#fff;cursor:pointer;font-size:22px;line-height:1;}
.sm-popup__close:hover{box-shadow:0 8px 20px rgba(0,0,0,.12);}

.sm-popup__badge{display:inline-flex;padding:6px 10px;border-radius:999px;border:1px solid rgba(0,0,0,.12);font-size:12px;opacity:.8;margin-bottom:10px;}
.sm-popup__title{margin:0 0 12px;font-size:22px;}

.sm-popup__grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
@media (max-width:640px){.sm-popup__grid{grid-template-columns:1fr;}}

.sm-box{border:1px solid rgba(0,0,0,.12);border-radius:16px;padding:12px 14px;}
.sm-box--full{margin-top:12px;}
.sm-box__label{font-size:12px;text-transform:uppercase;letter-spacing:.06em;opacity:.65;margin-bottom:6px;}
.sm-box__value{font-size:14px;line-height:1.5;}
.sm-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px;}
.sm-link{display:inline-flex;align-items:center;gap:8px;padding:10px 12px;border-radius:14px;border:1px solid rgba(0,0,0,.12);text-decoration:none;}
.sm-link:hover{box-shadow:0 10px 24px rgba(0,0,0,.12);}
.sm-link__icon{opacity:.6;}
.sm-kv a{text-decoration:none;border-bottom:1px dotted rgba(0,0,0,.3);}
.sm-kv a:hover{border-bottom-style:solid;}
.sm-hint{margin:12px 0 0;opacity:.65;font-size:12px;}

.sm-pin{position:relative;width:54px;height:54px;border-radius:0;background:transparent;box-shadow:none;border:none;padding:0;display:flex;align-items:center;justify-content:center;}
.sm-pin img{background:transparent;}
.sm-pin--pulse::before{content:'';position:absolute;left:0;top:0;right:0;bottom:0;border-radius:999px;z-index:-1;inset:-46px;box-shadow:0 0 0 2px rgba(0,151,215,.35);opacity:.0;animation:smPulse 1.8s ease-out infinite;}
.sm-pin--pulse::after{content:'';position:absolute;left:0;top:0;right:0;bottom:0;border-radius:999px;z-index:-1;inset:-32px;box-shadow:0 0 0 2px rgba(0,151,215,.25);opacity:0;animation:smPulse 1.8s ease-out infinite;animation-delay:.45s;}
@keyframes smPulse{0%{transform:scale(.35);opacity:.75;}70%{transform:scale(1);opacity:0;}100%{transform:scale(1);opacity:0;}}


/* Advanced marker wrapper (title above pin) */
.sm-marker{display:flex;flex-direction:column;align-items:center;transform:translate(-50%,-100%);pointer-events:auto;}
.sm-marker__title{
  font-size:18px;
  font-weight:700;
  color:#0097d7;
  background:rgba(255,255,255,.9);
  border:1px solid rgba(0,0,0,.10);
  border-radius:999px;
  padding:4px 10px;
  margin-bottom:29px;
  box-shadow:0 10px 26px rgba(0,0,0,.12);
  white-space:nowrap;
}

/* Optional: allow adaptive height (use via shortcode map_height) */
@media (max-width: 780px){
  .sm-mapstage{height: 520px !important;}
}
@media (max-width: 520px){
  .sm-mapstage{height: 460px !important;}
}


/* Responsive map height: keeps map present but not excessive on small screens */
.sm-mapstage{
  height: clamp(520px, 70vh, 750px) !important;
}


/* SVG marker icon overrides */
.sm-pin{width:54px;height:54px;border-radius:0;background:transparent;display:flex;align-items:center;justify-content:center;}
.sm-pin__img{position:relative;z-index:1;width:54px;height:54px;display:block;object-fit:contain;background:transparent;}
.sm-pin--pulse::before{inset:-34px;}
.sm-pin--pulse::after{inset:-22px;animation-delay:.35s;}

.sm-pin__dot{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:2px;height:2px;border-radius:50%;z-index:0;box-shadow:0 0 0 10px rgba(0,151,215,.18);}
