/* ПАЛИТРА ТЁМНОЙ ТЕМЫ — меняйте цвета здесь */
			:root {
				--bg-color: #0a0a0a;
				--text-color: #f2f2f2;
				--accent-color: #3b82f6;
				--secondary-text: #cfcfcf;
				--border-color: rgba(255,255,255,0.1);
				--font-main: 'Helvetica Neue', Arial, sans-serif;

				/* Поверхности (стекло) */
				--surface: rgba(10, 10, 10, 0.75);            /* общий фон модулей */
				--surface-strong: rgba(10, 10, 10, 0.8);      /* бургер-меню раскрытое */
				--surface-map: rgba(25, 25, 25, 0.75);        /* виджет карты и кнопки зума */
				--glass-btn-bg: rgba(10, 10, 10, 0.8);        /* круглые стеклянные кнопки */
				--surface-hover: rgba(40, 40, 40, 0.9);       /* фон стеклянных кнопок при наведении */
				--ctrl-hover-bg: rgba(255,255,255,0.1);       /* фон маленьких кнопок при наведении */
				--hover-text: #fff;                            /* цвет текста/иконки при наведении на нейтральный фон */
				--divider-bg: rgba(255,255,255,0.2);          /* разделитель в панели кнопок */
				--border-strong: rgba(255, 255, 255, 0.3);    /* усиленная рамка при наведении */
				--icon-filter: brightness(0) invert(1);       /* перекраска SVG-иконок (лампа и т.п.) */
				--shadow-ui: 0 4px 15px rgba(0,0,0,0.3);      /* тень модулей */

				/* Акцент */
				--accent-glow: rgba(59, 130, 246, 0.4);       /* мягкое свечение акцента */
				--accent-glow-strong: rgba(59, 130, 246, 0.6);/* сильное свечение акцента */
				--accent-soft: rgba(59, 130, 246, 0.3);       /* мягкая подсветка активных элементов */

				/* Модальные окна */
				--modal-backdrop: rgba(0, 0, 0, 0.8);
				--modal-box-bg: rgba(15, 15, 15, 0.78);
				--chip-bg: rgba(255,255,255,0.05);            /* строки-«чипы»: контакты, пункты меню */
				--chip-bg-hover: rgba(255,255,255,0.1);
				--chip-bg-active: rgba(255, 255, 255, 0.08);  /* фон иконок внутри чипов */
				--close-btn-bg: rgba(255, 255, 255, 0.06);
				--close-btn-border: 1px solid rgba(255, 255, 255, 0.08);
				--close-btn-hover-bg: rgba(255, 255, 255, 0.12);
				--close-btn-border-strong: 1px solid rgba(255, 255, 255, 0.15);

				/* Прочее */
				--pin-label-bg: rgba(0,0,0,0.8);              /* подпись пина на карте */
				--pin-label-text: #fff;
				--thumb-hover-border: rgba(255, 255, 255, 0.5);
				--hidden-ui-btn-bg: rgba(10, 10, 10, 0.55);   /* кнопка «глаз» при скрытом интерфейсе */
				--hidden-ui-btn-border: 1px solid rgba(255, 255, 255, 0.15);
				--hidden-ui-btn-border-strong: 1px solid rgba(255, 255, 255, 0.25);
				--hidden-ui-btn-hover-bg: rgba(30, 30, 30, 0.7);
				--compass-ring: rgba(255,255,255,0.8);        /* кольцо компаса */
				--compass-south: rgba(255,255,255,0.3);       /* южная стрелка компаса */
				--welcome-bg: #0a0a0a;                        /* фон начального экрана */
				--welcome-slide-opacity: 0.4;                 /* прозрачность слайдшоу */
				--welcome-h1-from: #fff;                      /* градиент заголовка */
				--radar-color: var(--accent-color);          /* цвет радара (переопределяется темой тура) */
				--welcome-h1-to: #999;
			}

/* БАЗА: технические стили Panotour, общие элементы (overlay, стекло, кнопки), iOS-фикс */
			* { box-sizing: border-box; }

			body {
				background-color: var(--bg-color);
				color: var(--text-color);
				font-family: var(--font-main);
				line-height: 1.6;
			}

			a { text-decoration: none; color: inherit; transition: 0.3s; }

			/* --- 1. ТЕХНИЧЕСКИЕ СТИЛИ PANOTOUR */
			@-ms-viewport { width: device-width; }
			@media only screen and (min-device-width: 800px) { html { overflow:hidden; } }
			* { padding: 0; margin: 0; }
			html { height: 100%; }
			body { height: 100%; overflow:hidden; position: relative; } /* position: relative — чтобы #tour-ui-overlay и бургер на мобильной считали высоту от body (в неполноэкранном режиме скрипт задаёт html/body по window.innerHeight, а 100vh может отличаться) */
			div#container { height: 100%; min-height: 100%; width: 100%; margin: 0 auto; }
			div#tourDIV {
				height:100%;
				position:relative;
				overflow:hidden;
			}
			
			div#panoDIV {
				height:100%;
				position:relative;
				overflow:hidden;
				-webkit-user-select: none;
				-khtml-user-select: none;
				-moz-user-select: none;
				-o-user-select: none;
				user-select: none;
			}

			/*
			 * Сброс box-sizing для контейнера панорамы: Krpano/Panotour считают координаты
			 * точек-переходов и попапов в модели content-box. Глобальный box-sizing: border-box
			 * меняет расчёт размеров и даёт смещение на несколько пикселей.
			 */
			#tourDIV,
			#tourDIV *,
			#panoDIV,
			#panoDIV * {
				box-sizing: content-box;
			}


			/* --- КНОПКИ (Используются в Welcome Screen и CTA) --- */
			.hero-btn, button.hero-btn {
				display: inline-block;
				padding: 15px 40px;
				background-color: var(--accent-color);
				color: white;
				border-radius: 50px;
				font-weight: 700;
				box-shadow: 0 0 20px var(--accent-glow);
				border: none;
				cursor: pointer;
				font-family: inherit;
				transition: transform 0.3s ease, background-color 0.3s ease, opacity 0.3s ease, box-shadow 0.3s ease;
			}
			.hero-btn:hover, button.hero-btn:hover {
				transform: translateY(-2px);
				box-shadow: 0 0 30px var(--accent-glow-strong); 
			}

			/* --- АНИМАЦИИ (Fade In) --- */
			.fade-in {
				opacity: 0;
				transform: translateY(30px);
				transition: opacity 0.8s ease-out, transform 0.8s ease-out;
				will-change: opacity, transform;
			}
			.fade-in.visible { opacity: 1; transform: translateY(0); }

			/* --- ОСНОВНОЙ СЛОЙ ИНТЕРФЕЙСА --- */
			#tour-ui-overlay {
				position: fixed;
				inset: 0;
				width: 100%; height: 100%;
				z-index: 5000;
				pointer-events: none;
				padding: 0; 
				display: flex;
				flex-direction: column;
				justify-content: space-between;
				overflow: hidden;
			}

			/* Общий стиль модулей (стекло) */
			.ui-module {
				pointer-events: auto;
				background: var(--surface);
				backdrop-filter: blur(12px);
				-webkit-backdrop-filter: blur(12px);
				border: 1px solid var(--border-color);
				border-radius: 50px;
				padding: 10px;
				transition: all 0.3s ease;
			}


			/* --- АДАПТИВНОСТЬ (Мобильные) --- */
			.mobile-only { display: none; }

			/* --- iOS: полноэкранный режим, который кнопка включает вручную ---
			   Высоту ставит _applyIOSFullscreenHeight инлайном на html/body, и она
			   намеренно НЕ перебивается здесь: height: 100% !important в таблице
			   стилей сильнее обычного inline-стиля, и разворот свёлся бы к нулю. */
			html.ios-fullscreen-mode { overflow: hidden !important; }
			html.ios-fullscreen-mode body.ios-fullscreen-mode,
			body.ios-fullscreen-mode {
				position: fixed !important; width: 100% !important;
				top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important;
				z-index: 9999 !important; background: #000; overflow: hidden !important;
			}
			.ios-fullscreen-mode #container,
			.ios-fullscreen-mode #tourDIV,
			.ios-fullscreen-mode #panoDIV { height: 100% !important; width: 100% !important; }


/* ДОСТУПНОСТЬ: видимый фокус с клавиатуры */
.gallery-thumb:focus-visible,
button:focus-visible,
a:focus-visible,
input:focus-visible,
.map-pin:focus-visible {
	outline: 2px solid var(--accent-color);
	outline-offset: 2px;
}

/* АУДИО: кнопка озвучки в панели управления (размеры как у .ctrl-btn) */
#audio-toggle { display: none; position: relative; }
#audio-toggle .audio-icon--on { display: none; }
#audio-toggle .audio-icon--off { display: block; }
#audio-toggle.playing .audio-icon--on { display: block; }
#audio-toggle.playing .audio-icon--off { display: none; }

/* Индикатор «играет» — пульс вокруг кнопки */
#audio-toggle.playing::after {
	content: '';
	position: absolute;
	inset: 4px;
	border-radius: 50%;
	border: 2px solid var(--accent-color);
	animation: audioPulse 1.6s ease-out infinite;
	pointer-events: none;
}
@keyframes audioPulse {
	0% { transform: scale(0.8); opacity: 0.9; }
	100% { transform: scale(1.35); opacity: 0; }
}

/* БУРГЕР-МЕНЮ: меню, галерея локаций, навигация */
			/* --- ГАЛЕРЕЯ (миниатюры в бургер-меню) --- */
			.gallery-thumb {
				position: relative;
				width: 120px; height: 70px;
				border-radius: 12px;
				overflow: hidden;
				cursor: pointer;
				border: 2px solid transparent;
				transition: all 0.3s ease;
				flex-shrink: 0; background: #000;
			}
			.gallery-thumb img {
				width: 100%; height: 100%;
				object-fit: cover; opacity: 0.6;
				transition: opacity 0.3s ease, transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
			}
			.gallery-thumb span {
				position: absolute; bottom: 0; left: 0;
				width: 100%; padding: 6px 8px 4px 8px;
				font-size: 0.8rem; color: #fff;
				background: linear-gradient(to top, rgba(0,0,0,0.9), transparent);
				white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
				text-align: center; text-shadow: 0 1px 2px rgba(0,0,0,0.8);
			}
			.gallery-thumb:hover { border-color: var(--thumb-hover-border); }
			.gallery-thumb:hover img { opacity: 1; transform: scale(1.1); }
			.gallery-thumb.hover-scene { border-color: var(--thumb-hover-border); }
			.gallery-thumb.hover-scene img { opacity: 1; transform: scale(1.1); }
			.gallery-thumb.current-scene {
				border-color: var(--accent-color);
				box-shadow: 0 0 15px var(--accent-soft);
                cursor: default; /* Обычная стрелка вместо пальца */
                pointer-events: none; /* Полностью отключает клики на уровне CSS (как доп. защита) */
			}
			.gallery-thumb.current-scene img { opacity: 1; }

			/* Контейнер бейджей в углу превью (день/ночь сверху, клик снизу) */
			.gallery-thumb-badges {
				position: absolute;
				top: 6px;
				right: 6px;
				display: flex;
				flex-direction: column;
				gap: 4px;
				pointer-events: none;
				z-index: 10;
			}
			/* Индикатор день/ночь в галерее — мягко вписан в превью */
			.gallery-thumb-daynight-indicator,
			.gallery-thumb-click-indicator {
				width: 24px;
				height: 24px;
				background: rgba(0, 0, 0, 0.45);
				backdrop-filter: blur(8px);
				-webkit-backdrop-filter: blur(8px);
				border-radius: 50%;
				display: flex;
				align-items: center;
				justify-content: center;
				opacity: 0.95;
				transition: opacity 0.2s ease, background 0.2s ease;
			}
			.gallery-thumb:hover .gallery-thumb-daynight-indicator,
			.gallery-thumb:hover .gallery-thumb-click-indicator {
				background: rgba(0, 0, 0, 0.55);
				opacity: 1;
			}
			.gallery-thumb-daynight-indicator img {
				width: 13px;
				height: 13px;
				display: block;
				filter: brightness(0) invert(1);
			}
			.gallery-thumb-click-indicator img {
				width: 18px;
				height: 18px;
				display: block;
				filter: brightness(0) invert(1);
			}


			/* --- БУРГЕР-МЕНЮ (ПК версия) --- */
			.ui-burger-widget {
				position: absolute; 
				top: calc(20px + env(safe-area-inset-top, 0)); 
				left: calc(30px + env(safe-area-inset-left, 0)); /* как у карты */
				width: 50px; 
				height: 50px;
				/* ИСПРАВЛЕНО: Устанавливаем начальный max-height для плавной анимации */
				max-height: 50px; 
				border-radius: 25px !important;
				overflow: hidden; 
				padding: 0;
				/* Одинаковый набор переходов в обоих состояниях — высота и ширина сворачиваются вместе. */
				transition: width 0.4s cubic-bezier(0.25, 1, 0.5, 1), height 0.4s cubic-bezier(0.25, 1, 0.5, 1), max-height 0.4s cubic-bezier(0.25, 1, 0.5, 1), border-radius 0.4s cubic-bezier(0.25, 1, 0.5, 1);
				z-index: 7500; 
				display: flex;
				flex-direction: column;
				align-items: flex-start; 
				justify-content: flex-start;
				background: var(--glass-btn-bg); /* единая прозрачность с картой и день/ночь */
				backdrop-filter: blur(12px);
				-webkit-backdrop-filter: blur(12px);
				border: 1px solid var(--border-color);
			}
			/* Эффект при наведении (как у карты и день/ночь) */
			.ui-burger-widget:not(.expanded):hover {
				background: var(--surface-hover);
				border-color: var(--border-strong);
				color: var(--hover-text);
			}

			.ui-burger-widget.expanded {
				width: 300px;
				/* ПК: высота не больше 730px и не больше (viewport − место под нижние кнопки), чтобы на iPad landscape меню не выходило за экран */
				height: min(730px, calc(100vh - 100px)) !important;
				max-height: min(730px, calc(100vh - 100px)) !important;
				border-radius: 24px !important;
				background: var(--surface-strong);
				transition: width 0.4s cubic-bezier(0.25, 1, 0.5, 1), height 0.4s cubic-bezier(0.25, 1, 0.5, 1), max-height 0.4s cubic-bezier(0.25, 1, 0.5, 1), border-radius 0.4s cubic-bezier(0.25, 1, 0.5, 1);
			}
			/* ПК: когда карта раскрыта — ограничиваем высоту бургера, чтобы был зазор между меню и картой */
			@media (min-width: 769px) {
				body.map-expanded .ui-burger-widget.expanded {
					height: min(730px, calc(100vh - 20px - 320px - 30px - 40px)) !important;
					max-height: min(730px, calc(100vh - 410px)) !important;
				}
			}
			/* iPad и планшеты в альбоме: больший отступ снизу от блока кнопок (правило после общего ПК, чтобы переопределять) */
			@media (min-width: 769px) and (max-height: 900px) {
				.ui-burger-widget.expanded {
					height: min(730px, calc(100vh - 150px)) !important;
					max-height: min(730px, calc(100vh - 150px)) !important;
				}
				body.map-expanded .ui-burger-widget.expanded {
					height: min(730px, calc(100vh - 450px)) !important;
					max-height: min(730px, calc(100vh - 450px)) !important;
				}
			}

			/* Ряд: кнопка закрытия + название активной панорамы (вся панель кликабельна для сворачивания, как у карты) */
			.burger-top-row {
				display: flex;
				flex-direction: row;
				align-items: center;
				flex-shrink: 0;
				width: 100%;
				min-height: 50px;
				cursor: pointer;
				transition: background 0.3s ease;
			}
			.burger-scene-title-inline {
				flex: 1;
				min-width: 0;
				font-size: 1rem;
				color: var(--secondary-text);
				margin: 0;
				padding: 0 16px 0 8px;
				overflow: hidden;
				text-overflow: ellipsis;
				white-space: nowrap;
				line-height: 1.2;
			}

			/* Стили самой кнопки */
			.burger-btn { 
				width: 50px; 
				height: 50px;
				flex-shrink: 0; 
				border: none !important; 
				background: transparent !important; 
				display: flex; 
				align-items: center; 
				justify-content: center;
				color: var(--secondary-text); /* как у карты и день/ночь */
				cursor: pointer;
				padding: 0;
				z-index: 10; /* Кнопка всегда поверх контента меню */
				pointer-events: auto !important;
			}
			/* Крестик закрытия меню — без круга, та же анимация вращения при наведении, что в окнах контактов и о квартире */
			.ui-burger-widget.expanded .burger-btn {
				background: transparent !important;
				border: none !important;
				transition: color 0.25s ease, transform 0.25s ease;
			}
			.ui-burger-widget.expanded .burger-btn:hover,
			.ui-burger-widget.expanded .burger-top-row:hover .burger-btn {
				color: var(--hover-text);
				transform: rotate(90deg);
			}

			.burger-content {
				width: 100%;
				display: flex;
				flex-direction: column;
				flex: 1;
				opacity: 0;
				visibility: hidden;
				/* ДОБАВЛЕНО: Задержка появления контента (0.1s), чтобы он не накладывался на анимацию расширения */
				transition: opacity 0.3s ease 0.1s, visibility 0.3s ease 0.1s;
				padding: 15px 20px 20px 20px;
				overflow: hidden;
			}

			/* Список локаций с внутренним скроллом */
			.burger-gallery-wrapper {
				display: flex;
				flex-direction: column;
				min-height: 0;
				flex: 1 1 0%; /* Занимает всё доступное место */
				margin-top: 10px;
			}

			/* Показываем контент только при раскрытии; при ограниченной высоте (iPad landscape) — прокрутка */
			.ui-burger-widget.expanded .burger-content { 
				opacity: 1; 
				visibility: visible;
				pointer-events: auto;
				min-height: 0;
				overflow-y: auto;
			}

			/* Внутренние элементы меню */
			.burger-header { 
				flex-shrink: 0; /* Запрет сжатия — title/subtitle всегда видны */
				border-bottom: 1px solid var(--border-color); 
				padding-bottom: 15px; 
				margin-bottom: 20px; 
			}
			.burger-title-group span { font-size: 0.8rem; color: var(--secondary-text); }
			/* Подпись в самом низу */
			.burger-footer-logo {
				display: block;
				text-align: center;
				margin-top: 20px;
				padding-top: 15px;
				border-top: 1px solid var(--border-color);
				font-size: 0.7rem;
				color: var(--secondary-text);
				opacity: 0.6;
				text-decoration: none;
				flex-shrink: 0; /* Не дает подписи сжиматься */
			}

			.burger-footer-logo:hover { opacity: 1; color: var(--accent-color); }

			/* --- АНИМАЦИЯ ИКОНКИ БУРГЕРА --- */

			/* Базовое состояние линий (для плавного перехода) */
			.burger-btn svg line {
				transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); /* Плавная "материальная" анимация */
				transform-box: fill-box; /* Вращение вокруг собственного центра линии */
				transform-origin: center;
			}

			/* КОГДА МЕНЮ ОТКРЫТО (.expanded) */

			/* Верхняя линия: опускается в центр и поворачивается на 45 градусов */
			.ui-burger-widget.expanded .burger-btn svg .line-top {
				transform: translateY(6px) rotate(45deg);
			}

			/* Средняя линия: исчезает и немного сжимается */
			.ui-burger-widget.expanded .burger-btn svg .line-middle {
				opacity: 0;
				transform: scaleX(0); /* Схлопывается по горизонтали */
			}

			/* Нижняя линия: поднимается в центр и поворачивается на -45 градусов */
			.ui-burger-widget.expanded .burger-btn svg .line-bottom {
				transform: translateY(-6px) rotate(-45deg);
			}

			.menu-label { font-size: 0.75rem; text-transform: uppercase; color: var(--secondary-text); margin-bottom: 10px; letter-spacing: 1px; }

			/* Вертикальная галерея */
			.vertical-gallery {
				display: flex; 
				flex-direction: column; 
				flex: 1 1 0%;
				min-height: 0;
				gap: 10px; 
				overflow-y: auto; 
				padding-right: 5px;
			}
			.vertical-gallery .gallery-thumb { 
				width: 100%; 
				height: auto; /* Сбрасываем фиксированную высоту */
				aspect-ratio: 4 / 3; /* Устанавливаем пропорции 4:3 */
				flex-shrink: 0; 
			}
			/* ПК: галерея в бургер-меню — 2 столбца рядом */
			@media (min-width: 769px) {
				.vertical-gallery {
					display: grid;
					flex: 1 1 0%;
					min-height: 0;
					grid-template-columns: 1fr 1fr;
					grid-auto-rows: min-content; /* Высота строк по содержимому */
					align-items: start; /* Элементы выравниваются по верху ячейки */
					gap: 10px;
				}
				.vertical-gallery .gallery-thumb {
					min-width: 0; /* чтобы не ломать grid при длинных названиях */
					height: unset !important; /* Сбрасываем фиксированную высоту 70px */
					aspect-ratio: 4 / 3; /* Пропорции */
				}
			}

			/* При открытой карте высота бургер-меню ограничена. Освобождаем место
			 * под прокручиваемый список сцен, чтобы плитки не сжимались до полоски. */
			@media (min-width: 769px) {
				body.map-expanded .ui-burger-widget.expanded.map-expanded-gallery-many .burger-footer-logo {
					display: none;
				}
			}

			/* Стилизация скроллбара внутри меню */
			.vertical-gallery::-webkit-scrollbar { width: 4px; }
			.vertical-gallery::-webkit-scrollbar-thumb { background: var(--divider-bg); border-radius: 4px; }

			.mobile-info-section { display: none; margin-bottom: 20px; }
			.burger-nav-item {
				display: flex; align-items: center; gap: 12px; width: 100%;
				padding: 12px; background: var(--chip-bg);
				border: none; border-radius: 12px; color: var(--secondary-text); cursor: pointer;
				transition: background 0.25s ease, color 0.25s ease;
			}
			.burger-nav-item:hover {
				background: var(--chip-bg-hover);
				color: var(--secondary-text);
			}
			.burger-nav-item:active {
				background: var(--chip-bg-active);
			}


/* ПАНЕЛЬ УПРАВЛЕНИЯ: нижний бар, скрытие интерфейса («глаз»), компас */
		/* --- ПАНЕЛЬ УПРАВЛЕНИЯ (Низ центр) --- */
		.ui-controls {
			position: absolute;
			bottom: calc(30px + env(safe-area-inset-bottom, 0));
			left: 0; right: 0; margin: 0 auto;
			width: fit-content; width: -moz-fit-content;
			display: flex; align-items: center; gap: 5px;
			padding: 8px 15px;
			z-index: 3000;
			transition: left 0.5s cubic-bezier(0.4, 0, 0.2, 1), right 0.5s cubic-bezier(0.4, 0, 0.2, 1), margin 0.5s cubic-bezier(0.4, 0, 0.2, 1), bottom 0.5s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.5s ease, background 0.5s ease, border 0.5s ease, box-shadow 0.5s ease, backdrop-filter 0.5s ease, padding 0.5s ease;
		}
			.ctrl-btn {
				width: 40px; height: 40px;
				background: transparent;
				border: none; border-radius: 50%;
				color: var(--secondary-text);
				display: flex; align-items: center; justify-content: center;
				cursor: pointer;
				transition: all 0.2s ease;
			}
			.ctrl-btn:hover {
				background: var(--ctrl-hover-bg);
				color: var(--hover-text);
				transform: translateY(-2px);
			}
			.ctrl-btn:active { transform: translateY(0); }
			.ctrl-btn.active { color: var(--accent-color); }
			/* Кнопка «свернуть карту»: на ПК всегда скрыта, на мобильной показывается только при развёрнутой карте */
			.map-collapse-btn { display: none !important; }

			/* Иконка полноэкранного режима: при обычном — «развернуть», при полноэкранном — «свернуть» */
			.ctrl-btn[data-action="fullscreen"] {
				position: relative;
			}
			.ctrl-btn[data-action="fullscreen"] .fullscreen-icon {
				position: absolute;
				top: 50%;
				left: 50%;
				transform: translate(-50%, -50%);
				transition: opacity 0.3s ease;
			}
			.ctrl-btn[data-action="fullscreen"] .fullscreen-icon--enter { opacity: 1; }
			.ctrl-btn[data-action="fullscreen"] .fullscreen-icon--exit { opacity: 0; }
			.ctrl-btn[data-action="fullscreen"].active .fullscreen-icon--enter { opacity: 0; }
			.ctrl-btn[data-action="fullscreen"].active .fullscreen-icon--exit { opacity: 1; }
			.ctrl-btn[data-action="fullscreen"].active { color: var(--secondary-text); }
			.ctrl-btn[data-action="fullscreen"].active:hover { color: var(--hover-text); }

			/* Центрирование иконок в кнопках: убираем inline-зазор у SVG, фиксируем размер */
			.ctrl-btn svg,
			.burger-btn svg,
			.ui-btn-circle svg,
			.close-modal-btn svg,
			.compass-wrapper svg {
				display: block;
				flex-shrink: 0;
			}

			.ctrl-divider {
				width: 1px; height: 20px;
				background: var(--divider-bg);
				margin: 0 5px;
			}

			/* --- СКРЫТИЕ ИНТЕРФЕЙСА --- */
			.hidden-ui .ui-module { opacity: 0; pointer-events: none; transform: translateY(20px); }
			.hidden-ui .ui-controls {
				opacity: 1; pointer-events: auto; transform: none;
				background: transparent; border: none; box-shadow: none; backdrop-filter: none;
			}
			.hidden-ui .ui-controls .ctrl-btn:not([data-action="toggle-ui"]),
			.hidden-ui .ui-controls .ctrl-divider { display: none; }

			/* Иконка глаза/минус: при видимом интерфейсе — минус (горизонтальная черта), при скрытом — глаз */
			.ctrl-btn[data-action="toggle-ui"] {
				position: relative;
			}
			.ctrl-btn[data-action="toggle-ui"] .toggle-ui-icon {
				position: absolute;
				top: 50%;
				left: 50%;
				transform: translate(-50%, -50%);
				transition: opacity 0.3s ease;
			}
			.ctrl-btn[data-action="toggle-ui"] .toggle-ui-icon--minus {
				opacity: 1;
			}
			.ctrl-btn[data-action="toggle-ui"] .toggle-ui-icon--eye {
				opacity: 0;
			}
			.hidden-ui .ctrl-btn[data-action="toggle-ui"] .toggle-ui-icon--minus {
				opacity: 0;
			}
			.hidden-ui .ctrl-btn[data-action="toggle-ui"] .toggle-ui-icon--eye {
				opacity: 1;
			}

			/* Кнопка «глаз» в скрытом режиме — заметнее на фоне панорамы, прозрачность +20% */
			.hidden-ui .ui-controls .ctrl-btn[data-action="toggle-ui"] {
				background: var(--hidden-ui-btn-bg);
				backdrop-filter: blur(10px);
				-webkit-backdrop-filter: blur(10px);
				border: var(--hidden-ui-btn-border);
				box-shadow: 0 2px 12px rgba(0, 0, 0, 0.4);
				color: var(--hover-text);
			}
			.hidden-ui .ui-controls .ctrl-btn[data-action="toggle-ui"]:hover {
				background: var(--hidden-ui-btn-hover-bg);
				border-color: var(--border-strong);
				box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
			}


            /* --- КОМПАС (Обновлено) --- */
			.compass-wrapper {
				width: 40px; height: 40px;
				margin: 0 2px;
				display: flex; align-items: center; justify-content: center;
				
				opacity: 1; 
				
				/* ВАЖНО: Добавляем 'transform' в transition, чтобы движение было плавным */
				transition: opacity 0.3s ease, transform 0.3s ease; 
			}

			/* Состояние компаса при скрытом интерфейсе */
			.hidden-ui .compass-wrapper {
				opacity: 0;
				pointer-events: none;
				
				/* ДОБАВЛЯЕМ ЭТИ СТРОКИ: */
				width: 0 !important;      /* Схлопываем ширину в ноль */
				margin: 0 !important;     /* Убираем отступы */
				padding: 0 !important;    /* Убираем внутренние отступы (если были) */
				overflow: hidden;         /* Скрываем всё, что не влезает в нулевую ширину */
				
				/* Добавляем width и margin в transition, чтобы компас исчезал "сжимаясь", а кнопка плавно ехала в центр */
				transition: opacity 0.3s ease, transform 0.3s ease, width 0.3s ease, margin 0.3s ease;
			}
			
			#compass-arrow {
				transition: transform 0.1s linear;
				will-change: transform;
                filter: drop-shadow(0 1px 2px rgba(0,0,0,0.5)); /* Тень для читаемости */
			}


/* CTA: кнопки «Связаться»/инфо (верхний правый угол) */
			/* --- CTA (Верхний правый угол) --- */
			.ui-cta {
				position: absolute;
				top: calc(20px + env(safe-area-inset-top, 0)); right: calc(20px + env(safe-area-inset-right, 0));
				background: transparent;
				border: none;
				backdrop-filter: none;
				padding: 0;
				display: flex;
				gap: 10px;
			}
			.ui-cta-main {
				padding: 10px 25px;
				font-size: 0.9rem;
				box-shadow: var(--shadow-ui);
			}
			.ui-btn-circle {
				width: 45px; height: 45px;
				border-radius: 50%;
				background: var(--glass-btn-bg);
				backdrop-filter: blur(12px);
				border: 1px solid var(--border-color);
				display: flex;
				align-items: center; justify-content: center;
				color: var(--secondary-text); /* как у бургера, карты, день/ночь */
				transition: 0.3s;
                cursor: pointer;
			}
			.ui-btn-circle:hover {
				background: var(--accent-color);
				border-color: var(--accent-color);
				color: #fff;
			}

			/* Специальный стиль для главной мобильной кнопки (Синяя круглая) */
			.mobile-contact-hero {
				background-color: var(--accent-color) !important;
				border-color: var(--accent-color) !important;
				color: #fff !important;
				box-shadow: 0 0 15px var(--accent-glow); /* Базовое свечение */
				transition: transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94), box-shadow 0.3s ease;
			}

			/* Эффект при наведении (как у кнопки Связаться) */
			.mobile-contact-hero:hover {
				transform: translateY(-3px); /* Кнопка поднимается вверх на 3px */
				box-shadow: 0 10px 25px var(--accent-glow-strong); /* Тень становится глубже */
			}

			/* Эффект при нажатии (чтобы чувствовался клик) */
			.mobile-contact-hero:active {
				transform: translateY(-1px); /* Кнопка немного опускается при тапе */
				box-shadow: 0 2px 10px var(--accent-glow);
			}


/* ДЕНЬ/НОЧЬ: переключатель */
			/* --- ПЕРЕКЛЮЧАТЕЛЬ (НИЖНИЙ ПРАВЫЙ УГОЛ) --- */
			.ui-daynight {
				position: absolute;
				bottom: calc(30px + env(safe-area-inset-bottom, 0)); 
				right: calc(30px + env(safe-area-inset-right, 0));  
				top: auto; left: auto; margin: 0;
				
				/* Сбрасываем все отступы и размеры старой плашки */
				width: 50px !important; 
				height: 50px !important;
				padding: 0 !important;
				background: transparent !important;
				border: none !important;
				backdrop-filter: none !important;
				-webkit-backdrop-filter: none !important;
				
				z-index: 3000;
				display: flex;
				align-items: center;
				justify-content: center;
			}

			.ui-daynight input { display: none; }

			.icon-toggle {
			display: flex;
			align-items: center;
			justify-content: center;
			width: 50px; 
			height: 50px;
			padding: 0;
			background: var(--glass-btn-bg);
			backdrop-filter: blur(12px);
			-webkit-backdrop-filter: blur(12px);
			border: 1px solid var(--border-color);
			border-radius: 50%;
			cursor: pointer;
			transition: all 0.3s ease;
			position: relative;
			color: var(--secondary-text); /* Исходный цвет иконок */
			}

			/* НОВОЕ: Эффект при наведении (как у карты) */
			.icon-toggle:hover {
				background: var(--surface-hover); /* Светлее, чем базовый фон */
				color: var(--hover-text);
			}

			/* Центрирование набора иконок */
			.toggle-set {
				position: absolute;
				top: 50%;
				left: 50%;
				transform: translate(-50%, -50%);
				width: 24px; 
				height: 24px;
				display: flex;
				align-items: center;
				justify-content: center;
			}

			.toggle-set img {
				position: absolute;
				top: 50%;
				left: 50%;
				transform: translate(-50%, -50%);
				transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.4s ease;
				display: block;
				/* Перекраска SVG под фон темы */
				filter: var(--icon-filter);
			}

			/* Состояния анимации (translate(-50%,-50%) — центрирование в .toggle-set) */
			.icon-moon-main { opacity: 0; transform: translate(-50%, -50%) scale(0.5) rotate(-45deg); }
			.icon-sun-main { opacity: 1; transform: translate(-50%, -50%) scale(1) rotate(0deg); }

			#day-night-checkbox:checked + label .icon-sun-main { opacity: 0; transform: translate(-50%, -50%) scale(0.5) rotate(45deg); }
			#day-night-checkbox:checked + label .icon-moon-main { opacity: 1; transform: translate(-50%, -50%) scale(1) rotate(0deg); }



/* ЛИД-ФОРМА: поля заявки в модалке (оболочка .modal-box — в modals.css) */
.lead-form { display: flex; flex-direction: column; gap: 12px; margin-top: 25px; }

.lead-form input {
	width: 100%;
	padding: 14px 16px;
	border-radius: 12px;
	border: 1px solid var(--border-color);
	background: var(--chip-bg);
	color: var(--text-color);
	font-family: inherit;
	font-size: 1rem;
	outline: none;
	transition: border-color 0.25s ease, background 0.25s ease;
	box-sizing: border-box;
}
.lead-form input:focus { border-color: var(--accent-color); }
.lead-form input::placeholder { color: var(--secondary-text); }

.lead-form .hero-btn {
	width: 100%;
	padding: 14px 20px;
	font-size: 1rem;
}
.lead-form .hero-btn:disabled { opacity: 0.6; cursor: default; transform: none; }

.lead-error { display: none; color: #dc2626; font-size: 0.85rem; margin-top: 12px; }
.lead-done {
	display: none;
	color: var(--text-color);
	background: var(--chip-bg);
	border: 1px solid var(--border-color);
	border-radius: 12px;
	padding: 18px;
	margin-top: 25px;
	font-size: 0.95rem;
}
.lead-privacy { color: var(--secondary-text); font-size: 0.75rem; margin-top: 12px; line-height: 1.4; }

/* КАРТА: мини-карта, пины, зум, радар */
			/* --- ВИДЖЕТ КАРТЫ (Мини-карта) --- */
			.ui-map-widget {
				position: absolute; bottom: calc(30px + env(safe-area-inset-bottom, 0)); left: calc(30px + env(safe-area-inset-left, 0));
				width: 50px; height: 50px;
				overflow: hidden; padding: 0;
				display: flex; flex-direction: column;
				transition: all 0.4s cubic-bezier(0.25, 1, 0.5, 1);
				pointer-events: auto; z-index: 4000;
				background: var(--surface-map) !important; /* чуть светлее остального интерфейса */
				backdrop-filter: blur(12px);
				-webkit-backdrop-filter: blur(12px);
			}
			.ui-map-widget.expanded {
				width: var(--map-w, 300px);  /* Ширина — настройка map.width в конфиге */
				
				/* ВАЖНО: Подберите высоту под вашу картинку! */
				/* Формула: (300px / пропорции_картинки) + 50px (шапка) */
				/* Например, если картинка квадратная: 300 + 50 = 350px */
				/* Если картинка 3:4 (вертикальная): 400 + 50 = 450px */
				
				height: var(--map-h, 320px); /* настройка map.height в конфиге */
				
				border-radius: 20px;
				background: var(--surface-map) !important;
			}
			.map-widget-header {
				height: 50px; width: 100%;
				display: flex; align-items: center; justify-content: space-between;
				padding: 0 15px; cursor: pointer; flex-shrink: 0;
				color: var(--secondary-text);
				transition: all 0.3s ease;
			}
			.map-widget-header:hover { color: var(--hover-text); }
			/* Свёрнутая кнопка карты: заголовок скрыт только прозрачностью и продолжает
			   занимать место, из-за чего иконка уезжает из центра кружка. В свёрнутом виде
			   убираем его из раскладки и центрируем оставшиеся иконку со стрелкой. */
			.ui-map-widget:not(.expanded) .map-widget-header { height: 100%; padding: 0; justify-content: center; gap: 6px; }
			.ui-map-widget:not(.expanded) .map-widget-title { display: none; }
			.header-left { display: flex; align-items: center; gap: 12px; }
			.map-widget-title { font-size: 0.95rem; font-weight: 600; opacity: 0; transition: opacity 0.2s; white-space: nowrap; }
			.ui-map-widget.expanded .map-widget-title { opacity: 1; }
			.map-toggle-icon { transform: rotate(180deg); transition: transform 0.4s ease; }
			.ui-map-widget.expanded .map-toggle-icon { transform: rotate(0deg); }
			.ui-map-widget.expanded .map-widget-header:hover .map-toggle-icon { transform: rotate(90deg); }
			
			.map-widget-content {
				flex: 1; width: 100%; padding: 10px; padding: 15px;
				opacity: 0; transition: opacity 0.3s ease; pointer-events: none;
			}
			.ui-map-widget.expanded .map-widget-content { opacity: 1; pointer-events: auto; }
			.map-container-mini {
			position: relative;
			width: 100%;
			height: 100%;
			touch-action: none; /* зум/перетаскивание карты без прокрутки страницы */
			/* ИЗМЕНЕНИЕ: Увеличиваем радиус скругления */
			border-radius: 20px; 
			/* ВАЖНО: Это свойство обрезает острые углы картинки */
			overflow: hidden; 
			background: #ffffff; /* Белая подложка за изображением карты */
			border: 1px solid var(--border-color); 
			}
			/* Обёртка для зума и сдвига: scale + translate применяются к ней */
			.map-viewport {
				position: absolute;
				top: 0; left: 0;
				width: 100%; height: 100%;
				transform-origin: center center;
				transition: transform 0.15s ease-out;
			}
			.map-container-mini.is-dragging .map-viewport { transition: none; }
			.map-image { width: 100%; height: 100%; object-fit: contain; object-position: center; display: block; pointer-events: none; }
			/* Кнопки зума карты: снизу по центру, в общем стиле */
			.map-zoom-controls {
				position: absolute;
				bottom: 12px; left: 50%;
				transform: translateX(-50%);
				display: flex;
				align-items: center;
				gap: 8px;
				z-index: 20;
				pointer-events: none;
			}
			.map-zoom-controls .map-zoom-btn {
				pointer-events: auto;
				width: 28px; height: 28px;
				border-radius: 50%;
				border: 1px solid var(--border-color);
				background: var(--surface-map);
				backdrop-filter: blur(10px);
				-webkit-backdrop-filter: blur(10px);
				color: var(--text-color);
				cursor: pointer;
				display: flex;
				align-items: center;
				justify-content: center;
				transition: background 0.2s, border-color 0.2s, transform 0.2s;
				flex-shrink: 0;
			}
			.map-zoom-controls .map-zoom-btn:hover {
				background: var(--accent-color);
				border-color: var(--accent-color);
				color: #fff;
				transform: scale(1.05);
			}
			.map-zoom-controls .map-zoom-btn:active { transform: scale(0.98); }
			.map-zoom-controls .map-zoom-btn:disabled {
				opacity: 0.4;
				cursor: default;
				transform: none;
			}
			.map-zoom-controls .map-zoom-btn:disabled:hover { background: var(--surface-map); border-color: var(--border-color); }
			.map-zoom-controls .map-zoom-btn svg { display: block; }
			
			/* Пины на карте */
			.map-pin {
				position: absolute; width: 20px; height: 20px;
				transform: translate(-50%, -50%);
				display: flex; align-items: center; justify-content: center; /* центр пина = центр точки, радар рисуется из того же центра */
				cursor: pointer; z-index: 10;
			}
			.pin-dot {
				width: 16px; height: 16px;
				background: #fff;
				border: 3px solid var(--accent-color);
				border-radius: 50%;
				box-shadow: 0 2px 5px rgba(0,0,0,0.5);
				transition: all 0.3s ease;
			}
			.pin-label {
				position: absolute; bottom: 25px; left: 50%;
				transform: translateX(-50%) translateY(10px);
				background: var(--pin-label-bg); color: var(--pin-label-text);
				padding: 4px 8px; border-radius: 4px;
				font-size: 0.75rem; white-space: nowrap;
				opacity: 0; pointer-events: none; transition: all 0.3s ease;
			}
			.map-pin:hover .pin-label { opacity: 1; transform: translateX(-50%) translateY(0); }
			.map-pin:hover .pin-dot { background: var(--accent-color); transform: scale(1.2); }
			.map-pin.hover-scene .pin-dot { background: var(--accent-color); transform: scale(1.2); }
			.map-pin.hover-scene .pin-label { opacity: 1; transform: translateX(-50%) translateY(0); }
			.map-pin.active .pin-dot { background: var(--accent-color); box-shadow: 0 0 0 4px var(--accent-soft); }


            /* --- РАДАР (Сектор обзора) --- */
			.map-radar {
				position: absolute;
				top: 50%; left: 50%;
				width: 80px; height: 80px; /* Размер луча */
				transform: translate(-50%, -50%); /* Центрируем относительно пина */
				z-index: 0; /* Под пином */
				pointer-events: none;
				transition: transform 0.1s linear; /* Плавность вращения */
			}
			
			.radar-shape {
				width: 100%; height: 100%;
				fill: var(--radar-color, var(--accent-color));
				opacity: 0.4;
				filter: drop-shadow(0 0 5px var(--accent-glow));
			}


/* Этажи: табы над планом (модуль включается конфигом map.floors) */
.map-floor-tabs {
	display: flex;
	gap: 6px;
	padding: 0 0 10px 0;
	flex-wrap: wrap;
	position: relative;
	z-index: 5;
}
.map-floor-tab {
	padding: 7px 14px;
	border-radius: 20px;
	border: 1px solid var(--border-color);
	background: var(--chip-bg);
	color: var(--secondary-text);
	font-family: inherit;
	font-size: 0.85rem;
	font-weight: 600;
	cursor: pointer;
	transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}
.map-floor-tab:hover { color: var(--text-color); }
.map-floor-tab.active {
	background: var(--accent-color);
	border-color: var(--accent-color);
	color: #fff;
}
.map-image { transition: opacity 0.25s ease; }

/* МОДАЛЬНЫЕ ОКНА: контакты, о квартире */
            /* --- MODAL OVERLAY (Обязательная обертка) --- */
			.modal-overlay {
				position: fixed;
				top: 0; 
				left: 0;
				width: 100%; 
				height: 100%;
				background: var(--modal-backdrop); /* Затемнение фона */
				backdrop-filter: blur(5px);
				z-index: 9999; /* Поверх всего */
				
				/* Центрируем окно внутри */
				display: flex;
				align-items: center; 
				justify-content: center;
				
				/* Анимация */
				opacity: 1;
				visibility: visible;
				transition: all 0.3s ease;
				pointer-events: auto;
			}

			/* Скрытое состояние */
			.modal-overlay.hidden {
				opacity: 0;
				visibility: hidden;
				pointer-events: none;
			}

            /* --- CONTACT MODAL STYLES --- */
			.modal-box {
				background: var(--modal-box-bg); /* Полупрозрачность: фон панорамы просвечивает */
				backdrop-filter: blur(12px);
				-webkit-backdrop-filter: blur(12px);
				padding: 40px;
				width: 100%;
				max-width: 400px;
				position: relative;
				text-align: center;
				transform: scale(1);
				transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
				border-radius: 20px;
				overflow: visible;
			}
			
			/* Анимация появления */
			.hidden .modal-box {
				transform: scale(0.9);
			}

			.close-modal-btn {
				position: absolute;
				top: 12px; right: 12px;
				width: 36px; height: 36px;
				border-radius: 50%;
				background: var(--close-btn-bg);
				border: var(--close-btn-border);
				color: var(--secondary-text);
				cursor: pointer;
				display: flex;
				align-items: center;
				justify-content: center;
				transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease, transform 0.25s ease;
			}
			.close-modal-btn:hover {
				background: var(--close-btn-hover-bg);
				border-color: var(--close-btn-border-strong);
				color: var(--hover-text);
				transform: rotate(90deg);
			}
			.close-modal-btn svg {
				width: 18px; height: 18px;
			}

			.modal-title { font-size: 1.5rem; margin-bottom: 5px; color: var(--text-color); }
			.modal-subtitle { color: var(--secondary-text); margin-bottom: 30px; font-size: 0.9rem; }

			.contact-list { display: flex; flex-direction: column; gap: 15px; }

			.contact-item {
				display: flex; align-items: center; gap: 15px;
				padding: 15px;
				background: var(--chip-bg);
				border-radius: 15px;
				border: 1px solid transparent;
				transition: all 0.3s ease;
				cursor: pointer;
			}
			
			.contact-item:hover {
				background: var(--chip-bg-hover);
				border-color: var(--accent-color);
				transform: translateY(-2px);
			}

			.contact-icon {
				width: 40px; height: 40px;
				background: var(--chip-bg-active);
				border-radius: 50%;
				display: flex; align-items: center; justify-content: center;
				color: var(--text-color);
				transition: color 0.25s ease;
			}
			.contact-item:hover .contact-icon {
				color: var(--accent-color);
			}
			
			.contact-item span {
				font-weight: 600; font-size: 1rem; color: var(--text-color);
			}

            /* --- INFO MODAL STYLES --- */
			.info-box {
				max-width: 500px; /* Делаем чуть шире, чем контакты */
				text-align: left; /* Выравнивание текста влево */
			}
			@media (max-width: 768px) {
				.info-box { max-width: 400px; } /* на мобильных — как окно контактов */
				/* Боковые отступы модалок как у всего интерфейса (15px) */
				.modal-overlay {
					padding-left: 15px;
					padding-right: 15px;
					box-sizing: border-box;
				}
			}
			
			.info-description {
				color: var(--secondary-text);
				margin-bottom: 25px;
				font-size: 0.95rem;
				line-height: 1.5;
			}

			.info-table {
				width: 100%;
				border-collapse: collapse;
			}
			
			.info-table td {
				padding: 12px 0;
				border-bottom: 1px solid var(--border-color);
				font-size: 0.95rem;
				color: var(--text-color);
			}
			
			/* Убираем линию у последнего элемента */
			.info-table tr:last-child td { border-bottom: none; }
			
			/* Левая колонка (названия) */
			.info-table td:first-child {
				color: var(--secondary-text);
				width: 50%;
			}
			
			/* Правая колонка (значения) */
			.info-table td:last-child {
				text-align: right;
				font-weight: 500;
			}


/* НАВИГАЦИЯ: стрелки «назад/вперёд» по краям экрана */
.nav-arrow {
	display: none; /* показывается модулем после синхронизации со списком сцен */
	position: fixed;
	top: 50%;
	transform: translateY(-50%);
	width: 45px; height: 45px;
	border-radius: 50%;
	background: var(--glass-btn-bg);
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
	border: 1px solid var(--border-color);
	align-items: center; justify-content: center;
	color: var(--secondary-text);
	cursor: pointer;
	z-index: 3000;
	transition: 0.3s;
	padding: 0;
}

.nav-arrow--prev { left: calc(20px + env(safe-area-inset-left, 0)); }
.nav-arrow--next { right: calc(20px + env(safe-area-inset-right, 0)); }
.nav-arrow:hover:not(:disabled) {
	background: var(--accent-color);
	border-color: var(--accent-color);
	color: #fff;
}
.nav-arrow:disabled { opacity: 0.35; cursor: default; }
.nav-arrow svg { display: block; }

/* Скрытие вместе с интерфейсом */
.hidden-ui .nav-arrow { opacity: 0; pointer-events: none; }

@media (max-width: 768px) {
	.nav-arrow { width: 40px; height: 40px; }
	.nav-arrow--prev { left: calc(10px + env(safe-area-inset-left, 0)); }
	.nav-arrow--next { right: calc(10px + env(safe-area-inset-right, 0)); }
}

/* QR: картинка кода в модалке */
.qr-figure { display: flex; flex-direction: column; align-items: center; gap: 15px; margin-top: 20px; }
.qr-img {
	width: 220px; height: 220px;
	border-radius: 12px;
	background: #fff;
	padding: 10px;
	display: block;
}
.qr-caption { color: var(--secondary-text); font-size: 0.85rem; }

/* WELCOME SCREEN: начальный экран со слайдшоу */
			/* --- WELCOME SCREEN (Слайдшоу) --- */
			.welcome-overlay {
				position: absolute; top: 0; left: 0;
				width: 100%; height: 100%;
				background: var(--welcome-bg); z-index: 6000;
				display: flex; align-items: center; justify-content: center;
				transition: opacity 0.8s ease, visibility 0.8s ease;
				pointer-events: auto;
			}
			.welcome-overlay.hidden { opacity: 0; visibility: hidden; pointer-events: none; }
			/* При открытом начальном экране — кликабельна только кнопка «Начать просмотр» */
			body.welcome-open .ui-burger-widget,
			body.welcome-open .ui-burger-widget *,
			body.welcome-open .ui-daynight,
			body.welcome-open .ui-cta,
			body.welcome-open .ui-map-widget,
			body.welcome-open .ui-controls { pointer-events: none !important; }
			.welcome-slideshow {
				position: absolute; top: 0; left: 0;
				width: 100%; height: 100%; z-index: -1;
				overflow: hidden;
				background: var(--welcome-bg);
				opacity: var(--welcome-slide-opacity); filter: blur(10px);
			}
			.slide-item {
				position: absolute; top: 0; left: 0;
				width: 100%; height: 100%;
				background-size: cover; background-position: center;
				opacity: 0;
				animation: kenburns 18s linear infinite;
			}
			.slide-item:nth-child(1) { animation-delay: 0s; }
			.slide-item:nth-child(2) { animation-delay: 6s; }
			.slide-item:nth-child(3) { animation-delay: 12s; }
			
			@keyframes kenburns {
				0% { opacity: 0; transform: scale(1); }
				8% { opacity: 1; transform: scale(1.02); }
				33.33% { opacity: 1; transform: scale(1.1); }
				44% { opacity: 0; transform: scale(1.12); }
				100% { opacity: 0; transform: scale(1); }
			}
			
			.welcome-content { text-align: center; z-index: 1; animation: fadeInUp 1s ease-out; padding-left: 24px; padding-right: 24px; }
			.welcome-logo { font-weight: 800; font-size: 1.5rem; margin-bottom: 20px; letter-spacing: -1px; }
			.welcome-content h1 {
				font-size: 3rem; margin-bottom: 10px;
				background: linear-gradient(to right, var(--welcome-h1-from), var(--welcome-h1-to));
				-webkit-background-clip: text; background-clip: text;
				-webkit-text-fill-color: transparent; color: transparent;
			}
			.welcome-content p { color: var(--secondary-text); margin-bottom: 40px; font-size: 1.2rem; }
			@media (min-width: 769px) {
				.welcome-content p { max-width: 66.67%; margin-left: auto; margin-right: auto; }
			}
			@keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
			/* Подпись СканСпейс внизу начального экрана */
			.welcome-footer-logo {
				position: absolute;
				bottom: calc(24px + env(safe-area-inset-bottom, 0));
				left: 0; right: 0;
				text-align: center;
				margin-top: 0;
				padding-top: 0 !important;
				border-top: none !important;
			}


/* АДАПТИВ (сквозной): мобильная раскладка всех модулей и их связки (map-expanded и т.п.).
   Держится отдельным файлом: правила разных модулей перемешаны в общих media-блоках.
   Подключается всегда — для выключенных модулей правила просто ничего не матчат. */
			@media (max-width: 768px) {
				/* Единые отступы от краёв: сверху/снизу 15px, слева/справа 15px + safe-area */
				/* --- Кнопка звонка: над кнопкой день/ночь (тот же right 15px, снизу — над 50px день/ночь с отступом 8px) --- */
				.ui-cta {
					top: auto !important;
					bottom: calc(18px + 50px + 8px + env(safe-area-inset-bottom, 0));
					right: calc(15px + env(safe-area-inset-right, 0));
					transition: opacity 0.3s ease;
				}
				.ui-cta:not(.mobile-daynight-present) { bottom: calc(18px + 50px + 8px + env(safe-area-inset-bottom, 0)); }
				/* Лента превью занимает полосу снизу (верх на 147px) — на неё наезжал CTA.
				   Поднимаем CTA над лентой, когда модуль включён. */
				body:has(#thumbs-bar) .ui-cta { bottom: calc(155px + env(safe-area-inset-bottom, 0)); }
				.ui-cta-main { display: none !important; } 
				.mobile-only { display: flex !important; }
				#main-info-btn { display: none !important; } 
				
				/* --- 1. ЦЕНТРАЛЬНЫЙ БЛОК КНОПОК (на одной линии с картой и день/ночь: bottom 18px, элементы 50px) --- */
				.ui-controls {
					bottom: calc(18px + env(safe-area-inset-bottom, 0)); 
					width: fit-content !important; 
					width: -moz-fit-content !important;
					max-width: none;
					justify-content: center;
					align-items: center;
					padding: 0 10px;
					gap: 4px;
					/* Рамка внутрь (box-shadow), а не border: иначе панель на 2px выше
					   круглых кнопок — верх и низ не совпадают. */
					border: none;
					box-shadow: inset 0 0 0 1px var(--border-color);
					transition: left 0.4s cubic-bezier(0.25, 1, 0.5, 1), right 0.4s cubic-bezier(0.25, 1, 0.5, 1), margin 0.4s cubic-bezier(0.25, 1, 0.5, 1), bottom 0.4s cubic-bezier(0.25, 1, 0.5, 1);
				}
				/* Размеры и линия как у карты и день/ночь: 50px */
				.ui-controls .compass-wrapper {
					width: 50px !important; height: 50px !important;
					max-width: 50px;
					display: flex; align-items: center; justify-content: center;
				}
				.ui-controls .ctrl-divider {
					height: 24px;
					max-width: 16px;
				}
				.ui-controls .ctrl-btn {
					width: 50px !important; height: 50px !important;
					max-width: 50px;
				}
				/* Элементы бара: сжатие блока плавное (max-width), opacity для появления при закрытии карты */
				.ui-controls .compass-wrapper,
				.ui-controls .ctrl-divider,
				.ui-controls .ctrl-btn {
					transition: opacity 0.3s ease, max-width 0.5s cubic-bezier(0.4, 0, 0.2, 1), padding 0.5s cubic-bezier(0.4, 0, 0.2, 1), margin 0.5s cubic-bezier(0.4, 0, 0.2, 1);
				}
				/* Кнопка «свернуть карту» на мобильной: в потоке, но свёрнута, чтобы анимировать появление */
				.ui-controls .map-collapse-btn {
					display: flex !important;
					opacity: 0;
					max-width: 0;
					min-width: 0;
					overflow: hidden;
					padding: 0;
					margin: 0;
					pointer-events: none;
					transition: opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1), max-width 0.5s cubic-bezier(0.4, 0, 0.2, 1), min-width 0.5s cubic-bezier(0.4, 0, 0.2, 1);
				}

				/* --- 2. ВИДЖЕТ КАРТЫ --- */
				/* bottom: 18px — выравнивание по центру с блоком кнопок (блок и карта по 50px) */
				.ui-map-widget { 
					bottom: calc(18px + env(safe-area-inset-bottom, 0)); 
					left: calc(15px + env(safe-area-inset-left, 0)); 
					transform-origin: bottom left;
				}
				/* То же соотношение сторон, что на ПК (10:9): ширина 260px → высота контента 234px, + шапка 50px = 284px; изображение не обрезается (object-fit: contain в .map-image) */
				.ui-map-widget.expanded { 
					width: var(--map-mw, 260px); height: var(--map-mh, 284px); 
				}

				/* --- 3. ДЕНЬ/НОЧЬ --- */
				.ui-daynight { 
					top: auto !important; 
					bottom: calc(18px + env(safe-area-inset-bottom, 0)); 
					right: calc(15px + env(safe-area-inset-right, 0)); 
					padding: 0 !important; 
					width: 50px !important;
					height: 50px !important;
					background: transparent !important;
					transition: opacity 0.3s ease;
				}

				/* Круглые иконки одинакового размера: бургер, телефон, карта, день/ночь = 50px */
				.ui-btn-circle { width: 50px !important; height: 50px !important; }
				
				.welcome-content h1 { font-size: 2rem; }
				.welcome-content { padding-left: 20px; padding-right: 20px; }
			}

			/* --- МОБИЛЬНАЯ ВЕРСИЯ (Full Height Sidebar) --- */
			@media (max-width: 768px) {
				.ui-burger-widget { top: calc(15px + env(safe-area-inset-top, 0)); left: calc(15px + env(safe-area-inset-left, 0)); } /* единый отступ от краёв как у хедера и CTA */
				.ui-burger-widget.expanded {
					width: 260px;
					/* 2) Свёрнутая карта: 100% = высота оверлея (body); в неполноэкранном режиме body задаётся скриптом по window.innerHeight, 100vh там не совпадает */
					height: calc(100% - 15px - 18px - 50px - 30px) !important;
					max-height: calc(100% - 113px) !important;
					border-radius: 0 24px 24px 0;
					/* Плавное раскрытие/скрытие: width и border-radius в transition */
					transition: width 0.4s cubic-bezier(0.25, 1, 0.5, 1), height 0.4s cubic-bezier(0.25, 1, 0.5, 1), max-height 0.4s cubic-bezier(0.25, 1, 0.5, 1), border-radius 0.4s cubic-bezier(0.25, 1, 0.5, 1);
				}
				/* 1) Развёрнутая карта: ограничить высоту картой (то же — 100% от оверлея) */
				body.map-expanded .ui-burger-widget.expanded {
					height: calc(100% - 15px - var(--map-mh, 284px) - 18px - 30px) !important;
					max-height: calc(100% - 15px - var(--map-mh, 284px) - 18px - 30px) !important;
				}
				/* Плавное скрытие: задаём transition и явный max-height для анимации (только в раскрытом меню) */
				.ui-burger-widget.expanded .burger-header,
				.ui-burger-widget.expanded .burger-footer-logo,
				.ui-burger-widget.expanded .mobile-info-section {
					transition: opacity 0.3s ease, max-height 0.3s ease, padding 0.3s ease, margin 0.3s ease, border-width 0.3s ease;
				}
				.ui-burger-widget.expanded .burger-header { max-height: 140px; }
				.ui-burger-widget.expanded .burger-footer-logo { max-height: 70px; }
				.ui-burger-widget.expanded .mobile-info-section { max-height: 70px; }
				/* Когда меню и карта открыты: плавно скрываем — больше высоты галерее */
				body.map-expanded .ui-burger-widget.expanded .burger-header {
					opacity: 0;
					max-height: 0 !important;
					overflow: hidden;
					padding-top: 0; padding-bottom: 0;
					margin-top: 0; margin-bottom: 0 !important;
					border-width: 0;
					pointer-events: none;
				}
				body.map-expanded .ui-burger-widget.expanded .mobile-info-section {
					opacity: 0;
					max-height: 0 !important;
					overflow: hidden;
					padding: 0;
					margin: 0 !important;
					pointer-events: none;
				}
				body.map-expanded .ui-burger-widget.expanded.map-expanded-gallery-many .burger-footer-logo {
					opacity: 0;
					max-height: 0 !important;
					overflow: hidden;
					padding: 0;
					margin: 0 !important;
					pointer-events: none;
					border-width: 0;
				}
				/* Когда меню и карта открыты: «Локации» переносим в ряд справа от крестика */
				body.map-expanded .ui-burger-widget.expanded .burger-content {
					position: relative;
				}
				body.map-expanded .ui-burger-widget.expanded .burger-gallery-wrapper .menu-label {
					position: absolute;
					top: 0;
					left: 20px;
					margin: 0;
					opacity: 1;
					max-height: none;
					overflow: visible;
					pointer-events: auto;
					transition: opacity 0.3s ease, top 0.3s ease, left 0.3s ease;
				}
				body.map-expanded .ui-burger-widget.expanded .burger-gallery-wrapper {
					padding-top: 24px; /* label ~14px + 10px gap = как на ПК (menu-label margin-bottom: 10px) */
				}
			/* Когда карта открыта: бар сворачивается в одну круглую кнопку — тот же отступ справа, что у кнопки с телефоном (15px) */
			body.map-expanded .ui-controls {
				opacity: 1 !important;
				pointer-events: auto !important;
				bottom: calc(18px + env(safe-area-inset-bottom, 0));
				right: calc(15px + env(safe-area-inset-right, 0));
				left: auto;
				margin: 0;
				padding: 0;
				gap: 0; /* Убираем gap, чтобы скрытые элементы не добавляли отступы */
				background: transparent !important;
				border: none !important;
				box-shadow: none !important;
				backdrop-filter: none !important;
				-webkit-backdrop-filter: none !important;
			}
				/* Элементы бара схлопываются; иконки скрываются мгновенно (без «улёта» вправо) */
				body.map-expanded .ui-controls .compass-wrapper,
				body.map-expanded .ui-controls .ctrl-divider,
				body.map-expanded .ui-controls .ctrl-btn:not(.map-collapse-btn) {
					opacity: 0;
					max-width: 0 !important;
					min-width: 0 !important;
					overflow: hidden;
					padding: 0;
					margin: 0;
					pointer-events: none;
					transition: opacity 0.03s ease-out, max-width 0.5s cubic-bezier(0.4, 0, 0.2, 1), padding 0.5s cubic-bezier(0.4, 0, 0.2, 1), margin 0.5s cubic-bezier(0.4, 0, 0.2, 1);
				}
				body.map-expanded .ui-controls .compass-wrapper svg,
				body.map-expanded .ui-controls .ctrl-btn:not(.map-collapse-btn) svg {
					opacity: 0 !important;
					transition: none !important;
				}
			/* Кнопка «свернуть» — такой же круглый стиль, как день/ночь и остальные круглые кнопки, без овала */
			body.map-expanded .ui-controls .map-collapse-btn {
				opacity: 1;
				order: 999; /* Кнопка визуально становится последней (справа) в flex-контейнере */
				width: 50px !important;
				height: 50px !important;
				min-width: 50px !important;
				max-width: 50px !important;
				border-radius: 50% !important;
				flex-shrink: 0;
				padding: 0;
				margin: 0;
				pointer-events: auto;
				background: var(--glass-btn-bg) !important;
				backdrop-filter: blur(12px);
				-webkit-backdrop-filter: blur(12px);
				border: 1px solid var(--border-color) !important;
				color: var(--secondary-text);
				box-shadow: var(--shadow-ui);
				transition: opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1), background 0.3s ease, border-color 0.3s ease, color 0.3s ease;
			}
				body.map-expanded .ui-controls .map-collapse-btn:hover {
					background: var(--surface-hover) !important;
					border-color: var(--border-strong) !important;
					color: var(--hover-text);
				}
				/* День/ночь и кнопка звонка при открытой карте плавно скрываются */
				body.map-expanded .ui-daynight,
				body.map-expanded .ui-cta {
					opacity: 0;
					pointer-events: none;
					transition: opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1);
				}
				.mobile-info-section { display: block; } /* Показываем инфо в меню */
				#main-info-btn { display: none; } /* Скрываем кнопку инфо на главной */
			}


/* =====================================================================
 * МОДУЛИ ОФОРМЛЕНИЯ (PLAN_TOUR_UI_MODULES): брендинг, кастомные CTA,
 * лента превью, счётчик сцен, прелоадер, плавающие панели, селектор
 * этажей, история навигации, подсказка первого запуска, лайтбокс.
 * ===================================================================== */

/* --- Брендинг --- */
.skin-branding-img { max-height: 56px; max-width: 180px; display: block; }
.skin-branding-link { display: inline-block; }
.skin-branding-corner {
	position: absolute;
	z-index: 20;
	pointer-events: auto;
	opacity: 0.95;
}
.skin-branding-corner--tl { top: 16px; left: 16px; }
.skin-branding-corner--tr { top: 16px; right: 16px; }
.skin-branding-corner--bl { bottom: 16px; left: 16px; }
.skin-branding-corner--br { bottom: 16px; right: 16px; }
.skin-branding-corner .skin-branding-img { max-height: 44px; filter: drop-shadow(0 2px 6px rgba(0,0,0,0.35)); }
.skin-branding-burger-footer { margin-top: auto; padding-top: 10px; }

/* --- Кастомные CTA --- */
.custom-cta-btn { position: relative; }
.custom-cta-btn--text { width: auto; min-width: 42px; padding: 0 14px; border-radius: 21px; font-size: 13px; font-weight: 600; }
.custom-cta-icon { width: 20px; height: 20px; object-fit: contain; }

/* --- Лента превью (thumbsBar) --- */
.thumbs-bar {
	position: absolute;
	left: 50%;
	transform: translateX(-50%);
	z-index: 15;
	max-width: min(70vw, 760px);
	pointer-events: auto;
}
.thumbs-bar--bottom { bottom: 84px; }
.thumbs-bar--top { top: 84px; }
.thumbs-bar-track {
	display: flex;
	gap: 8px;
	overflow-x: auto;
	scrollbar-width: none;
	padding: 8px;
	background: var(--glass-btn-bg);
	border: 1px solid var(--border-color);
	border-radius: 14px;
	backdrop-filter: blur(10px);
}
.thumbs-bar-track::-webkit-scrollbar { display: none; }
.thumbs-bar-item {
	flex: 0 0 auto;
	width: var(--thumbs-size, 72px);
	height: calc(var(--thumbs-size, 72px) * 0.62);
	border: 2px solid transparent;
	border-radius: 8px;
	overflow: hidden;
	padding: 0;
	cursor: pointer;
	background: var(--chip-bg);
	transition: border-color 0.15s, transform 0.15s;
}
.thumbs-bar-item img { width: 100%; height: 100%; object-fit: cover; display: block; }
.thumbs-bar-item:hover { border-color: var(--thumb-hover-border); transform: translateY(-2px); }
.thumbs-bar-item.hover-scene { border-color: var(--thumb-hover-border); transform: translateY(-2px); }
.thumbs-bar-item.active { border-color: var(--accent-color); }
.thumbs-bar--hover { opacity: 0; transition: opacity 0.25s; }
.thumbs-bar--hover:hover, .thumbs-bar--hover:focus-within { opacity: 1; }

/* --- Счётчик сцен --- */
.scene-counter {
	position: absolute;
	z-index: 14;
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 6px 12px;
	background: var(--glass-btn-bg);
	border: 1px solid var(--border-color);
	border-radius: 12px;
	backdrop-filter: blur(10px);
	font-size: 12px;
	color: var(--secondary-text);
	pointer-events: none;
}
.scene-counter--bottom { bottom: 24px; left: 24px; }
.scene-counter--top { top: 24px; left: 24px; }
.scene-counter-progress {
	width: 64px; height: 3px;
	background: var(--ctrl-hover-bg);
	border-radius: 2px;
	overflow: hidden;
}
.scene-counter-progress-fill { height: 100%; width: 0; background: var(--accent-color); border-radius: 2px; transition: width 0.3s; }

/* --- Прелоадер --- */
.tour-preloader {
	position: fixed;
	inset: 0;
	z-index: 9000;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 18px;
	transition: opacity 0.4s;
}
.tour-preloader.hidden { opacity: 0; pointer-events: none; }
.tour-preloader-logo { max-height: 72px; max-width: 220px; object-fit: contain; }
.tour-preloader-spinner {
	width: 44px; height: 44px;
	border: 3px solid rgba(255,255,255,0.2);
	border-top-color: var(--accent-color);
	border-radius: 50%;
	animation: tour-preloader-spin 0.9s linear infinite;
}
@keyframes tour-preloader-spin { to { transform: rotate(360deg); } }
.tour-preloader-bar { width: 180px; height: 3px; background: rgba(255,255,255,0.15); border-radius: 2px; overflow: hidden; }
.tour-preloader-bar-fill {
	height: 100%; width: 40%;
	background: var(--accent-color);
	border-radius: 2px;
	animation: tour-preloader-slide 1.2s ease-in-out infinite;
}
@keyframes tour-preloader-slide { 0% { transform: translateX(-100%); } 100% { transform: translateX(280%); } }

/* --- Плавающие панели --- */
.float-panel {
	position: absolute;
	z-index: 16;
	max-width: 300px;
	pointer-events: auto;
}
.float-panel--tl { top: 16px; left: 16px; }
.float-panel--tr { top: 16px; right: 16px; }
.float-panel--bl { bottom: 16px; left: 16px; }
.float-panel--br { bottom: 16px; right: 16px; }
.float-panel.panel-hidden { display: none; }
.float-panel-body {
	background: var(--modal-box-bg);
	border: 1px solid var(--border-color);
	border-radius: 14px;
	padding: 14px 16px;
	backdrop-filter: blur(12px);
	box-shadow: var(--shadow-ui);
	max-height: 50vh;
	overflow-y: auto;
}
.float-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 6px; }
.float-panel-title { font-weight: 600; font-size: 14px; }
.float-panel-text { font-size: 13px; line-height: 1.5; color: var(--secondary-text); white-space: pre-line; }
.float-panel-collapse {
	border: none; background: none; cursor: pointer;
	color: var(--secondary-text); padding: 2px; border-radius: 4px;
}
.float-panel-collapse:hover { background: var(--ctrl-hover-bg); color: var(--hover-text); }
.float-panel-expand {
	position: absolute;
	top: 0; left: 0;
	width: 40px; height: 40px;
	border-radius: 50%;
	border: 1px solid var(--border-color);
	background: var(--glass-btn-bg);
	color: var(--text-color);
	cursor: pointer;
	display: flex; align-items: center; justify-content: center;
	backdrop-filter: blur(10px);
}
.float-panel-images { display: grid; grid-template-columns: repeat(2, 1fr); gap: 6px; margin-top: 8px; }
.float-panel-images .gallery-item, .custom-cta-images .gallery-item {
	width: 100%; height: 70px; object-fit: cover;
	border-radius: 8px; cursor: zoom-in;
}
.custom-cta-images { display: grid; grid-template-columns: repeat(2, 1fr); gap: 6px; margin-top: 10px; }

/* --- Селектор этажей --- */
.floor-selector {
	position: absolute;
	top: 16px;
	left: 50%;
	transform: translateX(-50%);
	z-index: 15;
	display: flex;
	gap: 6px;
	pointer-events: auto;
}
.floor-selector-btn {
	padding: 6px 14px;
	border-radius: 16px;
	border: 1px solid var(--border-color);
	background: var(--glass-btn-bg);
	color: var(--secondary-text);
	font-size: 12px;
	cursor: pointer;
	backdrop-filter: blur(10px);
}
.floor-selector-btn.active { color: var(--hover-text); border-color: var(--accent-color); background: var(--accent-soft); }

/* --- История навигации --- */
.nav-history-btn.disabled { opacity: 0.35; pointer-events: none; }

/* --- Подсказка первого запуска --- */
.first-run-hint {
	position: fixed;
	inset: 0;
	z-index: 900;
	display: flex;
	align-items: flex-end;
	justify-content: center;
	padding: 24px;
	background: rgba(0,0,0,0.25);
	transition: opacity 0.3s;
	pointer-events: auto;
}
.first-run-hint.hidden { opacity: 0; pointer-events: none; }
.first-run-hint-box {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px;
	max-width: 420px;
	padding: 20px 24px;
	border-radius: 16px;
	background: var(--modal-box-bg);
	border: 1px solid var(--border-color);
	backdrop-filter: blur(12px);
	box-shadow: var(--shadow-ui);
	text-align: center;
}
.first-run-hint-box p { margin: 0; font-size: 13px; line-height: 1.5; color: var(--secondary-text); }
.first-run-hint-icons { display: flex; gap: 16px; color: var(--accent-color); }

/* --- Лайтбокс галереи --- */
.gallery-lightbox {
	position: fixed;
	inset: 0;
	z-index: 1100;
	background: var(--modal-backdrop, rgba(0,0,0,0.85));
	display: flex;
	align-items: center;
	justify-content: center;
	transition: opacity 0.25s;
}
.gallery-lightbox.hidden { opacity: 0; pointer-events: none; }
.gallery-lightbox-stage { max-width: 90vw; max-height: 90vh; }
.gallery-lightbox-img { max-width: 90vw; max-height: 90vh; object-fit: contain; border-radius: 6px; }
.gallery-lightbox-close {
	position: absolute; top: 16px; right: 16px;
	width: 40px; height: 40px; border-radius: 50%;
	border: 1px solid var(--border-color);
	background: var(--glass-btn-bg); color: var(--text-color);
	cursor: pointer; display: flex; align-items: center; justify-content: center;
}
.gallery-lightbox-nav {
	position: absolute; top: 50%; transform: translateY(-50%);
	width: 48px; height: 48px; border-radius: 50%;
	border: 1px solid var(--border-color);
	background: var(--glass-btn-bg); color: var(--text-color);
	cursor: pointer; display: flex; align-items: center; justify-content: center;
}
.gallery-lightbox-nav--prev { left: 16px; }
.gallery-lightbox-nav--next { right: 16px; }
.gallery-lightbox-nav:hover, .gallery-lightbox-close:hover { background: var(--surface-hover); }
.gallery-lightbox-counter {
	position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%);
	color: var(--secondary-text); font-size: 13px;
	background: var(--glass-btn-bg);
	padding: 4px 12px; border-radius: 12px;
}

/* --- Share inline (кнопки «поделиться» на экране) --- */
.share-inline {
	position: absolute;
	top: 84px;
	right: 20px;
	z-index: 15;
	display: flex;
	flex-direction: column;
	gap: 6px;
	pointer-events: auto;
}
.share-inline-btn {
	padding: 5px 12px;
	border-radius: 14px;
	border: 1px solid var(--border-color);
	background: var(--glass-btn-bg);
	color: var(--secondary-text);
	font-size: 11px;
	text-decoration: none;
	text-align: center;
	backdrop-filter: blur(10px);
}
.share-inline-btn:hover { color: var(--hover-text); background: var(--surface-hover); }

/* --- Видео-хотспот: плеер --- */
.video-hotspot-overlay {
	position: fixed;
	inset: 0;
	z-index: 1050;
	background: var(--modal-backdrop, rgba(0,0,0,0.8));
	display: flex;
	align-items: center;
	justify-content: center;
	transition: opacity 0.3s;
}
.video-hotspot-overlay.hidden { opacity: 0; pointer-events: none; }
.video-hotspot-box {
	position: relative;
	max-width: 92vw;
	background: var(--modal-box-bg);
	border: 1px solid var(--border-color);
	border-radius: 14px;
	padding: 14px;
	box-shadow: var(--shadow-ui);
}
.video-hotspot-box .close-modal-btn { position: absolute; top: -14px; right: -14px; }
.video-hotspot-frame-wrap { position: relative; width: 100%; aspect-ratio: 16 / 9; border-radius: 8px; overflow: hidden; background: #000; }
.video-hotspot-frame-wrap iframe,
.video-hotspot-frame-wrap video {
	position: absolute; inset: 0;
	width: 100%; height: 100%;
	border: 0; display: block;
}
.video-hotspot-error { color: var(--secondary-text); font-size: 13px; margin: 8px 4px; }

/* --- Веб-хотспот: страница/PDF в модалке --- */
.webdoc-overlay {
	position: fixed;
	inset: 0;
	z-index: 1050;
	background: var(--modal-backdrop, rgba(0,0,0,0.8));
	display: flex;
	align-items: center;
	justify-content: center;
	transition: opacity 0.3s;
}
.webdoc-overlay.hidden { opacity: 0; pointer-events: none; }
.webdoc-box {
	position: relative;
	max-width: 96vw;
	background: var(--modal-box-bg);
	border: 1px solid var(--border-color);
	border-radius: 14px;
	padding: 12px;
	box-shadow: var(--shadow-ui);
	display: flex;
	flex-direction: column;
	gap: 8px;
}
.webdoc-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 32px; }
.webdoc-title {
	color: var(--text-color);
	font-size: 15px;
	font-weight: 600;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.webdoc-header-actions { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.webdoc-newtab {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 5px 12px;
	border-radius: 14px;
	border: 1px solid var(--border-color);
	background: var(--glass-btn-bg);
	color: var(--secondary-text);
	font-size: 12px;
	text-decoration: none;
	white-space: nowrap;
}
.webdoc-newtab:hover { color: var(--hover-text); background: var(--surface-hover); }
.webdoc-box .close-modal-btn { position: static; }
.webdoc-hint { color: var(--secondary-text); font-size: 12px; line-height: 1.4; }
.webdoc-frame-wrap {
	position: relative;
	width: 100%;
	height: min(78vh, 900px);
	border-radius: 8px;
	overflow: hidden;
	background: #fff;
}
.webdoc-frame-wrap iframe {
	position: absolute; inset: 0;
	width: 100%; height: 100%;
	border: 0; display: block;
}

/* МОДУЛЬ: planGroups — группы-помещения на плане.
 * Единый источник стилей: build.py/publish.py подключают файл напрямую,
 * runtime-скины редактора получают его аппендом через sync-скрипт.
 * SVG-слой полигонов, подсветка активной группы, чип с информацией. */

/* --- Слой полигонов в #map-viewport (координаты path — проценты viewBox) --- */
.plan-groups-svg {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	pointer-events: none;
	overflow: visible;
}
	.plan-groups-svg path.plan-group {
		pointer-events: auto;
		cursor: pointer;
		fill: var(--pg-fill, rgba(125, 165, 255, 0.10));
		stroke: var(--pg-stroke, rgba(125, 165, 255, 0.8));
		/* Толщина в единицах viewBox (0 0 100 100) — корректна и для не-равных аспектов */
		stroke-width: 0.15;
		stroke-linejoin: round;
		transition: fill 0.25s ease, stroke 0.25s ease, stroke-width 0.25s ease;
	}
	.plan-groups-svg path.plan-group:hover {
		fill: var(--pg-fill-strong, rgba(125, 165, 255, 0.22));
		stroke-width: 0.25;
	}
	/* Активная группа: обводка цветом группы + мягкая заливка + пульс */
	.plan-groups-svg path.plan-group.active {
		fill: var(--pg-fill-strong, rgba(125, 165, 255, 0.22));
		stroke-width: 0.35;
		animation: planGroupPulse 2s ease-in-out infinite;
	}
@keyframes planGroupPulse {
	0%, 100% { fill-opacity: 1; stroke-opacity: 1; }
	50% { fill-opacity: 0.55; stroke-opacity: 0.6; }
}
	/* Подпись имени группы в центроиде bbox (не перехватывает события мыши) */
	.plan-groups-svg text.plan-group-name {
		pointer-events: none;
		font-size: 2.8px;
		font-weight: 600;
		fill: #ffffff;
		paint-order: stroke fill;
		stroke: rgba(0, 0, 0, 0.45);
		stroke-width: 0.18px;
		stroke-linejoin: round;
	}

/* --- Инфоплашка группы: чип в безопасной зоне (слева снизу, над свёрнутой картой) --- */
.plan-group-chip {
	position: fixed;
	left: calc(14px + env(safe-area-inset-left, 0px));
	bottom: calc(88px + env(safe-area-inset-bottom, 0px));
	z-index: 60;
	max-width: min(320px, calc(100vw - 28px));
	background: var(--surface, rgba(0, 0, 0, 0.7));
	-webkit-backdrop-filter: blur(12px);
	backdrop-filter: blur(12px);
	border: 1px solid var(--pg-stroke, var(--accent-color, transparent));
	border-radius: 14px;
	color: var(--text-color, #ffffff);
	font-size: 13px;
	line-height: 1.35;
	padding: 8px 12px;
	cursor: pointer;
	user-select: none;
	box-shadow: var(--shadow-ui, 0 8px 24px rgba(0, 0, 0, 0.25));
	transition: border-color 0.25s ease, bottom 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}
.plan-group-chip[hidden] { display: none; }
	.plan-group-chip-head { display: flex; align-items: baseline; gap: 8px; }
	.plan-group-chip-name { font-weight: 600; }
	.plan-group-chip-area { color: var(--secondary-text, rgba(255, 255, 255, 0.65)); white-space: nowrap; }
	.plan-group-chip-area[hidden] { display: none; }
	/* Раскрытие по клику: описание + произвольные data-поля группы */
	.plan-group-chip-details { display: none; margin-top: 6px; }
	.plan-group-chip.expanded .plan-group-chip-details { display: block; }
	.plan-group-chip-description { margin: 0; }
	.plan-group-chip-description[hidden] { display: none; }
	.plan-group-chip-data[hidden] { display: none; }
	.plan-group-chip-caption {
		color: var(--secondary-text, rgba(255, 255, 255, 0.65));
		font-size: 11px;
		text-transform: uppercase;
		letter-spacing: 0.04em;
		margin-bottom: 4px;
	}
	.plan-group-chip-row { display: flex; justify-content: space-between; gap: 12px; }
	.plan-group-chip-key { color: var(--secondary-text, rgba(255, 255, 255, 0.65)); }
	.plan-group-chip-value { text-align: right; }
.plan-group-chip-empty { color: var(--secondary-text, rgba(255, 255, 255, 0.65)); }

/* Развёрнутая карта — поднимаем чип над ней, чтобы не перекрывала план.
   При типовых раскладках чип не задевает компас/панель управления (низ центр) и
   кнопку день/ночь (право): чип слева. */
body.map-expanded .plan-group-chip {
	bottom: calc(env(safe-area-inset-bottom, 0px) + var(--map-h, 320px) + 78px);
}
@media (max-width: 768px) {
	body.map-expanded .plan-group-chip {
		bottom: calc(env(safe-area-inset-bottom, 0px) + var(--map-mh, 284px) + 66px);
	}
}

/* --- Индикация на свёрнутой карте: лёгкая вспышка шапки при смене группы --- */
#map-widget.group-changed .map-widget-header {
	animation: mapWidgetGroupFlash 1.4s ease;
}
@keyframes mapWidgetGroupFlash {
	0%, 25% { background: var(--pg-fill-strong, var(--accent-soft, rgba(125, 165, 255, 0.25))); }
	100% { background: transparent; }
}

/* МОДУЛЬ: model3d — 3D-витрина модели плана (режим «План», фаза 3).
 * Единый источник стилей: build.py/publish.py подключают файл напрямую,
 * runtime-скины редактора получают его аппендом через sync-скрипт.
 * Канвас three.js поверх #map-viewport, мини-тулбар режимов камеры,
 * статус загрузки; 2D-слой (картинка плана, пины, SVG групп) в 3D скрыт. */

/* --- 3D активен: 2D-содержимое viewport скрыто (витрина ЗАМЕНЯЕТ план) --- */
.map-viewport.model3d-active .map-image,
.map-viewport.model3d-active .map-pin,
.map-viewport.model3d-active .plan-groups-svg { display: none; }
/* 2D-кнопки зума в 3D не нужны: зум — колесом/щипком на канвасе */
.map-container-mini.model3d-on .map-zoom-controls { display: none; }

/* --- Канвас three.js: во весь viewport, виден только в активном 3D-режиме --- */
.map-model3d-canvas {
	display: none;
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	touch-action: none;
	cursor: grab;
	outline: none;
}
.map-model3d-canvas:active { cursor: grabbing; }
.map-viewport.model3d-active .map-model3d-canvas { display: block; }

/* --- Статус загрузки модели (чип по центру viewport) --- */
.map-model3d-status {
	display: none;
	position: absolute;
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
	z-index: 4;
	padding: 6px 12px;
	border-radius: 10px;
	background: var(--surface, rgba(0, 0, 0, 0.7));
	color: var(--text-color, #fff);
	font-size: 12px;
	line-height: 1.3;
	pointer-events: none;
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
}
.map-viewport.model3d-loading .map-model3d-status { display: block; }

/* --- Мини-тулбар: режимы камеры + переключение «2D-план / 3D-модель» --- */
.map-model3d-toolbar {
	display: none;
	position: absolute;
	top: 8px;
	right: 8px;
	z-index: 5;
	flex-wrap: wrap;
	justify-content: flex-end;
	gap: 4px;
	max-width: calc(100% - 16px);
}
.map-viewport.model3d-active .map-model3d-toolbar { display: flex; }
	.map-model3d-btn {
		appearance: none;
		border: 1px solid rgba(255, 255, 255, 0.14);
		border-radius: 8px;
		padding: 3px 8px;
		font: inherit;
		font-size: 11px;
		line-height: 1.2;
		background: var(--surface, rgba(0, 0, 0, 0.7));
		color: var(--text-color, #fff);
		cursor: pointer;
		-webkit-backdrop-filter: blur(8px);
		backdrop-filter: blur(8px);
		transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
	}
	.map-model3d-btn:hover { background: var(--surface-hover, rgba(40, 40, 40, 0.9)); }
	.map-model3d-btn.active {
		background: var(--accent-color, #3b82f6);
		border-color: var(--accent-color, #3b82f6);
		color: #fff;
	}

/* --- Индикация 3D-режима на виджете карты: класс .model3d-on ставится на
 * #map-widget и #map-container-mini, пока активна 3D-витрина (крючок для
 * внешних стилей; сам по себе виджет не меняет) --- */
#map-widget.model3d-on { --model3d-on: 1; }

/* МОДУЛЬ: webdocs — веб-хотспот: страница/PDF в модалке (план WEB_PDF_HOTSPOTS).
 * Общий CSS модуля: аппендится sync-скриптом редактора поверх базовых и pack-скинов. */

/* --- Веб-хотспот: страница/PDF в модалке --- */
.webdoc-overlay {
	position: fixed;
	inset: 0;
	z-index: 1050;
	background: var(--modal-backdrop, rgba(0,0,0,0.8));
	display: flex;
	align-items: center;
	justify-content: center;
	transition: opacity 0.3s;
}
.webdoc-overlay.hidden { opacity: 0; pointer-events: none; }
.webdoc-box {
	position: relative;
	max-width: 96vw;
	background: var(--modal-box-bg);
	border: 1px solid var(--border-color);
	border-radius: 14px;
	padding: 12px;
	box-shadow: var(--shadow-ui);
	display: flex;
	flex-direction: column;
	gap: 8px;
}
.webdoc-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 32px; }
.webdoc-title {
	color: var(--text-color);
	font-size: 15px;
	font-weight: 600;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.webdoc-header-actions { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.webdoc-newtab {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 5px 12px;
	border-radius: 14px;
	border: 1px solid var(--border-color);
	background: var(--glass-btn-bg);
	color: var(--secondary-text);
	font-size: 12px;
	text-decoration: none;
	white-space: nowrap;
}
.webdoc-newtab:hover { color: var(--hover-text); background: var(--surface-hover); }
.webdoc-box .close-modal-btn { position: static; }
.webdoc-hint { color: var(--secondary-text); font-size: 12px; line-height: 1.4; }
.webdoc-frame-wrap {
	position: relative;
	width: 100%;
	height: min(78vh, 900px);
	border-radius: 8px;
	overflow: hidden;
	background: #fff;
}
.webdoc-frame-wrap iframe {
	position: absolute; inset: 0;
	width: 100%; height: 100%;
	border: 0; display: block;
}

/* МАРШРУТ ПЕРЕХОДА МЕЖДУ ПИНАМИ
   SVG лежит в том же viewport, что и карта, поэтому линия синхронно
   масштабируется и перемещается вместе с планом. */
.map-route-transition {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	overflow: visible;
	pointer-events: none;
	z-index: 2;
}

.map-route-path,
.map-route-glow,
.map-route-reveal {
	fill: none;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.map-route-path {
	stroke: currentColor;
	stroke-width: 2.5;
	stroke-dasharray: 3 8;
	opacity: 0.95;
}

.map-route-glow {
	stroke: currentColor;
	stroke-width: 9;
	stroke-dasharray: 3 8;
	opacity: 0.2;
	filter: blur(3px);
}

.map-route-reveal {
	stroke: #fff;
	stroke-width: 16;
}

.map-route-head {
	fill: currentColor;
	stroke: #fff;
	stroke-width: 2;
	filter: drop-shadow(0 0 4px currentColor);
}

.map-route-source {
	fill: currentColor;
	opacity: 0.9;
}

.map-route-arrival {
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
}

.map-radar-transition-exit {
	z-index: 1;
	pointer-events: none;
	transform-origin: center center;
}

/* Высота меню под фактическое число сцен во всех темах. */
@media (min-width: 769px) {
  body:not(.map-expanded) .ui-burger-widget.expanded {
    height: min(var(--burger-adaptive-height, 730px), 730px, calc(100vh - 100px)) !important;
    max-height: min(730px, calc(100vh - 100px)) !important;
  }
}
@media (min-width: 769px) and (max-height: 900px) {
  body:not(.map-expanded) .ui-burger-widget.expanded {
    height: min(var(--burger-adaptive-height, 730px), 730px, calc(100vh - 150px)) !important;
    max-height: min(730px, calc(100vh - 150px)) !important;
  }
}
@media (max-width: 768px) {
  body:not(.map-expanded) .ui-burger-widget.expanded {
    height: min(var(--burger-adaptive-height, calc(100% - 113px)), calc(100% - 113px)) !important;
    max-height: calc(100% - 113px) !important;
  }
}

/* При раскрытой карте список также подстраивается под сцены, не заходя на карту. */
@media (min-width: 769px) {
  body.map-expanded .ui-burger-widget.expanded {
    height: min(var(--burger-adaptive-height, 730px), 730px, calc(100vh - 410px)) !important;
    max-height: min(730px, calc(100vh - 410px)) !important;
  }
}
@media (min-width: 769px) and (max-height: 900px) {
  body.map-expanded .ui-burger-widget.expanded {
    height: min(var(--burger-adaptive-height, 730px), 730px, calc(100vh - 450px)) !important;
    max-height: min(730px, calc(100vh - 450px)) !important;
  }
}
@media (max-width: 768px) {
  body.map-expanded .ui-burger-widget.expanded {
    height: min(var(--burger-adaptive-height, calc(100% - 15px - var(--map-mh, 284px) - 18px - 30px)), calc(100% - 15px - var(--map-mh, 284px) - 18px - 30px)) !important;
    max-height: calc(100% - 15px - var(--map-mh, 284px) - 18px - 30px) !important;
  }
}

/* Avoid a day/night flash before the opening scene is resolved. */
.ui-daynight.daynight-pending { visibility: hidden !important; }

/* Параметры заполнения плана из конфигурации тура. */
.map-container-mini { background: var(--map-background-color, #ffffff); }
.map-image, .plan-groups-svg { transform: translate(var(--map-image-offset-x, 0%), var(--map-image-offset-y, 0%)) rotate(var(--map-image-rotation, 0deg)) scale(var(--map-image-scale, 1)); transform-origin: center center; }
.tour-preloader-label { font-size: 13px; line-height: 1.4; color: var(--secondary-text, currentColor); opacity: .8; }

/* =====================================================================
 * МОДУЛИ: автовращение, автопилот и скрытие нового хрома — базовый скин
 * ===================================================================== */

/* МОДУЛЬ: автовращение — кнопка в панели управления (autorotateToggle)
   Две иконки в разметке модуля: без CSS видны обе; состояние — класс .is-on. */
.autorotate-toggle-btn { position: relative; }
.autorotate-toggle-btn .autorotate-icon--on { display: none; }
.autorotate-toggle-btn.is-on .autorotate-icon--off { display: none; }
.autorotate-toggle-btn.is-on .autorotate-icon--on { display: block; }
.autorotate-toggle-btn.is-on { color: var(--accent-color); }
.autorotate-toggle-btn.is-on::after {
	content: ''; position: absolute; inset: 4px; border-radius: 50%;
	border: 1px solid var(--accent-soft); pointer-events: none;
}

/* МОДУЛЬ: автопилот (guidedTour) — панель шагов, подпись и колауты.
   Модуль рисует разметку со своим инлайн-стилем (тёмное стекло + синий акцент);
   правила темы перекрывают его по специфичности #tour-ui-overlay. */
#tour-ui-overlay .gt-panel {
	background: var(--surface-strong); color: var(--text-color);
	border: 1px solid var(--border-color); box-shadow: var(--shadow-ui);
	backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
}
#tour-ui-overlay .gt-btn { background: var(--ctrl-hover-bg); color: var(--text-color); }
#tour-ui-overlay .gt-btn:hover { background: var(--accent-color); color: #fff; }
#tour-ui-overlay .gt-progress { background: var(--divider-bg); }
#tour-ui-overlay .gt-progress-fill { background: var(--accent-color); }
#tour-ui-overlay .gt-label { color: var(--secondary-text); }
#tour-ui-overlay .gt-caption {
	background: var(--surface-strong); color: var(--text-color);
	border: 1px solid var(--border-color); box-shadow: var(--shadow-ui);
	backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
}
#tour-ui-overlay .gt-callout-card {
	background: var(--surface-strong); color: var(--text-color);
	border: 1px solid var(--border-color); box-shadow: var(--shadow-ui);
}
#tour-ui-overlay .gt-callout-title { color: var(--text-color); }
#tour-ui-overlay .gt-callout-text { color: var(--secondary-text); }
#tour-ui-overlay .gt-callout-dot { background: var(--accent-color); border-color: #fff; }

/* МОДУЛИ: новый хром скрывается вместе с остальным интерфейсом
   (экран приветствия и режим «скрыть интерфейс»). */
body.welcome-open .thumbs-bar,
body.welcome-open .scene-counter,
body.welcome-open .float-panel,
body.welcome-open .floor-selector,
body.welcome-open .share-inline,
body.welcome-open .skin-branding-corner,
body.welcome-open .gt-panel,
body.welcome-open .gt-caption { opacity: 0 !important; pointer-events: none !important; }
.hidden-ui .thumbs-bar,
.hidden-ui .scene-counter,
.hidden-ui .float-panel,
.hidden-ui .floor-selector,
.hidden-ui .share-inline,
.hidden-ui .skin-branding-corner,
.hidden-ui .gt-panel,
.hidden-ui .gt-caption { opacity: 0; pointer-events: none; }
.thumbs-bar, .scene-counter, .float-panel, .floor-selector, .share-inline, .skin-branding-corner { transition: opacity 0.35s ease; }
