/* Раделия — основной стиль. Mobile-first, один статический файл (см. раздел 1 ТЗ). */

.site-header { border-bottom: 1px solid var(--line); padding: 12px 0; }
.site-header__inner { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.site-header__logo { display: inline-flex; align-items: center; text-decoration: none; }
.site-header__logo img { display: block; height: 38px; width: auto; }
.site-header__nav { display: flex; flex-wrap: wrap; gap: 14px; }
.site-header__nav a { text-decoration: none; color: var(--muted); font-size: 0.95rem; }
.site-header__nav a:hover { color: var(--brand); }

main { padding: 24px 0 48px; min-height: 60vh; }

.hero h1 { font-size: 1.7rem; line-height: 1.2; margin: 0 0 12px; }
.hero__lead { color: var(--muted); max-width: 60ch; }

.btn { display: inline-block; padding: 12px 20px; border-radius: 8px; text-decoration: none;
       font-weight: 600; border: 1px solid transparent; cursor: pointer; }
.btn--primary { background: var(--brand); color: #fff; }
.btn--primary:hover { filter: brightness(0.95); }

.home-blurb { margin-top: 32px; color: var(--muted); }
.home-block { margin-top: 28px; }
.home-block h2 { font-size: 1.15rem; }
.home-links { display: flex; flex-wrap: wrap; gap: 8px; }
.home-links a { background: #eef2f1; color: var(--ink); padding: 8px 14px; border-radius: 18px;
  text-decoration: none; font-size: 0.9rem; }
.home-links a:hover { background: #dde8e4; }

.bloglist { list-style: none; padding: 0; }
.bloglist__item { padding: 16px 0; border-bottom: 1px solid var(--line); }
.bloglist__item h2 { margin: 0 0 4px; font-size: 1.15rem; }
.bloglist__meta, .post__meta { color: var(--muted); font-size: 0.85rem; }
.post__body, .staticpage__body { max-width: 70ch; }
.post__body p, .staticpage__body p { margin: 0 0 12px; }

.faq__item { border-bottom: 1px solid var(--line); padding: 12px 0; }
.faq__item summary { cursor: pointer; font-weight: 600; }
.staticpage { max-width: 70ch; }

.error-page { text-align: center; padding: 48px 0; }

.site-footer { border-top: 1px solid var(--line); padding: 24px 0; margin-top: 32px; color: var(--muted); }
.site-footer__nav { display: flex; flex-wrap: wrap; gap: 16px; margin-bottom: 12px; }
.site-footer__nav a { color: var(--muted); text-decoration: none; }
.site-footer__nav a:hover { color: var(--brand); }
.site-footer__note { font-size: 0.9rem; max-width: 70ch; }
.site-footer__legal { font-size: 0.85rem; }

.cookie-banner { position: fixed; left: 0; right: 0; bottom: 0; background: var(--ink); color: #fff;
                 padding: 12px 16px; display: flex; gap: 12px; align-items: center;
                 justify-content: space-between; flex-wrap: wrap; font-size: 0.9rem; }
.cookie-banner a { color: #9fd8c8; }
.cookie-banner button { background: var(--brand); color: #fff; border: 0; padding: 8px 16px;
                        border-radius: 6px; cursor: pointer; }

.methodology { max-width: 760px; }
.methodology h1 { font-size: 1.6rem; }
.methodology .lead { font-size: 1.1rem; color: var(--ink); }
.methodology section { margin-top: 28px; }
.methodology .note { color: var(--muted); font-size: 0.9rem; }
.methodology-table { width: 100%; border-collapse: collapse; margin: 12px 0; }
.methodology-table th, .methodology-table td { text-align: left; padding: 8px 10px;
  border-bottom: 1px solid var(--line); vertical-align: top; }
.methodology-table th { background: #eef2f1; }
.methodology-table tfoot td { font-weight: 700; }

/* --- Карточка объекта --- */
.breadcrumbs { font-size: 0.85rem; color: var(--muted); margin-bottom: 12px; }
.breadcrumbs a { color: var(--muted); }

.facility__head h1 { font-size: 1.5rem; margin: 0 0 6px; }
.facility__addr { color: var(--muted); margin: 0 0 10px; }
.facility__gallery { display: flex; gap: 8px; overflow-x: auto; margin: 12px 0; }
/* Фикс. ширина+высота бокса резервирует место до загрузки фото (без сдвига
   макета — CLS): реальные снимки кадрируются cover в 4:3. */
.facility__gallery img { width: 240px; height: 180px; border-radius: 10px; flex: 0 0 auto; object-fit: cover; }
.facility__gallery img.is-logo { object-fit: contain; padding: 10px; background: #f2f4f3; }
.facility__grid { display: grid; grid-template-columns: 1fr; gap: 24px; }
@media (min-width: 860px) { .facility__grid { grid-template-columns: 2fr 1fr; } }
.facility section { margin: 20px 0; }
.facility h2 { font-size: 1.15rem; }

.tags { display: flex; flex-wrap: wrap; gap: 8px; }
.tag { background: #eef2f1; color: var(--ink); padding: 6px 12px; border-radius: 16px;
       text-decoration: none; font-size: 0.9rem; }
.tag:hover { background: #dde8e4; }

.freeplaces { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px;
              border-radius: 8px; font-size: 0.9rem; background: #eef2f1; }
.freeplaces__dot { width: 9px; height: 9px; border-radius: 50%; background: var(--muted); }
.freeplaces--available { background: #e6f5ec; }
.freeplaces--available .freeplaces__dot { background: #2f7d4f; }
.freeplaces--waitlist { background: #fdf0e6; }
.freeplaces__date { color: var(--muted); font-size: 0.82rem; }

.trust__list, .quality__list, .reviews__list, .ext-ratings__list { list-style: none; padding: 0; }
.trust__item { padding: 8px 0; border-bottom: 1px solid var(--line); }
.trust__item.is-ok { color: var(--ink); }
.trust__item.is-off { color: var(--muted); }
.trust__mark { font-weight: 700; }
.trust__detail { font-size: 0.85rem; color: var(--muted); }
.trust__updated { font-size: 0.82rem; color: var(--muted); }

.quality { background: #f6f8f7; border: 1px solid var(--line); border-radius: 12px; padding: 16px; }
.quality__note { font-weight: 400; font-size: 0.8rem; color: var(--muted); }
.quality__score { font-size: 2rem; font-weight: 700; color: var(--brand); }
.quality__max { font-size: 1rem; color: var(--muted); font-weight: 400; }
.quality__list { font-size: 0.88rem; margin: 8px 0; }
.quality__list li { padding: 3px 0; }
.quality__list li.is-off { color: var(--muted); }
.quality__pts { font-weight: 700; display: inline-block; min-width: 42px; }

.ext-ratings__avg strong { font-size: 1.1rem; color: var(--brand); }
.ext-ratings__meta, .ext-ratings__note { color: var(--muted); font-size: 0.85rem; }
.ext-ratings__list li { display: flex; gap: 10px; align-items: center; padding: 4px 0; }
.ext-ratings__src { min-width: 120px; }

.review { padding: 12px 0; border-bottom: 1px solid var(--line); }
.review__head { display: flex; gap: 10px; align-items: center; font-size: 0.9rem; }
.review__author { font-weight: 600; }
.review__rating { color: var(--brand); font-weight: 700; }
.review__date { color: var(--muted); }
.review__response { background: #f6f8f7; border-radius: 8px; padding: 8px 12px; margin-top: 6px;
                    font-size: 0.9rem; }
.reviews__agg { font-weight: 400; color: var(--brand); font-size: 0.95rem; }

.lead { background: var(--brand); color: #fff; border-radius: 12px; padding: 18px; }
.lead h2 { margin-top: 0; color: #fff; }
.lead__form input[type="text"], .lead__form input[type="tel"] {
  width: 100%; padding: 10px; margin: 6px 0; border: 0; border-radius: 6px; }
.lead__hp { display: none !important; }
.lead__consent { display: block; font-size: 0.82rem; margin: 8px 0; }
.lead__consent a { color: #cdeee2; }
.lead__form button { width: 100%; padding: 12px; background: #fff; color: var(--brand);
                     border: 0; border-radius: 8px; font-weight: 700; cursor: pointer; }
.lead__status { font-size: 0.85rem; margin-top: 8px; min-height: 1em; }

/* --- Хаб города --- */
.citystats { background: #f6f8f7; border: 1px solid var(--line); border-radius: 12px;
             padding: 16px; margin: 16px 0; }
.citystats__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
@media (min-width: 640px) { .citystats__grid { grid-template-columns: repeat(4, 1fr); } }
.citystats__cell { display: flex; flex-direction: column; }
.citystats__num { font-size: 1.3rem; font-weight: 700; color: var(--brand); }
.citystats__cell span:last-child { font-size: 0.82rem; color: var(--muted); }

.filters { display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0; align-items: center; }
.filters select, .filters input { padding: 9px 10px; border: 1px solid var(--line); border-radius: 8px; }
.filters button { padding: 9px 18px; background: var(--brand); color: #fff; border: 0;
                  border-radius: 8px; cursor: pointer; }
.filters__reset { color: var(--muted); font-size: 0.9rem; }

.listinfo { color: var(--muted); font-size: 0.9rem; }

/* Листинг — вертикальный стек горизонтальных строк-карточек (стиль маркетплейса). */
.flist { display: flex; flex-direction: column; gap: 14px; }

.fcard { display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: 14px;
         overflow: hidden; background: #fff; }
.fcard__media { flex: none; }
.fcard__photo { height: 180px; background: #fff; }
.fcard__photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* Логотипы (не фото объекта) не обрезаем: вписываем целиком на нейтральной подложке. */
.fcard__photo--logo { background: #f2f4f3; }
.fcard__photo--logo img { object-fit: contain; padding: 14px; }
.fcard__photo--empty { display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #f0f4f2, #e6efeb); }
.fcard__photo--empty span { color: var(--brand); font-weight: 700; letter-spacing: .04em;
  opacity: .55; font-size: 1.1rem; }
.fcard__body { padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; }
.fcard__title { margin: 0; font-size: 1.1rem; line-height: 1.3; }
.fcard__title a { text-decoration: none; }
.fcard__addr { color: var(--muted); font-size: 0.88rem; margin: 0; }
.fcard__badges { display: flex; flex-wrap: wrap; gap: 6px; }
.badge { font-size: 0.75rem; padding: 3px 8px; border-radius: 12px; background: #eef2f1; color: var(--muted); }
.badge--ok { background: #e6f5ec; color: #2f7d4f; }
.badge--free { background: #e6f0fb; color: #2f5fbf; }

/* Правая колонка: цена крупно + индекс качества + CTA. */
.fcard__aside { padding: 14px 16px; display: flex; flex-wrap: wrap; align-items: center;
  gap: 10px 14px; border-top: 1px solid var(--line); }
.fcard__price { font-weight: 700; font-size: 1.25rem; color: var(--ink); white-space: nowrap; }
.fcard__price-from { font-weight: 500; font-size: 0.8rem; color: var(--muted); margin-right: 5px; }
.fcard__price-per { font-weight: 500; font-size: 0.8rem; color: var(--muted); margin-left: 2px; }
.fcard__quality { font-size: 0.8rem; color: var(--muted); }
.fcard__more { margin-left: auto; font-size: 0.9rem; text-decoration: none; white-space: nowrap; }

/* Десктоп/планшет: строка «фото | инфо | цена+CTA».
   Grid с явными колонками — ширина фото жёстко зафиксирована и не зависит от
   intrinsic-размера картинки (в отличие от flex-basis + min-width:auto). */
@media (min-width: 680px) {
  .fcard { display: grid; grid-template-columns: 240px minmax(0, 1fr) 210px;
    align-items: stretch; }
  /* Фото вынуто из потока (inset:0), чтобы вертикальные снимки не раздували
     высоту строки: колонку задаёт текст, фото просто заполняет её целиком. */
  .fcard__media { min-width: 0; position: relative; min-height: 176px; overflow: hidden; }
  .fcard__photo { position: absolute; inset: 0; height: auto; }
  .fcard__body { min-width: 0; justify-content: center; gap: 8px; }
  .fcard__aside { flex-direction: column; align-items: flex-start;
    justify-content: center; gap: 10px; border-top: 0; border-left: 1px solid var(--line);
    background: #fafbfb; }
  .fcard__aside .fcard__more { margin-left: 0; }
}

.pager { display: flex; gap: 8px; margin: 20px 0; }
.pager a, .pager__cur { padding: 6px 12px; border: 1px solid var(--line); border-radius: 6px;
                        text-decoration: none; color: var(--ink); }
.pager__cur { background: var(--brand); color: #fff; border-color: var(--brand); }

.empty { padding: 24px; text-align: center; background: #f6f8f7; border-radius: 12px; }

.contra { background: #fdf4e6; border: 1px solid #f0d9b0; border-radius: 10px; padding: 12px 16px;
          margin: 16px 0; font-size: 0.9rem; color: #6b4e1e; }
.expert { border-top: 1px solid var(--line); margin-top: 24px; padding-top: 20px; }
.expert__body { max-width: 70ch; }
.expert__meta { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 12px; font-size: 0.85rem;
                color: var(--muted); }

.legal { margin-top: 24px; }
.legal__table { width: 100%; border-collapse: collapse; }
.legal__table th, .legal__table td { text-align: left; padding: 7px 10px;
  border-bottom: 1px solid var(--line); vertical-align: top; font-size: 0.9rem; }
.legal__table th { color: var(--muted); font-weight: 500; width: 45%; }
.legal__note { font-size: 0.82rem; color: var(--muted); margin-top: 8px; }
.admin-legal-form { display: grid; gap: 6px; margin-top: 10px; }

.podbor { max-width: 620px; margin: 0 auto; }
.podbor__lead { color: var(--muted); }
.podbor__form fieldset { border: 1px solid var(--line); border-radius: 12px; padding: 16px 18px;
  margin: 16px 0; }
.podbor__form legend { font-weight: 600; padding: 0 6px; }
.podbor__form label { display: block; margin: 8px 0; }
.podbor__form input[type="text"], .podbor__form input[type="tel"], .podbor__form select {
  width: 100%; padding: 10px; border: 1px solid var(--line); border-radius: 8px; margin: 6px 0; }
.podbor__tags { display: flex; flex-wrap: wrap; gap: 8px; }
.podbor__tags label { display: flex; align-items: center; gap: 6px; background: #eef2f1;
  padding: 6px 10px; border-radius: 16px; margin: 0; }
.podbor__nav { display: flex; gap: 10px; }
.podbor__nav button { padding: 12px 22px; border: 0; border-radius: 8px; cursor: pointer;
  background: var(--brand); color: #fff; font-weight: 600; }
#podbor-back { background: transparent; color: var(--brand); border: 1px solid var(--brand); }
.podbor__progress { color: var(--muted); font-size: 0.85rem; }
.podbor__done { font-size: 1.1rem; color: var(--brand); padding: 24px 0; }

.reviewform { margin-top: 16px; }
.reviewform summary { cursor: pointer; color: var(--brand); }
.reviewform__form { display: grid; gap: 8px; margin-top: 12px; max-width: 520px; }
.reviewform__form input[type="text"], .reviewform__form textarea, .reviewform__form select {
  padding: 9px; border: 1px solid var(--line); border-radius: 8px; }
.reviewform__form button { padding: 10px 18px; background: var(--brand); color: #fff; border: 0;
  border-radius: 8px; cursor: pointer; justify-self: start; }

.interlink { display: grid; grid-template-columns: 1fr; gap: 20px; margin: 28px 0;
             padding-top: 20px; border-top: 1px solid var(--line); }
@media (min-width: 680px) { .interlink { grid-template-columns: repeat(3, 1fr); } }
.interlink h3 { font-size: 0.95rem; margin: 0 0 8px; }
.interlink ul { list-style: none; padding: 0; margin: 0; }
.interlink li { padding: 3px 0; }
.interlink a { text-decoration: none; color: var(--brand); font-size: 0.9rem; }

@media (min-width: 720px) {
  .hero h1 { font-size: 2.3rem; }
  .facility__head h1 { font-size: 2rem; }
}

/* Баннер предпросмотра черновика (виден только залогиненному админу) */
.draft-banner { background:#fdf3e0; border-bottom:1px solid #f0d9a8; color:#7a5a12;
                padding:10px 16px; text-align:center; font-size:0.95rem; }

.legal__warn th, .legal__warn td { background:#fdecec; color:#8a1f1f; }

/* --- UX-пакет: конверсия, мобильная вёрстка, доверие --- */

/* Кнопки */
.btn { display: inline-block; padding: 12px 22px; border-radius: 8px; text-decoration: none;
       font-weight: 600; border: 0; cursor: pointer; font-size: 1rem; }
.btn--primary { background: var(--brand); color: #fff; }
.btn--primary:hover { filter: brightness(1.08); }
.btn--ghost { background: #fff; color: var(--brand); border: 1px solid var(--brand); }

/* CTA на карточке объекта */
.facility__cta { display: flex; gap: 10px; flex-wrap: wrap; margin: 16px 0; }

/* Липкая панель действий на мобильном */
.facility-sticky { display: none; }
@media (max-width: 859px) {
  .facility-sticky { display: flex; gap: 10px; position: fixed; left: 0; right: 0; bottom: 0;
    padding: 10px 14px calc(10px + env(safe-area-inset-bottom)); background: #fff;
    border-top: 1px solid var(--line); box-shadow: 0 -4px 16px rgba(0,0,0,.08); z-index: 60; }
  .facility-sticky .btn { flex: 1; text-align: center; }
  body:has(.facility-sticky) { padding-bottom: 72px; }
}

/* Карточка списка кликабельна целиком */
.fcard { position: relative; transition: box-shadow .15s ease, border-color .15s ease; }
.fcard:hover { box-shadow: 0 6px 22px rgba(28,35,33,.12); border-color: #cfd8d5; }
.fcard__overlay { position: absolute; inset: 0; z-index: 1; border-radius: 14px; }
.fcard__body { position: relative; }
.fcard__quality { font-size: 0.78rem; color: var(--brand); background: #eaf5ee;
  padding: 3px 8px; border-radius: 6px; font-weight: 600; cursor: help; }
.fcard__more { margin-left: auto; font-size: 0.9rem; color: var(--brand); }

/* Юрлицо: бейджи + спойлер */
.legal__badges { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 12px; }
.legal__details > summary { cursor: pointer; color: var(--brand); margin: 6px 0 10px;
  font-size: 0.95rem; }

/* Прогресс подбора */
.podbor__bar { height: 6px; background: var(--line); border-radius: 3px; overflow: hidden;
  margin: 14px 0 6px; }
.podbor__bar span { display: block; height: 100%; background: var(--brand);
  transition: width .25s ease; }

/* Лайтбокс */
.facility__gallery img { cursor: zoom-in; }
.lightbox { position: fixed; inset: 0; background: rgba(0,0,0,.85); z-index: 100;
  display: flex; align-items: center; justify-content: center; cursor: zoom-out; padding: 20px; }
.lightbox img { max-width: 100%; max-height: 100%; border-radius: 8px; }

/* Мобильная шапка: логотип и телефон в строке, меню строкой ниже */
@media (max-width: 639px) {
  .site-header { padding: 10px 0; }
  .site-header__inner { flex-wrap: wrap; align-items: center; gap: 8px 12px; }
  .site-header__logo { order: 1; }
  .site-header__contact { order: 2; margin-left: auto; align-items: flex-end; text-align: right; }
  .site-header__nav { order: 3; flex-basis: 100%; gap: 10px 14px; }
  .site-header__nav a { font-size: 0.9rem; }
}

/* Компактный cookie-баннер */
.cookie-banner { font-size: 0.85rem; padding: 8px 14px; display: flex; gap: 12px;
  align-items: center; flex-wrap: wrap; z-index: 80; /* поверх липкой панели CTA */ }
.cookie-banner button { padding: 6px 14px; margin-left: auto; }

/* Фокус-стили (a11y) */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible,
summary:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }

/* ── Интерактивная карта России (главная) ─────────────────────────────── */
.rus-map-block { margin-top: 32px; }
.rus-map__lead { color: var(--muted); margin: 0 0 14px; }
.rus-map { position: relative; margin: 0; }
.rus-map__svg { display: block; width: 100%; height: auto; max-width: 920px;
  margin: 0 auto; background: #f3f7f6; border: 1px solid var(--line);
  border-radius: 12px; }
/* Регионы: фон и активные (с объектами) */
.rus-map__region { fill: #e4ebe8; stroke: #fff; stroke-width: 0.6;
  transition: fill .12s ease; }
.rus-map__region--active path { fill: rgba(47,111,94,.55); stroke: #fff;
  stroke-width: 0.6; transition: fill .12s ease; }
.rus-map__svg a { cursor: pointer; outline: none; }
.rus-map__region--active:hover path,
.rus-map__region--active:focus-visible path { fill: var(--brand); }
/* Города-маркеры */
.rus-map__city circle { fill: #e07a3f; stroke: #fff; stroke-width: 1;
  transition: r .12s ease, fill .12s ease; }
.rus-map__city:hover circle,
.rus-map__city:focus-visible circle { fill: #c65b2f; r: 5; }
/* Клавиатурный фокус внутри SVG */
.rus-map__svg a:focus-visible path,
.rus-map__svg a:focus-visible circle { stroke: var(--brand); stroke-width: 1.6; }
/* Тултип (JS-улучшение) */
.rus-map__tip { position: absolute; z-index: 5; pointer-events: none;
  background: var(--ink); color: #fff; font-size: 0.8rem; line-height: 1.3;
  padding: 5px 9px; border-radius: 6px; white-space: nowrap;
  transform: translate(-50%, -140%); box-shadow: 0 2px 8px rgba(0,0,0,.2); }
.rus-map__note { color: var(--muted); font-size: 0.8rem; margin-top: 8px;
  text-align: center; }
.rus-map__list { margin-top: 12px; }
.rus-map__list summary { cursor: pointer; color: var(--brand); font-size: 0.9rem; }
.rus-map__list .home-links { margin-top: 10px; }

/* ── Шапка: контактный телефон ─────────────────────────────────────────── */
.site-header__contact { display: flex; flex-direction: column; line-height: 1.2; }
.site-header__phone { font-weight: 700; font-size: 1.05rem; color: var(--ink);
  text-decoration: none; white-space: nowrap; }
.site-header__phone:hover { color: var(--brand); }
.site-header__hours { font-size: 0.78rem; color: var(--muted); }

/* ── Hero: плитки доверия и группа CTA ─────────────────────────────────── */
.hero__cta { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 20px; }

.hero__stats { list-style: none; display: flex; flex-wrap: wrap; gap: 12px;
  padding: 0; margin: 22px 0 0; }
.hero__stat { flex: 1 1 160px; min-width: 150px; background: #f6f8f7;
  border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px;
  display: flex; flex-direction: column; gap: 2px; }
.hero__stat-num { font-size: 1.7rem; font-weight: 700; color: var(--brand); line-height: 1.1; }
.hero__stat-label { font-size: 0.85rem; color: var(--muted); }

/* Быстрый выбор города над картой */
.home-cities__lead { color: var(--muted); margin: 4px 0 12px; }

/* ── Мобильная липкая панель действий (главная) ────────────────────────── */
.mobile-cta { display: none; }
@media (max-width: 859px) {
  .mobile-cta { display: flex; gap: 10px; position: fixed; left: 0; right: 0; bottom: 0;
    padding: 10px 14px calc(10px + env(safe-area-inset-bottom)); background: #fff;
    border-top: 1px solid var(--line); box-shadow: 0 -4px 16px rgba(0,0,0,.08); z-index: 60; }
  .mobile-cta .btn { flex: 1; text-align: center; padding: 12px 16px; }
  body:has(.mobile-cta) { padding-bottom: 76px; }
}
