@import url(https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500&family=Manrope:wght@400;600;700&display=swap);
.js-map {
  font-family: Inter, Arial, sans-serif;
  color: #121212;
  background: #fcfaf8;
}

.js-map, .js-map *, .js-map *::before, .js-map *::after { box-sizing: border-box; }
.js-map button, .js-map a { -webkit-tap-highlight-color: transparent; }

.js-map {
  --accent: #d49b5e;
  --ink: #121212;
  width: 100%;
  overflow: hidden;
}

.js-map__stage { position: relative; height: clamp(760px, 78vh, 1080px); min-height: 760px; padding: 20px; overflow: hidden; border-radius: 24px; background: #e8e8e6; }
.js-map__canvas { position: absolute; inset: 0; }
.js-map__google-map { width: 100%; height: 100%; }
.js-map__preview { display: grid; place-items: center; width: 100%; height: 100%; background: #ddd url(https://code-components.website-files.com/6a9d922d4b43058c8400fd76%2Fmodule%2Fe68fc6102611d43928bb-map-preview.png) center/cover no-repeat; }
.js-map__preview p { margin: 0; padding: 12px 18px; border-radius: 99px; color: #fff; background: rgba(18,18,18,.78); font: 500 14px/1.2 Inter, sans-serif; }

.js-map__panel { position: absolute; z-index: 10; bottom: 20px; left: 20px; display: flex; flex-direction: column; width: clamp(340px, 24vw, 420px); height: calc(100% - 40px); padding: clamp(22px, 1.5vw, 30px); overflow: hidden; border-radius: 18px; background: #fff; box-shadow: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1); }
.js-map__panel-header { display: flex; align-items: center; flex: 0 0 auto; width: 100%; min-height: 58px; padding: 12px 0 15px; border: 0; border-bottom: 1px solid #f3f4f6; background: transparent; cursor: pointer; }
.js-map__logo { display: block; width: 164px; height: auto; }
.js-map__sheet-handle { display: none; width: 26px; height: 13px; }
.js-map__navigation-scroll { flex: 1; min-height: 0; padding: 8px 6px 8px 0; overflow-y: auto; scrollbar-width: thin; scrollbar-color: #d1d5db transparent; }
.js-map__category { padding-bottom: 10px; }
.js-map__category h3 { margin: 0; padding: 14px 0 10px; color: #101828; font: 500 22px/1.15 Inter, sans-serif; }
.js-map__places { display: flex; flex-direction: column; }
.js-map__places button { display: grid; grid-template-columns: 16px minmax(0,1fr) auto; align-items: center; gap: 12px; min-height: 42px; padding: 8px 0; border: 0; color: #364153; background: transparent; font: 400 18px/1.35 Manrope, sans-serif; text-align: left; cursor: pointer; }
.js-map__places button:hover, .js-map__places button.is-active { color: #121212; }
.js-map__places small { color: #7a8492; font-size: 15px; white-space: nowrap; }
.js-map__place-dot, .js-map__marker { display: block; width: 16px; height: 16px; padding: 0; border: 0; border-radius: 50%; background: var(--accent); }
.js-map__marker { width: 30px; height: 30px; border: 5px solid rgba(255,255,255,.85); box-shadow: 0 3px 9px rgba(0,0,0,.2); cursor: pointer; transition: transform .18s ease, box-shadow .18s ease; }
.js-map__marker:hover, .js-map__marker.is-active { transform: scale(1.16); box-shadow: 0 5px 16px rgba(0,0,0,.28); }
.js-map__project-marker { display: grid; place-items: center; width: 94px; height: 94px; border-radius: 50%; filter: drop-shadow(0 6px 10px rgba(0,0,0,.22)); }
.js-map__project-marker img { display: block; width: 94px; height: 94px; }
.js-map__zoom { position: absolute; right: 20px; bottom: 20px; display: flex; flex-direction: column; overflow: hidden; border-radius: 12px; box-shadow: 0 4px 12px rgba(0,0,0,.16); }
.js-map__zoom button { display: grid; place-items: center; width: 50px; height: 50px; padding: 0; border: 0; border-bottom: 1px solid #eee; background: #fff; cursor: pointer; }
.js-map__zoom button:last-child { border-bottom: 0; }
.js-map__zoom img { width: 20px; height: 20px; }
.js-map__info { min-width: 180px; max-width: 260px; padding: 2px 0 4px; }
.js-map__info h4 { margin: 0; color: #121212; font: 600 16px/1.25 Manrope, sans-serif; }
.js-map__info p { margin: 5px 0 0; color: #667085; font: 400 13px/1.3 Inter, sans-serif; }

@media (max-width: 991px) {
  .js-map__panel { width: 340px; }
}

@media (max-width: 767px) {
  .js-map__stage { height: 708px; min-height: 0; padding: 0; border-radius: 0; }
  .js-map__panel { position: absolute; bottom: 0; left: 0; width: 100%; height: 50%; max-height: 50%; padding: 20px; border-radius: 18px 18px 0 0; transform: translateY(calc(100% - 88px)); transition: transform .35s cubic-bezier(.22,1,.36,1); touch-action: pan-y; }
  .js-map__panel.is-open { transform: translateY(0); }
  .js-map__panel-header { justify-content: space-between; flex: 0 0 46px; min-height: 46px; }
  .js-map__logo { width: 145px; }
  .js-map__places small { font-size: 13px; }
  .js-map__sheet-handle { display: block; transition: transform .3s ease; }
  .js-map__panel.is-open .js-map__sheet-handle { transform: rotate(180deg); }
  .js-map__zoom { right: 14px; bottom: 106px; }
  .js-map__zoom button { width: 44px; height: 44px; }
}

@media (prefers-reduced-motion: reduce) {
  .js-map__panel, .js-map__marker { transition: none; }
}

