/* assets/css/guides-map.css — интерактивная карта локации (docs/eft-guides/design/MAPS.md §2–3).
   Панель слева 320, сцена справа; на телефоне панель — шторка внутри сцены. Маркеры — HTML поверх SVG,
   обратный масштаб через --k (ставит guides-map.js). */
.gd-imap { position: relative; display: grid; grid-template-columns: 320px 1fr; grid-template-rows: minmax(0, 1fr); gap: 0; height: 640px; margin: 0 0 24px; border: 1px solid var(--gd-line); border-radius: 12px; overflow: hidden; background: var(--gd-l1); }
.gd-imap.is-full { position: fixed; inset: 0; z-index: 1200; height: auto; margin: 0; border-radius: 0; border: 0; }
.gd-imap--page { height: calc(100vh - 220px); min-height: 480px; }
.gd-imap-head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.gd-imap-head__links { margin: 0; font-size: .92rem; }
.gd-imap__more { margin: -12px 0 24px; font-size: .88rem; }
body.gd-imap-lock { overflow: hidden; }
.gd-imap:fullscreen { width: 100%; height: 100%; }

/* --- панель --- */
.gd-imap__panel { display: flex; flex-direction: column; min-width: 0; min-height: 0; overflow: hidden; border-right: 1px solid var(--gd-line); background: var(--gd-l1); }
.gd-imap__ph { display: flex; align-items: center; gap: 8px; padding: 12px 14px 8px; }
.gd-imap__ph h2 { margin: 0; font-size: 1rem; font-weight: 700; flex: 1 1 auto; min-width: 0; }
.gd-imap__search { position: relative; padding: 0 14px 10px; }
.gd-imap__search i { position: absolute; left: 26px; top: 50%; transform: translateY(-50%); color: var(--gd-dim); font-size: 13px; pointer-events: none; margin-top: -5px; }
.gd-imap__search input { width: 100%; height: 40px; padding-left: 36px; }
.gd-imap__kinds { display: flex; flex-wrap: wrap; gap: 6px; padding: 0 14px 10px; }
.gd-imap__kind { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 10px; border-radius: 15px; border: 1px solid var(--gd-line2); background: transparent; color: var(--gd-text2); font-size: .8rem; font-weight: 600; cursor: pointer; }
.gd-imap__kind b { font-weight: 700; color: var(--gd-muted); }
.gd-imap__kind.is-on { background: rgba(139, 92, 246, .16); border-color: var(--gd-accent); color: var(--gd-text); }
.gd-imap__kind.is-on b { color: var(--gd-text); }
.gd-imap__kind.is-empty { opacity: .45; cursor: default; }
.gd-imap__kind i { font-size: .85em; }
.gd-imap__kinds-all { display: flex; gap: 10px; padding: 0 14px 8px; font-size: .78rem; }
.gd-imap__kinds-all button { background: none; border: 0; color: var(--gd-link); cursor: pointer; padding: 0; font-size: inherit; }
.gd-imap__count { padding: 0 14px 8px; font-size: .78rem; color: var(--gd-muted); }
/* тело панели прокручивается целиком: категории, квесты, список объектов, легенда — ничего не зажато */
.gd-imap__body { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
.gd-imap__list { flex: 0 0 auto; border-top: 1px solid var(--gd-line); padding: 6px 0 10px; }
/* фокус: квест или ключ из адреса или списка — карта показывает только его точки */
.gd-imap__focus { margin: 0 14px 8px; padding: 8px 10px; border-radius: 8px; background: rgba(139, 92, 246, .16); border: 1px solid rgba(139, 92, 246, .45); font-size: .84rem; }
.gd-imap__frow { display: flex; align-items: center; gap: 8px; }
.gd-imap__frow > span { flex: 1 1 auto; min-width: 0; }
.gd-imap__focus b { font-weight: 700; }
.gd-imap__frow > button { flex: 0 0 auto; background: none; border: 0; color: var(--gd-link); font: inherit; font-size: .8rem; cursor: pointer; padding: 0; }
/* шаги квеста в фокусе: цели по порядку, номер совпадает с бейджем на карте */
.gd-imap__steps { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-direction: column; gap: 1px; font-size: .84rem; }
.gd-imap__step { display: flex; align-items: flex-start; gap: 8px; }
.gd-imap__step.is-nopoint { padding: 4px 6px; color: var(--gd-muted); line-height: 1.35; }
.gd-imap__focus .gd-imap__stepb { display: flex; align-items: flex-start; gap: 8px; width: 100%; padding: 4px 6px; border: 0; border-radius: 6px; background: none; color: var(--gd-text); font: inherit; font-size: .84rem; line-height: 1.35; text-align: left; cursor: pointer; }
.gd-imap__focus .gd-imap__stepb:hover { background: rgba(255, 255, 255, .08); }
.gd-imap__steps span { flex: 1 1 auto; min-width: 0; }
.gd-imap__steps small { color: var(--gd-muted); font-size: .76rem; }
.gd-imap__steps em { font-style: normal; color: var(--gd-muted); font-size: .76rem; }
.gd-imap__stepn { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; margin-top: 1px; border-radius: 50%; background: #059669; color: #fff; font-size: .7rem; font-weight: 700; font-style: normal; }
.gd-imap__step.is-nopoint .gd-imap__stepn { background: rgba(148, 163, 184, .3); color: var(--gd-muted); }
/* несколько квестов в фокусе: номер и цвет квеста — в списке и на точках карты */
.gd-imap__steps--q .gd-imap__step { display: flex; align-items: center; gap: 4px; }
.gd-imap__steps--q .gd-imap__step.is-picked { background: rgba(255, 255, 255, .05); border-radius: 6px; }
.gd-imap__work { font-style: normal; font-size: .7rem; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; color: #6ee7b7; }
.gd-imap__ftitle { margin: 10px 0 2px; font-size: .78rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--gd-muted); }
.gd-imap__steps--q .gd-imap__stepb { flex: 1 1 auto; min-width: 0; }
.gd-imap__steps--q span.gd-imap__stepb { display: flex; align-items: flex-start; gap: 8px; padding: 4px 6px; color: var(--gd-muted); }
.gd-imap__qoff { flex: 0 0 auto; width: 22px; height: 22px; border: 0; border-radius: 6px; background: none; color: var(--gd-muted); font: inherit; font-size: 1rem; line-height: 1; cursor: pointer; }
.gd-imap__qoff:hover { background: rgba(255, 255, 255, .08); color: var(--gd-text); }
.gd-imap__stepn.is-q1, .gd-imap__m.is-q1 .gd-imap__ml--step { background: #7c3aed; }
.gd-imap__stepn.is-q2, .gd-imap__m.is-q2 .gd-imap__ml--step { background: #059669; }
.gd-imap__stepn.is-q3, .gd-imap__m.is-q3 .gd-imap__ml--step { background: #ea580c; }
.gd-imap__stepn.is-q4, .gd-imap__m.is-q4 .gd-imap__ml--step { background: #2563eb; }
.gd-imap__stepn.is-q5, .gd-imap__m.is-q5 .gd-imap__ml--step { background: #db2777; }
.gd-imap__stepn.is-q6, .gd-imap__m.is-q6 .gd-imap__ml--step { background: #0891b2; }
/* квесты локации */
.gd-imap__quests { border-top: 1px solid var(--gd-line); }
.gd-imap__quests > summary { display: flex; align-items: center; gap: 8px; padding: 8px 14px; font-size: .78rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--gd-muted); cursor: pointer; list-style: none; }
.gd-imap__quests > summary::-webkit-details-marker { display: none; }
.gd-imap__quests > summary b { color: var(--gd-text2); }
.gd-imap__quests > summary::after { content: '\25BE'; margin-left: auto; font-size: .9rem; }
.gd-imap__quests[open] > summary::after { content: '\25B4'; }
.gd-imap__qctl { display: grid; grid-template-columns: 1fr 76px; gap: 6px; padding: 0 14px 8px; align-items: center; }
.gd-imap__qctl .gd-field { height: 34px; font-size: .84rem; }
.gd-imap__qcheck { display: flex; align-items: center; gap: 6px; font-size: .8rem; color: var(--gd-text2); grid-column: span 2; }
.gd-imap__qlist { padding: 0 0 6px; }
.gd-imap__qi { display: flex; align-items: center; gap: 8px; width: 100%; padding: 6px 14px; border: 0; background: none; color: var(--gd-text); font: inherit; font-size: .86rem; text-align: left; cursor: pointer; }
.gd-imap__qi:hover { background: rgba(255, 255, 255, .05); }
.gd-imap__qi.is-on { background: rgba(139, 92, 246, .16); }
.gd-imap__qi.is-done { opacity: .5; }
.gd-imap__qi span { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gd-imap__qi small { flex: 0 0 auto; color: var(--gd-muted); font-size: .74rem; }
.gd-imap__qi b { flex: 0 0 auto; min-width: 18px; text-align: center; font-size: .74rem; font-weight: 700; color: var(--gd-text2); }
.gd-imap__qi.is-empty b { color: var(--gd-dim); }
.gd-imap__qnote { padding: 4px 14px 8px; font-size: .78rem; color: var(--gd-muted); }
.gd-imap__lg { position: sticky; top: 0; z-index: 1; display: flex; align-items: center; gap: 8px; padding: 8px 14px 4px; font-size: .74rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--gd-muted); background: var(--gd-l1); }
.gd-imap__lg b { color: var(--gd-text2); }
.gd-imap__li { display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%; padding: 7px 14px; border: 0; background: none; color: var(--gd-text); font: inherit; font-size: .88rem; text-align: left; cursor: pointer; text-decoration: none; }
.gd-imap__li span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gd-imap__li b { flex: 0 0 auto; font-weight: 600; font-size: .76rem; color: var(--gd-muted); }
.gd-imap__li:hover { background: rgba(255, 255, 255, .05); color: var(--gd-text); text-decoration: none; }
.gd-imap__li--muted { color: var(--gd-text2); }
.gd-imap__lmore, .gd-imap__lnote { padding: 6px 14px 10px; font-size: .8rem; color: var(--gd-muted); }

/* легенда: цвета категорий */
.gd-imap__legend { border-top: 1px solid var(--gd-line); }
.gd-imap__legend > summary { display: flex; align-items: center; gap: 8px; padding: 8px 14px; font-size: .78rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--gd-muted); cursor: pointer; list-style: none; }
.gd-imap__legend > summary::-webkit-details-marker { display: none; }
.gd-imap__lgbox { display: flex; flex-wrap: wrap; gap: 6px 12px; padding: 0 14px 10px; font-size: .78rem; color: var(--gd-text2); }
.gd-imap__lgi { display: inline-flex; align-items: center; gap: 6px; }
.gd-imap__lgc { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; border-radius: 50%; background: #64748b; color: #fff; font-size: 8px; border: 1.5px solid rgba(255, 255, 255, .85); font-style: normal; }
.gd-imap__lgc--extract_pmc { background: #16a34a; } .gd-imap__lgc--extract_scav { background: #ea580c; } .gd-imap__lgc--extract_shared { background: #0d9488; }
.gd-imap__lgc--transit { background: #2563eb; } .gd-imap__lgc--spawn_pmc { background: #0369a1; } .gd-imap__lgc--spawn_scav { background: #92400e; }
.gd-imap__lgc--boss { background: #dc2626; } .gd-imap__lgc--key_spawn { background: #ca8a04; } .gd-imap__lgc--lock { background: #a16207; }
.gd-imap__lgc--quest_zone { background: #059669; } .gd-imap__lgc--quest_item { background: #8b5cf6; } .gd-imap__lgc--switch { background: #0891b2; }
.gd-imap__lgc--hazard { background: #b91c1c; } .gd-imap__lgc--weapon { background: #475569; } .gd-imap__lgc--container { background: #57534e; }

/* --- сцена --- */
.gd-imap__stage { position: relative; min-width: 0; min-height: 0; background: #0b1120; }
.gd-imap__canvas { position: absolute; inset: 0; overflow: hidden; cursor: grab; touch-action: pan-y; outline: none; }
.gd-imap.is-engaged .gd-imap__canvas, .gd-imap.is-full .gd-imap__canvas { touch-action: none; }
/* перетаскивание карты не должно выделять подписи маркеров; текст попапа копировать можно */
.gd-imap__stage { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
.gd-imap__popup { -webkit-user-select: text; user-select: text; }
.gd-imap__canvas.is-grabbing { cursor: grabbing; }
.gd-imap__canvas:focus-visible { box-shadow: inset 0 0 0 2px var(--gd-accent); }
.gd-imap__world { position: absolute; left: 0; top: 0; transform-origin: 0 0; }
.gd-imap__svg { position: absolute; left: 0; top: 0; }
.gd-imap__svg svg { display: block; }
.gd-imap__markers { position: absolute; left: 0; top: 0; width: 100%; height: 100%; --k: 1; }
/* зоны целей квестов и боссов: круг по радиусу (meta.r, м) или контур (meta.outline) в единицах карты */
.gd-imap__zones { position: absolute; left: 0; top: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; }
.gd-imap__zone { fill: rgba(139, 92, 246, .22); stroke: rgba(167, 139, 250, .9); stroke-width: 1.2; vector-effect: non-scaling-stroke; }
.gd-imap__zone--boss { fill: rgba(220, 38, 38, .16); stroke: rgba(248, 113, 113, .85); }
.gd-imap__zone--hazard { fill: rgba(185, 28, 28, .2); stroke: rgba(248, 113, 113, .9); stroke-dasharray: 4 3; }
.gd-imap__zone.is-active { fill: rgba(139, 92, 246, .38); stroke-width: 2; }
.gd-imap__zone--exit { fill: rgba(20, 184, 166, .18); stroke: rgba(45, 212, 191, .9); stroke-dasharray: 3 3; }
.gd-imap__zone--exit.is-active { fill: rgba(20, 184, 166, .28); }
/* цель квеста: зелёная зона с пунктирной границей (правила ниже .is-active — активная зона плотнее) */
.gd-imap__zone--quest { fill: rgba(34, 197, 94, .16); stroke: #4ade80; stroke-width: 1.4; stroke-dasharray: 6 4; }
.gd-imap__zone--quest.is-active { fill: rgba(34, 197, 94, .3); stroke-width: 2.4; }
.gd-imap__zone.is-big, .gd-imap__zone.is-big.is-active { fill: rgba(34, 197, 94, .04); stroke-width: 1.2; stroke-dasharray: 10 8; }

/* маркер: булавка 26 px, низ по центру на точке; обратный масштаб — размер на экране постоянный */
.gd-imap__m { position: absolute; display: flex; align-items: center; gap: 4px; padding: 0; border: 0; background: none; color: #fff; font: inherit; cursor: pointer; transform-origin: 12px 12px; transform: translate(-12px, -12px) scale(calc(1 / var(--k))); pointer-events: auto; }
.gd-imap__m i { width: 24px; height: 24px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 11px; background: #64748b; border: 2px solid rgba(255, 255, 255, .85); box-shadow: 0 2px 6px rgba(0, 0, 0, .5); }
.gd-imap__ml { display: none; padding: 2px 6px; border-radius: 4px; background: rgba(7, 11, 20, .82); color: #f8fafc; font-size: 11px; font-weight: 600; white-space: nowrap; }
.gd-imap.is-labels .gd-imap__m--extract_pmc .gd-imap__ml, .gd-imap.is-labels .gd-imap__m--extract_scav .gd-imap__ml, .gd-imap.is-labels .gd-imap__m--extract_shared .gd-imap__ml,
.gd-imap.is-labels .gd-imap__m--transit .gd-imap__ml, .gd-imap.is-labels .gd-imap__m--boss .gd-imap__ml, .gd-imap.is-labels .gd-imap__m--quest_zone .gd-imap__ml,
.gd-imap.is-labels .gd-imap__m--quest_item .gd-imap__ml, .gd-imap.is-labels .gd-imap__m--lock .gd-imap__ml, .gd-imap.is-labels .gd-imap__m--switch .gd-imap__ml, .gd-imap.is-labels .gd-imap__m--hazard .gd-imap__ml,
.gd-imap__m:hover .gd-imap__ml, .gd-imap__m.is-active .gd-imap__ml { display: inline-block; }
.gd-imap__m:hover i, .gd-imap__m.is-active i { transform: scale(1.18); border-color: #fff; }
.gd-imap__m.is-active { z-index: 5; }
/* скрытые подписи (дубли и наложения): специфичность выше правил показа по категориям */
.gd-imap.is-labels .gd-imap__m.is-nolabel .gd-imap__ml, .gd-imap__m.is-nolabel .gd-imap__ml { display: none; }
.gd-imap__m:hover, .gd-imap__m:hover .gd-imap__ml { z-index: 6; }
.gd-imap.is-labels .gd-imap__m.is-nolabel:hover .gd-imap__ml, .gd-imap__m.is-nolabel:hover .gd-imap__ml, .gd-imap__m.is-nolabel.is-active .gd-imap__ml { display: inline-block; }
/* номер шага квеста в фокусе: виден всегда — правила ниже скрытия дублей и наложений */
.gd-imap .gd-imap__m.is-step .gd-imap__ml, .gd-imap.is-labels .gd-imap__m.is-step .gd-imap__ml { display: inline-flex; }
.gd-imap__ml--step { min-width: 18px; height: 18px; padding: 0 4px; border-radius: 9px; align-items: center; justify-content: center; background: #059669; border: 1.5px solid rgba(255, 255, 255, .85); box-shadow: 0 2px 6px rgba(0, 0, 0, .5); color: #fff; font-size: 11px; font-weight: 700; transform: translateY(var(--sdy, 0px)); }
.gd-imap.is-far .gd-imap__m { transform: translate(-12px, -12px) scale(calc(.72 / var(--k))); }
.gd-imap.is-far .gd-imap__m--spawn_pmc, .gd-imap.is-far .gd-imap__m--spawn_scav, .gd-imap.is-far .gd-imap__m--key_spawn { transform: translate(-8px, -8px) scale(calc(.72 / var(--k))); }
.gd-imap__m.is-other-floor { opacity: .5; }
.gd-imap__m--extract_pmc i { background: #16a34a; }
.gd-imap__m--extract_scav i { background: #ea580c; }
.gd-imap__m--extract_shared i { background: #0d9488; }
.gd-imap__m--transit i { background: #2563eb; }
.gd-imap__m--spawn_pmc i { background: #0369a1; width: 16px; height: 16px; font-size: 8px; border-width: 1.5px; }
.gd-imap__m--spawn_scav i { background: #92400e; width: 16px; height: 16px; font-size: 8px; border-width: 1.5px; }
.gd-imap__m--spawn_pmc, .gd-imap__m--spawn_scav, .gd-imap__m--key_spawn { transform-origin: 8px 8px; transform: translate(-8px, -8px) scale(calc(1 / var(--k))); }
.gd-imap__m--boss i { background: #dc2626; }
.gd-imap__m--key_spawn i { background: #ca8a04; width: 16px; height: 16px; font-size: 8px; border-width: 1.5px; }
.gd-imap__m--lock i { background: #a16207; }
.gd-imap__m--quest_zone i { background: #059669; }
.gd-imap__m--quest_item i { background: #8b5cf6; }
.gd-imap__m--switch i { background: #0891b2; }
.gd-imap__m--hazard i { background: #b91c1c; }
.gd-imap__m--weapon i { background: #475569; }
.gd-imap__m--container i { background: #57534e; }

/* HUD: масштаб и полный экран справа сверху, этажи слева снизу */
.gd-imap__hud { position: absolute; inset: 0; pointer-events: none; }
.gd-imap__zoom { position: absolute; right: 12px; top: 12px; display: flex; flex-direction: column; gap: 4px; pointer-events: auto; }
.gd-imap__zoom button, .gd-imap__pbtn { width: 36px; height: 36px; border-radius: 8px; border: 1px solid var(--gd-line2); background: rgba(13, 20, 36, .92); color: var(--gd-text); font-size: 15px; font-weight: 700; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.gd-imap__zoom button:hover, .gd-imap__pbtn:hover { border-color: var(--gd-accent); }
.gd-imap__zoom button[aria-pressed="true"] { background: var(--gd-accent); border-color: var(--gd-accent); color: #fff; }
.gd-imap__floors { position: absolute; left: 12px; bottom: 12px; display: flex; flex-wrap: wrap; gap: 4px; pointer-events: auto; max-width: calc(100% - 80px); }
.gd-imap__floor { height: 32px; padding: 0 12px; border-radius: 8px; border: 1px solid var(--gd-line2); background: rgba(13, 20, 36, .92); color: var(--gd-text2); font-size: .82rem; font-weight: 600; cursor: pointer; }
.gd-imap__floor.is-active { background: var(--gd-accent); border-color: var(--gd-accent); color: #fff; }
/* много этажей (палубы Ледокола): столбик слева, компактные кнопки, прокрутка при нехватке высоты */
.gd-imap__floors.is-many { flex-direction: column-reverse; flex-wrap: nowrap; align-items: flex-start; gap: 2px; max-height: calc(100% - 24px); overflow: auto; scrollbar-width: thin; }
.gd-imap__floors.is-many .gd-imap__floor { height: 24px; padding: 0 8px; font-size: .72rem; }
.gd-imap__floors.is-many .gd-imap__floor--only { margin-bottom: 4px; }
.gd-imap__floor--only[aria-pressed="true"] { border-color: var(--gd-accent); color: var(--gd-text); }
.gd-imap__pbtn { position: absolute; left: 12px; top: 12px; width: auto; padding: 0 12px; gap: 8px; font-size: .85rem; pointer-events: auto; display: none; }
.gd-imap__status { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); padding: 8px 14px; border-radius: 8px; background: rgba(13, 20, 36, .9); color: var(--gd-text2); font-size: .9rem; pointer-events: none; }
.gd-imap__status:empty { display: none; }
.gd-imap__hint { position: absolute; right: 12px; bottom: 12px; padding: 4px 8px; border-radius: 6px; background: rgba(13, 20, 36, .8); color: var(--gd-muted); font-size: .72rem; pointer-events: none; }
.gd-imap.is-engaged .gd-imap__hint, .gd-imap.is-full .gd-imap__hint { display: none; }

/* карточка маркера */
.gd-imap__popup { position: absolute; z-index: 20; width: 260px; max-width: calc(100% - 16px); padding: 12px 14px 12px; border-radius: 10px; background: var(--gd-l1); border: 1px solid var(--gd-line2); box-shadow: 0 10px 30px rgba(0, 0, 0, .5); font-size: .88rem; }
.gd-imap__pk { font-size: .72rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--gd-muted); margin-bottom: 4px; }
.gd-imap__pn { font-weight: 700; font-size: .98rem; line-height: 1.3; padding-right: 20px; }
.gd-imap__pd { display: flex; flex-direction: column; gap: 3px; margin-top: 6px; color: var(--gd-text2); font-size: .82rem; }
/* карточка цели квеста: чуть шире, кикер зелёный, текст цели — основной */
.gd-imap__popup--quest { width: 300px; }
.gd-imap__pk--quest { color: #4ade80; }
.gd-imap__pn a { color: inherit; text-decoration: none; }
.gd-imap__pn a:hover { text-decoration: underline; }
.gd-imap__pobj { margin-top: 6px; color: var(--gd-text); font-size: .88rem; line-height: 1.45; white-space: pre-line; }
.gd-imap__pa { display: inline-flex; align-items: center; gap: 6px; margin-top: 10px; font-weight: 600; }
.gd-imap__px { position: absolute; right: 6px; top: 4px; width: 26px; height: 26px; border: 0; background: none; color: var(--gd-muted); font-size: 20px; cursor: pointer; }

/* --- телефон и планшет: панель — шторка внутри сцены --- */
@media (max-width: 899px) {
  .gd-imap { grid-template-columns: 1fr; height: 70vh; min-height: 420px; }
  .gd-imap__panel { position: absolute; left: 0; right: 0; bottom: 0; top: auto; z-index: 30; max-height: 62%; border-right: 0; border-top: 1px solid var(--gd-line2); border-radius: 14px 14px 0 0; transform: translateY(102%); transition: transform .2s; box-shadow: 0 -10px 30px rgba(0, 0, 0, .5); }
  .gd-imap.is-panel .gd-imap__panel { transform: none; }
  .gd-imap__pbtn { display: flex; }
  .gd-imap__ph .gd-imap__pclose { display: flex; }
  .gd-imap__m i { width: 30px; height: 30px; }
  .gd-imap__m { transform-origin: 15px 15px; transform: translate(-15px, -15px) scale(calc(1 / var(--k))); }
  .gd-imap__hint { display: none; }
}
.gd-imap__pclose { display: none; width: 32px; height: 32px; border: 0; background: none; color: var(--gd-muted); font-size: 22px; cursor: pointer; }
@media (prefers-reduced-motion: reduce) { .gd-imap__panel { transition: none; } }

/* ==================================================================================
   РЕДАКТОР МАРКЕРОВ В АДМИНКЕ (admin/guides-map-editor.php + assets/js/guides-map-edit.js).
   Публичную карту эти правила не трогают: всё под префиксом .gd-imap-edit, кроме одной
   переопределённой высоты .gd-imap внутри колонки редактора.
   ================================================================================== */
.gd-imap-edit__maps { display: flex; flex-wrap: wrap; gap: 6px; }
.gd-imap-edit__map { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: 999px; border: 1px solid var(--border, rgba(255,255,255,.1)); color: var(--text-gray, #94a3b8); font-size: .85rem; text-decoration: none; }
.gd-imap-edit__map b { font-weight: 700; font-size: .78rem; opacity: .75; }
.gd-imap-edit__map:hover { border-color: var(--accent-purple, #8b5cf6); color: var(--text-light, #f8fafc); text-decoration: none; }
.gd-imap-edit__map.is-active { background: rgba(139, 92, 246, .18); border-color: var(--accent-purple, #8b5cf6); color: var(--text-light, #f8fafc); }

.gd-imap-edit__wrap { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 16px; align-items: start; }
.gd-imap-edit__map-col { min-width: 0; }
.gd-imap-edit__map-col .gd-imap { height: calc(100vh - 260px); min-height: 520px; margin: 0; }

.gd-imap-edit { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.gd-imap-edit__box { background: var(--bg-card, rgba(255,255,255,.05)); border: 1px solid var(--border, rgba(255,255,255,.1)); border-radius: 12px; padding: 14px; }
.gd-imap-edit__h { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.gd-imap-edit__h h2 { margin: 0; font-size: 1rem; font-weight: 700; color: var(--text-light, #f8fafc); }
.gd-imap-edit__src { font-size: .76rem; color: var(--text-gray, #94a3b8); margin: -4px 0 10px; word-break: break-all; }
.gd-imap-edit__f { display: block; margin-bottom: 10px; }
.gd-imap-edit__f > span { display: block; margin-bottom: 4px; font-size: .78rem; font-weight: 600; color: var(--text-gray, #94a3b8); }
.gd-imap-edit__row3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; }
.gd-imap-edit__chk { display: flex; align-items: center; gap: 8px; font-size: .85rem; color: var(--text-gray, #94a3b8); margin-bottom: 12px; }
.gd-imap-edit__btns { display: flex; flex-wrap: wrap; gap: 8px; }
.gd-imap-edit__status { margin-top: 10px; font-size: .82rem; line-height: 1.5; color: var(--text-gray, #94a3b8); min-height: 1.2em; }
.gd-imap-edit__status.is-ok { color: #10b981; }
.gd-imap-edit__status.is-err { color: #ef4444; }
.gd-imap-edit__hint { margin-top: 6px; font-size: .78rem; color: var(--text-gray, #94a3b8); opacity: .8; }
.gd-imap-edit__note { font-size: .78rem; color: var(--text-gray, #94a3b8); margin-top: 8px; line-height: 1.5; }
.gd-imap-edit__count { font-size: .78rem; color: var(--text-gray, #94a3b8); }
.gd-imap-edit__left { max-height: 320px; overflow-y: auto; display: flex; flex-direction: column; gap: 2px; }
.gd-imap-edit__leftbtn { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; width: 100%; padding: 6px 8px; border: 0; border-radius: 6px; background: none; color: var(--text-light, #f8fafc); font: inherit; font-size: .85rem; text-align: left; cursor: pointer; }
.gd-imap-edit__leftbtn:hover { background: rgba(139, 92, 246, .18); }
.gd-imap-edit__leftbtn b { flex: 0 0 auto; font-weight: 500; font-size: .74rem; color: var(--text-gray, #94a3b8); }

@media (max-width: 1200px) {
  .gd-imap-edit__wrap { grid-template-columns: 1fr; }
  .gd-imap-edit__map-col .gd-imap { height: 70vh; min-height: 420px; }
}

/* стопка ключей в одной точке: ссылки на ключи в попапе */
.gd-imap__pkeys a{color:inherit;text-decoration:underline;text-decoration-color:rgba(255,255,255,.35)}
.gd-imap__pkeys a:hover{text-decoration-color:currentColor}


/* Ж8/B-13 (SEO-аудит 2026-09-14): подпись панели — <p>, а не <h2>; вид прежний. */
.gd-imap__ph .gd-imap__title { margin: 0; font-size: 1rem; font-weight: 700; flex: 1 1 auto; min-width: 0; color: var(--gd-text); }
.gd-imap__steps small a { color: var(--gd-link); text-decoration: none; }
.gd-imap__steps small a:hover { text-decoration: underline; }
