/*
 Theme Name:   WPResidence Child Theme
 Theme URI:    https://themeforest.net/item/wp-residence-real-estate-wordpress-theme/7896392
 Description:  WPResidence child theme
 Author:       WpEstate
 Author URI:   http://wpestate.org
 Template:     wpresidence
 Version:      5.6.0
 License:      GNU General Public License v2 or later
 License URI:  http://www.gnu.org/licenses/gpl-2.0.html
*/



/* ------------------------------------------------------------------
   Верхняя панель: прижать содержимое вправо.

   В шаблоне templates/headers/top_bar.php у .top_bar стоит
   justify-content:space-between, но левая область виджетов
   (top-bar-left-widget-area) пуста, поэтому единственный оставшийся
   блок .right-top-widet уезжает к левому краю.

   margin-left:auto решает это независимо от того, наполнят ли
   когда-нибудь левую область.
   ------------------------------------------------------------------ */
.top_bar .right-top-widet {
    margin-left: auto;
}

/* ------------------------------------------------------------------
   Переключатель языков в верхней панели (qTranslate-XT, режим "both").

   Флаги рисуем здесь сами. Штатный CSS плагина отключён у виджета
   (widget-css-off), потому что он:
     - не выводит background-image для .qtranxs_flag_XX в этой сборке,
       из-за чего флаги были невидимы;
     - правилом .qtranxs_flag span{display:none} прячет ещё и подписи.

   Пути к картинкам — относительные от этого файла
   (wp-content/themes/wpresidence-child/ -> wp-content/plugins/...),
   поэтому работают и на локали, и на боевом домене.

   Размеры родные: gb/ru 18x12, me 22x12. Не масштабируем — иначе мыло.
   ------------------------------------------------------------------ */
.top_bar .qtranxs_widget .qtranxs_language_chooser {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 0;
    padding: 0 15px;
    list-style: none;
    overflow: visible;                 /* иначе подсказка обрежется */
}

.top_bar .qtranxs_widget .qtranxs_language_chooser li {
    display: inline-flex;
    align-items: center;
    margin: 0;
}

/* Сам флаг. Рамка нужна: белые полосы на светлой панели иначе теряются. */
.top_bar .qtranxs_widget .qtranxs_language_chooser a.qtranxs_flag {
    position: relative;
    display: block;
    width: 22px;
    height: 15px;
    padding: 0;
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;
    border: 1px solid rgba(0, 0, 0, .18);
    border-radius: 2px;
    opacity: .7;
    transition: opacity .15s ease, transform .15s ease;
}

.top_bar .qtranxs_widget .qtranxs_language_chooser a.qtranxs_flag:hover {
    opacity: 1;
    transform: translateY(-1px);
}

/* Текущий язык: полная яркость и подчёркивание снизу */
.top_bar .qtranxs_widget .qtranxs_language_chooser li.active a.qtranxs_flag {
    opacity: 1;
    box-shadow: 0 2px 0 0 currentColor;
}

/* ---- Название языка как всплывающая подсказка ----
   Текст остаётся в разметке (нужен скринридерам и поисковикам),
   но визуально показывается только при наведении.
   Родная подсказка браузера из атрибута title не используется:
   она появляется с задержкой и выглядит как системная плашка,
   поэтому title переносится в aria-label скриптом в functions.php. */
.top_bar .qtranxs_widget .qtranxs_language_chooser a.qtranxs_flag span {
    position: absolute;
    top: calc(100% + 9px);
    left: 50%;
    transform: translateX(-50%);
    display: block;
    padding: 4px 9px;
    border-radius: 4px;
    background: rgba(20, 20, 20, .92);
    color: #fff;
    font-size: 12px;
    font-weight: 400;
    line-height: 1.35;
    white-space: nowrap;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity .15s ease;
    z-index: 1000;
}

/* Хвостик подсказки */
.top_bar .qtranxs_widget .qtranxs_language_chooser a.qtranxs_flag span::before {
    content: "";
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    border: 5px solid transparent;
    border-bottom-color: rgba(20, 20, 20, .92);
}

.top_bar .qtranxs_widget .qtranxs_language_chooser a.qtranxs_flag:hover span {
    opacity: 1;
    visibility: visible;
}

/* Сами флаги */
.top_bar .qtranxs_widget .qtranxs_language_chooser a.qtranxs_flag_en {
    background-image: url(../../plugins/qtranslate-xt/flags/gb.png);
}

.top_bar .qtranxs_widget .qtranxs_language_chooser a.qtranxs_flag_me {
    background-image: url(../../plugins/qtranslate-xt/flags/me.png);
}

.top_bar .qtranxs_widget .qtranxs_language_chooser a.qtranxs_flag_ru {
    background-image: url(../../plugins/qtranslate-xt/flags/ru.png);
}
/* ------------------------------------------------------------------
   Кастомная форма поиска Home4You (instream), перенесена из темы 2.0.0.

   Штатную форму 5.7 (#adv-search-1) прячем, но НЕ удаляем из DOM:
   кастомная форма клонирует из неё список городов
   (templates/advanced_search_type_instream.php:893).

   Саму форму переводим из абсолютного позиционирования в поток.
   В старой теме она позиционировалась координатами
   (margin: 400px 0 0 100px) под вёрстку 2.0.0 — в 5.7 это мимо.
   ------------------------------------------------------------------ */
#search_wrapper #adv-search-1 {
    display: none;
}

/* Геометрию НЕ переопределяем: она задана в самом шаблоне
   (position:absolute; width:800px; height:80px; margin:400px 0 0 100px)
   и рассчитана на то, что форма лежит ПОВЕРХ карты #gmap_wrapper.
   Нужен только z-index, чтобы карта не перекрывала форму. */
#instream-search-form {
    z-index: 20;
}

/* На узких экранах — в поток, как было в my_media.css */
@media (max-width: 991px) {
    #instream-search-form {
        position: relative !important;
        width: 100% !important;
        height: auto !important;
        margin: 0 !important;
    }
}

/* ------------------------------------------------------------------
   Шим сетки для формы instream.

   Форма свёрстана под Bootstrap 3, где .col-md-* раскладывались
   через float и работали без обёртки .row. В Bootstrap 5.3 (тема 5.x)
   колонки — флекс-элементы и БЕЗ .row становятся блочными, из-за чего
   форма разворачивалась вертикальной простынёй.

   Обёрток .row в шаблоне нет вовсе (проверено: 0 на 28 колонок),
   поэтому вместо правки чужой разметки делаем флекс на самой форме
   и возвращаем колонкам ширины BS3. Область действия — только
   ПРЯМЫЕ потомки формы, вложенные колонки внутри выпадающих
   панелей остаются блочными, как и задумано.
   ------------------------------------------------------------------ */
#instream-search-form {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0;
}

#instream-search-form > [class*="col-md-"] {
    float: none;
    padding: 0 7px;   /* гуттер как в 2.0.0 */
}

#instream-search-form > .col-md-1  { flex: 0 0 8.3333%;  max-width: 8.3333%;  }
#instream-search-form > .col-md-2  { flex: 0 0 16.6666%; max-width: 16.6666%; }
#instream-search-form > .col-md-3  { flex: 0 0 25%;      max-width: 25%;      }
#instream-search-form > .col-md-4  { flex: 0 0 33.3333%; max-width: 33.3333%; }
#instream-search-form > .col-md-6  { flex: 0 0 50%;      max-width: 50%;      }
#instream-search-form > .col-md-12 { flex: 0 0 100%;     max-width: 100%;     }

/* Выпадающие панели не должны растягивать страницу */
#instream-search-form .dropdown-menu,
#instream-search-form .instream-holder-items {
    max-width: 100vw;
}

/* #prop_number_1 — намеренная приманка против автозаполнения браузера
   (в шаблоне: position:absolute; left:4000px). Смещение ВПРАВО растягивало
   страницу на ~3950px вбок, поэтому уводим влево: там оно скролл не создаёт. */
#instream-search-form #prop_number_1 {
    left: -9999px !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    border: 0 !important;
}

/* ------------------------------------------------------------------
   Единые метрики полей.

   Шаблон полагался на .form-control из Bootstrap 3. В BS5 у этого класса
   другие высоты и отступы, поэтому поля разъезжались по вертикали
   (40 / 60 / 80px на разных высотах). Приводим к одному размеру и
   центрируем в 80-пиксельной полосе формы, как было в 2.0.0.
   ------------------------------------------------------------------ */
#instream-search-form > [class*="col-md-"] {
    display: flex;
    align-items: center;
    height: 80px;
}

#instream-search-form .form-control,
#instream-search-form .dropdown.form-control {
    height: 40px;
    min-height: 40px;
    margin: 0 !important;
    padding: 8px 12px;
    line-height: 24px;
    background: #fff;
    border: 1px solid #ddd;
    border-radius: 2px;
    box-shadow: none;
    font-size: 14px;
}

/* Кнопка поиска — во всю высоту полосы, как в оригинале */
#instream-search-form .instream-search-btn-div {
    height: 80px;
    padding: 0 !important;
}

#instream-search-form .instream-search-btn {
    width: 100%;
    height: 80px;
}

/* Вложенные колонки внутри формы (например, «Цена от» и «Цена до»
   лежат как два .col-md-6 внутри .col-md-4). Прямым потомкам формы
   ширины уже заданы флексом выше, а вложенным возвращаем поведение
   Bootstrap 3 — float с процентной шириной. */
#instream-search-form > [class*="col-md-"] [class*="col-md-"] {
    float: left;
    padding: 0 7px;   /* тот же гуттер у вложенных колонок цен */
}

#instream-search-form > [class*="col-md-"] .col-md-6  { width: 50%;  }
#instream-search-form > [class*="col-md-"] .col-md-4  { width: 33.3333%; }
#instream-search-form > [class*="col-md-"] .col-md-3  { width: 25%;  }
#instream-search-form > [class*="col-md-"] .col-md-12 { width: 100%; float: none; }

/* Схлопывание после float-колонок */
#instream-search-form > [class*="col-md-"]::after {
    content: "";
    display: table;
    clear: both;
}

/* ==================================================================
/* ==================================================================
   Кастомная форма поиска: внешний вид снят с боевого сайта home4you.me,
   где ещё работает тема 2.0.0. Все значения ниже — не подбор на глаз,
   а замеренные computed-стили оригинала.

   Что именно разъехалось при переезде на 5.7 / Bootstrap 5:
   1) шрифт: оригинал набран Nunito Sans 13px, новая тема — Roboto 14px;
   2) .caret из BS3 удалён — стрелки полей стали невидимы;
   3) галочка в чекбоксе рисовалась глифом FontAwesome 4 (font-family:
      FontAwesome). В 5.7 стоит FontAwesome 6, где семейства с таким
      именем нет, поэтому отметка перестала показываться совсем.
      Рисуем галочку бордюрами — без зависимости от шрифта;
   4) у поля «введите цену» и у выпадающих списков не осталось стилей.
   ================================================================== */

/* --- Шрифт формы. Перечисляем теги поимённо, а не через *, чтобы
       не задеть иконочный <i> у кнопки поиска. --- */
#instream-search-form,
#instream-search-form div,
#instream-search-form span,
#instream-search-form ul,
#instream-search-form li,
#instream-search-form label,
#instream-search-form input,
#instream-search-form button {
    font-family: "Nunito Sans", sans-serif;
}

#instream-search-form { font-size: 13px; }

/* --- Сами поля: рамка и радиус как в оригинале, внутренний отступ
       отдан триггеру (в 2.0.0 у .form-control padding: 0) --- */
#instream-search-form .form-control,
#instream-search-form .dropdown.form-control {
    padding: 0;
    border: 1px solid #eee;
    border-radius: 3px;
    font-size: 13px;
}

#instream-search-form #prop_number {
    padding: 9px 0 9px 13px;
    color: #8593a9;
    font-weight: 500;
}

/* --- Триггеры полей: 13px/600, цвет #8593a9, отступ 9px 13px --- */
#instream-search-form .filter_menu_trigger {
    position: relative;
    display: block;
    width: 100%;
    margin-top: 1px;
    padding: 9px 26px 9px 13px;
    text-align: left;
    font-size: 13px;
    font-weight: 600;
    line-height: 1.42857;
    color: #8593a9;
    background: none;
    border: 0;
    box-shadow: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    cursor: pointer;
}

#instream-search-form .filter_menu_trigger:focus,
#instream-search-form .filter_menu_trigger:active {
    outline: none;
    box-shadow: none;
    background: none;
}

/* Открытое поле подсвечивается синим — как в 2.0.0 */
#instream-search-form .form-control.open .filter_menu_trigger,
#instream-search-form .form-control.show .filter_menu_trigger {
    color: #0073e1;
}

/* --- Стрелка: шеврон справа, одинаковый у всех полей --- */
#instream-search-form .caret,
#instream-search-form .caret_filter,
#instream-search-form .dropdown-toggle::after {
    position: absolute;
    top: 50%;
    right: 13px;
    width: 7px;
    height: 7px;
    margin: -5px 0 0;
    content: "";
    border: 0;
    border-right: 1px solid #a1a7b4;
    border-bottom: 1px solid #a1a7b4;
    border-radius: 0;
    transform: rotate(45deg);
    vertical-align: initial;
}

/* --- Выпадающие списки: город и цены.
       Главную панель с переключателем «Купить/Снять» не трогаем:
       у неё нет класса .filter_menu, только .instream-drop-ui. --- */
#instream-search-form .dropdown-menu.filter_menu {
    min-width: 185px;
    max-height: 320px;
    padding: 0;
    overflow-y: auto;
    background: #fff;
    border: 1px solid #f0f0f0;
    border-radius: 0 0 3px 3px;
    box-shadow: 0 6px 18px rgba(0, 0, 0, .12);
    font-size: 13px;
}

#instream-search-form .dropdown-menu.filter_menu li {
    list-style: none;
    padding: 13px;
    line-height: 1.3em;
    border-bottom: 1px solid #f0f0f0;
    color: #8b6f6f;
    font-weight: 500;
    cursor: pointer;
}

#instream-search-form .dropdown-menu.filter_menu li:hover {
    background-color: #0073e1;
    color: #f0f0f0;
}

/* --- Поле «введите цену» первым пунктом списка цен --- */
#instream-search-form .dropdown-menu.filter_menu li.price_custom {
    padding: 5px 10px 5px 5px;
}

#instream-search-form .dropdown-menu.filter_menu li.price_custom:hover {
    background: none;
}

#instream-search-form #price_custom,
#instream-search-form #price_custom_0 {
    width: 100%;
    height: auto;
    margin: 0;
    padding: 9px 0 9px 13px;
    appearance: none;
    -webkit-appearance: none;
    background: #fff;
    border: 1px solid #eee;
    border-radius: 0;
    box-shadow: none;
    font-size: 13px;
    font-weight: 500;
    color: #8593a9;
}

#instream-search-form #price_custom:focus,
#instream-search-form #price_custom_0:focus {
    outline: none;
    border-color: #0073e1;
}

/* Отметка «цена принята» рядом с полем: в 2.0.0 это был глиф
   FontAwesome 4, которого в 5.7 нет. Рисуем галочку бордюрами. */
#instream-search-form #price_custom_after::before,
#instream-search-form #price_custom_after_0::before {
    content: "";
    position: absolute;
    left: 6px;
    top: 4px;
    width: 5px;
    height: 9px;
    border: solid #d96868;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
    font: inherit;
}

/* --- Чекбоксы в панели «Купить/Снять».
       Строка выравнивается по центру: раньше квадрат стоял выше
       текста. Галочка — бордюрами, синяя, как в оригинале. --- */
#instream-search-form .instream-drop-ui label {
    display: flex;
    align-items: center;
    margin: 0 0 7px;
    font-weight: 400;
    cursor: pointer;
}

#instream-search-form input[type="checkbox"].instream-checkbox-item {
    position: relative;
    flex: 0 0 15px;
    width: 15px;
    height: 15px;
    margin: 0 5px 0 0;
    padding: 0;
    appearance: none;
    -webkit-appearance: none;
    background: #fff;
    border: 1px solid #dde4e9;
    border-radius: 0;
    box-sizing: border-box;
    outline: 0 !important;
    cursor: pointer;
}

#instream-search-form input[type="checkbox"].instream-checkbox-item:checked {
    border-color: #0073e1;
}

#instream-search-form input[type="checkbox"].instream-checkbox-item:checked::before {
    content: "";
    position: absolute;
    left: 4px;
    top: 1px;
    width: 4px;
    height: 8px;
    border: solid #0073e1;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}

#instream-search-form .checkbox-span {
    font-size: 13px;
    font-weight: 300;
    line-height: 1.3;
    color: #6c6060;
}

/* --- Зазоры между полями: везде 14px.

   Внешние колонки несут гуттер 7px с каждой стороны — на стыке двух
   колонок получается 14. Вложенные колонки («Цена от» / «Цена до»)
   добавляют свои 7px только по внутреннему шву: на внешних границах
   отступ иначе складывался дважды и давал 21px.

   Первой колонке — отступ слева, чтобы поле не прилипало к краю белой
   полосы; в 2.0.0 это делал inline margin-left у самого поля.
   Колонке «№ Объекта» — отступ справа: у кнопки поиска своего гуттера
   нет, она прижата к правому краю полосы. --- */
#instream-search-form > [class*="col-md-"] > [class*="col-md-"] {
    padding-left: 0;
    padding-right: 0;
}

/* :last-child здесь ненадёжен — после второй половины в колонке цен
   есть ещё узел. Поэтому отступ ставим не по краям, а между соседями. */
#instream-search-form > [class*="col-md-"] > [class*="col-md-"] + [class*="col-md-"] {
    padding-left: 14px;
}

#instream-search-form > [class*="col-md-"]:first-child {
    padding-left: 14px;
}

#instream-search-form > [class*="col-md-"]:has(#prop_number) {
    padding-right: 14px;
}

/* Две половины колонки цен раскладываем флексом. При float-раскладке
   отступ между ними вычитался из ширины только правого поля, и «Цена до»
   получалась на 14px уже, чем «Цена от». */
#instream-search-form > [class*="col-md-"]:has(> [class*="col-md-"] + [class*="col-md-"]) {
    display: flex;
    align-items: center;
}

#instream-search-form > [class*="col-md-"]:has(> [class*="col-md-"] + [class*="col-md-"]) > [class*="col-md-"] {
    flex: 1 1 0;
    width: auto;
    float: none;
}

/* --- Отступ внутри раскрытого блока категории («Квартиру», «Дом»,
   «Участок» и т.д.). Правило для вложенных колонок выше записано
   через пробел, поэтому оно достаёт и до .instream-holder-items
   и обнуляет её вертикальные поля — чекбоксы прилипали к цветной
   полосе с названием категории. Возвращаем отступы. --- */
#instream-search-form > [class*="col-md-"] .instream-holder-items[class*="col-md-"] {
    padding: 8px 10px 6px;
}

/* --- Подсветка при наведении.
   В шаблоне правило .instream-holder:hover красит ВЕСЬ блок категории,
   включая раскрытую область с чекбоксами, — из-под неё и вылезала
   голубая полоса. Гасим её: подсветка нужна только на самом заголовке,
   для этого есть отдельное правило .instream-holder-title:hover. --- */
#instream-search-form .instream-holder:hover {
    background-color: transparent !important;
}

/* --- Форма поиска на странице результатов (вариант _regular).
   Она идёт в общем потоке страницы, и две её особенности ломали
   единый шаг в 14px:
   1) кнопке поиска задан отрицательный отступ слева (−18px) — в старой
      раскладке он поджимал её к соседнему полю, а с нашими метриками
      кнопка наезжала на «№ Объекта»;
   2) крайние колонки помечены классом .nopad с !important, поэтому
      общее правило отступа первой колонки до них не доставало. --- */
#instream-search-form .instream-search-btn {
    margin-left: 0 !important;
}

#instream-search-form > [class*="col-md-"]:first-child {
    padding-left: 14px !important;
    padding-right: 7px !important;   /* .nopad снимает отступы со всех сторон,
                                        поэтому правый возвращаем отдельно */
}

/* --- Родная панель поиска 5.7 на странице результатов.
   Скрыта: на странице уже стоит перенесённая форма Home4You, две панели
   подряд не нужны. Элемент именно СКРЫВАЕМ, а не убираем из разметки:
   с ним связаны карта и её фильтры, а его поля продолжают заполняться
   из адреса страницы — мы отдаём параметры под родными именами 5.7,
   поэтому карта получает те же условия поиска, что и список.
   Класс .halfsearch ограничивает правило страницей результатов. --- */
#adv-search-1.halfsearch {
    display: none !important;
}

/* --- Страница результатов: поиск и панель сортировки в одной строке.
   Форму рисует шапка, поэтому она выводилась вне колонки контента и не
   совпадала с ней по ширине, а сортировка с иконками вида шла отдельной
   полосой под заголовком. JS переносит обе в общий ряд, здесь — раскладка:
   слева поиск, справа всё остальное. --- */
.h4y-search-row {
    display: flex;
    align-items: center;
    gap: 20px;
    margin-bottom: 22px;
}

.h4y-search-row > #instream-search-form {
    flex: 1 1 auto;
    min-width: 620px;   /* снимает min-width:800px из шаблона: он не давал
                           форме ужаться и выдавливал панель за край */
    float: none;
    margin: 0;
}

/* Панель занимает ровно по содержимому. Если выбрать длинный вариант
   сортировки, она подрастёт, а форма ужмётся до своего минимума. */
.h4y-search-row > .adv_listing_filters_head,
.h4y-search-row > .listing_filters_head {
    flex: 0 0 auto;   /* не ужимать: иначе иконки вылезали за её край */
    width: auto;
    min-width: 0;
    margin: 0;
}

/* --- Правая часть строки: сортировка и иконки вида в одну линию.
   Панель темы разложена флексом с переносом, и на узком месте
   сортировка с иконками вставали друг под другом. --- */
.h4y-search-row .adv_listing_filters_head,
.h4y-search-row .listing_filters_head {
    flex-wrap: nowrap;
    align-items: center;
    gap: 12px;
}

.h4y-search-row .wpestate_list_grid_filter_wiew_wrapper {
    flex: 0 0 auto;
}

/* Свои иконки — «Карта» и «Сбросить» — рядом со списком и плиткой */
#h4y_map_view,
#h4y_reset_view {
    cursor: pointer;
    color: #8593a9;
    display: flex;
    align-items: center;
}

#h4y_map_view a {
    color: inherit;
    display: flex;
    align-items: center;
}

#h4y_map_view:hover,
#h4y_reset_view:hover {
    color: #0073e1;
}

/* Прежняя надпись «сбросить фильтры» отдельным блоком в углу больше
   не нужна: её роль взяла иконка корзины в общей строке. */
#filter-reset {
    display: none !important;
}

/* Контейнер иконок вида рассчитан на две штуки и переносил их в столбик,
   когда мы добавили «Карту» и «Сбросить». Разворачиваем в одну линию. */
.h4y-search-row .wpestate_list_grid_filter_wiew_wrapper {
    width: auto;
    min-width: 0;
}

.h4y-search-row .wpestate_list_grid_filter_wiew_wrapper .listing_filter_views {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 12px;
    width: auto;
    min-width: 0;
    float: none;
}

/* --- Режим карты (h4y_view=map).
   Штатный переключатель «Список / Просмотр карты» скрыт: его работу
   взяли иконки в той же строке — список и плитка возвращают к списку,
   иконка карты показывает карту. Сами иконки выстраиваем в одну линию
   и прижимаем к правому краю. --- */
.half_map_toggle_group {
    display: none !important;
}

.wpresidence_half_map_filter_wrapper .wpestate_list_grid_filter_wiew_wrapper {
    width: auto;
    min-width: 0;
    margin-left: auto;
}

.wpresidence_half_map_filter_wrapper .wpestate_list_grid_filter_wiew_wrapper .listing_filter_views {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
    width: auto;
    min-width: 0;
    float: none;
}

/* Активная иконка режима — тем же цветом, что и штатные список/плитка */
#h4y_map_view.icon_selected {
    color: #0073e1;
}

/* --- Пустая полоса под шапкой на странице результатов.
   Форму там рисует шапка — внутри #search_wrapper. Мы переносим её в
   общий ряд, и контейнер остаётся пустым, но со своими отступами
   (margin-top 100px + padding 15px) — это и давало ~160px пустоты.
   Убираем его только на этой странице: на остальных форма в нём и живёт.
   Через JS не получилось: инлайн-стиль перебивается бутстраповским
   .d-xl-block с !important, поэтому нужен селектор с id. --- */
body.page-template-advanced_search_results #search_wrapper {
    display: none !important;
}

/* --- Панель на страницах списков («Продажа», «Аренда»).
   Там тема рисует свою строку .listing_filters_head с таксономическими
   фильтрами (Sales, категории, Области, Города, Районы). Их заменяет наша
   форма поиска, поэтому скрываем — кроме сортировки и иконок вида,
   которые становятся правой частью общей панели.
   Сортировку тема помечает классом wpresidence_wrap_a_filter_order —
   её оставляем, остальные .listing_filter_select прячем. --- */
.h4y-search-row .listing_filters_head > .listing_filter_select:not(.wpresidence_wrap_a_filter_order) {
    display: none !important;
}


/* --- Карточка объекта: всё в одну строку.
   Иконки «поделиться» и «сравнить» перенесены в строку характеристик
   (спальни / санузлы / площадь) — см. дочерний шаблон
   property_card_details_default.php. Здесь прижимаем их к правому краю
   и убираем опустевший блок .property_location вместе с его чертой:
   раньше он занимал отдельную строку под разделителем.
   Иконка «в избранное» отключена штатной настройкой темы
   property_card_agent_show_favorite. --- */
.property_listing .property_listing_details {
    display: flex;
    align-items: center;
    gap: 14px;
}

.property_listing .property_listing_details .listing_actions {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 6px;
}

.property_listing .property_location {
    display: none !important;
}

/* --- Страница объекта: убираем верхнюю секцию с картой и поиском.
   Ниже на странице и так есть свой блок с картой, а поиск здесь не нужен.

   Почему стилями, а не настройкой: тип шапки в теме один на весь сайт
   (`wp_estate_header_type` = 4, карта). На главной это та же самая карта,
   поверх которой лежит форма поиска, — отключив настройку, мы сломали бы
   главную. Отдельного переключателя для страницы объекта в теме нет.
   Правило действует только по классу single-estate_property, поэтому
   новые объекты подхватят его сами. --- */
body.single-estate_property .header_media,
body.page-template-compare_listings .header_media,
body.page-template-front_property_submit .header_media {
    display: none !important;
}

/* Пустой контейнер шапочного поиска: сам он тут ничего не выводит, но
   держит 100px отступа сверху плюс внутренние поля — около 160px пустоты
   между меню и заголовком объекта. Убираем и его. */
body.single-estate_property #search_wrapper,
body.page-template-compare_listings #search_wrapper,
body.page-template-front_property_submit #search_wrapper {
    display: none !important;
}

/* --- Компактный подвал.
   После того как из подвала убрали список категорий и меню разделов, в нём
   остались только иконки соцсетей и копирайт, но отступы были рассчитаны на
   четыре колонки виджетов. Ужимаем: сверху блока 30 -> 16, отступ списка
   виджетов 45 -> 12, нижний отступ виджета 30 -> 0.
   Итого подвал становится примерно вдвое ниже, копирайт поднимается. --- */
#colophon .footer-widget-area {
    padding-top: 16px;
    padding-bottom: 8px;
}

/* Ноль отступов: вертикальное выравнивание делает align-items у #colophon,
   а собственный padding списка сбивал иконки вниз относительно копирайта. */
#colophon .footer-widget-area ul.xoxo {
    padding: 0;
    margin: 0;
}

#colophon .widget-container {
    margin-bottom: 0;
}

/* --- Подвал в одну строку: иконки слева, копирайт справа от них.
   Раньше копирайт шёл отдельной полосой под иконками и занимал лишнюю
   высоту. Делаем оба блока строками одного флекса. --- */
#colophon {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: flex-start;
    gap: 28px;
    padding-left: 48px;
}

#colophon .footer-widget-area {
    flex: 0 0 auto;
    width: auto;
    max-width: none;
    margin: 0 !important;   /* тема центрирует блок автоотступом ~358px */
    padding: 16px 0;
}

#colophon .footer-widget-area > .widget-area {
    width: auto;
    max-width: none;
    flex: 0 0 auto;
}

#colophon .sub_footer {
    flex: 0 1 auto;
    width: auto;
    border: 0;
}

#colophon .sub_footer_content {
    width: auto;
    max-width: none;
    margin: 0;
    padding: 0;
    justify-content: flex-start;
}

/* --- Форма добавления объекта: перенесённые со старого сайта блоки.
   Кадастровые реквизиты идут пятёркой в строку, поэтому колонкам нужен
   обычный отступ формы, а кнопкам справа — выравнивание по низу поля,
   иначе они висят на уровне подписи. --- */
.h4y_podaci_ln,
.h4y_vlasnik {
    margin-top: 24px;
}

.h4y_podaci_ln label,
.h4y_vlasnik label {
    display: block;
}

.h4y_knopka_stolbec {
    display: flex;
    align-items: flex-end;
    padding-bottom: 15px;
}

.h4y_knopka_stolbec .wpresidence_button {
    width: 100%;
}

.h4y_ln_preview {
    text-align: center;
    margin-top: 10px;
}

.h4y_ln_preview img {
    max-width: 200px;
    height: auto;
}

/* --- Многоязычный ввод названия и описания.
   Флажок выбирает язык, на котором сейчас правят текст; неактивные
   приглушены, чтобы было видно, где находишься. --- */
.h4y_lang_switch {
    list-style: none;
    margin: 0 0 6px;
    padding: 0;
}

.h4y_lang_switch li {
    display: inline-block;
    padding: 4px 6px;
    cursor: pointer;
    opacity: .4;
    transition: opacity .15s;
}

.h4y_lang_switch li:hover,
.h4y_lang_switch li.active {
    opacity: 1;
}

.h4y_lang_switch img {
    display: block;
    width: 18px;
    height: auto;
}

.h4y_mnogoyaz {
    margin-left: 8px;
    font-style: normal;
    font-size: 11px;
    color: #8593a9;
}

/* Оплата криптой и рублями: иконка и галочка рядом. */
.h4y_oplata {
    display: flex;
    align-items: center;
    gap: 24px;
    padding-top: 10px;
}

.h4y_oplata .wpestate_check_label {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
}

.h4y_oplata img {
    width: 34px;
    height: auto;
}

/* --- Кабинет: действия над объектом иконками вместо выпадающего списка.
   Так быстрее и привычнее менеджеру — на прежнем сайте было так же. --- */
.h4y_deystviya {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    align-items: center;
    justify-content: flex-end;
}

.h4y_deystvie {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border: 1px solid #e5e5e5;
    border-radius: 4px;
    color: #8593a9;
    background: #fff;
    font-size: 13px;
    text-decoration: none;
    transition: background .15s, color .15s, border-color .15s;
}

.h4y_deystvie:hover,
.h4y_deystvie:focus {
    background: #0071ce;
    border-color: #0071ce;
    color: #fff;
}

.h4y_deystvie_udalit:hover,
.h4y_deystvie_udalit:focus {
    background: #e04141;
    border-color: #e04141;
}

.h4y_deystvie_vkl:hover,
.h4y_deystvie_vkl:focus {
    background: #35b37e;
    border-color: #35b37e;
}

/* Выбор владельца в строке фильтров над списком объектов. */
.h4y_vybor_vladelca {
    height: 46px;
    min-width: 170px;
    padding: 0 10px;
    border: 1px solid #e5e5e5;
    border-radius: 4px;
    color: #8593a9;
    font-size: 13px;
    background: #fff;
}

/* --- Кабинет: строка объекта.
   Колонки: фото с названием (5), категория (2), цена (2), действия (3).
   Колонку «Статус» убрали — статус переехал к действиям, поэтому шапку
   таблицы, которую печатает сама тема, подгоняем под новую раскладку. --- */
.wpestate_dashboard_table_list_header > div:nth-child(3) {
    display: none;
}

.wpestate_dashboard_table_list_header > div:nth-child(1) { flex: 0 0 41.666%; max-width: 41.666%; }
.wpestate_dashboard_table_list_header > div:nth-child(2) { flex: 0 0 16.666%; max-width: 16.666%; }
.wpestate_dashboard_table_list_header > div:nth-child(4) { flex: 0 0 16.666%; max-width: 16.666%; }
.wpestate_dashboard_table_list_header > div:nth-child(5) { flex: 0 0 25%;     max-width: 25%; }

/* Фото крупнее: по маленькой картинке объект не узнать, особенно когда
   их в списке много. Тема жёстко задаёт колонке ширину 200px, а картинке
   80px, поэтому переопределяем и то, и другое. */
.h4y_stroka_obekta .blog_listing_image {
    /* Ширину задаёт только класс колонки. Своё значение здесь перебивало
       бутстрап, колонка начинала тянуться по длине названия и уносила
       остальные вниз. */
    align-items: center;
    min-width: 0;
}

/* Декоративная «подложка» под картинкой была рассчитана на превью 80px и
   у крупного фото торчит цветной полосой. */
.h4y_stroka_obekta .dashbard_unit_image:after {
    display: none;
}

.h4y_stroka_obekta .blog_listing_image img,
.h4y_stroka_obekta .dashbard_unit_image img {
    width: 168px;
    max-width: none;
    height: 112px;
    object-fit: cover;
    border-radius: 6px;
}

/* Название — обычным шрифтом и в один размер с остальными колонками. */
.h4y_stroka_obekta .dashbard_unit_title {
    font-weight: 400;
    font-size: 14px;
    line-height: 1.4;
    word-break: normal;
    overflow-wrap: anywhere;
}

.h4y_stroka_obekta .property_dashboard_location_wrapper {
    padding-left: 16px;
    padding-top: 2px;
}

/* Статус над иконками, иконки одной строкой под ним. */
.h4y_stroka_obekta .property_dashboard_action {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 8px;
}

.h4y_status_stroki {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 8px;
}

.h4y_stroka_obekta .h4y_deystviya {
    flex-wrap: nowrap;
}

/* Поле-приманка для ботов: посетитель его не видит и не встретит табом,
   а автоматическая отправка заполняет и выдаёт себя. Прячем уводом за
   пределы экрана, а не display:none — его боты умеют распознавать. */
.h4y_lovushka {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

/* --- Полноэкранная карта.
   Шапка сайта лежит выше карты и закрывает её панель управления, поэтому
   на время полного экрана убираем её совсем. --- */
/* Прячем не через display: шапку показывают утилиты бутстрапа с !important,
   и перебить их значило бы воевать со всей сеткой. Достаточно опустить её
   под карту — карта в полноэкранном режиме лежит на z-index 999. */
body.h4y_karta_vo_ves_ekran .top_bar_wrapper,
body.h4y_karta_vo_ves_ekran .master_header,
body.h4y_karta_vo_ves_ekran .header_wrapper {
    z-index: 1 !important;
}

/* Карта перекрывает шапку, но клики шапка всё равно перехватывала: она
   физически остаётся на своём месте поверх кнопок масштаба. На время
   полного экрана делаем её «прозрачной» для мыши. */
body.h4y_karta_vo_ves_ekran .top_bar_wrapper,
body.h4y_karta_vo_ves_ekran .master_header {
    pointer-events: none;
}

/* Панель управления картой в полноэкранном режиме.
   Тема задаёт классу .fullmap position:fixed и z-index:98 — а он висит
   и на обёртке, и на самой карте. Карта из-за этого ложится поверх своей
   же панели: у панели z-index есть (111), но у её контейнера — нет, и
   сравниваются как раз контейнеры. Поднимаем контейнер. */
#gmap_wrapper.fullmap .gmap-controls {
    z-index: 112;
}

/* Кнопки масштаба в полноэкранном режиме.
   На главной панель центрируется связкой left:50% + сдвиг влево на
   половину ширины. В полном экране тема переопределяет только left на 0,
   а сдвиг оставляет — и весь блок уезжает за левый край окна вместе с
   кнопками масштаба.
   Убираем именно сдвиг, а не left: на странице результатов карта занимает
   половину экрана, сдвига там нет, и правка left ломала уже её. */
#gmap_wrapper.fullmap .gmap-controls {
    transform: none;
}
