@import url("https://fonts.googleapis.com/css2?family=Marcellus&display=swap");

.summer-panel {
  max-width: none;
  background: linear-gradient(135deg, #fff8eb 0%, #eef8fb 56%, #f8efe0 100%);
  color: #102327;
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(360px, 520px);
  gap: 34px;
  align-items: start;
  padding-inline: max(18px, calc((100vw - 1220px) / 2));
  border-bottom: 1px solid rgba(30, 103, 126, .14);
}

body {
  background: #f6fbfc;
  color: #102327;
}

:root {
  --semi-blond: #b99a6a;
  --semi-blond-soft: #e9dcc7;
  --ink: #102327;
  --ice: #f6fbfc;
}

.site-header {
  position: sticky;
  overflow: hidden;
  isolation: isolate;
  background: #020607 !important;
  border-bottom: 1px solid rgba(255, 255, 255, .12) !important;
  box-shadow: 0 10px 34px rgba(2, 6, 7, .18);
}

.site-header:before {
  display: none;
}

.nav-wrap {
  position: relative;
  z-index: 3;
}

.brand {
  display: grid;
  gap: 3px;
  min-width: 156px;
  text-decoration: none;
  line-height: 1;
  justify-items: center;
}

.brand img {
  display: none;
}

.brand:before {
  content: "dIVINE";
  color: #f3f6f5;
  background:
    linear-gradient(180deg, #ffffff 0%, #eef7f6 24%, #9fb3b8 54%, #ffffff 78%, #d7e3e5 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-size: 34px;
  font-weight: 300;
  letter-spacing: .24em;
  line-height: .86;
  text-shadow: 0 0 22px rgba(226, 232, 232, .16);
  margin-right: -.24em;
}

.brand:after {
  content: "LUXURY VILLA";
  color: #aeb8d8;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .34em;
  line-height: 1;
  text-transform: uppercase;
  margin-right: -.34em;
}

.section,
.section-tight,
.page-hero,
.final-cta {
  color: #102327;
}

.prose,
.feature-grid p,
.cards p {
  color: #496165;
}

.dark-section {
  background: #f6fbfc !important;
  color: #102327;
  border-block: 1px solid rgba(27, 124, 154, .14) !important;
}

.dark-section .section-head h2,
.dark-section h2,
.dark-section h3 {
  color: #102327;
}

.dark-section .cards article,
.feature-grid article {
  background: #fff;
  color: #102327;
  border: 1px solid rgba(27, 124, 154, .16);
  box-shadow: 0 14px 42px rgba(27, 124, 154, .08);
}

.quick-facts {
  background: #e5f4f7 !important;
}

.fact {
  background: #fff !important;
}

.fact strong {
  color: #102327 !important;
}

.fact span {
  color: #587276 !important;
}

.home .eyebrow {
  color: var(--semi-blond);
}

.home .btn-primary {
  background: #1b7187;
  color: #fff;
}

.home .btn-text,
.home .inline-link,
.home .site-footer a {
  color: #1b7187;
}

.home .btn-light {
  background: #efe7dc;
  color: var(--ink);
}

.home .nav-cta {
  border-color: var(--semi-blond) !important;
  color: var(--semi-blond) !important;
}

.home .site-menu a.active,
.home .site-menu a:hover {
  color: var(--semi-blond) !important;
}

body.menu-open {
  overflow: hidden;
}

.nav-toggle {
  position: relative;
  border-color: rgba(247, 241, 232, .26) !important;
  background: rgba(255, 255, 255, .04) !important;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .04);
}

.nav-toggle span {
  width: 20px !important;
  height: 1px !important;
  margin: 5px auto !important;
  background: #f7f1e8 !important;
  transition: transform .22s ease, opacity .22s ease;
}

.nav-toggle.is-open span:nth-child(1) {
  transform: translateY(6px) rotate(42deg);
}

.nav-toggle.is-open span:nth-child(2) {
  opacity: 0;
}

.nav-toggle.is-open span:nth-child(3) {
  transform: translateY(-6px) rotate(-42deg);
}

.theme-toggle {
  min-width: 78px;
  min-height: 38px;
  border: 1px solid rgba(214, 168, 90, .34);
  border-radius: 999px;
  padding: 5px 10px;
  display: inline-flex;
  gap: 8px;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, .04);
  color: #d6a85a;
  font: inherit;
  font-size: 12px;
  font-weight: 850;
  cursor: pointer;
}

.theme-toggle i {
  width: 10px;
  height: 10px;
  border-radius: 999px;
  background: currentColor;
  box-shadow: 0 0 14px rgba(214, 168, 90, .5);
}

@media (max-width: 900px) {
  .nav-wrap {
    position: relative;
  }

  .nav-toggle {
    display: grid !important;
    place-items: center;
    flex: 0 0 auto;
  }

  .site-menu {
    position: fixed !important;
    inset: 74px 14px auto !important;
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 0 !important;
    max-height: calc(100svh - 92px);
    overflow: auto;
    border: 1px solid rgba(214, 168, 90, .22);
    border-radius: 8px;
    padding: 12px !important;
    background: rgba(3, 9, 11, .97) !important;
    box-shadow: 0 28px 80px rgba(0, 0, 0, .38);
    opacity: 0;
    pointer-events: none;
    transform: translateY(-8px);
    transition: opacity .2s ease, transform .2s ease;
  }

  .site-menu.is-open {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
  }

  .site-menu a {
    min-height: 48px;
    display: flex !important;
    align-items: center;
    border-bottom: 1px solid rgba(247, 241, 232, .08);
    padding: 0 8px;
    font-size: 15px !important;
  }

  .site-menu .nav-cta {
    justify-content: center;
    margin-top: 10px;
    border-radius: 999px;
  }

  .theme-toggle {
    margin-left: auto;
    min-width: 42px;
    padding: 0;
  }

  .theme-toggle span {
    display: none;
  }
}

body.theme-night {
  background: #03090b;
}

body.theme-night .home-live-widget,
body.theme-night .live-atlas-section,
body.theme-night .all-villa-options,
body.theme-night .availability-page-builder,
body.theme-night .availability-request-section,
body.theme-night .section:not(.dark-section):not(.hero):not(.page-hero) {
  background:
    radial-gradient(circle at 90% 10%, rgba(31, 129, 150, .16), transparent 28%),
    linear-gradient(135deg, #061014 0%, #0a171b 58%, #12100d 100%);
  color: #f7f1e8;
}

body.theme-night .home-live-widget .availability-copy h2,
body.theme-night .home-live-widget .availability-copy p,
body.theme-night .villa-options-head h2,
body.theme-night .villa-options-head > p {
  color: #f7f1e8;
}

body.theme-night .intelligence-card,
body.theme-night .home-request-form,
body.theme-night .month-card,
body.theme-night .villa-listing-card {
  border-color: rgba(214, 168, 90, .18);
  background:
    linear-gradient(145deg, rgba(13, 27, 33, .96), rgba(7, 17, 21, .96)),
    linear-gradient(180deg, rgba(214, 168, 90, .06), transparent 54%);
  box-shadow: 0 24px 62px rgba(0, 0, 0, .24);
}

body.theme-night .month-card-title strong,
body.theme-night .month-stats strong,
body.theme-night .villa-listing-title h3,
body.theme-night .month-choice strong {
  color: #f7f1e8;
}

body.theme-night .month-stats span,
body.theme-night .month-stats small,
body.theme-night .month-choice small,
body.theme-night .villa-listing-body > p {
  color: #b9c8c9;
}

.home .hero .eyebrow {
  color: #d5c0a0;
}

.home .booking-strip .eyebrow,
.home .availability-copy .eyebrow {
  color: #1b7187;
}

.home .section-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
}

.home .section-head h2 {
  max-width: 620px;
  font-size: clamp(30px, 3.8vw, 56px);
  color: var(--ink);
}

.home .dark-section {
  padding-top: 72px;
  padding-bottom: 72px;
}

.home-gallery-mosaic {
  grid-template-columns: 2fr 1fr 1fr;
  grid-template-rows: repeat(2, minmax(190px, 1fr));
  align-items: stretch;
}

.home-gallery-mosaic a {
  min-height: 0;
}

.home-gallery-mosaic .gallery-large {
  grid-row: 1 / span 2;
}

.home-gallery-mosaic img {
  aspect-ratio: auto;
  min-height: 100%;
}

.home-gallery-mosaic .gallery-large img {
  aspect-ratio: auto;
}

.summer-panel .eyebrow,
.villa-booking-layout .eyebrow,
.warm-strip .eyebrow {
  color: #1b7c9a;
}

.availability-copy h2,
.villa-booking-copy h2 {
  font-size: clamp(34px, 4.4vw, 64px);
  line-height: 1.02;
  margin: 0 0 18px;
  color: #0b2226;
}

.availability-copy p,
.villa-booking-copy p {
  font-size: 18px;
  color: #496165;
  max-width: 680px;
}

.availability-legend {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  margin-top: 22px;
  color: #486166;
  font-weight: 750;
}

.availability-legend span {
  display: inline-flex;
  gap: 7px;
  align-items: center;
}

.dot {
  width: 10px;
  height: 10px;
  border-radius: 999px;
  display: inline-block;
}

.dot.available { background: #77bfa3; }
.dot.blocked { background: #d76d6d; }
.dot.selected { background: #1b7c9a; }

.stay-card {
  position: relative;
  background: rgba(255, 255, 255, .92);
  color: #102327;
  border: 1px solid rgba(16, 35, 39, .12);
  border-radius: 18px;
  padding: 18px;
  box-shadow: 0 24px 70px rgba(14, 52, 66, .18);
  backdrop-filter: blur(18px);
}

.stay-card-head {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  align-items: start;
  margin-bottom: 15px;
}

.stay-card-head span {
  color: #6c7f82;
  font-size: 13px;
}

.stay-card-head strong {
  font-size: 22px;
  line-height: 1.1;
  text-align: right;
}

.stay-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-bottom: 14px;
}

.stay-fields label {
  display: grid;
  gap: 7px;
  border: 1px solid #dfe8e8;
  border-radius: 12px;
  padding: 10px 11px;
  color: #657679;
  text-transform: uppercase;
  letter-spacing: .08em;
  font-size: 11px;
  font-weight: 850;
  background: #fff;
}

.stay-fields .guests-field { grid-column: 1 / -1; }

.stay-fields input {
  border: 0;
  background: transparent;
  color: #102327;
  font: inherit;
  font-weight: 750;
  min-width: 0;
  padding: 0;
}

.stay-fields input:focus { outline: 0; }

.mini-calendar {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  margin-top: 12px;
}

.request-calendar { grid-template-columns: 1fr; }
.calendar-month { min-width: 0; }

.calendar-month h3 {
  font-size: 16px;
  margin: 0 0 10px;
  color: #102327;
}

.calendar-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 5px;
}

.day-label,
.calendar-blank,
.calendar-day {
  min-width: 0;
  aspect-ratio: 1 / 1;
  display: grid;
  place-items: center;
  border-radius: 999px;
  font-size: 12px;
}

.day-label {
  aspect-ratio: auto;
  color: #779094;
  font-weight: 850;
}

.calendar-day {
  border: 0;
  background: #f1f7f5;
  color: #163136;
  cursor: pointer;
  font-weight: 800;
}

.calendar-day:hover:not(:disabled) {
  background: #d8f0ee;
  color: #0c252a;
}

.calendar-day.is-blocked {
  background: #f8dada;
  color: #9b4949;
  text-decoration: line-through;
  cursor: not-allowed;
}

.calendar-day.is-selected {
  background: #1b7c9a;
  color: #fff;
  box-shadow: 0 8px 20px rgba(27, 124, 154, .28);
}

.calendar-day.is-in-range {
  background: #cdece6;
  color: #0d4b58;
}

.calendar-status {
  min-height: 21px;
  margin: 12px 0;
  color: #527073;
  font-size: 13px;
}

.villa-booking-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(360px, 520px);
  gap: 38px;
  align-items: start;
}

.villa-booking-copy {
  position: sticky;
  top: 104px;
}

.villa-booking-layout .stay-card {
  background: #fff;
  color: #102327;
}

.warm-strip {
  background: #eaf7f7;
  color: #102327;
}

.warm-strip p { color: #4f6568; }

.live-atlas-section {
  max-width: none;
  background:
    radial-gradient(circle at top left, rgba(71, 182, 202, .16), transparent 34%),
    linear-gradient(180deg, #f6fbfc 0%, #eef8fa 100%);
  padding-inline: max(18px, calc((100vw - 1220px) / 2));
}

.atlas-head {
  max-width: 1220px;
  margin: 0 auto 28px;
  display: grid;
  justify-items: center;
  gap: 14px;
  text-align: center;
}

.atlas-head h2 {
  max-width: 760px;
  color: #102327;
  margin: 0 auto;
  font-size: clamp(34px, 4.2vw, 60px);
  line-height: 1.02;
}

.atlas-head > p {
  color: #527073;
  margin: 0;
}

.live-month-atlas {
  max-width: 1220px;
  margin: auto;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
}

.month-card {
  position: relative;
  min-height: 246px;
  border: 1px solid rgba(23, 111, 134, .12);
  border-radius: 8px;
  padding: 20px;
  background:
    linear-gradient(145deg, rgba(255, 255, 255, .98), rgba(248, 252, 252, .92)),
    linear-gradient(180deg, rgba(214, 168, 90, .08), transparent 54%);
  box-shadow: 0 22px 60px rgba(18, 58, 68, .075);
  overflow: hidden;
}

.month-card-title {
  position: relative;
  display: grid;
  justify-items: center;
  gap: 7px;
  text-align: center;
}

.month-card-title span {
  color: #80979a;
  font-size: 11px;
  font-weight: 850;
  letter-spacing: .16em;
}

.month-card-title strong {
  color: var(--ink);
  font-family: var(--title-font);
  font-size: 42px;
  font-weight: 400;
  letter-spacing: 0;
  text-transform: uppercase;
  line-height: .92;
}

.month-card-title em {
  border: 1px solid rgba(127, 99, 60, .28);
  border-radius: 999px;
  padding: 7px 10px;
  background: #fffaf2;
  color: #7f633c;
  font-size: 10px;
  font-style: normal;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.month-meter {
  height: 2px;
  border-radius: 999px;
  background: rgba(127, 99, 60, .18);
  overflow: hidden;
  margin: 24px 0 18px;
}

.month-meter i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #7f633c, #1f8196);
}

.month-stats {
  display: block;
}

.month-stats span {
  display: grid;
  gap: 5px;
  color: #61787c;
  font-size: 13px;
  line-height: 1.35;
}

.month-stats strong {
  display: block;
  color: #102327;
  font-size: 16px;
  font-weight: 850;
  line-height: 1.25;
}

.month-stats small {
  color: #789095;
  font-size: 11px;
  font-weight: 760;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.month-blocks {
  display: grid;
  gap: 8px;
  min-height: 28px;
  margin: 18px 0;
}

.month-blocks span,
.month-blocks button {
  width: 100%;
  border-radius: 8px;
  border: 1px solid rgba(58, 151, 121, .18);
  padding: 9px 11px;
  background: rgba(237, 249, 244, .74);
  color: #24684f;
  font: inherit;
  font-size: 12px;
  font-weight: 820;
  text-align: left;
}

.month-blocks button {
  cursor: pointer;
}

.month-blocks button:hover {
  border-color: rgba(58, 151, 121, .42);
  background: rgba(221, 243, 233, .92);
  color: #175b45;
}

.month-action {
  width: 100%;
  min-height: 46px;
  border: 1px solid rgba(7, 17, 21, .22);
  border-radius: 8px;
  background: #071115;
  color: #f7f1e8;
  font: inherit;
  font-size: 13px;
  font-weight: 850;
  letter-spacing: .02em;
  cursor: pointer;
  transition: transform .18s ease, background .18s ease, border-color .18s ease;
}

.month-action:hover:not(:disabled) {
  transform: translateY(-1px);
  background: #102327;
  border-color: rgba(127, 99, 60, .42);
}

.month-action:disabled {
  border-color: rgba(23, 111, 134, .1);
  background: #eef4f4;
  color: #8aa0a4;
  cursor: not-allowed;
}

.month-card.is-full .month-meter i {
  background: #d2b3ac;
}

.month-card.is-full .month-blocks span {
  border-color: rgba(139, 70, 60, .14);
  background: #f8e6df;
  color: #8b463c;
}

.month-card.is-wide-open {
  border-color: rgba(127, 99, 60, .22);
}

.month-card.is-wide-open .month-blocks span {
  background: #e3f7ef;
  color: #28775d;
}
.side-note .mini-calendar { margin-bottom: 4px; }
.side-note .calendar-month h3 { color: #f7f1e8; }
.side-note .day-label { color: #9db1b3; }
.side-note .calendar-day { background: rgba(255, 255, 255, .08); color: #f7f1e8; }
.side-note .calendar-day.is-blocked { background: rgba(215, 109, 109, .2); color: #ffaaaa; }
.side-note .calendar-day.is-selected { background: #d6a85a; color: #071115; }
.side-note .calendar-day.is-in-range { background: rgba(214, 168, 90, .22); color: #f7f1e8; }
.side-note .calendar-status { color: #d8d2c8; }

@media (max-width: 900px) {
  .summer-panel,
  .villa-booking-layout {
    grid-template-columns: 1fr;
  }

  .villa-booking-copy { position: static; }
  .mini-calendar { grid-template-columns: 1fr; }
  .stay-card { border-radius: 16px; }
  .stay-card-head strong { text-align: left; }
  .request-calendar { grid-template-columns: 1fr; }
  .atlas-head { display: grid; }
  .live-month-atlas { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 560px) {
  .summer-panel {
    padding-top: 50px;
    padding-bottom: 50px;
  }

  .stay-fields { grid-template-columns: 1fr; }
  .stay-fields .guests-field { grid-column: auto; }
  .calendar-grid { gap: 4px; }
  .calendar-day,
  .day-label,
  .calendar-blank { font-size: 11px; }
  .stay-card { padding: 14px; }
  .availability-legend { font-size: 13px; }
  .live-month-atlas { grid-template-columns: 1fr; }
  .month-card { min-height: auto; }
}

/* Contrast and typography pass */
:root {
  --semi-blond: #7f633c;
  --semi-blond-soft: #d8c7ab;
  --ink: #0b1f23;
  --muted-ink: #38545a;
  --blue-accent: #176f86;
  --title-font: "Marcellus", Georgia, "Times New Roman", serif;
}

body {
  color: var(--ink);
}

.hero h1,
.page-hero h1,
.section h2,
.final-cta h2,
.availability-copy h2,
.villa-booking-copy h2,
.atlas-head h2,
.footer-brand h2,
.rules-card h2,
.feature-grid h2,
.cards h2,
.section-head h2 {
  font-family: var(--title-font);
  font-weight: 400;
}

.eyebrow {
  color: var(--semi-blond) !important;
}

.hero h1 {
  color: #f8fbfb;
  text-shadow: 0 4px 28px rgba(0, 0, 0, .42);
}

.hero p:not(.eyebrow) {
  color: #f1f5f4;
  text-shadow: 0 2px 18px rgba(0, 0, 0, .34);
}

.hero:after {
  background:
    linear-gradient(90deg, rgba(2, 6, 7, .78), rgba(2, 6, 7, .44) 48%, rgba(2, 6, 7, .16)),
    linear-gradient(0deg, rgba(2, 6, 7, .76), transparent 48%) !important;
}

.page-hero h1 {
  color: var(--ink);
  font-size: clamp(42px, 6vw, 78px);
  line-height: 1.02;
  max-width: 980px;
}

.page-hero p:not(.eyebrow),
.availability-page .page-hero p,
.contact-page .page-hero p {
  color: var(--muted-ink) !important;
  font-weight: 560;
}

.availability-page .trust-panel,
.contact-page .trust-panel {
  background: #fff;
  border-color: rgba(143, 114, 70, .28);
}

.trust-panel span {
  color: var(--semi-blond);
  font-weight: 780;
}

.trust-panel strong,
.side-note h2 {
  color: var(--ink);
}

.trust-panel p,
.side-note,
.side-note p {
  color: var(--muted-ink) !important;
}

.request-form label {
  color: var(--semi-blond) !important;
}

.request-form input,
.request-form textarea {
  background: #fff !important;
  color: var(--ink) !important;
  border-color: rgba(56, 84, 90, .22) !important;
}

.request-form input::placeholder,
.request-form textarea::placeholder {
  color: #6f858a;
}

.btn-primary {
  background: var(--blue-accent) !important;
  color: #fff !important;
}

.btn-ghost {
  color: #f7fbfb !important;
  border-color: rgba(247, 251, 251, .58) !important;
  background: rgba(2, 6, 7, .18) !important;
}

.final-cta .btn-ghost,
.booking-strip .btn-ghost,
.page-hero:not(.hero) .btn-ghost {
  color: var(--ink) !important;
  border-color: rgba(23, 111, 134, .38) !important;
  background: rgba(255, 255, 255, .72) !important;
}

.final-cta .btn-ghost:hover,
.booking-strip .btn-ghost:hover,
.page-hero:not(.hero) .btn-ghost:hover {
  background: #fff !important;
  border-color: var(--blue-accent) !important;
}

.btn-text,
.inline-link {
  color: var(--blue-accent) !important;
}

.nav-cta {
  border-color: var(--semi-blond) !important;
  color: var(--semi-blond) !important;
}

.site-menu a.active,
.site-menu a:hover {
  color: var(--semi-blond) !important;
}

.side-note {
  background: #fff;
  border-color: rgba(56, 84, 90, .16);
  box-shadow: 0 16px 42px rgba(18, 58, 68, .08);
}

.side-note a {
  color: var(--blue-accent) !important;
  font-weight: 760;
}

.side-note .calendar-month h3 {
  color: var(--ink);
}

.side-note .day-label {
  color: #637b80;
}

.side-note .calendar-day {
  background: #f1f7f5;
  color: var(--ink);
}

.side-note .calendar-day.is-blocked {
  background: #f7dedb;
  color: #8e403c;
}

.side-note .calendar-day.is-selected {
  background: var(--blue-accent);
  color: #fff;
}

.side-note .calendar-day.is-in-range {
  background: #d6ece8;
  color: #114a55;
}

.side-note .calendar-status {
  color: var(--muted-ink);
}

.site-footer {
  background: #020607 !important;
  color: #eaf0ef !important;
  border-top-color: rgba(255, 255, 255, .14) !important;
}

.site-footer .eyebrow {
  color: #c4a77a !important;
}

.site-footer h2 {
  color: #f4f7f6 !important;
}

.site-footer p {
  color: #b8c8c9 !important;
}

.site-footer a {
  color: #6ec4d7 !important;
}

.site-footer a:hover {
  color: #f4f7f6 !important;
}

.premium-footer {
  position: relative;
  max-width: none;
  overflow: hidden;
  padding: 0 !important;
  background:
    linear-gradient(135deg, rgba(2, 6, 7, .98), rgba(8, 23, 27, .98) 58%, rgba(24, 40, 39, .98)),
    linear-gradient(90deg, rgba(127, 99, 60, .18), transparent 44%) !important;
}

.premium-footer:before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(255, 255, 255, .08) 0 1px, transparent 1px 100%),
    linear-gradient(0deg, rgba(255, 255, 255, .06) 0 1px, transparent 1px 100%);
  background-size: 88px 88px;
  mask-image: linear-gradient(90deg, transparent, #000 18%, #000 70%, transparent);
  opacity: .18;
  pointer-events: none;
}

.footer-shell,
.footer-bottom {
  position: relative;
  max-width: 1220px;
  margin: auto;
  padding-inline: 18px;
}

.footer-shell {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(280px, .72fr) minmax(300px, .9fr);
  gap: 34px;
  padding-top: 70px;
  padding-bottom: 44px;
  align-items: start;
}

.footer-brand h2 {
  margin: 0;
  max-width: 620px;
  color: #f6fbfc;
  font-size: clamp(42px, 6vw, 76px);
  line-height: .94;
  letter-spacing: 0;
}

.footer-brand p:not(.eyebrow) {
  max-width: 560px;
  color: #c4d2d2 !important;
  font-size: 18px;
}

.footer-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 24px;
}

.footer-ghost {
  color: #f6fbfc !important;
  border-color: rgba(196, 167, 122, .58) !important;
  background: rgba(255, 255, 255, .06) !important;
}

.footer-panel {
  width: 100%;
  max-width: 390px;
  border: 1px solid rgba(196, 167, 122, .28);
  border-radius: 18px;
  background: rgba(255, 255, 255, .06);
  box-shadow: 0 24px 70px rgba(0, 0, 0, .22);
  padding: 22px;
  justify-self: stretch;
}

.footer-panel span,
.footer-links h2 {
  display: block;
  margin: 0 0 14px;
  color: #c4a77a !important;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .16em;
  text-transform: uppercase;
}

.footer-panel dl {
  display: grid;
  gap: 10px;
  margin: 0;
}

.footer-panel div {
  display: grid;
  grid-template-columns: minmax(72px, .74fr) minmax(0, 1fr);
  gap: 14px;
  align-items: baseline;
  border-bottom: 1px solid rgba(255, 255, 255, .1);
  padding-bottom: 10px;
}

.footer-panel div:last-child {
  border-bottom: 0;
  padding-bottom: 0;
}

.footer-panel dt {
  color: #91a4a5;
  font-size: 11px;
  font-weight: 850;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.footer-panel dd {
  margin: 0;
  color: #f6fbfc;
  font-size: 15px;
  font-weight: 850;
  line-height: 1.25;
  text-align: right;
}

.footer-links {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 26px;
}

.footer-links a {
  display: block;
  color: #d9e4e3 !important;
  margin: 0 0 11px !important;
  text-decoration: none;
  font-weight: 720;
}

.footer-links a:hover {
  color: #ffffff !important;
}

.footer-bottom {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  border-top: 1px solid rgba(255, 255, 255, .14);
  padding-top: 18px;
  padding-bottom: 22px;
  color: #93a8a9;
  font-size: 13px;
}

.footer-bottom a {
  color: #c4a77a !important;
  text-decoration: none;
  font-weight: 800;
}

.home-live-widget {
  background:
    radial-gradient(circle at 92% 12%, rgba(214, 168, 90, .18), transparent 28%),
    linear-gradient(135deg, #f6fbfc 0%, #eef9fa 52%, #fff8ec 100%);
  grid-template-columns: minmax(0, 1fr);
  gap: 30px;
}

.home-live-widget .availability-copy {
  max-width: 820px;
}

.home-live-widget .availability-copy h2 {
  font-size: clamp(34px, 4vw, 58px);
}

.month-request-widget {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 18px;
  align-items: stretch;
}

.month-intelligence,
.home-request-form {
  min-width: 0;
}

.stay-card .month-intelligence {
  margin: 4px 0;
}

.stay-card .intelligence-card {
  height: auto;
  border: 0;
  border-radius: 0;
  padding: 4px 0;
  background: transparent;
  box-shadow: none;
}

.intelligence-card,
.home-request-form {
  height: 100%;
  border: 1px solid rgba(23, 111, 134, .18);
  border-radius: 18px;
  background: rgba(255, 255, 255, .9);
  box-shadow: 0 20px 55px rgba(18, 58, 68, .11);
}

.home-live-widget .intelligence-card,
.home-request-form {
  height: auto;
}

.home-live-widget .intelligence-card {
  padding: 24px;
}

.intelligence-card {
  padding: 18px;
  display: grid;
  gap: 15px;
}

.intelligence-head {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 5px 10px;
  align-items: center;
}

.intelligence-head span {
  color: #789297;
  font-size: 12px;
  font-weight: 850;
  letter-spacing: .16em;
}

.intelligence-head strong {
  color: var(--ink);
  font-size: 36px;
  line-height: .95;
  text-transform: uppercase;
}

.intelligence-head em {
  grid-row: 1;
  grid-column: 2;
  align-self: start;
  justify-self: end;
  border-radius: 999px;
  padding: 7px 10px;
  background: #e3f6ee;
  color: #26775c;
  font-size: 11px;
  font-style: normal;
  font-weight: 900;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.month-controls {
  grid-column: 2;
  grid-row: 2;
  display: flex;
  gap: 5px;
  align-self: end;
  justify-self: end;
}

.month-controls button {
  width: 30px;
  height: 30px;
  border: 1px solid rgba(23, 111, 134, .18);
  border-radius: 999px;
  background: #fff;
  color: var(--ink);
  font: inherit;
  font-size: 22px;
  font-weight: 900;
  line-height: 1;
  cursor: pointer;
}

.month-controls button:hover:not(:disabled) {
  border-color: var(--blue-accent);
  background: #eef9fa;
}

.month-controls button:disabled {
  opacity: .35;
  cursor: not-allowed;
}

.month-controls .month-back-button {
  width: auto;
  min-width: 0;
  padding: 0 10px;
  font-size: 11px;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.month-picker-card {
  align-content: start;
}

.month-picker-head strong {
  font-size: 30px;
}

.month-picker-copy {
  margin: 0;
  color: #5c767b;
  font-size: 13px;
  line-height: 1.5;
}

.month-year-tabs {
  display: inline-grid;
  grid-template-columns: repeat(2, minmax(86px, 1fr));
  gap: 4px;
  width: fit-content;
  border: 1px solid rgba(23, 111, 134, .16);
  border-radius: 999px;
  padding: 4px;
  background: rgba(255, 255, 255, .72);
}

.month-year-tabs button {
  min-height: 34px;
  border: 0;
  border-radius: 999px;
  padding: 7px 14px;
  background: transparent;
  color: #557176;
  font: inherit;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .08em;
  cursor: pointer;
}

.month-year-tabs button.is-active {
  background: #071115;
  color: #f7f1e8;
}

.month-picker-years {
  display: grid;
  gap: 16px;
}

.month-year-group {
  display: grid;
  gap: 8px;
}

.month-year-group h3 {
  margin: 0;
  color: var(--semi-blond);
  font-family: inherit;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .12em;
}

.month-choice-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.month-choice {
  min-width: 0;
  min-height: 88px;
  border: 1px solid rgba(23, 111, 134, .14);
  border-radius: 8px;
  padding: 13px 8px;
  background: #f0f6f7;
  color: #70888c;
  font: inherit;
  cursor: pointer;
}

.month-choice strong,
.month-choice span,
.month-choice small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
}

.month-choice strong {
  color: var(--ink);
  font-size: 14px;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.month-choice span {
  margin-top: 7px;
  color: #a14f48;
  font-family: var(--title-font);
  font-size: 13px;
  font-weight: 700;
  white-space: nowrap;
}

.month-choice small {
  margin-top: 3px;
  color: #789095;
  font-size: 10px;
  font-weight: 750;
  white-space: nowrap;
}

.month-choice.has-availability {
  border-color: rgba(58, 151, 121, .28);
  background: #eef7f5;
}

.month-choice.has-availability span {
  color: var(--semi-blond);
}

.month-choice:hover {
  border-color: var(--blue-accent);
  background: #e9f5f6;
}

.intelligence-meta {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.intelligence-meta div {
  border-radius: 14px;
  background: #f2f8f8;
  padding: 12px;
}

.intelligence-meta strong {
  display: block;
  color: var(--ink);
  font-size: 30px;
  line-height: 1;
}

.intelligence-meta span,
.available-windows > span {
  color: #5c767b;
  font-size: 11px;
  font-weight: 850;
  letter-spacing: .11em;
  text-transform: uppercase;
}

.available-windows {
  display: grid;
  gap: 8px;
}

.available-window-list {
  display: grid;
  gap: 6px;
  color: #5c767b;
  font-size: 13px;
  font-weight: 760;
}

.available-window-list button {
  min-width: 0;
  min-height: 40px;
  border: 1px solid rgba(58, 151, 121, .24);
  border-radius: 10px;
  padding: 8px 11px;
  background: #edf9f4;
  color: #24684f;
  font: inherit;
  font-size: 12px;
  font-weight: 850;
  text-align: left;
  cursor: pointer;
}

.available-window-list button:hover {
  border-color: #3a9779;
  background: #ddf3e9;
}

.available-window-list em {
  border-radius: 10px;
  padding: 10px 11px;
  background: #f8e6df;
  color: #8b463c;
  font-size: 12px;
  font-style: normal;
  font-weight: 800;
}

.home-request-form {
  padding: 24px;
  align-content: start;
  scroll-margin-top: 104px;
}

.home-request-form .btn-ghost {
  border: 1px solid rgba(23, 111, 134, .2);
  background: #fff;
  color: var(--ink);
}

.compact-form-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.home-request-form .compact-form-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.availability-stay-step {
  display: grid;
  grid-template-columns: minmax(180px, .5fr) minmax(560px, 1.55fr) minmax(210px, .65fr);
  gap: 18px;
  align-items: end;
  border: 1px solid rgba(23, 111, 134, .18);
  border-radius: 12px;
  padding: 20px;
  background: rgba(255, 255, 255, .94);
  box-shadow: 0 16px 42px rgba(18, 58, 68, .09);
}

.availability-stay-step[hidden],
.home-request-form[hidden] {
  display: none;
}

.availability-page-builder {
  padding-top: 0;
  padding-bottom: 0;
}

.availability-page-builder:has(.availability-stay-step:not([hidden])) {
  padding-top: 28px;
  padding-bottom: 28px;
}

.all-villa-options {
  padding-top: 34px;
  padding-bottom: 68px;
}

.villa-options-head {
  display: grid;
  justify-items: center;
  gap: 12px;
  text-align: center;
  margin-bottom: 24px;
}

.villa-options-head h2 {
  max-width: 920px;
  margin: 0 auto;
  color: var(--ink);
  font-family: var(--title-font);
  font-size: clamp(38px, 5vw, 72px);
  font-weight: 400;
  line-height: .98;
}

.villa-options-head > p {
  max-width: 620px;
  margin: 0 auto;
  color: #526c70;
  font-size: 16px;
  font-weight: 650;
  line-height: 1.55;
}

.villa-listing-grid {
  display: grid;
  gap: 18px;
}

.villa-listing-card {
  display: grid;
  grid-template-columns: minmax(260px, .42fr) minmax(0, 1fr);
  overflow: hidden;
  border: 1px solid rgba(23, 111, 134, .16);
  border-radius: 16px;
  background: rgba(255, 255, 255, .94);
  box-shadow: 0 18px 54px rgba(18, 58, 68, .09);
}

.villa-listing-card.is-selected {
  border-color: rgba(31, 129, 150, .52);
  box-shadow: 0 22px 64px rgba(31, 129, 150, .16);
}

.villa-listing-media {
  position: relative;
  min-height: 280px;
  background: #dce8e9;
}

.villa-listing-media img {
  width: 100%;
  height: 100%;
  min-height: 280px;
  object-fit: cover;
}

.villa-listing-media span {
  position: absolute;
  left: 16px;
  top: 16px;
  border-radius: 999px;
  padding: 8px 11px;
  background: rgba(7, 17, 21, .82);
  color: #f6efe4;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.villa-listing-body {
  display: grid;
  gap: 16px;
  align-content: start;
  padding: clamp(20px, 4vw, 34px);
}

.villa-listing-title {
  display: grid;
  justify-items: center;
  gap: 10px;
  text-align: center;
}

.villa-listing-title h3 {
  margin: 0;
  color: var(--ink);
  font-family: var(--title-font);
  font-size: clamp(30px, 4vw, 50px);
  font-weight: 400;
  line-height: 1;
}

.villa-listing-title em {
  border-radius: 999px;
  padding: 9px 11px;
  background: #e7f6f1;
  color: #28775d;
  font-size: 10px;
  font-style: normal;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.villa-listing-body > p {
  max-width: 760px;
  margin: 0 auto;
  text-align: center;
  color: #526c70;
  font-size: 16px;
  font-weight: 650;
  line-height: 1.55;
}

.villa-listing-facts {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.villa-listing-facts span,
.villa-window-buttons span {
  border: 1px solid rgba(23, 111, 134, .16);
  border-radius: 999px;
  padding: 8px 10px;
  color: #294b50;
  font-size: 11px;
  font-weight: 850;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.villa-fit-note {
  color: #7f633c !important;
}

.villa-window-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.villa-window-buttons button {
  min-height: 38px;
  border: 1px solid rgba(58, 151, 121, .25);
  border-radius: 999px;
  padding: 8px 12px;
  background: #edf9f4;
  color: #24684f;
  font: inherit;
  font-size: 12px;
  font-weight: 850;
  cursor: pointer;
}

.villa-window-buttons button:hover {
  border-color: #3a9779;
  background: #ddf3e9;
}

.villa-listing-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  padding-top: 2px;
}

.villa-listing-actions .btn {
  min-width: 180px;
}

.villa-listing-actions .btn-ghost,
.map-actions .btn-ghost,
.location-actions .btn-ghost {
  background: #ffffff !important;
  border-color: rgba(23, 111, 134, .38) !important;
  color: #102327 !important;
}

.villa-listing-actions .btn-ghost:hover,
.map-actions .btn-ghost:hover,
.location-actions .btn-ghost:hover {
  background: rgba(23, 111, 134, .08) !important;
  border-color: rgba(23, 111, 134, .62) !important;
  color: #0f5d6d !important;
}

.availability-request-section[hidden] {
  display: none;
}

.stay-step-copy .eyebrow {
  margin-bottom: 7px;
}

.stay-step-copy h3,
.request-form-head h3 {
  margin: 0;
  color: var(--ink);
  font-family: var(--title-font);
  font-size: 24px;
  line-height: 1.15;
}

.stay-step-fields {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.stay-step-fields label {
  display: grid;
  gap: 6px;
  color: #5c767b;
  font-size: 11px;
  font-weight: 850;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.stay-step-fields input,
.stay-step-fields select {
  width: 100%;
  min-width: 0;
  min-height: 46px;
  border: 1px solid rgba(23, 111, 134, .2);
  border-radius: 8px;
  padding: 9px 10px;
  background: #fff;
  color: var(--ink);
  font: inherit;
  font-weight: 750;
}

.stay-step-fields input[readonly] {
  background: #f2f8f8;
  color: #496165;
}

.stay-step-actions {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
}

.stay-step-actions .btn {
  width: 100%;
}

.request-form-head {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  align-items: start;
}

.request-close {
  border: 0;
  padding: 8px 0;
  background: transparent;
  color: var(--blue-accent);
  font: inherit;
  font-size: 12px;
  font-weight: 850;
  cursor: pointer;
}

.home-request-form label {
  gap: 5px;
  font-size: 11px;
}

.home-request-form input,
.home-request-form textarea {
  min-height: 44px;
  border-radius: 10px;
  padding: 10px 11px;
}

.home-request-form textarea {
  min-height: 86px;
  resize: vertical;
}

.villa-alternatives {
  display: grid;
  gap: 10px;
}

.villa-alternatives.is-empty {
  display: none;
}

.villa-alternatives-head {
  border-radius: 14px;
  background: #fff7ea;
  border: 1px solid rgba(127, 99, 60, .22);
  padding: 12px;
}

.villa-alternatives-head strong {
  display: block;
  color: var(--ink);
  font-size: 14px;
  line-height: 1.25;
}

.villa-alternatives-head span {
  display: block;
  margin-top: 4px;
  color: #5d7478;
  font-size: 13px;
  font-weight: 650;
  line-height: 1.35;
  text-transform: none;
  letter-spacing: 0;
}

.villa-alternative-list {
  display: grid;
  gap: 8px;
}

.villa-alternative-card {
  width: 100%;
  border: 1px solid rgba(23, 111, 134, .18);
  border-radius: 14px;
  background: #fff;
  color: var(--ink);
  padding: 12px;
  text-align: left;
  font: inherit;
  cursor: pointer;
  box-shadow: 0 10px 26px rgba(18, 58, 68, .06);
}

.villa-alternative-card span {
  display: block;
  color: var(--semi-blond);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .13em;
  text-transform: uppercase;
}

.villa-alternative-card strong {
  display: block;
  margin-top: 3px;
  color: var(--ink);
  font-size: 16px;
  line-height: 1.2;
}

.villa-alternative-card em {
  display: block;
  margin-top: 5px;
  color: #28775d;
  font-size: 12px;
  font-style: normal;
  font-weight: 800;
}

.villa-alternative-card:hover,
.villa-alternative-card.is-selected {
  border-color: var(--blue-accent);
  background: #eef9fa;
}

[data-book-online][aria-disabled="true"] {
  pointer-events: none;
  cursor: not-allowed;
  opacity: .62;
  filter: saturate(.65);
}

.form-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

.home-request-form .btn {
  width: 100%;
}

.villa-details-section {
  padding-top: 72px;
  padding-bottom: 58px;
}

.villa-details-section .section-head,
.villa-amenities-section .section-head {
  display: grid;
  grid-template-columns: minmax(0, .45fr) minmax(0, 1fr);
  align-items: end;
}

.villa-details-section .section-head h2,
.villa-amenities-section .section-head h2 {
  max-width: 760px;
  color: var(--ink);
}

.sleeping-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.sleeping-grid article {
  min-height: 150px;
  border: 1px solid rgba(23, 111, 134, .16);
  border-radius: 18px;
  background:
    linear-gradient(150deg, rgba(255, 255, 255, .98), rgba(238, 249, 250, .82)),
    radial-gradient(circle at top right, rgba(127, 99, 60, .14), transparent 40%);
  padding: 20px;
  box-shadow: 0 16px 42px rgba(18, 58, 68, .08);
}

.sleeping-grid span {
  display: block;
  color: var(--semi-blond);
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .14em;
  text-transform: uppercase;
}

.sleeping-grid strong,
.sleeping-grid em {
  display: block;
  margin-top: 10px;
  color: var(--ink);
  font-size: 20px;
  line-height: 1.2;
}

.sleeping-grid em {
  margin-top: 4px;
  color: var(--muted-ink);
  font-style: normal;
}

.villa-specs-band {
  max-width: none;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 590px));
  justify-content: center;
  gap: 18px;
  background: #eef8fa;
  border-block: 1px solid rgba(23, 111, 134, .12);
}

.spec-card,
.rules-card,
.amenity-clusters article {
  border: 1px solid rgba(23, 111, 134, .14);
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 18px 48px rgba(18, 58, 68, .07);
}

.spec-card {
  padding: 24px;
}

.premium-dl {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 22px;
  margin: 0;
}

.premium-dl div {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.premium-dl dt {
  color: #6b8388;
  font-size: 12px;
  font-weight: 850;
  letter-spacing: .11em;
  text-transform: uppercase;
}

.premium-dl dd {
  margin: 0;
  color: var(--ink);
  font-size: 18px;
  font-weight: 850;
}

.villa-amenities-section {
  padding-top: 72px;
}

.amenity-clusters {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}

.amenity-clusters article {
  padding: 22px;
}

.amenity-clusters h3 {
  margin: 0 0 14px;
  color: var(--ink);
  font-size: 20px;
}

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

.check-list li {
  display: grid;
  grid-template-columns: 22px 1fr;
  gap: 8px;
  align-items: start;
  color: var(--muted-ink);
  font-weight: 750;
  line-height: 1.25;
}

.check-list li:before,
.rule-ok:before {
  content: "\2713";
  display: inline-grid;
  place-items: center;
  width: 20px;
  height: 20px;
  border-radius: 999px;
  background: #e2f5ed;
  color: #28775d;
  font-size: 12px;
  font-weight: 900;
}

.villa-rules-section {
  padding-top: 44px;
}

.rules-card {
  display: grid;
  grid-template-columns: minmax(0, .7fr) minmax(340px, 1fr);
  gap: 28px;
  align-items: start;
  padding: 28px;
}

.rules-card h2 {
  margin: 0;
  color: var(--ink);
  font-size: clamp(30px, 3.5vw, 52px);
  line-height: 1.02;
}

.rules-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.rules-grid span {
  display: grid;
  grid-template-columns: 24px 1fr;
  gap: 9px;
  align-items: center;
  border-radius: 14px;
  background: #f4f9f9;
  padding: 12px;
  color: var(--ink);
  font-weight: 850;
}

.rule-no {
  color: #7b8790 !important;
  text-decoration: line-through;
}

.rule-no:before {
  content: "\00d7";
  display: inline-grid;
  place-items: center;
  width: 20px;
  height: 20px;
  border-radius: 999px;
  background: #f6e3de;
  color: #9a4e44;
  font-size: 15px;
  font-weight: 900;
  text-decoration: none;
}

.licence-note {
  grid-column: 1 / -1;
  margin: 0;
  border-top: 1px solid rgba(23, 111, 134, .12);
  padding-top: 18px;
  color: var(--muted-ink);
  font-weight: 800;
  letter-spacing: .02em;
  text-transform: uppercase;
}

body.theme-night .villa-details-section,
body.theme-night .villa-amenities-section,
body.theme-night .villa-rules-section {
  background: #03090b !important;
  color: #f7f1e8 !important;
}

body.theme-night .villa-specs-band {
  background:
    radial-gradient(circle at 12% 6%, rgba(27, 113, 135, .14), transparent 30%),
    linear-gradient(135deg, #020607 0%, #071115 68%, #101512 100%) !important;
  border-block-color: rgba(247, 241, 232, .12) !important;
  color: #f7f1e8 !important;
}

body.theme-night .sleeping-grid article,
body.theme-night .spec-card,
body.theme-night .amenity-clusters article,
body.theme-night .rules-card {
  background:
    linear-gradient(145deg, rgba(13, 27, 33, .98), rgba(7, 17, 21, .98)),
    linear-gradient(180deg, rgba(214, 168, 90, .045), transparent 54%) !important;
  border-color: rgba(247, 241, 232, .14) !important;
  box-shadow: none !important;
}

body.theme-night .sleeping-grid span,
body.theme-night .spec-card .eyebrow,
body.theme-night .rules-card .eyebrow {
  color: #c4a77a !important;
}

body.theme-night .sleeping-grid strong,
body.theme-night .premium-dl dd,
body.theme-night .amenity-clusters h3,
body.theme-night .rules-card h2,
body.theme-night .rules-grid span,
body.theme-night .licence-note strong {
  color: #f7f1e8 !important;
}

body.theme-night .sleeping-grid em,
body.theme-night .premium-dl dt,
body.theme-night .check-list li,
body.theme-night .licence-note {
  color: #b9c8c9 !important;
}

body.theme-night .rules-grid span {
  background: rgba(247, 251, 251, .07) !important;
}

body.theme-night .check-list li:before,
body.theme-night .rule-ok:before {
  background: rgba(115, 202, 166, .16) !important;
  color: #89dcbc !important;
}

body.theme-night .rule-no {
  color: #9baeb0 !important;
}

body.theme-night .rule-no:before {
  background: rgba(198, 96, 84, .16) !important;
  color: #e0aaa2 !important;
}

.editorial-page main {
  background: var(--ice);
}

.editorial-hero {
  position: relative;
  min-height: min(68vh, 720px);
  display: flex;
  align-items: end;
  overflow: hidden;
  isolation: isolate;
  background: #102327;
}

.editorial-hero:after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(180deg, rgba(2, 6, 7, .08) 12%, rgba(2, 6, 7, .2) 48%, rgba(2, 6, 7, .82) 100%);
}

.editorial-hero img {
  position: absolute;
  inset: 0;
  z-index: -2;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.editorial-hero-copy {
  width: min(1220px, calc(100% - 36px));
  margin: 0 auto;
  padding: 150px 0 58px;
  color: #fff;
}

.editorial-hero-copy .eyebrow {
  color: #d7bd92;
}

.editorial-hero-copy h1 {
  max-width: 900px;
  margin: 10px 0 16px;
  color: #fff;
  font-family: var(--title-font);
  font-weight: 400;
  letter-spacing: 0;
  font-size: clamp(46px, 6vw, 82px);
  line-height: 1;
}

.editorial-hero-copy > p:last-child {
  max-width: 720px;
  margin: 0;
  color: rgba(255, 255, 255, .86);
  font-size: clamp(17px, 2vw, 22px);
  line-height: 1.55;
}

.editorial-section {
  width: min(1220px, calc(100% - 36px));
  margin: 0 auto;
  padding: 72px 0;
}

.editorial-intro,
.editorial-split {
  display: grid;
  grid-template-columns: minmax(220px, .42fr) minmax(0, 1fr);
  gap: 64px;
  align-items: start;
}

.editorial-intro h2,
.editorial-split h2,
.editorial-section-head h2 {
  margin: 8px 0 0;
  color: var(--ink);
  font-family: var(--title-font);
  font-weight: 400;
  letter-spacing: 0;
  font-size: clamp(34px, 4vw, 58px);
  line-height: 1.06;
}

.editorial-prose {
  max-width: 820px;
  color: #465f64;
  font-size: 17px;
  line-height: 1.8;
}

.editorial-prose p {
  margin: 0 0 20px;
}

.editorial-prose p:last-child {
  margin-bottom: 0;
}

.editorial-prose h2 {
  margin: 8px 0 18px;
  color: var(--ink);
  font-family: var(--title-font);
  font-size: clamp(34px, 4vw, 54px);
  font-weight: 400;
  letter-spacing: 0;
  line-height: 1.06;
}

.editorial-band {
  background: #fff;
  border-top: 1px solid rgba(23, 111, 134, .1);
  border-bottom: 1px solid rgba(23, 111, 134, .1);
}

.editorial-media {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(280px, .85fr);
  gap: 28px;
  align-items: stretch;
}

.editorial-media img {
  width: 100%;
  height: 100%;
  min-height: 420px;
  object-fit: cover;
  border-radius: 6px;
}

.editorial-media .editorial-prose {
  align-self: center;
  padding: 36px 12px 36px 22px;
}

.editorial-points {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
  margin-top: 34px;
}

.editorial-point {
  border-top: 2px solid var(--semi-blond);
  padding: 22px 4px 0;
}

.editorial-point h3 {
  margin: 0 0 9px;
  color: var(--ink);
  font-size: 23px;
}

.editorial-point p {
  margin: 0;
  color: #546d72;
  line-height: 1.65;
}

.faq-list {
  margin-top: 30px;
  border-top: 1px solid rgba(23, 111, 134, .16);
}

.faq-list details {
  border-bottom: 1px solid rgba(23, 111, 134, .16);
  padding: 20px 0;
}

.faq-list summary {
  color: var(--ink);
  font-size: 20px;
  font-weight: 850;
  cursor: pointer;
}

.faq-list details p {
  max-width: 820px;
  margin: 14px 0 0;
  color: #526b70;
  line-height: 1.7;
}

.page-booking-section {
  background: #061012;
  color: #fff;
  border-top: 1px solid rgba(255, 255, 255, .12);
}

.page-booking-shell {
  width: min(1220px, calc(100% - 36px));
  margin: 0 auto;
  padding: 72px 0;
  display: grid;
  grid-template-columns: minmax(240px, .42fr) minmax(0, 1fr);
  gap: 56px;
  align-items: start;
}

.page-booking-copy .eyebrow {
  color: #d7bd92;
}

.page-booking-copy h2 {
  margin: 10px 0 14px;
  color: #fff;
  font-family: var(--title-font);
  font-weight: 400;
  letter-spacing: 0;
  font-size: clamp(36px, 4vw, 56px);
  line-height: 1.04;
}

.page-booking-copy p {
  margin: 0;
  color: #a9babc;
  line-height: 1.7;
}

.page-booking-form {
  display: grid;
  gap: 14px;
  border: 1px solid rgba(255, 255, 255, .14);
  border-radius: 8px;
  padding: 22px;
  background: rgba(255, 255, 255, .05);
}

.page-booking-form .form-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.page-booking-form label {
  color: #d7bd92;
  font-size: 11px;
  font-weight: 850;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.page-booking-form input,
.page-booking-form textarea {
  min-height: 46px;
  border: 1px solid rgba(255, 255, 255, .18);
  border-radius: 6px;
  background: rgba(255, 255, 255, .08);
  color: #fff;
}

.page-booking-form textarea {
  min-height: 96px;
}

.page-booking-form .btn-ghost {
  border-color: rgba(255, 255, 255, .28);
  color: #fff;
}

/* Divine date selector */
.divine-date-native {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.divine-date-trigger {
  width: 100%;
  min-height: 60px;
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) 24px;
  gap: 12px;
  align-items: center;
  border: 1px solid rgba(255, 255, 255, .2);
  border-radius: 6px;
  padding: 9px 12px;
  background: rgba(255, 255, 255, .08);
  color: #fff;
  text-align: left;
  cursor: pointer;
}

.divine-date-trigger:hover,
.divine-date-trigger:focus-visible {
  border-color: #d7bd92;
  background: rgba(255, 255, 255, .12);
  outline: 0;
}

.date-trigger-icon {
  position: relative;
  width: 30px;
  height: 30px;
  border: 1px solid rgba(215, 189, 146, .5);
  border-radius: 5px;
}

.date-trigger-icon:before,
.date-trigger-icon:after {
  content: "";
  position: absolute;
  top: -4px;
  width: 2px;
  height: 8px;
  border-radius: 2px;
  background: #d7bd92;
}

.date-trigger-icon:before { left: 7px; }
.date-trigger-icon:after { right: 7px; }
.date-trigger-icon i { position: absolute; inset: 8px 3px auto; height: 1px; background: rgba(215, 189, 146, .5); }
.date-trigger-icon b { position: absolute; left: 7px; bottom: 6px; width: 14px; height: 7px; background: linear-gradient(90deg, #d7bd92 35%, transparent 35% 52%, #d7bd92 52% 82%, transparent 82%); opacity: .8; }

.date-trigger-copy { min-width: 0; display: grid; gap: 2px; }
.date-trigger-copy strong { overflow: hidden; color: #fff; font-size: 14px; letter-spacing: 0; text-overflow: ellipsis; text-transform: none; white-space: nowrap; }
.date-trigger-copy small { overflow: hidden; color: #8fa5a8; font-size: 10px; letter-spacing: .04em; text-overflow: ellipsis; text-transform: none; white-space: nowrap; }
.date-trigger-arrow { color: #d7bd92; font-size: 18px; }

body:not(.page-booking-section) .stay-fields .divine-date-trigger,
.availability-page .divine-date-trigger {
  border-color: rgba(16, 35, 39, .16);
  background: #fff;
  color: #102327;
}

.stay-fields .date-trigger-copy strong,
.availability-page .date-trigger-copy strong { color: #102327; }

.date-picker-open { overflow: hidden; }
.divine-date-picker[hidden] { display: none; }
.divine-date-picker { position: fixed; inset: 0; z-index: 1000; display: grid; place-items: center; padding: 18px; }
.divine-date-backdrop { position: absolute; inset: 0; background: rgba(2, 9, 11, .78); backdrop-filter: blur(12px); }

.divine-date-dialog {
  position: relative;
  width: min(980px, 100%);
  max-height: calc(100svh - 36px);
  overflow: auto;
  border: 1px solid rgba(215, 189, 146, .32);
  border-radius: 8px;
  background: #f7fbfb;
  color: #102327;
  box-shadow: 0 32px 100px rgba(0, 0, 0, .42);
}

.divine-date-head { display: flex; justify-content: space-between; gap: 24px; padding: 24px 28px 18px; border-bottom: 1px solid #dce8e9; }
.divine-date-head > div > small { color: #247c69; font-size: 11px; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
.date-live-dot { display: inline-block; width: 7px; height: 7px; margin-right: 7px; border-radius: 50%; background: #62bf9e; box-shadow: 0 0 0 5px rgba(98, 191, 158, .14); }
.divine-date-head h2 { margin: 8px 0 0; font-family: var(--title-font); font-size: clamp(30px, 4vw, 48px); font-weight: 400; line-height: 1; }
.divine-date-close { align-self: start; width: 42px; height: 42px; border: 1px solid #cfdddf; border-radius: 50%; background: transparent; color: #102327; font-size: 26px; cursor: pointer; }

.divine-date-progress { display: grid; grid-template-columns: 1fr 38px 1fr; align-items: center; padding: 18px 28px; background: #edf5f5; }
.divine-date-progress > i { height: 1px; background: #bed1d3; }
.divine-date-progress button { display: grid; grid-template-columns: 32px 1fr; grid-template-rows: auto auto; gap: 0 10px; align-items: center; border: 0; background: transparent; color: #587176; text-align: left; cursor: pointer; }
.divine-date-progress button > span { grid-row: 1 / 3; display: grid; place-items: center; width: 30px; height: 30px; border: 1px solid #b9cccf; border-radius: 50%; font-weight: 850; }
.divine-date-progress small { font-size: 9px; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
.divine-date-progress strong { overflow: hidden; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.divine-date-progress button.is-active { color: #176f86; }
.divine-date-progress button.is-active > span { border-color: #176f86; background: #176f86; color: #fff; }

.divine-date-toolbar { display: grid; grid-template-columns: 44px 1fr 44px; align-items: center; padding: 18px 28px 10px; }
.divine-date-toolbar strong { text-align: center; font-size: 13px; letter-spacing: .08em; text-transform: uppercase; }
.divine-date-toolbar button { width: 40px; height: 40px; border: 1px solid #cfdddf; border-radius: 50%; background: #fff; color: #176f86; font-size: 18px; cursor: pointer; }
.divine-date-toolbar button:disabled { opacity: .28; cursor: default; }
.divine-date-months { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 38px; padding: 12px 28px 22px; }
.divine-picker-month h3 { margin: 0 0 15px; font-family: var(--title-font); font-size: 25px; font-weight: 400; text-align: center; }
.divine-picker-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 5px; }
.divine-picker-weekday { display: grid; place-items: center; height: 26px; color: #7b9094; font-size: 10px; font-weight: 850; }
.divine-picker-day { position: relative; aspect-ratio: 1; min-width: 0; border: 0; border-radius: 50%; background: #e8f5f1; color: #173f42; font: inherit; font-size: 13px; font-weight: 800; cursor: pointer; }
.divine-picker-day:hover:not(:disabled) { background: #ccebe1; transform: translateY(-1px); }
.divine-picker-day.is-unavailable { background: transparent; color: #acb8ba; text-decoration: line-through; cursor: not-allowed; }
.divine-picker-day.is-in-range { border-radius: 4px; background: #d7eef1; color: #13566a; }
.divine-picker-day.is-selected { border-radius: 50%; background: #176f86; color: #fff; box-shadow: 0 8px 18px rgba(23, 111, 134, .24); }

.divine-date-smart { min-height: 66px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 14px 28px; border-block: 1px solid #dce8e9; background: #eef7f4; }
.divine-date-smart:empty { display: none; }
.divine-date-smart span { display: grid; gap: 2px; }
.divine-date-smart small { color: #8a7046; font-size: 9px; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
.divine-date-smart strong { font-size: 13px; }
.divine-date-smart > div { display: flex; gap: 7px; flex-wrap: wrap; }
.divine-date-smart button { border: 1px solid #b9d6d0; border-radius: 999px; padding: 8px 11px; background: #fff; color: #176f86; font-weight: 800; cursor: pointer; }
.divine-date-smart button:disabled { opacity: .3; cursor: default; }
.divine-date-footer { display: flex; align-items: center; justify-content: space-between; gap: 22px; padding: 18px 28px 22px; }
.date-legend { display: flex; gap: 14px; flex-wrap: wrap; color: #60777b; font-size: 10px; font-weight: 750; }
.date-legend span { display: flex; align-items: center; gap: 5px; }
.date-legend i { width: 8px; height: 8px; border-radius: 50%; }
.date-legend .is-free { background: #79cbb0; }
.date-legend .is-chosen { background: #176f86; }
.date-legend .is-closed { border: 1px solid #9aabad; background: transparent; }
.divine-date-footer-actions { display: flex; gap: 10px; }
.date-clear { border: 0; background: transparent; color: #60777b; font-weight: 800; cursor: pointer; }
.date-confirm:disabled { opacity: .35; cursor: default; }

@media (max-width: 820px) {
  .divine-date-picker { align-items: end; padding: 0; }
  .divine-date-dialog {
    display: flex;
    flex-direction: column;
    width: 100%;
    max-height: calc(100svh - 8px);
    overflow: hidden;
    border-radius: 8px 8px 0 0;
  }
  .divine-date-head { flex: 0 0 auto; padding: 14px 16px 10px; }
  .divine-date-head h2 { margin-top: 4px; font-size: 26px; }
  .divine-date-close { width: 34px; height: 34px; font-size: 22px; }
  .divine-date-progress { flex: 0 0 auto; grid-template-columns: 1fr 16px 1fr; padding: 10px 16px; }
  .divine-date-progress button { grid-template-columns: 26px 1fr; gap: 0 8px; }
  .divine-date-progress button > span { width: 24px; height: 24px; }
  .divine-date-progress strong { font-size: 11px; }
  .divine-date-toolbar { flex: 0 0 auto; grid-template-columns: 36px 1fr 36px; padding: 10px 16px 4px; }
  .divine-date-toolbar button { width: 34px; height: 34px; }
  .divine-date-toolbar strong { font-size: 10px; }
  .divine-date-months {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    grid-template-columns: 1fr;
    padding: 6px 16px 10px;
  }
  .divine-date-months .divine-picker-month:nth-child(2) { display: none; }
  .divine-picker-month h3 { margin-bottom: 8px; font-size: 21px; }
  .divine-picker-grid { gap: 3px; }
  .divine-picker-weekday { height: 18px; font-size: 9px; }
  .divine-picker-day { height: 34px; aspect-ratio: auto; border-radius: 10px; font-size: 12px; }
  .divine-picker-day.is-selected { border-radius: 10px; }
  .divine-date-smart {
    flex: 0 0 auto;
    min-height: 0;
    align-items: flex-start;
    flex-direction: column;
    gap: 8px;
    padding: 9px 16px;
  }
  .divine-date-smart strong { font-size: 12px; }
  .divine-date-smart button { padding: 7px 9px; }
  .divine-date-footer {
    position: sticky;
    bottom: 0;
    z-index: 2;
    flex: 0 0 auto;
    align-items: stretch;
    flex-direction: column;
    gap: 10px;
    padding: 10px 16px max(12px, env(safe-area-inset-bottom));
    border-top: 1px solid #dce8e9;
    background: #f7fbfb;
    box-shadow: 0 -16px 34px rgba(10, 35, 40, .08);
  }
  .date-legend { justify-content: center; gap: 10px; font-size: 9px; }
  .divine-date-footer-actions { display: grid; grid-template-columns: .7fr 1.3fr; }
}

@media (max-width: 420px) {
  .divine-date-head h2 { font-size: 23px; }
  .divine-date-head > div > small { font-size: 9px; }
  .divine-date-progress small { font-size: 8px; }
  .divine-picker-day { height: 31px; font-size: 11px; }
  .date-legend { display: none; }
  .divine-date-footer-actions { grid-template-columns: .62fr 1.38fr; }
}

.guide-links {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px 28px;
  margin-top: 28px;
}

.guide-links a {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  border-bottom: 1px solid rgba(23, 111, 134, .16);
  padding: 12px 0;
  color: var(--ink);
  font-weight: 800;
  text-decoration: none;
}

/* Compact guest proof on the home page */
.home-review-strip {
  width: min(1220px, calc(100% - 36px));
  margin: 8px auto 0;
  display: grid;
  grid-template-columns: minmax(170px, .7fr) repeat(2, minmax(210px, 1fr)) auto;
  gap: 0;
  align-items: stretch;
  border-block: 1px solid rgba(23, 111, 134, .18);
  background: rgba(255, 255, 255, .58);
  color: var(--ink);
}

.home-review-strip > * {
  min-width: 0;
  padding: 22px 24px;
}

.home-review-strip > * + * {
  border-left: 1px solid rgba(23, 111, 134, .14);
}

.review-score {
  display: grid;
  align-content: center;
  gap: 2px;
}

.review-score > span,
.review-score > em {
  color: #6b8185;
  font-size: 9px;
  font-style: normal;
  font-weight: 850;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.review-score .review-stars {
  color: #b8945d;
  font-size: 13px;
  letter-spacing: .16em;
  line-height: 1;
}

.review-score strong {
  color: #0a252a;
  font-family: var(--title-font);
  font-size: 34px;
  font-weight: 400;
  line-height: 1.05;
}

.review-score strong small {
  color: #789094;
  font-family: inherit;
  font-size: 16px;
}

.home-review-strip blockquote {
  display: grid;
  align-content: center;
  gap: 6px;
  margin: 0;
}

.home-review-strip blockquote p {
  margin: 0;
  color: #19393e;
  font-family: var(--title-font);
  font-size: 19px;
  line-height: 1.25;
}

.home-review-strip cite {
  color: #789094;
  font-size: 10px;
  font-style: normal;
  font-weight: 800;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.home-review-strip > a {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  color: #176f86;
  font-size: 12px;
  font-weight: 850;
  text-decoration: none;
  white-space: nowrap;
}

.home-review-strip > a:hover {
  background: #176f86;
  color: #fff;
}

@media (max-width: 900px) {
  .home-review-strip {
    grid-template-columns: .75fr 1.25fr;
  }

  .home-review-strip > * + * {
    border-left: 1px solid rgba(23, 111, 134, .14);
  }

  .home-review-strip > *:nth-child(3) {
    border-top: 1px solid rgba(23, 111, 134, .14);
    border-left: 0;
  }

  .home-review-strip > a {
    border-top: 1px solid rgba(23, 111, 134, .14);
  }
}

@media (max-width: 560px) {
  .home-review-strip {
    grid-template-columns: 1fr;
    margin-top: 0;
  }

  .home-review-strip > * {
    padding: 18px;
  }

  .home-review-strip > * + *,
  .home-review-strip > *:nth-child(3) {
    border-top: 1px solid rgba(23, 111, 134, .14);
    border-left: 0;
  }

  .home-review-strip blockquote:nth-of-type(2) {
    display: none;
  }

  .home-review-strip > a {
    min-height: 54px;
  }
}

/* Shared page polish */
.services-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
}

.services-grid h2 {
  overflow-wrap: anywhere;
  font-size: clamp(32px, 3.2vw, 48px);
  line-height: 1.02;
}

.trust-panel span,
.trust-panel strong {
  display: block;
}

.trust-panel strong {
  margin-top: 12px;
  font-family: var(--title-font);
  font-size: clamp(24px, 2.6vw, 34px);
  font-weight: 400;
  line-height: 1.12;
}

.trust-panel p {
  margin: 14px 0 0;
}

.contact-page .page-hero.compact,
.gallery-page .page-hero.compact {
  padding-bottom: 26px;
}

.contact-page .page-hero.compact + .form-section,
.gallery-page .page-hero.compact + .section {
  padding-top: 34px;
}

/* Location map */
.location-map-section {
  display: grid;
  grid-template-columns: minmax(250px, .55fr) minmax(0, 1.45fr);
  gap: clamp(28px, 5vw, 72px);
  align-items: center;
}

.location-map-copy h2 {
  max-width: 520px;
  margin: 12px 0 18px;
  font-family: var(--title-font);
  font-size: clamp(42px, 5.2vw, 76px);
  font-weight: 400;
  line-height: .98;
}

.location-map-copy > p:not(.eyebrow) {
  max-width: 470px;
  margin: 0 0 28px;
  color: var(--muted);
  font-size: 18px;
  line-height: 1.7;
}

.location-map-frame {
  min-height: 440px;
  overflow: hidden;
  border: 1px solid rgba(23, 111, 134, .18);
  border-radius: 6px;
  background: #dfe9ea;
  box-shadow: 0 24px 70px rgba(7, 17, 21, .12);
}

.location-map-frame iframe {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 440px;
  border: 0;
}

@media (max-width: 900px) {
  .services-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .location-map-section {
    grid-template-columns: 1fr;
  }

  .location-map-frame,
  .location-map-frame iframe {
    min-height: 360px;
  }
}

@media (max-width: 560px) {
  .page-hero h1 {
    font-size: 40px;
  }

  .brand {
    min-width: 126px;
  }

  .brand:before {
    font-size: 28px;
    letter-spacing: .2em;
  }

  .brand:after {
    font-size: 8px;
    letter-spacing: .32em;
  }

  .services-grid {
    grid-template-columns: 1fr !important;
  }

  .location-map-copy h2 {
    font-size: 42px;
  }

  .location-map-frame,
  .location-map-frame iframe {
    min-height: 300px;
  }
}

@media (max-width: 1100px) {
  .home-live-widget,
  .month-request-widget,
  .villa-details-section .section-head,
  .villa-amenities-section .section-head,
  .rules-card {
    grid-template-columns: 1fr;
  }

  .footer-shell {
    grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
    gap: 28px;
  }

  .footer-brand {
    grid-column: 1 / -1;
  }

  .footer-panel {
    max-width: none;
  }

  .sleeping-grid,
  .amenity-clusters {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .villa-specs-band {
    grid-template-columns: minmax(0, 1fr);
  }

  .footer-brand h2 {
    max-width: 760px;
  }

  .editorial-intro,
  .editorial-split,
  .page-booking-shell {
    grid-template-columns: 1fr;
    gap: 30px;
  }

  .editorial-media {
    grid-template-columns: 1fr;
  }

  .editorial-media .editorial-prose {
    padding: 12px 0 0;
  }

  .availability-stay-step {
    grid-template-columns: 1fr;
    align-items: stretch;
  }

  .villa-options-head,
  .villa-listing-card {
    grid-template-columns: 1fr;
  }

  .villa-listing-media,
  .villa-listing-media img {
    min-height: 240px;
  }

  .stay-step-actions {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 760px) {
  .footer-shell {
    grid-template-columns: 1fr;
  }

  .footer-brand {
    grid-column: auto;
  }

  .footer-panel {
    max-width: 100%;
  }
}

@media (max-width: 560px) {
  .month-request-widget,
  .compact-form-grid,
  .form-actions,
  .footer-links,
  .sleeping-grid,
  .premium-dl,
  .amenity-clusters,
  .rules-grid {
    grid-template-columns: 1fr;
  }

  .intelligence-head strong {
    font-size: 30px;
  }

  .month-choice-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .editorial-hero {
    min-height: 68vh;
  }

  .editorial-hero-copy {
    padding-bottom: 38px;
  }

  .editorial-section,
  .page-booking-shell {
    padding: 52px 0;
  }

  .editorial-points,
  .guide-links,
  .page-booking-form .form-grid {
    grid-template-columns: 1fr;
  }

  .editorial-media img {
    min-height: 280px;
  }

  .page-booking-form {
    padding: 16px;
  }

  .home-live-widget .intelligence-card,
  .home-request-form,
  .availability-stay-step {
    padding: 16px;
  }

  .stay-step-fields,
  .stay-step-actions,
  .home-request-form .compact-form-grid,
  .villa-listing-actions {
    grid-template-columns: 1fr;
  }

  .villa-options-head h2 {
    font-size: 38px;
  }

  .villa-listing-title {
    display: grid;
    gap: 10px;
  }

  .villa-listing-title em {
    justify-self: center;
  }

  .villa-listing-actions {
    display: grid;
  }

  .villa-listing-actions .btn {
    width: 100%;
    min-width: 0;
  }

  .footer-shell {
    padding-top: 50px;
  }

  .footer-brand h2 {
    font-size: 42px;
  }

  .footer-actions,
  .footer-bottom {
    display: grid;
  }

  .footer-panel {
    padding: 18px;
  }

  .footer-panel div {
    grid-template-columns: 1fr;
    gap: 3px;
  }

  .footer-panel dd {
    text-align: left;
  }
}

/* Complete day/night templates. Day stays airy; night becomes a full dark UI. */
body.theme-day {
  --theme-bg: #f6fbfc;
  --theme-surface: #ffffff;
  --theme-soft: #eef8fa;
  --theme-ink: #102327;
  --theme-muted: #526c70;
  --theme-border: rgba(23, 111, 134, .16);
  background: var(--theme-bg) !important;
  color: var(--theme-ink) !important;
}

body.theme-night {
  --theme-bg: #03090b;
  --theme-surface: #0a171b;
  --theme-soft: #102024;
  --theme-ink: #f7f1e8;
  --theme-muted: #b9c8c9;
  --theme-border: rgba(214, 168, 90, .2);
  background: var(--theme-bg) !important;
  color: var(--theme-ink) !important;
}

.brand {
  order: 1;
}

.site-menu {
  order: 2;
}

.theme-toggle {
  order: 3;
  width: auto;
  min-width: 92px;
  min-height: 40px;
  border-radius: 999px;
  transition: background .2s ease, border-color .2s ease, color .2s ease, box-shadow .2s ease;
}

.nav-toggle {
  order: 4;
}

body.theme-day .site-header {
  background: rgba(248, 252, 252, .92) !important;
  border-bottom-color: rgba(16, 35, 39, .12) !important;
  box-shadow: 0 10px 34px rgba(18, 58, 68, .08);
  backdrop-filter: blur(18px);
}

body.theme-day .brand:before {
  color: #102327;
  background:
    linear-gradient(180deg, #092427 0%, #173f43 28%, #6f8a90 52%, #0f2f34 78%, #244e54 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow: 0 1px 0 rgba(255, 255, 255, .28);
}

body.theme-day .brand:after {
  color: #63718f;
}

body.theme-day .site-menu a {
  color: #102327 !important;
}

body.theme-day .nav-cta {
  color: #8b6b3c !important;
  border-color: rgba(139, 107, 60, .5) !important;
}

body.theme-day .nav-toggle {
  border-color: rgba(16, 35, 39, .18) !important;
  background: rgba(255, 255, 255, .84) !important;
}

body.theme-day .nav-toggle span {
  background: #102327 !important;
}

body.theme-day .theme-toggle {
  border-color: rgba(139, 107, 60, .34);
  background: rgba(255, 255, 255, .88);
  color: #8b6b3c;
  box-shadow: 0 8px 24px rgba(18, 58, 68, .08);
}

body.theme-day .theme-toggle i {
  background: #d6a85a;
  box-shadow:
    0 0 0 4px rgba(214, 168, 90, .18),
    0 0 16px rgba(214, 168, 90, .36);
}

body.theme-day .section:not(.hero),
body.theme-day .section-tight,
body.theme-day .page-hero,
body.theme-day .final-cta,
body.theme-day .dark-section,
body.theme-day .live-atlas-section,
body.theme-day .all-villa-options,
body.theme-day .availability-page-builder,
body.theme-day .availability-request-section {
  background: var(--theme-bg) !important;
  color: var(--theme-ink) !important;
}

body.theme-day .home-live-widget {
  background:
    radial-gradient(circle at 92% 12%, rgba(214, 168, 90, .18), transparent 28%),
    linear-gradient(135deg, #f6fbfc 0%, #eef9fa 52%, #fff8ec 100%) !important;
}

body.theme-day .trust-panel,
body.theme-day .side-note,
body.theme-day .feature-grid article,
body.theme-day .cards article,
body.theme-day .intelligence-card,
body.theme-day .home-request-form,
body.theme-day .month-card,
body.theme-day .villa-listing-card,
body.theme-day .availability-stay-step,
body.theme-day .request-form,
body.theme-day .month-choice,
body.theme-day .intelligence-meta div,
body.theme-day .month-year-tabs,
body.theme-day .footer-panel {
  background: var(--theme-surface) !important;
  border-color: var(--theme-border) !important;
  color: var(--theme-ink) !important;
}

body.theme-day .site-footer,
body.theme-day .premium-footer {
  background:
    radial-gradient(circle at 12% 16%, rgba(31, 129, 150, .1), transparent 26%),
    linear-gradient(135deg, #f6fbfc 0%, #eef8fa 58%, #fff8ec 100%) !important;
  color: var(--theme-ink) !important;
  border-top-color: rgba(23, 111, 134, .16) !important;
}

body.theme-day .footer-brand h2,
body.theme-day .site-footer h2,
body.theme-day .footer-panel dd,
body.theme-day .footer-links h2 {
  color: var(--theme-ink) !important;
}

body.theme-day .site-footer p,
body.theme-day .footer-brand p:not(.eyebrow),
body.theme-day .footer-panel dt,
body.theme-day .footer-bottom {
  color: var(--theme-muted) !important;
}

body.theme-day .footer-links a,
body.theme-day .site-footer a {
  color: #1b7187 !important;
}

body.theme-night .site-header {
  background: rgba(2, 6, 7, .96) !important;
  border-bottom-color: rgba(255, 255, 255, .12) !important;
  box-shadow: 0 12px 40px rgba(0, 0, 0, .34);
}

body.theme-night .brand:before {
  color: #f3f6f5;
  background:
    linear-gradient(180deg, #ffffff 0%, #eef7f6 24%, #9fb3b8 54%, #ffffff 78%, #d7e3e5 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

body.theme-night .brand:after {
  color: #aeb8d8;
}

body.theme-night .site-menu a {
  color: #f7f1e8 !important;
}

body.theme-night .theme-toggle {
  border-color: rgba(247, 241, 232, .18);
  background: rgba(255, 255, 255, .06);
  color: #f7f1e8;
}

body.theme-night .theme-toggle i {
  background: transparent;
  border: 1px solid rgba(247, 241, 232, .86);
  box-shadow:
    inset -4px -3px 0 #f7f1e8,
    0 0 16px rgba(247, 241, 232, .18);
}

body.theme-night .section:not(.hero),
body.theme-night .section-tight,
body.theme-night .page-hero,
body.theme-night .final-cta,
body.theme-night .dark-section,
body.theme-night .quick-facts,
body.theme-night .booking-strip,
body.theme-night .home-live-widget,
body.theme-night .live-atlas-section,
body.theme-night .all-villa-options,
body.theme-night .availability-page-builder,
body.theme-night .availability-request-section {
  background:
    radial-gradient(circle at 90% 10%, rgba(31, 129, 150, .16), transparent 28%),
    linear-gradient(135deg, #061014 0%, #0a171b 58%, #12100d 100%) !important;
  color: var(--theme-ink) !important;
}

body.theme-night .page-hero h1,
body.theme-night .section h2,
body.theme-night .section h3,
body.theme-night .final-cta h2,
body.theme-night .atlas-head h2,
body.theme-night .villa-options-head h2,
body.theme-night .availability-copy h2,
body.theme-night .trust-panel strong,
body.theme-night .side-note h2,
body.theme-night .month-card-title strong,
body.theme-night .month-stats strong,
body.theme-night .intelligence-head strong,
body.theme-night .intelligence-meta strong,
body.theme-night .villa-listing-title h3,
body.theme-night .month-choice strong,
body.theme-night .stay-step-copy h3 {
  color: var(--theme-ink) !important;
}

body.theme-night .page-hero p:not(.eyebrow),
body.theme-night .prose,
body.theme-night .feature-grid p,
body.theme-night .cards p,
body.theme-night .trust-panel p,
body.theme-night .side-note,
body.theme-night .side-note p,
body.theme-night .atlas-head > p,
body.theme-night .villa-options-head > p,
body.theme-night .villa-listing-body > p,
body.theme-night .month-picker-copy,
body.theme-night .month-stats span,
body.theme-night .month-stats small,
body.theme-night .month-choice small,
body.theme-night .intelligence-meta span,
body.theme-night .available-windows > span,
body.theme-night .available-window-list {
  color: var(--theme-muted) !important;
}

body.theme-night .trust-panel,
body.theme-night .side-note,
body.theme-night .feature-grid article,
body.theme-night .cards article,
body.theme-night .fact,
body.theme-night .intelligence-card,
body.theme-night .home-request-form,
body.theme-night .month-card,
body.theme-night .villa-listing-card,
body.theme-night .availability-stay-step,
body.theme-night .request-form,
body.theme-night .month-choice,
body.theme-night .intelligence-meta div,
body.theme-night .month-year-tabs,
body.theme-night .available-window-list button,
body.theme-night .footer-panel {
  background:
    linear-gradient(145deg, rgba(13, 27, 33, .96), rgba(7, 17, 21, .96)),
    linear-gradient(180deg, rgba(214, 168, 90, .06), transparent 54%) !important;
  border-color: var(--theme-border) !important;
  color: var(--theme-ink) !important;
  box-shadow: 0 24px 62px rgba(0, 0, 0, .24);
}

body.theme-night .request-form input,
body.theme-night .request-form textarea,
body.theme-night .request-form select,
body.theme-night .home-request-form input,
body.theme-night .home-request-form textarea,
body.theme-night .home-request-form select,
body.theme-night .stay-step-fields input,
body.theme-night .stay-step-fields select {
  background: #071115 !important;
  color: #f7f1e8 !important;
  border-color: rgba(247, 241, 232, .18) !important;
}

body.theme-night .request-form input::placeholder,
body.theme-night .request-form textarea::placeholder,
body.theme-night .home-request-form input::placeholder,
body.theme-night .home-request-form textarea::placeholder {
  color: #91a4a5 !important;
}

body.theme-night .site-footer,
body.theme-night .premium-footer {
  background:
    linear-gradient(135deg, rgba(2, 6, 7, .98), rgba(8, 23, 27, .98) 58%, rgba(24, 40, 39, .98)),
    linear-gradient(90deg, rgba(127, 99, 60, .18), transparent 44%) !important;
  color: #eaf0ef !important;
  border-top-color: rgba(255, 255, 255, .14) !important;
}

@media (max-width: 900px) {
  .brand {
    margin-right: auto;
  }

  .theme-toggle {
    order: 3;
    width: 44px;
    min-width: 44px;
    min-height: 44px;
    margin-left: 0;
    padding: 0;
    border-radius: 8px;
  }

  .theme-toggle span {
    display: none;
  }

  .nav-toggle {
    order: 4;
    margin-left: 0;
  }

  .site-menu {
    order: 5;
  }

  body.theme-day .site-menu {
    background: rgba(248, 252, 252, .98) !important;
    border-color: rgba(16, 35, 39, .12) !important;
    box-shadow: 0 28px 80px rgba(18, 58, 68, .18);
  }

  body.theme-day .site-menu a {
    border-bottom-color: rgba(16, 35, 39, .08);
  }

  body.theme-night .site-menu {
    background: rgba(3, 9, 11, .98) !important;
  }
}

/* Mobile QA fixes: prevent text overlap, restore contrast, and make the menu usable. */
body.theme-day .quick-facts {
  background: #dceff3 !important;
}

body.theme-day .fact {
  background: rgba(255, 255, 255, .96) !important;
}

body.theme-day .fact strong {
  color: #102327 !important;
}

body.theme-day .fact span {
  color: #587276 !important;
}

body.theme-night .quick-facts {
  background:
    radial-gradient(circle at 78% 0%, rgba(31, 129, 150, .16), transparent 28%),
    #03090b !important;
}

body.theme-night .quick-facts .fact {
  background: rgba(10, 23, 27, .94) !important;
  border-color: rgba(214, 168, 90, .14) !important;
}

body.theme-night .quick-facts .fact strong {
  color: #f7f1e8 !important;
}

body.theme-night .quick-facts .fact span {
  color: #b9c8c9 !important;
}

body.theme-night .editorial-point h3,
body.theme-night .feature-grid h2,
body.theme-night .cards h2,
body.theme-night .dark-section .section-head h2,
body.theme-night .dark-section h2,
body.theme-night .dark-section h3 {
  color: #f7f1e8 !important;
}

body.theme-night .editorial-point p,
body.theme-night .feature-grid p,
body.theme-night .cards p {
  color: #b9c8c9 !important;
}

@media (max-width: 900px) {
  .site-header {
    z-index: 100;
  }

  .nav-wrap {
    gap: 10px;
    min-height: 74px;
  }

  .home .section-head,
  .section-head {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 12px;
    align-items: start;
    justify-items: start;
    margin-bottom: 24px;
  }

  .home .section-head .eyebrow,
  .section-head .eyebrow {
    margin: 0;
  }

  .home .section-head h2,
  .section-head h2 {
    max-width: 100%;
    margin: 0;
    font-size: clamp(34px, 7vw, 50px);
    line-height: 1.06;
  }

  .section-head .btn {
    justify-self: start;
  }

  .site-menu {
    z-index: 120;
    inset: 74px 12px auto !important;
    max-height: calc(100svh - 88px);
    border-radius: 14px;
    padding: 10px !important;
  }

  .site-menu a {
    min-height: 46px;
    border-radius: 8px;
    padding: 0 12px;
  }

  .site-menu a:last-child {
    border-bottom: 0;
  }
}

@media (max-width: 760px) {
  .editorial-points {
    grid-template-columns: 1fr;
    gap: 20px;
  }

  .editorial-point {
    padding-top: 18px;
  }
}

@media (max-width: 560px) {
  .quick-facts {
    grid-template-columns: 1fr !important;
    gap: 1px;
  }

  .fact {
    min-height: 104px;
    display: grid;
    place-items: center;
    align-content: center;
  }

  .home .section-head h2,
  .section-head h2 {
    font-size: 38px;
  }
}

/* Footer CTA contrast must beat the generic footer link color. */
body.theme-day .site-footer .footer-actions .btn-primary,
body.theme-day .site-footer a.btn-primary {
  background: #1b7187 !important;
  border-color: #1b7187 !important;
  color: #ffffff !important;
}

body.theme-day .site-footer .footer-actions .footer-ghost,
body.theme-day .site-footer a.footer-ghost {
  background: rgba(255, 255, 255, .9) !important;
  border-color: rgba(139, 107, 60, .48) !important;
  color: #102327 !important;
  box-shadow: 0 12px 30px rgba(18, 58, 68, .08);
}

body.theme-day .site-footer .footer-actions .footer-ghost:hover,
body.theme-day .site-footer a.footer-ghost:hover {
  background: #ffffff !important;
  border-color: #1b7187 !important;
  color: #1b7187 !important;
}

body.theme-night .site-footer .footer-actions .btn-primary,
body.theme-night .site-footer a.btn-primary {
  background: #2a8ba0 !important;
  border-color: #2a8ba0 !important;
  color: #ffffff !important;
}

body.theme-night .site-footer .footer-actions .footer-ghost,
body.theme-night .site-footer a.footer-ghost {
  background: rgba(255, 255, 255, .06) !important;
  border-color: rgba(196, 167, 122, .58) !important;
  color: #f6fbfc !important;
}

/* Gallery page uses the same premium mosaic language as the home gallery. */
.gallery-page-stack {
  display: grid;
  gap: 18px;
}

.gallery-page-mosaic {
  max-width: 1220px;
  width: 100%;
}

.gallery-page-mosaic a {
  position: relative;
  overflow: hidden;
  border-radius: 8px;
  background: #dce8e9;
  box-shadow: 0 18px 48px rgba(18, 58, 68, .1);
}

.gallery-page-mosaic img {
  transition: transform .45s ease, filter .45s ease;
}

.gallery-page-mosaic a:hover img {
  transform: scale(1.025);
  filter: saturate(1.04) contrast(1.02);
}

.gallery-page-mosaic-alt {
  margin-top: 8px;
}

.gallery-page-runway {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 18px;
  max-width: 1220px;
  width: 100%;
}

.gallery-page-runway a {
  position: relative;
  overflow: hidden;
  min-height: 250px;
  border-radius: 8px;
  background: #dce8e9;
  box-shadow: 0 18px 48px rgba(18, 58, 68, .1);
}

.gallery-page-runway img {
  width: 100%;
  height: 100%;
  min-height: 100%;
  object-fit: cover;
  transition: transform .45s ease, filter .45s ease;
}

.gallery-page-runway a:hover img {
  transform: scale(1.025);
  filter: saturate(1.04) contrast(1.02);
}

body.theme-night .gallery-page-mosaic a {
  background: #071115;
  box-shadow: 0 20px 54px rgba(0, 0, 0, .28);
}

body.theme-night .gallery-page-runway a {
  background: #071115;
  box-shadow: 0 20px 54px rgba(0, 0, 0, .28);
}

@media (max-width: 760px) {
  .gallery-page-stack {
    gap: 12px;
  }

  .gallery-page-mosaic {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto;
  }

  .gallery-page-mosaic .gallery-large {
    grid-column: 1 / -1;
    grid-row: auto;
  }

  .gallery-page-runway {
    grid-template-columns: 1fr 1fr;
    gap: 12px;
  }

  .gallery-page-runway a {
    min-height: 190px;
  }
}

/* Final mobile navigation drawer. Keep this after older nav rules. */
@media (max-width: 900px) {
  body.menu-open::before {
    content: "";
    position: fixed;
    inset: 74px 0 0;
    z-index: 900;
    background: rgba(2, 6, 7, .22);
    backdrop-filter: blur(3px);
  }

  .site-header {
    overflow: visible;
    z-index: 1000;
  }

  .nav-wrap {
    min-height: 74px;
    padding: 10px 16px;
    gap: 10px;
  }

  .brand {
    flex: 0 0 auto;
    min-width: 0;
    justify-items: center;
  }

  .brand:before,
  .brand:after {
    display: block;
    justify-self: center;
    text-align: center;
  }

  .theme-toggle,
  .nav-toggle {
    flex: 0 0 44px;
    width: 44px;
    height: 44px;
  }

  .theme-toggle {
    order: 2;
    min-width: 44px;
  }

  .nav-toggle {
    order: 3;
  }

  .site-menu {
    position: fixed !important;
    inset: 74px 12px auto !important;
    z-index: 1002;
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 6px !important;
    width: auto;
    max-height: calc(100svh - 92px);
    overflow: auto;
    border-radius: 16px;
    padding: 10px !important;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translate3d(0, -10px, 0) scale(.985);
    transform-origin: top center;
    transition: opacity .18s ease, transform .18s ease, visibility .18s ease;
  }

  .site-menu.is-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translate3d(0, 0, 0) scale(1);
  }

  .site-menu a {
    min-height: 48px;
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    border: 1px solid transparent;
    border-radius: 10px;
    padding: 0 13px;
    font-size: 15px !important;
    font-weight: 850;
    text-decoration: none;
  }

  .site-menu a:not(.nav-cta)::after {
    content: "›";
    opacity: .42;
    font-size: 20px;
    line-height: 1;
  }

  .site-menu .nav-cta {
    min-height: 50px;
    justify-content: center;
    margin-top: 4px;
    border-radius: 999px;
  }

  body.theme-day .site-menu {
    background: rgba(248, 252, 252, .98) !important;
    border: 1px solid rgba(16, 35, 39, .12) !important;
    box-shadow: 0 28px 80px rgba(18, 58, 68, .2);
  }

  body.theme-day .site-menu a {
    color: #102327 !important;
  }

  body.theme-day .site-menu a.active,
  body.theme-day .site-menu a:hover {
    background: rgba(214, 168, 90, .12);
    border-color: rgba(139, 107, 60, .22);
    color: #7f633c !important;
  }

  body.theme-day .site-menu .nav-cta {
    background: #102327;
    border-color: #102327 !important;
    color: #ffffff !important;
  }

  body.theme-night .site-menu {
    background: rgba(3, 9, 11, .98) !important;
    border: 1px solid rgba(247, 241, 232, .14) !important;
    box-shadow: 0 32px 90px rgba(0, 0, 0, .42);
  }

  body.theme-night .site-menu a {
    color: #f7f1e8 !important;
  }

  body.theme-night .site-menu a.active,
  body.theme-night .site-menu a:hover {
    background: rgba(214, 168, 90, .1);
    border-color: rgba(214, 168, 90, .24);
    color: #d6a85a !important;
  }

  body.theme-night .site-menu .nav-cta {
    background: #f7f1e8;
    border-color: #f7f1e8 !important;
    color: #071115 !important;
  }
}

@media (max-width: 420px) {
  .brand:before {
    font-size: 27px;
    letter-spacing: .18em;
    margin-right: -.18em;
  }

  .brand:after {
    font-size: 8px;
    letter-spacing: .28em;
    margin-right: -.28em;
  }

  .nav-wrap {
    padding-inline: 14px;
  }
}

/* Availability page: show live boxes immediately, with short decision copy. */
.availability-page .availability-first {
  padding-top: clamp(26px, 4vw, 46px) !important;
  padding-bottom: clamp(38px, 5vw, 58px) !important;
}

.availability-page .availability-first-head {
  margin-bottom: 18px;
  gap: 10px;
}

.availability-page .availability-first-head h1 {
  max-width: 760px;
  margin: 0 auto;
  color: var(--ink);
  font-family: var(--title-font);
  font-size: clamp(42px, 5.2vw, 74px);
  font-weight: 400;
  line-height: .98;
  letter-spacing: 0;
}

.availability-page .availability-first-head div > p:not(.eyebrow),
.availability-page .availability-first-head > p {
  max-width: 620px;
  margin: 0 auto;
  color: #526c70;
  font-size: 16px;
  font-weight: 650;
  line-height: 1.45;
}

.availability-page .month-card {
  min-height: 218px;
}

.availability-page .all-villa-options {
  padding-top: 44px;
}

.availability-page .villa-options-head {
  margin-bottom: 18px;
}

.availability-page .villa-options-head h2 {
  max-width: 820px;
  font-size: clamp(34px, 4.4vw, 62px);
}

body.theme-night .availability-page .availability-first-head h1 {
  color: #f7f1e8 !important;
}

body.theme-night .availability-page .availability-first-head div > p:not(.eyebrow),
body.theme-night .availability-page .availability-first-head > p {
  color: #b9c8c9 !important;
}

@media (max-width: 760px) {
  .availability-page .availability-first {
    padding-top: 22px !important;
    padding-bottom: 34px !important;
  }

  .availability-page .availability-first-head {
    margin-bottom: 14px;
  }

  .availability-page .availability-first-head h1 {
    font-size: 38px;
  }

  .availability-page .availability-first-head div > p:not(.eyebrow) {
    font-size: 15px;
  }

  .availability-page .month-card {
    min-height: 196px;
    padding: 16px;
  }
}

/* Villa planning panel */
.villa-planner {
  display: grid;
  grid-template-columns: minmax(260px, .82fr) minmax(0, 1.18fr);
  gap: clamp(30px, 5vw, 74px);
  align-items: center;
  padding-top: clamp(66px, 7vw, 104px);
  padding-bottom: clamp(66px, 7vw, 104px);
}

.villa-planner-copy {
  position: relative;
  max-width: 620px;
}

.villa-planner-copy::before {
  content: "";
  display: block;
  width: 84px;
  height: 2px;
  margin-bottom: 22px;
  background: linear-gradient(90deg, #8b6b3c, rgba(139, 107, 60, 0));
}

.villa-planner-copy h2 {
  max-width: 560px;
  margin: 0 0 22px;
  color: #0b2226;
  font-size: clamp(38px, 4.4vw, 72px);
  line-height: .98;
}

.villa-planner-copy p:not(.eyebrow) {
  max-width: 520px;
  color: #4f686d;
  font-size: clamp(17px, 1.35vw, 21px);
  font-weight: 650;
  line-height: 1.62;
}

.planner-panel {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(23, 111, 134, .16);
  border-radius: 8px;
  background:
    linear-gradient(135deg, rgba(255, 255, 255, .88), rgba(239, 249, 250, .92)),
    radial-gradient(circle at 86% 0%, rgba(214, 168, 90, .14), transparent 34%);
  box-shadow: 0 24px 70px rgba(23, 111, 134, .1);
  padding: clamp(20px, 3vw, 34px);
}

.planner-panel::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: linear-gradient(90deg, rgba(139, 107, 60, .86), rgba(27, 113, 135, .66), rgba(139, 107, 60, 0));
}

.planner-panel-head {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  align-items: end;
  padding-bottom: 18px;
  border-bottom: 1px solid rgba(23, 111, 134, .14);
}

.planner-panel-head span {
  color: #8b6b3c;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .14em;
  text-transform: uppercase;
}

.planner-panel-head strong {
  max-width: 260px;
  color: #0b2226;
  font-family: var(--title-font);
  font-size: clamp(23px, 2vw, 32px);
  font-weight: 400;
  line-height: 1.06;
  text-align: right;
}

.planner-links {
  gap: 12px;
  margin-top: 20px;
}

.planner-links a {
  min-height: 128px;
  align-items: stretch;
  border: 1px solid rgba(23, 111, 134, .14);
  border-radius: 8px;
  background: rgba(255, 255, 255, .68);
  box-shadow: 0 14px 34px rgba(23, 111, 134, .06);
  padding: 18px;
  transition: transform .22s ease, border-color .22s ease, box-shadow .22s ease;
}

.planner-links a:hover {
  border-color: rgba(139, 107, 60, .34);
  box-shadow: 0 18px 44px rgba(23, 111, 134, .11);
  transform: translateY(-2px);
}

.planner-links a span {
  display: grid;
  gap: 10px;
}

.planner-links small {
  color: #8b6b3c;
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .13em;
  line-height: 1.2;
  text-transform: uppercase;
}

.planner-links strong {
  color: #102327;
  font-size: clamp(16px, 1.25vw, 19px);
  line-height: 1.28;
}

.planner-links em {
  align-self: end;
  color: #1b7187;
  font-style: normal;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
}

body.theme-night .planner-panel {
  border-color: rgba(247, 241, 232, .16);
  background:
    linear-gradient(135deg, rgba(8, 20, 24, .92), rgba(13, 31, 36, .92)),
    radial-gradient(circle at 88% 0%, rgba(214, 168, 90, .12), transparent 32%);
  box-shadow: 0 28px 72px rgba(0, 0, 0, .24);
}

body.theme-night .villa-planner-copy h2,
body.theme-night .planner-panel-head strong,
body.theme-night .planner-links strong {
  color: #f7f1e8 !important;
}

body.theme-night .villa-planner-copy p:not(.eyebrow) {
  color: #b9c8c9 !important;
}

body.theme-night .planner-links a {
  border-color: rgba(247, 241, 232, .12);
  background: rgba(255, 255, 255, .045);
  box-shadow: none;
}

body.theme-night .planner-links a:hover {
  border-color: rgba(214, 168, 90, .34);
  box-shadow: 0 18px 44px rgba(0, 0, 0, .22);
}

body.theme-night .planner-links em {
  color: #d6a85a;
}

.home-explore-planner {
  border-top: 1px solid rgba(23, 111, 134, .12);
  border-bottom: 1px solid rgba(23, 111, 134, .12);
}

.home-explore-planner .villa-planner-copy h2 {
  max-width: 660px;
}

.home-explore-planner .planner-panel-head strong {
  max-width: 330px;
}

.home-explore-planner .planner-links a {
  min-height: 138px;
}

.planner-mini-links {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-top: 16px;
  padding-top: 18px;
  border-top: 1px solid rgba(23, 111, 134, .14);
}

.planner-mini-links a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  border: 1px solid rgba(23, 111, 134, .13);
  border-radius: 999px;
  background: rgba(255, 255, 255, .48);
  color: #315a61;
  font-size: 12px;
  font-weight: 850;
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
  transition: border-color .2s ease, color .2s ease, background .2s ease;
}

.planner-mini-links a:hover {
  border-color: rgba(139, 107, 60, .32);
  background: rgba(255, 255, 255, .78);
  color: #8b6b3c;
}

body.theme-night .home-explore-planner {
  border-color: rgba(247, 241, 232, .1);
}

body.theme-night .planner-mini-links {
  border-top-color: rgba(247, 241, 232, .12);
}

body.theme-night .planner-mini-links a {
  border-color: rgba(247, 241, 232, .12);
  background: rgba(255, 255, 255, .035);
  color: #c9d7d8;
}

body.theme-night .planner-mini-links a:hover {
  border-color: rgba(214, 168, 90, .34);
  color: #d6a85a;
}

@media (max-width: 900px) {
  .villa-planner {
    grid-template-columns: 1fr;
    gap: 24px;
  }

  .villa-planner-copy {
    max-width: 720px;
  }

  .planner-panel-head {
    align-items: start;
    flex-direction: column;
  }

  .planner-panel-head strong {
    max-width: 100%;
    text-align: left;
  }
}

@media (max-width: 620px) {
  .villa-planner {
    padding-top: 54px;
    padding-bottom: 54px;
  }

  .villa-planner-copy h2 {
    font-size: 40px;
  }

  .planner-panel {
    padding: 16px;
  }

  .planner-links {
    grid-template-columns: 1fr;
  }

  .planner-links a {
    min-height: 112px;
  }

  .planner-mini-links {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* Current polish: discreet theme switch and clear online availability state. */
.nav-wrap .theme-toggle {
  width: 42px;
  min-width: 42px;
  min-height: 42px;
  padding: 0;
  gap: 0;
  border-radius: 999px;
  opacity: .86;
}

.nav-wrap .theme-toggle span {
  display: none;
}

.nav-wrap .theme-toggle:hover {
  opacity: 1;
  transform: translateY(-1px);
}

.nav-wrap .theme-toggle i {
  width: 12px;
  height: 12px;
}

body.theme-day .nav-wrap .theme-toggle {
  border-color: rgba(139, 107, 60, .24);
  background: rgba(255, 255, 255, .64);
  box-shadow: 0 10px 26px rgba(18, 58, 68, .06);
}

body.theme-day .nav-wrap .theme-toggle i {
  background: #d6a85a;
  box-shadow:
    0 0 0 5px rgba(214, 168, 90, .13),
    0 0 14px rgba(214, 168, 90, .28);
}

body.theme-night .nav-wrap .theme-toggle {
  border-color: rgba(247, 241, 232, .16);
  background: rgba(255, 255, 255, .035);
  box-shadow: none;
}

body.theme-night .nav-wrap .theme-toggle i {
  background: transparent;
  border: 1px solid rgba(247, 241, 232, .78);
  box-shadow:
    inset -4px -3px 0 #f7f1e8,
    0 0 12px rgba(247, 241, 232, .14);
}

.availability-online {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  color: #1c7b52 !important;
}

.availability-online span {
  position: relative;
  width: 10px;
  height: 10px;
  border-radius: 999px;
  background: #36f58b;
  box-shadow:
    0 0 0 5px rgba(54, 245, 139, .12),
    0 0 22px rgba(54, 245, 139, .68);
  animation: availabilityPulse 1.65s ease-in-out infinite;
}

.availability-online span::after {
  content: "";
  position: absolute;
  inset: -8px;
  border-radius: inherit;
  border: 1px solid rgba(54, 245, 139, .34);
  animation: availabilityHalo 1.65s ease-out infinite;
}

body.theme-night .availability-online {
  color: #8cf8b9 !important;
}

@keyframes availabilityPulse {
  0%,
  100% {
    transform: scale(.92);
    filter: saturate(1);
  }

  50% {
    transform: scale(1.08);
    filter: saturate(1.35);
  }
}

@keyframes availabilityHalo {
  0% {
    opacity: .7;
    transform: scale(.65);
  }

  100% {
    opacity: 0;
    transform: scale(1.35);
  }
}

@media (prefers-reduced-motion: reduce) {
  .availability-online span,
  .availability-online span::after {
    animation: none;
  }
}

@media (max-width: 520px) {
  .nav-wrap .theme-toggle {
    width: 40px;
    min-width: 40px;
    min-height: 40px;
  }
}

/* Footer refinement: quieter, lighter and closer to the availability typography. */
.premium-footer {
  padding: 0 !important;
  background: #f7fbfb !important;
  border-top: 1px solid rgba(23, 111, 134, .14) !important;
  color: #102327 !important;
}

.premium-footer::before {
  display: none !important;
}

.footer-shell,
.footer-bottom {
  max-width: 1240px;
  padding-inline: clamp(18px, 3vw, 34px);
}

.footer-shell {
  grid-template-columns: minmax(300px, 1fr) minmax(260px, .82fr) minmax(300px, .9fr);
  gap: clamp(26px, 4vw, 54px);
  padding-top: clamp(34px, 5vw, 58px);
  padding-bottom: 30px;
  align-items: start;
}

.footer-brand h2 {
  max-width: 420px;
  color: #102327 !important;
  font-family: var(--title-font);
  font-size: clamp(30px, 3.2vw, 44px);
  font-weight: 400;
  line-height: 1.05;
}

.footer-brand p:not(.eyebrow) {
  max-width: 430px;
  color: #526c70 !important;
  font-size: 15px;
  font-weight: 560;
  line-height: 1.7;
}

.footer-actions {
  gap: 8px;
  margin-top: 18px;
}

.footer-actions .btn {
  min-height: 42px;
  padding: 0 18px;
  font-size: 12px;
  letter-spacing: .02em;
}

.footer-panel {
  max-width: none;
  padding: 2px 0 0 24px;
  border: 0;
  border-left: 1px solid rgba(23, 111, 134, .16);
  border-radius: 0;
  background: transparent !important;
  box-shadow: none;
}

.footer-panel span,
.footer-links h2 {
  margin-bottom: 16px;
  color: #8b6b3c !important;
  font-size: 11px;
  font-weight: 720;
  letter-spacing: .18em;
}

.footer-panel dl {
  gap: 12px;
}

.footer-panel div {
  grid-template-columns: minmax(74px, .62fr) minmax(0, 1fr);
  gap: 14px;
  padding-bottom: 0;
  border-bottom: 0;
}

.footer-panel dt {
  color: #6b8084 !important;
  font-size: 10px;
  font-weight: 680;
  letter-spacing: .16em;
}

.footer-panel dd {
  color: #102327 !important;
  font-size: 14px;
  font-weight: 650;
  text-align: left;
}

.footer-links {
  gap: 24px;
  padding-left: 24px;
  border-left: 1px solid rgba(23, 111, 134, .16);
}

.footer-links a {
  color: #244b52 !important;
  margin-bottom: 9px !important;
  font-size: 14px;
  font-weight: 560;
}

.footer-links a:hover {
  color: #176f86 !important;
}

.footer-bottom {
  border-top: 1px solid rgba(23, 111, 134, .12);
  padding-top: 14px;
  padding-bottom: 18px;
  color: #6b8084 !important;
  font-size: 12px;
}

.footer-bottom a {
  color: #244b52 !important;
}

body.theme-day .premium-footer {
  background: #f7fbfb !important;
  color: #102327 !important;
}

body.theme-day .footer-brand h2,
body.theme-day .footer-panel dd,
body.theme-day .footer-links h2 {
  color: #102327 !important;
}

body.theme-day .footer-panel,
body.theme-day .footer-links {
  background: transparent !important;
}

body.theme-day .footer-panel span,
body.theme-day .footer-links h2 {
  color: #8b6b3c !important;
}

body.theme-day .footer-brand p:not(.eyebrow),
body.theme-day .footer-panel dt,
body.theme-day .footer-bottom {
  color: #526c70 !important;
}

body.theme-day .footer-links a,
body.theme-day .footer-bottom a {
  color: #244b52 !important;
}

body.theme-day .footer-links a:hover,
body.theme-day .footer-bottom a:hover {
  color: #176f86 !important;
}

body.theme-day .footer-panel,
body.theme-day .footer-links {
  border-left-color: rgba(23, 111, 134, .16) !important;
}

body.theme-day .footer-bottom {
  border-top-color: rgba(23, 111, 134, .12) !important;
}

body.theme-night .premium-footer {
  background: #03090b !important;
  color: #f7f1e8 !important;
  border-top-color: rgba(247, 241, 232, .12) !important;
}

body.theme-night .footer-brand h2,
body.theme-night .footer-panel dd,
body.theme-night .footer-links h2 {
  color: #f7f1e8 !important;
}

body.theme-night .footer-panel,
body.theme-night .footer-links {
  background: transparent !important;
}

body.theme-night .footer-panel span,
body.theme-night .footer-links h2 {
  color: #c4a77a !important;
}

body.theme-night .footer-brand p:not(.eyebrow),
body.theme-night .footer-panel dt,
body.theme-night .footer-bottom {
  color: #aebfc0 !important;
}

body.theme-night .footer-panel,
body.theme-night .footer-links {
  border-left-color: rgba(247, 241, 232, .12) !important;
}

body.theme-night .footer-links a,
body.theme-night .footer-bottom a {
  color: #c9d7d8 !important;
}

body.theme-night .footer-links a:hover,
body.theme-night .footer-bottom a:hover {
  color: #d6a85a !important;
}

body.theme-night .footer-bottom {
  border-top-color: rgba(247, 241, 232, .12) !important;
}

@media (max-width: 980px) {
  .footer-shell {
    grid-template-columns: 1fr 1fr;
  }

  .footer-brand {
    grid-column: 1 / -1;
  }

  .footer-panel {
    padding-left: 0;
    border-left: 0;
  }
}

@media (max-width: 680px) {
  .footer-shell {
    grid-template-columns: 1fr;
    padding-top: 38px;
    padding-bottom: 24px;
    gap: 28px;
  }

  .footer-brand {
    grid-column: auto;
  }

  .footer-brand h2 {
    font-size: 34px;
  }

  .footer-actions,
  .footer-bottom {
    display: grid;
  }

  .footer-actions {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .footer-links {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    padding-left: 0;
    border-left: 0;
    gap: 18px;
  }

  .footer-panel dl {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px 18px;
  }

  .footer-panel div {
    display: block;
  }

  .footer-panel dt {
    margin-bottom: 4px;
  }

  .footer-links a {
    margin-bottom: 7px !important;
    font-size: 13px;
  }
}

/* Earlier responsive steps: prevent the footer/final CTA from squeezing before mobile. */
@media (max-width: 1180px) {
  .final-cta {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) minmax(240px, 320px);
    align-items: center;
    gap: 28px;
    padding-top: 74px;
    padding-bottom: 74px;
  }

  .final-cta h2 {
    max-width: 780px;
    font-size: clamp(42px, 5.8vw, 68px);
  }

  .final-cta .cta-row {
    display: grid;
    grid-template-columns: 1fr;
    justify-self: end;
    width: min(100%, 320px);
  }

  .final-cta .btn {
    width: 100%;
  }

  .footer-shell {
    grid-template-columns: minmax(0, 1fr) minmax(300px, .95fr);
    gap: 34px;
  }

  .footer-brand {
    grid-column: 1 / -1;
  }

  .footer-brand h2,
  .footer-brand p:not(.eyebrow) {
    max-width: 680px;
  }

  .footer-panel {
    padding-left: 0;
    border-left: 0;
  }
}

@media (max-width: 860px) {
  .final-cta {
    grid-template-columns: 1fr;
    align-items: start;
    gap: 22px;
    padding-top: 64px;
    padding-bottom: 64px;
  }

  .final-cta h2 {
    font-size: clamp(38px, 8vw, 58px);
  }

  .final-cta .cta-row {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    justify-self: stretch;
    width: 100%;
  }

  .footer-shell {
    grid-template-columns: 1fr;
    gap: 28px;
  }

  .footer-brand {
    grid-column: auto;
  }

  .footer-links {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    padding-left: 0;
    border-left: 0;
  }

  .footer-panel dl {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px 18px;
  }

  .footer-panel div {
    display: block;
  }

  .footer-panel dt {
    margin-bottom: 4px;
  }
}

@media (max-width: 520px) {
  .final-cta .cta-row,
  .footer-actions,
  .footer-links,
  .footer-panel dl {
    grid-template-columns: 1fr;
  }
}

/* Footer button alignment: keep text perfectly centered in every footer CTA. */
.site-footer .footer-actions .btn,
.site-footer .footer-actions a.btn,
.site-footer .footer-actions .footer-ghost {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  line-height: 1.1;
  white-space: normal;
}

.site-footer .footer-actions {
  align-items: stretch;
}

/* Theme switch: explicit day/night choice with sun left and moon right. */
.nav-wrap .theme-toggle {
  position: relative;
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  justify-items: center;
  width: 76px;
  min-width: 76px;
  height: 38px;
  min-height: 38px;
  padding: 3px;
  gap: 0;
  overflow: hidden;
  border-radius: 999px;
  opacity: 1;
}

.nav-wrap .theme-toggle span {
  display: initial;
}

.theme-option {
  position: relative;
  z-index: 2;
  display: grid !important;
  place-items: center;
  width: 32px;
  height: 32px;
  border-radius: 999px;
  transition: opacity .2s ease, transform .2s ease;
}

.theme-thumb {
  position: absolute;
  z-index: 1;
  top: 3px;
  left: 3px;
  display: block !important;
  width: 32px;
  height: 32px;
  border-radius: 999px;
  background: rgba(255, 255, 255, .96);
  box-shadow:
    0 8px 18px rgba(18, 58, 68, .12),
    inset 0 0 0 1px rgba(139, 107, 60, .12);
  transition: transform .24s ease, background .24s ease, box-shadow .24s ease;
}

.theme-label {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  white-space: nowrap !important;
}

.theme-sun-icon,
.theme-moon-icon {
  position: relative;
  display: block !important;
  flex: 0 0 auto;
}

.theme-sun-icon {
  width: 12px;
  height: 12px;
  border-radius: 999px;
  background: #d6a85a;
  box-shadow:
    0 0 0 4px rgba(214, 168, 90, .16),
    0 0 13px rgba(214, 168, 90, .36);
}

.theme-moon-icon {
  width: 15px;
  height: 15px;
  border-radius: 999px;
  background: #526c70;
}

.theme-moon-icon::after {
  content: "";
  position: absolute;
  top: 0;
  left: 5px;
  width: 15px;
  height: 15px;
  border-radius: inherit;
  background: #f7fbfb;
}

.theme-toggle.is-night .theme-thumb {
  transform: translateX(38px);
  background: rgba(7, 17, 21, .96);
  box-shadow:
    0 8px 18px rgba(0, 0, 0, .26),
    inset 0 0 0 1px rgba(247, 241, 232, .16);
}

.theme-toggle.is-night .theme-option-day,
.theme-toggle.is-day .theme-option-night {
  opacity: .52;
}

.theme-toggle.is-night .theme-option-night,
.theme-toggle.is-day .theme-option-day {
  opacity: 1;
}

body.theme-day .nav-wrap .theme-toggle {
  border-color: rgba(139, 107, 60, .25);
  background:
    linear-gradient(90deg, rgba(214, 168, 90, .16), rgba(23, 111, 134, .08));
}

body.theme-day .theme-moon-icon::after {
  background: #f7fbfb;
}

body.theme-night .nav-wrap .theme-toggle {
  border-color: rgba(247, 241, 232, .16);
  background:
    linear-gradient(90deg, rgba(214, 168, 90, .1), rgba(247, 241, 232, .08));
}

body.theme-night .theme-moon-icon {
  background: #f7f1e8;
}

body.theme-night .theme-moon-icon::after {
  background: #071115;
}

body.theme-night .theme-sun-icon {
  background: #a8864e;
  box-shadow:
    0 0 0 4px rgba(214, 168, 90, .1),
    0 0 10px rgba(214, 168, 90, .18);
}

@media (max-width: 520px) {
  .nav-wrap .theme-toggle {
    width: 70px;
    min-width: 70px;
    height: 36px;
    min-height: 36px;
  }

  .theme-option,
  .theme-thumb {
    width: 30px;
    height: 30px;
  }

  .theme-toggle.is-night .theme-thumb {
    transform: translateX(34px);
  }
}

/* Villa opening: five-photo premium arrival section. */
.villa-photo-hero {
  max-width: none;
  padding: clamp(14px, 2vw, 28px) max(12px, calc((100vw - 1500px) / 2)) 34px;
  display: grid;
  grid-template-columns: minmax(0, 1.38fr) minmax(320px, .62fr);
  gap: 10px;
  background:
    radial-gradient(circle at 10% 0%, rgba(31, 129, 150, .13), transparent 28%),
    linear-gradient(135deg, #f6fbfc 0%, #edf8fa 58%, #fff8ec 100%);
  border-bottom: 1px solid rgba(23, 111, 134, .14);
}

.villa-photo-main,
.villa-photo-tile {
  position: relative;
  overflow: hidden;
  min-width: 0;
  border: 1px solid rgba(255, 255, 255, .52);
  background: #0b1f23;
}

.villa-photo-main {
  min-height: clamp(520px, 68vh, 740px);
  border-radius: 8px 0 0 8px;
  box-shadow: 0 22px 60px rgba(18, 58, 68, .14);
}

.villa-photo-main::after,
.villa-photo-tile::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.villa-photo-main::after {
  background:
    linear-gradient(90deg, rgba(2, 6, 7, .78), rgba(2, 6, 7, .3) 54%, rgba(2, 6, 7, .06)),
    linear-gradient(0deg, rgba(2, 6, 7, .72), transparent 58%);
}

.villa-photo-main img,
.villa-photo-tile img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  transition: transform .55s ease;
}

.villa-photo-main img {
  position: absolute;
  inset: 0;
}

.villa-photo-main:hover img,
.villa-photo-tile:hover img {
  transform: scale(1.035);
}

.villa-photo-copy {
  position: absolute;
  z-index: 2;
  left: clamp(22px, 5vw, 72px);
  right: clamp(18px, 6vw, 80px);
  bottom: clamp(24px, 6vw, 76px);
  max-width: 760px;
  color: #f8fbfb;
}

.villa-photo-copy .eyebrow {
  color: #d9bf91 !important;
}

.villa-photo-copy h1 {
  margin: 0;
  color: #f8fbfb;
  font-family: var(--title-font);
  font-size: clamp(52px, 7.4vw, 116px);
  font-weight: 400;
  line-height: .92;
  letter-spacing: 0;
  text-wrap: balance;
  text-shadow: 0 12px 40px rgba(0, 0, 0, .38);
}

.villa-photo-copy p:not(.eyebrow) {
  max-width: 670px;
  margin: 18px 0 0;
  color: rgba(248, 251, 251, .88);
  font-size: clamp(18px, 1.55vw, 26px);
  font-weight: 650;
  line-height: 1.34;
  text-shadow: 0 8px 24px rgba(0, 0, 0, .34);
}

.villa-photo-copy .cta-row {
  margin-top: 26px;
}

.villa-photo-copy .btn-ghost,
.villa-photo-copy .btn-text {
  color: #f8fbfb;
  border-color: rgba(248, 251, 251, .42);
}

.villa-photo-copy .btn-text {
  border-color: transparent;
  text-decoration-color: rgba(248, 251, 251, .62);
}

.villa-photo-tiles {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  grid-template-rows: repeat(2, minmax(0, 1fr));
  gap: 10px;
  min-height: clamp(520px, 68vh, 740px);
}

.villa-photo-tile {
  display: block;
  border-radius: 0;
  color: #fff;
  text-decoration: none;
}

.villa-photo-tile:nth-child(2) {
  border-radius: 0 8px 0 0;
}

.villa-photo-tile:nth-child(4) {
  border-radius: 0 0 8px 0;
}

.villa-photo-tile::after {
  background: linear-gradient(0deg, rgba(2, 6, 7, .56), transparent 55%);
}

.villa-photo-tile span {
  position: absolute;
  z-index: 2;
  left: 16px;
  right: 16px;
  bottom: 14px;
  color: rgba(255, 255, 255, .9);
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .14em;
  text-transform: uppercase;
}

.villa-hero-facts {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1px;
  overflow: hidden;
  border: 1px solid rgba(23, 111, 134, .14);
  border-radius: 8px;
  background: rgba(23, 111, 134, .12);
  box-shadow: 0 18px 50px rgba(18, 58, 68, .08);
}

.villa-hero-facts span {
  display: grid;
  gap: 4px;
  min-height: 92px;
  align-content: center;
  padding: 18px clamp(14px, 2vw, 28px);
  background: rgba(255, 255, 255, .82);
  color: var(--muted-ink);
  font-size: 15px;
  font-weight: 680;
  line-height: 1.2;
}

.villa-hero-facts strong {
  color: var(--ink);
  font-size: clamp(18px, 1.55vw, 24px);
  line-height: 1;
}

body.theme-night .villa-photo-hero {
  background:
    radial-gradient(circle at 14% 4%, rgba(31, 129, 150, .2), transparent 28%),
    linear-gradient(135deg, #020607 0%, #071115 62%, #12100c 100%);
  border-bottom-color: rgba(255, 255, 255, .11);
}

body.theme-night .villa-hero-facts {
  border-color: rgba(247, 241, 232, .12);
  background: rgba(247, 241, 232, .1);
}

body.theme-night .villa-hero-facts span {
  background: rgba(255, 255, 255, .055);
  color: rgba(247, 241, 232, .7);
}

body.theme-night .villa-hero-facts strong {
  color: #f7f1e8;
}

body.theme-night .villa-photo-copy .eyebrow,
body.theme-night .villa-photo-tile span {
  color: #e0c48f !important;
  text-shadow:
    0 1px 4px rgba(2, 6, 7, .95),
    0 0 18px rgba(2, 6, 7, .72);
}

@media (max-width: 1180px) {
  .villa-photo-hero {
    grid-template-columns: 1fr;
    padding-inline: clamp(12px, 2.4vw, 24px);
  }

  .villa-photo-main {
    min-height: clamp(500px, 64vh, 680px);
    border-radius: 8px;
  }

  .villa-photo-tiles {
    min-height: 0;
    grid-template-columns: repeat(4, minmax(190px, 1fr));
    grid-template-rows: 160px;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-snap-type: x proximity;
    padding-bottom: 4px;
  }

  .villa-photo-tile {
    border-radius: 8px !important;
    scroll-snap-align: start;
  }
}

@media (max-width: 760px) {
  .villa-photo-hero {
    padding: 10px 10px 24px;
    gap: 8px;
  }

  .villa-photo-main {
    min-height: min(72svh, 610px);
  }

  .villa-photo-main::after {
    background:
      linear-gradient(0deg, rgba(2, 6, 7, .84), rgba(2, 6, 7, .42) 52%, rgba(2, 6, 7, .08)),
      linear-gradient(90deg, rgba(2, 6, 7, .34), transparent 62%);
  }

  .villa-photo-copy {
    left: 16px;
    right: 16px;
    bottom: 18px;
  }

  .villa-photo-copy h1 {
    font-size: clamp(44px, 16vw, 68px);
    line-height: .94;
  }

  .villa-photo-copy p:not(.eyebrow) {
    margin-top: 14px;
    font-size: 17px;
  }

  .villa-photo-copy .cta-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
    margin-top: 18px;
  }

  .villa-photo-copy .btn {
    min-height: 48px;
    width: 100%;
    padding-inline: 12px;
  }

  .villa-photo-copy .btn-text {
    grid-column: 1 / -1;
    justify-self: start;
    width: auto;
    min-height: 34px;
    padding: 0;
  }

  .villa-photo-tiles {
    grid-template-columns: repeat(4, 42vw);
    grid-template-rows: 124px;
    gap: 8px;
  }

  .villa-photo-tile span {
    left: 12px;
    right: 12px;
    bottom: 10px;
    font-size: 10px;
  }

  .villa-hero-facts {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .villa-hero-facts span {
    min-height: 84px;
    padding: 15px;
    font-size: 13px;
  }
}

@media (max-width: 420px) {
  .villa-photo-copy .cta-row {
    grid-template-columns: 1fr;
  }

  .villa-photo-tiles {
    grid-template-columns: repeat(4, 58vw);
  }

  .villa-hero-facts {
    grid-template-columns: 1fr;
  }
}

/* Hero typography rule: semibold only, never heavy bold inside hero areas. */
.hero h1,
.page-hero h1,
.editorial-hero-copy h1,
.villa-photo-copy h1,
.hero .eyebrow,
.page-hero .eyebrow,
.editorial-hero-copy .eyebrow,
.villa-photo-copy .eyebrow,
.hero p,
.page-hero p,
.editorial-hero-copy p,
.villa-photo-copy p,
.hero .btn,
.page-hero .btn,
.editorial-hero .btn,
.villa-photo-copy .btn,
.villa-photo-tile span,
.villa-hero-facts span,
.villa-hero-facts strong {
  font-weight: 600 !important;
}

/* Final theme switch: high-contrast Divine palette, no yellow icon color. */
.nav-wrap .theme-toggle {
  width: 78px;
  min-width: 78px;
  height: 40px;
  min-height: 40px;
  padding: 4px;
  border-radius: 12px;
  border-color: rgba(11, 31, 35, .16);
  background:
    linear-gradient(135deg, rgba(255, 255, 255, .92), rgba(238, 249, 250, .72)),
    rgba(255, 255, 255, .82);
  box-shadow:
    0 12px 28px rgba(18, 58, 68, .09),
    inset 0 0 0 1px rgba(255, 255, 255, .72);
}

.theme-option {
  width: 32px;
  height: 32px;
}

.theme-thumb {
  top: 4px;
  left: 4px;
  width: 32px;
  height: 32px;
  border-radius: 9px;
  background: #0b1f23;
  box-shadow:
    0 10px 22px rgba(11, 31, 35, .22),
    inset 0 0 0 1px rgba(247, 251, 251, .12);
}

.theme-sun-icon {
  width: 18px;
  height: 18px;
  border-radius: 999px;
  color: #f7fbfb;
  background:
    radial-gradient(circle at center, currentColor 0 4px, transparent 4.5px),
    conic-gradient(
      from 0deg,
      transparent 0deg 18deg,
      currentColor 18deg 30deg,
      transparent 30deg 60deg,
      currentColor 60deg 72deg,
      transparent 72deg 102deg,
      currentColor 102deg 114deg,
      transparent 114deg 144deg,
      currentColor 144deg 156deg,
      transparent 156deg 186deg,
      currentColor 186deg 198deg,
      transparent 198deg 228deg,
      currentColor 228deg 240deg,
      transparent 240deg 270deg,
      currentColor 270deg 282deg,
      transparent 282deg 312deg,
      currentColor 312deg 324deg,
      transparent 324deg 360deg
    );
  box-shadow: none;
}

.theme-moon-icon {
  width: 18px;
  height: 18px;
  border-radius: 999px;
  color: #5f787d;
  background: transparent;
  box-shadow: inset -6px 0 0 currentColor;
}

.theme-moon-icon::after {
  display: none;
}

.theme-toggle.is-night .theme-thumb {
  transform: translateX(38px);
  background: #f7f1e8;
  box-shadow:
    0 10px 22px rgba(0, 0, 0, .28),
    inset 0 0 0 1px rgba(11, 31, 35, .08);
}

.theme-toggle.is-day .theme-option-day,
.theme-toggle.is-night .theme-option-night {
  opacity: 1;
}

.theme-toggle.is-day .theme-option-night,
.theme-toggle.is-night .theme-option-day {
  opacity: .58;
}

.theme-toggle.is-day .theme-sun-icon {
  color: #f7fbfb;
}

.theme-toggle.is-day .theme-moon-icon {
  color: #5f787d;
}

.theme-toggle.is-night .theme-sun-icon {
  color: rgba(247, 241, 232, .55);
}

.theme-toggle.is-night .theme-moon-icon {
  color: #0b1f23;
}

body.theme-day .nav-wrap .theme-toggle {
  border-color: rgba(23, 111, 134, .16);
  background:
    linear-gradient(135deg, rgba(255, 255, 255, .94), rgba(238, 249, 250, .78)),
    rgba(255, 255, 255, .88);
}

body.theme-night .nav-wrap .theme-toggle {
  border-color: rgba(247, 241, 232, .16);
  background:
    linear-gradient(135deg, rgba(255, 255, 255, .08), rgba(23, 111, 134, .1)),
    #071115;
  box-shadow:
    0 12px 28px rgba(0, 0, 0, .18),
    inset 0 0 0 1px rgba(247, 241, 232, .08);
}

body.theme-night .theme-moon-icon::after,
body.theme-day .theme-moon-icon::after {
  display: none;
}

@media (max-width: 520px) {
  .nav-wrap .theme-toggle {
    width: 74px;
    min-width: 74px;
    height: 38px;
    min-height: 38px;
    padding: 3px;
    border-radius: 11px;
  }

  .theme-option,
  .theme-thumb {
    width: 32px;
    height: 32px;
  }

  .theme-thumb {
    top: 3px;
    left: 3px;
  }

  .theme-toggle.is-night .theme-thumb {
    transform: translateX(36px);
  }
}

/* Premium refinement: smaller header controls and lighter hotel-style hero text. */
.nav-wrap .theme-toggle {
  width: 62px;
  min-width: 62px;
  height: 32px;
  min-height: 32px;
  padding: 3px;
  border-radius: 10px;
  box-shadow:
    0 8px 18px rgba(18, 58, 68, .07),
    inset 0 0 0 1px rgba(255, 255, 255, .62);
}

.theme-option,
.theme-thumb {
  width: 26px;
  height: 26px;
}

.theme-thumb {
  top: 3px;
  left: 3px;
  border-radius: 8px;
  box-shadow:
    0 6px 14px rgba(11, 31, 35, .16),
    inset 0 0 0 1px rgba(247, 251, 251, .12);
}

.theme-sun-icon,
.theme-moon-icon {
  width: 14px;
  height: 14px;
}

.theme-sun-icon {
  background:
    radial-gradient(circle at center, currentColor 0 3px, transparent 3.5px),
    conic-gradient(
      from 0deg,
      transparent 0deg 18deg,
      currentColor 18deg 28deg,
      transparent 28deg 60deg,
      currentColor 60deg 70deg,
      transparent 70deg 102deg,
      currentColor 102deg 112deg,
      transparent 112deg 144deg,
      currentColor 144deg 154deg,
      transparent 154deg 186deg,
      currentColor 186deg 196deg,
      transparent 196deg 228deg,
      currentColor 228deg 238deg,
      transparent 238deg 270deg,
      currentColor 270deg 280deg,
      transparent 280deg 312deg,
      currentColor 312deg 322deg,
      transparent 322deg 360deg
    );
}

.theme-moon-icon {
  box-shadow: inset -4px 0 0 currentColor;
}

.theme-toggle.is-night .theme-thumb {
  transform: translateX(30px);
}

.nav-toggle {
  width: 42px !important;
  min-width: 42px !important;
  height: 42px !important;
  min-height: 42px !important;
  flex: 0 0 42px !important;
  border-radius: 10px !important;
  border-color: rgba(11, 31, 35, .14) !important;
  background: rgba(255, 255, 255, .64) !important;
  box-shadow:
    0 8px 18px rgba(18, 58, 68, .06),
    inset 0 0 0 1px rgba(255, 255, 255, .62) !important;
}

.nav-toggle span {
  width: 16px !important;
  height: 1px !important;
  margin: 3.8px auto !important;
  background: #0b1f23 !important;
}

.nav-toggle.is-open span:nth-child(1) {
  transform: translateY(5px) rotate(40deg);
}

.nav-toggle.is-open span:nth-child(3) {
  transform: translateY(-5px) rotate(-40deg);
}

body.theme-night .nav-toggle {
  border-color: rgba(247, 241, 232, .16) !important;
  background: rgba(255, 255, 255, .045) !important;
  box-shadow: inset 0 0 0 1px rgba(247, 241, 232, .06) !important;
}

body.theme-night .nav-toggle span {
  background: rgba(247, 241, 232, .86) !important;
}

.hero h1,
.page-hero h1,
.editorial-hero-copy h1,
.villa-photo-copy h1 {
  font-weight: 400 !important;
  letter-spacing: 0 !important;
}

.villa-photo-copy h1 {
  font-size: clamp(44px, 6vw, 88px);
  line-height: 1;
  text-shadow: 0 8px 30px rgba(0, 0, 0, .26);
}

.hero p,
.page-hero p,
.editorial-hero-copy p,
.villa-photo-copy p {
  font-weight: 500 !important;
}

.hero .eyebrow,
.page-hero .eyebrow,
.editorial-hero-copy .eyebrow,
.villa-photo-copy .eyebrow {
  font-weight: 600 !important;
  letter-spacing: .18em;
}

.villa-photo-copy p:not(.eyebrow) {
  max-width: 620px;
  color: rgba(248, 251, 251, .82);
  font-size: clamp(16.5px, 1.22vw, 20px);
  line-height: 1.38;
  text-shadow: 0 5px 18px rgba(0, 0, 0, .22);
}

.hero .btn,
.page-hero .btn,
.editorial-hero .btn,
.villa-photo-copy .btn {
  font-weight: 600 !important;
}

@media (max-width: 760px) {
  .villa-photo-copy h1 {
    font-size: clamp(36px, 11vw, 52px);
    line-height: 1.04;
  }

  .villa-photo-copy p:not(.eyebrow) {
    font-size: 15.5px;
  }
}

@media (max-width: 520px) {
  .nav-wrap .theme-toggle {
    width: 58px;
    min-width: 58px;
    height: 30px;
    min-height: 30px;
    border-radius: 9px;
  }

  .theme-option,
  .theme-thumb {
    width: 24px;
    height: 24px;
  }

  .theme-sun-icon,
  .theme-moon-icon {
    width: 13px;
    height: 13px;
  }

  .theme-toggle.is-night .theme-thumb {
    transform: translateX(28px);
  }

  .nav-toggle {
    width: 40px !important;
    min-width: 40px !important;
    height: 40px !important;
    min-height: 40px !important;
    flex: 0 0 40px !important;
  }
}

/* Final typography and mobile interaction polish. */
.site-menu a,
.nav-cta,
.btn,
.inline-link,
.footer-actions .btn,
.footer-links a,
.footer-panel dt,
.footer-panel dd,
.guide-links a,
.planner-links a,
.planner-mini-links a,
.request-form label,
.form-status,
.stay-step-actions .btn,
.availability-page-builder .btn,
.villa-card .btn,
.home-review-strip strong,
.home-review-strip a,
.gallery-page .btn,
.page-booking-form .btn {
  font-weight: 600 !important;
}

.eyebrow,
.section-head .eyebrow,
.planner-panel-head span,
.guide-links small,
.footer-panel > span,
.footer-links h2 {
  font-weight: 650 !important;
}

.site-menu a.active,
.site-menu a:hover {
  color: #176f86 !important;
}

.home .site-menu a.active,
.home .site-menu a:hover {
  color: #176f86 !important;
}

.home .btn-light {
  background: #176f86 !important;
  border-color: #176f86 !important;
  color: #ffffff !important;
  box-shadow: 0 16px 34px rgba(23, 111, 134, .18);
}

.home .btn-light:hover {
  background: #0f5d6d !important;
  border-color: #0f5d6d !important;
}

@media (max-width: 900px) {
  .site-menu a {
    min-height: 46px;
    font-weight: 600 !important;
  }

  .site-menu a:not(.nav-cta)::after {
    color: currentColor;
    opacity: .28;
    font-size: 17px;
  }

  body.theme-day .site-menu a.active,
  body.theme-day .site-menu a:hover {
    background: rgba(23, 111, 134, .075) !important;
    border-color: rgba(23, 111, 134, .18) !important;
    color: #176f86 !important;
  }

  body.theme-night .site-menu a.active,
  body.theme-night .site-menu a:hover {
    background: rgba(23, 111, 134, .18) !important;
    border-color: rgba(132, 206, 213, .2) !important;
    color: #dff6f7 !important;
  }

  .nav-wrap .theme-toggle {
    width: 56px;
    min-width: 56px;
    height: 30px;
    min-height: 30px;
    padding: 3px;
    border-radius: 9px;
  }

  .theme-option,
  .theme-thumb {
    width: 24px;
    height: 24px;
  }

  .theme-thumb {
    border-radius: 7px;
  }

  .theme-sun-icon,
  .theme-moon-icon {
    width: 12px;
    height: 12px;
  }

  .theme-sun-icon {
    background:
      radial-gradient(circle at center, currentColor 0 2.4px, transparent 2.9px),
      conic-gradient(
        from 0deg,
        transparent 0deg 18deg,
        currentColor 18deg 28deg,
        transparent 28deg 60deg,
        currentColor 60deg 70deg,
        transparent 70deg 102deg,
        currentColor 102deg 112deg,
        transparent 112deg 144deg,
        currentColor 144deg 154deg,
        transparent 154deg 186deg,
        currentColor 186deg 196deg,
        transparent 196deg 228deg,
        currentColor 228deg 238deg,
        transparent 238deg 270deg,
        currentColor 270deg 280deg,
        transparent 280deg 312deg,
        currentColor 312deg 322deg,
        transparent 322deg 360deg
      );
  }

  .theme-moon-icon {
    box-shadow: inset -3.5px 0 0 currentColor;
  }

  .theme-toggle.is-night .theme-thumb {
    transform: translateX(26px);
  }

  .nav-toggle {
    width: 38px !important;
    min-width: 38px !important;
    height: 38px !important;
    min-height: 38px !important;
    flex: 0 0 38px !important;
    border-radius: 9px !important;
  }

  .nav-toggle span {
    width: 15px !important;
    margin: 3.5px auto !important;
  }

  .nav-toggle.is-open span:nth-child(1) {
    transform: translateY(4.5px) rotate(40deg);
  }

  .nav-toggle.is-open span:nth-child(3) {
    transform: translateY(-4.5px) rotate(-40deg);
  }
}

/* Final soft-weight pass: keep the interface premium, not heavy. */
a,
button {
  -webkit-tap-highlight-color: rgba(23, 111, 134, .14);
}

.theme-toggle,
.theme-label,
.theme-option,
.availability-legend,
.availability-legend span,
.month-picker-head span,
.month-picker-head em,
.month-card-title span,
.month-card-title em,
.month-stats small,
.month-blocks span,
.month-year-tabs button,
.month-year-group h3,
.month-choice strong,
.month-choice span,
.month-choice small,
.planner-links strong,
.planner-links em,
.home-review-strip span,
.home-review-strip em,
.home-review-strip cite,
.home-review-strip a,
.review-score .review-stars,
.footer-bottom a {
  font-weight: 600 !important;
}

.month-card-title strong,
.month-stats strong,
.review-score strong {
  font-weight: 650 !important;
}

@media (max-width: 900px) {
  body.theme-day .site-menu a:focus,
  body.theme-day .site-menu a:active {
    background: rgba(23, 111, 134, .075) !important;
    border-color: rgba(23, 111, 134, .18) !important;
    color: #176f86 !important;
  }

  body.theme-night .site-menu a:focus,
  body.theme-night .site-menu a:active {
    background: rgba(23, 111, 134, .18) !important;
    border-color: rgba(132, 206, 213, .2) !important;
    color: #dff6f7 !important;
  }
}

/* Booking form contrast pass. */
.page-booking-form,
.request-form {
  --form-label: #7f633c;
  --form-ink: #102327;
  --form-muted: #526f75;
  --form-border: rgba(16, 35, 39, .24);
  --form-border-strong: rgba(23, 111, 134, .48);
  --form-field-bg: #ffffff;
  --form-card-bg: rgba(255, 255, 255, .96);
}

.page-booking-form label,
.request-form label {
  color: var(--form-label) !important;
  font-weight: 650 !important;
}

.page-booking-form input,
.page-booking-form textarea,
.page-booking-form select,
.request-form input,
.request-form textarea,
.request-form select {
  background: var(--form-field-bg) !important;
  border-color: var(--form-border) !important;
  color: var(--form-ink) !important;
  box-shadow: inset 0 0 0 1px rgba(16, 35, 39, .02);
}

.page-booking-form input::placeholder,
.page-booking-form textarea::placeholder,
.request-form input::placeholder,
.request-form textarea::placeholder {
  color: var(--form-muted) !important;
  opacity: 1;
}

.page-booking-form input:focus,
.page-booking-form textarea:focus,
.page-booking-form select:focus,
.request-form input:focus,
.request-form textarea:focus,
.request-form select:focus,
.divine-date-trigger:focus-visible {
  border-color: var(--form-border-strong) !important;
  outline: 3px solid rgba(23, 111, 134, .14);
  outline-offset: 2px;
}

.page-booking-form .divine-date-trigger,
.request-form .divine-date-trigger {
  background: var(--form-field-bg) !important;
  border-color: var(--form-border) !important;
  color: var(--form-ink) !important;
}

.page-booking-form .date-trigger-copy strong,
.request-form .date-trigger-copy strong {
  color: var(--form-ink) !important;
  font-weight: 650 !important;
}

.page-booking-form .date-trigger-copy small,
.request-form .date-trigger-copy small {
  color: var(--form-muted) !important;
  font-weight: 600 !important;
}

.page-booking-form .date-trigger-icon,
.request-form .date-trigger-icon {
  border-color: rgba(127, 99, 60, .42) !important;
}

.page-booking-form .date-trigger-icon:before,
.page-booking-form .date-trigger-icon:after,
.request-form .date-trigger-icon:before,
.request-form .date-trigger-icon:after {
  background: #9a7441 !important;
}

.page-booking-form .date-trigger-icon i,
.request-form .date-trigger-icon i {
  background: rgba(127, 99, 60, .42) !important;
}

.page-booking-form .date-trigger-icon b,
.request-form .date-trigger-icon b {
  background: linear-gradient(90deg, #9a7441 35%, transparent 35% 52%, #9a7441 52% 82%, transparent 82%) !important;
  opacity: .86;
}

.page-booking-form .date-trigger-arrow,
.request-form .date-trigger-arrow {
  color: #9a7441 !important;
}

.page-booking-form .btn-ghost,
.request-form .btn-ghost {
  background: #ffffff !important;
  border-color: rgba(23, 111, 134, .36) !important;
  color: #102327 !important;
}

.page-booking-form .btn-ghost:hover,
.request-form .btn-ghost:hover {
  background: rgba(23, 111, 134, .08) !important;
  border-color: rgba(23, 111, 134, .58) !important;
  color: #0f5d6d !important;
}

[data-book-online][aria-disabled="true"] {
  background: #d3dbdd !important;
  border-color: #d3dbdd !important;
  color: #40565b !important;
  opacity: 1 !important;
  filter: none !important;
}

body.theme-night .page-booking-form,
body.theme-night .request-form {
  --form-label: #d7bd92;
  --form-ink: #f7fbfb;
  --form-muted: #c0ced0;
  --form-border: rgba(247, 251, 251, .28);
  --form-border-strong: rgba(132, 206, 213, .58);
  --form-field-bg: #0b171b;
  --form-card-bg: rgba(11, 23, 27, .92);
}

body.theme-night .page-booking-form,
body.theme-night .request-form {
  background:
    linear-gradient(145deg, rgba(13, 27, 33, .98), rgba(7, 17, 21, .98)),
    linear-gradient(180deg, rgba(247, 251, 251, .04), transparent 54%) !important;
  border-color: rgba(247, 251, 251, .18) !important;
}

body.theme-night .page-booking-form input,
body.theme-night .page-booking-form textarea,
body.theme-night .page-booking-form select,
body.theme-night .request-form input,
body.theme-night .request-form textarea,
body.theme-night .request-form select,
body.theme-night .page-booking-form .divine-date-trigger,
body.theme-night .request-form .divine-date-trigger {
  background: var(--form-field-bg) !important;
  border-color: var(--form-border) !important;
  color: var(--form-ink) !important;
}

body.theme-night .page-booking-form input:focus,
body.theme-night .page-booking-form textarea:focus,
body.theme-night .page-booking-form select:focus,
body.theme-night .request-form input:focus,
body.theme-night .request-form textarea:focus,
body.theme-night .request-form select:focus,
body.theme-night .divine-date-trigger:focus-visible {
  outline-color: rgba(132, 206, 213, .18);
}

body.theme-night .page-booking-form .btn-ghost,
body.theme-night .request-form .btn-ghost {
  background: transparent !important;
  border-color: rgba(247, 251, 251, .62) !important;
  color: #f7fbfb !important;
}

body.theme-night .page-booking-form .btn-ghost:hover,
body.theme-night .request-form .btn-ghost:hover {
  background: rgba(247, 251, 251, .1) !important;
  border-color: rgba(132, 206, 213, .72) !important;
  color: #ffffff !important;
}

body.theme-night [data-book-online][aria-disabled="true"] {
  background: rgba(247, 251, 251, .14) !important;
  border-color: rgba(247, 251, 251, .24) !important;
  color: rgba(247, 251, 251, .82) !important;
}

.stay-card .btn-ghost,
.stay-step-actions .btn-ghost,
.availability-request-section .btn-ghost,
.page-booking-section .btn-ghost,
.contact-page .btn-ghost {
  background: #ffffff !important;
  border-color: rgba(23, 111, 134, .38) !important;
  color: #102327 !important;
}

.stay-card .btn-ghost:hover,
.stay-step-actions .btn-ghost:hover,
.availability-request-section .btn-ghost:hover,
.page-booking-section .btn-ghost:hover,
.contact-page .btn-ghost:hover {
  background: rgba(23, 111, 134, .08) !important;
  border-color: rgba(23, 111, 134, .62) !important;
  color: #0f5d6d !important;
}

body.theme-night .stay-card .btn-ghost,
body.theme-night .stay-step-actions .btn-ghost,
body.theme-night .availability-request-section .btn-ghost,
body.theme-night .page-booking-section .btn-ghost,
body.theme-night.contact-page .btn-ghost {
  background: rgba(247, 251, 251, .08) !important;
  border-color: rgba(247, 251, 251, .62) !important;
  color: #f7fbfb !important;
}

body.theme-night .stay-card .btn-ghost:hover,
body.theme-night .stay-step-actions .btn-ghost:hover,
body.theme-night .availability-request-section .btn-ghost:hover,
body.theme-night .page-booking-section .btn-ghost:hover,
body.theme-night.contact-page .btn-ghost:hover {
  background: rgba(247, 251, 251, .14) !important;
  border-color: rgba(132, 206, 213, .72) !important;
  color: #ffffff !important;
}

body.theme-night .stay-card {
  background:
    linear-gradient(145deg, rgba(13, 27, 33, .98), rgba(7, 17, 21, .98)),
    linear-gradient(180deg, rgba(214, 168, 90, .06), transparent 54%) !important;
  border-color: rgba(247, 251, 251, .18) !important;
  color: #f7f1e8 !important;
}

body.theme-night .stay-card .month-choice {
  background: rgba(247, 251, 251, .055) !important;
  border-color: rgba(214, 168, 90, .2) !important;
  color: #f7f1e8 !important;
}

body.theme-night .stay-card .month-choice.has-availability {
  background: rgba(98, 191, 158, .11) !important;
  border-color: rgba(98, 191, 158, .32) !important;
}

body.theme-night .stay-card .month-choice strong {
  color: #f7f1e8 !important;
}

body.theme-night .stay-card .month-choice span {
  color: #d7bd92 !important;
}

body.theme-night .stay-card .month-choice small {
  color: #c0ced0 !important;
}

.hero .btn-text,
.villa-photo-copy .btn-text {
  color: #f7fbfb !important;
  text-decoration-color: rgba(247, 251, 251, .72) !important;
}

.hero .btn-text:hover,
.villa-photo-copy .btn-text:hover {
  color: #ffffff !important;
  text-decoration-color: #ffffff !important;
}

[data-book-online][aria-disabled="true"],
body.theme-night [data-book-online][aria-disabled="true"] {
  background: #d3dbdd !important;
  border-color: #d3dbdd !important;
  color: #40565b !important;
}

/* Final logo finish. */
.brand {
  width: max-content;
  justify-items: center;
}

.brand:before,
.brand:after {
  display: block;
  justify-self: center;
  text-align: center;
}

.brand:before {
  background:
    linear-gradient(180deg, #ffffff 0%, #eff8f7 22%, #9fb4ba 54%, #ffffff 76%, #d3e0e2 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
}

body.theme-day .brand:before {
  background:
    linear-gradient(180deg, #0b2a2f 0%, #183f45 30%, #789097 52%, #0f3439 78%, #2b5860 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
}

@media (max-width: 900px) {
  .brand {
    flex: 0 0 auto !important;
    width: max-content;
    margin-right: auto;
    justify-items: center !important;
  }

  .brand:before,
  .brand:after {
    width: max-content;
    text-align: center !important;
  }
}

/* Footer signature pass. */
.premium-footer {
  padding: 0 !important;
  background:
    radial-gradient(circle at 6% 18%, rgba(27, 113, 135, .09), transparent 28%),
    linear-gradient(135deg, #f8fcfc 0%, #eef8f9 62%, #fffaf2 100%) !important;
  border-top: 1px solid rgba(16, 35, 39, .1) !important;
  color: #102327 !important;
}

.premium-footer:before,
.premium-footer::before {
  display: none !important;
}

.footer-shell {
  max-width: 1240px;
  margin: auto;
  display: grid;
  grid-template-columns: minmax(270px, 1.08fr) minmax(190px, .48fr) minmax(230px, .62fr);
  gap: clamp(34px, 5vw, 76px);
  align-items: start;
  padding: clamp(42px, 6vw, 74px) clamp(18px, 3vw, 34px) 34px;
}

.footer-brand {
  display: grid;
  gap: 18px;
}

.footer-logo {
  display: inline-grid !important;
  width: max-content;
  gap: 1px;
  text-decoration: none !important;
  color: #102327 !important;
}

.footer-logo-main {
  display: block;
  font-family: Inter, Arial, sans-serif;
  font-size: clamp(46px, 5.6vw, 82px);
  font-weight: 650;
  line-height: .78;
  letter-spacing: -.055em;
  color: #11191b;
}

.footer-logo-main span {
  display: inline-block;
  letter-spacing: -.03em;
  margin-left: .055em;
}

.footer-logo-sub {
  display: block;
  justify-self: end;
  padding-right: .12em;
  font-family: Inter, Arial, sans-serif;
  font-size: clamp(14px, 1.7vw, 24px);
  font-weight: 600;
  line-height: 1;
  letter-spacing: .34em;
  color: #11191b;
}

.footer-rating {
  display: grid;
  gap: 3px;
  width: max-content;
  min-width: 200px;
  padding-top: 4px;
}

.footer-stars {
  color: #9b7441;
  font-size: 16px;
  letter-spacing: .08em;
  line-height: 1;
}

.footer-rating strong {
  color: #102327;
  font-size: 18px;
  font-weight: 650;
  line-height: 1.1;
}

.footer-rating span:last-child {
  color: #526c70;
  font-size: 11px;
  font-weight: 650;
  letter-spacing: .14em;
  line-height: 1.2;
  text-transform: uppercase;
}

.footer-links,
.footer-contact {
  display: grid;
  grid-template-columns: 1fr !important;
  gap: 10px;
  padding-top: 7px;
  padding-left: clamp(18px, 2.5vw, 30px);
  border-left: 1px solid rgba(16, 35, 39, .12);
}

.footer-villas,
.footer-useful {
  display: grid;
}

.footer-links h2,
.footer-contact h2 {
  margin: 0 0 8px;
  color: #8b6b3c !important;
  font-size: 11px;
  font-weight: 650;
  letter-spacing: .2em;
  line-height: 1;
  text-transform: uppercase;
}

.footer-links a,
.footer-contact a {
  display: block;
  width: max-content;
  max-width: 100%;
  color: #244b52 !important;
  font-size: 15px;
  font-weight: 540;
  line-height: 1.3;
  margin: 0 !important;
  text-decoration: none;
}

.footer-links a:hover,
.footer-contact a:hover,
.footer-bottom a:hover {
  color: #176f86 !important;
}

.footer-bottom {
  max-width: 1240px;
  margin: auto;
  display: flex;
  justify-content: space-between;
  gap: 18px;
  padding: 15px clamp(18px, 3vw, 34px) 20px;
  border-top: 1px solid rgba(16, 35, 39, .1);
  color: #657d81 !important;
  font-size: 12px;
  font-weight: 520;
}

.footer-bottom a {
  color: #244b52 !important;
  text-decoration: none;
  font-weight: 600;
}

body.theme-night .premium-footer {
  background:
    radial-gradient(circle at 8% 16%, rgba(27, 113, 135, .16), transparent 30%),
    linear-gradient(135deg, #020607 0%, #061215 60%, #111716 100%) !important;
  border-top-color: rgba(247, 241, 232, .12) !important;
  color: #f7f1e8 !important;
}

body.theme-night .footer-logo-main,
body.theme-night .footer-logo-sub,
body.theme-night .footer-rating strong {
  color: #f7f1e8;
}

body.theme-night .footer-rating span:last-child,
body.theme-night .footer-bottom {
  color: #aebfc0 !important;
}

body.theme-night .footer-links,
body.theme-night .footer-contact {
  border-left-color: rgba(247, 241, 232, .13);
}

body.theme-night .footer-links h2,
body.theme-night .footer-contact h2,
body.theme-night .footer-stars {
  color: #c4a77a !important;
}

body.theme-night .footer-links a,
body.theme-night .footer-contact a,
body.theme-night .footer-bottom a {
  color: #d8e4e3 !important;
}

body.theme-night .footer-bottom {
  border-top-color: rgba(247, 241, 232, .12);
}

@media (max-width: 840px) {
  .footer-shell {
    grid-template-columns: 1fr 1fr;
    gap: 28px 30px;
  }

  .footer-brand {
    grid-column: 1 / -1;
  }

  .footer-links {
    padding-left: 0;
    border-left: 0;
  }
}

@media (max-width: 560px) {
  .footer-shell {
    grid-template-columns: 1fr;
    padding-top: 40px;
    padding-bottom: 26px;
    gap: 28px;
  }

  .footer-logo {
    margin-inline: auto;
  }

  .footer-rating {
    width: 100%;
    justify-items: center;
    text-align: center;
  }

  .footer-links,
  .footer-contact {
    padding-left: 0;
    border-left: 0;
    justify-items: center;
    text-align: center;
  }

  .footer-links a,
  .footer-contact a {
    width: 100%;
  }

  .footer-bottom {
    display: grid;
    justify-items: center;
    text-align: center;
  }
}

/* Unified text wordmark: header is the source of truth. */
.brand {
  min-width: 174px;
  --wordmark-main-size: 34px;
  --wordmark-villas-width: 73%;
  --wordmark-villas-tracking: .52em;
  --wordmark-ink: linear-gradient(180deg, #ffffff 0%, #eff8f7 22%, #9fb4ba 54%, #ffffff 76%, #d3e0e2 100%);
}

.brand:before {
  content: none !important;
  font-family: inherit;
  font-size: 34px;
  font-weight: 300;
  letter-spacing: .18em;
  line-height: .84;
  margin-right: -.18em;
}

.brand:after {
  content: none !important;
  font-family: inherit;
  font-size: 10px;
  font-weight: 800;
  justify-self: end;
  width: var(--wordmark-villas-width);
  letter-spacing: var(--wordmark-villas-tracking);
  line-height: 1;
  margin-right: calc(var(--wordmark-villas-tracking) * -1);
  text-align: center;
  background:
    linear-gradient(180deg, #ffffff 0%, #eff8f7 22%, #9fb4ba 54%, #ffffff 76%, #d3e0e2 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
}

.brand-wordmark {
  display: inline-grid;
  justify-items: center;
  gap: .08em;
  width: max-content;
  line-height: 1;
}

.brand-wordmark-main,
.brand-wordmark-sub,
.brand-wordmark .wordmark-name,
.brand-wordmark .wordmark-dot {
  background: var(--wordmark-ink);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
}

.brand-wordmark-main {
  display: block;
  font-family: inherit;
  font-size: var(--wordmark-main-size);
  font-weight: 300;
  letter-spacing: .18em;
  line-height: .84;
  margin-right: -.18em;
}

.brand-wordmark-sub {
  display: block;
  justify-self: end;
  width: var(--wordmark-villas-width);
  font-family: inherit;
  font-size: calc(var(--wordmark-main-size) * .225);
  font-weight: 800;
  letter-spacing: var(--wordmark-villas-tracking);
  line-height: 1;
  margin-right: calc(var(--wordmark-villas-tracking) * -1);
  text-align: right;
}

.brand-wordmark .wordmark-name {
  display: inline-block;
  transform: translateX(2px);
}

.brand-wordmark .wordmark-dot {
  display: inline-block;
}

body.theme-day .brand:after {
  background:
    linear-gradient(180deg, #0b2a2f 0%, #183f45 30%, #789097 52%, #0f3439 78%, #2b5860 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
}

body.theme-day .brand {
  --wordmark-ink: linear-gradient(180deg, #0b2a2f 0%, #183f45 30%, #789097 52%, #0f3439 78%, #2b5860 100%);
}

.footer-shell {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: clamp(34px, 4.5vw, 70px);
}

.footer-brand {
  justify-items: center;
  text-align: center;
}

.footer-logo {
  justify-items: center;
  margin-inline: auto;
  --wordmark-main-size: clamp(42px, 4.8vw, 68px);
  --wordmark-villas-width: 73%;
  --wordmark-villas-tracking: .56em;
  --footer-wordmark-ink: linear-gradient(180deg, #0b2a2f 0%, #183f45 30%, #789097 52%, #0f3439 78%, #2b5860 100%);
}

.footer-logo-main {
  font-family: inherit;
  font-size: var(--wordmark-main-size);
  font-weight: 300;
  letter-spacing: .18em;
  line-height: .84;
  margin-right: -.18em;
  color: transparent !important;
  -webkit-text-fill-color: transparent;
  text-shadow: 0 0 20px rgba(16, 35, 39, .08);
}

.footer-logo-main span {
  margin-left: 0;
  letter-spacing: inherit;
}

.footer-logo-main .wordmark-name {
  display: inline-block;
  transform: translateX(2px);
}

.footer-logo-main .wordmark-dot {
  display: inline-block;
}

.footer-logo-main .wordmark-name,
.footer-logo-main .wordmark-dot,
.footer-logo-sub {
  background: var(--footer-wordmark-ink);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent !important;
  -webkit-text-fill-color: transparent;
}

.footer-logo-sub {
  justify-self: end;
  width: var(--wordmark-villas-width);
  padding-right: 0;
  font-family: inherit;
  font-size: calc(var(--wordmark-main-size) * .225);
  font-weight: 800;
  letter-spacing: var(--wordmark-villas-tracking);
  line-height: 1;
  margin-right: calc(var(--wordmark-villas-tracking) * -1);
  text-align: right;
}

.footer-rating {
  justify-items: center;
  text-align: center;
  width: 100%;
  min-width: 0;
}

.footer-plan,
.footer-contact {
  justify-self: center;
  width: min(100%, 230px);
  padding-left: clamp(18px, 2.2vw, 28px);
  text-align: left;
}

body.theme-night .footer-logo-main {
  text-shadow: 0 0 22px rgba(226, 232, 232, .16);
}

body.theme-night .footer-logo {
  --footer-wordmark-ink: linear-gradient(180deg, #ffffff 0%, #eff8f7 22%, #9fb4ba 54%, #ffffff 76%, #d3e0e2 100%);
}

@media (max-width: 900px) {
  .brand {
    min-width: 174px;
  }
}

@media (max-width: 760px) {
  .footer-logo {
    --wordmark-villas-tracking: .56em;
  }

  .footer-shell {
    grid-template-columns: 1fr !important;
    gap: 30px;
  }

  .footer-brand,
  .footer-plan,
  .footer-contact {
    justify-self: center;
    width: min(100%, 360px);
    justify-items: center;
    text-align: center;
  }

  .footer-plan,
  .footer-contact {
    padding-left: 0;
    border-left: 0;
  }

  .footer-links a,
  .footer-contact a {
    width: auto;
    text-align: center;
  }

  .footer-bottom {
    display: grid;
    justify-content: center;
    justify-items: center;
    gap: 8px;
    text-align: center;
  }

  .footer-bottom span,
  .footer-bottom a {
    width: 100%;
    text-align: center;
  }
}

/* Typography cleanup: reduce heavy UI weights without changing the wordmark. */
body {
  font-weight: 400;
  text-rendering: optimizeLegibility;
}

.hero p:not(.eyebrow),
.page-hero p:not(.eyebrow),
.prose,
.editorial-prose,
.editorial-point p,
.cards p,
.feature-grid p,
.availability-copy p:not(.eyebrow),
.page-booking-copy p,
.villa-planner-copy p:not(.eyebrow),
.footer-bottom {
  font-weight: 400 !important;
}

.eyebrow,
.site-menu a,
.nav-cta,
.btn,
.inline-link,
.footer-links a,
.footer-contact a,
.request-form label,
.page-booking-form label,
.stay-fields label,
.stay-step-fields label,
.availability-legend,
.calendar-status,
.date-legend,
.date-clear,
.request-close,
.divine-date-head > div > small,
.divine-date-progress button > span,
.divine-date-progress small,
.divine-date-toolbar strong,
.divine-picker-weekday,
.divine-date-smart small,
.divine-date-smart button,
.stay-card-head span,
.stay-fields input,
.premium-dl dt,
.premium-dl dd,
.sleeping-grid span,
.check-list li,
.rules-grid span,
.licence-note,
.licence-note strong,
.guide-links a,
.review-score > span,
.review-score > em,
.planner-panel-head span,
.planner-links small,
.planner-links em,
.form-status {
  font-weight: 600 !important;
}

.fact strong,
.editorial-point h3,
.cards h3,
.feature-grid h3,
.stay-step-copy h3,
.request-form-head h3,
.date-trigger-copy strong,
.stay-card-head strong,
.divine-date-progress strong,
.divine-picker-day,
.divine-date-smart strong,
.planner-links strong,
.faq-list summary,
.sleeping-grid strong,
.sleeping-grid em,
.amenity-clusters h3,
.footer-rating strong,
.footer-rating span:last-child {
  font-weight: 600 !important;
}

.footer-stars,
.review-stars {
  font-weight: 500 !important;
}

.hero h1,
.page-hero h1,
.section h2,
.section-head h2,
.final-cta h2,
.page-booking-copy h2,
.villa-planner-copy h2,
.planner-panel-head strong,
.divine-date-head h2,
.divine-picker-month h3,
.rules-card h2 {
  font-weight: 400 !important;
}

/* Desktop footer layout: brand/reviews left, navigation and contact right. */
@media (min-width: 761px) {
  .premium-footer .footer-shell {
    grid-template-columns: minmax(270px, 1.05fr) minmax(145px, .42fr) minmax(170px, .52fr) minmax(215px, .62fr) !important;
    grid-template-areas: "brand villas useful contact" !important;
    align-items: start !important;
    gap: clamp(28px, 3.5vw, 64px) !important;
    padding-top: clamp(54px, 5.4vw, 76px) !important;
    padding-bottom: 44px !important;
  }

  .premium-footer .footer-brand {
    grid-area: brand !important;
    justify-self: start !important;
    align-self: start !important;
    justify-items: start !important;
    text-align: left !important;
  }

  .premium-footer .footer-logo {
    margin-inline: 0 !important;
    justify-items: start !important;
  }

  .premium-footer .footer-rating {
    justify-items: start !important;
    text-align: left !important;
  }

  .premium-footer .footer-villas {
    grid-area: villas !important;
  }

  .premium-footer .footer-useful {
    grid-area: useful !important;
  }

  .premium-footer .footer-contact {
    grid-area: contact !important;
  }

  .premium-footer .footer-villas,
  .premium-footer .footer-useful,
  .premium-footer .footer-contact {
    justify-self: start !important;
    align-self: start !important;
    width: min(100%, 250px) !important;
    padding-left: clamp(20px, 2.4vw, 34px) !important;
    border-left: 1px solid rgba(16, 35, 39, .12) !important;
    text-align: left !important;
  }

  body.theme-night .premium-footer .footer-villas,
  body.theme-night .premium-footer .footer-useful,
  body.theme-night .premium-footer .footer-contact {
    border-left-color: rgba(247, 241, 232, .13) !important;
  }
}

/* Absolute final typography lock. Keep this block last. */
.site-menu a,
.site-menu a.active,
.nav-cta,
a.btn,
button.btn,
.btn,
.btn.btn-primary,
.btn.btn-ghost,
.btn.btn-text,
.hero .btn-text,
.home .btn-text,
.hero-actions .btn,
.hero-actions .btn.btn-text,
.form-actions .btn,
.booking-strip .btn,
.final-cta .btn,
.villa-listing-actions .btn,
.stay-step-actions .btn,
.theme-label,
.eyebrow,
.hero .eyebrow,
.home .hero .eyebrow,
.page-hero .eyebrow,
.villa-photo-copy .eyebrow,
.section-head .eyebrow,
.villa-booking-copy .eyebrow,
.request-form label,
.page-booking-form label,
.stay-fields label,
.stay-step-fields label,
.availability-legend,
.calendar-status,
.date-legend,
.date-clear,
.request-close,
.date-trigger-copy strong,
.date-trigger-copy small,
.page-booking-form .date-trigger-copy strong,
.page-booking-form .date-trigger-copy small,
.request-form .date-trigger-copy strong,
.request-form .date-trigger-copy small,
.divine-date-head > div > small,
.divine-date-progress button > span,
.divine-date-progress small,
.divine-date-toolbar strong,
.divine-picker-weekday,
.divine-date-smart small,
.divine-date-smart button,
.stay-card-head span,
.stay-fields input,
.premium-dl dt,
.premium-dl dd,
.sleeping-grid span,
.sleeping-grid strong,
.sleeping-grid em,
.check-list li,
.rules-grid span,
.licence-note,
.licence-note strong,
.amenity-clusters h3,
.services-grid h2,
.cards h3,
.feature-grid h3,
.editorial-point h3,
.stay-step-copy h3,
.request-form-head h3,
.stay-card-head strong,
.divine-date-progress strong,
.divine-picker-day,
.divine-date-smart strong,
.planner-panel-head span,
.planner-panel-head strong,
.planner-links small,
.planner-links strong,
.planner-links em,
.guide-links a,
.faq-list summary,
.villa-photo-tile span,
.villa-hero-facts span,
.villa-hero-facts strong,
.footer-links a,
.footer-contact a,
.footer-links h2,
.footer-contact h2,
.footer-rating strong,
.footer-rating span:last-child,
.footer-bottom a,
.review-score > span,
.review-score > em,
.review-score strong,
.home-review-strip blockquote p,
.home-review-strip cite,
.home-review-strip > a,
.month-picker-head strong,
.month-year-tabs button,
.month-year-group h3,
.month-card-title span,
.month-card-title em,
.month-stats strong,
.month-stats small,
.month-blocks span,
.month-blocks button,
.month-action,
.available-window-list,
.available-window-list button,
.month-choice strong,
.month-choice span,
.month-choice small,
.intelligence-head span,
.intelligence-head em,
.intelligence-meta span,
.available-windows > span,
.form-status {
  font-weight: 500 !important;
}

.hero h1,
.page-hero h1,
.section h2,
.section-head h2,
.final-cta h2,
.page-booking-copy h2,
.villa-planner-copy h2,
.divine-date-head h2,
.divine-picker-month h3,
.rules-card h2,
.services-grid h2 {
  font-weight: 400 !important;
}

/* Shared villa cards before footer. One template, used by every public page. */
.villa-card-template-section {
  padding: clamp(44px, 7vw, 88px) clamp(18px, 4vw, 56px);
  background:
    radial-gradient(circle at 12% 10%, rgba(137, 209, 220, .16), transparent 32%),
    linear-gradient(180deg, rgba(247, 252, 253, .96), rgba(241, 249, 250, .98));
  border-top: 1px solid rgba(16, 58, 65, .10);
}

.villa-card-template-shell {
  max-width: 1480px;
  margin: 0 auto;
}

.villa-card-template-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(20px, 2.4vw, 34px);
}

.villa-card-template-card {
  overflow: hidden;
  min-width: 0;
  border: 1px solid rgba(31, 117, 134, .18);
  border-radius: 18px;
  background: rgba(255, 255, 255, .94);
  box-shadow: 0 22px 60px rgba(17, 62, 70, .08);
}

.villa-card-template-media {
  display: block;
  aspect-ratio: 1.9 / 1;
  overflow: hidden;
  background: rgba(12, 42, 47, .08);
}

.villa-card-template-media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.villa-card-template-body {
  display: flex;
  min-height: 360px;
  flex-direction: column;
  align-items: center;
  gap: 15px;
  padding: clamp(26px, 3vw, 44px) clamp(22px, 3vw, 42px) clamp(28px, 3vw, 44px);
  text-align: center;
}

.villa-card-template-body h3 {
  margin: 0;
  color: var(--accent);
  font-family: var(--font-display);
  font-size: clamp(30px, 3vw, 44px);
  font-weight: 400;
  line-height: 1.04;
}

.villa-card-template-stars {
  margin-top: 4px;
  color: var(--gold);
  font-size: clamp(25px, 2vw, 32px);
  letter-spacing: .06em;
  line-height: 1;
}

.villa-card-template-body strong {
  color: #9a6e36;
  font-size: clamp(16px, 1.35vw, 20px);
  font-weight: 500;
  line-height: 1.35;
}

.villa-card-template-body span {
  color: var(--accent);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: .16em;
  line-height: 1.4;
  text-transform: uppercase;
}

.villa-card-template-body p {
  max-width: 520px;
  margin: 12px 0 14px;
  color: var(--muted);
  font-size: clamp(16px, 1.25vw, 19px);
  font-weight: 400;
  line-height: 1.8;
}

.villa-card-template-button {
  display: inline-flex;
  min-height: 58px;
  min-width: min(100%, 300px);
  align-items: center;
  justify-content: center;
  margin-top: auto;
  padding: 16px 28px;
  border: 1px solid rgba(31, 117, 134, .28);
  border-radius: 12px;
  color: var(--accent);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: .18em;
  line-height: 1.2;
  text-decoration: none;
  text-transform: uppercase;
  transition: transform .2s ease, border-color .2s ease, background .2s ease;
}

.villa-card-template-button:hover {
  border-color: rgba(31, 117, 134, .55);
  background: rgba(31, 117, 134, .07);
  transform: translateY(-1px);
}

body.theme-night .villa-card-template-section {
  background:
    radial-gradient(circle at 12% 12%, rgba(34, 142, 157, .16), transparent 34%),
    linear-gradient(180deg, #041012, #061619);
  border-top-color: rgba(255, 255, 255, .10);
}

body.theme-night .villa-card-template-card {
  border-color: rgba(232, 214, 177, .22);
  background: rgba(7, 24, 27, .90);
  box-shadow: 0 24px 70px rgba(0, 0, 0, .30);
}

body.theme-night .villa-card-template-body h3 {
  color: #f6f3ea;
}

body.theme-night .villa-card-template-body strong {
  color: #d8bd84;
}

body.theme-night .villa-card-template-body span {
  color: #8fd0dc;
}

body.theme-night .villa-card-template-body p {
  color: rgba(232, 241, 241, .78);
}

body.theme-night .villa-card-template-button {
  border-color: rgba(216, 189, 132, .40);
  color: #f8f5ec;
}

body.theme-night .villa-card-template-button:hover {
  border-color: rgba(216, 189, 132, .70);
  background: rgba(216, 189, 132, .08);
}

@media (max-width: 980px) {
  .villa-card-template-grid {
    grid-template-columns: 1fr;
  }

  .villa-card-template-body {
    min-height: 0;
  }
}

@media (max-width: 560px) {
  .villa-card-template-section {
    padding: 34px 14px;
  }

  .villa-card-template-card {
    border-radius: 14px;
  }

  .villa-card-template-media {
    aspect-ratio: 1.55 / 1;
  }

  .villa-card-template-body {
    gap: 12px;
    padding: 24px 18px 26px;
  }

  .villa-card-template-button {
    width: 100%;
    min-height: 54px;
  }
}

a.btn,
button.btn,
.btn.btn-primary,
.btn.btn-ghost,
.hero-actions .btn,
.form-actions .btn,
.booking-strip .btn,
.final-cta .btn,
.villa-listing-actions .btn,
.stay-step-actions .btn {
  font-weight: 500 !important;
}

.theme-label,
.btn-text,
.villa-photo-tile span,
.villa-hero-facts span,
.villa-hero-facts strong,
.section-head .eyebrow,
.villa-booking-copy .eyebrow,
.month-picker-head strong,
.month-year-tabs button,
.month-year-group h3,
.date-trigger-copy small,
.footer-bottom a {
  font-weight: 500 !important;
}

.date-trigger-copy strong {
  font-weight: 500 !important;
}

/* Mobile hero CTA polish: compact actions, clearer text, no full-width blocks. */
@media (max-width: 760px) {
  .home .hero-copy {
    padding: clamp(78px, 18svh, 132px) 18px 42px;
  }

  .home .hero .eyebrow {
    max-width: 360px;
    font-size: 10.5px;
    line-height: 1.35;
    letter-spacing: .14em;
  }

  .home .hero h1 {
    max-width: 430px;
    font-size: clamp(42px, 10.6vw, 54px);
    line-height: 1.02;
  }

  .home .hero p:not(.eyebrow) {
    max-width: 400px;
    font-size: 16.5px;
    line-height: 1.45;
  }

  .home .hero .cta-row {
    display: flex !important;
    grid-template-columns: none !important;
    flex-wrap: wrap;
    align-items: center;
    gap: 9px;
    margin-top: 18px;
  }

  .home .hero .cta-row .btn {
    width: auto !important;
    min-width: 0;
    min-height: 38px;
    padding: 9px 14px;
    border-radius: 999px;
    font-size: 14px;
    line-height: 1;
    letter-spacing: 0;
    box-shadow: none;
  }

  .home .hero .cta-row .btn-primary {
    background: rgba(24, 126, 148, .94) !important;
    border-color: rgba(24, 126, 148, .94) !important;
    color: #fff !important;
  }

  .home .hero .cta-row .btn-ghost {
    background: rgba(247, 251, 251, .08) !important;
    border-color: rgba(247, 251, 251, .44) !important;
    color: #f7fbfb !important;
  }

  .home .hero .cta-row .btn-text {
    min-height: 0;
    padding: 5px 0;
    border-radius: 0;
    color: rgba(247, 251, 251, .88) !important;
    font-size: 13px;
    text-decoration-thickness: 1px;
    text-underline-offset: 4px;
  }
}

@media (max-width: 420px) {
  .home .hero-copy {
    padding-inline: 16px;
  }

  .home .hero .cta-row {
    gap: 8px;
  }

  .home .hero .cta-row .btn:not(.btn-text) {
    min-height: 36px;
    padding-inline: 12px;
    font-size: 13px;
  }

  .home .hero .cta-row .btn-text {
    width: auto !important;
    min-height: 0;
    padding: 5px 0;
  }
}

/* Mobile home gallery: one lead image plus four clean supporting tiles. */
@media (max-width: 760px) {
  .home .dark-section {
    padding-top: 56px;
    padding-bottom: 58px;
  }

  .home .dark-section .section-head {
    grid-template-columns: 1fr;
    align-items: start;
    gap: 16px;
    margin-bottom: 22px;
  }

  .home .dark-section .section-head h2 {
    max-width: 360px;
    font-size: clamp(34px, 9.4vw, 44px);
    line-height: 1.05;
  }

  .home .dark-section .section-head .btn {
    width: auto !important;
    min-height: 38px;
    justify-self: start;
    padding: 9px 15px;
    border-radius: 999px;
    font-size: 13px;
    line-height: 1;
  }

  .home-gallery-mosaic {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    grid-template-rows: none !important;
    gap: 8px;
    width: 100%;
    max-width: 100%;
  }

  .home-gallery-mosaic .gallery-large,
  .home-gallery-mosaic a:first-child {
    grid-column: 1 / -1;
    grid-row: auto !important;
  }

  .home-gallery-mosaic a {
    min-height: 0;
    overflow: hidden;
    border-radius: 8px;
  }

  .home-gallery-mosaic img {
    width: 100%;
    height: 100%;
    min-height: 0;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    border-radius: 8px;
  }

  .home-gallery-mosaic .gallery-large img {
    aspect-ratio: 4 / 3;
  }
}

@media (max-width: 420px) {
  .home-gallery-mosaic {
    gap: 7px;
  }

  .home .dark-section .section-head h2 {
    max-width: 330px;
  }
}

/* Villa page availability flow: month, live window, stay builder, request form. */
.villa-direct-availability {
  grid-template-columns: minmax(300px, .78fr) minmax(560px, 1.22fr);
  gap: clamp(28px, 4vw, 56px);
}

.villa-direct-availability .villa-booking-copy {
  max-width: 540px;
}

.villa-booking-panel {
  display: grid;
  min-width: 0;
  gap: 18px;
}

.villa-direct-availability .villa-month-intelligence {
  min-width: 0;
}

.villa-direct-availability .intelligence-card {
  height: auto;
  border-radius: 18px;
  padding: clamp(18px, 3vw, 28px);
  box-shadow: 0 22px 64px rgba(18, 58, 68, .1);
}

.villa-direct-availability .availability-stay-step {
  grid-template-columns: 1fr;
  align-items: stretch;
  gap: 18px;
  border-radius: 18px;
  padding: clamp(18px, 3vw, 26px);
}

.villa-direct-availability .stay-step-fields {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.villa-direct-availability .stay-step-actions,
.villa-request-form .form-actions {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.villa-request-panel[hidden] {
  display: none;
}

.villa-request-form {
  border: 1px solid rgba(23, 111, 134, .18);
  border-radius: 18px;
  padding: clamp(18px, 3vw, 26px);
  background: rgba(255, 255, 255, .94);
  box-shadow: 0 18px 50px rgba(18, 58, 68, .08);
}

.villa-request-form .compact-form-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

body.theme-night .villa-request-form,
body.theme-night .villa-direct-availability .availability-stay-step,
body.theme-night .villa-direct-availability .intelligence-card {
  border-color: rgba(247, 241, 232, .14);
  background: rgba(247, 251, 251, .06);
  box-shadow: none;
}

body.theme-night .villa-booking-copy p:not(.eyebrow),
body.theme-night .villa-direct-availability .availability-legend {
  color: #b9c8c9 !important;
}

body.theme-night .villa-direct-availability .availability-legend span {
  color: #dce8e8 !important;
}

@media (max-width: 1100px) {
  .villa-direct-availability {
    grid-template-columns: 1fr;
  }

  .villa-direct-availability .villa-booking-copy {
    position: static;
    max-width: 760px;
  }

  .villa-request-form .compact-form-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 560px) {
  .villa-direct-availability {
    gap: 22px;
  }

  .villa-direct-availability .stay-step-fields,
  .villa-direct-availability .stay-step-actions,
  .villa-request-form .compact-form-grid,
  .villa-request-form .form-actions {
    grid-template-columns: 1fr;
  }
}

/* Final dark contrast pass: reviews, availability header, live date chips and footer alignment. */
body.theme-night .home-review-strip {
  border-block-color: rgba(247, 241, 232, .14) !important;
  background:
    linear-gradient(135deg, rgba(13, 27, 33, .96), rgba(7, 17, 21, .96)),
    radial-gradient(circle at 12% 18%, rgba(27, 113, 135, .12), transparent 32%) !important;
  color: #f7f1e8 !important;
}

body.theme-night .home-review-strip > * + * {
  border-left-color: rgba(247, 241, 232, .13) !important;
}

body.theme-night .review-score > span,
body.theme-night .review-score > em,
body.theme-night .home-review-strip cite {
  color: #b9c8c9 !important;
}

body.theme-night .review-score .review-stars {
  color: #c4a77a !important;
}

body.theme-night .review-score strong,
body.theme-night .home-review-strip blockquote p {
  color: #f7f1e8 !important;
}

body.theme-night .review-score strong small {
  color: #c9d6d6 !important;
}

body.theme-night .home-review-strip > a {
  color: #7bd6ee !important;
}

body.theme-night .home-review-strip > a:hover {
  background: rgba(123, 214, 238, .14) !important;
  color: #f7fbfb !important;
}

body.theme-night.availability-page .availability-first-head h1,
body.theme-night .availability-page .availability-first-head h1 {
  color: #f7f1e8 !important;
  opacity: 1 !important;
  text-shadow: 0 2px 22px rgba(0, 0, 0, .42);
}

body.theme-night.availability-page .availability-first-head div > p:not(.eyebrow),
body.theme-night.availability-page .availability-first-head > p,
body.theme-night .availability-page .availability-first-head div > p:not(.eyebrow),
body.theme-night .availability-page .availability-first-head > p {
  color: #d4e1e1 !important;
  opacity: 1 !important;
}

body.theme-night .month-card .month-blocks span,
body.theme-night .month-card .month-blocks button,
body.theme-night .available-window-list button {
  border-color: rgba(45, 230, 142, .5) !important;
  background:
    linear-gradient(135deg, rgba(45, 230, 142, .24), rgba(27, 113, 135, .12)) !important;
  color: #a8f5cf !important;
  box-shadow: inset 0 0 0 1px rgba(168, 245, 207, .08);
}

body.theme-night .month-card .month-blocks button:hover,
body.theme-night .available-window-list button:hover {
  border-color: rgba(87, 246, 170, .72) !important;
  background:
    linear-gradient(135deg, rgba(45, 230, 142, .32), rgba(27, 113, 135, .18)) !important;
  color: #d8ffe9 !important;
}

body.theme-night .month-choice.has-availability {
  border-color: rgba(45, 230, 142, .42) !important;
  background: rgba(45, 230, 142, .13) !important;
}

body.theme-night .month-choice.has-availability span {
  color: #7df0b8 !important;
}

body.theme-night .month-meter i {
  background: linear-gradient(90deg, #2de68e, #26b7d2) !important;
}

body.theme-night .month-card.is-full .month-meter i {
  background: rgba(226, 126, 112, .55) !important;
}

body.theme-night .month-card.is-full .month-blocks span,
body.theme-night .month-card.is-full .month-blocks button {
  border-color: rgba(226, 126, 112, .4) !important;
  background:
    linear-gradient(135deg, rgba(226, 126, 112, .18), rgba(126, 54, 46, .12)) !important;
  color: #f0b8ae !important;
}

body.theme-night .month-action:disabled {
  border-color: rgba(247, 251, 251, .12) !important;
  background: rgba(247, 251, 251, .07) !important;
  color: rgba(216, 228, 227, .58) !important;
}

@media (max-width: 900px) {
  body.theme-night .home-review-strip > * + *,
  body.theme-night .home-review-strip > *:nth-child(3),
  body.theme-night .home-review-strip > a {
    border-top-color: rgba(247, 241, 232, .13) !important;
    border-left-color: rgba(247, 241, 232, .13) !important;
  }
}

@media (min-width: 761px) {
  .premium-footer .footer-shell {
    grid-template-columns: minmax(260px, 1fr) minmax(145px, .48fr) minmax(170px, .58fr) minmax(215px, .7fr) !important;
    grid-template-areas: "brand villas useful contact";
    align-items: start;
    gap: clamp(28px, 3.6vw, 68px);
    padding-top: clamp(48px, 5vw, 68px);
    padding-bottom: 42px;
  }

  .premium-footer .footer-brand {
    grid-area: brand;
    justify-self: start;
    align-self: start;
  }

  .premium-footer .footer-villas {
    grid-area: villas;
    justify-self: start;
    align-self: start;
  }

  .premium-footer .footer-useful {
    grid-area: useful;
    justify-self: start;
    align-self: start;
  }

  .premium-footer .footer-contact {
    grid-area: contact;
    justify-self: start;
    align-self: start;
  }

  .premium-footer .footer-villas,
  .premium-footer .footer-useful,
  .premium-footer .footer-contact {
    width: min(100%, 250px);
  }
}

/* Final typography cap: premium medium weights only, excluding the wordmark. */
:where(
  .site-menu a,
  .nav-cta,
  .btn,
  .inline-link,
  .eyebrow,
  .request-form label,
  .page-booking-form label,
  .stay-fields label,
  .stay-step-fields label,
  .availability-legend,
  .calendar-status,
  .date-legend,
  .date-clear,
  .request-close,
  .divine-date-head > div > small,
  .divine-date-progress button > span,
  .divine-date-progress small,
  .divine-date-toolbar strong,
  .divine-picker-weekday,
  .divine-date-smart small,
  .divine-date-smart button,
  .stay-card-head span,
  .stay-fields input,
  .premium-dl dt,
  .premium-dl dd,
  .sleeping-grid span,
  .sleeping-grid strong,
  .sleeping-grid em,
  .check-list li,
  .rules-grid span,
  .licence-note,
  .licence-note strong,
  .amenity-clusters h3,
  .services-grid h2,
  .cards h3,
  .feature-grid h3,
  .editorial-point h3,
  .stay-step-copy h3,
  .request-form-head h3,
  .date-trigger-copy strong,
  .stay-card-head strong,
  .divine-date-progress strong,
  .divine-picker-day,
  .divine-date-smart strong,
  .planner-panel-head span,
  .planner-panel-head strong,
  .planner-links small,
  .planner-links strong,
  .planner-links em,
  .guide-links a,
  .faq-list summary,
  .footer-links a,
  .footer-contact a,
  .footer-links h2,
  .footer-contact h2,
  .footer-rating strong,
  .footer-rating span:last-child,
  .review-score > span,
  .review-score > em,
  .review-score strong,
  .home-review-strip blockquote p,
  .home-review-strip cite,
  .home-review-strip > a,
  .month-card-title span,
  .month-card-title em,
  .month-stats strong,
  .month-stats small,
  .month-blocks span,
  .month-blocks button,
  .month-action,
  .available-window-list,
  .available-window-list button,
  .month-choice strong,
  .month-choice span,
  .month-choice small,
  .intelligence-head span,
  .intelligence-head em,
  .intelligence-meta span,
  .available-windows > span,
  .form-status
) {
  font-weight: 500 !important;
}

:where(
  .hero h1,
  .page-hero h1,
  .section h2,
  .section-head h2,
  .final-cta h2,
  .page-booking-copy h2,
  .villa-planner-copy h2,
  .divine-date-head h2,
  .divine-picker-month h3,
  .rules-card h2
) {
  font-weight: 400 !important;
}

/* Priority typography cap: same target as above, with explicit specificity. */
.site-menu a,
.nav-cta,
.btn,
.inline-link,
.eyebrow,
.request-form label,
.page-booking-form label,
.stay-fields label,
.stay-step-fields label,
.availability-legend,
.calendar-status,
.date-legend,
.date-clear,
.request-close,
.divine-date-head > div > small,
.divine-date-progress button > span,
.divine-date-progress small,
.divine-date-toolbar strong,
.divine-picker-weekday,
.divine-date-smart small,
.divine-date-smart button,
.stay-card-head span,
.stay-fields input,
.premium-dl dt,
.premium-dl dd,
.sleeping-grid span,
.sleeping-grid strong,
.sleeping-grid em,
.check-list li,
.rules-grid span,
.licence-note,
.licence-note strong,
.amenity-clusters h3,
.services-grid h2,
.cards h3,
.feature-grid h3,
.editorial-point h3,
.stay-step-copy h3,
.request-form-head h3,
.date-trigger-copy strong,
.stay-card-head strong,
.divine-date-progress strong,
.divine-picker-day,
.divine-date-smart strong,
.planner-panel-head span,
.planner-panel-head strong,
.planner-links small,
.planner-links strong,
.planner-links em,
.guide-links a,
.faq-list summary,
.footer-links a,
.footer-contact a,
.footer-links h2,
.footer-contact h2,
.footer-rating strong,
.footer-rating span:last-child,
.review-score > span,
.review-score > em,
.review-score strong,
.home-review-strip blockquote p,
.home-review-strip cite,
.home-review-strip > a,
.month-card-title span,
.month-card-title em,
.month-stats strong,
.month-stats small,
.month-blocks span,
.month-blocks button,
.month-action,
.available-window-list,
.available-window-list button,
.month-choice strong,
.month-choice span,
.month-choice small,
.intelligence-head span,
.intelligence-head em,
.intelligence-meta span,
.available-windows > span,
.form-status {
  font-weight: 500 !important;
}

.hero h1,
.page-hero h1,
.section h2,
.section-head h2,
.final-cta h2,
.page-booking-copy h2,
.villa-planner-copy h2,
.divine-date-head h2,
.divine-picker-month h3,
.rules-card h2 {
  font-weight: 400 !important;
}

/* Absolute final typography lock. Keep this block last. */
.site-menu a,
.site-menu a.active,
.nav-cta,
a.btn,
button.btn,
.btn,
.btn.btn-primary,
.btn.btn-ghost,
.btn.btn-text,
.hero .btn-text,
.home .btn-text,
.hero-actions .btn,
.hero-actions .btn.btn-text,
.form-actions .btn,
.booking-strip .btn,
.final-cta .btn,
.villa-listing-actions .btn,
.stay-step-actions .btn,
.theme-label,
.eyebrow,
.hero .eyebrow,
.home .hero .eyebrow,
.page-hero .eyebrow,
.section-head .eyebrow,
.villa-booking-copy .eyebrow,
.request-form label,
.page-booking-form label,
.stay-fields label,
.stay-step-fields label,
.availability-legend,
.calendar-status,
.date-legend,
.date-clear,
.request-close,
.date-trigger-copy strong,
.date-trigger-copy small,
.page-booking-form .date-trigger-copy strong,
.page-booking-form .date-trigger-copy small,
.request-form .date-trigger-copy strong,
.request-form .date-trigger-copy small,
.divine-date-head > div > small,
.divine-date-progress button > span,
.divine-date-progress small,
.divine-date-toolbar strong,
.divine-picker-weekday,
.divine-date-smart small,
.divine-date-smart button,
.stay-card-head span,
.stay-fields input,
.premium-dl dt,
.premium-dl dd,
.sleeping-grid span,
.sleeping-grid strong,
.sleeping-grid em,
.check-list li,
.rules-grid span,
.licence-note,
.licence-note strong,
.amenity-clusters h3,
.services-grid h2,
.cards h3,
.feature-grid h3,
.editorial-point h3,
.stay-step-copy h3,
.request-form-head h3,
.stay-card-head strong,
.divine-date-progress strong,
.divine-picker-day,
.divine-date-smart strong,
.planner-panel-head span,
.planner-panel-head strong,
.planner-links small,
.planner-links strong,
.planner-links em,
.guide-links a,
.faq-list summary,
.villa-photo-tile span,
.villa-hero-facts span,
.villa-hero-facts strong,
.footer-links a,
.footer-contact a,
.footer-links h2,
.footer-contact h2,
.footer-rating strong,
.footer-rating span:last-child,
.footer-bottom a,
.review-score > span,
.review-score > em,
.review-score strong,
.home-review-strip blockquote p,
.home-review-strip cite,
.home-review-strip > a,
.month-picker-head strong,
.month-year-tabs button,
.month-year-group h3,
.month-card-title span,
.month-card-title em,
.month-stats strong,
.month-stats small,
.month-blocks span,
.month-blocks button,
.month-action,
.available-window-list,
.available-window-list button,
.month-choice strong,
.month-choice span,
.month-choice small,
.intelligence-head span,
.intelligence-head em,
.intelligence-meta span,
.available-windows > span,
.form-status {
  font-weight: 500 !important;
}

.hero h1,
.page-hero h1,
.section h2,
.section-head h2,
.final-cta h2,
.page-booking-copy h2,
.villa-planner-copy h2,
.divine-date-head h2,
.divine-picker-month h3,
.rules-card h2,
.services-grid h2 {
  font-weight: 400 !important;
}

/* Pre-live luxury sizing and UI polish. Keep this after all legacy locks. */
:root {
  --font-display: var(--title-font);
}

.hero h1 {
  max-width: 820px;
  font-size: clamp(38px, 6.3vw, 76px) !important;
  line-height: 1.02 !important;
  letter-spacing: 0 !important;
}

.villa-photo-hero h1,
.page-hero h1 {
  font-size: clamp(38px, 5.4vw, 70px) !important;
  line-height: 1.02 !important;
  letter-spacing: 0 !important;
}

.section h2,
.section-head h2,
.final-cta h2,
.page-booking-copy h2,
.villa-planner-copy h2,
.rules-card h2 {
  font-size: clamp(32px, 4.1vw, 58px);
  line-height: 1.06;
}

.hero p:not(.eyebrow),
.page-hero p:not(.eyebrow),
.villa-photo-copy p {
  max-width: 660px;
  font-size: clamp(16px, 1.45vw, 20px);
  line-height: 1.62;
}

.btn,
.nav-cta,
.site-menu a,
.form-actions .btn,
.villa-card-template-button {
  font-weight: 500 !important;
}

.btn {
  min-height: 48px;
  border-radius: 10px;
}

.hero .cta-row,
.villa-photo-copy .cta-row {
  gap: 10px;
}

.hero .btn,
.villa-photo-copy .btn {
  min-height: 50px;
  padding: 13px 22px;
}

.section-head,
.editorial-section-head,
.villa-details-section .section-head,
.villa-amenities-section .section-head {
  position: relative;
}

.section-head::before,
.editorial-section-head::before {
  content: "";
  display: block;
  width: 72px;
  height: 1px;
  margin-bottom: 22px;
  background: linear-gradient(90deg, var(--semi-blond), rgba(31, 117, 134, .28));
}

.request-form label,
.page-booking-form label,
.stay-fields label {
  font-weight: 500 !important;
}

.request-form input,
.request-form textarea,
.page-booking-form input,
.page-booking-form textarea {
  font-weight: 400;
}

.premium-dl dd,
.sleeping-grid strong,
.check-list li,
.rules-grid span,
.amenity-clusters h3,
.services-grid h2,
.cards h3,
.feature-grid h3 {
  font-weight: 500 !important;
}

body.theme-night .section-head::before,
body.theme-night .editorial-section-head::before {
  background: linear-gradient(90deg, #d8bd84, rgba(143, 208, 220, .28));
}

@media (max-width: 760px) {
  .hero h1,
  .villa-photo-hero h1,
  .page-hero h1 {
    font-size: clamp(34px, 9.4vw, 44px) !important;
    line-height: 1.04 !important;
  }

  .section h2,
  .section-head h2,
  .final-cta h2,
  .page-booking-copy h2,
  .villa-planner-copy h2,
  .rules-card h2 {
    font-size: clamp(30px, 8.2vw, 40px);
  }

  .hero .cta-row,
  .villa-photo-copy .cta-row {
    display: flex;
    gap: 9px;
  }

  .hero .btn,
  .villa-photo-copy .btn {
    width: auto;
    min-height: 44px;
    padding: 11px 16px;
    font-size: 14px;
  }

  .hero .btn-primary,
  .villa-photo-copy .btn-primary {
    flex: 1 1 100%;
  }

  .hero .btn-ghost,
  .villa-photo-copy .btn-ghost,
  .hero .btn-text,
  .villa-photo-copy .btn-text {
    flex: 1 1 calc(50% - 5px);
  }

  .section-head::before,
  .editorial-section-head::before {
    width: 54px;
    margin-bottom: 16px;
  }
}

@media (max-width: 430px) {
  .hero .btn,
  .villa-photo-copy .btn {
    font-size: 13px;
    padding-inline: 13px;
  }
}
