/* =========================================================================
   Central Property — доводка каталога /katalog/ (Houzez Half Map: template/template-search.php → half-map-search-results.php).
   Что делает: кнопки поиска/сброса в палитре B; «Сохранить поиск» (требует входа — custom.js → showLoginModal) гостю не показывается;
   строка «N найдено · Сортировка»; кнопка «Фильтры» и окно фильтров на телефоне — цели касания ≥ 44 px, читаемый текст;
   переключатель «Объекты / На карте» и отступ списка над нижней панелью .cp-mobilebar.
   Цвета кнопок Houzez по умолчанию (#85c341, #dce0e0, #8b9898, #636363) — из css/main.css темы; здесь только токены --cp-*.
   Зависимости: style.css, cards.css (--cp-s*, --cp-fs-*, --cp-tap), sections.css (--cp-s6…s8, --cp-gutter, --cp-fs-h4),
   header-footer.css (--cp-header-h, --cp-mobilebar-h, --cp-z-header, --cp-z-mobilebar).
   Брейкпоинты Houzez/Elementor: телефон ≤ 767, планшет ≤ 1024.
   ========================================================================= */

:root{
  --cp-cat-btn-h:48px;   /* высота кнопок «Найти» / «Сбросить» (DESIGN.md: 48 px) */
}

/* ---------- 1. Кнопки каталога: «Найти» — акцент, «Сбросить» — контур, зелёный Bootstrap — наш success ---------- */
.half-map-wrap .btn-search.btn-secondary,
.overlay-search-advanced-module .btn-search.btn-secondary{min-height:var(--cp-cat-btn-h);border-radius:var(--cp-r-sm);border-color:var(--cp-accent);background:var(--cp-accent);color:var(--cp-on-accent);font-family:var(--cp-font-text);font-weight:600;font-size:var(--cp-fs-base)}
.half-map-wrap .btn-search.btn-secondary:hover,.half-map-wrap .btn-search.btn-secondary:focus-visible,
.overlay-search-advanced-module .btn-search.btn-secondary:hover,.overlay-search-advanced-module .btn-search.btn-secondary:focus-visible{border-color:var(--cp-accent-hover);background:var(--cp-accent-hover);color:var(--cp-on-accent)}
.half-map-wrap .reset-search-btn.btn-grey-outlined,
.overlay-search-advanced-module .reset-search-btn.btn-grey-outlined{min-height:var(--cp-cat-btn-h);border:1px solid var(--cp-line-strong);border-radius:var(--cp-r-sm)!important;background:transparent;color:var(--cp-muted);font-weight:600}
.half-map-wrap .reset-search-btn.btn-grey-outlined:hover,.half-map-wrap .reset-search-btn.btn-grey-outlined:focus-visible,
.overlay-search-advanced-module .reset-search-btn.btn-grey-outlined:hover,.overlay-search-advanced-module .reset-search-btn.btn-grey-outlined:focus-visible{background:var(--cp-surface-2);border-color:var(--cp-line-strong);color:var(--cp-text)}
/* «Сохранить поиск» открывает окно входа (сохранённые поиски — только в кабинете) — гостю не показываем */
body:not(.logged-in) .save-search-btn,
body:not(.logged-in) .save-search-form-wrap,
body:not(.logged-in) .save_search_click{display:none!important}
.save-search-btn,.save_search_click.btn-secondary{min-height:var(--cp-cat-btn-h);border-radius:var(--cp-r-sm);border-color:var(--cp-accent);background:var(--cp-surface);color:var(--cp-accent-text);font-weight:600}
.save-search-btn:hover,.save-search-btn:focus,.save-search-btn:active,.save_search_click.btn-secondary:hover{background:var(--cp-accent-soft);border-color:var(--cp-accent);color:var(--cp-accent-text)}
.half-map-wrap .btn-success,.overlay-search-advanced-module .btn-success{background:var(--cp-success);border-color:var(--cp-success);color:var(--cp-on-accent)}
.half-map-wrap .btn-success-outlined,.overlay-search-advanced-module .btn-success-outlined{color:var(--cp-success);border-color:var(--cp-success)}
.half-map-wrap .text-success{color:var(--cp-success)!important}

/* ---------- 2. Панель фильтров слева от выдачи (компьютер, halfmap_search_layout v4) ---------- */
.advanced-search.advanced-search-half-map{padding:var(--cp-s5) var(--cp-s4);border-radius:0;border-bottom:1px solid var(--cp-line);background:var(--cp-surface);box-shadow:none}
.advanced-search-half-map .half-map-buttons-wrap{gap:var(--cp-s2);flex-wrap:wrap}
.advanced-search-half-map .half-map-buttons-wrap .btn-search{flex:1 1 60%}
.advanced-search-half-map .half-map-buttons-wrap .reset-search-btn-wrap{flex:1 1 auto}
.advanced-search-half-map .half-map-buttons-wrap .reset-search-btn{margin-left:0;width:100%}
.advanced-search-half-map .form-control,
.advanced-search-half-map .bootstrap-select > .dropdown-toggle{min-height:var(--cp-tap)}

/* ---------- 3. Строка «N найдено · Сортировка · вид» ---------- */
.half-map-wrap .page-title-wrap{padding:var(--cp-s3) var(--cp-s4)!important;border-bottom:1px solid var(--cp-line);background:var(--cp-surface)}
.half-map-wrap .page-title-wrap .page-title{font-family:var(--cp-font-head);font-size:var(--cp-fs-base);font-weight:600;color:var(--cp-text);white-space:nowrap}
.half-map-wrap .page-title-wrap #total-results{color:var(--cp-accent-text)}
.half-map-wrap .sort-by-title{font-size:var(--cp-fs-sm);color:var(--cp-muted)}
.half-map-wrap .sort-by .bootstrap-select > .dropdown-toggle,
.half-map-wrap .sort-by .form-control{min-height:var(--cp-tap);padding-inline:var(--cp-s2);font-family:var(--cp-font-text);font-size:var(--cp-fs-sm);color:var(--cp-text)}
.half-map-wrap .sort-by .bootstrap-select > .dropdown-toggle:focus{border-color:transparent!important;box-shadow:0 0 0 3px var(--cp-accent-soft)}
.half-map-wrap .listing-switch-view .switch-btn{display:inline-grid;place-items:center;width:var(--cp-tap);height:var(--cp-tap);border-radius:var(--cp-r-sm);color:var(--cp-muted);font-size:var(--cp-fs-base);transition:background var(--cp-dur-fast) var(--cp-ease),color var(--cp-dur-fast) var(--cp-ease)}
.half-map-wrap .listing-switch-view .switch-btn:hover,.half-map-wrap .listing-switch-view .switch-btn:focus-visible{background:var(--cp-surface-2);color:var(--cp-text)}
.half-map-wrap .listing-switch-view .switch-btn.active{background:var(--cp-accent-soft);color:var(--cp-accent-text)}
.half-map-wrap .search-no-results-found{padding:var(--cp-s6) var(--cp-s4);color:var(--cp-muted);font-size:var(--cp-fs-base)}
@media (max-width:767.98px){
  .half-map-wrap .page-title-wrap{padding:var(--cp-s2) var(--cp-gutter)!important}
  .half-map-wrap .page-title-wrap .d-flex{gap:var(--cp-s2)}
  .half-map-wrap .page-title-wrap .sort-by{margin-left:auto;min-width:0}
  .half-map-wrap .page-title-wrap .sort-by .bootstrap-select{width:auto!important;max-width:100%}
}

/* ---------- 4. Кнопка «Фильтры» на телефоне (.mobile-search-nav: псевдополе, открывает окно фильтров) ---------- */
.advanced-search.mobile-search-nav{padding:var(--cp-s2) 0;border-radius:0;border-bottom:1px solid var(--cp-line);background:var(--cp-surface);box-shadow:none}
.mobile-search-nav .container{padding-inline:var(--cp-gutter)}
.mobile-search-nav .form-group{margin:0}
.mobile-search-nav .search-icon{position:relative}
.mobile-search-nav .search-icon::before{color:var(--cp-accent-text);height:var(--cp-tap);line-height:var(--cp-tap)}
.mobile-search-nav .search-icon input.form-control{min-height:var(--cp-tap);height:var(--cp-tap);padding-left:var(--cp-s8);border:1px solid var(--cp-line-strong);border-radius:var(--cp-r-pill);background:var(--cp-surface);color:var(--cp-text);font:500 var(--cp-fs-base)/1.2 var(--cp-font-text);cursor:pointer;box-shadow:none}
.mobile-search-nav .search-icon input.form-control::placeholder{color:var(--cp-text);opacity:1}
.mobile-search-nav .search-icon input.form-control:focus{border-color:var(--cp-accent);box-shadow:0 0 0 3px var(--cp-accent-soft)}

/* ---------- 5. Окно фильтров на телефоне (.overlay-search-advanced-module, класс open ставит custom.js) ---------- */
.overlay-search-advanced-module{z-index:calc(var(--cp-z-header) + 1)!important;padding:var(--cp-s3) var(--cp-gutter) calc(var(--cp-mobilebar-h) + var(--cp-s6) + env(safe-area-inset-bottom));background:var(--cp-surface);color:var(--cp-text)}
.overlay-search-advanced-module .search-title{display:flex;align-items:center;justify-content:space-between;gap:var(--cp-s3);min-height:var(--cp-tap);padding:0 0 var(--cp-s4);font-family:var(--cp-font-head);font-size:var(--cp-fs-h4);font-weight:600;color:var(--cp-text)}
.overlay-search-advanced-module .overlay-search-module-close{position:static;display:grid;place-items:center;flex:none;width:var(--cp-tap);height:var(--cp-tap);margin:0;padding:0;border:0;border-radius:var(--cp-r-pill);background:var(--cp-surface-2);color:var(--cp-text);font-size:var(--cp-fs-base);line-height:1}
.overlay-search-advanced-module .overlay-search-module-close:hover,.overlay-search-advanced-module .overlay-search-module-close:focus-visible{background:var(--cp-surface-3);color:var(--cp-text)}
.overlay-search-advanced-module .row{margin-inline:calc(-1 * var(--cp-s1))}
.overlay-search-advanced-module .row div[class^="col-"]{padding-inline:var(--cp-s1)}
.overlay-search-advanced-module .form-group{margin-bottom:var(--cp-s3)}
.overlay-search-advanced-module label,
.overlay-search-advanced-module .control-label,
.overlay-search-advanced-module .form-label{margin-bottom:var(--cp-s1);font-size:var(--cp-fs-sm);font-weight:500;color:var(--cp-muted)}
.overlay-search-advanced-module .form-control,
.overlay-search-advanced-module .bootstrap-select > .dropdown-toggle{min-height:var(--cp-tap);font-size:var(--cp-fs-base);color:var(--cp-text)}
.overlay-search-advanced-module .bootstrap-select > .dropdown-toggle .filter-option-inner-inner{font-size:var(--cp-fs-base)}
.overlay-search-advanced-module .dropdown-menu{border-color:var(--cp-line);border-radius:var(--cp-r-md);box-shadow:var(--cp-shadow-2)}
.overlay-search-advanced-module .dropdown-menu .dropdown-item{min-height:var(--cp-tap);display:flex;align-items:center;font-size:var(--cp-fs-base)}
.overlay-search-advanced-module .features-list .control{min-height:var(--cp-tap);display:flex;align-items:center;font-size:var(--cp-fs-sm)}
.overlay-search-advanced-module .btn-search{margin-top:var(--cp-s3)}
.overlay-search-advanced-module .reset-search-btn{margin-top:var(--cp-s2);width:100%}
.overlay-search-advanced-module .save-search-form-wrap{margin-top:var(--cp-s2)}

/* ---------- 6. Телефон: переключатель «Объекты / На карте» над нижней панелью, отступ списка ---------- */
@media (max-width:767.98px){
  .mobile-map-switch{width:auto;left:var(--cp-s4);right:var(--cp-s4);margin:0;bottom:calc(var(--cp-mobilebar-h) + var(--cp-s3) + env(safe-area-inset-bottom));z-index:calc(var(--cp-z-mobilebar) - 1);overflow:hidden;border:1px solid var(--cp-line);border-radius:var(--cp-r-md);background:var(--cp-surface);box-shadow:var(--cp-shadow-2)}
  body:not(.cp-has-mobilebar):not(:has(.cp-mobilebar)) .mobile-map-switch{bottom:calc(var(--cp-s4) + env(safe-area-inset-bottom))}
  .mobile-map-switch .btn{min-height:var(--cp-cat-btn-h);border-radius:0;font:600 var(--cp-fs-sm)/1.2 var(--cp-font-text);color:var(--cp-text)}
  .mobile-map-switch .btn:first-of-type{border-right-color:var(--cp-line)}
  .mobile-map-switch .btn:hover,.mobile-map-switch .btn:focus-visible,.mobile-map-switch .btn.active{background:var(--cp-accent-soft);color:var(--cp-accent-text)}
  .mobile-map-switch .btn .houzez-icon{color:inherit}
  /* Нижняя панель уже даёт отступ body (header-footer.css); здесь — место под переключатель карты */
  .half-map-wrap .half-map-right-wrap{padding-bottom:calc(var(--cp-cat-btn-h) + var(--cp-s5))}
  .half-map-wrap .half-map-right-wrap .pagination-wrap{margin-top:var(--cp-s5);margin-bottom:var(--cp-s4)}
}

/* ---------- 7. Без движения по просьбе системы ---------- */
@media (prefers-reduced-motion:reduce){
  .half-map-wrap .listing-switch-view .switch-btn{transition:none}
}

/* ---------- Сдвиг вёрстки при загрузке каталога (CLS 0,51 на компьютере, проверено 06.11.2026) ----------
   До инициализации bootstrap-select поля-списки Houzez имеют нулевую высоту, затем строка фильтров вырастает на 44 px
   и сдвигает выдачу. Резервируем высоту поля заранее. */
.houzez-search-form-js .form-group:has(select.selectpicker){min-height:var(--cp-tap)}
