/* Hangout v94 — Calm Motion
   Motion is reserved for state communication. Layout geometry stays fixed. */
:root{
  --ho-motion-fast:140ms;
  --ho-motion-base:190ms;
  --ho-motion-slow:260ms;
  --ho-ease:cubic-bezier(.2,.65,.25,1);
  --ho-primary:var(--hangout-theme-primary,#174a7e);
  --ho-primary-soft:var(--hangout-theme-primary-soft,#edf3f9);
  --ho-primary-rgb:var(--hangout-theme-rgb,23,74,126);
}

@keyframes hoCalmGlint{
  0%{opacity:0;transform:translateX(-180%) skewX(-18deg)}
  35%{opacity:.22}
  100%{opacity:0;transform:translateX(330%) skewX(-18deg)}
}
@keyframes hoCalmFade{
  from{opacity:.72}
  to{opacity:1}
}

html[data-hangout-motion="v94"] button,
html[data-hangout-motion="v94"] a,
html[data-hangout-motion="v94"] [role="button"],
html[data-hangout-motion="v94"] input,
html[data-hangout-motion="v94"] select,
html[data-hangout-motion="v94"] textarea{
  -webkit-tap-highlight-color:transparent;
  transition-property:color,background-color,border-color,box-shadow,opacity!important;
  transition-duration:var(--ho-motion-base)!important;
  transition-timing-function:var(--ho-ease)!important;
}
html[data-hangout-motion="v94"] :focus-visible{
  outline:3px solid rgba(var(--ho-primary-rgb),.22)!important;
  outline-offset:3px!important;
}

/* No floating or breathing logo: it is a fixed anchor of the header. */
.hangout-logo-wrap,
.hangout-logo-image,
.hangout-brand-art,
.hangout-brand-logo-img{
  animation:none!important;
  transform:none!important;
}
.hangout-logo-image,
.hangout-brand-art,
.hangout-brand-logo-img{
  transition:opacity var(--ho-motion-slow) ease!important;
}

/* Stable header: only surface depth changes after scrolling. */
.ys-client-shell>header,
.ys-page-in>header,
.ys-global-nav,
.hangout-public-nav,
.hangout-property-nav{
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  transition:background-color var(--ho-motion-base) ease,border-color var(--ho-motion-base) ease,box-shadow var(--ho-motion-base) ease!important;
}
body.ho-scrolled .ys-client-shell>header{
  background:rgba(255,255,255,.98)!important;
  border-bottom-color:rgba(var(--ho-primary-rgb),.12)!important;
  box-shadow:0 8px 24px rgba(20,35,50,.055)!important;
}

/* The signature glint runs once on intent, never in an idle loop. */
.ho-signature{position:relative;isolation:isolate;overflow:hidden}
.ho-signature::before{
  content:"";
  position:absolute;
  z-index:0;
  top:-30%;
  bottom:-30%;
  left:-35%;
  width:24%;
  opacity:0;
  pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent);
}
.ho-signature:hover::before,
.ho-signature:focus-visible::before{animation:hoCalmGlint .82s var(--ho-ease) 1}
.ho-signature>*{position:relative;z-index:1}

/* Navigation communicates selection without moving the label. */
.ho-nav-item{position:relative}
.ho-nav-item::after{
  content:"";
  position:absolute;
  left:14%;
  right:14%;
  bottom:2px;
  height:2px;
  border-radius:2px;
  background:var(--ho-primary);
  transform:scaleX(0);
  transform-origin:center;
  transition:transform var(--ho-motion-base) var(--ho-ease);
}
.ho-nav-item:hover::after,
.ho-nav-item:focus-visible::after,
.ho-nav-item[aria-current="page"]::after{transform:scaleX(1)}

/* Menus and modals fade in; there is no bounce or scale. */
.ys-language-menu,
.ys-currency-menu,
.ys-modal-panel,
.ys-auth-card{
  transform:none!important;
  animation:hoCalmFade var(--ho-motion-base) ease both!important;
}

/* Cards keep their geometry. Hover changes only border and depth. */
.ho-card,
.hangout-hero-property,
.hangout-card,
.ys-crm-kpi,
.ys-crm-card,
.ys-builder-layer,
.ys-builder-add-card,
.ys-partner-property-card,
.ys-partner-review-card,
#hangout-services article,
[data-site-block="services"] article,
[data-site-block="social"] article{
  transition-property:border-color,box-shadow,background-color,opacity!important;
  transition-duration:var(--ho-motion-slow)!important;
  transition-timing-function:var(--ho-ease)!important;
}
.ho-card:hover,
.hangout-hero-property:hover,
.hangout-card:hover,
.ys-crm-kpi:hover,
.ys-builder-layer:hover,
.ys-builder-add-card:hover,
.ys-partner-property-card:hover,
.ys-partner-review-card:hover,
#hangout-services article:hover,
[data-site-block="services"] article:hover,
[data-site-block="social"] article:hover{
  transform:none!important;
  border-color:rgba(var(--ho-primary-rgb),.19)!important;
  box-shadow:0 12px 28px rgba(20,35,50,.075)!important;
}
.ho-card img,
.hangout-hero-property img,
.hangout-card img,
.ys-partner-property-media img,
#hangout-services article img{
  animation:none!important;
  transform:none!important;
  filter:none!important;
  transition:opacity var(--ho-motion-slow) ease!important;
}
.ho-card:hover img,
.hangout-hero-property:hover img,
.hangout-card:hover img,
.ys-partner-property-card:hover .ys-partner-property-media img,
#hangout-services article:hover img{
  transform:none!important;
  filter:none!important;
}

/* Filters and fields use color feedback, not movement. */
.hangout-filter-chip,
.hangout-quick-filter,
.hangout-stay-mode button,
.ys-extra,
.ys-builder-devicebar button,
.ys-builder-palette,
.ys-builder-rail button{
  transform:none!important;
  transition-property:color,background-color,border-color,box-shadow,opacity!important;
  transition-duration:var(--ho-motion-base)!important;
  transition-timing-function:var(--ho-ease)!important;
}
.hangout-filter-chip:hover,
.hangout-quick-filter:hover,
.hangout-stay-mode button:hover,
.ys-extra:hover,
.ys-builder-devicebar button:hover,
.ys-builder-palette:hover,
.ys-builder-rail button:hover{
  transform:none!important;
  border-color:rgba(var(--ho-primary-rgb),.25)!important;
  box-shadow:0 0 0 3px rgba(var(--ho-primary-rgb),.06)!important;
}
.hangout-filter-chip[aria-pressed="true"],
.hangout-quick-filter[aria-pressed="true"],
.hangout-stay-mode button[aria-pressed="true"],
.ys-extra.is-on,
.ys-builder-devicebar button[aria-pressed="true"],
.ys-builder-palette[aria-pressed="true"],
.ys-builder-rail button[aria-pressed="true"]{
  animation:none!important;
  transform:none!important;
  background:var(--ho-primary-soft)!important;
  border-color:rgba(var(--ho-primary-rgb),.27)!important;
}
.hangout-search-form input:focus,
.hangout-search-form select:focus,
.ys-auth-field:focus-within,
.ys-booking-cta-card:focus-within{
  transform:none!important;
  box-shadow:0 0 0 3px rgba(var(--ho-primary-rgb),.1)!important;
}

/* Actions never shift when pressed. */
html[data-hangout-motion="v94"] button:active,
html[data-hangout-motion="v94"] a:active,
html[data-hangout-motion="v94"] [role="button"]:active{
  transform:none!important;
  opacity:.88;
}

/* CRM and builder retain useful drag state without rotation or scaling. */
.ys-crm-card.ho-dragging,
.ys-builder-layer.ho-dragging{
  transform:none!important;
  opacity:.78!important;
  box-shadow:0 14px 30px rgba(20,35,50,.14)!important;
}
.ys-builder-layer.ho-drop-target{
  transform:none!important;
  border-color:var(--ho-primary)!important;
  box-shadow:inset 0 3px 0 var(--ho-primary)!important;
}
.ys-builder-canvasbar{
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
}

/* Remove the noisy v92 effects even if stale classes remain after hot reload. */
.ho-reveal,
.ho-reveal.is-visible,
.ys-page-in footer{
  opacity:1!important;
  transform:none!important;
  animation:none!important;
}
.ho-ripple,
.ho-hero-progress{display:none!important}
.ho-heart-pop,
.ho-searching,
.ys-chat-launcher,
.ys-dirty-badge,
.ys-error-badge,
.ys-account-status,
.ys-partner-property-status,
.ys-partner-review-status{
  animation:none!important;
  transform:none!important;
}

@media(hover:none){
  .ho-signature::before,.ho-nav-item::after{display:none}
  .ho-card:hover,.hangout-hero-property:hover,.hangout-card:hover{box-shadow:none!important}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto!important}
  *,*::before,*::after{
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    transition-duration:.001ms!important;
    scroll-behavior:auto!important;
  }
  .ho-signature::before,.ho-nav-item::after{display:none!important}
}

/* Заголовок в попапе карты ведёт в карточку объекта — показываем это курсором. */
.ys-popup-title[data-property-id] {
  cursor: pointer;
  text-decoration-line: underline;
  text-decoration-color: rgba(23, 74, 126, 0.28);
  text-underline-offset: 3px;
}
.ys-popup-title[data-property-id]:hover {
  color: #174a7e;
  text-decoration-color: currentColor;
}
.ys-popup-title[data-property-id]:focus-visible {
  outline: 3px solid rgba(23, 74, 126, 0.3);
  outline-offset: 2px;
  border-radius: 4px;
}

/* ============================================================
   v95.1 — нижний порог кегля на публичных страницах.
   На карточках и в шапке оставались подписи 9–11,5px: на телефоне
   они нечитаемы, а проект держит минимум 12px ещё с v60.
   Логотипный слоган и декоративные шевроны сознательно не трогаем.
   ============================================================ */
.hangout-amenity-chip { font-size: 12.5px !important; }
.hangout-photo-count,
.hangout-photo-count span { font-size: 12px !important; }
.hangout-verified,
.hangout-verified span { font-size: 12px !important; }
.hangout-value-proof span { font-size: 12px !important; }
.hangout-public-links a { font-size: 12.5px !important; }
.hangout-section-kicker,
.hangout-sale-eyebrow { font-size: 12px !important; }
.hangout-intent-label,
.hangout-more-filters,
.hangout-more-filters span { font-size: 12.5px !important; }
.hangout-search-note span { font-size: 12.5px !important; }
.ys-sort-control > span { font-size: 12px !important; }
.hangout-currency-control > span { font-size: 12px !important; }
.ys-currency-trigger-code { font-size: 12.5px !important; }
.ys-currency-trigger-symbol { font-size: 12px !important; }
.ys-currency-menu-title { font-size: 11.5px !important; }
.ys-currency-option-meta { font-size: 12px !important; }

/* Второй проход: подвал, часы, юридические строки и утилитарные классы
   Tailwind внутри публичной оболочки. Нижняя граница — те же 12px. */
.ys-client-shell .hangout-gift-caption { font-size: 12px !important; }
.ys-client-shell .ys-local-clock-label { font-size: 12px !important; }
.ys-client-shell .ys-local-clock-date { font-size: 12.5px !important; }
.ys-client-shell .ys-local-clock-zone { font-size: 12px !important; }
.ys-client-shell .ys-business-address { font-size: 12px !important; }
.ys-client-shell .ys-legal-note { font-size: 12.5px !important; }
/* Служебные утилиты Tailwind дают 11,5px и меньше. Публичную оболочку
   поднимаем до порога; кабинеты не трогаем — там плотные таблицы,
   а проверить их без работающего API в этой среде нельзя. */
.ys-client-shell .text-xs { font-size: 12.5px !important; }
.text-\[11px\] { font-size: 12px !important; }
.text-\[10px\] { font-size: 12px !important; }

/* Мобильная компоновка поиска сжимала подпись до 11,5px — держим 12,5px. */
@media (max-width: 760px) {
  #hangout-search .hangout-more-filters,
  #hangout-search .hangout-clear-filters { font-size: 12.5px !important; }
}

/* Компактные правила героя пришпиливали 11,5px через !important:
   перекрываем той же специфичностью, иначе порог не действует. */
[data-site-block="hero"] .mb-2.text-xs { font-size: 12.5px !important; }
.hangout-hero-property > .mt-4.grid > div .text-xs { font-size: 12.5px !important; }

/* Страница объекта: подписи фактов, цены и телефона тоже держим на пороге.
   Слоган в логотипе (header) не трогаем — он часть фирменного блока. */
.ys-client-shell main small { font-size: 12px !important; }
.ys-about-stat-label { font-size: 12px !important; }
.ys-call-label { font-size: 12px !important; }

/* «Добавить →» после укрупнения кегля переносился на вторую строку. */
.ys-service-choice-action { white-space: nowrap !important; }
.ys-service-choice-bottom { flex-wrap: wrap !important; row-gap: 6px !important; }

/* Счётчик избранного в шапке: цифра на 9px не читалась. */
.hangout-header-count { font-size: 11px !important; }

/* ============================================================
   v95.2 — работа со списком объектов.
   1. Липкая строка каталога: сортировка, вид и активные фильтры.
   2. Подсветка карточки, к которой вернулись.
   3. Свёрнутый герой, когда поиск уже задан.
   4. Тач-цели 44px и контраст служебных подписей.
   ============================================================ */

/* --- 1. Липкая строка каталога --------------------------------------- */
.ys-catalog-bar {
  position: sticky;
  top: calc(var(--ys-header-h, 118px) - 1px);
  z-index: 28;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px 12px;
  margin-top: 14px;
  padding: 10px 14px;
  border: 1px solid var(--hangout-line, #dce4ed);
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.93);
  box-shadow: 0 8px 24px rgba(25, 43, 60, 0.07);
  backdrop-filter: saturate(180%) blur(14px);
  -webkit-backdrop-filter: saturate(180%) blur(14px);
}
.ys-catalog-bar-count {
  flex: 0 0 auto;
  font-size: 14px;
  font-weight: 600;
  color: #5c6b7c;
  white-space: nowrap;
}
.ys-catalog-bar-count b {
  font-size: 17px;
  font-weight: 900;
  color: var(--hangout-ink, #162332);
}
.ys-catalog-bar-chips {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1 1 200px;
  min-width: 0;
  overflow-x: auto;
  padding-bottom: 2px;
  scrollbar-width: thin;
}
.ys-catalog-chip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  flex: 0 0 auto;
  min-height: 38px;
  padding: 0 13px;
  border: 1px solid #cfdbe6;
  border-radius: 999px;
  background: #fff;
  font-family: inherit;
  font-size: 13px;
  font-weight: 700;
  color: #26405a;
  cursor: pointer;
  transition: border-color 0.16s ease, background 0.16s ease;
}
.ys-catalog-chip:hover { border-color: #9fb6cb; background: #f6fafd; }
.ys-catalog-chip i { font-style: normal; font-size: 16px; line-height: 1; color: #7d8fa1; }
.ys-catalog-chip:hover i { color: #b64b3f; }
.ys-catalog-chip.is-reset { border-style: dashed; color: #7a4a42; }
.ys-catalog-bar .ys-catalog-tools { flex: 0 0 auto; margin-left: auto; }

@media (max-width: 760px) {
  .ys-catalog-bar { gap: 8px; padding: 8px 10px; border-radius: 16px; }
  .ys-catalog-bar-count { font-size: 13px; }
  .ys-catalog-bar-count b { font-size: 15px; }
  .ys-catalog-bar .ys-catalog-tools {
    width: 100% !important;
    flex-wrap: nowrap !important;
    gap: 8px !important;
    margin-left: 0;
  }
  .ys-catalog-bar .ys-sort-control { flex: 1 1 auto !important; min-width: 0; gap: 0 !important; }
  .ys-catalog-bar .ys-sort-control > span { display: none; }
  .ys-catalog-bar .ys-sort-control select { width: 100% !important; }
  .ys-catalog-bar .ys-map-view-toggle { flex: 0 0 auto; }
}

/* --- 2. Карточка, к которой вернулись --------------------------------- */
.ys-card-returned { animation: ys-card-return 1.8s ease-out 1; }
@keyframes ys-card-return {
  0%, 55% {
    box-shadow: 0 0 0 3px rgba(23, 74, 126, 0.34), 0 18px 36px rgba(25, 43, 60, 0.12);
  }
  100% { box-shadow: 0 8px 24px rgba(25, 43, 60, 0.045); }
}
@media (prefers-reduced-motion: reduce) {
  .ys-card-returned { animation: none; }
}

/* --- 3. Поиск задан — герой уступает место результатам ---------------- */
[data-search-active="1"] .hangout-hero-property,
[data-search-active="1"] [data-site-block="featured"] { display: none !important; }
[data-search-active="1"] [data-site-block="hero"] h1 {
  font-size: clamp(26px, 3vw, 38px) !important;
  line-height: 1.05 !important;
}
[data-search-active="1"] [data-site-block="catalog"] { margin-top: -8px; }

/* --- 4. Тач-цели не меньше 44px на телефоне --------------------------- */
@media (max-width: 760px) {
  .hangout-header-icon-btn,
  .hangout-header-fav,
  .hangout-header-trips,
  .hangout-header-account,
  .hangout-header-user-btn {
    min-width: 44px !important;
    min-height: 44px !important;
  }
  .ys-language-trigger,
  .ys-currency-trigger { min-height: 44px !important; }
  .hangout-quick-filter { min-height: 44px !important; }
  .ys-favorite { width: 44px !important; height: 44px !important; }
  .ys-catalog-chip { min-height: 44px; }
  .hangout-more-filters,
  .hangout-clear-filters {
    display: inline-flex !important;
    align-items: center;
    min-height: 44px !important;
  }
}

/* --- 4б. Контраст служебных подписей до 4.5 --------------------------- */
.ys-sort-control > span { color: #5c6b7c !important; }
.ys-currency-menu-title { color: #5c6b7c !important; }
.ys-currency-option-meta { color: #5c6b7c !important; }
.hangout-price-sub { color: #5c6b7c !important; }

/* Полоса не должна съедать экран вместе с шапкой: под ней ещё список. */
.ys-catalog-bar { padding: 7px 12px !important; }
.ys-catalog-bar .ys-sort-control select { min-height: 40px !important; padding-block: 7px !important; }
.ys-catalog-bar .ys-map-view-toggle { padding: 10px 15px !important; min-height: 40px !important; }
.ys-catalog-bar .ys-catalog-chip { min-height: 36px; }
@media (max-width: 760px) {
  .ys-catalog-bar .ys-sort-control select,
  .ys-catalog-bar .ys-map-view-toggle { min-height: 44px !important; }
  .ys-catalog-bar .ys-catalog-chip { min-height: 44px; }
}

/* На телефоне полоса — одна прокручиваемая строка: шапка и без того
   занимает 134px, две-три строки поверх неё съедали треть экрана. */
@media (max-width: 760px) {
  .ys-catalog-bar {
    flex-wrap: nowrap !important;
    overflow-x: auto;
    gap: 8px !important;
    padding: 7px 10px !important;
    scrollbar-width: none;
  }
  .ys-catalog-bar::-webkit-scrollbar { display: none; }
  .ys-catalog-bar-count { display: none; }
  .ys-catalog-bar .ys-catalog-tools {
    order: 0;
    width: auto !important;
    flex: 0 0 auto !important;
    margin-left: 0;
  }
  .ys-catalog-bar .ys-sort-control { flex: 0 0 auto !important; }
  .ys-catalog-bar .ys-sort-control select { width: auto !important; min-width: 152px; }
  .ys-catalog-bar-chips { order: 1; flex: 0 0 auto; overflow: visible; }
}

/* Тач-цели: перебиваем прежние правила той же специфичностью. */
@media (max-width: 760px) {
  .hangout-intent-chips .hangout-quick-filter { min-height: 44px !important; }
  .ys-client-shell > header .hangout-header-icon-btn,
  .ys-client-shell > header .hangout-header-fav,
  .ys-client-shell > header .hangout-header-trips,
  .ys-client-shell > header .hangout-header-account,
  .ys-client-shell > header .hangout-header-user-btn {
    width: 44px !important;
    min-width: 44px !important;
    height: 44px !important;
    min-height: 44px !important;
  }
  .ys-legal-row button,
  .ys-legal-row a {
    display: inline-flex !important;
    align-items: center;
    min-height: 44px !important;
  }
}
@media (max-width: 380px) {
  .ys-client-shell > header .hangout-header-icon-btn,
  .ys-client-shell > header .hangout-header-fav,
  .ys-client-shell > header .hangout-header-trips,
  .ys-client-shell > header .hangout-header-account,
  .ys-client-shell > header .hangout-header-user-btn {
    width: 44px !important;
    min-width: 44px !important;
    height: 44px !important;
    min-height: 44px !important;
  }
}

/* Блок каталога уезжал в ysFadeUp, и после анимации на нём оставался
   единичный transform. Он создаёт containing block и убивает sticky
   у полосы внутри. Каталогу оставляем только проявление по прозрачности. */
@keyframes ysFadeInOnly { from { opacity: 0 } to { opacity: 1 } }
[data-site-block="catalog"] { animation-name: ysFadeInOnly !important; transform: none !important; }

/* Язык и валюта в шапке: перебиваем правило с той же специфичностью. */
@media (max-width: 760px) {
  .ys-client-shell > header .ys-language-trigger,
  .ys-client-shell > header .ys-currency-trigger { min-height: 44px !important; }
}

/* Остальные подписи, не дотягивавшие до 4.5 на белом. */
.ys-local-clock-label,
.ys-local-clock-zone,
.ys-business-address,
.ys-legal-note { color: #5c6b7c !important; }
/* Класс живёт на двух разных фонах: тёмная карточка «Главное предложение»
   и светлая «Подарочная карта». Один цвет на оба не годится — в v95.2 я
   починил светлую и уронил тёмную до 2.16. Разводим по контексту. */
.hangout-sale-eyebrow { color: #3f6488 !important; }
.hangout-sale-main .hangout-sale-eyebrow,
[class*="hangout-sale-main"] .hangout-sale-eyebrow { color: #cfe0f0 !important; }

/* Приглушённый текст на белом по всему клиентскому пути: единый тон 5.4:1.
   Раньше здесь жили пять оттенков серого от 2.9 до 4.5. */
.ys-property-fact-label,
.ys-about-stat-label,
.ys-amenities-value,
.ys-availability-selection,
.ys-call-label,
.ys-service-choice-unit,
.ys-services-summary-intro,
.ys-services-empty,
.ys-services-privacy,
.ys-services-step span,
.ys-services-total span { color: #5c6b7c !important; }

/* Точечно: подпись цены в липкой панели объекта, подзаголовок удобств
   и золотой бейдж — все не дотягивали до 4.5. */
.ys-property-anchor-price small { color: #5c6b7c !important; }
.ys-amenities-heading p { color: #5c6b7c !important; }
.hangout-verified { color: #7d5612 !important; }

/* Кнопка «Продолжить с этой датой» в отключённом состоянии оставалась
   тёмно-синей с серым текстом — 2.96. Делаем её честно приглушённой. */
.ys-availability-cta:disabled {
  background: #e3e9f0 !important;
  color: #5c6b7c !important;
  box-shadow: none !important;
}
/* Тема перекрашивала и отключённую кнопку — отсюда серый текст на синем. */
html[data-hangout-theme] .ys-availability-cta:disabled {
  background: #e9eef4 !important;
  color: #4f5c6b !important;
  box-shadow: none !important;
}

/* Блок реквизитов с часами в подвале не помещался в 390px и выезжал на 22px.
   Раньше это скрывал overflow-x на body — вместе с работающим sticky. */
@media (max-width: 760px) {
  .ys-footer-business,
  .ys-footer-business > * ,
  .ys-local-clock { min-width: 0 !important; max-width: 100% !important; }
  .ys-footer-business { flex-wrap: wrap !important; }
  .ys-local-clock { flex-wrap: wrap !important; row-gap: 4px; }
}

/* ============================================================
   v95.3 — единая система вкладок и переключателей.

   Было шесть независимых наборов: высоты 36/37/40/40/46/52,
   кегли 12/12/12,5/13/14/14,5, радиусы 11/12/15/18/999.
   Стало три роли с общей шкалой:
     • вкладки и сегменты — 44px, радиус 14, 14px/700, активная 800;
     • плотные контролы тулбара — 40px (44 на телефоне), 13,5px/700;
     • фильтры-чипы — пилюля, 40px (44 на телефоне), 13,5px/700.
   Веса берём только из тех, что реально есть в Onest (700 и 800).
   ============================================================ */

:root {
  --ys-tab-radius: 14px;
  --ys-tab-h: 44px;
  --ys-ctl-h: 40px;
  --ys-tab-idle: #56677a;
  --ys-tab-hover-bg: #eef4fa;
  --ys-tab-line: #d5e0ea;
  --ys-tab-active-bg: var(--hangout-primary, #174a7e);
}

/* --- 1. Сегменты «На день / С ночёвкой» ------------------------------- */
.hangout-stay-mode > button {
  min-height: var(--ys-tab-h) !important;
  border-radius: var(--ys-tab-radius) !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  color: var(--ys-tab-idle) !important;
  transition: background 0.16s ease, color 0.16s ease;
}
.hangout-stay-mode > button:hover { background: var(--ys-tab-hover-bg) !important; }
.hangout-stay-mode > button[aria-pressed="true"] {
  background: var(--ys-tab-active-bg) !important;
  color: #fff !important;
  font-weight: 800 !important;
  box-shadow: 0 6px 16px color-mix(in srgb, var(--hangout-primary, #174a7e) 22%, transparent) !important;
}

/* --- 2. Вкладки разделов объекта -------------------------------------- */
.ys-property-anchor-links button {
  min-height: var(--ys-ctl-h) !important;
  padding: 0 14px !important;
  border-radius: var(--ys-tab-radius) !important;
  font-size: 13.5px !important;
  font-weight: 700 !important;
  color: var(--ys-tab-idle) !important;
  white-space: nowrap;
  transition: background 0.16s ease, color 0.16s ease;
}
.ys-property-anchor-links button:hover { background: var(--ys-tab-hover-bg) !important; }
.ys-property-anchor-links button.is-active {
  background: var(--ys-tab-active-bg) !important;
  color: #fff !important;
  font-weight: 800 !important;
  box-shadow: 0 6px 16px color-mix(in srgb, var(--hangout-primary, #174a7e) 22%, transparent) !important;
}

/* --- 3. Категории услуг ------------------------------------------------ */
.ys-services-categories button {
  min-height: var(--ys-tab-h) !important;
  border-radius: var(--ys-tab-radius) !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  color: var(--ys-tab-idle) !important;
}
.ys-services-categories button:hover:not([aria-pressed="true"]) {
  background: var(--ys-tab-hover-bg) !important;
}
.ys-services-categories button[aria-pressed="true"] {
  background: var(--ys-tab-active-bg) !important;
  color: #fff !important;
  font-weight: 800 !important;
}

/* --- 4. Плотные контролы тулбара: сортировка и вид -------------------- */
.ys-catalog-bar .ys-sort-control select,
.ys-catalog-bar .ys-map-view-toggle {
  min-height: var(--ys-ctl-h) !important;
  height: var(--ys-ctl-h) !important;
  border-radius: var(--ys-tab-radius) !important;
  font-size: 13.5px !important;
  font-weight: 700 !important;
}
.ys-catalog-bar .ys-map-view-toggle {
  padding: 0 15px !important;
  border: 1px solid var(--ys-tab-line) !important;
  background: #fff !important;
  color: var(--hangout-primary, #174a7e) !important;
}
.ys-catalog-bar .ys-map-view-toggle:hover {
  background: var(--ys-tab-hover-bg) !important;
  border-color: #9fb6cb !important;
}

/* --- 5. Фильтры-чипы: единственная пилюльная роль --------------------- */
.hangout-quick-filter {
  min-height: var(--ys-ctl-h) !important;
  border-radius: 999px !important;
  padding: 0 15px !important;
  font-size: 13.5px !important;
  font-weight: 700 !important;
}
.hangout-quick-filter[aria-pressed="true"] { font-weight: 800 !important; }
.ys-catalog-chip {
  min-height: var(--ys-ctl-h) !important;
  font-size: 13.5px !important;
  font-weight: 700 !important;
}

@media (max-width: 760px) {
  .ys-property-anchor-links button,
  .hangout-quick-filter,
  .ys-catalog-chip,
  .ys-catalog-bar .ys-sort-control select,
  .ys-catalog-bar .ys-map-view-toggle {
    min-height: 44px !important;
  }
  .ys-catalog-bar .ys-map-view-toggle { height: 44px !important; }
}

/* У чипов быстрых фильтров семь конкурирующих объявлений в старых слоях,
   и выигрывало правило с префиксом блока. Перебиваем той же специфичностью. */
[data-site-block="hero"] .hangout-quick-filter,
.hangout-intent-chips .hangout-quick-filter {
  min-height: var(--ys-ctl-h) !important;
  border-radius: 999px !important;
  padding: 0 15px !important;
  font-size: 13.5px !important;
  font-weight: 700 !important;
}
@media (max-width: 760px) {
  [data-site-block="hero"] .hangout-quick-filter,
  .hangout-intent-chips .hangout-quick-filter { min-height: 44px !important; }
}

/* На телефоне панель разделов была полностью скрыта: по длинной странице
   объекта — галерея, факты, удобства, даты, карта, отзывы — оставалась
   только прокрутка. Возвращаем её как узкую прокручиваемую строку.
   Цену и кнопку не дублируем: они уже есть в нижней закреплённой панели. */
@media (max-width: 760px) {
  .ys-property-anchorbar {
    display: flex !important;
    top: var(--ys-header-h, 0px) !important;
    z-index: 26;
    margin: 12px 0 !important;
    padding: 6px 8px !important;
  }
  .ys-property-anchorbar .ys-property-anchor-price { display: none !important; }
  .ys-property-anchor-links {
    width: 100%;
    gap: 6px;
    padding-bottom: 1px;
    -webkit-overflow-scrolling: touch;
  }
  .ys-property-anchor-links button { padding: 0 13px !important; font-size: 13px !important; }
}

/* У двух разделов не было отступа прокрутки, и липкая панель накрывала их
   заголовок при переходе. Выравниваем все шесть. */
.ys-property-facts-card,
.ys-amenities-shell { scroll-margin-top: 92px; }

/* ============================================================
   v95.4 — слой характера.
   Фирменный синий и структура на месте, меняется тон:
   линия Арарата между блоками, живой герой, отзывчивые карточки,
   волна по меткам карты, тёплый вечер по времени Еревана.
   Всё движение снимается при prefers-reduced-motion.
   ============================================================ */

/* --- 1. Время суток в Ереване ---------------------------------------- */
/* Меняем только теплоту акцентов и подложек. Контрастные пары текста
   не трогаем: доступность не должна зависеть от времени суток. */
:root {
  --ho-warm: 0;
  --ho-accent: var(--hangout-accent, #d69a2d);
  --ho-glow: rgba(23, 74, 126, 0.14);
}
html[data-daypart="morning"] {
  --ho-warm: 0.35;
  --ho-glow: rgba(214, 154, 45, 0.16);
}
html[data-daypart="day"] { --ho-warm: 0.15; }
html[data-daypart="evening"] {
  --ho-warm: 1;
  --ho-glow: rgba(199, 125, 58, 0.26);
}
html[data-daypart="night"] {
  --ho-warm: 0.6;
  --ho-glow: rgba(23, 74, 126, 0.3);
}

/* Вечером тёплый след под героем и карточкой выбора — как закатный свет. */
[data-site-block="hero"] > section {
  box-shadow: 0 24px 60px var(--ho-glow) !important;
  transition: box-shadow 0.6s ease;
}
html[data-daypart="evening"] .hangout-verified,
html[data-daypart="evening"] .hangout-sale-eyebrow { color: #8a5a12 !important; }

/* --- 2. Полоса-пейзаж между блоками ------------------------------------ */
/* Присланный кадр с выключенным небом. Кадр обрезается по высоте
   (object-fit: cover), по краям растворяется маской, чтобы не упираться
   в границы колонки резкой вертикалью. */
.ho-ridge {
  width: 100%;
  height: 170px;
  margin: 18px 0 6px;
  overflow: hidden;
  pointer-events: none;
  /* Растворяем только по горизонтали, чтобы кадр не упирался в границы
     колонки резкой вертикалью. Низ оставляем ровным краем. */
  -webkit-mask-image: linear-gradient(
    90deg, transparent 0%, #000 9%, #000 91%, transparent 100%);
  mask-image: linear-gradient(
    90deg, transparent 0%, #000 9%, #000 91%, transparent 100%);
}
.ho-ridge-art {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 0.9s ease, transform 0.9s cubic-bezier(0.22, 1, 0.36, 1);
}
.ho-ridge.is-drawn .ho-ridge-art { opacity: 1; transform: none; }
/* Вечером кадр слегка теплеет вместе с остальными акцентами. */
html[data-daypart="evening"] .ho-ridge-art {
  filter: sepia(0.16) saturate(1.06) hue-rotate(-6deg);
}
html[data-daypart="night"] .ho-ridge-art { filter: saturate(0.85) brightness(0.94); }
@media (max-width: 760px) {
  .ho-ridge { height: 112px; margin: 12px 0 4px; }
}
@media (prefers-reduced-motion: reduce) {
  .ho-ridge-art {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* --- 3. Герой: фото живёт своей жизнью -------------------------------- */
.hangout-hero-property img,
.ys-services-hero-media img {
  will-change: transform;
  transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

/* --- 4. Карточка каталога: обложка наезжает, цена всплывает ----------- */
.hangout-card { transition: transform 0.24s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.24s ease; }
.hangout-card .hangout-price-total,
.hangout-card .hangout-card-link {
  transition: transform 0.24s cubic-bezier(0.22, 1, 0.36, 1), color 0.2s ease;
}
.hangout-card:hover .hangout-price-total { transform: translateY(-2px); }
.hangout-card:hover .hangout-card-link { transform: translateX(3px); }
.hangout-card .hangout-card-link span { transition: transform 0.24s cubic-bezier(0.22, 1, 0.36, 1); }
.hangout-card:hover .hangout-card-link span { transform: translateX(4px); }
.hangout-card .hangout-photo-count { transition: opacity 0.2s ease, transform 0.24s ease; }
.hangout-card:hover .hangout-photo-count { transform: translateY(-2px); }

/* --- 5. Метки карты: волна при появлении ------------------------------ */
.ys-price-pin { position: relative; }
.ho-pin-wave::after {
  content: "";
  position: absolute;
  inset: -3px;
  border-radius: 999px;
  border: 2px solid var(--hangout-primary, #174a7e);
  opacity: 0;
  animation: ho-pin-ring 1s ease-out var(--ho-pin-delay, 0ms) 1;
}
@keyframes ho-pin-ring {
  0% { transform: scale(0.9); opacity: 0.55; }
  100% { transform: scale(1.9); opacity: 0; }
}
.ys-price-pin:hover,
.ys-price-pin:focus-visible { z-index: 5; }

/* --- 6. Рисунок в пустом состоянии ------------------------------------ */
.hangout-empty-icon.ho-art {
  display: grid;
  place-items: center;
  width: 132px;
  height: 92px;
  margin: 0 auto;
  border-radius: 18px;
  background: linear-gradient(180deg, #f4f8fc 0%, #eef4f9 100%);
}
.hangout-empty-icon.ho-art svg { width: 108px; height: 76px; }
.ho-art-sky { fill: var(--hangout-primary, #174a7e); opacity: 0.08; }
.ho-art-line {
  fill: none;
  stroke: var(--hangout-primary, #174a7e);
  stroke-width: 2.2;
  stroke-linejoin: round;
  stroke-linecap: round;
  opacity: 0.5;
}
.ho-art-sun { fill: var(--hangout-accent, #d69a2d); opacity: 0.75; }
.ho-art-roof { fill: var(--hangout-primary, #174a7e); opacity: 0.55; }
.ho-art-wall { fill: var(--hangout-primary, #174a7e); opacity: 0.32; }

/* --- 7. Уважение к настройке «меньше движения» ------------------------ */
@media (prefers-reduced-motion: reduce) {
  .ho-pin-wave::after { animation: none !important; }
  .hangout-card,
  .hangout-card .hangout-price-total,
  .hangout-card .hangout-card-link,
  .hangout-card .hangout-card-link span,
  .hangout-hero-property img,
  .ys-services-hero-media img { transition: none !important; }
  .hangout-card:hover .hangout-price-total,
  .hangout-card:hover .hangout-card-link,
  .hangout-card:hover .hangout-card-link span,
  .hangout-card:hover .hangout-photo-count { transform: none !important; }
}

/* --- Правки по замечаниям ------------------------------------------- */
/* «На карте» оказалась синей на синем: тема кладёт градиент через
   background с !important и специфичностью html[data-hangout-theme].
   Перебиваем и обязательно гасим background-image. */
html[data-hangout-theme] .ys-catalog-bar .ys-map-view-toggle,
.ys-catalog-bar .ys-map-view-toggle {
  background: #fff !important;
  background-image: none !important;
  color: var(--hangout-primary, #174a7e) !important;
  border: 1px solid var(--ys-tab-line, #d5e0ea) !important;
  box-shadow: none !important;
}
html[data-hangout-theme] .ys-catalog-bar .ys-map-view-toggle:hover,
.ys-catalog-bar .ys-map-view-toggle:hover {
  background: var(--ys-tab-hover-bg, #eef4fa) !important;
  border-color: #9fb6cb !important;
}
.ys-catalog-bar .ys-map-view-toggle .ys-map-view-toggle-icon { opacity: 0.75; }


/* ============================================================
   v95.6 — кабинеты ролей: контраст и нижний порог кегля.
   В публичной части это было приведено в порядок в v95.2, а кабинеты
   остались со своими приглушёнными тонами: 2.4–4.1 при норме 4.5.
   ============================================================ */

/* Общее для всех трёх кабинетов. */
.ys-stat-note { color: #5c6b7c !important; }
/* Заголовки групп в тёмном сайдбаре: #6a7d92 на #16283c даёт 3.54. */
.ys-admin-nav-group { color: #9fb3c9 !important; font-size: 12px !important; }
.ys-admin-sidebar-sub { font-size: 12px !important; }

/* Аналитика. */
.ys-insight-metric small,
.ys-insight-metric span,
.ys-analytics-card-head p { color: #55677a !important; }
.ys-insight-metric small { font-size: 12px !important; }
.ys-analytics-card-head p { font-size: 12.5px !important; }

/* CRM. */
.ys-crm-empty { color: #55677a !important; }
.ys-crm-subtitle { color: #55677a !important; }
.ys-crm-kpi-label,
.ys-crm-kpi-note,
.ys-crm-eyebrow,
.ys-crm-column-count { color: #55677a !important; font-size: 12px !important; }

/* Конструктор сайта. */
.ys-builder-layer-handle { color: #6b7c8d !important; }
.ys-builder-panel-help { color: #55677a !important; font-size: 12px !important; }
.ys-builder-brand-mark,
.ys-builder-mobile-warning { font-size: 12px !important; }

/* Пользователи и таблицы кабинетов: служебные подписи не мельче 12px. */
.ys-admin-main th { font-size: 12px !important; }

/* Часть подписей в кабинетах не имеет собственных классов — берём их по
   тегу внутри рабочей области, там это всегда служебный мелкий текст. */
.ys-admin-main small:not(.sr-only) {
  font-size: 12px !important;
  color: #55677a !important;
}
.ys-payment-legend small,
.ys-payment-legend span { color: #55677a !important; font-size: 12px !important; }
.ys-analytics-card-head p,
.ys-admin-main .ys-insight-metric p { color: #55677a !important; font-size: 12.5px !important; }
.ys-builder-canvas-hint { color: #55677a !important; font-size: 12px !important; }
.ys-builder-layer-handle { color: #5f7183 !important; }

/* --- v95.8. Подписи в кабинетах, оставшиеся ниже нормы ------------------ */
/* В v95.6 эти три подписи были записаны в «осталось»: собственных классов у
   них нет, и я не нашёл, за что зацепиться. Оказалось, зацепка есть —
   структура устойчивая. Замерено 3.69 и 3.72 при 10px, норма 4.5. */

/* «Аналитика»: пояснения под строками контроля. */
.ys-alert-row p {
  font-size: 12px !important;
  color: #4e5c6b !important;
}

/* «Пользователи»: вторая строка ячейки — идентификатор аккаунта и телефон.
   Это единственный <div> в ячейке без класса, поэтому селектор безопасен. */
.ys-account-table td > div:not([class]) {
  font-size: 12px !important;
  color: #4e5c6b !important;
}
/* Тот же приглушённый тон достался выпадающему списку статуса. */
.ys-account-table .ys-account-role {
  color: #24313f !important;
}

/* Конструктор: список слоёв. В исходных стилях подпись слоя 9px цветом
   #8a96a5 — это 3.01 при норме 4.5, а название слоя 11px. Поднимаем оба до
   12px и затемняем подпись. Название уже обрезается многоточием, подпись при
   нехватке ширины переносится на вторую строку. */
.ys-builder-layer-copy b { font-size: 12px !important; }
.ys-builder-layer-copy span {
  font-size: 12px !important;
  color: #4e5c6b !important;
}
.ys-builder-layer-action { font-size: 12px !important; }

/* Класс sr-only нигде не объявлен — ни в замороженном блоке Tailwind, ни в
   стилях сайта. Всё, что им помечали, показывалось на экране. Объявляем по
   стандартному рецепту, чтобы следующее использование сработало молча и
   правильно. */
.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

/* Конструктор: подписи кнопок размера предпросмотра и статус сохранения.
   Замерено 4.44 при 11px и 3.91 при 10px, норма 4.5. */
.ys-builder-device-label {
  font-size: 12px !important;
  color: #4a5766 !important;
}
.ys-builder-devicebar button[aria-pressed="true"] .ys-builder-device-label {
  color: inherit !important;
}
.ys-builder-brand span:not(:first-child) {
  font-size: 12px !important;
  color: #4e5c6b !important;
}

/* Последняя подпись мельче 12px в кабинетах: метка пресета в инспекторе
   конструктора. По контрасту проходила, по кеглю — нет. */
.ys-builder-inspector .rounded-full { font-size: 12px !important; }

/* «Аналитика»: подписи метрик, шкал и заголовков карточек. По контрасту
   прошли ещё в v95.6, по кеглю оставались 10–11px. */
.ys-insight-metric span,
.ys-analytics-card-head span,
.ys-analytics-bar span { font-size: 12px !important; }

/* Кольцо оплат в «Аналитике»: подпись в центре и суммы в легенде. */
.ys-payment-ring span,
.ys-payment-legend b { font-size: 12px !important; }

/* Кабинет сотрудника: список доступных ему разделов на рабочем столе. */
.ys-staff-permission { font-size: 12px !important; }

/* === v95.9. Планшетная шапка: логотип налезал на строку действий ======== */
/* Планшетная сетка (v86) закрепила первую строку на 62px под старый
   логотип-конструктор из отдельных элементов. Потом логотип заменили одной
   картинкой 1590×563, и правила, ужимавшие старые части, перестали на что-то
   влиять: картинка приходит 87px (или 76px до 980px) в строку высотой 62px и
   центрируется, вылезая на 12px вниз — прямо на кнопку «Подобрать дом».
   Строки делаем по содержимому, а логотип приводим к высоте строки. */
@media (min-width: 761px) and (max-width: 1199px) {
  .ys-client-shell > header > div {
    grid-template-rows: auto auto !important;
    min-height: 0 !important;
    row-gap: 4px !important;
    padding: 6px 0 !important;
  }
  /* 62 × 2.824 (пропорции файла) = 175 — ровно та высота,
     на которую рассчитывалась планшетная сетка */
  .ys-client-shell > header .ys-brand-btn {
    width: 175px !important;
    min-width: 175px !important;
    flex-basis: 175px !important;
    height: 62px !important;
  }
  .ys-client-shell > header .ys-brand-btn .hangout-logo-wrap,
  .ys-client-shell > header .ys-brand-btn .hangout-logo-image,
  .ys-client-shell > header .ys-brand-btn .hangout-brand-art {
    width: 175px !important;
    min-width: 175px !important;
    height: 62px !important;
    min-height: 62px !important;
  }
}

/* === Кнопка «На карте» на телефоне ===================================== */
/* Правило width:100% писалось, когда кнопка занимала отдельную строку во
   всю ширину. В v95.3 она переехала в .ys-catalog-tools — во flex-строку
   рядом с сортировкой, и «100%» стало считаться от ширины контейнера, а не
   от остатка: кнопка раздувалась до ширины всей строки и уезжала за экран.
   Размер по содержимому, сортировка забирает остаток. */
@media (max-width: 760px) {
  .ys-catalog-bar .ys-catalog-tools {
    width: 100% !important;
    min-width: 0 !important;
  }
  .ys-catalog-bar .ys-map-view-toggle {
    width: auto !important;
    min-width: 0 !important;
    flex: 0 0 auto !important;
  }
  .ys-catalog-bar .ys-sort-control {
    flex: 1 1 auto !important;
    min-width: 0 !important;
  }
  .ys-catalog-bar .ys-sort-control select {
    width: 100% !important;
    min-width: 0 !important;
  }
}

/* === Попап метки на карте: цели нажатия ================================ */
/* Заголовок был 19px, кнопка «Подробнее» 32px — ниже минимума 44px. На
   телефоне при открытии попапа карта ещё и панорамируется под него, так что
   попасть по такой цели почти невозможно: пользователь видел только, что
   метка «отпрыгнула». Теперь нажатие в любом месте попапа открывает дом,
   а сама кнопка доросла до нормы. */
.ys-map-popup { cursor: pointer; }
.ys-map-popup a,
.leaflet-popup-close-button { cursor: pointer; }
.ys-popup-btn {
  min-height: 44px !important;
  width: 100% !important;
}
.ys-popup-title { min-height: 24px; }

/* === Шапка на широком экране: блок действий наезжал на телефон ========== */
/* Сетка шапки — auto minmax(150px,1fr) auto. Средняя колонка не сжимается
   ниже 150px, а правая объявлена auto и при нехватке места не ужимается, а
   вылезает из своей дорожки влево — прямо на номер телефона. По-русски это
   не проявлялось, а по-армянски «Իմ ուղևորությունները» шире «Мои поездки» на
   80px, и на 1200–1290px блок действий перекрывал номер на 46px.
   Разрешаем действиям переноситься на вторую строку: тогда при любой длине
   подписей и на любом языке строка растёт в высоту, а не наезжает. */
@media (min-width: 1200px) {
  .ys-client-shell > header > div > .ys-client-actions {
    flex-wrap: wrap !important;
    min-width: 0 !important;
    row-gap: 6px !important;
  }
}

/* === Групповая метка на карте ========================================== */
/* Когда несколько объектов попадают в одну точку экрана, вместо стопки
   ценников показываем одну метку: сколько объектов и от какой цены.
   Нажатие приближает карту к этой группе. */
.ys-price-cluster {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 72px;
  height: 44px;
  border: 3px solid #fff;
  border-radius: 999px;
  background: #0b2f55;
  color: #fff;
  line-height: 1.05;
  white-space: nowrap;
  box-shadow: 0 6px 18px rgba(20, 35, 50, 0.32);
  transition: transform 0.15s ease, box-shadow 0.15s ease;
  cursor: pointer;
}
.ys-price-cluster b { font-size: 15px; font-weight: 900; }
.ys-price-cluster span { font-size: 10px; font-weight: 700; opacity: 0.85; }
.ys-price-cluster:hover {
  transform: scale(1.06);
  box-shadow: 0 9px 24px rgba(20, 35, 50, 0.4);
}

/* === v95.11. Телефон и вход в шапке ==================================== */

/* Телефон был голой ссылкой среди пилюль и кнопок — единственный элемент без
   собственной формы. Даём обводку, трубку и подпись о том, зачем звонить. */
.ys-client-shell > header .ys-header-business {
  min-width: 0 !important;
  max-width: none !important;
  padding: 0 !important;
  text-align: left !important;
}
.ys-business-call {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  height: 48px;
  padding: 0 15px;
  border: 1px solid rgba(21, 59, 93, 0.22);
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.72);
  color: #153b5d;
  text-decoration: none;
  white-space: nowrap;
  transition: border-color 0.16s ease, background 0.16s ease,
    transform 0.16s ease, box-shadow 0.16s ease;
}
.ys-business-call:hover,
.ys-business-call:focus-visible {
  border-color: #153b5d;
  background: #fff;
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(20, 35, 50, 0.12);
}
.ys-business-call svg { flex: 0 0 auto; opacity: 0.8; }
.ys-business-call-copy {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
}
.ys-business-call-label {
  font-size: 12px;
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: 0.02em;
  color: #5c6b7c;
}
/* Номер здесь не ссылка, а часть кнопки: подчёркивание при наведении лишнее. */
.ys-business-call .ys-business-phone {
  margin: 0 !important;
  font-size: 15px !important;
  font-weight: 850 !important;
  line-height: 1.15 !important;
  color: #153b5d !important;
  text-decoration: none !important;
}

/* Вход в кабинет был кружком 40×40 с полупрозрачной рамкой rgba(18,47,70,.17),
   то есть оформлен слабее «Избранного» рядом, а подпись «Войти» пряталась
   как раз на широких экранах, где места больше всего. Возвращаем подпись и
   выравниваем по главной кнопке: та же высота 48px и тот же радиус 18px.
   Заливку не берём — двух залитых кнопок подряд быть не должно, иначе
   «Подобрать дом» теряет вес. */
.ys-client-shell > header .hangout-header-user-label {
  display: inline !important;
  font-size: 14px !important;
  font-weight: 700 !important;
}
.ys-client-shell > header .hangout-header-user-btn {
  width: auto !important;
  min-width: 0 !important;
  height: 48px !important;
  min-height: 48px !important;
  gap: 8px !important;
  padding: 0 16px !important;
  border: 1.5px solid rgba(21, 59, 93, 0.45) !important;
  border-radius: 18px !important;
  background: #fff !important;
  color: #153b5d !important;
  box-shadow: none !important;
  transition: border-color 0.16s ease, background 0.16s ease,
    transform 0.16s ease, box-shadow 0.16s ease;
}
.ys-client-shell > header .hangout-header-user-btn:hover,
.ys-client-shell > header .hangout-header-user-btn:focus-visible {
  border-color: #153b5d !important;
  background: #f4f8fc !important;
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(20, 35, 50, 0.14) !important;
}

/* На узких экранах подпись и телефон снова сворачиваются: там места нет. */
@media (max-width: 760px) {
  .ys-client-shell > header .hangout-header-user-label {
    display: none !important;
  }
  .ys-client-shell > header .hangout-header-user-btn {
    width: 44px !important;
    min-width: 44px !important;
    height: 44px !important;
    min-height: 44px !important;
    padding: 0 !important;
    border-radius: 999px !important;
  }
}

/* Средняя колонка была minmax(150px,1fr), а колонка действий — auto: действия
   забирали всё нужное им место, телефон не помещался и вылезал на «Подобрать
   дом». Меняем приоритет: логотип и телефон берут свою ширину, а остаток
   достаётся действиям — они умеют переноситься на вторую строку. */
@media (min-width: 1200px) {
  .ys-client-shell > header > div {
    grid-template-columns: auto auto minmax(0, 1fr) !important;
  }
}

/* Ряду действий не хватало ровно нескольких пикселей, и он переносился на
   вторую строку уже на 1440. Отыгрываем их на зазоре между колонками и на
   внутренних отступах кнопки звонка. */
@media (min-width: 1200px) {
  .ys-client-shell > header > div { column-gap: 20px !important; }
  .ys-business-call { padding: 0 13px; gap: 9px; }
  .ys-business-call-label { font-size: 11.5px; }
}

/* Кнопка входа выросла с 40 до 102px, кнопка звонка со 150 до 218 — вместе
   это 130px, и языку с валютой перестало хватать места на первой строке.
   Возвращаем их обратно, поджав внутренние отступы, а не убирая ничего. */
@media (min-width: 1200px) {
  .ys-client-shell > header > div > .ys-client-actions { gap: 6px !important; }
  .ys-business-call { padding: 0 12px; gap: 8px; }
  /* 12px — тот же кегельный минимум, что и на всём сайте. Помещается
     за счёт более короткой подписи. */
  .ys-business-call-label { font-size: 12px; letter-spacing: 0.01em; }
  .ys-client-shell > header .hangout-header-user-btn { padding: 0 14px !important; }
}

/* На планшете старые правила ужимали кнопку входа до 35–38px — ниже минимума
   в 44px для пальца. Подпись там действительно некуда девать (строка действий
   и так плотная), но размер возвращаем. */
@media (min-width: 761px) and (max-width: 1023px) {
  .ys-client-shell > header .hangout-header-user-label {
    display: none !important;
  }
  .ys-client-shell > header .hangout-header-user-btn {
    width: 44px !important;
    min-width: 44px !important;
    height: 44px !important;
    min-height: 44px !important;
    padding: 0 !important;
    border-radius: 999px !important;
  }
}

/* Заголовок «Валюта» в выпадающем списке остался на 11.5px — последний
   элемент шапки мельче общего минимума в 12px. */
.ys-currency-menu-title { font-size: 12px !important; }

/* === v95.15. Шапка на широком экране: две строки ======================= */
/* Было: язык и валюта — столбик 124px в хвосте ряда действий; когда ряд не
   помещался, столбик уезжал вниз отдельным блоком.
   Стало: язык и валюта — своя строка сверху и в строчку, ряд действий стоит
   на одной линии с телефоном.

   Язык лежит внутри .ys-client-actions (обёртка display:contents), поэтому
   сеткой его не разложить. Первый вариант был через wrap-reverse, но при
   переполнении он выносит наверх лишнюю кнопку: по-армянски подписи длинные
   и «Войти» повисало сиротой над рядом. Поэтому язык выводим из потока —
   абсолютом в правый верхний угол, а ряду резервируем под него отступ.
   Высота шапки не растёт: её и так задаёт логотип в 99px. */
@media (min-width: 1200px) {
  .ys-client-shell > header > div {
    position: relative !important;
  }
  .ys-client-shell > header .ys-language-dropdown {
    position: absolute !important;
    top: 8px !important;
    right: 0 !important;
    left: auto !important;
    z-index: 9 !important;
    width: auto !important;
    min-width: 0 !important;
    height: auto !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: flex-end !important;
    gap: 8px !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    background: none !important;
    box-shadow: none !important;
  }
  /* В строчку черта-разделитель между языком и валютой не нужна. */
  .ys-client-shell > header .ys-currency-dropdown {
    width: auto !important;
    min-width: 0 !important;
    flex: 0 0 auto !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
  }
  .ys-client-shell > header .ys-language-trigger,
  .ys-client-shell > header .ys-currency-trigger {
    width: auto !important;
    min-width: 0 !important;
    height: 34px !important;
    min-height: 34px !important;
  }
  /* Ряд кнопок и телефон отсчитываются от верха строки на одну и ту же
     величину — так они совпадают по построению, а не потому что оба
     прижаты к низу. Раньше между полосой языка и кнопками оставалось
     16px пустоты, а внизу 8px; теперь зазор 6px, и весь ряд выше. */
  .ys-client-shell > header > div {
    --ys-hdr-row-top: 41px;
  }
  .ys-client-shell > header > div > .ys-client-actions {
    align-self: start !important;
    flex-wrap: wrap !important;
    align-content: flex-start !important;
    justify-content: flex-end !important;
    padding-top: var(--ys-hdr-row-top) !important;
    row-gap: 6px !important;
  }
  .ys-client-shell > header > div > .ys-header-business {
    align-self: start !important;
    margin-top: var(--ys-hdr-row-top) !important;
  }
}

/* === v95.17. Метки карты: не двигаются под курсором ===================== */
/* У метки при наведении был translateY(-5px) scale(1.04) с переходом 0.15s.
   Метка уезжала прямо под курсором — это видно как «прыжок при нажатии», и из-за
   движущейся области попадания нажатие и отпускание приходились на разные
   элементы. Подсветку оставляем, движение убираем. */
.ys-price-pin:hover,
.ys-price-pin:focus-visible {
  transform: translateY(-3px) !important;
}
.ys-price-cluster:hover,
.ys-price-cluster:focus-visible {
  transform: translate(-50%, -50%) !important;
}

/* Групповая метка по содержимому: коробку ей Leaflet больше не задаёт,
   поэтому центрируем сами относительно точки на карте. */
.ys-map-divicon .ys-price-cluster {
  position: absolute;
  left: 0;
  top: 0;
  transform: translate(-50%, -50%);
  width: auto;
  min-width: 72px;
  padding: 0 12px;
  white-space: nowrap;
}
