/* Интерактивная карта (geo-map.cjs / geo-map.js) */
.gm{position:relative;--gm-accent:#cfe6d8;--gm-land:#3b5d53;--gm-stroke:rgba(207,230,216,.32);--gm-text:#f2f6f3;--gm-chip:rgba(242,246,243,.08);--gm-chip-line:rgba(242,246,243,.22)}
.gm-light{--gm-accent:var(--mrs-ink);--gm-land:#dbe7e0;--gm-stroke:#b9cbc1;--gm-text:var(--mrs-ink);--gm-chip:rgba(255,255,255,.7);--gm-chip-line:#c5d2ca}
.gm-viewport{position:relative;height:clamp(440px,64vh,660px);overflow:hidden;cursor:grab;touch-action:pan-y;outline:none;user-select:none;-webkit-user-select:none}
.gm.is-dragging .gm-viewport{cursor:grabbing}
.gm-viewport:focus-visible{box-shadow:inset 0 0 0 2px var(--gm-accent)}
.gm-stage{position:absolute;inset:0}
.gm-land{display:block;width:100%;height:100%;overflow:visible}
.gm-land path{fill:var(--gm-land);stroke:var(--gm-stroke);stroke-width:1;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.gm-land .gm-seam{fill:none;stroke:var(--gm-land);stroke-width:2.5;stroke-linecap:round}
.gm-overlay{position:absolute;inset:0;pointer-events:none}

/* точки */
.gm-pin,.gm-cluster{position:absolute;left:0;top:0;pointer-events:auto;cursor:pointer;border:0;padding:0;background:none;font-family:var(--type-family)}
.gm-pin{width:30px;height:30px;margin:-15px 0 0 -15px;transition:opacity .3s ease}
.gm-pin i{position:absolute;left:50%;top:50%;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--gm-accent);box-shadow:0 0 0 4px rgba(207,230,216,.18);transition:transform .25s cubic-bezier(.22,1,.36,1),box-shadow .25s ease}
.gm-light .gm-pin i{box-shadow:0 0 0 4px rgba(32,56,50,.14)}
.gm-pin.gm-current i:after{content:"";position:absolute;inset:-4px;border-radius:50%;border:1px solid var(--gm-accent);animation:gm-pulse 2.4s ease-out infinite}
.gm-pin.gm-completed i{background:transparent;border:2px solid var(--gm-accent);box-shadow:none;width:12px;height:12px}
.gm-pin.gm-main i{width:16px;height:16px;margin:-8px 0 0 -8px}
.gm-pin:hover i,.gm-pin:focus-visible i,.gm-pin.is-active i{transform:scale(1.35)}
.gm-pin.is-active i{box-shadow:0 0 0 7px rgba(207,230,216,.28)}
.gm-light .gm-pin.is-active i{box-shadow:0 0 0 7px rgba(32,56,50,.18)}
.gm-pin.is-off,.gm-pin.is-grouped{opacity:0;pointer-events:none}
.gm-pin-label{position:absolute;left:24px;top:50%;transform:translateY(-50%);padding:4px 9px;border-radius:20px;background:rgba(20,38,33,.78);color:#f2f6f3;font-size:12px;line-height:1.3;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s ease}
.gm-light .gm-pin-label{background:rgba(32,56,50,.88)}
.gm-pin:hover .gm-pin-label,.gm-pin:focus-visible .gm-pin-label,.gm.show-labels .gm-pin:not(.is-off):not(.is-grouped) .gm-pin-label{opacity:1}
.gm-cluster{width:36px;height:36px;margin:-18px 0 0 -18px;border-radius:50%;background:var(--gm-accent);color:var(--mrs-ink);font-size:14px;font-weight:600;box-shadow:0 0 0 6px rgba(207,230,216,.2);transition:transform .2s cubic-bezier(.22,1,.36,1)}
.gm-light .gm-cluster{color:#fff;box-shadow:0 0 0 6px rgba(32,56,50,.14)}
.gm-cluster:hover{scale:1.1}
.gm-cluster[hidden]{display:none}
@keyframes gm-pulse{0%{transform:scale(.8);opacity:.9}100%{transform:scale(2.4);opacity:0}}

/* фильтры, кнопки масштаба, легенда, подсказка */
.gm-filters{position:absolute;left:20px;top:20px;z-index:4;display:flex;flex-wrap:wrap;gap:10px;pointer-events:none}
.gm-chips{display:flex;gap:4px;padding:4px;border-radius:40px;background:var(--gm-chip);border:1px solid var(--gm-chip-line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:auto}
.gm-chips button{border:0;border-radius:40px;padding:9px 16px;background:transparent;color:var(--gm-text);font-family:var(--type-family);font-size:13px;cursor:pointer;transition:background-color .25s ease,color .25s ease}
.gm-chips button:hover{background:rgba(207,230,216,.14)}
.gm-chips button[aria-pressed=true]{background:var(--gm-accent);color:var(--mrs-ink)}
.gm-light .gm-chips button[aria-pressed=true]{color:#fff}
.gm-controls{position:absolute;right:20px;bottom:20px;z-index:4;display:flex;flex-direction:column;gap:6px}
.gm-controls button{width:44px;height:44px;border-radius:50%;border:1px solid var(--gm-chip-line);background:var(--gm-chip);color:var(--gm-text);font-size:22px;line-height:1;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:background-color .25s ease,transform .18s cubic-bezier(.22,1,.36,1)}
.gm-controls button:hover{background:var(--gm-accent);color:var(--mrs-ink)}
.gm-light .gm-controls button:hover{color:#fff}
.gm-controls button:active{transform:scale(.94)}
.gm-controls [data-gm-zoom=reset] i{display:block;width:14px;height:14px;margin:auto;border:1.5px solid currentColor;border-radius:3px;position:relative}
.gm-controls [data-gm-zoom=reset] i:before{content:"";position:absolute;inset:3px;border:1.5px solid currentColor;border-radius:1px;opacity:.6}
.gm-legend{position:absolute;left:20px;bottom:20px;z-index:3;display:flex;gap:18px;font-size:12px;color:var(--gm-text);opacity:.8;pointer-events:none}
.gm-legend span{display:flex;align-items:center;gap:8px}
.gm-legend i{width:10px;height:10px;border-radius:50%;background:var(--gm-accent)}
.gm-legend .gm-completed i{background:transparent;border:2px solid var(--gm-accent);width:10px;height:10px}

/* мини-карточка */
.gm-card{position:absolute;left:0;top:0;z-index:6;width:300px;border-radius:16px;overflow:hidden;background:#f5f6f3;color:var(--mrs-ink);box-shadow:0 18px 44px rgba(10,24,20,.32)}
.gm-card[hidden]{display:none}
.gm-card.is-in{animation:gm-card-in .32s cubic-bezier(.22,1,.36,1)}
@keyframes gm-card-in{from{opacity:0;scale:.94}}
.gm-card-photo{aspect-ratio:16/9;background:var(--mrs-ink-soft,#dfe9e3)}
.gm-card-photo img{display:block;width:100%;height:100%;object-fit:cover}
.gm-card-body{padding:16px 18px 18px}
.gm-card-badge{display:inline-block;margin-bottom:10px;padding:4px 10px;border-radius:20px;font-size:11px;letter-spacing:.02em;background:#e3ece6;color:var(--mrs-ink)}
.gm-card-badge.gm-current{background:var(--mrs-ink);color:#fff}
.gm .gm-card-title{margin:0 0 8px;font-size:18px;line-height:1.3;color:var(--mrs-ink)}
.gm .gm-card-meta{margin:0 0 4px;font-size:13px;line-height:1.5;color:#60756e}
.gm-card-meta a{color:var(--mrs-ink);text-decoration:underline;text-underline-offset:3px;text-decoration-color:#9fb1a8}
.gm-card-link{display:inline-flex;align-items:center;gap:10px;margin-top:12px;padding:10px 18px;border-radius:40px;background:var(--mrs-ink);color:#fff;font-size:14px;transition:background-color .25s ease}
.gm-card-link:hover{background:var(--mrs-ink-hover)}
.gm-card-close{position:absolute;right:10px;top:10px;width:32px;height:32px;border:0;border-radius:50%;background:rgba(245,246,243,.92);color:var(--mrs-ink);font-size:20px;line-height:1;cursor:pointer}
.gm-card.is-sheet{left:12px;right:12px;top:auto;bottom:12px;width:auto;transform:none}
.gm-card.is-sheet .gm-card-photo{aspect-ratio:auto;height:120px}

@media(max-width:700px){
  .gm-viewport{height:440px}
  .gm-filters{left:12px;top:12px;right:12px}
  .gm-chips button{padding:8px 12px}
  .gm-controls{right:12px;bottom:12px}
  .gm-controls button{width:40px;height:40px}
  .gm-legend{left:12px;bottom:14px;flex-direction:column;gap:6px}
}
@media(prefers-reduced-motion:reduce){.gm-pin.gm-current i:after{animation:none}.gm-card.is-in{animation:none}}

/* главная: карта во всю ширину блока «География проектов» */
.home-page .geography-stage.geography-stage-map{display:block;min-height:0;border-radius:24px;overflow:hidden;border:1px solid var(--mrs-line-light,rgba(223,234,228,.24));background-color:#25423a;background-image:linear-gradient(rgba(184,215,202,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(184,215,202,.05) 1px,transparent 1px);background-size:72px 72px}

/* контакты: светлая карта, главный офис крупнее, подразделения — сплошные точки */
.gm-light .gm-viewport{height:clamp(420px,58vh,600px);background:#f0f4f1;border-radius:24px}
.gm-light .gm-pin.gm-division i,.gm-light .gm-pin.gm-branch i{background:var(--mrs-ink)}
.gm-pin.gm-main i{width:18px;height:18px;margin:-9px 0 0 -9px}
.gm-pin.gm-main i:after{content:"";position:absolute;inset:-5px;border-radius:50%;border:1px solid var(--gm-accent);animation:gm-pulse 2.4s ease-out infinite}
.gm-legend .gm-main i{width:14px;height:14px}
.sc-divisions .gm{margin:8px 0 40px}
.gm.labels-always .gm-pin:not(.is-off):not(.is-grouped) .gm-pin-label{opacity:1}
.gm-light .gm-pin-label{background:transparent;color:var(--mrs-ink);font-size:13px;padding:0;left:26px}
.gm-light .gm-pin.gm-main .gm-pin-label{font-size:15px;left:30px}
/* подпись слева от точки — для точек у восточного края карты */
.gm-pin.is-left .gm-pin-label{left:auto;right:24px}
.gm-light .gm-pin.is-left .gm-pin-label{left:auto;right:26px}
.gm a.gm-card-link,.gm a.gm-card-link:hover{color:#fff!important;text-decoration:none}
/* главная: рамка карты скруглена, высота — по экрану (как было у блока), без полосы под картой */
body.home-page #projects .geography-stage.geography-stage-map{height:auto;min-height:0;overflow:hidden;border-radius:24px;border:1px solid var(--mrs-line-light,rgba(223,234,228,.24))}
body.home-page #projects .geography-stage-map .gm-viewport{height:max(440px,calc(100svh - 245px))}
@media(max-width:700px){body.home-page #projects .geography-stage-map .gm-viewport{height:440px}body.home-page #projects .geography-stage.geography-stage-map{border-radius:18px}}
