/* Landing page dự án Blanca City, Bãi Sau, Vũng Tàu.
   Chỉ nạp trên /blanca-city-vung-tau và mọi selector nằm dưới .blanca-page.

   Dựng theo kit 4 trong docs/landing-kit/README.md: dự án vừa có tháp căn hộ
   vừa có nhà phố và biệt thự.

   Tông riêng: xanh ngọc biển + cam hoàng hôn trên nền trắng vôi. Blanca nghĩa
   là trắng, và kiến trúc lấy cảm hứng Địa Trung Hải nên nền để sáng gần như
   trắng, khác nền lạnh ngả xanh dương của Monrei và nền xanh đầm của Retreat
   Island.

   Dấu riêng: bo góc lớn 10 - 26px và gạch chân tiêu đề dạng sóng biển.
*/

.blanca-page {
  --brand: #0e4d5c;
  --brand-2: #14707f;
  --accent: #2e9fae;
  --accent-ink: #237a86;
  --accent-soft: #a8dde3;
  --warm: #e0763c;
  --warm-ink: #b5531d;
  --surface: #f7f9f8;
  --hairline: rgba(14, 77, 92, 0.14);

  width: min(100%, 460px);
  margin-inline: auto;
  padding-bottom: 78px;
  background: var(--surface);
  color: #22383d;
  font-size: 15px;
  line-height: 1.6;
}

.blanca-page ~ .contact-bar {
  width: min(100%, 460px);
}

.blanca-page img {
  display: block;
  width: 100%;
  height: auto;
}

/* Thanh điều hướng */

.blanca-bar {
  position: sticky;
  top: 0;
  z-index: 30;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 16px;
  background: linear-gradient(120deg, var(--brand), var(--brand-2));
  color: var(--white);
}

.blanca-bar__brand {
  display: flex;
  align-items: center;
  gap: 8px;
  color: inherit;
  text-decoration: none;
}

.blanca-bar__brand span {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  /* --brand trên --accent chỉ đạt 2.99:1 */
  background: var(--brand-2);
  color: var(--white);
  font-size: 12px;
  font-weight: 900;
}

.blanca-bar__brand strong {
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.08em;
}

.blanca-bar__nav {
  display: none;
}

.blanca-bar__menu {
  display: grid;
  gap: 4px;
  margin-left: auto;
  padding: 8px;
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.14);
  cursor: pointer;
}

.blanca-bar__menu span {
  display: block;
  width: 18px;
  height: 2px;
  border-radius: 2px;
  background: var(--white);
}

.blanca-menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 12px;
  display: grid;
  gap: 2px;
  min-width: 172px;
  padding: 8px;
  border-radius: 14px;
  background: var(--white);
  box-shadow: 0 20px 44px rgba(9, 52, 62, 0.22);
}

.blanca-menu[hidden] {
  display: none;
}

.blanca-menu a {
  padding: 9px 12px;
  border-radius: 10px;
  color: var(--brand);
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
}

.blanca-menu a:hover,
.blanca-menu a:focus-visible {
  background: var(--surface);
}

.blanca-breadcrumb {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 12px 18px 0;
  color: #647275;
  font-size: 12px;
}

.blanca-breadcrumb a {
  color: #647275;
  text-decoration: none;
}

/* Hero */

/* Ảnh và khối chữ chồng lên nhau bằng grid thay vì position: absolute, để hero
   tự cao theo khối chữ - đoạn lede ở đây dài, đặt tuyệt đối sẽ bị cắt mất dòng
   eyebrow trên cùng. */
.blanca-hero {
  display: grid;
  margin: 12px 14px 0;
  overflow: hidden;
  border-radius: 22px;
  background: var(--brand);
  isolation: isolate;
}

.blanca-hero > img {
  grid-area: 1 / 1;
  height: 100%;
  min-height: 360px;
  object-fit: cover;
  opacity: 0.82;
}

.blanca-hero__copy {
  grid-area: 1 / 1;
  /* Cùng ô lưới với ảnh, phải positioned thì lớp phủ mới chắc chắn vẽ đè lên
     nội dung ảnh chứ không nằm dưới. */
  position: relative;
  align-self: end;
  display: grid;
  gap: 10px;
  padding: 22px 20px 24px;
  /* Khối chữ cao gần bằng cả hero nên lớp phủ phải đậm từ trên xuống, không thể
     để trong suốt ở mép trên như kiểu scrim đáy thường dùng. */
  background: linear-gradient(
    to top,
    rgba(9, 52, 62, 0.92) 38%,
    rgba(9, 52, 62, 0.62) 100%
  );
  color: var(--white);
}

.blanca-eyebrow {
  margin: 0;
  color: var(--accent-soft);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.blanca-hero h1 {
  margin: 0;
  font-size: 42px;
  font-weight: 300;
  line-height: 1;
  letter-spacing: 0.01em;
}

.blanca-hero h1 em {
  display: inline-block;
  color: var(--accent-soft);
  font-style: normal;
  font-weight: 800;
  letter-spacing: 0.02em;
}

.blanca-hero__lede {
  margin: 0;
  max-width: 44ch;
  color: rgba(255, 255, 255, 0.86);
  font-size: 14px;
}

.blanca-hero__lede strong {
  /* --warm trên nền hero #0e4d5c chỉ đạt 3.05:1 */
  color: #ffc9a4;
}

.blanca-hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 4px;
}

.blanca-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 12px 22px;
  border-radius: 10px;
  /* Chữ trắng trên --accent chỉ đạt 3.14:1 */
  background: var(--accent-ink);
  color: #ffffff;
  font-size: 14px;
  font-weight: 800;
  text-decoration: none;
}

.blanca-cta--ghost {
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.5);
  color: var(--white);
}

/* Dải số liệu: một băng gradient thay vì các ô trắng */

.blanca-stats {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  margin: 14px;
  overflow: hidden;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.16);
  background-image: linear-gradient(130deg, var(--brand), var(--accent));
  color: var(--white);
}

.blanca-stats div {
  display: grid;
  gap: 2px;
  padding: 15px 14px;
  background: rgba(9, 52, 62, 0.34);
}

.blanca-stats strong {
  font-size: 24px;
  font-weight: 800;
  line-height: 1;
}

.blanca-stats small {
  margin-left: 4px;
  color: var(--accent-soft);
  font-size: 12px;
  font-weight: 700;
}

.blanca-stats span {
  color: rgba(255, 255, 255, 0.74);
  font-size: 12px;
}

/* Khung section */

.blanca-section {
  padding: 28px 18px;
  scroll-margin-top: 60px;
}

.blanca-section--tint {
  background: var(--white);
}

.blanca-section--dark {
  background: linear-gradient(150deg, var(--brand), #08323c);
  color: rgba(255, 255, 255, 0.84);
}

.blanca-kicker {
  margin: 0 0 6px;
  color: var(--accent-ink);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.blanca-section h2 {
  margin: 0 0 14px;
  padding-bottom: 12px;
  color: var(--brand);
  font-size: 25px;
  font-weight: 800;
  line-height: 1.18;
}

/* Dấu riêng: gạch chân dạng sóng biển, ba nhịp lượn. Hợp với dự án mặt biển
   và đi cùng bo góc lớn của trang. */
.blanca-section h2::after {
  content: "";
  display: block;
  width: 88px;
  height: 8px;
  margin-top: 12px;
  background:
    radial-gradient(circle at 50% 120%, transparent 6px, var(--accent) 6px 8px, transparent 8px)
    0 0 / 30px 8px repeat-x;
}

.blanca-section--dark .blanca-kicker {
  color: var(--accent-soft);
}

.blanca-section--dark h2 {
  color: var(--white);
}

.blanca-subhead {
  margin: 26px 0 12px;
  color: var(--brand);
  font-size: 16px;
  font-weight: 800;
}

.blanca-section--dark .blanca-subhead {
  color: var(--white);
}

.blanca-lede {
  margin: 0 0 16px;
  color: inherit;
}

.blanca-note {
  margin: 12px 0 0;
  color: #647275;
  font-size: 12.5px;
}

.blanca-section--dark .blanca-note {
  color: rgba(255, 255, 255, 0.74);
}

/* Ảnh */

.blanca-figure {
  margin: 0 0 16px;
  overflow: hidden;
  border-radius: 14px;
  background: var(--white);
  box-shadow: 0 12px 30px rgba(9, 52, 62, 0.12);
}

.blanca-figure a {
  display: block;
}

.blanca-figure figcaption {
  padding: 10px 15px 13px;
  color: #647275;
  font-size: 12.5px;
}

.blanca-duo {
  display: grid;
  gap: 12px;
}

/* Bảng thông tin dự án */

.blanca-facts {
  display: grid;
  gap: 1px;
  margin: 0 0 18px;
  overflow: hidden;
  border-radius: 14px;
  background: var(--hairline);
}

.blanca-facts div {
  display: grid;
  grid-template-columns: 104px 1fr;
  gap: 10px;
  padding: 11px 15px;
  background: var(--white);
}

.blanca-facts dt {
  color: #647275;
  font-size: 12.5px;
}

.blanca-facts dd {
  margin: 0;
  color: var(--brand);
  font-size: 13.5px;
  font-weight: 700;
}

/* Khoảng cách theo phút và mốc tiến độ */

.blanca-minutes {
  display: grid;
  gap: 10px;
  margin: 0 0 18px;
  padding: 0;
  list-style: none;
}

.blanca-minutes li {
  display: grid;
  grid-template-columns: 84px 1fr;
  align-items: center;
  gap: 12px;
  padding: 13px 16px;
  border-radius: 14px;
  background: var(--white);
  box-shadow: 0 8px 20px rgba(9, 52, 62, 0.08);
}

.blanca-minutes strong {
  color: var(--warm-ink);
  font-size: 15px;
  font-weight: 800;
}

.blanca-minutes span {
  font-size: 13.5px;
}

/* Danh sách gạch đầu dòng dạng giọt nước */

.blanca-list {
  display: grid;
  gap: 10px;
  margin: 0 0 18px;
  padding: 0;
  list-style: none;
}

.blanca-list li {
  position: relative;
  padding-left: 26px;
  font-size: 14px;
}

.blanca-list li::before {
  content: "";
  position: absolute;
  left: 4px;
  top: 7px;
  width: 9px;
  height: 9px;
  background: var(--accent);
  border-radius: 50% 50% 50% 0;
  transform: rotate(-45deg);
}

/* Thẻ nội dung */

.blanca-cards {
  display: grid;
  gap: 10px;
  margin-bottom: 18px;
}

.blanca-cards article {
  padding: 16px 17px;
  border-radius: 14px;
  background: var(--white);
  box-shadow: 0 8px 22px rgba(9, 52, 62, 0.08);
}

.blanca-section--dark .blanca-cards article {
  background: rgba(255, 255, 255, 0.07);
  box-shadow: none;
}

.blanca-cards h4 {
  margin: 0 0 5px;
  color: var(--brand);
  font-size: 14.5px;
  font-weight: 800;
}

.blanca-section--dark .blanca-cards h4 {
  color: var(--accent-soft);
}

.blanca-cards p {
  margin: 0 0 6px;
  color: #647275;
  font-size: 13.5px;
}

.blanca-cards p:last-child {
  margin-bottom: 0;
}

.blanca-section--dark .blanca-cards p {
  color: rgba(255, 255, 255, 0.78);
}

.blanca-cards p strong {
  color: var(--brand);
}

.blanca-section--dark .blanca-cards p strong {
  color: var(--white);
}

/* Dải ảnh trượt ngang */

.blanca-gallery {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(230px, 0.82fr);
  gap: 12px;
  margin-bottom: 16px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
}

.blanca-gallery::-webkit-scrollbar {
  display: none;
}

.blanca-gallery__item {
  overflow: hidden;
  border-radius: 14px;
  background: var(--white);
  color: inherit;
  scroll-snap-align: start;
  text-decoration: none;
}

.blanca-gallery__item img {
  height: 175px;
  object-fit: cover;
}

.blanca-gallery__item span {
  display: block;
  padding: 10px 13px 13px;
  color: #647275;
  font-size: 12.5px;
}

/* Mặt bằng từng loại căn */

.blanca-plans {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(240px, 0.85fr);
  gap: 12px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
}

.blanca-plans::-webkit-scrollbar {
  display: none;
}

.blanca-plan {
  display: grid;
  align-content: start;
  padding-bottom: 15px;
  overflow: hidden;
  border-radius: 14px;
  background: var(--white);
  box-shadow: 0 8px 22px rgba(9, 52, 62, 0.08);
  scroll-snap-align: start;
}

.blanca-plan img {
  height: 160px;
  object-fit: cover;
  object-position: center top;
}

.blanca-plan h4 {
  margin: 13px 15px 2px;
  color: var(--brand);
  font-size: 14.5px;
  font-weight: 800;
}

.blanca-plan strong {
  margin: 0 15px 6px;
  color: var(--warm-ink);
  font-size: 15px;
  font-weight: 800;
}

.blanca-plan p {
  margin: 0 15px;
  color: #647275;
  font-size: 12.5px;
}

/* Bảng giá và bảng cơ cấu sản phẩm */

.blanca-table-wrap {
  overflow-x: auto;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.07);
}

.blanca-table-wrap--light {
  margin-bottom: 18px;
  background: var(--white);
  box-shadow: 0 12px 30px rgba(9, 52, 62, 0.1);
}

.blanca-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13.5px;
}

.blanca-table caption {
  padding: 13px 15px 0;
  color: #647275;
  font-size: 12.5px;
  text-align: left;
}

.blanca-table th,
.blanca-table td {
  padding: 12px 15px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.14);
  text-align: left;
  vertical-align: top;
}

.blanca-table thead th {
  color: var(--accent-soft);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  white-space: nowrap;
}

.blanca-table tbody th {
  color: var(--white);
  font-weight: 800;
}

.blanca-table tbody td:first-of-type {
  /* --warm trên nền tối, đã tính lớp phủ trắng 7% của khung bảng, chỉ
     đạt 2.62:1 */
  color: #ffc9a4;
  font-weight: 800;
  white-space: nowrap;
}

.blanca-table tbody tr:last-child th,
.blanca-table tbody tr:last-child td {
  border-bottom: 0;
}

.blanca-table--light th,
.blanca-table--light td {
  border-bottom-color: var(--hairline);
}

.blanca-table--light thead th {
  color: #647275;
}

.blanca-table--light tbody th {
  color: var(--brand);
}

.blanca-table--light tbody td:first-of-type {
  color: #22383d;
  font-weight: 600;
}

.blanca-table--light tbody td:last-child {
  color: var(--accent-ink);
  font-weight: 800;
  white-space: nowrap;
}

.blanca-section--dark .blanca-cta {
  margin-top: 16px;
}

/* Chủ đầu tư và đối tác */

.blanca-partners {
  display: grid;
  gap: 10px;
  margin-bottom: 18px;
}

.blanca-partners article {
  display: grid;
  align-content: start;
  gap: 4px;
  padding: 15px 16px;
  border-left: 3px solid var(--accent);
  border-radius: 0 14px 14px 0;
  background: var(--white);
}

.blanca-partners strong {
  color: var(--brand);
  font-size: 14px;
}

.blanca-partners span {
  color: #647275;
  font-size: 12.5px;
  line-height: 1.4;
}

/* Câu hỏi thường gặp */

.blanca-page .seo-faq {
  display: grid;
  gap: 10px;
}

.blanca-page .seo-faq details {
  padding: 4px 17px;
  /* site.css đặt viền vàng chung cho .seo-faq, trang này dùng nền foam nên bỏ. */
  border: 0;
  border-radius: 14px;
  background: var(--surface);
}

.blanca-page .seo-faq summary {
  padding: 13px 0;
  color: var(--brand);
  font-size: 14.5px;
  font-weight: 800;
  cursor: pointer;
  list-style: none;
}

.blanca-page .seo-faq summary::-webkit-details-marker {
  display: none;
}

.blanca-page .seo-faq summary::after {
  content: "+";
  float: right;
  margin-left: 12px;
  color: var(--accent-ink);
  font-size: 18px;
  line-height: 1.1;
}

.blanca-page .seo-faq details[open] summary::after {
  content: "−";
}

.blanca-page .seo-faq p {
  margin: 0 0 15px;
  color: #647275;
  font-size: 13.5px;
}

/* Liên hệ */

.blanca-contact .blanca-cta--ghost {
  border-color: var(--brand);
  color: var(--brand);
}

.blanca-links {
  display: grid;
  gap: 8px;
  margin: 18px 0 0;
  padding: 0;
  list-style: none;
}

.blanca-links a {
  color: var(--brand-2);
  font-size: 14px;
  font-weight: 700;
}

@media (min-width: 760px) {
  .blanca-page {
    width: min(1120px, calc(100% - 40px));
    font-size: 16px;
  }

  .blanca-page ~ .contact-bar {
    width: min(100%, 460px);
  }

  .blanca-bar {
    border-radius: 0 0 18px 18px;
  }

  .blanca-bar__nav {
    display: flex;
    flex-wrap: wrap;
    gap: 18px;
    margin-left: auto;
  }

  .blanca-bar__nav a {
    color: rgba(255, 255, 255, 0.84);
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
  }

  .blanca-bar__nav a:hover {
    color: var(--accent-soft);
  }

  .blanca-bar__menu {
    display: none;
  }

  .blanca-hero {
    margin: 16px 0 0;
    border-radius: 22px;
  }

  .blanca-hero > img {
    min-height: 540px;
  }

  .blanca-hero__copy {
    max-width: 660px;
    padding: 34px 38px 38px;
  }

  .blanca-hero h1 {
    font-size: 66px;
  }

  .blanca-hero__lede {
    font-size: 16px;
  }

  .blanca-stats {
    grid-template-columns: repeat(4, 1fr);
    margin-inline: 0;
  }

  .blanca-section {
    padding: 42px 38px;
    border-radius: 22px;
    scroll-margin-top: 76px;
  }

  .blanca-section h2 {
    font-size: 33px;
  }

  .blanca-cards {
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
  }

  .blanca-duo {
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
  }

  .blanca-facts,
  .blanca-minutes,
  .blanca-partners {
    grid-template-columns: repeat(2, 1fr);
  }

  .blanca-gallery {
    grid-auto-columns: minmax(280px, 0.36fr);
  }

  .blanca-plans {
    grid-auto-columns: minmax(270px, 0.32fr);
  }
}

/* Khối dòng sản phẩm (block product của kit 3).

   Thẻ đơn giản vì chưa có ảnh layout của chủ đầu tư. Khi có ảnh thì thêm khối
   <a data-lightbox><img></a> lên đầu mỗi thẻ theo template. */

.blanca-products {
  display: grid;
  gap: 12px;
}

.blanca-product {
  padding: 16px 16px 18px;
  border: 1px solid var(--hairline);
  border-radius: inherit;
  background: var(--white);
}

.blanca-products {
  border-radius: 0;
}

.blanca-product h4 {
  margin: 0 0 6px;
  color: var(--brand);
  font-size: 16px;
  font-weight: 800;
}

.blanca-product__price {
  margin: 0 0 10px;
  color: var(--warm-ink);
  font-size: 17px;
  font-weight: 800;
}

.blanca-product__specs {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 4px;
}

.blanca-product__specs li {
  position: relative;
  padding-left: 16px;
  font-size: 13.5px;
}

.blanca-product__specs li::before {
  content: "";
  position: absolute;
  left: 2px;
  top: 8px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--accent);
}

@media (min-width: 720px) {
  .blanca-products {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* Hero không ảnh.

   Chưa có bộ ảnh của chủ đầu tư nên hero dùng nền chuyển màu thay cho ảnh phối
   cảnh. Khi có ảnh thì bỏ modifier này và dựng lại hero theo template. */

.blanca-hero--noimage {
  display: block;
  min-height: 0;
  background: radial-gradient(130% 90% at 80% 0%, rgba(224, 118, 60, 0.30), transparent 62%), linear-gradient(160deg, var(--brand-2), var(--brand) 64%);
}

.blanca-hero--noimage .blanca-hero__copy {
  background: none;
}

/* Băng cảnh báo nguồn số liệu, đặt ngay dưới dải số liệu. Xóa khi đã đối chiếu
   được với tài liệu chủ đầu tư. */

.blanca-flag {
  margin: 0 16px 4px;
  padding: 12px 14px;
  border-left: 3px solid var(--accent);
  background: rgba(46, 159, 174, 0.12);
  color: #2b4348;
  font-size: 13px;
  line-height: 1.55;
}

.blanca-flag a {
  /* --warm-ink trên nền xanh ngọc 12% chỉ đạt 4.18:1 */
  color: #9c4718;
  font-weight: 700;
}

.blanca-flag strong {
  color: var(--brand);
}

/* Ảnh bản vẽ trong thẻ dòng sản phẩm. Thẻ có padding nên ảnh phải kéo tràn ra
   sát mép, âm đúng bằng padding của thẻ. */

.blanca-product > a {
  display: block;
  margin: -16px -16px 14px;
  overflow: hidden;
  border-bottom: 1px solid var(--hairline);
}

.blanca-product > a img {
  display: block;
  width: 100%;
  height: auto;
}
