/* t_f2946159: токены объявляются на :root, а НЕ только на .hf-wrap. Причина найдена на
   живой проверке на 390px: нижняя панель .hf-bbar и три шторки .hf-sheet физически лежат
   вне .hf-wrap, поэтому переменные до них не доходили — getComputedStyle(.hf-bbar)['--tap']
   был пустым, кнопки схлопывались в 24px вместо 44, а background:var(--card) у шторки
   резолвился в прозрачный. Блок .hf-wrap ниже оставлен как есть (те же значения) —
   переопределение самому себе безвредно, а откат сводится к удалению этого блока. */
:root{
  --ink:#12213B; --ink-2:#3C4A63; --muted:#6B7280; --muted-2:#9AA1AD;
  --blue:#1E4FA3; --blue-deep:#0F2F66; --blue-soft:#EAF0FA;
  --coral:#E8502A; --green:#1E8E5A; --green-soft:#E8F5EE; --gold:#F0A93E;
  --paper:#F7F7F4; --card:#FFF; --line:#E8E8E2; --line-2:#F0F0EA;
  --r-s:8px; --r-m:12px; --r-l:18px; --r-pill:999px;
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:20px; --sp-6:24px; --sp-8:32px;
  --tap:44px;
  --sh-1:0 1px 2px rgba(18,33,59,.06); --sh-2:0 4px 16px rgba(18,33,59,.10); --sh-3:0 -2px 20px rgba(18,33,59,.10);
  --fs-11:11px; --fs-12:12px; --fs-13:13px; --fs-14:14px; --fs-15:15px; --fs-17:17px; --fs-20:20px; --fs-24:24px;
  --safe-b:env(safe-area-inset-bottom,0px); --bar-h:60px;
}
.hf-bbar,.hf-sheet{font-family:'Inter',sans-serif;color:var(--ink);}
/* t_f2946159 (решение Данила 08.09.2026): логотип на странице дублировался — шапка темы
   «vse rent» плюс наш .hf-logo в топбаре (в эталоне топбар и ЕСТЬ шапка, поэтому дубля
   там нет). Выбран минимальный вариант: прячем свой, шапку темы не трогаем — она несёт
   меню и кабинет, общие для всего сайта. Строка поиска забирает освободившуюся ширину. */
.hf-logo{display:none;}
.hf-wrap{max-width:1360px;margin:0 auto;padding:0 15px;font-family:'Inter',sans-serif;color:#12213B;--ink:#12213B;--blue:#1E4FA3;--blue-deep:#0F2F66;--coral:#E8502A;--paper:#F7F7F4;--line:#E8E8E2;--muted:#6B7280;--gold:#F0A93E;--green:#1E8E5A;
  /* t_f2946159: расширенный набор токенов под рерайт 1-в-1 (hotels-list-v2.html) —
     добавлены НОВЫМИ именами, старые (--ink/--blue/...) не трогаю, чтобы уже
     работающие правила ниже (пока не заменены) не сломались в переходный момент. */
  --ink-2:#3C4A63; --muted-2:#9AA1AD; --blue-soft:#EAF0FA; --green-soft:#E8F5EE;
  --card:#FFF; --line-2:#F0F0EA;
  --r-s:8px; --r-m:12px; --r-l:18px; --r-pill:999px;
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:20px; --sp-6:24px; --sp-8:32px;
  --tap:44px;
  --sh-1:0 1px 2px rgba(18,33,59,.06); --sh-2:0 4px 16px rgba(18,33,59,.10); --sh-3:0 -2px 20px rgba(18,33,59,.10);
  --fs-11:11px; --fs-12:12px; --fs-13:13px; --fs-14:14px; --fs-15:15px; --fs-17:17px; --fs-20:20px; --fs-24:24px;
  --safe-b:env(safe-area-inset-bottom,0px); --bar-h:60px;
}
/* t_35b6e8d9: скрываем дублирующий вендорский H1 (#pagetitle) — у нас свой в hf-top ниже. */
#pagetitle{display:none!important;}
.hf-wrap *{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
/* t_f2946159: тройной отступ по краям. Замер на живом 390px: тема даёт .wrapper_inner
   15px, .hf-wrap добавляет свои 15px, .hf-main ещё 16px — контент выходил 298px вместо
   358, карточки по 139px вместо ~173 как в эталоне, из-за чего теги вылезали за карточку.
   На мобиле гасим отступ .hf-wrap отрицательным margin (вычитаем 15px темы) и оставляем
   единственный отступ у .hf-main; блокам шапки, которые раньше жили на паддинге .hf-wrap,
   отступ возвращаем явно. С 600px правило снимается — там уже работает существующий
   @media (min-width:600px) с --sp-6, а отрицательный margin сломал бы центрирование.
   ВАЖНО: этот блок должен стоять ПОСЛЕ основного .hf-wrap{...} выше — специфичность та
   же, побеждает последнее правило. */
.hf-wrap{margin-left:-15px;margin-right:-15px;padding-left:0;padding-right:0;}
.hf-top-row,.hf-types,.hf-chips{padding-left:var(--sp-4);padding-right:var(--sp-4);}
@media (min-width:600px){.hf-wrap{margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;}}
.hf-wrap a{color:inherit;text-decoration:none;}
.hf-wrap button{font:inherit;cursor:pointer;border:none;background:none;color:inherit;}
.hf-wrap h1,.hf-wrap h2,.hf-wrap h3{margin:0;letter-spacing:-.01em;}
.hf-wrap{padding-bottom:calc(var(--bar-h) + var(--safe-b) + 8px);}
@media (min-width:1024px){.hf-wrap{padding-bottom:0;}}

/* ---------- ТОПБАР (t_f2946159: рерайт 1-в-1 под hotels-list-v2.html) ---------- */
.hf-top{position:sticky;top:0;z-index:40;background:var(--card);border-bottom:1px solid var(--line);}
.hf-top-row{display:flex;align-items:center;gap:var(--sp-3);padding:10px var(--sp-4);}
.hf-logo{font-weight:700;font-size:var(--fs-17);letter-spacing:-.02em;flex:0 0 auto;display:flex;align-items:center;gap:5px;}
.hf-logo i{width:8px;height:8px;border-radius:50% 50% 50% 0;background:var(--coral);transform:rotate(-45deg);display:block;}
.hf-searchpill{flex:1;min-width:0;display:flex;align-items:center;gap:var(--sp-2);height:var(--tap);
  padding:0 var(--sp-4);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--card);
  box-shadow:var(--sh-1);text-align:left;}
.hf-searchpill svg{width:17px;height:17px;stroke:var(--ink);fill:none;stroke-width:2;flex:0 0 auto;}
.hf-sp-txt{min-width:0;overflow:hidden;}
.hf-sp-1{font-size:var(--fs-14);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;}
.hf-sp-2{font-size:var(--fs-11);color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;}

.hf-types{display:flex;gap:var(--sp-2);padding:0 var(--sp-4) 10px;overflow-x:auto;scrollbar-width:none;}
.hf-types::-webkit-scrollbar{display:none;}
.hf-type{flex:0 0 auto;height:34px;padding:0 14px;border-radius:var(--r-pill);border:1px solid var(--line);
  font-size:var(--fs-13);font-weight:600;color:var(--ink-2);background:var(--card);display:flex;align-items:center;}
.hf-type[aria-selected="true"]{background:var(--ink);color:#fff;border-color:var(--ink);}

.hf-chips{display:flex;gap:var(--sp-2);padding:0 var(--sp-4) 10px;overflow-x:auto;scrollbar-width:none;}
.hf-chips::-webkit-scrollbar{display:none;}
.hf-chip{flex:0 0 auto;height:36px;padding:0 13px;border-radius:var(--r-pill);border:1px solid var(--line);
  background:var(--card);font-size:var(--fs-13);font-weight:600;display:flex;align-items:center;white-space:nowrap;}
.hf-chip.hf-active{background:var(--blue-soft);border-color:var(--blue);color:var(--blue-deep);}

/* ---------- ДЕСКТОП-ТУЛБАР (постоянно видим ≥1024px — bottombar/шторки там скрыты) ---------- */
.hf-desktop-toolbar{display:none;}
@media (min-width:1024px){
  .hf-desktop-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px var(--sp-6);border-bottom:1px solid var(--line);background:var(--card);}
  .hf-desktop-toolbar #hfDeskSearchSlot input{min-width:220px;padding:9px 14px;border:1px solid var(--line);border-radius:var(--r-pill);font:inherit;font-size:var(--fs-13);outline:none;}
  .hf-desktop-toolbar .hf-select{min-height:38px;padding:8px 28px 8px 14px;}
  .hf-desktop-toolbar .hf-row2{display:flex;gap:6px;}
  .hf-desktop-toolbar .hf-fld{padding:5px 10px;}
  /* t_f2946159: в тулбар переезжают целые группы .hf-fgroup из шторок (вместе с h3 и
     вертикальными отступами шторки) — без этого тулбар на 1280px вырастал до 289px в
     высоту и ломался на несколько рядов. Здесь группа сплющивается в одну строку. */
  .hf-desktop-toolbar .hf-fgroup{padding:0;border-bottom:none;display:flex;align-items:center;gap:8px;}
  .hf-desktop-toolbar .hf-fgroup h3{margin:0;font-size:var(--fs-12);font-weight:600;color:var(--muted);white-space:nowrap;}
  .hf-desktop-toolbar .hf-fgroup .hf-fld{padding:4px 10px;border:1px solid var(--line);border-radius:var(--r-m);}
  .hf-desktop-toolbar .hf-fgroup .hf-fld label{font-size:var(--fs-11);color:var(--muted);}
  .hf-desktop-toolbar .hf-price-apply{margin-top:0;width:auto;min-height:38px;padding:0 14px;white-space:nowrap;}
  .hf-desktop-toolbar #hfHomeReset,.hf-desktop-toolbar #hfDeskResetSlot{display:flex;align-items:center;}
  .hf-desktop-toolbar #hfReset{margin-left:auto;font-size:var(--fs-13);color:var(--blue);font-weight:600;background:none;border:none;padding:0;opacity:.5;pointer-events:none;}
  .hf-desktop-toolbar #hfReset.hf-on{opacity:1;pointer-events:auto;}
}

/* ---------- КОНТЕНТ ---------- */
.hf-main{padding:0 var(--sp-4);}
@media (min-width:600px){.hf-main,.hf-chips,.hf-types,.hf-top-row,.hf-desktop-toolbar{padding-left:var(--sp-6);padding-right:var(--sp-6);}}
.hf-lhead{padding:var(--sp-4) 0 var(--sp-3);}
.hf-lhead h1{font-size:var(--fs-20);line-height:1.25;}
@media (min-width:1024px){.hf-lhead h1{font-size:var(--fs-24);}}
.hf-sortrow{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding-bottom:var(--sp-3);}
.hf-cnt{font-size:var(--fs-13);color:var(--muted);}
.hf-cnt b{color:var(--ink);font-weight:700;}
.hf-sortbtn{display:flex;align-items:center;gap:5px;height:34px;padding:0 12px;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--card);font-size:var(--fs-13);font-weight:600;}
@media (min-width:1024px){.hf-sortbtn{display:none;}}

.hf-layout{display:block;}
.hf-list-pane{min-width:0;}

.hf-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding-bottom:var(--sp-6);}
@media (min-width:600px){.hf-cards{grid-template-columns:repeat(3,1fr);gap:16px;}}
@media (min-width:1024px){.hf-cards{grid-template-columns:1fr 1fr;}}

.hf-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-m);overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--sh-1);}
.hf-card:active{transform:scale(.99);}
.hf-card__ph{position:relative;aspect-ratio:4/3;background:var(--line-2);overflow:hidden;}
.hf-card__track{display:flex;height:100%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none;overscroll-behavior-x:contain;}
.hf-card__track::-webkit-scrollbar{display:none;}
.hf-card__track img,.hf-card__ph>img{flex:0 0 100%;width:100%;height:100%;object-fit:cover;scroll-snap-align:center;}
.hf-card__cat{position:absolute;left:6px;top:6px;background:rgba(18,33,59,.84);color:#fff;font-size:var(--fs-11);font-weight:600;padding:3px 7px;border-radius:var(--r-pill);}
.hf-card__ph .hcard_fav{position:absolute;right:4px;top:4px;width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.9);}
.hf-card__ph .hcard_fav svg{width:17px;height:17px;stroke:var(--ink);fill:none;stroke-width:1.9;}
.hf-card__ph .hcard_fav[aria-pressed="true"] svg{fill:var(--coral);stroke:var(--coral);}
.hf-card__ph .hcard_fav::before{content:'';position:absolute;inset:-5px;}
.hf-card__dots{position:absolute;left:0;right:0;bottom:6px;display:flex;gap:4px;justify-content:center;pointer-events:none;}
/* t_f2946159: белые точки листалки терялись на светлых фото (снег, белые интерьеры) —
   мягкая тень снизу кадра даёт им контраст, не затемняя саму фотографию. */
.hf-card__ph::after{content:'';position:absolute;left:0;right:0;bottom:0;height:34px;pointer-events:none;background:linear-gradient(to top,rgba(18,33,59,.28),transparent);}
.hf-card__dots,.hf-card__cat,.hf-card__ph .hcard_fav{z-index:2;}
.hf-card{transition:box-shadow .18s ease,transform .12s ease;}
@media (hover:hover){.hf-card:hover{box-shadow:var(--sh-2);}}
.hf-card__dots i{width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,.55);box-shadow:0 0 2px rgba(0,0,0,.35);transition:width .18s ease,background .18s ease;}
.hf-card__dots i.on{background:#fff;width:14px;border-radius:3px;}
.hf-card__body{padding:9px 10px 10px;display:flex;flex-direction:column;gap:4px;flex:1;}
.hf-card__nm{font-size:var(--fs-14);font-weight:600;line-height:1.25;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
@media (min-width:1024px){.hf-card__nm{font-size:var(--fs-15);}}
.hf-card__geo.hf-slot-empty{min-height:15px;}
.hf-card__facts{font-size:var(--fs-12);color:var(--muted);line-height:1.2;}
.hf-card__rate{font-size:var(--fs-12);color:var(--muted);}
.hf-card__rate b{background:var(--green-soft);color:var(--green);font-weight:700;padding:2px 6px;border-radius:var(--r-s);}
.hf-card__rate--empty{color:var(--muted-2);}
.hf-card__tags{display:flex;gap:4px;flex-wrap:wrap;}
.hf-card__tag{font-size:var(--fs-11);font-weight:500;padding:2px 6px;border-radius:var(--r-s);background:var(--paper);border:1px solid var(--line-2);color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;}

/* ---- t_f2946159 (фидбек Данила 08.09.2026): одинаковая высота карточек ----
   Было: высота карточки зависела от длины тегов и числа фактов — в одном ряду
   соседи 378 / 344 / 310px, сетка «плыла». Лечим в двух местах:
   1) карточка тянется на всю высоту ячейки ряда (ячейки уже растягиваются друг под
      друга: родитель .items — flex-wrap:wrap с align-items:stretch), для этого
      колонке нужен display:flex, а карточке height:100%;
   2) внутри карточки под каждую переменную строку зарезервирована ФИКСИРОВАННАЯ
      высота, поэтому карточки одинаковы не только в ряду, но и между рядами.
   Подписи тегов теперь короткие (словарь в template.php), поэтому одна строка —
   это не обрезка, а нормальный размер: многоточие остаётся страховкой на редкие
   значения, которых нет в словаре. */
.items-list1.table .catalog-block-view__item.col-lg-3{display:flex;}
.hf-card{height:100%;}
.hf-card__nm{min-height:calc(2 * 1.25em);}          /* ровно две строки названия */
.hf-card__facts{min-height:1.2em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
/* 28px — высота строки с зелёной плашкой оценки. Вариант «Пока без отзывов» плашки не
   имеет и сам по себе занимал 24px, из-за чего карточки без отзывов были на 4px ниже. */
.hf-card__rate{min-height:28px;display:flex;align-items:center;gap:4px;}
.hf-card__tags{min-height:22px;flex-wrap:nowrap;overflow:hidden;}
.hf-card__left.hf-slot-empty{min-height:14px;}
.hf-card__left{font-size:var(--fs-11);font-weight:600;color:var(--coral);}
.hf-card__foot{margin-top:auto;padding-top:8px;border-top:1px solid var(--line-2);display:flex;align-items:baseline;gap:5px;}
.hf-card__oldprice{font-weight:500;font-size:var(--fs-12);color:var(--muted-2);text-decoration:line-through;}
.hf-card__price{font-size:var(--fs-15);font-weight:700;line-height:1.1;color:var(--ink);}
.hf-card__price span{display:block;font-size:var(--fs-11);font-weight:500;color:var(--muted);margin-top:2px;}
.hf-card__price--muted{color:var(--muted);font-weight:600;}

.hf-empty{display:none;text-align:center;padding:var(--sp-8) var(--sp-4);color:var(--muted);}
.hf-empty.hf-on{display:block;}
.hf-empty svg{width:52px;height:52px;stroke:#C7C7C0;fill:none;stroke-width:1.5;margin-bottom:14px;}
.hf-empty b{display:block;font-size:var(--fs-17);color:var(--ink);margin-bottom:6px;}

.hf-toast{position:fixed;left:50%;bottom:calc(var(--bar-h) + var(--safe-b) + 14px);transform:translateX(-50%) translateY(20px);background:var(--ink);color:#fff;padding:13px 22px;border-radius:12px;font-size:13.5px;font-weight:600;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:999;box-shadow:0 12px 32px rgba(0,0,0,.24);max-width:min(90vw,460px);line-height:1.5;}
.hf-toast.hf-show{opacity:1;transform:translateX(-50%) translateY(0);}
@media (min-width:1024px){.hf-toast{bottom:26px;}}

/* ---------- BOTTOM BAR (только мобиле, скрыт ≥1024px — там десктоп-тулбар) ---------- */
.hf-bbar{position:fixed;left:0;right:0;bottom:0;z-index:45;display:flex;gap:10px;padding:8px var(--sp-4) calc(8px + var(--safe-b));background:rgba(255,255,255,.94);backdrop-filter:blur(10px);border-top:1px solid var(--line);box-shadow:var(--sh-3);}
.hf-bbar button{flex:1;height:var(--tap);border-radius:var(--r-m);font-size:var(--fs-15);font-weight:600;display:flex;align-items:center;justify-content:center;gap:7px;}
.hf-bbar__f{background:var(--ink);color:#fff;}
.hf-bbar__badge{background:var(--coral);color:#fff;font-size:var(--fs-11);font-weight:700;min-width:19px;height:19px;border-radius:var(--r-pill);display:flex;align-items:center;justify-content:center;padding:0 5px;}
.hf-bbar__m{background:var(--card);border:1px solid var(--line);color:var(--ink);}
.hf-bbar svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;}
@media (min-width:1024px){.hf-bbar{display:none;}}

/* t_f2946159: bottombar и шторки живут ВНЕ .hf-wrap, поэтому ресеты .hf-wrap * и
   .hf-wrap button на них не распространяются — дублируем ресет явно для них. */
.hf-bbar *,.hf-sheet *,.hf-scrim{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
/* :where() обнуляет специфичность селектора — иначе этот ресет (0,1,1) перебивал бы
   заливку кнопок из правил с одним классом (0,1,0): .hf-btn--p и .hf-bbar__f выходили
   белыми вместо синей и тёмной. Проверено живьём на 390px. */
:where(.hf-bbar,.hf-sheet) button{font:inherit;cursor:pointer;border:none;background:none;color:inherit;}
.hf-sheet a{color:inherit;text-decoration:none;}
.hf-sheet h2,.hf-sheet h3{margin:0;letter-spacing:-.01em;}
/* t_f2946159: карточки .hf-card рендерит компонент bitrix:news.list, поэтому между этой
   секцией и карточками всегда стоит его обёртка .item-views.items-list1 — единственный
   прямой ребёнок секции. Грид на самой секции дал бы этой обёртке одну колонку из двух,
   то есть половину ширины экрана (замерено живьём: 139px вместо 173). Сетку держит
   flex-правило на .col-lg-3 из style.css компонента (50% / 33% по min-width, t_b0e40d65),
   а секция остаётся простым блоком. Это не временный костыль под старую карточку —
   так будет, пока список рендерится компонентом. */
.hf-cards.hf-cards--compwrap{display:block;}
.item-views.items-list1.hf-loading{opacity:.55;pointer-events:none;transition:opacity .15s;}
/* кнопка закрытия карты видна, только когда карта раскрыта на весь экран (body.hf-map-open) */
.hf-map-close{display:none;}

/* ---------- SHEETS (только мобиле) ---------- */
.hf-scrim{position:fixed;inset:0;background:rgba(18,33,59,.45);z-index:60;opacity:0;pointer-events:none;transition:opacity .22s;}
.hf-scrim.hf-on{opacity:1;pointer-events:auto;}
.hf-sheet{position:fixed;left:0;right:0;bottom:0;z-index:70;background:var(--card);border-radius:var(--r-l) var(--r-l) 0 0;transform:translateY(101%);transition:transform .26s cubic-bezier(.32,.72,0,1);max-height:92vh;display:flex;flex-direction:column;}
.hf-sheet.hf-on{transform:none;}
.hf-sheet__grab{width:36px;height:4px;border-radius:2px;background:var(--line);margin:8px auto 0;flex:0 0 auto;}
.hf-sheet__head{display:flex;align-items:center;justify-content:space-between;padding:10px var(--sp-4);border-bottom:1px solid var(--line-2);flex:0 0 auto;}
.hf-sheet__head h2{font-size:var(--fs-17);}
.hf-sheet__close{width:36px;height:36px;border-radius:50%;background:var(--paper);font-size:16px;color:var(--ink);}
.hf-sheet__body{overflow-y:auto;padding:var(--sp-4);flex:1;-webkit-overflow-scrolling:touch;}
.hf-sheet__foot{padding:var(--sp-3) var(--sp-4) calc(var(--sp-3) + var(--safe-b));border-top:1px solid var(--line-2);display:flex;gap:10px;flex:0 0 auto;}
.hf-sheet__foot .hf-btn{flex:1;}
.hf-fgroup{padding:var(--sp-4) 0;border-bottom:1px solid var(--line-2);}
.hf-fgroup:last-child{border-bottom:none;}
.hf-fgroup h3{font-size:var(--fs-14);margin-bottom:10px;}
.hf-sheet .hf-fld{border:1px solid var(--line);border-radius:var(--r-m);padding:8px 12px;}
.hf-sheet .hf-fld label{display:block;font-size:var(--fs-11);color:var(--muted);font-weight:600;}
.hf-sheet .hf-fld input{border:none;outline:none;font:inherit;font-size:var(--fs-15);font-weight:600;width:100%;background:none;color:var(--ink);}
/* t_f2946159: поля виджетов Воронова (даты/гости) внутри шторки поиска — приводим к виду
   соседних .hf-fld, иначе на живой проверке они выглядели голым текстом без рамки рядом с
   обрамлёнными «Куда едем» и «Название отеля». Сам виджет не трогаем, только оболочка. */
.hf-sheet .sc-field{position:relative;border:1px solid var(--line);border-radius:var(--r-m);padding:8px 12px;min-height:var(--tap);display:flex;flex-direction:column;justify-content:center;cursor:pointer;}
.hf-sheet .sc-field__label{font-size:var(--fs-11);color:var(--muted);font-weight:600;}
.hf-sheet .sc-field__value{font-size:var(--fs-15);font-weight:600;color:var(--ink);}
.hf-sheet .sc-field__value.placeholder{color:var(--muted-2);font-weight:500;}
.hf-sheet .hf-row2{display:flex;gap:10px;}
.hf-sheet .hf-row2 .hf-fld{flex:1;}
.hf-sheet .hf-select{width:100%;min-height:var(--tap);padding:9px 30px 9px 15px;border-radius:var(--r-m);border:1px solid var(--line);background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236B7280' stroke-width='1.6' fill='none'/%3E%3C/svg%3E") no-repeat right 12px center;appearance:none;-webkit-appearance:none;font-size:var(--fs-14);font-weight:600;color:var(--ink);font-family:inherit;}
.hf-price-apply{margin-top:10px;width:100%;min-height:var(--tap);border-radius:var(--r-m);border:1px solid var(--line);background:var(--card);font-size:var(--fs-14);font-weight:600;}
.hf-btn{height:var(--tap);border-radius:var(--r-m);font-size:var(--fs-15);font-weight:600;display:flex;align-items:center;justify-content:center;gap:6px;}
.hf-btn--p{background:var(--blue);color:#fff;}
.hf-btn--p:active{background:var(--blue-deep);}
.hf-btn--s{background:var(--card);border:1px solid var(--line);color:var(--ink);opacity:.5;pointer-events:none;}
.hf-btn--s.hf-on{opacity:1;pointer-events:auto;}

/* ---------- КАРТА ---------- */
.hf-map-pane{display:none;}
.hf-map-close{display:none;}
@media (min-width:1024px){
  .hf-layout{display:grid;grid-template-columns:1fr 420px;gap:var(--sp-6);align-items:start;}
  .hf-map-pane{display:block;position:sticky;top:88px;height:calc(100vh - 110px);border-radius:var(--r-m);overflow:hidden;border:1px solid var(--line);}
}
body.hf-map-open{overflow:hidden;}
body.hf-map-open .hf-map-pane{display:block;position:fixed;inset:0;z-index:90;height:100vh;border-radius:0;}
body.hf-map-open .hf-map-close{display:flex;position:fixed;top:calc(14px + env(safe-area-inset-top));right:14px;z-index:95;width:40px;height:40px;border-radius:50%;background:#fff;border:none;align-items:center;justify-content:center;font-size:18px;color:var(--ink);box-shadow:0 6px 18px rgba(18,33,59,.22);}
.hf-map-frame{position:relative;width:100%;height:100%;border-radius:inherit;overflow:hidden;background:#DCE8EE;}
