/* СОБРАНО tools/build-estimate.py.
   Первая часть — оформление ФОРМЫ БРОНИ, вырезано из
   tools/book-template.html при сборке. Руками не править: правка
   пропадёт, и страница разойдётся с формой брони.
   Вторая часть — tools/estimate-extra.css, только то, чего в форме
   брони нет: поле адреса с подсказками, строка реестра, контакты. */
/* ОДНА ЛЕВАЯ ГРАНИЦА НА ВСЮ СТРАНИЦУ (решение владельца 07.09.2026).
     Замер на 1280 до правки: крошки, заголовок и вводный абзац начинались с
     50px, заголовок шага — с 200px, подсказка и карточки — с 236px. Три разные
     границы в одной колонке, и форма выглядела отдельным блоком, приплывшим
     из середины страницы.
     Откуда брались: .bk-step был центрирован (max-width 880 в обёртке 1180 даёт
     сдвиг ровно на 150px), а .bk-body и .hint добавляли сверху ещё 36px, чтобы
     встать под ТЕКСТ заголовка, а не под номерной значок. Обе причины убраны:
     блоки прижаты влево, отступ под значок снят. Ширину 880 оставляем — это
     ширина читаемой колонки, растягивать форму на всю страницу незачем. */
  .bk-step{max-width:880px;margin:0 0 34px}
  /* Последний ВИДИМЫЙ шаг не добавляет свои 34px к нижнему полю секции:
     маргин выходит наружу и превращает 89px отступа в 123px. Простое
     :last-child здесь не работает — после шагов в разметке стоят ещё
     четыре блока (итог, сумма), скрытые до того, как человек ответит,
     и последним ребёнком считается скрытый. Поэтому «последний, после
     которого нет ни одного нескрытого». Замер 30.08.2026: было 123px,
     стало 89px, как во всех остальных секциях сайта. */
  .bk-step:not(:has(~ :not([hidden]))){margin-bottom:0}
  .bk-step__n{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;flex:0 0 26px;
    border-radius:8px;background:var(--brand,#0ABAB5);color:#fff;font-size:13px;font-weight:700;margin-right:10px}
  .bk-step h2{font-size:21px;font-weight:800;letter-spacing:-.01em;margin:0 0 4px;display:flex;align-items:center}
  .bk-step p.hint{font-size:14px;color:#6b7280;margin:0 0 16px}
  .bk-body{margin-left:0}
  .bk-opts{display:grid;gap:10px}
  .bk-opts.two{grid-template-columns:repeat(2,1fr)}
  .bk-opts.three{grid-template-columns:repeat(3,1fr)}
  .bk-opt{position:relative;border:1.5px solid #e5e7eb;border-radius:14px;padding:15px 17px;cursor:pointer;
    background:#fff;transition:border-color .18s,box-shadow .18s}
  .bk-opt:hover{border-color:#cbd5e1}
  .bk-opt input{position:absolute;opacity:0;pointer-events:none}
  .bk-opt__t{font-size:15.5px;font-weight:700;display:block}
  .bk-opt__d{font-size:13.5px;color:#6b7280;margin-top:3px;display:block}
  .bk-opt__p{font-size:14px;color:var(--brand,#0ABAB5);font-weight:700;margin-top:6px;display:block}
  .bk-opt.on{border-color:var(--brand,#0ABAB5);box-shadow:0 0 0 3px rgba(10,186,181,.12)}
  .bk-lock{opacity:.4;pointer-events:none}

  .bk-sel{width:100%;font:inherit;font-size:15.5px;padding:14px 16px;border:1.5px solid #e5e7eb;
    border-radius:14px;background:#fff;appearance:none;cursor:pointer}
  .bk-sel:focus{outline:none;border-color:var(--brand,#0ABAB5);box-shadow:0 0 0 3px rgba(10,186,181,.12)}

  .bk-tabs{display:inline-flex;gap:4px;background:#f3f4f6;border-radius:12px;padding:4px;margin-bottom:14px}
  .bk-tabs button{border:0;background:none;font:inherit;font-size:14px;font-weight:600;color:#4b5563;
    padding:8px 16px;border-radius:9px;cursor:pointer}
  .bk-tabs button.on{background:#fff;color:#111;box-shadow:0 1px 3px rgba(0,0,0,.1)}
  .bk-tabs--wrap{flex-wrap:wrap;max-width:100%}
  .bk-x__q--one button{width:auto;min-width:82px;height:32px;padding:0 14px;font-size:13px;font-weight:600}
  .bk-x__q--one button.on{background:#0ABAB5;border-color:#0ABAB5;color:#fff}
  .bk-sum__mut{color:#6b7280;font-size:14px}
  .bk-promo{margin:16px 0 4px;padding-top:14px;border-top:1px dashed #e5e7eb}
  .bk-promo__lab{display:block;font-size:13px;font-weight:600;color:#3B424C;margin-bottom:6px}
  .bk-promo__row{display:flex;gap:8px}
  .bk-promo__row input{flex:1 1 auto;min-width:0;height:44px;border:1.5px solid #e5e7eb;border-radius:12px;
    padding:0 14px;font:inherit;font-size:15px;text-transform:uppercase}
  .bk-promo__row input:focus{outline:none;border-color:#0ABAB5;box-shadow:0 0 0 3px rgba(10,186,181,.14)}
  .bk-promo__row button{flex:0 0 auto;height:44px;padding:0 18px;border:0;border-radius:12px;
    background:#eef1f4;color:#171A20;font:inherit;font-size:14px;font-weight:600;cursor:pointer}
  .bk-promo__row button:hover{background:#e3e8ec}
  .bk-promo__note{margin:8px 0 0;font-size:13px;line-height:1.4;color:#6b7280}
  .bk-promo__note.ok{color:#0a8f8b}
  .bk-promo__note.no{color:#b4532a}
  /* Предупреждение о входе — предпоследнее, что видит партнёр перед переходом.
     Заметное, но не тревожное: это не ошибка, а порядок действий. */
  .bk-signin{margin:14px 0 10px;padding:10px 12px;border-radius:8px;
    background:#fff8e6;border:1px solid #f0d9a0;color:#6b4f14;font-size:13.5px}
  .bk-signin a{color:#0a8f8b;font-weight:600}
  /* Заголовок опросника Airbnb внутри страницы брони: тот же вес, что у
     вопросов формы, чтобы блок не выглядел чужим. */
  .bk-aq-h{font-size:21px;font-weight:800;letter-spacing:-.01em;margin:0 0 6px}
  .bk-aq-sub{margin:0 0 22px}
  #airbnb-form{max-width:880px;margin:0}

  .bk-x{display:grid;gap:9px}
  .bk-x__h{font-size:13px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#9ca3af;margin:16px 0 2px}
  .bk-x__row{display:grid;grid-template-columns:34px 1fr auto auto;gap:12px;align-items:center;
    border:1px solid #e5e7eb;border-radius:12px;padding:12px 14px;background:#fff}
  .bk-x__name{font-size:15px;font-weight:600}
  .cmp{margin-top:18px;border-top:1px solid #e5e7eb;padding-top:14px}
  .cmp>summary{cursor:pointer;font-size:14.5px;font-weight:600;color:#0ABAB5;list-style:none;
    display:inline-flex;align-items:center;gap:6px}
  .cmp>summary::-webkit-details-marker{display:none}
  .cmp>summary::after{content:'▾';font-size:12px;transition:transform .15s}
  .cmp[open]>summary::after{transform:rotate(180deg)}
  .cmp-wrap{overflow-x:auto;margin:14px 0 6px;-webkit-overflow-scrolling:touch}
  .cmp-t{border-collapse:collapse;width:100%;min-width:520px;font-size:13.5px}
  .cmp-t th,.cmp-t td{padding:7px 10px;text-align:left;border-bottom:1px solid #eef1f4;vertical-align:top}
  .cmp-t thead th{font-size:12.5px;text-transform:uppercase;letter-spacing:.04em;color:#6b7280;
    position:sticky;top:66px;background:#fff;z-index:1;box-shadow:0 1px 0 #eef1f4}
  .cmp-t thead th:not(:first-child),.cmp-t td:not(.cmp-name){text-align:center;width:23%}
  .cmp-sec th{padding-top:14px;font-size:12.5px;text-transform:uppercase;letter-spacing:.06em;color:#171A20}
  .cmp-name{color:#374151}
  .cmp-yes{color:#0ABAB5;font-weight:600}
  .cmp-no{color:#c7cdd4}
  .cmp-note{font-size:12.5px;font-weight:500;line-height:1.3}
  .bk-x__ic{display:flex;align-items:center;justify-content:center}
  .bk-x__ic svg{width:28px;height:28px;display:block}
  .bk-x__meta{font-size:13px;color:#6b7280;margin-top:2px}
  .bk-x__q{display:flex;align-items:center;gap:8px}
  .bk-x__q button{width:32px;height:32px;border-radius:9px;border:1px solid #e5e7eb;background:#fff;
    font-size:17px;line-height:1;cursor:pointer;color:#111}
  .bk-x__q button:hover{border-color:#cbd5e1}
  .bk-x__q output{min-width:22px;text-align:center;font-weight:700;font-size:15px}
  .bk-x__price{font-weight:700;font-size:15px;min-width:56px;text-align:right}
  /* значок «?» держим на строке с концом названия, чтобы он не съезжал вниз один */
  .bk-info{border:0;background:none;color:#9ca3af;cursor:pointer;font-size:12px;line-height:1;
    width:17px;height:17px;border-radius:50%;border:1px solid #d1d5db;margin-left:6px;
    display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}
  .bk-info:hover{color:var(--brand,#0ABAB5);border-color:var(--brand,#0ABAB5)}
  .bk-other{max-width:880px;margin:26px 0 0;text-align:center;font-size:14.5px;color:#4b5563}
  .bk-other a{color:var(--brand,#0ABAB5);font-weight:600;text-decoration:none}
  .bk-other a:hover{text-decoration:underline}
  .bk-x__desc{grid-column:1/-1;font-size:13.5px;color:#4b5563;padding-top:8px;border-top:1px dashed #e5e7eb;display:none}
  .bk-x__row.open .bk-x__desc{display:block}

  .bk-sum{max-width:880px;margin:0;border:1.5px solid #e5e7eb;border-radius:18px;padding:22px 24px;background:#fafafa}
  .bk-sum h3{font-size:17px;font-weight:800;margin:0 0 12px}
  .bk-sum__line{display:flex;justify-content:space-between;gap:16px;font-size:14.5px;padding:5px 0}
  .bk-sum__line span:last-child{font-weight:600;white-space:nowrap}
  .bk-sum__total{border-top:1px solid #e5e7eb;margin-top:10px;padding-top:12px;font-size:18px;font-weight:800}
  .bk-sum__time{font-size:14px;color:#6b7280;padding-top:2px}
  .bk-note{font-size:13px;color:#6b7280;margin-top:10px;line-height:1.55}
  .bk-pick{background:#fff;border:1px dashed #cbd5e1;border-radius:12px;padding:12px 14px;margin-top:14px;font-size:13.5px}
  .bk-pick b{color:#111}
  .bk-go{margin-top:16px;width:100%;justify-content:center}
  .bk-go[disabled]{opacity:.4;pointer-events:none}
  /* Согласие про SMS переехало из шапки под форму (07.09.2026). Общее правило
     .lead-consent в site.css рассчитано на шапку — там оно шло сразу за абзацем
     и отступа сверху почти не имело. Под формой ему нужна своя воздушная линия,
     иначе текст слипается с кнопкой и читается как её продолжение. */
  /* Имя bk-legal, а НЕ bk-consent: класс bk-consent уже занят — им помечено
     собственное согласие страницы /order в tools/order-blocks.html. Стиль
     отсюда попадает и туда (шапка /order берётся из /booking), и общее имя
     пририсовало бы чужому абзацу нашу линию сверху. Поймано замером 07.09.2026. */
  .bk-legal{margin-top:28px;padding-top:18px;border-top:1px solid #e5e7eb}
  /* ПРОВАЛ МЕЖДУ ВСТУПЛЕНИЕМ И ПЕРВЫМ ВОПРОСОМ (решение владельца 07.09.2026).
     Замер на 1280: низ вводного абзаца 301px, верх первого вопроса 416px —
     115 пикселей пустоты посреди первого экрана. Складывались из 89px верхнего
     поля секции (общий ритм сайта) и 26px под абзацем.
     На /booking это поле лишнее: шапка и форма здесь не два разных раздела, а
     одно движение — прочитал две строки и отвечай. Общий ритм сайта не трогаем,
     правило живёт только в этом шаблоне, то есть на /booking и /book. */
  section:has(.bk-step){padding-top:32px}
  @media (max-width:700px){
    .bk-opts.two,.bk-opts.three{grid-template-columns:1fr}
    .bk-body,.bk-step p.hint{margin-left:0}
    .bk-step h2{font-size:19px}
    /* на узком экране всё равно держим строку в три колонки: имя, счётчик, цена.
       иначе цена уезжает под счётчик и строка выглядит рыхло */
    .bk-x__row{gap:8px;padding:11px 12px;grid-template-columns:26px 1fr auto auto}
    .bk-x__ic svg{width:22px;height:22px}
    .bk-x__name{font-size:14px;line-height:1.3}
    .bk-x__meta{font-size:12px}
    .bk-x__q{gap:6px}
    .bk-x__q button{width:28px;height:28px;font-size:15px}
    .bk-x__q output{min-width:16px;font-size:14px}
    .bk-x__price{min-width:44px;font-size:14px}
    .bk-sum{padding:18px 16px}
  }


/* ── Только то, чего нет в форме брони ────────────────────────────────────────
   Всё остальное оформление — .bk-step, .bk-opt, .bk-sel, .bk-tabs, .bk-x__row,
   .bk-sum — берётся ИЗ САМОЙ ФОРМЫ БРОНИ при сборке (tools/build-estimate.py
   вырезает её блок стилей из tools/book-template.html). Поэтому цвета, скругления
   и отступы здесь и там не могут разойтись: поправили форму брони — поправилось
   и тут. Ниже только добавки, которых в форме брони нет вовсе. */

/* Поле адреса: тот же вид, что у выпадающих списков формы брони */
.est-ac{position:relative;max-width:880px}
.est-in{width:100%;font:inherit;font-size:15.5px;padding:14px 16px;border:1.5px solid #e5e7eb;
 border-radius:14px;background:#fff}
.est-in:focus{outline:none;border-color:var(--brand,#0ABAB5);box-shadow:0 0 0 3px rgba(10,186,181,.12)}

/* Подсказки адреса кладём ПОВЕРХ содержимого, а не раздвигаем ими страницу:
   иначе поля под ними прыгают на каждой набранной букве. */
.est-suggest{position:absolute;z-index:30;left:0;right:0;top:calc(100% + 6px);background:#fff;
 border:1.5px solid #e5e7eb;border-radius:14px;box-shadow:0 10px 28px rgba(16,24,32,.13);overflow:hidden}
.est-sug{display:block;width:100%;text-align:left;padding:12px 16px;border:0;background:none;
 font:inherit;font-size:15px;cursor:pointer;color:#171A20}
.est-sug:hover,.est-sug:focus{background:#f3f9f9}

/* Строка с данными реестра и предупреждение о площади */
.est-rec{margin:10px 0 0;font-size:13.5px;color:#0a8f8b;background:#f0f9f9;
 border:1px solid #cdeceb;border-radius:12px;padding:10px 13px;max-width:880px}
.est-note{margin:10px 0 0;font-size:13.5px;line-height:1.5;max-width:880px}
.est-note--warn{color:#6b4f14;background:#fff8e6;border:1px solid #f0d9a0;border-radius:12px;padding:10px 13px}
.est-note--ok{color:#0a6b3d;background:#eef8f2;border:1px solid #bfe3ce;border-radius:12px;padding:11px 13px}
.est-note--wait{color:#6b7280}

/* Пара «планировка + площадь» в одну строку, как две плитки формы брони */
.est-two{display:grid;gap:10px;grid-template-columns:1fr 1fr;max-width:880px}
.est-lab{display:block;font-size:13px;font-weight:600;color:#3B424C;margin-bottom:6px}
@media (max-width:700px){.est-two{grid-template-columns:1fr}}

/* Контакты */
.est-fields{display:grid;gap:10px;grid-template-columns:1fr 1fr;max-width:880px}
.est-fields .est-wide{grid-column:1/-1}
@media (max-width:700px){.est-fields{grid-template-columns:1fr}}

.est-fine{max-width:880px;margin:12px auto 0;font-size:13px;color:#6b7280;line-height:1.55}
.est-how{max-width:880px;margin:0 auto 22px;padding-left:20px}
.est-how li{margin-bottom:10px;line-height:1.6}

/* Ловушка для роботов: человек этого поля не видит и не может в него попасть ни
   мышью, ни табуляцией. Через display:none нельзя — часть роботов такие поля
   пропускает, а нам надо, чтобы они его заполнили. Уводить за левый край
   (left:-9999px) тоже нельзя: проверка вёрстки честно считает это вылетом за
   край страницы, и настоящий вылет потом потеряется среди шума. */
#est{position:relative}
.est-hb{position:absolute;top:0;left:0;width:1px;height:1px;opacity:0;overflow:hidden;
 pointer-events:none;z-index:-1}

/* Плитки выбора формы брони — там это <label> с radio внутри, здесь <button>.
   Три строки, чтобы кнопка не приносила своё оформление. */
button.bk-opt{width:100%;text-align:left;font:inherit;color:inherit}
