[hideprofile][html]<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
    <style>
      @import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400..900&display=swap');
     
        .tabs {
            display: flex;
            gap: 2px;
            margin-bottom: 20px;
            justify-content: center;
        }
       
        .tab {
            padding: 12px 24px;
            background-color: #22242C;
            color: #fff;
            border: none;
            cursor: pointer;
            transition: all 0.3s ease;
            font-family: cinzel;
            font-size: 16px;
        }
       
        .tab:hover {
            background-color: #9A1E24;
        }
       
        .tab.active {
            background-color: #9A1E24;
        }
       
        .map-container {
            position: relative;
            width: 100%;
            margin: 0 auto;
            display: none;
        }
       
        .map-container.active {
            display: block;
        }
       
        .map-image {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }
       
        .map-point {
            position: absolute;
            width: 24px;
            height: 24px;
            background-color: #22242C;
            border-radius: 50%;
            cursor: pointer;
            transform: translate(-50%, -50%);
            transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
            display: flex;
            align-items: center;
            justify-content: center;
            color: white;
            font-weight: bold;
            border: 2px solid #fff;
            box-shadow: 0 2px 5px rgba(0,0,0,0.3);
        }
       
        .map-point i {
            font-size: 11px;
            transition: transform 0.3s ease;
            color: #fff
        }
     
      #territory-map .map-point {
        width: 30px;
        height: 30px;
      }
     
      #territory-map .map-point i {
        font-size: 18px;
      }
       
        .map-point:hover {
            transform: translate(-50%, -50%) scale(1.2);
            background-color: #9A1E24;
        }

        .map-point:hover i {
            transform: scale(1.1) rotate(5deg);
        }
       
        .map-point.active {
            background-color: #9A1E24;
            transform: translate(-50%, -50%) scale(1.2);
            z-index: 1001;
        }

        .map-scale {
            position: absolute;
            bottom: 20px;
            left: 20px;
            border-radius: 2px;
            box-shadow: 0 2px 5px rgba(0,0,0,0.1);
            display: flex;
            flex-direction: column;
            gap: 5px;
            z-index: 1000;
            font-family: open sans;
        }

        .scale-bar {
            display: flex;
            align-items: flex-end;
            height: 30px;
        }

        .scale-segment {
            height: 4px;
            background-color: #1C1D20;
            position: relative;
        }

        .scale-segment:nth-child(odd) {
            background-color: #1C1D20;
        }

        .scale-segment:nth-child(even) {
            background-color: #ccc;
            height: 3px;
            border: 0.5px solid #1C1D20;
        }

        .scale-label {
            position: absolute;
            bottom: 8px;
            transform: translateX(-50%);
            font-size: 12px;
            color: #333;
            white-space: nowrap;
            margin-left: 10px;
        }
     
   #territory-map   .scale-label {
            color: #ccc;
          text-shadow: 2px 2px #000;
        }
       
        .info-popup {
            position: absolute;
            background-color: #1C1D20;
            border: none;
            padding: 20px;
            border-radius: 4px;
            box-shadow: 0 4px 15px rgba(0,0,0,0.4);
            display: none;
            z-index: 1000;
            max-width: 300px;
            animation: popupFade 0.3s ease-out;
        }
       
        @keyframes popupFade {
            from {
                opacity: 0;
                transform: scale(0.95) translateY(10px);
            }
            to {
                opacity: 1;
                transform: scale(1) translateY(0);
            }
        }
       
        .info-popup h3 {
            margin-top: 0;
            color: #9A1E24;
            font-size: 0.9em;
            margin-bottom: 1px;
            text-align: center;
            font-family: var(--font2);
        }
       
        .info-popup p {
            margin-bottom: 15px;
            color: #ccc;
            line-height: 1.1;
            font-size: 14px;
            font-family: var(--font);
        }

        .info-popup img {
            width: 100%;
            height: 150px;
            object-fit: cover;
            border-radius: 4px;
            margin-bottom: 15px;
        }
       
        .close-button {
            position: absolute;
            top: 4px;
            right: 1px;
            cursor: pointer;
            padding: 5px;
            font-size: 20px;
            color: #fff;
            transition: color 0.3s ease;
        }

        .close-button:hover {
            color: #ccc;
        }
     
      .map-point .point-title {
            display: none;
            position: absolute;
            white-space: nowrap;
            left: 150%;
            top: calc(100% + 2px);
            transform: translateX(-70%);
            padding: 4px 8px;
            font-family: cinzel;
            font-size: 14px;
            color: #fff;
            text-shadow: 1px 1px 2px rgba(0,0,0,0.5);
        }

        .map-point.with-label .point-title {
            display: block;
        }
    </style>
</head>
<body>

<div class="tabs">
        <button class="tab active" data-map="town">БАЛТИМОР</button>
        <button class="tab" data-map="territory">ИЛЛЮЗИОН</button>
    </div>

    <div class="map-container active" id="town-map">
        <img src="https://forumstatic.ru/files/001c/54/02/81955.png" class="map-image" alt="BALTIMOR">
        <div class="map-scale">
            <div class="scale-bar">
                <div class="scale-segment" style="width: 50px">
                    <span class="scale-label">0</span>
                </div>
                <div class="scale-segment" style="width: 50px">
                    <span class="scale-label">100m</span>
                </div>
                <div class="scale-segment" style="width: 50px">
                    <span class="scale-label">200m</span>
                </div>
            </div>
        </div>
    </div>

    <div class="map-container" id="territory-map">
        <img src="https://upforme.ru/uploads/001c/54/02/9/888856.png" class="map-image">
        <div class="map-scale">
            <div class="scale-bar">
                <div class="scale-segment" style="width: 50px">
                    <span class="scale-label">0</span>
                </div>
                <div class="scale-segment" style="width: 50px">
                    <span class="scale-label">1km</span>
                </div>
                <div class="scale-segment" style="width: 50px">
                    <span class="scale-label">2km</span>
                </div>
            </div>
        </div>
    </div>

    <div class="info-popup">
        <span class="close-button">×</span>
        <img alt="Luogo">
        <h3></h3>
        <p></p>
    </div>

    <script>
        // настройка шкалы
        const SCALE_CONFIG = {
            town: {
                pixelsPerMeter: 0.114,
                totalDistance: 500,
                segments: 5,
                segmentWidth: 45
            },
              territory: {
                pixelsPerMeter: 0.0114,
                totalDistance: 5000,
                segments: 5,
                segmentWidth: 45
            }
        };

        // Достопримечательности в части БАЛТИМОР
        const townPoints = [
          {
                x: 62,
                y: 63,
                title: "Набережная Кантон",
                description: " Пристань Лайтхаус Пойнт — это ваши ворота в парк Кантон-Уотерфронт и достопримечательности Балтимора, где вы сможете погрузиться в местную культуру, рестораны и развлечения: Бар Drift расположенный на пристани Lighthouse Point Marina, Drift — идеальное место для отдыха на любой вкус: от неторопливых вечерних посиделок до оживленных вечерних посиделок.  Парк Кантон-Уотерфронт, расположенный на живописном участке между Бостон-стрит и Балтиморской гаванью. Это идеальное место для пикника и излюбленное место для наблюдения за захватывающими событиями, такими как авиашоу «Голубые ангелы» или прибытие больших парусных кораблей во Внутреннюю гавань.",
                icon: "fa-anchor",
                image: "https://upforme.ru/uploads/001c/54/02/9/507126.png"
            },
          {
                x: 62,
                y: 65,
                title: "Lighthouse Point Marina",
                description: "идеально расположенная на знаменитой набережной Кантон - это живописный уголок в Балтиморе , где сочетание красоты природы и великолепной атмосферы создает идеальное место для отдыха и развлечений. Марина располагается вдоль живописного побережья, обеспечивая потрясающие виды на воду и город. Здесь можно арендовать яхты, наслаждаться прогулками на катерах или просто расслабиться на берегу, под солнечными лучами. У моря расположены уютные кафе и рестораны, где можно насладиться местной кухней. Lighthouse Point Marina станет идеальным местом для семьи и друзей, ищущих увлекательные приключения и отдых.",
                icon: "fa-ship",
                image: "https://upforme.ru/uploads/001c/54/02/9/939353.png"

            },
          {
                x: 46.5,
                y: 62,
                title: "Ориол-парк на Кемден-ярдс",
                description: "«Ориол-парк на Кемден-ярдс» (англ. Oriole Park at Camden Yards) или просто «Кемден-ярдс» — бейсбольный стадион, расположенный в Балтиморе. Является домашним стадионом клуба Главной лиги бейсбола «Балтимор Ориолс». Вместимость стадиона «Кэмден-Ярдс» составляет 45 971 место, включая клубный уровень и верхнюю площадку.",
                icon: "fa-baseball-bat-ball",
                image: "https://upforme.ru/uploads/001c/54/02/9/37712.png"
            },
          {
                x: 45.5,
                y: 64,
                title: "Эм-энд-ти Банк Стэдиум",
                description: "«Эм-энд-ти Банк Стэдиум» (англ. M&T Bank Stadium) — футбольный стадион, расположенный в городе Балтимор, штат Мэриленд. Домашний стадион футбольной команды «Балтимор Рэйвенс». Трибуны стадиона состоят из четырёх уровней и вмещают  до 71 008 человек.",
                icon: "fa-football",
                image: "https://upforme.ru/uploads/001c/54/02/9/604400.png"

            },
          {
                x: 54.5,
                y: 63,
                title: "Harbor Point Park",
                description: "Парк Пойнт, ранее известный как парк Раш-Филд, расположенный в оживленной и живописной Внутренней гавани Балтимора, служит свидетельством стремления города к возрождению городских пространств. Эта исключительная зона отдыха в настоящее время переживает масштабную реконструкцию, превращающую её в скрытый оазис, гармонично сочетающий в себе пышную зелень, современную инфраструктуру и захватывающие виды на набережную.",
                icon: "fa-tree",
                image: "https://upforme.ru/uploads/001c/54/02/9/354688.png"
            },
          {
                x: 51,
                y: 61,
                title: "Port of Baltimore",
                description: "Морской порт, расположенный в приливных бассейнах трёх рукавов реки Патапско в Балтиморе, штат Мэриленд, на верхнем северо-западном берегу Чесапикского залива Атлантического океана. Это крупнейший в Соединённых Штатах Америки портовый комплекс для специализированных грузов (судов-ролкеров) и пассажирских судов. Он находится в ведении Администрации порта Мэриленда — подразделения департамента транспорта Мэриленда",
                icon: "fa-ship",
                image: "https://upforme.ru/uploads/001c/54/02/9/161779.png"
            },
          {
                x: 55,
                y: 70,
                title: "Baltimore Cruise Port",
                description: "Круизный порт Балтимора, расположенный на реке Патапско в бухте Уайнанс-Коув, является идеальным местом для начала незабываемого путешествия. Находясь всего в 3 милях от центра Балтимора и рядом с международным аэропортом, порт предлагает удобный доступ для пассажиров со всего региона. Каждый год более полумиллиона туристов отправляются отсюда в увлекательные круизы к Багамам, Бермудам, Карибским островам, Новой Англии и вдоль атлантического побережья Канады. Близость к основным достопримечательностям города позволяет путешественникам идеально совместить изучение Балтимора с предстоящими приключениями на воде.",
                icon: "fa-ship",
                image: "https://upforme.ru/uploads/001c/54/02/9/157548.png"
            },
          {
                x: 77,
                y: 74,
                title: "Dundalk Terminal",
                description: "Морской терминал Дандолк в порту Балтимора является крупнейшим автомобильным портом региона, обладая внушительной площадью в 570 акров. Он оснащен 13 причалами и 4 контейнерными кранами, что делает его универсальным объектом для обработки генеральных грузов. Прямой железнодорожный доступ обеспечивает эффективное соединение с главными транспортными маршрутами, что повышает его конкурентоспособность и делает его важной составляющей логистических цепочек как для местных, так и для международных операций. Этот порт не только подтверждает свои лидерские позиции, но и активно способствует развитию торговли и экономики региона.",
                icon: "fa-ship",
                image: "https://upforme.ru/uploads/001c/54/02/9/876637.png"
            },
          {
                x: 37,
                y: 99,
                title: "Международный аэропорт Балтимор-Вашингтон",
                description: "Гражданский аэропорт, обслуживающий конгломерат городов Балтимор и Вашингтон, является важным транзитным узлом для коммерческих авиаперевозок. Он выступает вторичным хабом для бюджетной авиакомпании AirTran Airways и одним из ключевых пунктов назначения для крупнейшего мирового дискаунтера Southwest Airlines. Аэропорт оборудован одним современным терминалом, предлагающим широкий выбор ресторанов и магазинов, а также четыре зала ожидания, расположенные в пяти вестибюлях. Кроме того, он обеспечивает отличные возможности наземного транспорта, включая поезда MARC и Amtrak, легкорельсовый транспорт MTA, автобусы и шаттлы. Это делает его удобным местом для пассажиров, стремящихся к комфортному и быстрому передвижению в пределах региона и за его пределами.",
                icon: "fa-plane",
                image: "https://upforme.ru/uploads/001c/54/02/9/767574.png"
            },
          {
                x: 52,
                y: 58,
                title: "Baltimore Police Department Heliport",
                description: "Вертолетная площадка Департамента полиции Балтимора является ключевым элементом системы оперативного реагирования и обеспечения безопасности в округе. Авиационная группа активно занимается воздушным наблюдением за значительными критическими инцидентами, предоставляя в режиме реального времени микроволновый видеосигнал на командный пункт департамента по чрезвычайным ситуациям. Помимо стандартного патрулирования, площадка играет важную роль в проведении поисково-спасательных операций, где профессионалы авиационной группы сотрудничают с тактическими спасателями  из пожарной части № 17 округа Балтимор. Это сотрудничество позволяет эффективно реагировать на чрезвычайные ситуации, обеспечивая быструю помощь и безопасность граждан.",
                icon: "fa-plane",
                image: "https://upforme.ru/uploads/001c/54/02/9/341787.png"
            },

{
                x: 35,
                y: 43,
                title: "Малая база Северного Синдиката",
                description: "Штаб-квартира Синдиката искусно замаскирована под современные таунхаусы в тихом пригороде Балтимора. Лаконичная геометрия фасадов, панорамные окна и просторные балконы создают видимость уютного жилого комплекса. Бело-серые тона подчеркивают строгость архитектуры, а внутренние дворы и гаражи обеспечивают уединение. За неприметностью скрывается стратегический центр, где тишина улиц становится надёжным прикрытием для дел Синдиката.",
                icon: "fa-masks-theater",
                image: "https://upforme.ru/uploads/001c/54/02/9/187261.png"
            },

{
                x: 25,
                y: 16,
                title: "Особняк Босса Синдиката",
                description: "В роскошном пригороде возвышается огромная резиденция с большой территорией, словно перенесённая из восточных сказаний. Белоснежный фасад особняка сочетает европейскую классику с утончёнными арабскими мотивами — изящные арки, тонкая лепнина и величественные колонны подчеркивают мощь и утончённость владельца. Перед входом — фонтан из чёрного камня, символ власти и вечного движения. Вокруг — строгий садовый ансамбль и ухоженные аллеи, ведущие к соседним павильонам, где расположены дома гарема Уммы Аль-Хайр. Это не только центр личной жизни, но и символ наследия, в котором восточная роскошь соединяется с дисциплиной нового мира.",
                icon: "fa-crown",
                image: "https://upforme.ru/uploads/001c/54/02/9/451544.png"
            },
{
                x: 53,
                y: 55,
                title: "Малая штаб квартира Восточной Империи",
                description: "Небольшое трёхэтажное здание с невысоким фасадом и охраняемой территорией. Первый этаж — ресепшн и переговорная; второй — офисы руководства и секретариат; третий — стратегическая комната, архив и комната отдыха. Мини‑сервер, CCTV, скуд-контроль, автономное электропитание и маскируемая аварийная эвакуация.",
                icon: "fa-masks-theater",
                image: "https://upforme.ru/uploads/001c/54/02/9/873734.png"
            },

{
                x: 56,
                y: 19,
                title: "Особняк Босса Империи",
                description: "Особняк босса Восточной империи величественно возвышается среди густых лесов, скрываясь за строгими аллеями и идеально подстриженными живыми изгородями. Его фасад из серого камня дышит аристократизмом и внушает уважение еще с первых шагов к массивным дверям. Круглый двор, охраняемый людьми и машинами, словно арена силы, подчеркивает статус хозяина. Эта резиденция — символ незыблемой власти, холодного расчёта и непоколебимой тени, простирающейся над всей империей.",
                icon: "fa-crown",
                image: "https://upforme.ru/uploads/001c/54/02/9/130679.png"
            },
{
                x: 54,
                y: 61,
                 title: "Малая штаб квартира Золотой Бухты",
                description: "Небольшой офис на 2–5 этаже в одном из пятнадцатиэтажном здании, замаскированный под консалтинговую фирму. Ресепшн с подставным персоналом, несколько смежных кабинетов для встреч, комната для аналитики и хранения документов. Простая система видеонаблюдения, локальная сеть с шифрованием, аварийный выход и запасные ключи. Низкая внешняя заметность, деловой антураж. Рядом располагаются с внешней стороны ресторанчики, фитнес клубы, модные бутики, внутренняя территория закрытая, есть подъезды на подземный паркинг. Внутренний дворик более обустроенный, есть бассейн, зона комфортабельного отдыха.",
                icon: "fa-masks-theater",
                image: "https://upforme.ru/uploads/001c/54/02/9/660747.png"
            },

{
                x: 97,
                y: 72,
                title: "Особняк Босса Золотой Бухты",
                description: "Это не просто дом, а символ власти и величия на границе его владений. Особняк с террасами, которые переходят одна в другую, образуя гармоничные уровни с бассейнами, зелеными зонами и уютными лаундж-зонами. Пространство выглядит словно оазис роскоши, подсвеченными садами и бассейнами будто парит над землей. Здесь объединены холодная геометрия и роскошь без компромиссов. Каждая деталь говорит о том, что это крепость авторитета, место, где решения меняют судьбы целых территорий.",
                icon: "fa-crown",
                image: "https://upforme.ru/uploads/001c/54/02/9/444367.png"
            },
{
                x: 42,
                y: 73,
                title: "Малая штаб квартира Западного Картеля",
                description: "Малая штаб-квартира Западного картеля разместилась в бывшем центре помощи наркозависимым в Балтиморе — выбор подчеркнут ироничным замыслом нового босса. Современное здание из стекла и камня с холодной геометрией фасада теперь скрывает переговорные залы, офисы стражей и простор для тайных встреч.",
                icon: "fa-masks-theater",
                image: "https://upforme.ru/uploads/001c/54/02/9/834138.png"
            },

{
                x: 23,
                y: 59,
                title: "Особняк Босса Картеля",
                description: "Особняк босса мафии Западного картеля поражает своим великолепием. Особняк в стиле европейского классицизма, с утончённым интерьером, мраморными колоннами, зеркальными залами и панорамными окнами. Здание окружено идеальным ландшафтным дизайном — ровные газоны, тщательно подстриженные деревья и аллеи. Территория включает в себя площадку для гольфа, просторный спортивный корт с разметкой для игр и несколько вертолетных площадок, шикарный бассейн.  Это не просто убежище, а крепость власти, где роскошь переплетается с холодным расчётом и абсолютным контролем.",
                icon: "fa-crown",
                image: "https://upforme.ru/uploads/001c/54/02/9/720761.png"
            },

{
                x: 48,
                y: 60,
               title: "Малая штаб квартира Иллюзиона",
                description: "Комфортный офис на верхнем этаже: панорамные окна с видом на гаванью, минималистичный интерьер в тёмных тонах, стеклянные перегородки для переговорных, скрытые серверные и защищённый бокс для документации, комната отдыха, пункт контроля доступа и система видеонаблюдения.",
                icon: "fa-masks-theater",
                image: "https://upforme.ru/uploads/001c/54/02/9/859593.png"
            },
{
                x: 49,
                y: 62,
                title: "Апартаменты руководства Иллизион",
                description: "Здание в бизнес-центре Балтимора, полностью выкупленное под нужды корпорации Иллюзион. Рабочие и жилые шикарные двухуровневые апартаменты разных площадей с панорамными окнами на гавань, элегантный интерьер в тёмных и металлических тонах, просторная гостиная, кабинет с защищённой мини‑серверной, с ванной комнатой, полностью оснащённая кухня, гардеробные, комната для переговоров, система умного дома, безопасная входная зона и персонал‑консьерж. На первом этаже небольшой ресторанчик сети Sapori d’Italia, на минус первом этаже -  помещение с оснащенной прачечной, остальные минус второй  третий этаж - подземный паркинг.",
                icon: "fa-crown",
                image: "https://upforme.ru/uploads/001c/54/02/9/583957.png"
            },

          /* {
                x: 55,
                y: 35,
                title: "Piazza",
                description: "Descrizione dettagliata del terzo punto di interesse.",
                icon: "fa-monument",
                image: "https://i.imgur.com/random3.jpg"
            }, */
         
        ];

        // Точки интереса ИЛЛЮЗИОН
        const territoryPoints = [
    {
        x: 52,
        y: 80,
      title: "Baltimore Cruise Port",
                description: "Круизный порт Балтимора, расположенный на реке Патапско в бухте Уайнанс-Коув, является идеальным местом для начала незабываемого путешествия. Находясь всего в 3 милях от центра Балтимора и рядом с международным аэропортом, порт предлагает удобный доступ для пассажиров со всего региона. Каждый год более полумиллиона туристов отправляются отсюда в увлекательные круизы к Багамам, Бермудам, Карибским островам, Новой Англии и вдоль атлантического побережья Канады. Близость к основным достопримечательностям города позволяет путешественникам идеально совместить изучение Балтимора с предстоящими приключениями на воде.",
                icon: "fa-ship",
                image: "https://upforme.ru/uploads/001c/54/02/9/157548.png"
    },

{
        x: 36,
        y: 38,
      title: "Port of Baltimore",
                description: "Морской порт, расположенный в приливных бассейнах трёх рукавов реки Патапско в Балтиморе, штат Мэриленд, на верхнем северо-западном берегу Чесапикского залива Атлантического океана. Это крупнейший в Соединённых Штатах Америки портовый комплекс для специализированных грузов (судов-ролкеров) и пассажирских судов. Он находится в ведении Администрации порта Мэриленда — подразделения департамента транспорта Мэриленда",
                icon: "fa-ship",
                image: "https://upforme.ru/uploads/001c/54/02/9/161779.png"
    },
{
        x: 11,
        y: 41,
       title: "Ориол-парк на Кемден-ярдс",
                description: "«Ориол-парк на Кемден-ярдс» (англ. Oriole Park at Camden Yards) или просто «Кемден-ярдс» — бейсбольный стадион, расположенный в Балтиморе. Является домашним стадионом клуба Главной лиги бейсбола «Балтимор Ориолс». Вместимость стадиона «Кэмден-Ярдс» составляет 45 971 место, включая клубный уровень и верхнюю площадку.",
                icon: "fa-baseball-bat-ball",
                image: "https://upforme.ru/uploads/001c/54/02/9/37712.png"
    },{
                x: 22,
                y: 31,
                title: "Малая штаб квартира Иллюзиона",
                description: "Комфортный офис на верхнем этаже: панорамные окна с видом на гаванью, минималистичный интерьер в тёмных тонах, стеклянные перегородки для переговорных, скрытые серверные и защищённый бокс для документации, комната отдыха, пункт контроля доступа и система видеонаблюдения.",
                icon: "fa-masks-theater",
                image: "https://upforme.ru/uploads/001c/54/02/9/859593.png"
            },
{
                x: 26,
                y: 41,
                title: "Апартаменты руководства Иллизион",
                description: "Здание в бизнес-центре Балтимора, полностью выкупленное под нужды корпорации Иллюзион. Рабочие и жилые шикарные двухуровневые апартаменты разных площадей с панорамными окнами на гавань, элегантный интерьер в тёмных и металлических тонах, просторная гостиная, кабинет с защищённой мини‑серверной, с ванной комнатой, полностью оснащённая кухня, гардеробные, комната для переговоров, система умного дома, безопасная входная зона и персонал‑консьерж. На первом этаже небольшой ресторанчик сети Sapori d’Italia, на минус первом этаже -  помещение с оснащенной прачечной, остальные минус второй  третий этаж - подземный паркинг.",
                icon: "fa-crown",
                image: "https://upforme.ru/uploads/001c/54/02/9/583957.png"
            }, {
                x: 38,
                y: 20,
                title: "Baltimore Police Department Heliport",
                description: "Вертолетная площадка Департамента полиции Балтимора является ключевым элементом системы оперативного реагирования и обеспечения безопасности в округе. Авиационная группа активно занимается воздушным наблюдением за значительными критическими инцидентами, предоставляя в режиме реального времени микроволновый видеосигнал на командный пункт департамента по чрезвычайным ситуациям. Помимо стандартного патрулирования, площадка играет важную роль в проведении поисково-спасательных операций, где профессионалы авиационной группы сотрудничают с тактическими спасателями  из пожарной части № 17 округа Балтимор. Это сотрудничество позволяет эффективно реагировать на чрезвычайные ситуации, обеспечивая быструю помощь и безопасность граждан.",
                icon: "fa-plane",
                image: "https://upforme.ru/uploads/001c/54/02/9/341787.png"
            },{
                x: 45,
                y: 7,
                title: "Малая штаб квартира Восточной Империи",
                description: "Небольшое трёхэтажное здание с невысоким фасадом и охраняемой территорией. Первый этаж — ресепшн и переговорная; второй — офисы руководства и секретариат; третий — стратегическая комната, архив и комната отдыха. Мини‑сервер, CCTV, скуд-контроль, автономное электропитание и маскируемая аварийная эвакуация.",
                icon: "fa-masks-theater",
                image: "https://upforme.ru/uploads/001c/54/02/9/873734.png"
            }, {
                x: 53,
                y: 43,
                title: "Малая штаб квартира Золотой Бухты",
                description: "Небольшой офис на 2–5 этаже в одном из пятнадцатиэтажном здании, замаскированный под консалтинговую фирму. Ресепшн с подставным персоналом, несколько смежных кабинетов для встреч, комната для аналитики и хранения документов. Простая система видеонаблюдения, локальная сеть с шифрованием, аварийный выход и запасные ключи. Низкая внешняя заметность, деловой антураж. Рядом располагаются с внешней стороны ресторанчики, фитнес клубы, модные бутики, внутренняя территория закрытая, есть подъезды на подземный паркинг. Внутренний дворик более обустроенный, есть бассейн, зона комфортабельного отдыха.",
                icon: "fa-masks-theater",
                image: "https://upforme.ru/uploads/001c/54/02/9/660747.png"
            }, {
                x: 54,
                y: 49,
                title: "Harbor Point Park",
                description: "Парк Пойнт, ранее известный как парк Раш-Филд, расположенный в оживленной и живописной Внутренней гавани Балтимора, служит свидетельством стремления города к возрождению городских пространств. Эта исключительная зона отдыха в настоящее время переживает масштабную реконструкцию, превращающую её в скрытый оазис, гармонично сочетающий в себе пышную зелень, современную инфраструктуру и захватывающие виды на набережную.",
                icon: "fa-tree",
                image: "https://upforme.ru/uploads/001c/54/02/9/354688.png"
            }, {
                x: 95,
                y: 50,
                title: "Набережная Кантон",
                description: " Пристань Лайтхаус Пойнт — это ваши ворота в парк Кантон-Уотерфронт и достопримечательности Балтимора, где вы сможете погрузиться в местную культуру, рестораны и развлечения: Бар Drift расположенный на пристани Lighthouse Point Marina, Drift — идеальное место для отдыха на любой вкус: от неторопливых вечерних посиделок до оживленных вечерних посиделок.  Парк Кантон-Уотерфронт, расположенный на живописном участке между Бостон-стрит и Балтиморской гаванью. Это идеальное место для пикника и излюбленное место для наблюдения за захватывающими событиями, такими как авиашоу «Голубые ангелы» или прибытие больших парусных кораблей во Внутреннюю гавань.",
                icon: "fa-anchor",
                image: "https://upforme.ru/uploads/001c/54/02/9/507126.png"
            }, {
                x: 90,
                y: 53,
                title: "Lighthouse Point Marina",
                description: "идеально расположенная на знаменитой набережной Кантон - это живописный уголок в Балтиморе , где сочетание красоты природы и великолепной атмосферы создает идеальное место для отдыха и развлечений. Марина располагается вдоль живописного побережья, обеспечивая потрясающие виды на воду и город. Здесь можно арендовать яхты, наслаждаться прогулками на катерах или просто расслабиться на берегу, под солнечными лучами. У моря расположены уютные кафе и рестораны, где можно насладиться местной кухней. Lighthouse Point Marina станет идеальным местом для семьи и друзей, ищущих увлекательные приключения и отдых.",
                icon: "fa-ship",
                image: "https://upforme.ru/uploads/001c/54/02/9/939353.png"

            },
          {
        x: 9,
        y: 53,
        title: "Эм-энд-ти Банк Стэдиум",
                description: "«Эм-энд-ти Банк Стэдиум» (англ. M&T Bank Stadium) — футбольный стадион, расположенный в городе Балтимор, штат Мэриленд. Домашний стадион футбольной команды «Балтимор Рэйвенс». Трибуны стадиона состоят из четырёх уровней и вмещают  до 71 008 человек.",
                icon: "fa-football",
                image: "https://upforme.ru/uploads/001c/54/02/9/604400.png"
    }

];

        const mapPoints = {
            'town-map': townPoints,
            'territory-map': territoryPoints
        };

        function initializeMap(mapId) {
            const mapContainer = document.getElementById(mapId);
            const points = mapPoints[mapId];
           
            // Удалить существующие точки
            const existingPoints = mapContainer.querySelectorAll('.map-point');
            existingPoints.forEach(point => point.remove());
           
            // Добавить новые точки
            points.forEach(point => {
                const marker = createMarker(point);
                mapContainer.appendChild(marker);
            });
        }

        function createMarker(point) {
            const marker = document.createElement('div');
            marker.className = 'map-point';
            if (point.showLabel) {
                marker.classList.add('with-label');
            }
           
            // Создайте значок
            const icon = document.createElement('i');
            icon.className = `fa-solid ${point.icon}`;
            marker.appendChild(icon);
           
            // Создайте метку заголовка, если это точка территории, с помощью showLabel
            if (point.showLabel) {
                const title = document.createElement('span');
                title.className = 'point-title';
                title.textContent = point.title;
                marker.appendChild(title);
            }
           
            marker.style.left = `${point.x}%`;
            marker.style.top = `${point.y}%`;
           
            marker.addEventListener('click', (e) => {
                e.stopPropagation();
                handleMarkerClick(marker, point);
            });
           
            return marker;
        }

        function handleMarkerClick(marker, point) {
            if (activePoint) {
                activePoint.classList.remove('active');
            }
           
            marker.classList.add('active');
            activePoint = marker;
           
            const popup = document.querySelector('.info-popup');
            popup.querySelector('h3').textContent = point.title;
            popup.querySelector('p').textContent = point.description;
            popup.querySelector('img').src = point.image;
            popup.querySelector('img').alt = point.title;
           
            popup.style.display = 'block';
            positionPopup(marker);
        }

        function positionPopup(marker) {
    const popup = document.querySelector('.info-popup');
    const rect = marker.getBoundingClientRect();
    const popupRect = popup.getBoundingClientRect();
    const containerRect = marker.closest('.map-container').getBoundingClientRect();
   
    // Всегда размещайте справа от маркера
    let left = rect.right + 10;
   
    // Если справа нет места, поместите слева
    if (left + popupRect.width > containerRect.right - 10) {
        left = rect.left - popupRect.width - 10;
    }
   
    // Центрировать по вертикали относительно маркера
    let top = rect.top + (rect.height / 2) - (popupRect.height / 2);
   
    // Убедитесь, что он не выходит за вертикальные края
    if (top < containerRect.top + 10) {
        top = containerRect.top + 10;
    } else if (top + popupRect.height > containerRect.bottom - 10) {
        top = containerRect.bottom - popupRect.height - 10;
    }
   
    popup.style.left = `${left}px`;
    popup.style.top = `${top}px`;
}

        // Управление вкладками
        const tabs = document.querySelectorAll('.tab');
        let activePoint = null;

        tabs.forEach(tab => {
            tab.addEventListener('click', () => {
                // Удалить класс active из всех вкладок и карт
                document.querySelectorAll('.tab').forEach(t => t.classList.remove('active'));
                document.querySelectorAll('.map-container').forEach(m => m.classList.remove('active'));
               
                // Добавить класс active на вкладку, которую вы щелкнули
                tab.classList.add('active');
               
                // Показать соответствующую карту
                const mapType = tab.dataset.map;
                const mapId = `${mapType}-map`;
                document.getElementById(mapId).classList.add('active');
               
                // Скрыть всплывающее окно
                document.querySelector('.info-popup').style.display = 'none';
                if (activePoint) {
                    activePoint.classList.remove('active');
                    activePoint = null;
                }
               
                // Инициализировать карту
                initializeMap(mapId);
            });
        });

        // Инициализация
        initializeMap('town-map');

        // Обработка закрытия всплывающего окна
        const closeButton = document.querySelector('.close-button');
        const popup = document.querySelector('.info-popup');

        closeButton.addEventListener('click', () => {
            popup.style.display = 'none';
            if (activePoint) {
                activePoint.classList.remove('active');
                activePoint = null;
            }
        });

        document.addEventListener('click', (e) => {
            if (!popup.contains(e.target) && !e.target.classList.contains('map-point')) {
                popup.style.display = 'none';
                if (activePoint) {
                    activePoint.classList.remove('active');
                    activePoint = null;
                }
            }
        });
    </script>
</body>
</html>[/html]