/* ========= Fessto — светлая зелёная тема (в духе Сбера) ========= */

/* Палитра и дизайн-токены */
:root{
  --bg:#f5f6f8;        /* светлый фон страницы */
  --bg-soft:#ffffff;   /* фон карточек */
  --text:#0f172a;      /* основной тёмный текст */
  --text-on-dark:#f9fafb; /* текст на тёмных подложках (галерея/оверлеи) */
  --muted:#6b7280;     /* приглушённый текст */
  --border:#e5e7eb;    /* границы на светлом */
  --border-strong:#d1d5db;

  --accent:#21a038;       /* зелёный акцент */
  --accent-soft:#e7f7ec;  /* светло-зелёный бекграунд */
  --accent-dark:#1a8f34;

  --radius-sm:10px;
  --radius-md:14px;
  --radius-lg:18px;

  --shadow-soft:0 18px 38px rgba(15,23,42,.14);
  --shadow-sm:0 6px 18px rgba(15,23,42,.08);
  --shadow-md:0 14px 32px rgba(15,23,42,.12);
}
*,
*::before,
*::after{box-sizing:border-box}

html,body{
  margin:0;
  padding:0;
  max-width:100%;
  /* overflow-x:hidden ломал position:sticky на правом сайдбаре /property и /service.
   * overflow:clip не создаёт scroll-container и не трогает sticky, но всё так же
   * обрезает горизонтальные «протечки». Поддерживается всеми актуальными браузерами. */
  overflow-x:clip;
  scroll-behavior:smooth;
}

body {
  background: var(--bg);
  color: var(--text);
  font:15px/1.55 "Montserrat", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4{ font-family:"Montserrat",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif }
button,input,select,textarea{ font-family:inherit }

img,video{max-width:100%;height:auto;display:block}

a{
  color:var(--accent-dark);
  text-decoration:none;
}
a:hover{text-decoration:underline}

/* ===== helpers ===== */

.container{width:min(1180px,94%);margin-inline:auto}
.narrow{width:min(840px,94%);margin-inline:auto}
.section{padding:28px 0}
.mt-1{margin-top:8px}
.center{text-align:center}

.h1{font-size:32px;line-height:1.25;margin:0 0 10px}
.h2{font-size:24px;line-height:1.3;margin:0 0 14px}
.h3{font-size:20px;line-height:1.3;margin:0 0 10px}
.h4{font-size:16px;margin:0 0 6px}
.lead{color:var(--muted);max-width:640px}
.muted{color:var(--muted)}
.sm{font-size:13px}

/* подчёркивание заголовков секций — только для главных h2 */
.section > .h2{
  position:relative;
  padding-bottom:8px;
  margin-bottom:16px;
}
.section > .h2::after{
  content:"";position:absolute;left:0;bottom:0;
  width:48px;height:3px;border-radius:999px;
  background:var(--accent);
}

/* ===== Breadcrumbs (хлебные крошки в стиле прототипа) ===== */
.crumbs{
  padding:14px 0 6px;
  font-size:13px;
  color:var(--muted);
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:0;
}
.crumbs a{color:var(--muted)}
.crumbs a:hover{color:var(--text);text-decoration:none}
.crumbs .sep{margin:0 8px;color:#cbd5e1}
.crumbs strong{color:var(--text);font-weight:500}

/* ===== Demo / Page pill (опц. бейдж справа в шапке) ===== */
.page-pill{
  margin-left:auto;
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-size:12px;
  background:var(--accent-soft);
  color:var(--accent-dark);
  padding:6px 10px;
  border-radius:999px;
  font-weight:600;
  white-space:nowrap;
}

/* ===== Header ===== */

.site-header{
  position:sticky;top:0;z-index:50;
  background:#fff;
  border-bottom:1px solid rgba(148,163,184,.25);
  box-shadow:0 10px 24px rgba(15,23,42,.04);
}
.header-wrap{
  display:flex;align-items:center;gap:16px;
  min-height:56px;
}

.logo{
  font-weight:800;font-size:20px;letter-spacing:.01em;
  text-decoration:none;color:var(--text);
}
.logo .logo-part2{color:var(--accent)}

.nav{
  margin-left:auto;
  display:flex;
  gap:18px;
  align-items:center;
}
.nav a{
  position:relative;
  font-size:14px;
  color:var(--muted);
  padding:6px 0;
}
.nav a:hover{color:var(--text)}
.nav a.active{
  color:var(--accent-dark);
  font-weight:600;
}
.nav a.active::after{
  content:"";position:absolute;left:0;right:0;bottom:-5px;
  height:2px;border-radius:999px;background:var(--accent);
}

/* бургер */

.burger{
  display:none;
  margin-left:8px;
  background:transparent;
  border:0;
  padding:6px;
  cursor:pointer;
}
.burger span{
  display:block;width:20px;height:2px;
  border-radius:999px;
  background:#111;margin:4px 0;
  transition:.2s;
}

@media (max-width:900px){
  .burger{display:inline-flex;flex-direction:column;align-items:center;justify-content:center}
  .nav{
    position:fixed;
    inset:56px 0 auto 0;
    background:#fff;
    border-bottom:1px solid var(--border);
    padding:12px 18px;
    flex-direction:column;
    align-items:flex-start;
    gap:10px;
    display:none;
  }
  .nav.open{display:flex}
}

/* dropdown контактов (если используется) */
.contact-dropdown{position:relative}
.contact-menu{
  position:absolute;right:0;top:calc(100% + 8px);
  min-width:220px;padding:8px;
  background:#fff;border:1px solid var(--border);border-radius:12px;
  box-shadow:var(--shadow-soft);display:none;
}
.contact-menu.open{display:block}
.contact-menu a{
  display:flex;align-items:center;gap:8px;
  padding:8px 10px;border-radius:10px;
  color:var(--text);
}
.contact-menu a:hover{background:#f9fafb}

/* ===== Buttons ===== */

.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:10px 16px;
  border-radius:12px;
  border:1px solid transparent;
  background:transparent;
  color:var(--text);
  font-size:14px;
  font-weight:600;
  line-height:1;
  cursor:pointer;
  text-decoration:none;
  white-space:nowrap;
  transition:
    background .15s ease,
    border-color .15s ease,
    color .15s ease,
    box-shadow .15s ease,
    transform .12s ease;
}

.btn:hover{
  transform:translateY(-1px);
  text-decoration:none;
}

.btn:active{
  transform:translateY(0) scale(0.98);
}

.btn-accent{
  background:var(--accent);
  border-color:var(--accent);
  color:#ffffff;
  box-shadow:0 6px 14px rgba(33,160,56,.30);
}
.btn-accent:hover{
  background:var(--accent-dark);
  border-color:var(--accent-dark);
  box-shadow:0 10px 20px rgba(33,160,56,.35);
}

.btn-outline{
  background:#ffffff;
  border-color:var(--border);
  color:var(--text);
}
.btn-outline:hover{
  background:#f8fafc;
  border-color:var(--border-strong);
}

.btn-ghost{
  background:transparent;
  border-color:transparent;
  color:var(--text);
}
.btn-ghost:hover{
  background:#f1f5f9;
}

.btn-lg{
  padding:14px 22px;
  font-size:15px;
  border-radius:14px;
}
.btn-block{display:flex;width:100%}

/* ===== Grids & cards ===== */

.grid{display:grid;gap:18px}
.grid.two{grid-template-columns:repeat(2,1fr)}
.grid.three{grid-template-columns:repeat(3,1fr)}
.grid.auto-fit{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.grid.equal > *{height:100%}
@media (max-width:960px){ .grid.two,.grid.three{grid-template-columns:1fr} }

.card{
  background:var(--bg-soft);
  border-radius:var(--radius-md);
  border:1px solid var(--border);
  box-shadow:var(--shadow-sm);
  transition:box-shadow .2s, transform .1s, border-color .2s;
}
.card:hover{
  box-shadow:var(--shadow-soft);
  transform:translateY(-1px);
  border-color:rgba(33,160,56,.18);
}

.panel{
  background:#fff;
  border-radius:var(--radius-lg);
  border:1px solid var(--border);
  padding:22px;
  box-shadow:var(--shadow-soft);
  display:flex;
  flex-direction:column;
}

/* медиакарточки */
/* Рекомендуемые дома: фиксированная высота фото и обрезка по контейнеру */
.card.card-media{
  display:flex;
  flex-direction:column;
  overflow:hidden;              /* обрезаем всё, что вылезает за рамки */
  border-radius:var(--radius-lg);
}

.card.card-media img{
  width:100%;
  height:220px;                 /* одинаковая высота для всех */
  object-fit:cover;             /* обрезаем по краям, сохраняем пропорции */
  border-radius:var(--radius-lg) var(--radius-lg) 0 0;
}
.card-body{padding:12px 14px 14px}
.card-title{margin:0 0 6px;font-size:17px;font-weight:700}
.card-foot{display:flex;justify-content:space-between;align-items:center;margin-top:8px}
.price{font-weight:700;font-size:16px}
.price-lg{font-weight:800;font-size:22px}

/* ===== Каталог домов ===== */

.cat-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:18px;
}
@media (max-width:900px){
  .cat-grid{grid-template-columns:1fr;gap:12px}
}

.cat-grid .card{
  overflow:hidden;
  border-radius:var(--radius-lg);
}

.cat-grid .card img{
  width:100%;
  height:auto;
  max-height:260px;
  aspect-ratio:3/2;
  object-fit:cover;
}

.cat-grid .card-title{
  display:inline-block;
  margin:0 0 4px;
  font-weight:700;
  color:var(--text);
}
.cat-grid .card-title:hover{color:var(--accent-dark)}

/* ===== Карточка объекта ===== */

.f-cols{
  display:grid;
  grid-template-columns:1.35fr 1fr;
  gap:18px;
  align-items:start;
}
@media (max-width:900px){
  .f-cols{grid-template-columns:1fr;gap:12px}
}

.f-photo-cover{
  width:100%;
  height:420px;
  object-fit:cover;
  border-radius:var(--radius-lg);
  border:1px solid var(--border);
}
@media (max-width:900px){
  .f-photo-cover{height:auto;aspect-ratio:16/10}
}

/* мини-галерея */

.gallery-scroll{
  display:grid;
  grid-auto-flow:column;
  grid-auto-columns:36%;
  gap:10px;
  overflow-x:auto;
  padding-bottom:8px;
  scroll-snap-type:x mandatory;
}
.gallery-scroll img{
  width:100%;
  height:110px;
  object-fit:cover;
  border-radius:var(--radius-md);
  border:1px solid var(--border);
  scroll-snap-align:start;
}
.gallery-scroll::-webkit-scrollbar{height:6px}
.gallery-scroll::-webkit-scrollbar-thumb{background:#d4d4d8;border-radius:999px}
@media (min-width:901px){
  .gallery-scroll{
    grid-auto-flow:row;
    grid-auto-columns:auto;
    grid-template-columns:repeat(4,1fr);
  }
  .gallery-scroll img{height:108px}
}

/* чипы удобств */

.tag{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:4px 10px;
  border-radius:999px;
  border:1px solid var(--border);
  background:#ffffff;
  color:var(--text);
  font-size:13px;
  font-weight:500;
}

/* ===== Форма бронирования ===== */

.booking.card{padding:16px;border-radius:var(--radius-md)}

.f-booking label{
  font-size:14px;
  color:var(--muted);
  margin:6px 0 4px;
}

.f-booking input[type="text"],
.f-booking input[type="tel"],
.f-booking input[type="date"],
.f-booking input[type="number"]{
  height:44px;
  line-height:44px;
  border-radius:10px;
  border:1px solid var(--border);
  padding-inline:10px;
  background:#fff;
}
.f-booking input:focus{
  outline:none;
  border-color:var(--accent);
  box-shadow:0 0 0 1px rgba(33,160,56,.18);
}
.f-booking button{height:44px}

@media (max-width:900px){
  .f-booking .grid{grid-template-columns:1fr !important}
}

/* ===== Notices ===== */

.notice{
  border-radius:10px;
  padding:8px 10px;
  font-size:14px;
}
.notice.ok{
  background:var(--accent-soft);
  border:1px solid rgba(33,160,56,.35);
}
.notice.err{
  background:#fef2f2;
  border:1px solid #fecaca;
  color:#b91c1c;
}

/* ===== Footer ===== */

.site-footer{
  margin-top:32px;
  padding-top:20px;
  border-top:1px solid var(--border);
  background:#ffffff;            /* светлый фон подвала */
  color:var(--text);
}
.site-footer .footer-grid{
  display:grid;
  grid-template-columns:2fr 1.2fr 1.2fr;
  gap:18px;
  padding:0 16px 18px;
}
.site-footer .logo-footer{
  display:inline-flex;
  margin-bottom:6px;
  color:var(--text);
}
.site-footer .muted{
  color:var(--muted);
}
.site-footer a{
  color:var(--text);
  text-decoration:none;
}
.site-footer a:hover{
  color:var(--accent-dark);
  text-decoration:underline;
}
.site-footer .copy{
  border-top:1px solid var(--border);
  padding:10px 16px;
  font-size:13px;
  color:var(--muted);
  text-align:left;
}

@media (max-width:900px){
  .site-footer .footer-grid{
    grid-template-columns:1fr;
    padding-inline:12px;
  }
}

/* ===== Документы (Правила / Политика) ===== */

.doc-layout{
  display:grid;
  grid-template-columns:260px 1fr;
  gap:20px;
}
@media (max-width:960px){
  .doc-layout{grid-template-columns:1fr}
}

.doc-toc{position:sticky;top:88px;align-self:start}

.toc-card{
  background:#fff;
  border-radius:var(--radius-md);
  border:1px solid var(--border);
  box-shadow:var(--shadow-sm);
  padding:12px;
}
.toc-title{font-weight:700;margin:0 0 8px}
.toc-card nav{display:flex;flex-direction:column;gap:4px}
.toc-card a{
  padding:6px 8px;
  border-radius:8px;
  color:var(--text);
}
.toc-card a:hover{background:#f3f4f6}

.doc-content{display:flex;flex-direction:column;gap:16px}

.doc-card{
  background:#fff;
  border-radius:var(--radius-lg);
  border:1px solid var(--border);
  box-shadow:var(--shadow-sm);
  padding:18px 20px;
}
.doc-card h2{
  display:flex;align-items:center;gap:8px;
  margin:0 0 8px;
}
.step-num{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:26px;height:26px;
  border-radius:999px;
  background:var(--accent-dark);
  color:#fff;
  font-size:13px;
  font-weight:700;
}

.doc-list{margin:8px 0 0 18px}
.doc-list li{margin:6px 0}

.doc-note{
  margin-top:8px;
  border-radius:10px;
  border:1px dashed #d4d4d8;
  background:#f9fafb;
  padding:8px 10px;
}
.pill{
  display:inline-block;
  padding:3px 8px;
  border-radius:999px;
  background:var(--accent-dark);
  color:#fff;
  font-size:11px;
}

/* якоря под фикс-хедер */
[id]{scroll-margin-top:90px}

/* ===== Contacts ===== */

.contact-grid{align-items:flex-start}

.social-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:10px;
  margin-top:8px;
}

.social-btn{
  display:flex;align-items:center;justify-content:center;gap:10px;
  padding:10px 12px;
  background:#fff;
  border-radius:12px;
  border:1px solid var(--border);
  box-shadow:var(--shadow-sm);
  font-weight:700;
  color:var(--text);
}
.social-btn i{font-size:18px}
.social-btn:hover{
  border-color:var(--accent);
  box-shadow:var(--shadow-soft);
}

.contact-form .field{margin-bottom:10px}
.contact-form input,
.contact-form textarea{
  border-radius:12px;
  border:1px solid var(--border);
  padding:10px 12px;
}

.contact-page{
  padding-top: 36px;
  background: var(--bg);
}

.contact-page .container{
  width: min(1180px, 94%);
}

.contact-hero{
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 22px;
  padding: 28px 30px;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: var(--bg-soft);
  box-shadow: var(--shadow-sm);
}

.contact-hero .h1{
  margin-bottom: 8px;
  font-size: clamp(28px, 3vw, 40px);
  color: var(--text);
}

.contact-kicker{
  display: inline-flex;
  width: fit-content;
  align-items: center;
  min-height: 26px;
  margin-bottom: 10px;
  padding: 4px 11px;
  border-radius: 999px;
  color: var(--accent-dark);
  background: var(--accent-soft);
  font-size: 12px;
  font-weight: 700;
}

.contact-hero-btn{
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.contact-notice{
  margin-bottom: 16px;
}

.contact-layout{
  display: grid;
  grid-template-columns: minmax(0, .95fr) minmax(360px, .72fr);
  gap: 18px;
  align-items: stretch;
}

.contact-card,
.contact-map-card{
  border: 1px solid rgba(148, 163, 184, .18);
  border-radius: 22px;
  background: #fff;
  color: #111827;
  box-shadow: 0 28px 70px rgba(0, 0, 0, .22);
}

.contact-card{
  padding: 24px;
}

.contact-card .h3,
.contact-map-card .h3{
  color: #111827;
}

.contact-card .muted,
.contact-map-card .muted{
  color: #6b7280;
}

.contact-methods{
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin: 20px 0;
}

.contact-method{
  display: grid;
  gap: 6px;
  min-height: 148px;
  padding: 16px;
  border: 1px solid #e5e7eb;
  border-radius: 18px;
  color: #111827;
  background: #f8fafc;
  text-decoration: none;
}

.contact-method:hover{
  border-color: rgba(82, 180, 73, .5);
  background: #f3fbf4;
  text-decoration: none;
}

.contact-method span{
  display: inline-flex;
  width: 38px;
  height: 38px;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  color: #fff;
  background: linear-gradient(180deg, #63c85c, #3b9c35);
  box-shadow: 0 12px 28px rgba(82, 180, 73, .25);
}

.contact-method strong{
  font-size: 15px;
}

.contact-method em{
  color: #6b7280;
  font-style: normal;
  overflow-wrap: anywhere;
}

.contact-page .social-grid{
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  margin-top: 18px;
}

.contact-page .social-btn{
  min-height: 48px;
  border-radius: 14px;
  background: #fff;
}

.contact-form-card{
  position: relative;
  overflow: hidden;
}

.contact-form-card::before{
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 5px;
  background: linear-gradient(90deg, #21a038, #7bd36d);
}

.contact-form{
  margin-top: 12px;
}

.contact-form .label-inline{
  display: inline-flex;
  margin-bottom: 6px;
  color: #374151;
  font-weight: 700;
}

.contact-form input,
.contact-form textarea{
  width: 100%;
  border-color: #d9dee7;
  background: #fff;
  color: #111827;
}

.contact-form textarea{
  resize: vertical;
  min-height: 132px;
}

.contact-submit{
  display: inline-flex;
  width: 100%;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.contact-policy{
  margin: 10px 0 0;
}

.contact-map-card{
  margin-top: 18px;
  overflow: hidden;
}

.contact-map-head{
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  padding: 22px 24px 18px;
}

.contact-map-head .contact-kicker{
  margin-bottom: 10px;
}

.contact-map-frame{
  min-height: 400px;
  border-top: 1px solid #e5e7eb;
  background: #eef2f7;
}

.contact-map-frame iframe,
.contact-map-frame ymaps{
  display: block;
}

@media (max-width: 980px){
  .contact-hero{
    align-items: flex-start;
    flex-direction: column;
  }

  .contact-layout{
    grid-template-columns: 1fr;
  }

  .contact-methods{
    grid-template-columns: 1fr;
  }

  .contact-method{
    min-height: auto;
  }
}

@media (max-width: 640px){
  .contact-page{
    padding-top: 18px;
  }

  .contact-hero,
  .contact-card{
    padding: 18px;
    border-radius: 18px;
  }

  .contact-map-card{
    border-radius: 18px;
  }

  .contact-map-head{
    align-items: flex-start;
    flex-direction: column;
    padding: 18px;
  }
}

/* ===== Мобильные общие штрихи ===== */

@media (max-width:900px){
  .container{padding-inline:12px}
  .section{padding-top:16px;padding-bottom:24px}
  .cat-grid .card{box-shadow:var(--shadow-soft)}
}


/* ===== Booking form — extra visual polish ===== */

.booking-header{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
  padding:12px 12px 8px;
  border-bottom:1px solid var(--border);
}
.booking-pill{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:4px 10px;
  border-radius:999px;
  background:#f3f4f6;
  color:var(--muted);
  border:1px solid var(--border);
  white-space:nowrap;
}
.booking-pill i{font-size:13px}

.f-booking{
  padding:12px 14px 14px;
}

/* красивое поле с календарём */
.f-date-field{
  position:relative;
  display:flex;
  align-items:center;
}
.f-date-field input[type="date"]{
  width:100%;
  padding-right:34px;
  border-radius:10px;
  border:1px solid var(--border);
  background:#fff;
  height:44px;
  line-height:44px;
}
.f-date-field input[type="date"]:focus{
  border-color:var(--accent);
  box-shadow:0 0 0 1px rgba(33,160,56,.18);
}
.f-date-icon{
  position:absolute;
  right:10px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:22px;
  height:22px;
  border-radius:999px;
  background:var(--accent-soft);
  color:var(--accent-dark);
  font-size:12px;
  pointer-events:none;
}

/* прячем стандартную иконку, оставляем только нашу */
.f-date-field input[type="date"]::-webkit-calendar-picker-indicator{
  opacity:0;
  width:100%;
  height:100%;
  cursor:pointer;
}

/* низ формы */
.booking-actions{
  display:flex;
  flex-direction:column;
  gap:6px;
  margin-top:12px;
}
.booking-actions .btn{align-self:flex-start}

@media (max-width:900px){
  .booking-header{
    flex-direction:column;
    align-items:flex-start;
  }
  .booking-pill{margin-top:4px}
}

/* ===== Главная: форма и популярные направления ===== */
/* ===== Форма на главной — город + кнопка ===== */

.home-filter{
  margin-top:18px;
}

/* общий контейнер формы — маленькая карточка */
.home-filter-controls{
  display:flex;
  align-items:flex-end;
  gap:10px;
  max-width:420px;
  padding:10px 12px;
  border-radius:14px;
  background:#fff;
  border:1px solid var(--border);
  box-shadow:var(--shadow-soft);
}

/* селект города */
.home-filter-label{
  flex:1 1 auto;
  margin:0;
}
.home-filter-label select{
  width:100%;
  height:40px;
  border-radius:10px;
  border:1px solid var(--border);
  background:#f9fafb;
  padding:0 12px;
  font-size:14px;
}
.home-filter-label select:focus{
  outline:none;
  border-color:var(--accent);
  box-shadow:0 0 0 1px rgba(33,160,56,.18);
  background:#fff;
}

/* кнопка "Найти" */
.home-filter-submit{
  flex:0 0 130px;
}

/* слегка спокойнее, чем общие btn-accent */
.home-filter .btn-accent{
  height:40px;
  padding:0 16px;
  border-radius:12px;
  box-shadow:0 6px 16px rgba(33,160,56,.25);
  font-size:14px;
}

/* на мобиле — всё в столбик, без гигантской капсулы */
@media (max-width:900px){
  .home-filter-controls{
    flex-direction:column;
    align-items:stretch;
    max-width:100%;
  }
  .home-filter-submit{
    flex:none;
    width:auto;
    align-self:flex-start;
  }
}
/* форма: город + кнопка в одной линии, на мобиле в столбик */

/* популярные направления: одинаковые, заполняют ширину блока */
/* популярные направления: 2 строки по 4, одинаковая ширина */
.popular-grid{
  display:grid;
  grid-template-columns:repeat(4, minmax(0,1fr));
  gap:10px;
  margin-top:6px;
}
@media (max-width:900px){
  .popular-grid{
    grid-template-columns:repeat(2, minmax(0,1fr));
  }
}

.popular-chip{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:10px 14px;
  border-radius:999px;
  border:1px solid var(--border);
  background:#ffffff;
  font-size:14px;
  font-weight:600;
  color:var(--text);
  text-decoration:none;           /* без подчёркивания */
  transition:
    background-color .18s ease,
    color .18s ease,
    box-shadow .18s ease,
    border-color .18s ease,
    transform .08s ease;
}
.popular-chip:hover{
  background:#21a038;             /* зелёная подсветка */
  color:#ffffff;
  border-color:#21a038;
  box-shadow:0 8px 22px rgba(33,160,56,.45);
  text-decoration:none;           /* точно без подчёркивания */
  transform:translateY(-1px);
}

/* ===== Hero map card (правая колонка формы) ===== */

.hero-media{
  display:flex;
  justify-content:flex-end;
  align-items:center;
}
.hero-map-card{
  width:100%;
  max-width:340px;
  height:210px;
  border-radius:18px;
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(circle at 0% 0%, rgba(33,160,56,0.25), transparent 55%),
    radial-gradient(circle at 100% 100%, rgba(37,99,235,0.18), transparent 55%),
    linear-gradient(135deg, #0f172a, #020617);
  /* Если будет карта, подключи сюда:
     background-image:
       radial-gradient(circle at 0% 0%, rgba(33,160,56,0.25), transparent 55%),
       radial-gradient(circle at 100% 100%, rgba(37,99,235,0.18), transparent 55%),
       url('/assets/img/hero-map.png');
     background-size: cover;
     background-position: center;
  */
  box-shadow: var(--shadow-soft);
}
.hero-map-card::after{
  content:"";
  position:absolute;
  inset:12px;
  border-radius:14px;
  border:1px solid rgba(148,163,184,.35);
  pointer-events:none;
}
.hero-map-label{
  position:absolute;
  left:14px;
  bottom:14px;
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:6px 10px;
  border-radius:999px;
  background:rgba(15,23,42,.85);
  color:#e5f4eb;
  font-size:13px;
}
.hero-map-pin{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:22px;height:22px;
  border-radius:999px;
  background:rgba(34,197,94,.18);
  color:#bbf7d0;
}

@media (max-width:900px){
  .hero-map-card{
    margin-top:14px;
    height:180px;
  }
}

/* ===== Популярные направления с иконками ===== */

.popular-grid{
  display:grid;
  grid-template-columns:repeat(4, minmax(0,1fr));
  gap:10px;
  margin-top:6px;
}
@media (max-width:900px){
  .popular-grid{
    grid-template-columns:repeat(2, minmax(0,1fr));
  }
}
.popular-chip{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  padding:10px 8px;
  border-radius:999px;
  border:1px solid var(--border);
  background:#fff;
  font-size:14px;
  font-weight:600;
  color:var(--text);
  text-align:center;
  white-space:nowrap;
  box-shadow:0 4px 12px rgba(15,23,42,.03);
}
.popular-chip:hover{
  border-color:var(--accent);
  box-shadow:0 6px 16px rgba(15,23,42,.08);
}
.popular-icon{font-size:13px;}
.popular-label{flex:1 1 auto;}

/* мобильный фильтр чуть компактнее */
@media (max-width:700px){
  .home-filter-controls{
    border-radius:18px;
    box-shadow:var(--shadow-sm);
  }
}

/* ===== Mobile fix: фильтр на главной ===== */
@media (max-width: 900px) {
  /* селект и кнопка — в колонку */
  .home-filter-controls{
    flex-direction: column;
    align-items: stretch;
  }

  /* кнопка "Найти" не растягивается на всю ширину, а как нормальная кнопка */
  .home-filter-submit{
    width: auto;
    align-self: flex-start;
  }

  /* чуть менее "таблеточная" и менее тяжёлая кнопка именно в фильтре */
  .home-filter .btn-accent{
    border-radius: 14px;
    box-shadow: 0 6px 16px rgba(33,160,56,.25);
    padding-inline: 18px;
  }
}

/* ===== Тёмный фон + светлые карточки: текст внутри карточек делаем тёмным ===== */

/* общий стиль для всех белых панелей/карточек */
.panel,
.card{
  color:#111111;
}

/* приглушённые подписи внутри карточек */
.panel .muted,
.card .muted,
.panel .lead{
  color:#6b7280;
}

/* заголовки внутри панелей и карточек */
.panel h1,
.panel h2,
.panel h3,
.panel h4,
.card h1,
.card h2,
.card h3,
.card h4{
  color:#111111;
}

/* популярные направления — тёмный текст на светлом */
.popular-chip{
  color:var(--text);
}

/* ===== Светлая шапка ===== */

.site-header{
  background:#ffffff;
  border-bottom:1px solid var(--border);
  box-shadow:0 4px 12px rgba(15,23,42,.04);
}

/* логотип: тёмный + зелёный акцент */
.logo{
  color:var(--text);
}
.logo .logo-part1{color:var(--text);}
.logo .logo-part2{color:var(--accent);} /* оставляем зелёный акцент в буквах "To" */

/* пункты меню: серые, активный — тёмный с зелёной полосой */
.nav a{
  color:var(--muted);
}
.nav a:hover{
  color:var(--text);
}
.nav a.active{
  color:var(--accent-dark);
}
.nav a.active::after{
  background:var(--accent);
}

/* Ссылки-чипы городов: никогда не подчёркиваются */
.popular-chip,
.popular-chip:hover,
.popular-chip:focus{
  text-decoration: none !important;
}

/* ===== Форма бронирования на карточке объекта — читаемая ===== */

.booking.card,
.f-booking{
  background:#ffffff;
  color:#111111;
  border-radius:18px;
  border:1px solid #d1d5db;
  box-shadow:0 14px 32px rgba(0,0,0,.45);
}

/* заголовки и текст */
.f-booking h3,
.f-booking label{
  color:#111111;
}

/* поля */
.f-booking input[type="text"],
.f-booking input[type="tel"],
.f-booking input[type="date"],
.f-booking input[type="number"]{
  background:#ffffff;
  border:1px solid #d1d5db;
  color:#111111;
}
.f-booking input::placeholder{
  color:#9ca3af;
}
.f-booking input:focus{
  border-color:#21a038;
  box-shadow:0 0 0 1px rgba(33,160,56,.25);
}

/* зелёная кнопка внутри формы */
.f-booking .btn-accent{
  background:linear-gradient(135deg,#21a038,#4ad964);
  border-color:#1a8f34;
  box-shadow:0 10px 24px rgba(33,160,56,.45);
  color:#ffffff;
}

/* верхняя плашка "Ответ в течение 15 минут" — чуть темнее */
.booking-header{
  background:#f9fafb;
  border-bottom:1px solid #e5e7eb;
}

/* подпись справа */
.booking-pill{
  background:#ecfdf5;
  border-color:#bbf7d0;
  color:#166534;
}

/* на мобиле форма тянется на всю ширину */
@media (max-width:900px){
  .f-cols{grid-template-columns:1fr;gap:16px}
}

/* ===== Лайтбокс галереи ===== */

.cover-click{
  padding:0;
  border:0;
  background:transparent;
  width:100%;
}
.cover-click img{display:block;width:100%}

.gallery-thumb{
  padding:0;
  border:0;
  background:transparent;
}
.gallery-thumb img{
  width:100%;
  height:110px;
  object-fit:cover;
  border-radius:12px;
  border:1px solid var(--border);
}

/* overlay */
.lightbox{
  position:fixed;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  background:rgba(0,0,0,.65);
  opacity:0;
  visibility:hidden;
  transition:opacity .18s ease, visibility .18s ease;
  z-index:200;
}
.lightbox.open{
  opacity:1;
  visibility:visible;
}
.lightbox-backdrop{
  position:absolute;
  inset:0;
}
.lightbox-inner{
  position:relative;
  max-width:min(90vw, 960px);
  max-height:min(90vh, 620px);
  border-radius:14px;
  overflow:hidden;
  background:#000;
  box-shadow:0 18px 48px rgba(0,0,0,.6);
}
.lightbox-inner img{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
  background:#000;
}
.lightbox-close{
  position:absolute;
  top:8px;
  right:10px;
  width:32px;
  height:32px;
  border-radius:999px;
  border:0;
  background:rgba(15,23,42,.75);
  color:#f9fafb;
  font-size:20px;
  line-height:1;
  cursor:pointer;
}
.lightbox-close:hover{
  background:rgba(15,23,42,.95);
}

/* ===== Удобства — чёткие чипы ===== */
.tag{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:4px 10px;
  border-radius:999px;
  border:1px solid #d1d5db;
  background:#f9fafb;
  color:#111111;
  font-size:13px;
  font-weight:500;
}

/* ===== Лайтбокс галереи ===== */
.cover-click{
  padding:0;
  border:0;
  background:transparent;
  width:100%;
}
.cover-click img{display:block;width:100%}

.gallery-thumb{
  padding:0;
  border:0;
  background:transparent;
}
.gallery-thumb img{
  width:100%;
  height:110px;
  object-fit:cover;
  border-radius:12px;
  border:1px solid #d1d5db;
}

/* overlay */
.lightbox{
  position:fixed;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  background:rgba(0,0,0,.65);
  opacity:0;
  visibility:hidden;
  transition:opacity .18s ease, visibility .18s ease;
  z-index:200;
}
.lightbox.open{
  opacity:1;
  visibility:visible;
}
.lightbox-backdrop{
  position:absolute;
  inset:0;
}
.lightbox-inner{
  position:relative;
  max-width:min(90vw, 960px);
  max-height:min(90vh, 620px);
  border-radius:14px;
  overflow:hidden;
  background:#000;
  box-shadow:0 18px 48px rgba(0,0,0,.6);
}
.lightbox-inner img{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
  background:#000;
}
.lightbox-close{
  position:absolute;
  top:8px;
  right:10px;
  width:32px;
  height:32px;
  border-radius:999px;
  border:0;
  background:rgba(15,23,42,.75);
  color:#f9fafb;
  font-size:20px;
  line-height:1;
  cursor:pointer;
}
.lightbox-close:hover{
  background:rgba(15,23,42,.95);
}


/* Удобства — чёткие чипы */
.tag{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:4px 10px;
  border-radius:999px;
  border:1px solid #d1d5db;
  background:#f9fafb;
  color:#111111;
  font-size:13px;
  font-weight:500;
}

/* Лайтбокс (см. выше) */
.cover-click{
  padding:0;border:0;background:transparent;width:100%;
}
.cover-click img{display:block;width:100%}

.gallery-thumb{
  padding:0;border:0;background:transparent;
}
.gallery-thumb img{
  width:100%;
  height:110px;
  object-fit:cover;
  border-radius:12px;
  border:1px solid #d1d5db;
}

.lightbox{
  position:fixed;inset:0;
  display:flex;align-items:center;justify-content:center;
  background:rgba(0,0,0,.65);
  opacity:0;visibility:hidden;
  transition:opacity .18s ease, visibility .18s ease;
  z-index:200;
}
.lightbox.open{opacity:1;visibility:visible}
.lightbox-backdrop{position:absolute;inset:0}
.lightbox-inner{
  position:relative;
  max-width:min(90vw,960px);
  max-height:min(90vh,620px);
  border-radius:14px;
  overflow:hidden;
  background:#000;
  box-shadow:0 18px 48px rgba(0,0,0,.6);
}
.lightbox-inner img{
  display:block;width:100%;height:100%;
  object-fit:contain;background:#000;
}
.lightbox-close{
  position:absolute;top:8px;right:10px;
  width:32px;height:32px;
  border-radius:999px;border:0;
  background:rgba(15,23,42,.75);
  color:#f9fafb;font-size:20px;line-height:1;
  cursor:pointer;
}
.lightbox-close:hover{background:rgba(15,23,42,.95)}


/* Каталог: текст внутри карточек всегда тёмный и читаемый */
.cat-grid .card{
  color:#111111;
}
.cat-grid .card .muted{
  color:#6b7280;
}
.cat-grid .card .card-title{
  color:#111111;
}
.cat-grid .card .card-title:hover{
  color:#166534; /* чуть зелёного при ховере, можно оставить чёрным если не хочешь */
}

.btn-sm{
  padding:6px 12px;
  font-size:13px;
}
.btn-sm.btn-accent,
.btn-sm.btn-outline{
  height:auto;
}

/* ===== Документы: делаем текст читаемым на тёмном фоне ===== */

/* Общий цвет текста внутри карточек документов */
.doc-card{
  color:#111111;
}

/* Параграфы, списки и прочий контент — тёмный текст */
.doc-card p,
.doc-card li,
.doc-card span,
.doc-card .muted,
.doc-card .lead{
  color:#111111;
}

/* Заголовки внутри doc-card — чёрные */
.doc-card h1,
.doc-card h2,
.doc-card h3,
.doc-card h4{
  color:#111111;
}

/* Содержание слева (TOC) — делаем текст чуть более заметным */
.toc-card{
  color:#111111;
}
.toc-card a{
  color:#111111;
}
.toc-card a:hover{
  background:#f3f4f6;
  color:#111111;
}
/* ===== MOBILE SWIPER ===== */

@media (max-width:900px){
  .mobile-swiper{
    display:block !important;
    width:100%;
    margin-top:12px;
  }
  .mobile-swiper .swiper-slide{
    width:100%;
    height:240px;
  }
  .mobile-swiper .swiper-slide img{
    width:100%;
    height:100%;
    object-fit:cover;
    border-radius:14px;
  }
  .desktop-gallery{
    display:none !important;
  }
}

/* ===== Mobile swiper gallery на карточке объекта ===== */
@media (max-width:900px){
  .desktop-cover,
  .desktop-gallery{
    display:none !important;
  }
  .mobile-swiper{
    display:block !important;
    width:100%;
  }
  .mobile-swiper .swiper-slide{
    width:100%;
    height:240px;
  }
  .mobile-swiper .swiper-slide img{
    width:100%;
    height:100%;
    object-fit:cover;
    border-radius:14px;
  }
}

/* На десктопе swiper не нужен */
@media (min-width:901px){
  .mobile-swiper{
    display:none !important;
  }
}

/* ===== Mobile CSS-слайдер галереи на карточке объекта ===== */

@media (max-width:900px){
  /* прячем десктопные фото/миниатюры */
  .desktop-cover,
  .desktop-gallery{
    display:none !important;
  }

  .mobile-carousel{
    display:flex;
    flex-direction:row;
    overflow-x:auto;
    scroll-snap-type:x mandatory;
    gap:8px;
    padding-bottom:8px;
    -webkit-overflow-scrolling:touch;
  }

  .mobile-carousel::-webkit-scrollbar{
    height:4px;
  }
  .mobile-carousel::-webkit-scrollbar-thumb{
    background:rgba(148,163,184,.6);
    border-radius:999px;
  }

  .mobile-slide{
    flex:0 0 100%;
    scroll-snap-align:start;
  }
  .mobile-slide img{
    width:100%;
    height:240px;
    object-fit:cover;
    border-radius:14px;
    border:1px solid var(--border);
  }
}

/* на десктопе карусель не нужна */
@media (min-width:901px){
  .mobile-carousel{
    display:none !important;
  }
}
/* ===== Светлая тема страницы и подвала ===== */
body,
main {
  background:var(--bg);
}

.site-footer{
  background:#ffffff;
  border-top:1px solid var(--border);
  color:var(--text);
}
.site-footer a{
  color:var(--text);
}
.site-footer a:hover{
  color:var(--accent-dark);
}

/* ===== Admin: возвращаем нормальный тёмный текст ===== */

/* фон и текст для экранов админки */
body.admin-page{
  background:#f6f7f9 !important;
  color:#111111 !important;
}

/* карточки и панели внутри админки */
body.admin-page .card,
body.admin-page .panel{
  background:#ffffff;
  color:#111111;
}

/* приглушённый текст внутри админских карточек */
body.admin-page .muted,
body.admin-page .sm{
  color:#6b7280;
}

/* заголовки в админке */
body.admin-page h1,
body.admin-page h2,
body.admin-page h3,
body.admin-page h4{
  color:#111111;
}

/* ===== ADMIN: светлый фон и читаемый текст ===== */

/* Фон для всех админ-страниц */
body.admin-page{
  background:#f6f7f9 !important;
  color:#111111 !important;
}

/* Снимаем тёмный фон с секции/контейнера внутри админки */
body.admin-page main,
body.admin-page .section,
body.admin-page .container{
  background:#f6f7f9 !important;
}

/* Карточки и панели в админке — белые с тёмным текстом */
body.admin-page .card,
body.admin-page .panel{
  background:#ffffff;
  color:#111111;
}

/* Заголовок "Панель управления" и другие h2/h3 в админке */
body.admin-page h1,
body.admin-page h2,
body.admin-page h3,
body.admin-page h4{
  color:#111111;
}

/* Приглушённый текст в админке */
body.admin-page .muted,
body.admin-page .sm{
  color:#6b7280;
}
/* ===== ADMIN HEADER: делаем меню читаемым ===== */

/* на админ-страницах шапка светлая */
body.admin-page .site-header{
  background:#ffffff !important;
  border-bottom:1px solid #e5e7eb;
  box-shadow:0 4px 10px rgba(15,23,42,.06);
}

/* логотип и меню в админке — тёмные */
body.admin-page .logo{
  color:#111111;
}
body.admin-page .logo .logo-part1{color:#111111;}
body.admin-page .logo .logo-part2{color:#21a038;}

/* ссылки в меню админки */
body.admin-page .nav a{
  color:#4b5563;          /* тёмно-серый */
}
body.admin-page .nav a:hover{
  color:#111111;
}
body.admin-page .nav a.active{
  color:#111111;
}
body.admin-page .nav a.active::after{
  background:#21a038;     /* зелёная полоска под активной ссылкой */
}

/* ===== Docs: плавающее содержание слева ===== */

/* общий layout уже есть, добавим выравнивание */
.doc-layout{
  display:grid;
  grid-template-columns:260px 1fr;
  gap:20px;
  align-items:flex-start;
}

/* делаем блок "Содержание" плавающим при прокрутке */
.doc-toc{
  position:sticky;
  top:90px;              /* отступ от верхней шапки */
  align-self:flex-start;
  max-height:calc(100vh - 110px);
  overflow-y:auto;
}

/* карточка содержания — белая, читаемая */
.doc-toc .toc-card{
  background:#ffffff;
  border-radius:14px;
  border:1px solid var(--border);
  box-shadow:var(--shadow-sm);
  color:#111111;
}

/* ссылки внутри содержания */
.doc-toc .toc-card a{
  color:#111111;
  text-decoration:none;
}
.doc-toc .toc-card a:hover{
  background:#f3f4f6;
  color:#111111;
}

/* На мобильных убираем "плавающее" поведение, чтобы не мешал */
@media (max-width:960px){
  .doc-layout{
    grid-template-columns:1fr;
  }
  .doc-toc{
    position:static;
    max-height:none;
    overflow:visible;
    margin-bottom:12px;
  }
}

/* ===== Docs: плавающее "Содержание" слева (жёсткий override) ===== */

body .doc-layout{
  display:flex !important;
  align-items:flex-start;
  gap:20px;
}

/* левый столбец с содержанием */
body .doc-layout .doc-toc{
  position:sticky !important;
  top:90px !important;                /* отступ от шапки */
  flex:0 0 260px !important;
  max-height:calc(100vh - 110px);
  overflow-y:auto;
}

/* правый столбец с контентом политики/правил */
body .doc-layout .doc-content{
  flex:1 1 auto !important;
}

/* сама карточка содержания */
body .doc-layout .doc-toc .toc-card{
  background:#ffffff;
  border-radius:14px;
  border:1px solid var(--border);
  box-shadow:var(--shadow-sm);
  color:#111111;
}

/* ссылки в "Содержании" */
body .doc-layout .doc-toc .toc-card a{
  color:#111111;
  text-decoration:none;
  display:block;
  padding:4px 0;
}
body .doc-layout .doc-toc .toc-card a:hover{
  background:#f3f4f6;
  border-radius:6px;
}

/* на мобилке отключаем прилипающее поведение, чтобы не мешало */
@media (max-width:900px){
  body .doc-layout{
    flex-direction:column !important;
  }
  body .doc-layout .doc-toc{
    position:static !important;
    max-height:none;
    overflow:visible;
    flex:0 0 auto;
  }
}

/* ===== Блок "География" на about.php ===== */

.about-geo{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:12px;
}
.about-geo .card{
  height:100%;
}

@media (max-width:900px){
  .about-geo{
    grid-template-columns:1fr;
  }
}

/* ===== Блок "География" на about.php ===== */

.about-geo{
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:12px;
}
.about-geo .card{
  height:100%;
}

@media (max-width:900px){
  .about-geo{
    grid-template-columns:1fr;
  }
}

/* ===== CTA на about.php: светлая карточка ===== */

.about-cta .panel{
  background:#ffffff;
  color:var(--text);
  border-radius:18px;
  border:1px solid var(--border);
  box-shadow:var(--shadow-md);
}

.about-cta .panel .muted,
.about-cta .panel .sm{
  color:var(--muted);
}

/* убираем зелёную "подчеркивающую" полоску у заголовка в этом блоке */
.about-cta .h3::after{
  display:none;
}

/* ===== Плавающая правая колонка на карточке объекта ===== */

/* только на широких экранах (десктоп) */
@media (min-width:1024px){
  .property-sidebar{
    position: relative;
    top: auto;              /* отступ от верхней шапки, можно подкорректировать */
    align-self: flex-start; /* чтобы карточка не растягивалась по высоте ряда */
  }
}

/* на планшете/мобилке — обычное поведение, без прилипания */
@media (max-width:1023px){
  .property-sidebar{
    position: static;
  }
}

/* ===== Плавающая правая колонка на карточке объекта ===== */

@media (min-width: 1024px){
  /* только на странице объекта */
  .property-page .f-cols{
    display:flex;
    align-items:flex-start;
    gap:18px;
  }

  .property-page .property-main{
    flex:1 1 auto;
  }

  .property-page .property-sidebar{
    flex:0 0 360px;     /* ширина правой колонки, можно подогнать */
    position: relative;
    top: auto;           /* отступ от шапки */
    align-self:flex-start;
  }
}

/* на планшете/мобиле — обычное поведение, одна колонка */
@media (max-width:1023px){
  .property-page .f-cols{
    display:block;
  }
  .property-page .property-sidebar{
    position:static;
    flex:none;
  }
}
/* Номер шага остаётся зелёным акцентом как сейчас (step-num уже задан выше) */

/* ===== Property page: allow JS sticky/fixed sidebar to anchor correctly ===== */
.property-page .f-cols{ position: relative; }
/* Avoid hover transform shifting sticky sidebar */
@media (min-width:1024px){
  .property-page .property-sidebar:hover{ transform: none; }
}


/* ===== Visola-like Gallery Viewer ===== */
.gview{
  position:fixed;
  inset:0;
  z-index:999;
  display:none;
}
.gview.open{display:block;}

.gview-backdrop{
  position:absolute;
  inset:0;
  background:rgba(0,0,0,.78);
}

.gview-top{
  position:absolute;
  top:14px;
  left:14px;
  right:14px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  z-index:2;
}
.gview-counter{
  color:#fff;
  font-weight:700;
  font-size:14px;
  opacity:.9;
}
.gview-close{
  width:40px;height:40px;
  border-radius:999px;
  border:0;
  background:rgba(255,255,255,.12);
  color:#fff;
  font-size:28px;
  cursor:pointer;
}
.gview-close:hover{background:rgba(255,255,255,.18);}

.gview-stage{
  position:absolute;
  inset:70px 90px 110px 90px;
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:2;
}
.gview-stage img{
  max-width:100%;
  max-height:100%;
  object-fit:contain;
  border-radius:12px;
  background:#000;
}

.gview-nav{
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  z-index:3;
  width:44px;height:44px;
  border-radius:999px;
  border:0;
  background:rgba(255,255,255,.12);
  color:#fff;
  font-size:30px;
  line-height:44px;
  cursor:pointer;
}
.gview-nav:hover{background:rgba(255,255,255,.18);}
.gview-nav:disabled{opacity:.35;cursor:not-allowed;}
.gview-prev{left:20px;}
.gview-next{right:20px;}

.gview-thumbs{
  position:absolute;
  left:0;right:0;
  bottom:20px;
  z-index:3;
  display:flex;
  gap:10px;
  justify-content:center;
  overflow-x:auto;
  padding:0 18px;
}
.gview-thumb{
  width:74px;
  height:48px;
  border-radius:10px;
  border:2px solid transparent;
  background:transparent;
  padding:0;
  cursor:pointer;
  flex:0 0 auto;
}
.gview-thumb img{
  width:100%;
  height:100%;
  object-fit:cover;
  border-radius:8px;
  display:block;
}
.gview-thumb.active{
  border-color:#21a038;
}

@media (max-width:900px){
  .gview-stage{inset:70px 16px 110px 16px;}
  .gview-prev{left:10px;}
  .gview-next{right:10px;}
}

/* ===== VISOLA-LIKE GALLERY ===== */
/* Контейнер: 3:2, скруглённый, без тёмной карточки сверху. */
.visola-gallery{
  position: relative;
  overflow: hidden;
  border-radius: 20px;
  background: #f1f3f5;
  aspect-ratio: 3 / 2;
  isolation: isolate; /* z-index стабильнее в карточках */
  user-select: none;
  touch-action: pan-y;
}

.visola-track{
  display: flex;
  height: 100%;
  transition: transform .42s cubic-bezier(.22,.61,.36,1);
  will-change: transform;
}
.visola-track.no-transition{ transition: none; }
.visola-track.is-dragging{ transition: none; }

.visola-slide{
  min-width: 100%;
  height: 100%;
  /* мягкий фон-плейсхолдер на случай, если вдруг файл картинки исчезнет
     между запросом страницы и загрузкой <img> — чтобы не было ярких alt-text артефактов */
  background:
    linear-gradient(135deg, #eef2f6 0%, #e2e8f0 60%, #cbd5e1 100%);
}

.visola-slide img,
.visola-slide picture,
.visola-slide picture img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  cursor: zoom-in;
  /* если src не загрузился — не показываем огромный alt-текст поверх плейсхолдера */
  color: transparent;
}
.visola-slide img.is-broken{ display: none; }
.visola-slide.is-broken{
  display: flex;
  align-items: center;
  justify-content: center;
  font: 500 13px/1.3 'Montserrat', system-ui, sans-serif;
  color: #64748b;
  text-align: center;
  padding: 24px;
}
.visola-slide.is-broken::after{
  content: 'Фото временно недоступно';
}

/* Стрелки: белые, круглые, на мягкой тени — как у visola.
   Видимы только на :hover контейнера и на тачах (см. медиа ниже). */
.visola-nav{
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 44px;
  height: 44px;
  border-radius: 999px;
  background: #fff;
  color: #0f172a;
  border: 1px solid rgba(15,23,42,.06);
  box-shadow: 0 10px 30px rgba(15,23,42,.12), 0 2px 6px rgba(15,23,42,.08);
  cursor: pointer;
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: center;
  font: inherit;
  padding: 0;
  opacity: 0;
  transition: opacity .18s ease, transform .15s ease, background .15s ease;
}
.visola-nav svg{ width: 18px; height: 18px; display: block; }
.visola-nav.prev{ left: 14px; }
.visola-nav.next{ right: 14px; }
.visola-gallery:hover .visola-nav,
.visola-gallery:focus-within .visola-nav{ opacity: 1; }
.visola-nav:hover{ transform: translateY(-50%) scale(1.06); background: #fff; }
.visola-nav:focus-visible{
  opacity: 1;
  outline: 2px solid var(--accent, #21a038);
  outline-offset: 2px;
}
@media (hover: none){
  .visola-nav{ opacity: 1; }
}

/* Счётчик слайдов: 1 / 9 в правом верхнем углу */
.visola-counter{
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 5;
  padding: 5px 10px;
  border-radius: 999px;
  background: rgba(15,23,42,.55);
  color: #fff;
  font: 500 12px/1 'Montserrat', system-ui, sans-serif;
  letter-spacing: .02em;
  pointer-events: none;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

/* Точки — visola-style: активная крупнее, соседи средние, дальние мелкие. */
.visola-dots{
  position: absolute;
  left: 0;
  right: 0;
  bottom: 14px;
  z-index: 6;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 6px;
  pointer-events: none;
  padding: 0 16px;
}
.visola-dots .dot{
  width: 8px;
  height: 8px;
  border-radius: 999px;
  background: rgba(255,255,255,.6);
  border: 0;
  padding: 0;
  pointer-events: auto;
  cursor: pointer;
  box-shadow: 0 2px 6px rgba(15,23,42,.35);
  transition: width .25s ease, height .25s ease, background .25s ease, opacity .25s ease;
  flex: 0 0 auto;
}
.visola-dots .dot.active{
  width: 22px;
  background: #fff;
}
.visola-dots .dot.near{
  width: 8px;
  background: rgba(255,255,255,.7);
}
.visola-dots .dot.far{
  width: 6px;
  height: 6px;
  background: rgba(255,255,255,.45);
}
.visola-dots .dot.hidden{
  width: 4px;
  height: 4px;
  opacity: .45;
}

/* Карточка-обёртка для галереи: убрать тяжёлую тень / падинг.
   Visola показывает голую картинку с радиусом — сделаем так же. */
.f-prop-gallery-card{
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  border-radius: 20px !important;
  overflow: hidden;
}

@media (max-width: 700px){
  .visola-gallery{
    border-radius: 16px;
    aspect-ratio: 4 / 3;
  }
  .f-prop-gallery-card{ border-radius: 16px !important; }
  .visola-nav{ width: 40px; height: 40px; }
  .visola-nav.prev{ left: 10px; }
  .visola-nav.next{ right: 10px; }
  .visola-counter{ top: 10px; right: 10px; font-size: 11px; padding: 4px 8px; }
  .visola-dots{ bottom: 10px; }
}

/* ===== FULLSCREEN VIEWER ===== */
.gview{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.85);
  display:none;
  z-index:9999;
}
.gview.open{display:block}

.gview img{
  max-width:90vw;
  max-height:80vh;
  object-fit:contain;
}

.gview-center{
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
}

.gview-close{
  position:absolute;
  top:20px;
  right:20px;
  font-size:32px;
  color:#fff;
  background:none;
  border:none;
  cursor:pointer;
}

/* «Карточка описания» — чуть мягче, чем основной .card */
.property-main > .card{
  border: 1px solid rgba(0,0,0,.08);
  box-shadow: 0 6px 18px rgba(15,23,42,.06);
}

/* viewer: плавное появление */
.gview{
  opacity: 0;
  transform: translateY(6px);
  transition: opacity .18s ease, transform .18s ease;
}
.gview.open{
  opacity: 1;
  transform: translateY(0);
}

@media (min-width: 1024px){
  .property-page,
  .property-page .f-cols{
    overflow: visible;
  }
}

/* Stable sticky layout for house detail pages */
@media (min-width: 1024px){
  .property-house-page .f-cols{
    display: grid;
    grid-template-columns: minmax(0, 1fr) clamp(340px, 31vw, 420px);
    gap: 20px;
    align-items: start;
  }

  .property-house-page .property-main{
    min-width: 0;
    width: 100%;
  }

  .property-house-page .property-sidebar{
    position: sticky;
    top: 88px;
    align-self: start;
    width: auto;
    max-height: calc(100vh - 112px);
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 14px !important;
    scrollbar-width: thin;
  }

  .property-house-page .property-sidebar .h2{
    font-size: 26px;
    line-height: 1.12;
  }

  .property-house-page .property-sidebar .price-lg{
    font-size: 28px;
    line-height: 1.1;
  }

  .property-house-page .property-sidebar .tag{
    padding: 3px 9px;
    font-size: 14px;
  }

  .property-house-page .property-sidebar .f-booking{
    margin-top: 10px !important;
    padding: 12px;
  }

  .property-house-page .property-sidebar .booking-header{
    gap: 8px;
    margin-bottom: 8px;
  }

  .property-house-page .property-sidebar .booking-pill{
    padding: 4px 9px;
    font-size: 12px;
  }

  .property-house-page .property-sidebar .f-booking label{
    font-size: 14px;
  }

  .property-house-page .property-sidebar .f-booking input{
    min-height: 40px;
  }
}

.site-evidence{
  padding: 34px 0;
  background: #fff;
  border-top: 1px solid var(--border);
}
.site-evidence .grid{
  gap: 18px;
}
.site-evidence h2{
  margin-bottom: 10px;
}
.site-evidence ul{
  margin: 10px 0 0;
}
.site-evidence li{
  margin: 4px 0;
}
.site-data-table{
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: #fff;
}
.site-data-table th,
.site-data-table td{
  padding: 10px 12px;
  border-bottom: 1px solid var(--border);
  text-align: left;
  vertical-align: top;
}
.site-data-table th{
  background: #f6f7f9;
  font-weight: 800;
}
.site-data-table tr:last-child td{
  border-bottom: 0;
}

.site-faq{
  padding: 34px 0;
  background: #fff;
  border-top: 1px solid var(--border);
}
.site-faq .grid{
  gap: 14px;
}
.site-faq article{
  padding: 14px 16px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: #fff;
  box-shadow: var(--shadow-sm);
}
.site-faq h2{
  margin-bottom: 14px;
}
.site-faq h3{
  margin-bottom: 6px;
}
.site-faq p{
  margin: 0;
}

.site-trust{
  padding: 28px 0;
  background: #f6f7f9;
  border-top: 1px solid var(--border);
}
.site-trust .grid{
  gap: 14px;
}
.site-trust h2{
  margin-bottom: 6px;
}
.site-trust p{
  margin: 0;
}

/* Light info band area */
.site-info-band{
  color: var(--text);
  background: #ffffff;
  border-top: 1px solid var(--border);
}

.site-info-band .container{
  max-width: 1180px;
}

.site-info-band .muted{
  color: var(--muted);
}

.site-info-band h2,
.site-info-band h3{
  color: var(--text);
}

.site-evidence.site-info-band{
  padding: 42px 0 18px;
  background:
    radial-gradient(circle at 14% 0%, rgba(33, 160, 56, .07), transparent 34%),
    #ffffff;
}

.site-info-grid{
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(320px, .95fr);
  gap: 18px;
  align-items: stretch;
}

.site-info-card{
  min-width: 0;
  padding: 24px;
  border: 1px solid var(--border);
  border-radius: 20px;
  background: #ffffff;
  box-shadow: var(--shadow-sm);
}

.site-info-card h2{
  margin: 12px 0 10px;
}

.site-info-icon{
  display: inline-flex;
  width: 42px;
  height: 42px;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  color: #fff;
  background: linear-gradient(180deg, #63c85c, #3b9c35);
  box-shadow: 0 12px 34px rgba(82, 180, 73, .28);
}

.site-check-list{
  display: grid;
  gap: 10px;
  margin: 18px 0 0;
  padding: 0;
  list-style: none;
}

.site-check-list li{
  display: flex;
  gap: 10px;
  align-items: flex-start;
  margin: 0;
}

.site-check-list i{
  display: inline-flex;
  flex: 0 0 22px;
  width: 22px;
  height: 22px;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  color: #52b449;
  background: rgba(82, 180, 73, .14);
  font-size: 12px;
  line-height: 1;
}

.site-direction-list{
  display: grid;
  gap: 10px;
  margin-top: 16px;
}

.site-direction-list a{
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr);
  gap: 14px;
  align-items: center;
  min-height: 66px;
  padding: 14px 16px;
  border: 1px solid var(--border);
  border-radius: 16px;
  color: inherit;
  text-decoration: none;
  background: #ffffff;
  transition: border-color .18s ease, background .18s ease, transform .18s ease;
}

.site-direction-list a:hover{
  transform: translateY(-2px);
  border-color: rgba(33, 160, 56, .55);
  background: var(--accent-soft);
}

.site-direction-list strong{
  color: var(--text);
  font-weight: 800;
}

.site-direction-list span{
  color: var(--muted);
}

.site-faq.site-info-band{
  padding: 28px 0 18px;
  background: var(--bg);
}

.site-section-head{
  display: flex;
  gap: 12px;
  align-items: end;
  justify-content: space-between;
  margin-bottom: 16px;
}

.site-section-head h2{
  margin: 0;
}

.site-section-kicker,
.site-trust-label{
  display: inline-flex;
  width: fit-content;
  align-items: center;
  min-height: 28px;
  padding: 4px 11px;
  border: 1px solid rgba(33, 160, 56, .38);
  border-radius: 999px;
  color: var(--accent-dark);
  background: var(--accent-soft);
  font-size: 13px;
  font-weight: 800;
}

.site-faq-grid{
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.site-faq-grid article{
  position: relative;
  min-height: 174px;
  padding: 20px 20px 22px;
  border: 1px solid var(--border);
  border-radius: 18px;
  background: #ffffff;
  box-shadow: var(--shadow-sm);
}

.site-faq-num{
  display: inline-flex;
  margin-bottom: 18px;
  color: var(--accent-dark);
  font-size: 13px;
  font-weight: 900;
}

.site-faq-grid h3{
  margin: 0 0 10px;
}

.site-faq-grid p{
  margin: 0;
  line-height: 1.55;
}

.site-trust.site-info-band{
  padding: 18px 0 44px;
  background:
    radial-gradient(circle at 85% 100%, rgba(33, 160, 56, .07), transparent 36%),
    var(--bg);
}

.site-trust-grid{
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.site-trust-grid > div{
  padding: 18px 20px;
  border: 1px solid var(--border);
  border-radius: 18px;
  background: #ffffff;
}

.site-trust-grid h2{
  margin: 12px 0 8px;
}

.site-footer{
  margin-top: 0;
  padding: 30px 0 0;
  border-top: 1px solid var(--border);
  background: #ffffff !important;
}

.site-footer .footer-grid{
  grid-template-columns: minmax(260px, 1.4fr) minmax(180px, .8fr) minmax(180px, .8fr) minmax(140px, .55fr);
  gap: 28px;
  padding: 0 16px 26px;
}

.site-footer .h4{
  color: var(--text);
}

.site-footer .copy{
  border-top-color: rgba(148, 163, 184, .14);
  padding: 12px 16px;
  text-align: center;
}

@media (max-width: 980px){
  .site-info-grid,
  .site-faq-grid,
  .site-trust-grid{
    grid-template-columns: 1fr;
  }

  .site-direction-list a{
    grid-template-columns: 1fr;
    gap: 4px;
  }

  .site-footer .footer-grid{
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 640px){
  .site-info-card,
  .site-faq-grid article,
  .site-trust-grid > div{
    border-radius: 14px;
    padding: 18px;
  }

  .site-section-head{
    align-items: flex-start;
    flex-direction: column-reverse;
  }

  .site-footer .footer-grid{
    grid-template-columns: 1fr;
  }
}

/* =====================================================================
   PROPERTY PAGE — REDESIGN: компактная sticky-карточка, плавающая панель,
   модал бронирования, секция карты, мини-карта, чипы.
   Цветовая гамма берётся из существующих токенов :root (var(--accent),
   var(--bg-soft), var(--border) и т.д.) — этот блок намеренно идёт
   последним, чтобы перекрыть более ранние правила .property-* .
   ===================================================================== */

/* Сетка страницы — широкий контент слева, узкий sticky-aside справа */
@media (min-width: 1024px){
  .property-page .f-cols.f-prop-grid{
    display:grid;
    grid-template-columns: minmax(0,1fr) 340px;
    gap:20px;
    align-items:flex-start;
  }
  .property-page .f-prop-grid .property-main{ min-width:0 }
  .property-page .f-prop-grid .property-sidebar.f-prop-side{
    flex:none;
    position:sticky;
    top:80px;          /* отступ под фиксированной шапкой */
    align-self:flex-start;
  }
  .property-page .f-prop-grid .property-sidebar.f-prop-side:hover{ transform:none }
}
@media (max-width:1023px){
  .property-page .f-cols.f-prop-grid{
    display:grid;
    grid-template-columns:1fr;
    gap:14px;
  }
  .property-page .f-prop-grid .property-sidebar.f-prop-side{ position:static }
}

/* Карточка-галерея */
.f-prop-gallery-card{ overflow:hidden; border-radius:var(--radius-lg) }

/* Карточка с заголовком/чипами */
.f-prop-title-card{
  padding:18px 20px;
  margin-top:14px;
  border-radius:var(--radius-md);
}
.f-prop-title-row{
  display:flex;
  flex-wrap:wrap;
  align-items:flex-start;
  gap:12px 18px;
}
.f-prop-title{
  flex:1 1 320px;
  margin:0;
}
.f-prop-price-inline{
  font-size:22px;
  font-weight:800;
  color:var(--text);
  white-space:nowrap;
  align-self:center;
}
.f-prop-price-inline span{
  font-size:13px;
  color:var(--muted);
  font-weight:500;
}
.f-prop-address{
  display:flex;
  align-items:center;
  gap:6px;
  margin-top:6px;
  font-size:14px;
}
.f-prop-address i{ color:var(--accent-dark); font-size:13px }
.f-prop-chips{
  list-style:none;
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin:14px 0 0;
  padding:0;
}
.f-prop-chips .tag{
  display:inline-flex;
  align-items:center;
  gap:6px;
}
.f-prop-chips .tag i{ color:var(--accent-dark); font-size:12px }

/* Базовая «секция» — описание, удобства, карта, FAQ */
.f-prop-section{
  padding:18px 20px;
  margin-top:14px;
  border-radius:var(--radius-md);
}
.f-prop-section .h3{ margin:0 0 12px }
.f-prop-amenities{
  list-style:none;
  padding:0;
  margin:0;
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}

/* Секция карты */
.f-prop-map .f-prop-map-addr{
  margin:-4px 0 12px;
}
.f-prop-map-frame{
  position:relative;
  border-radius:14px;
  overflow:hidden;
  border:1px solid var(--border);
  background:#0e1218;
}
.f-prop-map-frame{
  height:420px;
}
.f-prop-map-frame iframe{
  display:block;
  width:100%;
  height:100%;
  border:0;
}
/* Lazy-плейсхолдер карты до клика — даём фиксированную высоту, чтобы не было CLS. */
.f-prop-map-frame.f-prop-map-lazy{
  height:420px;
  background:
    radial-gradient(circle at 20% 10%, rgba(33,160,56,.18), transparent 55%),
    radial-gradient(circle at 80% 90%, rgba(15,118,255,.16), transparent 55%),
    linear-gradient(135deg,#eef2f6 0%,#dbe3ec 100%);
}
.f-prop-map-frame.f-prop-map-lazy.is-loaded{
  height:420px;
  background:#0e1218;
}
@media (max-width:720px){
  .f-prop-map-frame,
  .f-prop-map-frame.f-prop-map-lazy,
  .f-prop-map-frame.f-prop-map-lazy.is-loaded{ height:300px }
}
.lazy-map-cta{
  appearance:none;
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:14px;
  width:100%;
  height:100%;
  padding:18px;
  background:transparent;
  border:0;
  border-radius:14px;
  cursor:pointer;
  font:500 15px/1.2 'Montserrat', system-ui, sans-serif;
  color:#0f172a;
  text-align:left;
  transition:transform .15s ease, box-shadow .2s ease;
}
.lazy-map-cta:hover{
  transform:translateY(-1px);
  background:linear-gradient(135deg, rgba(255,255,255,.4), rgba(255,255,255,.0));
}
.lazy-map-cta:focus-visible{
  outline:2px solid var(--accent, #21a038);
  outline-offset:-4px;
}
.lazy-map-pin{
  flex:none;
  width:46px; height:46px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  background:#fff;
  color:var(--accent, #21a038);
  box-shadow:0 6px 18px rgba(15,23,42,.12);
}
.lazy-map-text{ display:flex; flex-direction:column; gap:2px; max-width:60%; }
.lazy-map-title{ font-weight:600; font-size:15px }
.lazy-map-sub{ color:#475569; font-size:12px; line-height:1.35; }
.lazy-map-arrow{
  margin-left:auto;
  width:36px; height:36px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  background:#fff;
  color:#0f172a;
  font-size:22px;
  line-height:1;
  box-shadow:0 2px 8px rgba(15,23,42,.08);
}
.f-prop-map-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:12px;
}
.f-prop-map-actions .btn{ display:inline-flex; align-items:center; gap:6px }

/* Sticky-карточка справа: компактная сводка */
.f-prop-summary{
  padding:18px;
  border-radius:var(--radius-md);
}
.f-prop-summary-price{
  display:flex;
  align-items:baseline;
  gap:6px;
  margin-bottom:4px;
}
.f-prop-summary-price .price-lg{ font-size:26px }
.f-prop-summary-meta{
  list-style:none;
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  padding:0;
  margin:10px 0 14px;
  border-top:1px dashed var(--border);
  border-bottom:1px dashed var(--border);
  padding:10px 0;
}
.f-prop-summary-meta li{
  display:flex;
  flex-direction:column;
  gap:2px;
  font-size:13px;
  color:var(--muted);
}
.f-prop-summary-meta li b{
  color:var(--text);
  font-weight:700;
  font-size:15px;
}
.f-prop-summary-actions{
  display:grid;
  gap:8px;
}
.f-prop-summary-actions .btn{
  width:100%;
  justify-content:center;
  display:inline-flex;
  align-items:center;
  gap:8px;
}

/* Мини-карта в sticky-карточке */
.f-prop-mini-map{
  position:relative;
  display:block;
  margin-top:14px;
  border-radius:14px;
  overflow:hidden;
  border:1px solid var(--border);
  background:#0e1218;
  text-decoration:none;
}
.f-prop-mini-map:hover{ text-decoration:none }
.f-prop-mini-map iframe{
  display:block;
  width:100%;
  height:140px;
  border:0;
  pointer-events:none;
}
.f-prop-mini-overlay{
  position:absolute;
  left:0; right:0; bottom:0;
  display:flex;
  align-items:center;
  gap:6px;
  padding:8px 10px;
  background:linear-gradient(180deg,rgba(15,23,42,0) 0%,rgba(15,23,42,.78) 100%);
  color:#fff;
  font-size:12px;
  font-weight:600;
  letter-spacing:.01em;
}
.f-prop-mini-overlay i{ color:#fff }

/* Плавающая нижняя панель */
.f-prop-floating-bar{
  position:fixed;
  left:0; right:0; bottom:-120px;
  z-index:60;
  background:#fff;
  border-top:1px solid var(--border);
  box-shadow:0 -10px 30px rgba(0,0,0,.18);
  padding:10px 14px;
  display:flex;
  align-items:center;
  gap:10px;
  transition:bottom .25s ease;
  color:var(--text);
}
.f-prop-floating-bar.show{ bottom:0 }
.f-prop-floating-price{
  font-weight:800;
  font-size:16px;
  line-height:1.1;
  color:var(--text);
}
.f-prop-floating-price small{
  display:block;
  font-weight:500;
  font-size:11px;
  color:var(--muted);
  margin-top:2px;
}
.f-prop-floating-actions{
  margin-left:auto;
  display:flex;
  align-items:center;
  gap:8px;
}
.f-prop-floating-icon{
  width:42px; height:42px;
  border-radius:12px;
  background:#f1f5f9;
  color:var(--text);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:16px;
  text-decoration:none;
}
.f-prop-floating-icon:hover{ background:#e2e8f0; text-decoration:none }
@media (max-width:520px){
  .f-prop-floating-price small{ display:none }
  .f-prop-floating-bar{ padding:8px 10px }
  .f-prop-floating-icon{ width:38px; height:38px; font-size:15px }
  .f-prop-floating-bar .btn{ padding:10px 14px; font-size:13px }
}

/* Модал бронирования / bottom-sheet на мобильных
   Центрируем флексом, чтобы при появлении/исчезновении системного скролла
   модал не «дёргался» из-за пересчёта left:50% от изменившейся ширины вьюпорта. */
.f-prop-modal{
  position:fixed;
  inset:0;
  z-index:90;
  display:none;
  align-items:center;
  justify-content:center;
  padding:24px 16px;
}
.f-prop-modal.open{ display:flex }
.f-prop-modal-backdrop{
  position:absolute;
  inset:0;
  background:rgba(15,23,42,.62);
  backdrop-filter:blur(4px);
}
.f-prop-modal-card{
  position:relative;
  width:min(820px, calc(100% - 32px));
  max-height:calc(100vh - 48px);
  display:flex;
  flex-direction:column;
  border-radius:var(--radius-lg);
  background:var(--bg-soft);
  box-shadow:var(--shadow-soft);
  overflow:hidden;
  animation:fProp-pop .18s ease both;
  will-change:transform, opacity;
}
@keyframes fProp-pop{
  from{ opacity:0; transform:translateY(8px) }
  to{   opacity:1; transform:translateY(0) }
}
.f-prop-modal-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  padding:18px 20px 0;
  color:var(--text);
}
.f-prop-modal-close{
  width:34px; height:34px;
  border-radius:10px;
  border:0;
  background:transparent;
  color:var(--muted);
  font-size:24px;
  line-height:1;
  cursor:pointer;
}
.f-prop-modal-close:hover{ background:#f1f5f9; color:var(--text) }
.f-prop-modal-body{
  padding:14px 20px 20px;
  overflow:auto;
}
.f-prop-modal-form .f-date-field{ margin-top:6px }
.f-prop-modal-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
  margin-top:12px;
}
@media (max-width:560px){
  .f-prop-modal{
    align-items:flex-end;
    padding:0;
  }
  .f-prop-modal-card{
    width:100%;
    max-height:92vh;
    border-radius:18px 18px 0 0;
    animation:fProp-slide .22s ease both;
  }
  @keyframes fProp-slide{
    from{ transform:translateY(20px); opacity:0 }
    to{   transform:translateY(0); opacity:1 }
  }
  .f-prop-modal-grid{ grid-template-columns:1fr }
}

/* Резервируем место под скроллбар, чтобы при overflow:hidden у body
   не было горизонтального «прыжка» страницы и модалка не дёргалась. */
html{ scrollbar-gutter:stable }
body.f-prop-modal-open{ overflow:hidden }
/* Прячем плавающую нижнюю панель, пока открыт модал */
body.f-prop-modal-open .f-prop-floating-bar{ visibility:hidden }

/* Тонкие правки на мобильных: убираем sticky/мини-карту в sidebar чтобы sidebar шёл наверху */
@media (max-width:1023px){
  .f-prop-grid .property-sidebar.f-prop-side{ order:-1 }
  .f-prop-summary-actions .btn{ font-size:14px }
  .f-prop-mini-map iframe{ height:120px }
  .f-prop-section,
  .f-prop-title-card{ padding:16px }
}

/* ============================================================
   ABOUT-FESSTO — секция «Что такое FessTo» внизу главной
   ============================================================ */
.about-fessto{
  margin-top: 40px;
}
.about-fessto-head{
  text-align:center;
  max-width: 760px;
  margin: 0 auto 28px;
}
.about-fessto-kicker{
  display:inline-block;
  padding: 6px 14px;
  border-radius: 999px;
  background: var(--accent-soft, #e7f7ec);
  color: var(--accent-dark, #1a8f34);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .02em;
  text-transform: uppercase;
  margin-bottom: 14px;
}
.about-fessto-head .h3{
  margin: 0 0 12px;
}
.about-fessto-lead{
  font-size: 15px;
  line-height: 1.65;
  margin: 0;
}
.about-fessto-grid{
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
}
.about-fessto-card{
  position: relative;
  background: var(--bg-soft, #ffffff);
  border: 1px solid var(--border, #e5e7eb);
  border-radius: 18px;
  padding: 28px;
  box-shadow: var(--shadow-sm, 0 6px 18px rgba(15,23,42,.08));
  display: flex;
  flex-direction: column;
  gap: 14px;
  transition: transform .18s ease, box-shadow .18s ease;
}
.about-fessto-card:hover{
  transform: translateY(-2px);
  box-shadow: var(--shadow-md, 0 14px 32px rgba(15,23,42,.12));
}
.about-fessto-icon{
  width: 44px;
  height: 44px;
  border-radius: 12px;
  background: var(--accent-soft, #e7f7ec);
  color: var(--accent-dark, #1a8f34);
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.about-fessto-title{
  margin: 0;
  font-size: 17px;
  font-weight: 700;
  color: var(--text, #0f172a);
}
.about-fessto-list{
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.about-fessto-list li{
  position: relative;
  padding-left: 28px;
  font-size: 14.5px;
  line-height: 1.55;
  color: var(--text, #0f172a);
}
.about-fessto-list li::before{
  content: "";
  position: absolute;
  left: 0;
  top: 2px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--accent-soft, #e7f7ec);
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2321a038' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 11px 11px;
}
.about-fessto-cta{
  align-self: flex-start;
  margin-top: 4px;
}

@media (max-width: 760px){
  .about-fessto{ margin-top: 24px; }
  .about-fessto-grid{ grid-template-columns: 1fr; gap: 18px; }
  .about-fessto-card{ padding: 22px; }
  .about-fessto-head{ margin-bottom: 20px; text-align: left; }
}

/* ============================================================
   REVIEWS V2 — заголовок-«хедер» с большим рейтингом + 3 карточки отзывов
   ============================================================ */
.site-reviews-v2.site-info-band{
  padding: 28px 0 24px;
  background: var(--bg, #f5f6f8);
}
.reviews-v2-head{
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(260px, .75fr);
  gap: 20px;
  align-items: stretch;
  margin-bottom: 20px;
}
.reviews-v2-head-text{
  display: flex;
  flex-direction: column;
  gap: 10px;
  align-self: center;
}
.reviews-v2-head-text .site-section-kicker{
  align-self: flex-start;
}
.reviews-v2-head-text .h3{
  margin: 0;
}
.reviews-v2-head-text p{
  margin: 0;
}
.reviews-v2-rating{
  background: var(--bg-soft, #ffffff);
  border: 1px solid var(--border, #e5e7eb);
  border-radius: 18px;
  box-shadow: var(--shadow-sm, 0 6px 18px rgba(15,23,42,.08));
  padding: 18px 22px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  justify-content: center;
}
.reviews-v2-rating-num{
  display: flex;
  align-items: baseline;
  gap: 6px;
}
.reviews-v2-rating-value{
  font-size: 38px;
  font-weight: 800;
  line-height: 1;
  color: var(--text, #0f172a);
  letter-spacing: -.01em;
}
.reviews-v2-rating-of{
  font-size: 16px;
  font-weight: 600;
  color: var(--muted, #6b7280);
}
.reviews-v2-stars{
  display: inline-flex;
  gap: 2px;
  font-size: 18px;
  line-height: 1;
}
.reviews-v2-count{
  font-size: 13px;
  color: var(--muted, #6b7280);
}
.r-star{
  color: #f5b301;
  font-size: 16px;
  line-height: 1;
}
.r-star-full{ color: #f5b301; }
.r-star-half{
  color: #f5b301;
  background: linear-gradient(90deg, #f5b301 50%, #e5e7eb 50%);
  -webkit-background-clip: text;
          background-clip: text;
  -webkit-text-fill-color: transparent;
}
.r-star-empty{ color: #d6dbe2; }

.reviews-v2-grid{
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}
.review-card{
  margin: 0;
  padding: 22px 22px 18px;
  background: var(--bg-soft, #ffffff);
  border: 1px solid var(--border, #e5e7eb);
  border-radius: 18px;
  box-shadow: var(--shadow-sm, 0 6px 18px rgba(15,23,42,.08));
  display: flex;
  flex-direction: column;
  gap: 12px;
  position: relative;
  transition: transform .18s ease, box-shadow .18s ease;
}
.review-card:hover{
  transform: translateY(-2px);
  box-shadow: var(--shadow-md, 0 14px 32px rgba(15,23,42,.12));
}
.review-card-stars{
  display: inline-flex;
  gap: 1px;
  font-size: 15px;
  line-height: 1;
}
.review-card-quote{
  margin: 0;
  font-size: 14.5px;
  line-height: 1.6;
  color: var(--text, #0f172a);
  font-style: normal;
  position: relative;
  padding-left: 30px;
}
.review-card-quote::before{
  content: "\201C";
  position: absolute;
  left: 0;
  top: -6px;
  font-size: 40px;
  line-height: 1;
  color: var(--accent, #21a038);
  font-family: Georgia, "Times New Roman", serif;
  opacity: .5;
}
.review-card-author{
  display: flex;
  gap: 12px;
  align-items: center;
  margin-top: auto;
  padding-top: 6px;
  border-top: 1px dashed var(--border, #e5e7eb);
}
.review-card-avatar{
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--accent-soft, #e7f7ec);
  color: var(--accent-dark, #1a8f34);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 800;
  font-size: 16px;
  flex: 0 0 40px;
}
.review-card-meta{
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.review-card-meta cite{
  font-style: normal;
  font-weight: 700;
  color: var(--text, #0f172a);
  font-size: 14px;
}
.review-card-meta .muted{
  font-size: 12.5px;
}

@media (max-width: 980px){
  .reviews-v2-head{ grid-template-columns: 1fr; }
  .reviews-v2-grid{ grid-template-columns: 1fr; }
}
@media (min-width: 981px) and (max-width: 1100px){
  .reviews-v2-grid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ============================================================
   COVERAGE V2 — упрощённая «География» с чипами городов
   ============================================================ */
.site-coverage-v2.site-info-band{
  padding: 18px 0 28px;
  background: var(--bg, #f5f6f8);
}
.coverage-v2-chips{
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 6px;
}
.coverage-chip{
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  border-radius: 999px;
  background: var(--bg-soft, #ffffff);
  border: 1px solid var(--border, #e5e7eb);
  color: var(--text, #0f172a);
  font-weight: 600;
  font-size: 14px;
  text-decoration: none;
  transition: border-color .18s ease, background .18s ease, transform .18s ease;
}
.coverage-chip::before{
  content: "";
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--accent, #21a038);
  display: inline-block;
  flex: 0 0 8px;
}
.coverage-chip:hover{
  transform: translateY(-1px);
  border-color: rgba(33, 160, 56, .55);
  background: var(--accent-soft, #e7f7ec);
  color: var(--accent-dark, #1a8f34);
}
.coverage-chip-muted{
  background: transparent;
  border-style: dashed;
  color: var(--muted, #6b7280);
  font-weight: 500;
  cursor: default;
}
.coverage-chip-muted::before{
  background: var(--muted, #9aa1ad);
}
.coverage-chip-muted:hover{
  transform: none;
  background: transparent;
  color: var(--muted, #6b7280);
  border-color: var(--border, #e5e7eb);
}

/* ===== Availability Calendar v1.2.11 — single big month with slider ===== */
.fc-host{
  border:1px solid var(--border,#e6e8ec);
  border-radius:18px;
  background:#fff;
  padding:18px 18px 16px;
  margin:18px 0 12px;
}
.fc-host-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.fc-host-head h3{margin:0;font-size:17px;font-weight:700}
.fc-host-head .muted{font-size:13px}
.fc-status{font-size:13px;color:#6b7280;margin:4px 0 8px;min-height:1em}
.fc-note{font-size:13px;color:#475569;margin:14px 0 0}
.fc-note-active{color:var(--accent-dark,#1a8f34);font-weight:600}

.fc-legend{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px;font-size:12px;color:#475569}
.fc-legend span{display:inline-flex;align-items:center;gap:6px;background:#f8fafc;border:1px solid #eef0f3;padding:4px 10px;border-radius:999px}
.fc-legend i{width:10px;height:10px;border-radius:50%;display:inline-block;background:#fff;border:1px solid #e6e8ec}
.fc-legend .l-free i{background:#ffffff;border-color:#d6d8de}
.fc-legend .l-busy i{background:#ef4444;border-color:#dc2626}
.fc-legend .l-block i{background:#9ca3af;border-color:#6b7280}
.fc-legend .l-today i{background:var(--accent,#21a038);border-color:var(--accent-dark,#1a8f34)}

/* Тулбар: ‹ Май 2026 › */
.fc-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 12px;padding:4px 2px}
.fc-toolbar[hidden]{display:none}
.fc-title{flex:1;text-align:center;font-weight:700;font-size:18px;color:#0f172a;letter-spacing:.01em;text-transform:capitalize}
.fc-nav{
  appearance:none;border:1px solid var(--border,#e5e7eb);background:#fff;color:#0f172a;
  width:40px;height:40px;border-radius:50%;font-size:22px;line-height:1;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;
  box-shadow:0 1px 3px rgba(15,23,42,.06);
  transition:background-color .15s ease, color .15s ease, border-color .15s ease, transform .12s ease;
  user-select:none;
}
.fc-nav:hover:not(:disabled){background:var(--accent,#21a038);color:#fff;border-color:var(--accent,#21a038);transform:translateY(-1px)}
.fc-nav:focus-visible{outline:2px solid var(--accent,#21a038);outline-offset:2px}
.fc-nav:disabled{opacity:.35;cursor:not-allowed}

/* Сцена + слот месяца — с горизонтальной анимацией */
.fc-stage{overflow:hidden;position:relative}
.fc-month-slot{position:relative}
.fc-month{opacity:1;transform:translateX(0);transition:opacity .22s ease, transform .26s cubic-bezier(.22,1,.36,1)}
.fc-month.fc-enter-right{opacity:0;transform:translateX(28px)}
.fc-month.fc-enter-left{opacity:0;transform:translateX(-28px)}

/* Дни недели */
.fc-dow-row{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin:6px 0 8px}
.fc-dow{font-size:11px;color:#94a3b8;text-align:center;padding:4px 0;text-transform:uppercase;letter-spacing:.05em;font-weight:600}
.fc-dow.fc-weekend{color:#ef4444}

/* Сетка чисел */
.fc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.fc-cell{
  position:relative;
  appearance:none;
  background:#fff;
  border:1px solid #eef0f3;
  border-radius:12px;
  padding:0;
  min-height:62px;
  text-align:center;
  font:600 15px/1 Montserrat, system-ui, Arial, sans-serif;
  color:#0f172a;
  cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:transform .12s ease, background-color .15s ease, border-color .15s ease, color .12s ease, box-shadow .15s ease;
}
.fc-cell .fc-num{display:inline-block}
.fc-cell.fc-empty{visibility:hidden;border:none;background:transparent;cursor:default;min-height:0}
.fc-cell.fc-weekend{color:#ef4444}

.fc-cell.fc-today{
  background:#fff;
  color:#0f172a;
  border-color:var(--accent,#21a038);
  box-shadow:0 0 0 2px rgba(33,160,56,.18) inset;
}
.fc-cell.fc-today::after{
  content:"";position:absolute;left:50%;bottom:7px;transform:translateX(-50%);
  width:4px;height:4px;border-radius:50%;background:var(--accent,#21a038);
}

.fc-cell.fc-past{
  color:#cbd5e1;
  background:#fafbfc;
  border-color:#f0f2f5;
  cursor:not-allowed;
}

.fc-cell.fc-busy{
  background:#fff5f6;
  border-color:#ffd5da;
  color:#a8333d;
  cursor:not-allowed;
}
.fc-cell.fc-busy .fc-num{text-decoration:line-through;text-decoration-color:rgba(168,51,61,.45);text-decoration-thickness:1.5px}
.fc-cell.fc-busy-blocked{background:#f4f5f7;border-color:#dfe1e6;color:#6b7280}
.fc-cell.fc-busy-blocked .fc-num{text-decoration:line-through;text-decoration-color:rgba(107,114,128,.45)}
.fc-cell.fc-busy-ical{background:#eef4ff;border-color:#cdddff;color:#1d4ed8}
.fc-cell.fc-busy-ical .fc-num{text-decoration:line-through;text-decoration-color:rgba(29,78,216,.45)}

.fc-cell.fc-free:hover{
  background:var(--accent,#21a038);
  color:#fff;
  border-color:var(--accent,#21a038);
  transform:translateY(-1px);
  box-shadow:0 4px 12px rgba(33,160,56,.22);
}
.fc-cell.fc-free:focus-visible{outline:2px solid var(--accent,#21a038);outline-offset:2px}
.fc-cell.fc-selected{
  background:var(--accent,#21a038)!important;
  border-color:var(--accent,#21a038)!important;
  color:#fff!important;
  box-shadow:0 6px 18px rgba(33,160,56,.28);
}
.fc-cell.fc-selected.fc-today::after{background:#fff}

.fc-host.fc-loading .fc-stage{opacity:.55;pointer-events:none;filter:saturate(.7)}

@media (max-width:720px){
  .fc-host{padding:14px 12px 12px}
  .fc-toolbar{margin-bottom:8px}
  .fc-title{font-size:16px}
  .fc-nav{width:36px;height:36px;font-size:20px}
  .fc-cell{min-height:52px;font-size:14px;border-radius:10px}
  .fc-grid,.fc-dow-row{gap:4px}
  .fc-dow{font-size:10px}
}
@media (max-width:380px){
  .fc-cell{min-height:46px;font-size:13px;border-radius:9px}
}
@media (prefers-reduced-motion: reduce){
  .fc-month,.fc-cell,.fc-nav{transition:none!important}
}

/* ===== Booking datepicker v1.2.15 — двухколоночная раскладка модалки на десктопе ===== */
.bdp-wrap{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.bdp-trigger{
  flex:1;
  display:inline-flex;align-items:center;gap:10px;
  width:100%;
  appearance:none;
  background:#fff;
  border:1px solid var(--border,#e6e8ec);
  border-radius:12px;
  height:48px;
  padding:0 14px;
  font:600 14px/1 Montserrat, system-ui, Arial, sans-serif;
  color:#0f172a;
  cursor:pointer;
  text-align:left;
  transition:border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}
.bdp-trigger:hover{border-color:#cdd1d6}
.bdp-trigger:focus-visible{outline:none;border-color:var(--accent,#21a038);box-shadow:0 0 0 3px rgba(33,160,56,.18)}
.bdp-wrap.bdp-open .bdp-trigger{border-color:var(--accent,#21a038);box-shadow:0 0 0 3px rgba(33,160,56,.18)}
.bdp-icon{
  display:inline-flex;align-items:center;justify-content:center;
  width:28px;height:28px;border-radius:50%;
  background:var(--accent-soft,#e7f7ec);color:var(--accent-dark,#1a8f34);
  font-size:13px;flex-shrink:0;
}
.bdp-label{flex:1;color:#94a3b8;font-weight:500}
.bdp-label.bdp-label-filled{color:#0f172a;font-weight:600}
.bdp-chev{color:#94a3b8;font-size:12px;margin-left:auto}
.bdp-clear{
  appearance:none;background:transparent;border:0;cursor:pointer;
  width:32px;height:32px;border-radius:50%;
  color:#94a3b8;font-size:18px;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;
  flex-shrink:0;
  transition:background-color .15s ease, color .15s ease;
}
.bdp-clear:hover{background:#f3f4f6;color:#ef4444}
.bdp-clear[hidden]{display:none}

/* Поп-овер живёт сиблингом .bdp-wrap в форме. На мобиле — раскрывается под
   триггером (обычный блок), на десктопе — занимает правую колонку модалки. */
.bdp-pop{
  display:block;
  width:100%;
  margin-top:10px;
  background:
    radial-gradient(120% 80% at 50% -10%, rgba(33,160,56,.06), transparent 60%),
    #fff;
  border:1px solid #ebeef1;
  border-radius:18px;
  box-shadow:
    0 1px 0 rgba(15,23,42,.02) inset,
    0 14px 28px -18px rgba(15,23,42,.18),
    0 6px 14px -10px rgba(15,23,42,.12);
  padding:14px 14px 12px;
  overflow:hidden;
  animation:bdp-pop-in .22s cubic-bezier(.22,1,.36,1) both;
}
.bdp-pop[hidden]{display:none}
@keyframes bdp-pop-in{
  from{ opacity:0; transform:translateY(-6px) scale(.985) }
  to{   opacity:1; transform:translateY(0) scale(1) }
}

/* ---- toolbar ---- */
.bdp-pop .bdp-pop-toolbar{
  margin:0 0 10px;
  display:flex;align-items:center;gap:10px;
}
.bdp-pop .fc-title{
  flex:1;text-align:center;
  font:700 16px/1.15 Montserrat, system-ui, Arial, sans-serif;
  color:#0f172a;text-transform:capitalize;letter-spacing:.01em;
}
.bdp-pop .fc-nav{
  width:36px;height:36px;
  border-radius:50%;
  background:#fff;
  border:1px solid #e6e8ec;
  color:#0f172a;
  font-size:18px;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;
  cursor:pointer;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
  transition:background-color .15s ease, color .15s ease, transform .15s ease, border-color .15s ease;
}
.bdp-pop .fc-nav:hover:not(:disabled){
  background:var(--accent,#21a038);
  border-color:var(--accent,#21a038);
  color:#fff;
  transform:translateY(-1px);
}
.bdp-pop .fc-nav:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}

/* ---- stage + dow header ---- */
.bdp-pop-stage{overflow:hidden}
.bdp-pop-slot{position:relative}
.bdp-pop .fc-dow-row{
  grid-template-columns:repeat(7,1fr);
  gap:4px;margin:2px 0 6px;
}
.bdp-pop .fc-dow{
  font:600 10px/1 Montserrat, system-ui, Arial, sans-serif;
  letter-spacing:.06em;color:#94a3b8;text-transform:uppercase;
  text-align:center;padding:4px 0;
}
.bdp-pop .fc-dow.fc-weekend{color:#ef4444}

/* ---- grid + cells: квадратные, без рамок ---- */
.bdp-pop .fc-grid{
  grid-template-columns:repeat(7,1fr);
  gap:4px;
}
.bdp-pop .fc-cell{
  aspect-ratio:1/1;
  min-height:0;
  width:100%;
  border:0;
  background:transparent;
  border-radius:10px;
  display:flex;align-items:center;justify-content:center;
  font:600 13px/1 Montserrat, system-ui, Arial, sans-serif;
  color:#0f172a;
  cursor:pointer;
  position:relative;
  transition:background-color .14s ease, color .14s ease, transform .14s ease, box-shadow .14s ease;
}
.bdp-pop .fc-cell.fc-empty{visibility:hidden;background:transparent;cursor:default}
.bdp-pop .fc-cell .fc-num{position:relative;z-index:1}

/* выходные подкрашиваем числа */
.bdp-pop .fc-cell.fc-weekend{color:#ef4444}

/* свободные дни — лёгкая подложка, чтобы было что хайлайтить */
.bdp-pop .fc-cell.fc-free{background:#f6f8fa}
.bdp-pop .fc-cell.fc-free:hover{
  background:rgba(33,160,56,.12);
  color:#0f172a;
  transform:translateY(-1px);
}
.bdp-pop .fc-cell.fc-free:focus-visible{
  outline:2px solid var(--accent,#21a038);
  outline-offset:2px;
}

/* прошлые / занятые: глухой серый, без интерактива */
.bdp-pop .fc-cell.fc-past,
.bdp-pop .fc-cell.fc-busy,
.bdp-pop .fc-cell.fc-busy-blocked,
.bdp-pop .fc-cell.fc-busy-ical{
  background:transparent;
  color:#cbd5e1;
  cursor:not-allowed;
}
.bdp-pop .fc-cell.fc-past .fc-num{text-decoration:none}
.bdp-pop .fc-cell.fc-busy .fc-num,
.bdp-pop .fc-cell.fc-busy-blocked .fc-num,
.bdp-pop .fc-cell.fc-busy-ical .fc-num{text-decoration:line-through}

/* сегодня — зелёная заливка-круг под числом */
.bdp-pop .fc-cell.fc-today{
  color:#0f172a;
  background:rgba(33,160,56,.14);
  font-weight:700;
}
.bdp-pop .fc-cell.fc-today::after{
  content:none;
}

/* выбранная — фирменный зелёный pill с белым числом */
.bdp-pop .fc-cell.fc-selected,
.bdp-pop .fc-cell.fc-free.fc-selected:hover{
  background:var(--accent,#21a038);
  color:#fff;
  box-shadow:0 6px 14px -6px rgba(33,160,56,.55);
  transform:translateY(-1px);
}
.bdp-pop .fc-cell.fc-selected.fc-today{background:var(--accent,#21a038)}

/* ---- footer ---- */
.bdp-pop-foot{
  display:flex;align-items:center;justify-content:space-between;
  gap:8px;
  margin-top:10px;padding-top:10px;
  border-top:1px solid #f1f3f5;
}
.bdp-today, .bdp-cancel{
  appearance:none;background:transparent;border:0;cursor:pointer;
  font:600 13px/1 Montserrat, system-ui, Arial, sans-serif;
  padding:8px 12px;border-radius:10px;
  transition:background-color .15s ease, color .15s ease;
}
.bdp-today{color:var(--accent,#21a038)}
.bdp-today:hover{background:rgba(33,160,56,.1)}
.bdp-cancel{color:#64748b}
.bdp-cancel:hover{background:#f3f4f6;color:#0f172a}

/* Поле даты ровно по высоте остальных инпутов формы */
.f-booking .bdp-trigger{height:44px}

/* ===== 2-колоночная модалка на десктопе =====
   На широких экранах модалка переходит в раскладку: слева форма, справа
   календарь. На узких — обычный одностолбцовый порядок, поп-овер раскрывается
   под триггером. Ширину карточки задаём в базовом правиле выше. */
@media (min-width:720px){
  .f-prop-modal-form{
    display:grid;
    grid-template-columns:minmax(0, 1fr) minmax(0, 340px);
    column-gap:22px;
    align-items:start;
  }
  /* всё по умолчанию идёт в левую колонку, в обычном порядке */
  .f-prop-modal-form > *{ grid-column:1; min-width:0 }
  /* календарь — в правой колонке, висит вверху и тянется по высоте контента */
  .f-prop-modal-form > .bdp-pop{
    grid-column:2;
    grid-row:1 / span 99;
    margin-top:0;
    align-self:start;
  }
  /* подпись «Дата брони» — отдельной строкой над триггером, без лишнего отступа */
  .f-prop-modal-form > .bdp-form-label{ margin-bottom:6px }
  /* не даём сетке календаря разъехаться шире своей колонки */
  .f-prop-modal-form > .bdp-pop .fc-grid{
    grid-template-columns:repeat(7, minmax(0, 1fr));
  }
}

/* На узких экранах поп-овер раскрывается под триггером (стандартный поток). */
@media (max-width:560px){
  .bdp-pop{padding:12px 12px 10px;border-radius:16px}
  .bdp-pop .fc-title{font-size:15px}
  .bdp-pop .fc-cell{font-size:13.5px}
}
@media (prefers-reduced-motion: reduce){
  .bdp-trigger,.bdp-clear,.bdp-cancel,.bdp-today,
  .bdp-pop,.bdp-pop .fc-cell,.bdp-pop .fc-nav{animation:none!important;transition:none!important}
}

/* ===== Booking form polish v1.2.16 ============================
   Полоса доверия + поля с иконкой + крупная кнопка отправки. */

/* ---- ряд бейджей доверия под заголовком ---- */
.f-prop-modal-body > .booking-trust{
  list-style:none;
  margin:0 0 14px;
  padding:0;
  display:grid;
  grid-template-columns:repeat(3, minmax(0,1fr));
  gap:8px;
}
.booking-trust-item{
  display:flex;align-items:center;gap:8px;
  padding:8px 10px;
  border-radius:12px;
  background:#f3f7f4;
  border:1px solid #e1ece4;
  font:600 12.5px/1.25 Montserrat, system-ui, Arial, sans-serif;
  color:#0f172a;
  min-width:0;
}
.booking-trust-item b{font-weight:700}
.booking-trust-ic{
  flex:0 0 28px;width:28px;height:28px;
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:50%;
  background:rgba(33,160,56,.14);
  color:var(--accent,#21a038);
  font-size:13px;
}
@media (max-width:640px){
  .f-prop-modal-body > .booking-trust{ grid-template-columns:1fr; gap:6px }
  .booking-trust-item{ font-size:13px }
}

/* ---- крупные поля с иконкой ---- */
.f-prop-modal-form .f-field{
  display:flex;flex-direction:column;
  gap:6px;
  margin:0;
  min-width:0;
}
.f-prop-modal-form .f-field + .f-field{ margin-top:0 }
.f-field-label{
  font:600 13px/1.2 Montserrat, system-ui, Arial, sans-serif;
  color:#0f172a;
  letter-spacing:.01em;
}
.f-field-input{
  position:relative;
  display:flex;align-items:center;
  background:#f6f8fa;
  border:1px solid #e6e8ec;
  border-radius:12px;
  height:48px;
  padding:0 12px 0 42px;
  transition:background-color .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.f-field-ic{
  position:absolute;left:14px;top:50%;transform:translateY(-50%);
  color:#94a3b8;
  font-size:15px;
  pointer-events:none;
  transition:color .15s ease;
}
.f-field-input input{
  flex:1;min-width:0;
  appearance:none;-webkit-appearance:none;
  background:transparent;
  border:0;outline:0;
  padding:0;
  font:600 14.5px/1 Montserrat, system-ui, Arial, sans-serif;
  color:#0f172a;
}
.f-field-input input::placeholder{ color:#94a3b8; font-weight:500 }
.f-field-input:hover{
  background:#fff;border-color:#dadde2;
}
.f-field-input:focus-within{
  background:#fff;
  border-color:var(--accent,#21a038);
  box-shadow:0 0 0 4px rgba(33,160,56,.14);
}
.f-field-input:focus-within .f-field-ic{ color:var(--accent,#21a038) }
.f-field-hint{
  font:500 12px/1.35 Montserrat, system-ui, Arial, sans-serif;
  color:#64748b;
}

/* ---- блок отправки: разделитель + крупная кнопка ---- */
.f-prop-modal-form .booking-actions{
  display:flex;flex-direction:column;
  gap:10px;
  margin-top:18px;
  padding-top:16px;
  border-top:1px solid #eef0f3;
}
.f-prop-modal-submit{
  width:100%;
  height:52px;
  border-radius:14px;
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font:700 15px/1 Montserrat, system-ui, Arial, sans-serif;
  letter-spacing:.01em;
  box-shadow:
    0 12px 22px -10px rgba(33,160,56,.55),
    0 2px 0 rgba(15,23,42,.04) inset;
  transition:transform .15s ease, box-shadow .15s ease, background-color .15s ease;
}
.f-prop-modal-submit:hover{
  transform:translateY(-1px);
  box-shadow:
    0 16px 28px -12px rgba(33,160,56,.6),
    0 2px 0 rgba(15,23,42,.04) inset;
}
.f-prop-modal-submit:active{ transform:translateY(0) }
.f-prop-modal-submit i{ font-size:14px }

.booking-actions-note{
  display:flex;align-items:flex-start;gap:8px;
  font:500 12px/1.4 Montserrat, system-ui, Arial, sans-serif;
  color:#64748b;
}
.booking-actions-note i{ color:#94a3b8; margin-top:2px; font-size:12px }

/* На десктопе кнопка остаётся в левой колонке (1fr), форма уже сеточная. */
@media (min-width:720px){
  .f-prop-modal-form > .booking-actions{ grid-column:1 }
}
@media (prefers-reduced-motion: reduce){
  .f-field-input,.f-prop-modal-submit{transition:none!important}
}

/* ===== Admin map picker v1.2.17 =================================
   Карта-выбор точки на /admin/property_edit и /admin/vendor_edit. */
.map-picker-card{
  background:#fff;
  border:1px solid #e6e8ec;
  border-radius:14px;
}
.map-picker-card > legend{
  padding:0 8px;
  font:600 13px/1 Montserrat, system-ui, Arial, sans-serif;
  color:#64748b;
}
.map-picker{
  position:relative;
  margin:4px 0 0;
}
.map-picker-canvas{
  width:100%;
  height:340px;
  border-radius:12px;
  border:1px solid #e6e8ec;
  background:#f3f5f8;
  overflow:hidden;
}
.map-picker-canvas:empty::before{
  content:"Карта загружается…";
  display:flex;align-items:center;justify-content:center;
  width:100%;height:100%;
  color:#94a3b8;
  font:500 13px/1 Montserrat, system-ui, Arial, sans-serif;
}
.map-picker-status{
  margin-top:8px;
  min-height:18px;
  font:500 12.5px/1.4 Montserrat, system-ui, Arial, sans-serif;
  color:#64748b;
}
.map-picker-status.is-ok{ color:#15803d }
.map-picker-status.is-err{ color:#b91c1c }
.map-picker-status.is-loading{ color:#64748b }
@media (max-width:640px){
  .map-picker-canvas{ height:260px }
}
