﻿/* ===== Video Banner Đường ===== */
.video-banner-duong {
  position: relative;
  width: 100%;          /* rộng bằng .container (khớp nội dung bên dưới) */
  margin: 20px 0;
  background: #000;
  overflow: hidden;
  border-radius: 12px;
}
.video-banner-duong__wrap {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;   /* chiều cao xác định -> con canh giữa chuẩn */
}
/* Fallback cho trình duyệt cũ không hỗ trợ aspect-ratio */
@supports not (aspect-ratio: 1) {
  .video-banner-duong__wrap {
    padding-top: 56.25%;
  }
}
/* Desktop: giới hạn chiều cao ~nửa màn hình (video full 16:9 quá cao) */
@media (min-width: 769px) {
  .video-banner-duong__wrap {
    height: 50vh;        /* chỉnh số này để tăng/giảm chiều cao trên desktop */
    aspect-ratio: auto;
    padding-top: 0;
  }
}
.video-banner-duong__wrap iframe,
.video-banner-duong__wrap video {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}
/* Facade: thumbnail + nút play tự vẽ (canh giữa tuyệt đối, bấm mới tải iframe) */
.video-banner-duong__facade {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  padding: 0;
  margin: 0;
  border: 0;
  background: #000;
  cursor: pointer;
  display: flex;            /* canh nút play vào giữa khung */
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.video-banner-duong__thumb {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;   /* lấp đầy khung 16:9, canh giữa, không bị khuyết */
  object-position: center;
  display: block;
}
.video-banner-duong__play {
  position: relative;   /* được flex của facade canh vào chính giữa */
  flex: 0 0 auto;
  width: 68px;
  height: 48px;
  /* Icon play đỏ của YouTube (SVG) */
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 68 48'%3E%3Cpath d='M66.52 7.74c-.78-2.93-2.49-5.41-5.42-6.19C55.79.13 34 0 34 0S12.21.13 6.9 1.55C3.97 2.33 2.27 4.81 1.48 7.74.06 13.05 0 24 0 24s.06 10.95 1.48 16.26c.78 2.93 2.49 5.41 5.42 6.19C12.21 47.87 34 48 34 48s21.79-.13 27.1-1.55c2.93-.78 4.64-3.26 5.42-6.19C67.94 34.95 68 24 68 24s-.06-10.95-1.48-16.26z' fill='%23f00'/%3E%3Cpath d='M45 24 27 14v20z' fill='%23fff'/%3E%3C/svg%3E") no-repeat center / contain;
  transition: opacity .2s ease;
}
.video-banner-duong__facade:hover .video-banner-duong__play {
  opacity: .9;
}
.video-banner-duong__info {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 32px 24px 20px;
  background: linear-gradient(to top, rgba(0,0,0,.75) 0%, transparent 100%);
  pointer-events: none;
}
.video-banner-duong__ten {
  font-size: 32px;
  font-weight: 700;
  color: #fff;
  margin: 0 0 6px;
  text-shadow: 0 2px 10px rgba(0,0,0,.6);
  text-transform: uppercase;
  letter-spacing: .5px;
}
.video-banner-duong__desc {
  font-size: 14px;
  color: rgba(255,255,255,.85);
  margin: 0;
  text-shadow: 0 1px 6px rgba(0,0,0,.6);
}
@media (max-width: 768px) {
  /* Full tràn viền: thoát khỏi padding của .container, giữ tỉ lệ 16:9 (như cũ) */
  .video-banner-duong {
    width: 100vw;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    margin-top: 12px;
    margin-bottom: 12px;
    border-radius: 0;
  }
  .video-banner-duong__ten {
    font-size: 22px;
  }
  .video-banner-duong__info {
    padding: 24px 16px 14px;
  }
}
/* ============================= */

form#filterForm.filter-modal-open .class-check.hidden-mb.modal-hidden { display: none !important; }

/* Ẩn khỏi thanh filter ngang, chỉ hiện trong popup Lọc */
.filter-scroll-track > .bar-hidden { display: none !important; }
form#filterForm.filter-modal-open .bar-hidden { display: block !important; }

/* Ẩn search trong header khi ở trang listing */
.hide-header-search header .search-header { display: none !important; }

/* Search bar trên filter */
.listing-search-bar {
  margin-bottom: 16px;
}
.listing-search-bar .search-header {
  display: flex !important;
  align-items: center;
  width: calc(100% - 324px);
  max-width: calc(100% - 324px);
  border: 1px solid #d0d0d0;
  border-radius: 8px;
  padding: 6px 12px;
  background: #fff;
  box-shadow: 0 1px 4px rgba(0,0,0,.08);
  position: relative;
}
/* Khi khối tìm kiếm nằm trong cột chính (đã trừ sidebar) thì không trừ 324px nữa */
.property-listing-main .listing-search-bar .search-header {
  width: 100%;
  max-width: 100%;
}
.listing-search-bar .search-header form {
  display: flex;
  align-items: center;
  width: 100%;
  gap: 0;
}
.listing-search-bar .input-select {
  display: flex;
  align-items: center;
  flex: 1;
  gap: 8px;
}
.listing-search-bar .input-select input {
  flex: 1;
  border: none;
  outline: none;
  font-size: 15px;
  background: transparent;
  min-width: 0;
}
.listing-search-bar .icon-s {
  color: #999;
  font-size: 16px;
}
.listing-search-bar #search-results {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  width: 100%;
  z-index: 9999;
  height: auto;
  max-height: 400px;
  overflow-y: auto;
  border: 1px solid #ededed;
  border-radius: 8px;
  padding: 8px 0;
  background: #fff;
  box-shadow: 0 4px 20px rgba(0,0,0,.15);
}
.listing-search-bar .item-s {
  padding: 10px 16px;
  font-size: 15px;
  font-weight: 500;
}

.property-listing-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 300px;
  gap: 24px;
  align-items: start;
}

/* grid-column chỉ có nghĩa khi .data-filter là con TRỰC TIẾP của grid.
   Dùng selector con-cháu ở đây từng khiến nó chiếm trọn hàng 1 và đẩy
   sidebar xuống dưới khối tìm kiếm + lọc. */
.property-listing-layout > .data-filter {
  grid-column: 1 / -1;
}

.property-listing-layout .data-filter {
  position: sticky;
  top: 70px;
  z-index: 9;
  margin-bottom: 0;
  background: #f8f8f8;
  border-bottom: 1px solid #d7d7d7;
}

body.filter-lock .property-listing-layout .data-filter {
  z-index: 99997;
}

/* Khi subpanel mở, nâng cả khối data-filter lên trên footer mobile */
.property-listing-layout .data-filter:has(form#filterForm.filter-subpanel-open),
.property-listing-layout .data-filter:has(form#filterForm.filter-modal-open) {
  z-index: 9999999 !important;
}

/* Fallback cho Safari iOS cũ (< 15.4) không hỗ trợ :has() — class gắn bằng JS.
   Thiếu rule này thì .data-filter giữ z-index 9, thấp hơn header (z-index 10)
   nên header đè lên đầu subpanel, che mất nút X. */
.data-filter.filter-elevated,
.property-listing-layout .data-filter.filter-elevated {
  z-index: 9999999 !important;
}

/* Khi subpanel mở, header bị ẩn hẳn ở khối @media mobile phía dưới
   (dùng chung rule với body.filter-lock của popup Lọc). */

.property-listing-layout .row-list-filter {
  width: calc(100% - 324px);
  max-width: 100%;
}
/* Khi hàng lọc nằm trong cột chính (đã trừ sidebar) thì dùng full chiều ngang cột */
.property-listing-layout .property-listing-main .row-list-filter {
  width: 100%;
  max-width: 100%;
}

.property-listing-layout .row-list-filter form {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  width: 100%;
  gap: 8px;
}

/* filter-scroll-track chiếm hết phần còn lại, là flex container cho các item bên trong */
.property-listing-layout .row-list-filter .filter-scroll-track {
  display: flex;
  flex: 1 1 0 !important;
  min-width: 0;
  align-items: center;
  gap: 8px;
}

/* Các dropdown filter giãn đều để fill hết chiều rộng */
/* width: 0 !important để override form#filterForm .item-filter { width: calc(48%+2px) } trong style.min.css */
.property-listing-layout .filter-scroll-track > .item-filter {
  flex: 1 1 0 !important;
  width: 0 !important;
  min-width: 0 !important;
  max-width: none !important;
}

/* Select2 container fill đầy item-filter */
.property-listing-layout .filter-scroll-track > .item-filter .select2-container {
  width: 100% !important;
}

/* Price/area section cũng fill đầy */
.property-listing-layout .filter-scroll-track > .item-filter .item-input,
.property-listing-layout .filter-scroll-track > .item-filter .item-price-section,
.property-listing-layout .filter-scroll-track > .item-filter .item-area-section-rent {
  width: 100%;
}

.property-listing-layout .row-list-filter form > .sort-filter {
  flex: 0 0 auto;
}

.sort-filter {
  display: flex;
  align-items: center;
  gap: 6px;
}

.sort-filter label {
  margin: 0;
  white-space: nowrap;
}

.sort-filter select {
  min-width: 110px;
  height: 38px;
  background: #fff;
}

.property-listing-layout .filter-open-btn {
  flex: 0 0 auto;
}

.property-listing-layout .filter-scroll-track > .verified-toggle {
  flex: 0 0 auto;
}

/* Đồng bộ cỡ chữ các ô lọc (Khoảng giá / Diện tích / Loại nhà đất / Chuyên viên)
   bằng nút Lọc & Video (15px) — mặc định select2/label đang 13px nên nhìn to nhỏ.
   Selector select2 phải đủ đặc thù để đè rule .item-filter ... {font-size:13px}. */
.property-listing-layout .filter-scroll-track .data-show-price,
.property-listing-layout .filter-scroll-track .data-show-price-rent,
.property-listing-layout .filter-scroll-track .data-show-area,
.property-listing-layout .filter-scroll-track .data-show-area-rent,
.property-listing-layout .filter-scroll-track .item-filter .select2-container--default .select2-selection--single .select2-selection__rendered {
  font-size: 15px;
}

.filter-scroll-track {
  display: contents;
}

.property-listing-main .product-list {
  grid-template-columns: 1fr;
}

.property-listing-main .item-product {
  display: grid;
  grid-template-columns: 380px minmax(0, 1fr);
  border: 1px solid #ededed;
  box-shadow: none;
}

/* Thumbnail split: main image on top, 2 sub images below */
.property-listing-main .item-product .thumb-image {
  display: flex;
  flex-direction: column;
  gap: 2px;
  height: 290px;
  background: #111;
  overflow: hidden;
}

.property-listing-main .item-product .thumb-main-wrap {
  position: relative;
  overflow: hidden;
  flex: 1;
}

.property-listing-main .item-product .thumb-main-wrap img {
  width: 100%;
  height: 100%;
  min-height: 0;
  object-fit: cover;
}

/* Chỉ hiện sub thumbnails ở trang danh sách */
.thumb-sub-col {
  display: none;
}

.property-listing-main .thumb-sub-col {
  display: flex;
  flex-direction: row;
  gap: 2px;
  height: 88px;
  flex-shrink: 0;
}

/* Trang chủ: chỉ 1 ảnh đại diện, đồng đều chiều cao */
.list-product-item .thumb-sub-col {
  display: none !important;
}

.list-product-item .item-product .thumb-image {
  height: 300px;
  overflow: hidden;
  background: #111;
}

.list-product-item .item-product .thumb-main-wrap {
  height: 100%;
  overflow: hidden;
}

.list-product-item .item-product .thumb-main-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.thumb-sub-item {
  flex: 1;
  display: block;
  overflow: hidden;
  position: relative;
}

.thumb-sub-item img {
  width: 100%;
  height: 100% !important;
  min-height: 0 !important;
  object-fit: cover;
  display: block;
}

/* Địa chỉ + số ảnh/video: 1 thanh overlay đáy khối ảnh (địa chỉ trái, counter phải — giống tin VIP) */
.item-product .thumb-image {
  position: relative;
}
.item-product .thumb-image > .address {
  z-index: 3;
  align-items: center;
  gap: 8px;
  pointer-events: none;
  text-shadow: 0 1px 3px rgba(0,0,0,.7);
}
.item-product .thumb-image > .address a {
  pointer-events: auto;
}
.item-product .thumb-image > .address .add {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.item-product .thumb-image > .address .img {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
  font-size: 13px;
  line-height: 1;
}
.item-product .thumb-image > .address .img > span {
  display: inline-flex;
  align-items: center;
  gap: 3px;
}

@media (max-width: 767px) {
  .property-listing-main .item-product {
    grid-template-columns: 1fr;
  }
  .property-listing-main .item-product .thumb-image {
    height: 250px;
  }
  .property-listing-main .thumb-sub-col {
    height: 76px;
  }
}

.property-listing-main .item-product .info-content-product h4 {
  font-size: 17px;
  line-height: 1.35;
}

/* Trang chủ không hiện nhãn Video trên card tin (.section-product chỉ có ở index.php) */
.section-product .verified-badge {
  display: none;
}

.verified-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-bottom: 8px;
  border-radius: 4px;
  background: #e8f7ef;
  color: #078a4f;
  padding: 3px 7px;
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  width: fit-content;
  max-width: max-content;
}

.single-verified-row {
  display: block;
  margin-bottom: 10px;
}

.single-verified-badge {
  margin: 0;
  font-size: 13px;
}

.property-listing-side {
  align-self: stretch;
  position: relative;
  /* style.min.css để .property-listing-side { position: sticky; top: 92px }.
     Ở đây position đổi thành relative nhưng top:92px vẫn còn hiệu lực và đẩy
     sidebar tụt xuống đúng 92px -> phải huỷ tường minh. */
  top: auto;
}

.sidebar-filters {
  /* filter cards scroll bình thường */
}

/* .property-side-card--sticky: position handled by JS */

.property-side-card {
  background: #fff;
  border: 1px solid #ededed;
  border-radius: 8px;
  padding: 18px 20px;
  margin-bottom: 16px;
}

.property-side-card h3 {
  font-family: "Libre Franklin", sans-serif;
  font-size: 17px;
  font-weight: 700;
  margin-bottom: 14px;
}

/* Agent card - header banner */
.property-side-card--sticky {
  padding: 0;
  overflow: hidden;
}

.agent-card-header {
  background: linear-gradient(160deg, #c5edf0 0%, #e2f7f8 60%, #d4eff5 100%);
  padding: 16px 20px 14px;
  text-align: center;
  position: relative;
}

.agent-card-header::before,
.agent-card-header::after {
  content: '✦ ✦';
  position: absolute;
  color: rgba(80, 185, 200, 0.4);
  font-size: 13px;
  letter-spacing: 4px;
  top: 50%;
  transform: translateY(-50%);
}

.agent-card-header::before { left: 10px; }
.agent-card-header::after  { right: 10px; }


.agent-card-header h3 {
  font-size: 18px;
  font-weight: 800;
  color: #1a1a1a;
  margin: 0;
  letter-spacing: -0.2px;
}

/* Agent list */
.agent-posting-list {
  padding: 0 14px 6px;
  list-style: none;
  margin: 0;
}

.agent-posting-list li {
  border-bottom: 1px solid #f0f0f0;
  padding: 11px 0;
}

.agent-posting-list li:last-child {
  border-bottom: none;
}

.agent-posting-list li + li {
  margin-top: 0;
}

.agent-posting-list a {
  display: flex !important;
  align-items: center !important;
  gap: 12px;
  color: #222;
  text-decoration: none;
  transition: color .18s;
}

.agent-posting-list a > span {
  display: flex;
  flex-direction: column;
  justify-content: center;
  flex: 1;
  min-width: 0;
}

.agent-posting-list a:hover {
  color: #c41c0d;
}

.agent-posting-list a:hover img {
  border-color: #e0a0a0;
  box-shadow: 0 2px 10px rgba(196,28,13,.18);
}

.agent-avatar-wrap {
  position: relative;
  flex-shrink: 0;
  align-self: center;
}

.agent-posting-list img {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid #e8e8e8;
  box-shadow: 0 2px 6px rgba(0,0,0,.10);
  transition: border-color .18s, box-shadow .18s;
  display: block;
}

.agent-posting-list strong,
.agent-posting-list small {
  display: block;
}

.agent-posting-list strong {
  font-size: 14px;
  font-weight: 700;
  color: #1a1a1a;
  line-height: 1.3;
  margin-bottom: 3px;
}

.agent-posting-list small {
  color: #999;
  font-size: 12px;
}

.property-market-card {
  border-color: #0f766e;
  background: #eefaf8;
}

.market-number {
  display: flex;
  align-items: center;
  gap: 8px;
  color: #005f56;
  font-size: 24px;
}

.property-market-card p {
  margin: 8px 0 14px;
  font-size: 15px;
}

.property-market-card a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  border: 1px solid #0f766e;
  border-radius: 4px;
  color: #005f56;
  font-weight: 600;
}

.side-filter-list li a {
  display: block;
  color: #222;
  padding: 7px 0;
  font-size: 15px;
}

.side-filter-list li a:hover {
  color: #cf1409;
}

.agent-posting-list li + li {
  margin-top: 12px;
}

.agent-posting-list a {
  display: flex;
  align-items: center;
  gap: 10px;
  color: #222;
}

.agent-posting-list img {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  object-fit: cover;
}

.agent-posting-list strong,
.agent-posting-list small {
  display: block;
}

.agent-posting-list small {
  color: #666;
  margin-top: 2px;
}

.filter-modal-head,
.filter-modal-actions,
.filter-type-tabs {
  display: none;
}

.filter-open-btn,
.verified-toggle {
  height: 40px;
  border: 1px solid #d7d7d7;
  border-radius: 4px;
  background: #fff;
  color: #222;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 0 14px;
  font-size: 15px;
}

.filter-open-btn strong {
  min-width: 20px;
  height: 20px;
  line-height: 20px;
  border-radius: 6px;
  background: #e53935;
  color: #fff;
  font-size: 12px;
}

.verified-toggle {
  color: #777;
  cursor: pointer;
}

.verified-toggle svg {
  color: #118c4f;
}

.verified-toggle input {
  display: none;
}

.toggle-ui {
  position: relative;
  width: 38px;
  height: 22px;
  border-radius: 99px;
  background: #cfcfcf;
}

.toggle-ui:after {
  content: "";
  position: absolute;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: #fff;
  top: 3px;
  left: 3px;
}

.verified-toggle.active {
  color: #222;
}

.verified-toggle.active .toggle-ui {
  background: #0a9b60;
}

.verified-toggle.active .toggle-ui:after {
  left: 19px;
}

.filter-modal-backdrop {
  display: none;
}

.filter-modal-backdrop.active {
  display: block;
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.55);
  z-index: 99998;
}

form#filterForm.filter-modal-open {
  position: fixed;
  top: 50%;
  left: 50%;
  z-index: 99999;
  width: min(580px, calc(100vw - 32px));
  max-height: calc(100vh - 64px);
  overflow-y: auto;
  display: block;
  transform: translate(-50%, -50%);
  background: #fff;
  border-radius: 10px;
  padding: 0 30px;
  box-shadow: 0 20px 70px rgba(0, 0, 0, 0.25);
}

form#filterForm.filter-modal-open .filter-modal-head {
  display: flex;
  height: 64px;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid #ededed;
  margin: 0 -30px 18px;
  padding: 0 30px;
  font-size: 18px;
}

form#filterForm.filter-modal-open .filter-type-tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  margin-bottom: 22px;
  border: 1px solid #d7d7d7;
  border-radius: 5px;
  overflow: hidden;
}

.filter-type-tab {
  height: 42px;
  border: none;
  background: #fff;
  color: #999;
  font-size: 16px;
  font-weight: 700;
}

.filter-type-tab.active {
  background: #555;
  color: #fff;
}

.filter-modal-close {
  border: none;
  background: none;
  font-size: 24px;
  color: #777;
}

form#filterForm.filter-modal-open .item-price-section,
form#filterForm.filter-modal-open .item-price-section-rent,
form#filterForm.filter-modal-open .item-area-section,
form#filterForm.filter-modal-open .item-area-section-rent {
  position: relative;
  display: flex;
  align-items: center;
  width: 100%;
  height: 48px;
  gap: 12px;
  border: 1px solid #d7d7d7;
  border-radius: 8px;
  background: #fff;
  background-image: none !important;
  padding: 0 40px 0 14px;
  color: #333;
  font-size: 14px;
  cursor: pointer;
}

form#filterForm.filter-modal-open .filter-scroll-track > .item-filter:has(.item-price-section) > .item-input:before,
form#filterForm.filter-modal-open .filter-scroll-track > .item-filter:has(.item-price-section) > .item-input:after,
form#filterForm.filter-modal-open .filter-scroll-track > .item-filter:has(.item-price-section-rent) > .item-input:before,
form#filterForm.filter-modal-open .filter-scroll-track > .item-filter:has(.item-price-section-rent) > .item-input:after,
form#filterForm.filter-modal-open .filter-scroll-track > .item-filter:has(.item-area-section) > .item-input:before,
form#filterForm.filter-modal-open .filter-scroll-track > .item-filter:has(.item-area-section) > .item-input:after,
form#filterForm.filter-modal-open .filter-scroll-track > .item-filter:has(.item-area-section-rent) > .item-input:before,
form#filterForm.filter-modal-open .filter-scroll-track > .item-filter:has(.item-area-section-rent) > .item-input:after {
  content: none !important;
  display: none !important;
}

form#filterForm.filter-modal-open .item-price-section span,
form#filterForm.filter-modal-open .item-price-section-rent span,
form#filterForm.filter-modal-open .item-area-section span,
form#filterForm.filter-modal-open .item-area-section-rent span {
  flex: 1;
  font-size: 14px;
}

form#filterForm.filter-modal-open .item-price-section:after,
form#filterForm.filter-modal-open .item-price-section-rent:after,
form#filterForm.filter-modal-open .item-area-section:after,
form#filterForm.filter-modal-open .item-area-section-rent:after {
  color: #999;
}

form#filterForm.filter-modal-open .item-price-section:after,
form#filterForm.filter-modal-open .item-price-section-rent:after,
form#filterForm.filter-modal-open .item-area-section:after,
form#filterForm.filter-modal-open .item-area-section-rent:after {
  content: "\f054";
  display: block;
  width: auto;
  height: auto;
  border: 0;
  position: absolute;
  right: 14px;
  top: 50%;
  transform: translateY(-50%);
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  line-height: 1;
  margin-left: 0;
}

form#filterForm.filter-modal-open .filter-open-btn,
form#filterForm.filter-modal-open .verified-toggle {
  display: none;
}

form#filterForm.filter-modal-open .filter-scroll-track {
  display: block !important;
  overflow: visible;
}

form#filterForm.filter-modal-open .filter-scroll-track > .item-filter,
form#filterForm.filter-modal-open .filter-scroll-track > .item-input,
form#filterForm.filter-modal-open .filter-scroll-track > .sort-filter {
  display: block !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  flex: none !important;
  margin-bottom: 14px;
}

form#filterForm.filter-modal-open .filter-scroll-track > .item-filter:has(.item-price-section)::before,
form#filterForm.filter-modal-open .filter-scroll-track > .item-filter:has(.item-price-section-rent)::before,
form#filterForm.filter-modal-open .filter-scroll-track > .item-filter:has(.item-area-section)::before,
form#filterForm.filter-modal-open .filter-scroll-track > .item-filter:has(.item-area-section-rent)::before {
  display: block;
  margin: 0 0 10px;
  color: #2b2b2b;
  font-size: 16px;
  font-weight: 700;
}


form#filterForm.filter-modal-open .filter-scroll-track > .search-av,
form#filterForm.filter-modal-open .filter-scroll-track > div:empty {
  display: none !important;
}

form#filterForm.filter-modal-open .class-check.hidden-mb {
  display: block !important;
}

form#filterForm.filter-modal-open .class-check .select2-container,
form#filterForm.filter-modal-open .sort-filter {
  width: 100% !important;
  cursor: pointer;
}

form#filterForm.filter-modal-open .class-check select.form-control {
  width: 100% !important;
  height: 48px;
  border: 1px solid #d7d7d7;
  border-radius: 8px;
  background: #fff;
  padding: 0 14px;
  font-size: 14px;
  color: #333;
  -webkit-appearance: none;
  appearance: none;
}

form#filterForm.filter-modal-open .class-check .select2-selection,
form#filterForm.filter-modal-open .sort-filter {
  display: flex;
  align-items: center;
  width: 100%;
  height: 48px;
  border: 1px solid #d7d7d7 !important;
  border-radius: 8px !important;
  background: #fff;
  padding: 0 14px;
  color: #333;
  font-size: 14px;
}

form#filterForm.filter-modal-open .class-check .select2-selection__rendered {
  flex: 1;
  padding: 0 !important;
  color: #333 !important;
  line-height: 48px !important;
}

form#filterForm.filter-modal-open .class-check .select2-selection__arrow {
  display: none;
}

form#filterForm.filter-modal-open .class-check:after,
form#filterForm.filter-modal-open .sort-filter:after {
  content: "\f054";
  position: absolute;
  right: 14px;
  top: 50%;
  transform: translateY(-50%);
  color: #999;
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  pointer-events: none;
}

form#filterForm.filter-modal-open .class-check,
form#filterForm.filter-modal-open .sort-filter {
  position: relative;
}

form#filterForm.filter-modal-open .sort-filter label {
  margin: 0 6px 0 0;
  color: #333;
  font-weight: 400;
}

form#filterForm.filter-modal-open .sort-filter select {
  flex: 1;
  border: 0;
  background: transparent;
  color: #333;
  pointer-events: none;
  appearance: none;
}

form#filterForm.filter-modal-open .price,
form#filterForm.filter-modal-open .area-rent,
form#filterForm.filter-modal-open .area {
  position: static;
  border: none;
  padding: 8px 0 0;
}

form#filterForm.filter-modal-open.filter-subpanel-open > *:not(.filter-subpanel-shell) {
  display: none !important;
}

form#filterForm.filter-modal-open.filter-subpanel-open > .filter-subpanel-shell {
  display: flex !important;
}

.filter-subpanel-shell {
  display: none;
}

form#filterForm {
  position: relative;
}

form#filterForm.filter-subpanel-open:not(.filter-modal-open) .filter-subpanel-shell {
  position: fixed;
  z-index: 9999999;
  display: flex !important;
  flex-direction: column;
  max-height: 520px;
  overflow: hidden;
  background: #fff;
  border: 1px solid #ededed;
  border-radius: 8px;
  box-shadow: 0 12px 34px rgba(0, 0, 0, 0.16);
}

.property-listing-layout .row-list-filter form.filter-subpanel-open:not(.filter-modal-open) {
  overflow: visible;
}

form#filterForm.filter-subpanel-open:not(.filter-modal-open) .filter-subpanel-head {
  height: 58px;
  margin: 0;
  padding: 0 20px;
}

form#filterForm.filter-subpanel-open:not(.filter-modal-open) .filter-subpanel-back {
  display: none;
}

form#filterForm.filter-subpanel-open:not(.filter-modal-open) .filter-subpanel-head strong {
  min-width: 0;
}

form#filterForm.filter-subpanel-open:not(.filter-modal-open) .filter-subpanel-close {
  flex: 0 0 40px;
  width: 40px;
  height: 40px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-right: -8px;
}

form#filterForm.filter-subpanel-open:not(.filter-modal-open) .filter-subpanel-body {
  flex: 1 1 auto;
  overflow: auto;
  padding: 18px 20px;
  min-height: 0;
}

form#filterForm.filter-subpanel-open:not(.filter-modal-open) .filter-subpanel-actions {
  grid-template-columns: 120px 1fr;
  gap: 16px;
  margin: 0;
  padding: 12px 20px;
}

form#filterForm.filter-modal-open.filter-subpanel-open {
  padding-bottom: 0;
}

/* Desktop: panel con hiển thị inline trong hộp Bộ lọc, thay cho danh sách bộ lọc */
form#filterForm.filter-modal-open.filter-subpanel-open .filter-subpanel-shell {
  display: flex !important;
  flex-direction: column;
  position: static;
  width: 100%;
  max-height: none;
  transform: none;
  background: #fff;
  border: none;
  border-radius: 0;
  padding: 0;
  box-shadow: none;
}

.filter-subpanel-head {
  position: sticky;
  top: 0;
  z-index: 2;
  display: flex;
  height: 64px;
  align-items: center;
  gap: 14px;
  margin: 0 -30px 18px;
  padding: 0 30px;
  background: #fff;
  border-bottom: 1px solid #ededed;
  font-size: 20px;
}

.filter-subpanel-head strong {
  flex: 1;
}

.filter-subpanel-back,
.filter-subpanel-close {
  border: none;
  background: none;
  color: #444;
  font-size: 22px;
}

.filter-subpanel-close {
  color: #999;
}

.filter-subpanel-range {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 34px minmax(0, 1fr);
  align-items: end;
  gap: 14px;
  margin-bottom: 20px;
}

.filter-subpanel-range label {
  display: grid;
  gap: 10px;
  margin: 0;
  min-width: 0;
  color: #222;
  font-weight: 700;
}

.filter-subpanel-range label span {
  font-size: 13px;
}

.filter-subpanel-range input {
  width: 100%;
  min-width: 0;
  height: 42px;
  border: 1px solid #d7d7d7;
  border-radius: 6px;
  padding: 0 12px;
  color: #222;
  font-weight: 400;
  text-align: center;
}

.filter-subpanel-arrow {
  align-self: center;
  color: #111;
  font-size: 20px;
  text-align: center;
}

.filter-subpanel-slider {
  position: relative;
  height: 28px;
  margin: 0 14px 18px;
  border: 0 !important;
  background: transparent !important;
}

.filter-subpanel-slider:before,
.filter-subpanel-slider .ui-slider-range {
  content: "";
  position: absolute;
  top: 12px;
  height: 4px;
  background: #009c9d;
  border-radius: 999px;
}

.filter-subpanel-slider:before {
  left: 0;
  right: 0;
  background: #ececec;
}

.filter-subpanel-slider .ui-slider-range {
  top: 12px;
}

.filter-subpanel-slider .ui-slider-handle {
  position: absolute;
  z-index: 2;
  top: 2px;
  width: 28px;
  height: 28px;
  margin-left: -14px;
  border: 0;
  border-radius: 50%;
  background: #009c9d;
  cursor: grab;
  outline: none;
  touch-action: none;
}

.filter-subpanel-slider,
.slider-p .ui-slider,
.slider-p .ui-slider-handle {
  touch-action: none;
}

.filter-subpanel-slider .ui-slider-handle:active {
  cursor: grabbing;
}

.filter-subpanel-options {
  display: grid;
  gap: 2px;
}

.filter-subpanel-option {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  min-height: 40px;
  border: 0;
  background: transparent;
  color: #222;
  font-size: 16px;
  text-align: left;
}

.filter-subpanel-option i {
  width: 16px;
  height: 16px;
  border: 2px solid #d0d0d0;
  border-radius: 50%;
}

.filter-subpanel-option.active i {
  border-color: #ef3b35;
  box-shadow: inset 0 0 0 4px #fff;
  background: #ef3b35;
}

.filter-subpanel-actions {
  position: sticky;
  bottom: -24px;
  display: grid;
  grid-template-columns: 96px 1fr;
  gap: 20px;
  margin: 18px -30px -24px;
  padding: 18px 30px 30px;
  background: #fff;
  border-top: 1px solid #ededed;
}

body.filter-lock .select2-container--open {
  z-index: 100001;
}

/* Ô tìm nhanh trong subpanel chọn Đường/Phường/Khu quy hoạch */
.filter-subpanel-search {
  display: flex;
  align-items: center;
  gap: 8px;
  border: 1px solid #d0d0d0;
  border-radius: 8px;
  padding: 8px 12px;
  margin-bottom: 12px;
  background: #fff;
}
.filter-subpanel-search i {
  color: #999;
  font-size: 14px;
}
.filter-subpanel-search-input {
  flex: 1;
  border: none;
  outline: none;
  font-size: 15px;
  background: transparent;
  min-width: 0;
}

form#filterForm.filter-modal-open .filter-modal-actions {
  position: sticky;
  bottom: 0;
  z-index: 1;
  display: grid;
  grid-template-columns: 96px 1fr;
  gap: 20px;
  margin: 18px -30px 0;
  padding: 18px 30px 30px;
  background: #fff;
  border-top: 1px solid #ededed;
}

.filter-reset-btn,
.filter-submit-btn {
  height: 48px;
  border-radius: 8px;
  font-weight: 700;
}

.filter-reset-btn {
  background: #fff;
  border: 1px solid #d7d7d7;
  color: #222;
}

.filter-submit-btn {
  background: #e53935;
  border: 1px solid #e53935;
  color: #fff;
}

body.filter-lock,
body.filter-subpanel-lock {
  overflow: hidden;
}

@media (max-width: 991px) {
  .property-listing-layout {
    grid-template-columns: minmax(0, 1fr);
  }

  /* Layout 1 cột: thanh tìm + hàng lọc dùng full chiều ngang */
  .listing-search-bar .search-header,
  .property-listing-layout .row-list-filter {
    width: 100%;
    max-width: 100%;
  }

  .property-listing-side {
    position: static;
  }

  /* Tablet (iPad) xếp dọc như mobile: grid 2 cột kết hợp với sticky agent card
     (div đệm + position:absolute) làm layout lộn xộn. */
  .property-sidebar {
    display: block;
  }

  .property-side-card {
    margin-bottom: 14px;
  }
}

@media (max-width: 767px) {
  body:has(.property-listing-layout) header {
    position: fixed !important;
    top: 0;
    left: 0;
    right: 0;
    z-index: 1000;
  }

  /* Header fixed -> chừa chỗ để nội dung (video...) không bị header che mất phần trên */
  body:has(.property-listing-layout) main {
    padding-top: 71px;
  }

  /* Khi popup lọc mở: ẩn video banner.
     Một số điện thoại vẽ iframe/video đè lên lớp trên bất chấp z-index -> che mất popup.
     Dùng visibility (không phải display) để không làm xô lệch layout phía sau. */
  body.filter-lock .video-banner-duong,
  body.filter-subpanel-lock .video-banner-duong {
    visibility: hidden;
  }

  /* iOS (WebKit): position:fixed bị "nhốt" trong ancestor có overflow:hidden.
     Khi popup mở, bỏ overflow ở các tổ tiên để popup phủ full màn hình từ đỉnh. */
  body.filter-lock .main-single,
  body.filter-lock .property-listing-layout,
  body.filter-lock .property-listing-layout .row-list-filter,
  body.filter-subpanel-lock .main-single,
  body.filter-subpanel-lock .property-listing-layout,
  body.filter-subpanel-lock .property-listing-layout .row-list-filter {
    overflow: visible !important;
  }

  /* Popup lọc đã full màn hình và có sẵn thanh "Bộ lọc" + nút X riêng
     -> ẩn header, tránh header (fixed) vẽ đè che mất phần đầu popup trên iOS.
     Subpanel (Khoảng giá / Diện tích / Loại nhà đất / Chuyên viên) cũng full
     màn hình và có nút X riêng nên xử lý y hệt. */
  body.filter-lock header,
  body.filter-subpanel-lock header {
    display: none !important;
  }


  html,
  body {
    overflow-x: hidden;
  }

  .main-single,
  .property-listing-layout,
  .property-listing-main,
  .product-list,
  .property-listing-main .item-product {
    max-width: 100%;
    overflow-x: hidden;
  }

  .property-listing-layout .data-filter {
    position: relative;
    top: 0;
    z-index: 999;
    max-width: 100%;
    overflow: visible;
    background: #f8f8f8;
    border-bottom: none;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  }

  .listing-search-bar .search-header {
    width: 100%;
    max-width: 100%;
  }

  /* Popup lọc full màn hình trên mobile (đè kiểu hộp thoại giữa màn hình của desktop) */
  form#filterForm.filter-modal-open {
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    max-height: none;
    transform: none;
    border-radius: 0;
    padding: 0 16px 92px;
    box-shadow: none;
  }

  form#filterForm.filter-modal-open .filter-modal-head {
    margin: 0 -16px 16px;
    padding: 0 16px;
  }

  .property-listing-layout .data-filter.is-sticky {
    position: fixed !important;
    top: 71px;
    left: 0;
    right: 0;
  }

  .property-listing-main {
    padding-top: 0;
  }

  .property-listing-layout .row-list-filter {
    max-width: 100%;
    overflow: hidden;
  }

  form#filterForm:not(.filter-modal-open) {
    display: flex !important;
    flex-wrap: nowrap !important;
    align-items: center;
    gap: 10px;
    overflow-x: hidden !important;
    overflow-y: visible;
    width: 100%;
    max-width: 100%;
    padding-bottom: 4px;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }

  form#filterForm:not(.filter-modal-open)::-webkit-scrollbar {
    display: none;
  }

  form#filterForm:not(.filter-modal-open) > .filter-open-btn,
  form#filterForm:not(.filter-modal-open) > .filter-scroll-track {
    flex: 0 0 auto !important;
  }

  form#filterForm:not(.filter-modal-open) > .filter-open-btn {
    width: 96px;
  }

  form#filterForm:not(.filter-modal-open) > .filter-scroll-track {
    display: flex !important;
    flex: 1 1 0 !important;
    width: calc(100% - 106px);
    max-width: calc(100% - 106px);
    min-width: 0;
    gap: 10px;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }

  form#filterForm:not(.filter-modal-open) > .filter-scroll-track::-webkit-scrollbar {
    display: none;
  }

  form#filterForm:not(.filter-modal-open) .filter-scroll-track > .item-filter:not(.bar-hidden),
  form#filterForm:not(.filter-modal-open) .filter-scroll-track > .item-input:not(.bar-hidden) {
    display: block !important;
    flex: 0 0 auto !important;
    width: auto !important;
    min-width: 118px !important;
    margin-bottom: 0 !important;
  }

  form#filterForm:not(.filter-modal-open) .filter-scroll-track > .sort-filter {
    position: static !important;
    width: auto !important;
    min-width: 190px;
    margin: 0 !important;
    background: #fff;
    border: 1px solid #d7d7d7;
    border-radius: 4px;
    padding: 0 10px;
  }

  form#filterForm:not(.filter-modal-open) .filter-scroll-track > .sort-filter select {
    width: 100%;
    min-width: 104px;
    border: none;
    background: transparent;
  }

  form#filterForm:not(.filter-modal-open) .filter-scroll-track > .item-filter.hidden-mb:not(.bar-hidden),
  form#filterForm:not(.filter-modal-open) .filter-scroll-track > .item-input.hidden-mb:not(.bar-hidden) {
    display: block !important;
  }

  .property-listing-main .item-product {
    display: block;
  }

  .property-listing-main .item-product .thumb-image img {
    min-height: 0;
    height: 230px;
  }

  .property-sidebar {
    display: block;
  }

  .property-side-card {
    margin-bottom: 14px;
  }

  .row-list-filter form {
    display: flex;
    overflow-x: hidden;
    overflow-y: visible;
    flex-wrap: nowrap;
    padding-bottom: 4px;
    gap: 10px;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }

  .row-list-filter form::-webkit-scrollbar {
    display: none;
  }

  .row-list-filter form > .search-av,
  .row-list-filter form > div:empty,
  form#filterForm:not(.filter-modal-open) .filter-scroll-track > .search-av,
  form#filterForm:not(.filter-modal-open) .filter-scroll-track > div:empty {
    display: none;
  }

  form#filterForm .filter-open-btn,
  form#filterForm .filter-scroll-track > .verified-toggle,
  form#filterForm .filter-scroll-track > .item-filter,
  form#filterForm .filter-scroll-track > .item-input,
  form#filterForm .filter-scroll-track > .sort-filter {
    flex: 0 0 auto;
  }

  form#filterForm .filter-scroll-track > .item-filter,
  form#filterForm .filter-scroll-track > .item-input {
    display: block;
    width: auto;
    min-width: 118px;
    margin-bottom: 0;
  }

  form#filterForm .filter-scroll-track > .sort-filter {
    min-width: 150px;
  }

  form#filterForm .filter-scroll-track > .item-filter.hidden-mb:not(.bar-hidden),
  form#filterForm .filter-scroll-track > .item-input.hidden-mb:not(.bar-hidden) {
    display: block;
  }

  form#filterForm:not(.filter-modal-open) .filter-scroll-track > .item-filter .select2-container {
    width: 118px !important;
  }

  form#filterForm:not(.filter-modal-open) .filter-scroll-track > .item-input .select2-container {
    width: 128px !important;
  }

  form#filterForm:not(.filter-modal-open) .filter-scroll-track > .item-filter:first-of-type {
    min-width: 92px;
  }

  form#filterForm:not(.filter-modal-open) .filter-scroll-track > .item-filter:first-of-type .select2-container {
    width: 92px !important;
  }

  form#filterForm .filter-scroll-track > .item-filter > .item-input {
    margin-bottom: 0;
  }

  form#filterForm .verified-toggle {
    min-width: 100px;
  }

  form#filterForm .filter-open-btn {
    min-width: 96px;
  }

  .property-listing-layout .row-list-filter form .filter-scroll-track > .item-filter,
  .property-listing-layout .row-list-filter form .filter-scroll-track > .item-input,
  .property-listing-layout .row-list-filter form .filter-scroll-track > .sort-filter,
  .property-listing-layout .filter-open-btn,
  .property-listing-layout .verified-toggle {
    flex: 0 0 auto;
  }

  form#filterForm.filter-modal-open {
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    width: auto;
    max-height: none;
    transform: none;
    border-radius: 0;
    padding: 0 16px 92px;
  }

  form#filterForm.filter-modal-open .filter-scroll-track {
    display: block !important;
    overflow: visible;
  }

  form#filterForm.filter-subpanel-open .filter-subpanel-shell,
  form#filterForm.filter-modal-open.filter-subpanel-open .filter-subpanel-shell {
    display: flex !important;
    flex-direction: column !important;
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100% !important;
    max-height: none !important;
    transform: none !important;
    border-radius: 0 !important;
    padding: 0 16px 0;
    z-index: 9999999;
    box-shadow: none;
    box-sizing: border-box;
  }

  .filter-subpanel-shell,
  .filter-subpanel-shell * {
    box-sizing: border-box;
  }

  /* Mobile: head trên cùng, danh sách cuộn ở giữa, nút Đặt lại/Áp dụng dưới cùng */
  form#filterForm.filter-subpanel-open .filter-subpanel-head,
  form#filterForm.filter-modal-open.filter-subpanel-open .filter-subpanel-head {
    position: static;
    flex: 0 0 auto;
  }

  form#filterForm.filter-subpanel-open .filter-subpanel-body,
  form#filterForm.filter-modal-open.filter-subpanel-open .filter-subpanel-body {
    flex: 1 1 auto;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    /* Chặn scroll chaining: cuộn hết danh sách thì KHÔNG kéo theo trang phía sau
       (chính là thứ làm sticky header trồi lên che đầu subpanel trên iOS). */
    overscroll-behavior: contain;
    min-height: 0;
    padding: 0;
  }

  form#filterForm.filter-subpanel-open .filter-subpanel-actions,
  form#filterForm.filter-modal-open.filter-subpanel-open .filter-subpanel-actions {
    position: static;
    flex: 0 0 auto;
  }

  form#filterForm.filter-modal-open .filter-subpanel-head {
    height: 58px;
    margin: 0 -16px 16px;
    padding: 0 16px;
    font-size: 18px;
  }

  form#filterForm .filter-subpanel-actions,
  form#filterForm.filter-modal-open .filter-subpanel-actions {
    grid-template-columns: 96px 1fr;
    gap: 12px;
    margin: 0 -16px 0;
    padding: 12px 16px 16px;
    background: #fff;
    border-top: 1px solid #f0f0f0;
  }

  form#filterForm.filter-modal-open .filter-scroll-track > .item-filter,
  form#filterForm.filter-modal-open .filter-scroll-track > .item-input,
  form#filterForm.filter-modal-open .filter-scroll-track > .sort-filter,
  form#filterForm.filter-modal-open .filter-scroll-track > .search-av {
    display: block;
    width: 100%;
    margin-bottom: 14px;
  }

  form#filterForm.filter-modal-open .filter-scroll-track .class-check.hidden-mb {
    display: block;
  }

  form#filterForm.filter-modal-open .filter-modal-head {
    display: flex;
    height: 58px;
    align-items: center;
    justify-content: space-between;
    border-bottom: 1px solid #ededed;
    margin: 0 -16px 16px;
    padding: 0 16px;
    font-size: 18px;
  }

  form#filterForm.filter-modal-open .filter-modal-actions {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 10;
    grid-template-columns: 96px 1fr;
    gap: 12px;
    margin: 0;
    padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
    background: #fff;
    border-top: 1px solid #ededed;
  }

}

/* Search bar trang chủ thay thế box-search cũ */
.banner-index .main-banner img {
  height: 460px;
}
.banner-index .text-center-banner {
  align-items: center;
  padding-bottom: 100px;
  z-index: 3;
  pointer-events: none;
}
/* Chữ luôn nằm trên lớp mây, thêm đổ bóng nhẹ để dễ đọc khi mây trắng bay qua */
.banner-index .text-center-banner h1 {
  text-shadow: 0 1px 10px rgba(0, 0, 0, 0.45);
}
.banner-index .text-center-banner p {
  text-shadow: 0 1px 10px rgba(0, 0, 0, 0.5);
}
.box-search-home {
  position: absolute;
  bottom: 50px;
  top: auto;
  transform: none;
  left: 0;
  width: 100%;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 0 20px;
}
.bsh-panel {
  width: 100%;
  max-width: 760px;
  background: rgba(20, 20, 20, 0.6);
  border-radius: 12px;
  padding: 0 20px 20px;
  backdrop-filter: blur(2px);
}
.box-search-home-tabs {
  display: flex;
  gap: 8px;
  margin-bottom: 16px;
  justify-content: center;
  border-bottom: 1px solid rgba(255, 255, 255, 0.25);
}
.bsh-tab {
  padding: 14px 22px 11px;
  border: none;
  border-radius: 0;
  background: transparent;
  color: rgba(255, 255, 255, 0.85);
  font-size: 15px;
  font-weight: 500;
  cursor: pointer;
  border-bottom: 3px solid transparent;
  transition: color 0.2s, border-color 0.2s;
}
.bsh-tab.active {
  background: transparent;
  color: #fff;
  font-weight: 700;
  border-bottom-color: #e03c31;
}
.bsh-tab:not(.active):hover {
  background: transparent;
  color: #fff;
}
.box-search-home .search-header {
  display: flex !important;
  align-items: center;
  width: 100%;
  max-width: none;
  border: none;
  border-radius: 8px;
  padding: 6px 6px 6px 16px;
  background: #fff;
  box-shadow: 0 4px 20px rgba(0,0,0,.25);
  position: relative;
}
.box-search-home .search-header form {
  display: flex;
  align-items: center;
  width: 100%;
  gap: 10px;
}
.box-search-home .input-select {
  display: flex;
  align-items: center;
  flex: 1;
  gap: 10px;
}
.box-search-home .input-select input {
  flex: 1;
  border: none;
  outline: none;
  font-size: 16px;
  background: transparent;
  min-width: 0;
  color: #333;
}
.box-search-home .icon-s {
  color: #999;
  font-size: 18px;
}
.box-search-home #search-results {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  width: 100%;
  z-index: 9999;
  height: auto;
  max-height: 400px;
  overflow-y: auto;
  border: 1px solid #ededed;
  border-radius: 8px;
  padding: 8px 0;
  background: #fff;
  box-shadow: 0 4px 20px rgba(0,0,0,.15);
}
.box-search-home .item-s {
  padding: 10px 16px;
  font-size: 15px;
  font-weight: 500;
}
@media (max-width: 767px) {
  .banner-index .main-banner img {
    height: 320px;
    object-position: center;
  }
  .banner-index .text-center-banner {
    align-items: center;
    padding-bottom: 80px;
    padding-top: 0;
  }
  .box-search-home {
    bottom: 30px;
    top: auto;
    transform: none;
    padding: 0 12px;
  }
  .bsh-panel {
    padding: 0 12px 12px;
  }
  .bsh-tab {
    padding: 11px 16px 8px;
    font-size: 14px;
  }
  .box-search-home-tabs {
    margin-bottom: 12px;
  }
}


/* Sidebar widgets – single property page */
.widget-phuong,
.widget-featured-list {
  background: #fff;
  border: 1px solid #ededed;
  border-radius: 8px;
  padding: 18px 20px;
  margin-bottom: 16px;
}
.widget-phuong h3,
.widget-featured-list h3 {
  font-family: "Libre Franklin", sans-serif;
  font-size: 16px;
  font-weight: 700;
  margin-bottom: 12px;
  color: #111;
}
.phuong-list,
.featured-prop-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.phuong-list li a,
.featured-prop-list li a {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 6px 0;
  border-bottom: 1px solid #f3f3f3;
  color: #333;
  font-size: 14px;
  text-decoration: none;
  line-height: 1.4;
}
.phuong-list li:last-child a,
.featured-prop-list li:last-child a {
  border-bottom: none;
}
.phuong-list li a:hover,
.featured-prop-list li a:hover {
  color: #c00;
}
.phuong-list li a span {
  color: #888;
  font-size: 13px;
  white-space: nowrap;
  margin-left: 6px;
}
.phuong-extra {
  display: none;
}

.btn-xem-them {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-top: 10px;
  color: #c00;
  font-size: 14px;
  font-weight: 500;
  text-decoration: none;
}
.btn-xem-them i {
  transition: transform 0.2s;
}
.btn-xem-them.is-open i {
  transform: rotate(180deg);
}

/* ===== Listing title bar (h1 + sort below filter) ===== */
.listing-title-bar {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding: 14px 0 12px;
  border-bottom: 1px solid #ededed;
  margin-bottom: 14px;
}

.listing-title-info {
  flex: 1;
  min-width: 0;
}

.listing-title-info .title-pro {
  font-weight: 700;
  margin: 0 0 4px;
  line-height: 1.3;
  color: #111;
}

.listing-count {
  font-size: 13px;
  color: #666;
}

.listing-title-bar .sort-filter {
  position: static !important;
  flex-shrink: 0;
  display: flex !important;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
  margin-top: 0 !important;
}

.listing-title-bar .sort-filter label {
  font-size: 14px;
  color: #555;
  margin: 0;
}

.listing-title-bar .sort-filter select {
  height: 34px;
  border-radius: 4px;
  background: #fff;
  font-size: 14px;
  padding: 0 8px;
  color: #333;
  min-width: 140px;
}

@media (max-width: 767px) {
  .listing-title-bar {
    flex-direction: column;
    gap: 8px;
  }
}
/* ============================= */

/* ===== VIP Kim Cương listing ===== */
.item-product--vip {
  background: #fffdf5;
  overflow: hidden;
}

.vip-media-box {
  position: relative;
}

.vip-label-bar {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 60px 15px 15px;
  background: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0) 100%);
  pointer-events: none;
}

.vip-badge-main {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: #fff;
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  white-space: nowrap;
  text-shadow: 0 1px 2px rgba(0,0,0,.25);
}

.vip-label-meta {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  color: #fff;
  flex-wrap: nowrap;
  overflow: hidden;
  pointer-events: auto;
}

.vip-addr {
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.vip-addr a {
  color: #fff !important;
}

.vip-img-count {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  white-space: nowrap;
  flex-shrink: 0;
}

/* Override the regular 260px/1fr grid for VIP */
.property-listing-main .item-product--vip {
  display: block;
}

/* Ảnh full-width phía trên, text phía dưới */
.vip-inner {
  display: block;
}

.vip-media {
  display: grid;
  grid-template-columns: 2fr 1fr;
  align-items: stretch;
  gap: 2px;
  height: 300px;
  overflow: hidden;
}

/* Khi không có ảnh thumbnail: ảnh chính full width */
.vip-media--no-thumbs {
  grid-template-columns: 1fr;
}

/* Trang chủ: chỉ 1 ảnh đại diện */
.list-product-item .vip-media {
  grid-template-columns: 1fr;
  /* Đồng bộ chiều cao ảnh đại diện với card thường trên trang chủ ở mọi cỡ màn hình */
  height: 300px;
}

.list-product-item .vip-thumbs {
  display: none !important;
}

.vip-main-img {
  display: block;
  position: relative;
  overflow: hidden;
  width: 100%;
  height: 100%;
}

.vip-main-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .35s ease;
}

.vip-main-img:hover img {
  transform: scale(1.04);
}

.vip-play-btn {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0,0,0,.18);
  transition: background .2s;
}

.vip-main-img:hover .vip-play-btn {
  background: rgba(0,0,0,.32);
}

.vip-play-btn svg {
  filter: drop-shadow(0 2px 6px rgba(0,0,0,.4));
  transition: transform .2s;
}

.vip-main-img:hover .vip-play-btn svg {
  transform: scale(1.1);
}

/* Cột phải: 1 ảnh ngang trên cùng + 2 ảnh vuông hàng dưới (kiểu batdongsan.com.vn) */
.vip-thumbs {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  grid-template-rows: repeat(2, 1fr);
  gap: 2px;
  height: 100%;
  overflow: hidden;
}

/* Ảnh đầu tiên: nằm ngang, chiếm hết bề ngang cột phải */
.vip-thumbs .vip-thumb:first-child {
  grid-column: 1 / -1;
}

/* Chỉ có 1 ảnh -> chiếm luôn cả 2 hàng */
.vip-thumbs .vip-thumb:only-child {
  grid-row: 1 / -1;
}

/* Chỉ có 2 ảnh -> ảnh thứ 2 cũng nằm ngang hết hàng dưới */
.vip-thumbs .vip-thumb:first-child:nth-last-child(2) ~ .vip-thumb {
  grid-column: 1 / -1;
}

.vip-thumb {
  display: block;
  overflow: hidden;
  position: relative;
  min-width: 0;
  min-height: 0;
}

.vip-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .35s ease;
}

.vip-thumb:hover img {
  transform: scale(1.06);
}

/* Info panel inherits .info-content-product styles (tiêu đề VIP đồng bộ với card thường) */

.item-product--vip .info-content-product {
  border-left: none;
  background: #fff;
}

/* Tin VIP: tiêu đề tối đa 2 dòng */
.item-product--vip .info-content-product h4 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Chi tiết SP: tiêu đề tối đa 2 dòng (chỉ span tiêu đề, không đụng span giá) */
.title-single-bds h1.title-bds > span{
  display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Tin VIP: mô tả tối đa 2 dòng */
.item-product--vip .info-content-product .decs p {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  margin-bottom: 0;
}

/* Responsive */
@media (max-width: 1100px) {
  .vip-media {
    height: 260px;
  }
}

@media (max-width: 767px) {
  .vip-media {
    height: 220px;
  }
  /* Trước đây ẩn địa chỉ/số ảnh của tin VIP trên mobile -> không đồng nhất với
     tin thường (vẫn hiện). Cho hiện lại để mọi tin đều có địa chỉ + số ảnh. */
  .vip-label-meta {
    display: flex;
  }
  /* Chi tiết SP di động: tiêu đề rộng full (giá đã xuống dưới), vẫn tối đa 2 dòng */
  .title-single-bds h1.title-bds > span {
    width: 100%;
    -webkit-line-clamp: 3;
  }
  /* Chi tiết SP di động: giá + "tỷ" cùng 1 hàng, canh trái */
  .title-single-bds h1.title-bds .price {
    display: flex;
    width: auto;
    justify-content: flex-start;
  }
}
/* ===== end VIP ===== */

/* ===== SEO content block cuối trang ===== */
.property-listing-layout > .seo-content-block {
  grid-column: 1;
  align-self: start;
}

.seo-content-block {
  margin-top: 32px;
  border: 1px solid #ededed;
  border-radius: 8px;
  background: #fff;
  overflow: hidden;
}

.seo-content-inner {
  max-height: 160px;
  overflow: hidden;
  padding: 20px 24px 0;
  transition: max-height .35s ease;
  font-size: 15px;
  line-height: 1.7;
  color: #333;
}

.seo-content-block.is-open .seo-content-inner {
  max-height: 9999px;
}

.seo-content-inner h2,
.seo-content-inner h3 {
  font-size: 16px;
  font-weight: 700;
  margin: 14px 0 6px;
}

.seo-content-inner p {
  margin-bottom: 10px;
}

.seo-content-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  padding: 12px;
  border: none;
  border-top: 1px solid #ededed;
  background: #fafafa;
  color: #c00;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: background .15s;
}

.seo-content-toggle:hover {
  background: #f3f3f3;
}
/* ============================= */
