        /* Map */
        .book-map {
            margin: var(--bp-space-6) 0 0;
            padding: 0 4px;
        }
        /* Держатель места до приезда ссылки на карты — тот же `.book-map`
           плюс высота. ЗАМЕР карточки: 109 px при 360–430, 120 при 320 (там
           адрес переносится на вторую строку). Меняешь карточку — перемерь. */
        .book-map-hold { height: 109px; }
        @media (max-width: 340px) { .book-map-hold { height: 120px; } }
        .book-map .book-map-embed {
            border-radius: 12px;
            overflow: hidden !important;
            position: relative !important;
        }
        .book-map .book-map-embed > a {
            display: none !important;
        }
        .book-map iframe {
            width: 100% !important;
            height: 280px !important;
            border: none !important;
            display: block !important;
            position: relative !important;
        }
        .book-map-placeholder {
            display: flex;
            align-items: center;
            gap: 12px;
            width: 100%;
            padding: var(--bp-space-4) 16px;
            background: rgba(255, 255, 255, 0.06);
            border: 1px solid rgba(255, 255, 255, 0.12);
            border-radius: 12px;
            color: inherit;
            text-align: left;
            cursor: pointer;
            transition: background 0.15s ease, border-color 0.15s ease;
        }
        /* focus-visible вне guard: клавиатурная навигация нужна и без мыши */
        .book-map-placeholder:focus-visible {
            background: rgba(255, 255, 255, 0.1);
            border-color: rgba(255, 255, 255, 0.2);
            outline: none;
        }
        @media (hover: hover) and (pointer: fine) {
            .book-map-placeholder:hover {
                background: rgba(255, 255, 255, 0.1);
                border-color: rgba(255, 255, 255, 0.2);
                outline: none;
            }
        }
        .book-map-placeholder__icon {
            flex: 0 0 auto;
            width: 40px;
            height: 40px;
            border-radius: 10px;
            background: rgba(255, 255, 255, 0.08);
            display: grid;
            place-items: center;
            color: #fbbf24;
        }
        .book-map-placeholder__text {
            flex: 1 1 auto;
            min-width: 0;
            display: flex;
            flex-direction: column;
            gap: 2px;
        }
        .book-map-placeholder__title {
            font-size: var(--bp-fs-body);
            font-weight: 600;
            color: #f1f5f9;
        }
        .book-map-placeholder__subtitle {
            font-size: var(--bp-fs-secondary);
            color: #cbd5e1;
            white-space: normal;
            overflow-wrap: anywhere;
        }
        .book-map-placeholder__chev {
            flex: 0 0 auto;
            opacity: 0.55;
        }
        .book-map-placeholder[disabled] {
            cursor: default;
            opacity: 0.6;
        }
        @media (hover: hover) and (pointer: fine) {
            .book-map-placeholder[disabled]:hover {
                background: rgba(255, 255, 255, 0.06);
                border-color: rgba(255, 255, 255, 0.12);
            }
        }
        .book-map-show-inline {
            margin-top: 8px;
            background: transparent;
            border: none;
            color: inherit;
            opacity: 0.7;
            font-size: var(--bp-fs-secondary);
            cursor: pointer;
            padding: 6px 4px;
        }
        @media (hover: hover) and (pointer: fine) {
            .book-map-show-inline:hover {
                opacity: 1;
            }
        }

        /* Store Badges: воздух собран СВЕРХУ блока, как у заголовка секции.
           Снизу его нет — там отступ следующего блока, а на последнем месте
           стоит резерв под нижнее меню. */
        .store-badges {
            display: flex;
            justify-content: center;
            gap: 12px;
            padding: var(--bp-space-6) 16px 0;
        }
        /* В приложении скрыт классом платформы — он проставляется до
           отрисовки, поэтому блок не мигает */
        body.nav-ios .store-badges,
        body.nav-md .store-badges {
            display: none;
        }
        .store-badges a {
            display: block;
            height: 40px;
            transition: opacity 0.2s;
        }
        @media (hover: hover) and (pointer: fine) {
            .store-badges a:hover {
                opacity: 0.8;
            }
        }
        .store-badges img,
        .store-badges svg {
            height: 40px;
            width: auto;
        }

        /* Footer */
        .book-footer {
            text-align: center;
            padding: var(--bp-space-4) 8px;
            color: #475569;
            font-size: var(--bp-fs-caption);
        }
