/* =========================================
   General Reset & Typography
========================================= */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  font-family: Arial, sans-serif;
  line-height: 1.6;
  color: #333;
  background-color: #f9f9f9;
}

a {
  text-decoration: none;
  color: inherit;
}

/* =========================================
   Hero Video Section
========================================= */
#hero {
  position: relative;
  width: 100%;
  min-height: 100vh;   /* fill the screen on normal viewports */
  height: auto;        /* allow growing taller than the viewport if needed */
  overflow: hidden;
}

.hero-video-wrapper {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 100%;
  height: 100%;
  transform: translate(-50%, -50%);
  z-index: 1;
  overflow: hidden;
}

.hero-video {
  width: 100vw;
  height: 56.25vw; /* 16:9 aspect ratio */
  min-height: 100%;
  min-width: 177.77vh; /* ensures full coverage vertically */
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  pointer-events: none;
}

/* =========================================
   Hero overlay content
========================================= */
.hero-overlay {
  position: relative;
  z-index: 2;
  color: #fff;
  text-align: center;
  top: 50%;
  transform: translateY(-50%);
  padding: 0 1rem;
}

.hero-overlay h2 {
  font-size: 2rem;
  margin-bottom: 1rem;
}

.cta {
  display: inline-block;
  margin-top: 1rem;
  padding: 0.8rem 1.5rem;
  background: #ff6600;
  color: #fff;
  font-weight: bold;
  border-radius: 4px;
  transition: background 0.3s;
}

.cta:hover {
  background: #e65c00;
}

/* =========================================
   Hero Video Section - Responsive
========================================= */
@media (max-width: 768px) {
  #hero {
    height: 40vh;
  }

  .hero-video {
    height: 100%;
    width: auto;
  }

  .hero-overlay h2 {
    font-size: 1.5rem;
  }

  .cta {
    padding: 0.5rem 1rem;
    font-size: 0.9rem;
  }
}

/* =========================================
   Featured Properties / Gallery
========================================= */
#featured {
  padding: 2rem 2%;
}

#featured h2 {
  text-align: center;
  font-size: 1.8rem;
  margin-bottom: 1rem;
}

.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 1rem;
}

.gallery img {
  width: 100%;
  height: 150px;
  object-fit: cover;
  border-radius: 4px;
  transition: transform 0.3s, box-shadow 0.3s;
}

.gallery img:hover {
  transform: scale(1.05);
  box-shadow: 0 5px 15px rgba(0,0,0,0.3);
}

/* =========================================
   Responsive Gallery
========================================= */
@media (max-width: 768px) {
  .gallery img {
    height: 130px;
  }
}

@media (max-width: 480px) {
  .gallery img {
    height: 100px;
  }
}

/* =========================================
   Forms (Booking Page)
========================================= */
form {
  max-width: 600px;
  margin: 2rem auto;
  background: #fff;
  padding: 2rem;
  border-radius: 6px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}

form label {
  display: block;
  margin-bottom: 1rem;
  font-weight: bold;
}

form input, form textarea, form select, form button {
  width: 100%;
  padding: 0.7rem;
  margin-top: 0.3rem;
  margin-bottom: 1rem;
  border-radius: 4px;
  border: 1px solid #ccc;
  font-size: 1rem;
}

form button {
  background-color: #c09354;
  color: #fff;
  font-weight: bold;
  border: none;
  cursor: pointer;
  transition: background 0.3s;
}

form button:hover {
  background-color: #a67c41;
}

/* =========================================
   General Section Styling
========================================= */
section {
  padding: 2rem 2%;
}

/* =========================================
   Header / Top Bar - Enlarged
========================================= */
#top-header {
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 5%;
    position: relative;
    /* <-- change from absolute */
    top: 0;
    left: 0;
    z-index: 10;
    background: transparent;
    /* default */
}

.header-left .logo {
  height: clamp(60px, 20vw, 180px); /* scales with viewport, max 4x bigger */
  width: auto;
  display: block;
}


.header-right {
  display: flex;
  align-items: center;
  gap: 2.5rem;
}

.contact-number {
  order: 1;
  color: #fff;
  font-size: 1.5rem;
  white-space: nowrap;
}

.header-buttons {
  display: flex;
  gap: 2rem;
  order: 2;
  align-items: center;
}

.book-now {
  background-color: #c09354;
  color: #fff;
  padding: 0 1.8rem;
  height: 45px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 0;
  font-weight: bold;
  text-decoration: none;
  font-size: 1.2rem;
}

.book-now:hover {
  background-color: #40428e;
}

.hamburger {
  font-size: 2.4rem;
  color: #fff;
  cursor: pointer;
  user-select: none;
  height: 45px;
  display: flex;
  align-items: center;
}

/* =========================================
   Header Responsive
========================================= */
@media (max-width: 768px) {
  #top-header {
    padding: 0.5rem 3%;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
  }

  .header-left .logo {
    height: 70px;
  }

  .header-right {
    flex-direction: column;
    align-items: flex-end;
    gap: 0.4rem;
  }

  .contact-number {
    order: -1;
    font-size: 0.85rem;
    margin-bottom: 0.3rem;
  }

  .header-buttons {
    gap: 1rem;
  }

  .book-now {
    font-size: 0.95rem;
    height: 35px;
    padding: 0 1rem;
  }

  .hamburger {
    font-size: 1.8rem;
    height: 35px;
  }
}

/* ================================
   Header alignment fixes
================================ */
.booking-header,
.header-left,
.header-right {
  display: flex;
  align-items: center; /* vertical centering */
}

.booking-header {
  justify-content: space-between;
  padding: 10px 20px;
}

.header-right {
  gap: 20px; /* space between Call, Book Now, Hamburger */
}


/* =========================================
   Hero Text (Desktop Only)
========================================= */
.hero-text {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  color: #fff;
  text-align: left;
  z-index: 2;
  display: block;
  line-height: 1;
}

.hero-text .line1 {
  font-weight: bold;
  font-size: calc(3vw + 2rem);
  white-space: nowrap;
}

.hero-text .line2 {
  font-weight: bold;
  font-size: calc(5vw + 2rem);
  margin-top: 0.3rem;
}

/* =========================================
   Hero Button (Pinned to Bottom of Hero)
========================================= */
/* Hero Button */
.hero-button {
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  margin-bottom: 5rem; /* adjustable spacing from bottom */

  display: inline-flex;
  align-items: center;
  justify-content: center;

  height: 60px;
  width: calc(60px * 4);
  min-width: 160px;
  padding: 0 2rem;

  font-size: 16px;
  font-weight: 200;
  text-decoration: none;
  color: #fff;
  background-color: #c09354;
  border-radius: 0;
  transition: background 0.3s ease;
  white-space: nowrap; /* keep text on one line */
  z-index: 2;
}

.hero-button:hover {
  background-color: #40428e;
}

/* =========================================
   Hide Hero Text on Mobile (button still visible)
   + Resize Button for Mobile
========================================= */
@media (max-width: 768px) {
  .hero-text {
    display: none;
  }

  .hero-button {
    font-size: 0.9rem;   /* smaller font */
    height: 35px;        /* shorter button */
    line-height: 35px;   /* align text vertically */
    padding: 0 1.2rem;   /* tighter padding */
    margin-bottom: 10rem; /* closer to bottom */
  }
}

/* =========================================
   About Section
========================================= */
.about-section {
  background-color: #f7f7f7;
  padding: 0;
}

.about-container {
  display: flex;
  max-width: 2400px;
  margin: 0 auto;
  overflow: hidden;
}

/* Right: Text defines the height */
.about-content {
  flex: 1 1 50%;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 80px 10px;
  color: #111;
  background-color: #f7f7f7;
}

/* Left: Image matches that height */
.about-image {
  flex: 1 1 50%;
  position: relative;
  padding: 80px 60px;
  overflow: hidden;
  display: flex;          /* make child stretch */
}

.about-image img {
  width: 100%;
  height: auto;           /* don’t force full height */
  min-height: 100%;       /* must at least cover */
  object-fit: cover;      /* crop sides if needed */
  object-position: center;
  flex: 1;
}


.about-subtitle {
  font-size: clamp(14px, 2vw, 22px);
  font-weight: 800;
  letter-spacing: 1px;
  margin-bottom: 15px;
}

.about-title {
  font-size: clamp(28px, 5vw, 70px);
  font-weight: 900;
  margin-bottom: 25px;
  line-height: 1.2;
}

.about-list {
  margin: 20px 0;
  padding-left: 20px;
  list-style-position: outside;
  font-weight: 500;
}

.about-list li {
  margin-bottom: 12px;
  font-size: clamp(16px, 2vw, 24px);
  line-height: 1.6;
}

.about-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-top: 40px;

  height: 60px;
  width: calc(60px * 4);
  min-width: 160px;

  font-size: 16px;
  font-weight: 200;
  text-decoration: none;
  color: #fff;

  background-color: #c09354;
  border-radius: 0;
  transition: background 0.3s ease;
}

.about-btn:hover {
  background-color: #40428e;
}

/* =========================================
   Responsive Adjustments
========================================= */
@media (max-width: 768px) {
  .about-container {
    flex-direction: column;
    min-height: auto;
    padding: 0 20px;
    box-sizing: border-box;
  }

  .about-image {
    order: 2;
    height: 300px;
    padding: 20px 0;
  }

  .about-content {
    order: 1;
    padding: 40px 0;
    text-align: left;
  }
}





/* ================================
   SERVICES SECTION
================================ */
.services-section {
  background-color: #e4e4e4;
  padding: 80px 20px;
  width: 100%;
}

.services-container {
  max-width: 2000px;
  margin: 0 auto;
}

/* Heading */
.services-heading {
  text-align: center;
  margin-bottom: 40px;
}

.services-subtitle {
  font-size: clamp(1rem, 2.5vw, 1.75rem);
  font-weight: 800;
  letter-spacing: 1px;
  margin-bottom: -10px;
  color: #111;
}

.services-title {
  font-size: clamp(1.75rem, 5vw, 3.75rem);
  font-weight: 900;
  color: #111;
  margin-bottom: 60px;
}

/* Grid */
.about-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 20px;
  margin: 0 auto;
}

.service-box {
  position: relative;
  aspect-ratio: 3 / 4;
  background: #ccc;
  overflow: hidden;
  border-radius: 6px;

  display: block;                 /* ensures <a> acts like a block */
  text-decoration: none;          /* remove underline */
  color: inherit;                 /* keep text color from parent */
  cursor: pointer;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.service-box img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.4s ease, filter 0.4s ease;
}

.service-box:hover img {
  transform: scale(1.05);         /* subtle zoom effect */
  filter: brightness(0.85);       /* gentle dim for readability */
}

.service-box:hover {
  transform: translateY(-3px);    /* small lift */
  box-shadow: 0 6px 15px rgba(0,0,0,0.25);
}

.service-label {
  position: absolute;
  bottom: 10px;
  left: 10px;
  margin: 0;                     /* clean up margins */
  color: #fff;
  font-size: 2.5rem;
  font-weight: 700;
  pointer-events: none;          /* keeps image fully clickable */
  text-shadow: 0 3px 8px rgba(0,0,0,0.5);
  letter-spacing: 1px;
}


/* View More */
.services-view-more {
  text-align: center;
  margin-top: 60px;
}

/* Reusable Button */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 60px;
  width: calc(60px * 4);
  min-width: 160px;
  padding: 0 2rem;
  font-size: 16px;
  font-weight: 200;
  text-decoration: none;
  color: #fff;
  background-color: #c09354;
  border-radius: 0;
  transition: background 0.3s ease;
}

.btn:hover {
  background-color: #40428e;
}



/* =========================================
   Pricelist Section
========================================= */
.pricelist-section {
  background-color: #fff;
  padding: 80px 20px;
}

.pricelist-container {
  max-width: 2000px;
  margin: 0 auto;
  text-align: center;
}

.pricelist-heading {
  margin-bottom: 50px;
}

.pricelist-subtitle {
  font-size: clamp(1rem, 2.5vw, 1.75rem);
  font-weight: 800;
  letter-spacing: 1px;
  margin-bottom: -10px;
  color: #111;
}

.pricelist-title {
  font-size: clamp(1.75rem, 5vw, 3.75rem);
  font-weight: 900;
  color: #111;
  margin-bottom: 60px;
}

.pricelist-intro {
  font-size: 1rem;
  color: #444;
  max-width: 2000px;
  margin: -40px auto 50px; /* tuck closer to heading */
  margin-left: 12.5px;
  margin-right: 12.5px;
  line-height: 1.6;
  text-align: justify;

  hyphens: none;
  -webkit-hyphens: none; /* Safari/Chrome */
  -moz-hyphens: none;    /* Firefox */
  word-break: normal;
  overflow-wrap: normal;
}



/* Pricelist Buttons */
.pricelist-buttons {
  display: flex;
  justify-content: center;
  gap: 20px;
  margin-bottom: 50px;
  flex-wrap: wrap;
  cursor: pointer;
}

.price-btn {
  flex: 1;
  max-width: 380px;
  text-align: center;

  height: 60px;
  line-height: 60px;
  font-size: 16px;
  font-weight: 200;
  text-decoration: none;
  color: #fff;

  background-color: #c09354;
  border-radius: 0;
  transition: background 0.3s ease;

  min-width: 150px;
}

.price-btn:hover {
  background-color: #40428e;
}

.price-btn.active {
  background-color: #001f3f; /* Navy */
  color: #fff;
}

/* Mobile stacking */
@media (max-width: 767px) {
  .pricelist-buttons {
    flex-direction: column;
    gap: 15px;
    align-items: center;
  }

  .price-btn {
    flex: none;
    width: 90%;
    max-width: 400px;
    margin: 0 auto;
  }
}

/* Hide all sections except active */
.package-section {
  display: none;
  text-align: left;
}
.package-section.active {
  display: block;
}

/* Package box */
.package-box {
  margin-bottom: 0px;
  padding: 10px;
}

/* --- Heading leader (middle dots) --- */
.dot-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 1.2rem;
  font-weight: 600;
  margin-bottom: 10px;
}


.dot-heading .dots {
  flex: 1;
  display: inline-block;
  overflow: hidden;
  text-align: center;
  font-family: monospace;
}

.dot-heading .dots::before {
  content: "...................................................................................................................................................................................";
  letter-spacing: 0.01em;
  display: inline-block;
}

.package-subtitle {
  font-size: 0.9rem;
  font-weight: 540;
  color: #393939;
  margin-top: -12px;   /* pulls it closer to the heading */
  margin-bottom: 8px; /* spacing before save-banner or description */
}



/* --- Pricing row leader (full stops) --- */
.pricing-row {
  display: flex;
  align-items: center;
  padding: 6px 0;
}
.pricing-row .dots {
  flex: 1;
  overflow: hidden;
  white-space: nowrap;
  text-align: center;
}
.pricing-row .dots::before {
  content: ".......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................";
  display: inline-block;
  width: 100%;
  white-space: nowrap;
}
.pricing-row .left {
  flex: 0 0 auto;
  color: #333;
}
.pricing-row .right {
  flex: 0 0 auto;
  white-space: nowrap;
  color: #333;
  font-weight: bold;
}

/* Subtext */
.subtext {
  font-size: 1rem;
  text-align: justify;
  line-height: 1.5;
  color: #555;
  margin-bottom: 15px;
}

/* Accordion toggle */
.toggle-prices {
  display: inline-block;
  margin: 0px 0 5px;
  padding: 8px 0px;
  font-size: 14px;
  font-weight: 600;
  background: none;
  border: none;
  cursor: pointer;
  transition: all 0.3s ease;
}
.toggle-prices:hover {
  background-color: none;
}

/* Accordion content */
.pricing-container {
  display: none;
  margin-top: 10px;
}
.pricing-container.active {
  display: block;
}

.pricing-table {
  width: 100%;
}

.package-subtitle {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 0.9rem;
  font-weight: 400;
  color: #666;
  margin-top: -6px;
  margin-bottom: 8px;
}

.package-subtitle .subtitle-left {
  flex: 1;
}

/* Save Banner Box */
.save-banner {
  display: inline-block;
  margin-top: 0px;
  margin-bottom: 10px;
  padding: 6px 14px;
  background: #c09354;
  color: #fff;
  font-weight: 700;
  font-size: 0.85rem;
  border-radius: 0px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.subheading {
  font-weight: bold;
}


/* Mobile font scaling */
@media (max-width: 767px) {
  .pricelist-section {
    font-size: 0.8em; /* scale body text inside pricelist */
  }

  /* Pricelist Into */
  .pricelist-intro {
    font-size: 0.9rem;
    padding-left: 20px;
    padding-right: 20px;
    margin-bottom: 20px;
  }

.subheading {
  margin-bottom: 8px;
  font-weight: bold
}

.subtext {
  font-size: 0.8rem;
}

  /* Package headings */
  .dot-heading {
    font-size: 1rem;
  }

  /* Smaller subtitle under package headings */
  .package-subtitle {
    font-size: 0.75rem;
  }
}



/* ================================
   Testimonials Section
================================ */
.testimonials-section {
  background-color: #f7f7f7;
  padding: 80px 20px;
}

.testimonials-container {
  max-width: 2000px;
  margin: 0 auto;
  text-align: center;
}

.testimonials-heading {
  margin-bottom: 40px;
}

.testimonials-subtitle {
  font-size: clamp(1rem, 2.5vw, 1.75rem);
  font-weight: 800;
  letter-spacing: 1px;
  margin-bottom: -10px;
  color: #111;
}

.testimonials-title {
  font-size: clamp(1.75rem, 5vw, 3.75rem);
  font-weight: 900;
  color: #111;
  margin-bottom: 40px;
}

/* Slide content */
.testimonial-box {
  padding: 20px 40px;
  text-align: center;
}

.testimonial-text {
  font-size: 1.8rem;   /* bigger on desktop */
  color: #333;
  line-height: 1.6;
  margin-bottom: 20px;
  max-width: 1000px;
  margin-left: auto;
  margin-right: auto;
}

.testimonial-name {
  font-size: 1.5rem;   /* bigger on desktop */
  font-weight: bold;
  color: #000;
  margin-bottom: 50px;
}

/* Swiper Controls */
.swiper-button-prev,
.swiper-button-next {
  color: #333;
  transition: color 0.3s;
}
.swiper-button-prev:hover,
.swiper-button-next:hover {
  color: #c09354;
}

/* Dots */
.swiper-pagination-bullet {
  background: #ccc;
  opacity: 1;
}
.swiper-pagination-bullet-active {
  background: #40428e;
}

/* ================================
   Mobile Adjustments
================================ */
@media (max-width: 768px) {
  /* Hide arrows on mobile */
  .testimonials-swiper .swiper-button-prev,
  .testimonials-swiper .swiper-button-next {
    display: none !important;
  }

  /* Fix slide sizing so text doesn’t skew/clip */
  .testimonials-swiper {
    width: 100%;
    padding: 0 14px;
    box-sizing: border-box;
    overflow: hidden;
  }
  .testimonials-swiper .swiper-slide {
    width: 100% !important;
    flex: 0 0 100% !important;
    display: block;
  }
  .testimonial-box {
    width: 100%;
    margin: 0 auto;
    padding: 0;
  }

  .testimonial-name {
    padding-bottom: 25px;
  }

  /* Bigger text + name on mobile */
  .testimonial-text {
    font-size: clamp(0.8rem, 4.5vw, 1.6rem);
    line-height: 1.6;
    margin-bottom: 16px;
    max-width: 95%;
    margin-left: auto;
    margin-right: auto;
  }
  .testimonial-name {
    font-size: clamp(0.6rem, 4vw, 1.3rem);
    margin-bottom: 28px;
  }
}

@media (max-width: 420px) {
  .testimonial-text {
    font-size: clamp(1rem, 4.5vw, 1.4rem);
  }
  .testimonial-name {
    font-size: clamp(0.95rem, 4vw, 1.2rem);
  }
}



/* ================================
   Footer (3 columns: contact, links, socials)
================================ */
.footer-section {
  background: #0d0d16;
  color: #e7e7ea;
  padding: 72px 24px 28px;
  font-size: 0.95rem;
}
.footer-container {
  max-width: 2000px;
  margin: 0 auto;
}

.footer-tagline {
  font-weight: 800;
  color: #fff;
  font-size: clamp(1.4rem, 3.2vw, 2.25rem);
  margin: 0 0 36px 0;
}

.footer-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr; /* 3 columns */
  gap: 64px;
  align-items: start;
}

/* Left column (contact) */
.footer-contact {
  text-align: left;
}

/* Center column (links) */
.footer-links {
  display: flex;
  flex-direction: column;
  align-items: center;   /* center the whole block in the middle column */
}

.footer-links-inner {
  display: flex;
  flex-direction: column;
  align-items: flex-start; /* left-align heading and links together */
}

.footer-links .footer-heading {
  margin: 0 0 18px 0;
  text-align: left;
}

.footer-links .links-2col {
  font-size: 1.3rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px 88px;
  text-align: left;
}


/* Right column (socials) */
.footer-socials-col {
  text-align: right;
}
.footer-socials {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 18px;
  margin-top: 10px;
}

/* Headings */
.footer-heading {
  font-size: 2rem;
  color: #fff;
  font-weight: 800;
  margin: 0 0 18px 0;
}

/* Contact links */
.footer-line {
  margin: 12px 0;
  font-size: 1.3rem;
}
.footer-link,
.footer-link-underline {
  margin-top: 8px;
  color: #cfd1d8;
  transition: color 0.2s ease, border-color 0.2s ease;
}
.footer-link-underline {
  display: inline-block;
  border-bottom: 2px solid #6b7280;
  padding-bottom: 6px;
}
.footer-link:hover,
.footer-link-underline:hover {
  color: #c09354;
  border-color: #c09354;
}

/* Important links */
.footer-links ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
.footer-links li {
  margin: 10px 0;
}
.footer-links a {
  color: #cfd1d8;
  transition: color 0.2s;
}
.footer-links a:hover {
  color: #c09354;
}

/* Socials */
.footer-socials a {
  color: #cfd1d8;
  font-size: 1.3rem;
  transition: color 0.3s;
}
.footer-socials a:hover {
  color: #c09354;
}

/* Divider + bottom */
.footer-divider {
  margin: 40px 0 18px;
  height: 1px;
  background: #2a2f3a;
  border: 0;
}
.footer-bottom {
  color: #a8abb6;
  font-size: 0.9rem;
  text-align: left; /* matches screenshot */
}

/* Responsive */
@media (max-width: 768px) {
  .footer-section {
    padding: 56px 18px 24px;
  }
  .footer-tagline {
    font-size: clamp(1.25rem, 4.8vw, 1.6rem);
    margin-bottom: 28px;
    text-align: center;
  }
  .footer-grid {
    grid-template-columns: 1fr;
    gap: 32px;
    text-align: center;
  }

  /* Center all column content */
  .footer-contact,
  .footer-links,
  .footer-socials-col {
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
  }

  .footer-heading {
    font-size: 1rem;
  }

  .footer-line {
    font-size: 1rem;
  }
  
  .footer-links a {
    font-size: 0.9rem;  
  }

  /* Keep 2 columns for Important Links on mobile */
  .footer-links .links-2col {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px 32px;
    text-align: center;
    justify-items: center; /* center link text in each column */
  }

  .footer-socials {
    justify-content: center;
  }

  .footer-bottom {
    font-size: 0.85rem;
    text-align: center;
  }
}


/* ================================
   Back to Top Button
================================ */
#backToTop {
  position: fixed;
  bottom: 30px;
  right: 30px;
  width: 45px;
  height: 45px;
  border-radius: 50%;
  border: none;
  background-color: #c09354;   /* gold tone */
  color: #fff;
  font-size: 1.3rem;
  font-weight: bold;
  cursor: pointer;
  display: none;               /* hidden by default */
  align-items: center;
  justify-content: center;
  z-index: 1000;
  box-shadow: 0 4px 8px rgba(0,0,0,0.3);
  transition: opacity 0.3s ease, transform 0.3s ease;
}

#backToTop.show {
  display: flex;
  opacity: 1;
  transform: translateY(0);
}

#backToTop.hide {
  opacity: 0;
  transform: translateY(20px);
  pointer-events: none;
}

#backToTop:hover {
  background-color: #40428e; /* your navy hover color */
}



/* Booking Page Header */
.booking-header {
  background-color: #000;
  position: relative; /* fixed only on hero, relative here */
}

/* Ensure booking heading clears the fixed header */
.booking-heading {
  background-color: #fff;
  padding: 200px 20px 60px; /* extra top padding pushes it below header */
  text-align: center;
}

@media (max-width: 768px) {
  .booking-heading {
    padding-top: 90px; /* slightly less for mobile header */
  }
}


.booking-subtitle {
  font-size: clamp(1rem, 2.5vw, 1.75rem);
  margin-top: 60px;
  font-weight: 800;
  letter-spacing: 1px;
  margin-bottom: -10px;
  color: #111;
}

.booking-title {
  font-size: clamp(1.75rem, 5vw, 3.75rem);
  font-weight: 900;
  color: #111;
  margin-bottom: 0;
}

/* Booking Form Section */
.booking-form-section {
  background-color: #f9f9f9;
  padding: 60px 20px;
}


/* Booking Form Layout */
.booking-form {
  max-width: 1600px;
  margin: 0 auto;
}

.form-section-title {
  font-weight: 800;
  margin: 40px 0 20px;
  font-size: 1.3rem;
  color: #111;
}

.form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px 40px; /* row gap / column gap */
  margin-bottom: 30px;
}

.form-group {
  display: flex;
  flex-direction: column;
}

.form-group label {
  font-weight: bold;
  margin-bottom: 6px;
}

.form-group input {
  padding: 0.7rem;
  border-radius: 4px;
  border: 1px solid #ccc;
  font-size: 1rem;
}

/* Mobile: stack into 1 column */
@media (max-width: 768px) {
  .form-grid {
    grid-template-columns: 1fr;
    gap: 16px;
  }
}

/* Booking form adjustments */
.booking-form {
  max-width: 1000px;
  margin: 0 auto;
  background: none;   /* remove background */
  border: none;       /* remove border */
  box-shadow: none;   /* remove shadow */
  padding: 0;         /* reset padding */
}


.form-group select {
  appearance: none;            /* hide default arrow */
  background-color: #fff;
  background-image: url("data:image/svg+xml;charset=UTF-8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='black'><path d='M2 4l4 4 4-4z'/></svg>");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 12px;
  padding-right: 2rem;         /* space for arrow */
  cursor: pointer;
}


/* Services Grid - 5 in a row on desktop */
.services-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 15px;
  margin: 20px 0 40px;
}

.service-option {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border: 2px solid #ccc;
  border-radius: 6px;
  padding: 14px 10px;
  cursor: pointer;
  background: #fff;
  transition: all 0.3s ease;
  font-weight: 600;
  text-align: center;
}

.service-option input {
  display: none;
}

.label-text {
  color: #111;
  margin-bottom: 6px;
  font-weight: bold;
}

.service-price {
  font-size: 1rem;
  font-weight: bold;
  margin-bottom: 4px;
  color: #333;
}

.label-action {
  font-size: 0.8rem;
  color: #666;
}

.service-option:hover {
  border-color: #c09354;
}

/* Dynamic save banner */
.save-banner-dynamic {
  margin-top: 6px;
  padding: 4px 10px;
  background: #c09354;
  color: #fff;
  font-weight: 700;
  font-size: 0.85rem;
  border-radius: 0px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

/* Mobile - stack them */
@media (max-width: 768px) {
  .services-grid {
    grid-template-columns: 1fr;
  }
}


.order-summary {
  margin-top: 30px;
  margin: auto;
  max-width: 1000px;
  padding: 20px;
  border: 2px solid #c09354;
  border-radius: 6px;
  background: #fdf9f3;
  font-size: 1rem;
  line-height: 1.6;
}

.order-summary h3 {
  margin-bottom: 10px;
  font-size: 1.3rem;
  font-weight: 800;
}

.order-summary ul {
  list-style: none;
  padding: 0;
  margin: 0 0 10px;
}

.order-summary li {
  margin: 4px 0;
  display: flex;
  justify-content: space-between;
}

.order-summary .totals {
  margin-top: 10px;
  font-weight: 700;
}

/* Make the PayFast form inside the summary look like a simple row */
.order-summary #checkoutForm {
  display: block;
  margin-top: 12px;
  padding: 0;
  background: transparent;
  border: 0;
  box-shadow: none;
  max-width: none;
  text-align: left;           /* left-align the button */
}

/* Button style */
.order-summary .checkout-btn {
  background-color: #c09354;
  color: #fff;
  padding: 12px 22px;
  font-size: 1rem;
  border: none;
  border-radius: 6px;
  cursor: pointer;
  transition: background 0.3s ease;
}

.order-summary .checkout-btn:hover {
  background-color: #a67c41;
}

.booking-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;  /* two equal columns */
  grid-template-rows: auto auto;   /* exactly two rows */
  gap: 30px 40px; /* row gap, column gap */
  margin-bottom: 30px;
  align-items: start;
}

.calendar-wrapper {
  grid-column: 1;
  grid-row: 1;
}

.time-slots {
  grid-column: 2;
  grid-row: 1;
}

.property-type {
  grid-column: 1;
  grid-row: 2;
}

.bedrooms {
  grid-column: 2;
  grid-row: 2;
}

.time-buttons {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 10px;
}

.time-btn {
  padding: 10px 16px;
  border: 1px solid #ddd;
  border-radius: 8px;
  background: #f9f9f9;
  color: #333;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  text-align: center;
}

.time-btn:hover {
  background: #eee;
}

.time-btn.selected {
  background: #c09354;
  border-color: #c09354;
  color: #fff;
}

/* Mobile: stack Date → Time → Type → Bedrooms */
@media (max-width: 768px) {
  .booking-grid {
    grid-template-columns: 1fr !important;
    grid-auto-rows: auto;
    grid-template-rows: none;
    gap: 18px;
  }

  /* Reset explicit placements so items flow in one column */
  .calendar-wrapper,
  .time-slots,
  .property-type,
  .bedrooms {
    grid-column: 1 !important;
    grid-row: auto !important;
    width: 100%;
  }
}

.service-option {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 16px;
  border: 1px solid #ccc;
  border-radius: 6px;
  box-sizing: border-box;
  text-align: center;
  min-height: 220px; /* ensures equal card height */
}

/* service name */
.service-option .label-text {
  font-weight: 600;
  min-height: 48px; /* reserve two lines worth of space */
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}

/* price */
.service-option .service-price {
  font-size: 1.1rem;
  font-weight: bold;
  margin: 8px 0;
  min-height: 28px; /* forces all price lines to sit level */
  display: flex;
  align-items: center;
  justify-content: center;
}

/* action text (click to add/remove) */
.service-option .label-action {
  font-size: 0.9rem;
  color: #555;
  min-height: 20px; /* keeps spacing uniform */
  display: flex;
  align-items: center;
  justify-content: center;
}



.service-option .save-banner-dynamic {
  margin-top: auto;          /* pushes it to the bottom */
  margin-bottom: 8px;        /* padding from bottom */
  background: #c09354;
  color: #fff;
  font-weight: 600;
  padding: 4px 12px;
  border-radius: 4px;
  text-align: center;
  width: fit-content;
}

.calendar-notice {
  margin-top: 8px;
  font-size: 0.9rem;
  color: #c09354; /* matches your brand gold */
  font-weight: 500;
}


/* ================================
   FAQ Accordion
================================ */
.faq-section {
  background: #f9f9f9;
  padding: 80px 20px;
  margin-top: 200px;
  max-width: 1000px;
  margin-left: auto;
  margin-right: auto;
}

.faq-container {
  max-width: 1000px;
  margin: 0 auto;
}

.faq-title {
  font-size: clamp(1.75rem, 5vw, 3.75rem);
  font-weight: 900;
  text-align: center;
  margin-bottom: 40px;
  color: #111;
  margin-top: -0px;
}

.faq-item {
  border-bottom: 1px solid #ddd;
}

.faq-question {
  width: 100%;
  background: none;
  border: none;
  text-align: left;
  font-size: 2.4rem;
  font-weight: 800;
  padding: 40px 0;
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  color: #111;
  margin-top: 0px;
}

.faq-toggle {
  font-size: 1.5rem;
  font-weight: bold;
  transition: transform 0.3s ease;
}

.faq-answer {
  font-size: clamp(1.75rem, 5vw, 1.5rem);
  max-height: 0;
  max-width: 90%;
  text-align: justify;
  overflow: hidden;
  transition: max-height 0.3s ease, padding 0.3s ease;
  padding: 0;
  color: #555;
}

.faq-answer p {
  margin: 20px 0;
}

.faq-item.active .faq-answer {
  max-height: 500px;
  padding: 40px 0 20px 0;
}


/* ================================
   FAQ Responsive
================================ */
@media (max-width: 768px) {
  .faq-title {
    font-size: 1.75rem; /* smaller on tablets/phones */
    margin-top: -150px;
  }

  .faq-question {
    font-size: 1.4rem;  /* down from 2.4rem */
    padding: 20px 0;    /* tighter spacing */
  }

  .faq-answer p {
    font-size: 0.95rem;
  }
}

@media (max-width: 480px) {
  .faq-title {
    font-size: 1.5rem;
  }

  .faq-question {
    font-size: 1.2rem;
    padding: 15px 0;
  }

  .faq-answer p {
    font-size: 0.9rem;
  }
}


/* ================================
   Our Services Sticky Stack (global)
================================ */
.our-services {
  position: sticky;
  top: 0;
  height: 100vh;
  overflow: hidden;
}

/* If a global `section { padding: ... }` exists, neutralize it here */
section.our-services {
  padding: 0 !important;
}

.our-services__bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
}
.our-services__overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
}
.overlay-gold  { background: rgba(192, 147, 84, 0.65); }
.overlay-blue  { background: rgba(0, 82, 204, 0.55); }
.overlay-black { background: rgba(0, 0, 0, 0.55); }
.overlay-grey { background: rgba(120, 120, 120, 0.45); }

.our-services__content {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  width: min(92vw, 1600px);
  margin: 0 auto;
  height: 100%;
  align-items: center;
  color: #fff;
  padding-top: 120px; /* header clearance */
}
.our-services__content.single-col {
  grid-template-columns: 1fr;
  text-align: center;
}

.our-services__text h1 {
  font-size: clamp(2.2rem, 6vw, 3.5rem);
  font-weight: 900;
  margin-bottom: 20px;
}
.our-services__text p {
  font-size: clamp(1rem, 2vw, 1.2rem);
  line-height: 1.6;
  max-width: 50ch;
  margin: 0 auto;
}

/* Generic slider (used elsewhere if needed) */
.our-services__slider {
  background: #fff;
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 12px 28px rgba(0,0,0,0.35);
  height: 70vh;
}
.our-services__slider img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Manual z-index stack */
.our-services-1  { z-index: 1; }
.our-services-2  { z-index: 2; }
.our-services-3  { z-index: 3; }
.our-services-4  { z-index: 4; }
.our-services-5  { z-index: 5; }
.our-services-6  { z-index: 6; }
.our-services-7  { z-index: 7; }
.our-services-8  { z-index: 8; }
.our-services-9  { z-index: 9; }
.our-services-10 { z-index: 10; }

/* Footer sits after last service */
.footer-section { position: relative; z-index: 9999; }

/* Global responsive (non-HDR sections) */
@media (max-width: 900px) {
  .our-services__content {
    grid-template-columns: 1fr;
    text-align: center;
    gap: 24px;
    padding-top: 100px;
  }
  .our-services__slider { height: 50vh; }
}

/* ================================
   Section 1: HDR Photo Package
   (force right column to the screen edge)
================================ */
/* Section 1 HDR Content */
.our-services-1 .hdr-content {
  display: grid;
  grid-template-columns: 1fr 1fr;
  width: 100%;
  height: 100%;
  align-items: center;
  gap: 0;
  padding-top: 275px; /* header clearance */
}

/* Left text */
.our-services-1 .hdr-text {
  padding-left: 5%;   /* match header */
  padding-right: 5%;  /* add breathing room on the right */
  text-align: left;
}
.our-services-1 .hdr-text h1 {
  font-size: clamp(1.5rem, 4vw, 5rem);
  font-weight: 900;
  margin-bottom: 20px;
}
.our-services-1 .hdr-text p {
  font-size: clamp(0.9rem, 1.5vw, 1.5rem);
  line-height: 1.6;
  max-width: 65ch;
}


/* Right slideshow */
.our-services-1 .hdr-slider {
  width: 100%;          /* take entire right column */
  aspect-ratio: 16 / 9;
  margin: 0;
  border-radius: 0;     /* flush to edges */
  overflow: hidden;
  box-shadow: 0 12px 28px rgba(0,0,0,0.35);
  background: #000;
  justify-self: stretch;
}
.our-services-1 .hdr-slider img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Circle buttons */
.hdrSwiper .swiper-button-prev,
.hdrSwiper .swiper-button-next {
  width: 40px;
  height: 40px;
  background: #000;           /* black circle */
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Reset Swiper's default arrow */
.hdrSwiper .swiper-button-prev::after,
.hdrSwiper .swiper-button-next::after {
  content: ''; /* clear default */
}

/* Insert proper arrows */
.hdrSwiper .swiper-button-prev {
  font-size: 22px;
  color: #fff;
}
.hdrSwiper .swiper-button-prev::before {
  content: "🡐";
  font-size: 28px;
  font-weight: 900;
  color: #fff;
  display: block;
  line-height: 1;
}

.hdrSwiper .swiper-button-next {
  font-size: 22px;
  color: #fff;
}
.hdrSwiper .swiper-button-next::before {
  content: "🡒";
  font-size: 28px;
  font-weight: 900;
  color: #fff;
  display: block;
  line-height: 1;
}

/* Optional hover */
.hdrSwiper .swiper-button-prev:hover,
.hdrSwiper .swiper-button-next:hover {
  background: #111;
}


.hdrSwiper .swiper-pagination {
  display: none !important;
}

.hdrSwiper .swiper-button-prev::before,
.hdrSwiper .swiper-button-next::before {
  font-size: 24px;
  color: #fff;   /* default white */
  transition: color 0.3s ease;  /* smooth fade */
}

.hdrSwiper .swiper-button-prev:hover::before,
.hdrSwiper .swiper-button-next:hover::before {
  color: #c09354;   /* change to yellow on hover */
}

/* Wrapper to center under slideshow */
.book-btn-wrapper {
  text-align: center;
  margin-top: 20px; /* space below slideshow */
}

/* Link styling */
.book-btn {
  font-size: 1.2rem;
  font-weight: 600;
  color: #fff;
  margin-bottom: 150px;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 12px; /* space between text and circle */
  transition: color 0.3s ease;
}

/* Circle with arrow */
.book-btn .arrow-circle {
  width: 72px;
  height: 72px;
  border: 2px solid #fff;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 36px;
  line-height: 1;
  transition: all 0.3s ease;
}

/* Hover effects */
.book-btn:hover {
  color: #000000; /* gold tone on hover */
}

.book-btn:hover .arrow-circle {
  border-color: #000000;
  color: #000000;
}



/* --- Mobile --- */
@media (max-width: 900px) {
  .our-services-1 .hdr-content {
    grid-template-columns: 1fr; /* stack */
    padding-top: 100px;
    gap: 20px;
  }

  .our-services-1 .hdr-text h1 {
    margin-left: auto;
    margin-right: auto;
    text-align: center;
    padding-left: 5%;
    padding-right: 5%;
  }

  .our-services-1 .hdr-text p {
    margin-left: auto;
    margin-right: auto;
    text-align: center;
    padding-left: 5%;
    padding-right: 5%;
  }

  .our-services-1 .hdr-slider {
    width: 100%;        /* take full width of screen */
    max-width: 100%;    /* prevent overflow */
    border-radius: 0;   /* flush edges */
    margin-bottom: auto;
  }

}

/* Button under HDR slider (right column, centered) */
.our-services-1 .book-under-slider {
  grid-column: 2;          /* put it in the same (right) column as the slider */
  justify-self: center;    /* center horizontally within that column */
  text-align: center;
  margin-top: 16px;
}

/* On mobile it stacks to one column anyway */
@media (max-width: 900px) {
  .our-services-1 .book-under-slider {
    grid-column: 1 !important;
    justify-self: center;
  }
}

.our-services-1 .book-under-slider {
  grid-column: 2;
  justify-self: center;
  text-align: center;

  /* auto centering, then slight upward shift */
  margin-top: auto;
  margin-bottom: auto;
  transform: translateY(clamp(-1vw, -12px, -24px)); /* scales with screen width */
}


/* ================================
   Section 2: Aerial / Drone Photography
================================ */
.our-services-2 .aerial-content {
  display: grid;
  grid-template-columns: 1fr 1fr;
  width: 100%;
  height: 100%;
  align-items: center;
  gap: 0;
  padding-top: 120px; /* header clearance */
}

/* Left text */
.our-services-2 .aerial-text {
  padding-left: 5%;
  padding-right: 5%;
  text-align: left;
}
.our-services-2 .aerial-text h1 {
  font-size: clamp(1.5rem, 4vw, 5rem);
  font-weight: 900;
  margin-bottom: 20px;
  color: #fff;
}
.our-services-2 .aerial-text p {
  font-size: clamp(0.9rem, 1.5vw, 1.5rem);
  line-height: 1.6;
  max-width: 65ch;
  color: #fff;
}

/* Right: button */
.our-services-2 .aerial-right {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  text-align: center;
}

.our-services-2 .book-btn {
  font-size: 1.2rem;
  font-weight: 600;
  color: #fff;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  transition: color 0.3s ease;
}

.our-services-2 .book-btn .arrow-circle {
  width: 72px;
  height: 72px;
  border: 2px solid #fff;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 36px;
  line-height: 1;
  transition: all 0.3s ease;
}

.our-services-2 .book-btn:hover {
  color: #000;
}

.our-services-2 .book-btn:hover .arrow-circle {
  border-color: #000;
  color: #000;
}

/* --- Mobile --- */
@media (max-width: 900px) {
  .our-services-2 .aerial-content {
    grid-template-columns: 1fr;
    gap: 30px;
    padding-top: 100px;
  }

  .our-services-2 .aerial-text {
    text-align: center;
    padding-left: 5%;
    padding-right: 5%;
  }

  .our-services-2 .aerial-right {
    justify-content: flex-start;
  }
}

/* Make the single grid row fill the viewport height so items can sit center/bottom */
.our-services-2 .aerial-content {
  /* you already have display:grid and 2 columns */
  grid-template-rows: 1fr;   /* <-- row now fills available height */
  align-items: stretch;       /* let each column fill that row */
}

/* Keep the left text vertically centered */
.our-services-2 .aerial-text {
  align-self: center;         /* centers the left column content vertically */
}

/* Move the button column to the bottom, with adjustable spacing from bottom */
.our-services-2 .aerial-right {
  align-self: end;            /* position the right column at the bottom of the row */
  display: flex;
  justify-content: flex-end;  /* keep the button at the bottom inside the column */
  align-items: center;
  padding-bottom: clamp(160px, 20vh, 320px); /* tweak this to move it up/down responsively */
}

/* Mobile: stack and re-center */
@media (max-width: 900px) {
  .our-services-2 .aerial-content {
    grid-template-rows: auto;
    align-items: center;
  }
  .our-services-2 .aerial-right {
    align-self: center;
    justify-content: center;
    padding-bottom: 0;
  }
}

/* ================================
   Section 3: Video Tours
================================ */
.our-services-3 .video-content {
  display: grid;
  grid-template-columns: 1fr 1fr;
  width: 100%;
  height: 100%;
  align-items: center;
  padding-top: 120px;
}

.our-services-3 .video-text {
  padding-left: 5%;
  padding-right: 5%;
  color: #fff;
  text-align: left;
}
.our-services-3 .video-text h1 {
  font-size: clamp(1.5rem, 4vw, 5rem);
  font-weight: 900;
  margin-bottom: 20px;
}
.our-services-3 .video-text p {
  font-size: clamp(0.9rem, 1.5vw, 1.5rem);
  line-height: 1.6;
  max-width: 65ch;
}

/* ---------- Video box ---------- */
/* Full-width video column */
.our-services-3 .video-box {
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 3%;
}

.our-services-3 .video-thumb {
  position: relative;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  border-radius: 0;
  overflow: hidden;
  background: rgba(255,255,255,0.1);
  box-shadow: 0 12px 28px rgba(0,0,0,0.35);
  display: flex;
  justify-content: center;
  align-items: center;
}


/* Play button */
.play-btn {
  width: 120px;
  height: 120px;
  border-radius: 50%;
  background: #fff;
  border: none;
  cursor: pointer;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.35s ease, transform 0.3s ease;
}
.play-btn::after {
  content: "";
  position: absolute;
  inset: -10px;
  border-radius: 50%;
  border: 2px solid rgba(255,255,255,0.4);
}
.play-btn .triangle {
  width: 0;
  height: 0;
  border-left: 22px solid #111; /* dark play icon */
  border-top: 14px solid transparent;
  border-bottom: 14px solid transparent;
  margin-left: 6px;
  transition: border-left-color 0.35s ease;
}
.play-btn:hover {
  background: #c09354;         /* gold on hover */
  transform: scale(1.05);
}
.play-btn:hover .triangle {
  border-left-color: #fff;     /* white triangle */
}

/* ---------- Mobile ---------- */
@media (max-width: 900px) {
  .our-services-3 .video-content {
    grid-template-columns: 1fr;
    padding-top: 100px;
    gap: 40px;
  }
  .our-services-3 .video-text {
    text-align: center;
  }
}


/* Book button under video (right column, centered) */
.our-services-3 .book-under-video {
  grid-column: 2;              /* same column as video */
  justify-self: right;        /* center horizontally */
  padding-right: 3%;
  text-align: center;
  margin-top: auto;
  margin-bottom: auto;
  transform: translateY(clamp(-4vw, -48px, -96px)); /* move up slightly */
}

@media (max-width: 900px) {
  .our-services-3 .book-under-video {
    grid-column: 1 !important;
    justify-self: center;
    transform: translateY(-8px);
  }
}


/* ================================
   Section 4: Twilight Photography
   (match layout + style of Section 1)
================================ */
.our-services-4 .twilight-content {
  display: grid;
  grid-template-columns: 1fr 1fr;
  width: 100%;
  height: 100%;
  align-items: center;
  gap: 0;
  padding-top: 275px; /* same header clearance as Section 1 */
}

/* Left text */
.our-services-4 .twilight-text {
  padding-left: 5%;
  padding-right: 5%;
  text-align: left;
  color: #fff;
}
.our-services-4 .twilight-text h1 {
  font-size: clamp(1.5rem, 4vw, 5rem);
  font-weight: 900;
  margin-bottom: 20px;
}
.our-services-4 .twilight-text p {
  font-size: clamp(0.9rem, 1.5vw, 1.5rem);
  line-height: 1.6;
  max-width: 65ch;
}

/* Right slideshow */
.our-services-4 .twilight-slider {
  width: 100%;          /* take entire right column */
  aspect-ratio: 16 / 9;
  margin: 0;
  border-radius: 0;
  overflow: hidden;
  box-shadow: 0 12px 28px rgba(0,0,0,0.35);
  background: #000;
  justify-self: stretch;
}
.our-services-4 .twilight-slider img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Swiper arrows (reuse Section 1 style) */
.twilightSwiper .swiper-button-prev,
.twilightSwiper .swiper-button-next {
  width: 40px;
  height: 40px;
  background: #000;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.3s ease;
}

.twilightSwiper .swiper-button-prev::after,
.twilightSwiper .swiper-button-next::after {
  content: '';
}

.twilightSwiper .swiper-button-prev::before,
.twilightSwiper .swiper-button-next::before {
  font-size: 24px;
  font-weight: 900;
  color: #fff;
  line-height: 1;
  transition: color 0.3s ease;
}

.twilightSwiper .swiper-button-prev::before { content: "🡐"; }
.twilightSwiper .swiper-button-next::before { content: "🡒"; }

.twilightSwiper .swiper-button-prev:hover,
.twilightSwiper .swiper-button-next:hover {
  background: #111;
}
.twilightSwiper .swiper-button-prev:hover::before,
.twilightSwiper .swiper-button-next:hover::before {
  color: #c09354;
}
.twilightSwiper .swiper-pagination {
  display: none !important;
}

/* Button under slideshow (right column, centered) */
.our-services-4 .view-under-twilight {
  grid-column: 2;
  justify-self: center;
  text-align: center;
  margin-top: auto;
  margin-bottom: auto;
  transform: translateY(clamp(-1vw, -12px, -24px)); /* same lift as Section 1 */
}

/* Book/View button styling (matches .book-btn) */
.view-btn {
  font-size: 1.2rem;
  font-weight: 600;
  color: #fff;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  transition: color 0.3s ease;
}

.view-btn .arrow-circle {
  width: 72px;
  height: 72px;
  border: 2px solid #fff;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 36px;
  line-height: 1;
  transition: all 0.3s ease;
}

/* Hover effects */
.view-btn:hover {
  color: #000000;
}
.view-btn:hover .arrow-circle {
  border-color: #000000;
  color: #000000;
}

/* --- Mobile --- */
@media (max-width: 900px) {
  .our-services-4 .twilight-content {
    grid-template-columns: 1fr;
    padding-top: 100px;
    gap: 20px;
  }

  .our-services-4 .twilight-text h1,
  .our-services-4 .twilight-text p {
    text-align: center;
    margin-left: auto;
    margin-right: auto;
    padding-left: 5%;
    padding-right: 5%;
  }

  .our-services-4 .twilight-slider {
    width: 100%;
    max-width: 100%;
    border-radius: 0;
    margin-bottom: auto;
  }

  .our-services-4 .view-under-twilight {
    grid-column: 1 !important;
    justify-self: center;
    text-align: center;
    transform: translateY(-8px);
  }
}



/* ================================
   Section 5 – Virtual Staging
================================ */
.our-services-5 .staging-content {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  width: 100%;
  padding-top: 120px;
}

/* ---------- Left Text ---------- */
.our-services-5 .staging-text {
  padding-left: 5%;
  padding-right: 5%;
  color: #fff;
  text-align: left;
}
.our-services-5 .staging-text h1 {
  font-size: clamp(1.5rem, 4vw, 5rem);
  font-weight: 900;
  margin-bottom: 20px;
}
.our-services-5 .staging-text p {
  font-size: clamp(0.9rem, 1.5vw, 1.5rem);
  line-height: 1.6;
  max-width: 65ch;
}

/* ---------- Right Column ---------- */
.our-services-5 .staging-right {
  position: relative;
  width: 94%;
  padding: 3%;
  box-sizing: border-box;
  color: #fff;
  text-align: left;
}
.staging-heading {
  font-size: clamp(1rem, 1.3vw, 1.3rem);
  font-weight: 700;
  color: #fff;
  margin-bottom: 10px;
}

/* ---------- Before/After Slider ---------- */
.before-after {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  border-radius: 6px;
  box-shadow: 0 12px 28px rgba(0,0,0,0.35);
  cursor: ew-resize;
  touch-action: none;
  user-select: none;
}

/* Overlapping images */
.before-after img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  -webkit-user-drag: none;
  pointer-events: none;
}
.img-after {
  clip-path: inset(0 50% 0 0); /* start halfway */
}

/* Handle */
.slider-handle {
  position: absolute;
  top: 0;
  left: 50%;
  height: 100%;
  width: 0;
  z-index: 10;
  pointer-events: none;
}
.handle-line {
  position: absolute;
  top: 0;
  left: 50%;
  width: 2px;
  height: 100%;
  background: #fff;
  transform: translateX(-50%);
}
.handle-circle {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: #c09354; /* gold */
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-size: 20px;
  font-weight: bold;
  box-shadow: 0 4px 10px rgba(0,0,0,0.4);
  pointer-events: auto;
  cursor: ew-resize;
  transition: transform 0.2s ease, box-shadow 0.3s ease;
}
.handle-circle:hover {
  transform: translate(-50%, -50%) scale(1.1);
  box-shadow: 0 0 10px rgba(255,255,255,0.6);
}

/* ---------- Mobile Layout ---------- */
@media (max-width: 900px) {
  .our-services-5 .staging-content {
    grid-template-columns: 1fr;
    gap: 20px;
    padding-top: 100px;
  }
  .our-services-5 .staging-text {
    text-align: center;
  }
  .our-services-5 .staging-right {
    width: 100%;
    padding: 0 5%;
  }
  .staging-heading {
    text-align: center;
  }
}

/* =========================================================
   OUR SERVICES – Section 5
   Mobile spacing fix for Before/After slider
========================================================= */
@media (max-width: 900px) {

    /* Add breathing room below the slider block */
    .our-services-5 .before-after {
        margin-bottom: 80px;
    }

    /* If the slideshow sits inside staging-right,
     this ensures the whole right column moves up visually */
    .our-services-5 .staging-right {
        padding-bottom: 80px;
    }
}

/* ================================
   Section 6 – 3D Virtual Tours
================================ */
.our-services-6 .tours-content {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  width: 100%;
  padding-top: 120px;
}

/* Left text */
.our-services-6 .tours-text {
  padding-left: 5%;
  padding-right: 5%;
  color: #fff;
  text-align: left;
}
.our-services-6 .tours-text h1 {
  font-size: clamp(1.5rem, 4vw, 5rem);
  font-weight: 900;
  margin-bottom: 20px;
}
.our-services-6 .tours-text p {
  font-size: clamp(0.9rem, 1.5vw, 1.5rem);
  line-height: 1.6;
  max-width: 65ch;
}

/* Right column */
.our-services-6 .tours-right {
  position: relative;
  width: 94%;
  padding: 3%;
  box-sizing: border-box;
  color: #fff;
  text-align: left;
}
.tours-heading {
  font-size: clamp(1rem, 1.3vw, 1.3rem);
  font-weight: 700;
  color: #fff;
  margin-bottom: 10px;
}

/* Responsive iframe */
.iframe-wrapper {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  border-radius: 6px;
  box-shadow: 0 12px 28px rgba(0,0,0,0.35);
}
.iframe-wrapper iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
  border-radius: inherit;
}

/* Mobile layout */
@media (max-width: 900px) {
  .our-services-6 .tours-content {
    grid-template-columns: 1fr;
    gap: 20px;
    padding-top: 100px;
  }
  .our-services-6 .tours-text {
    text-align: center;
  }
  .our-services-6 .tours-right {
    width: 100%;
    padding: 0 5%;
  }
  .tours-heading {
    text-align: center;
  }
}

/* =========================================================
   OUR SERVICES – Section 6
   Mobile spacing fix for 3D Virtual Tours
========================================================= */
@media (max-width: 900px) {

    /* Add breathing room below the iframe */
    .our-services-6 .iframe-wrapper {
        margin-bottom: 80px;
    }

    /* Ensure the right column has bottom padding */
    .our-services-6 .tours-right {
        padding-bottom: 80px;
    }
}

/* =========================================
   OUR WORK PAGE STYLING
========================================= */

.booking-header {
  background-color: #000;
  position: relative; /* fixed only on hero, relative here */
}

/* ---------- Gallery Base ---------- */
.our-work-section {
  background: #fff;
  padding: 80px 0;
}
.our-work-container {
  max-width: 2000px;
  margin: 0 auto;
  padding: 0 50px;
}
.gallery-filters {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 30px;
  margin-bottom: 60px;
}
.filter-btn {
  background: none;
  border: none;
  font-size: 1.3rem;
  font-weight: 700;
  color: #333;
  cursor: pointer;
  padding-bottom: 6px;
  border-bottom: 3px solid transparent;
  transition: color 0.3s, border-bottom 0.3s;
}
.filter-btn:hover { color: #c09354; }
.filter-btn.active { color: #c09354; border-color: #c09354; }

.gallery-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 40px;
}
.gallery-item {
  border-radius: 10px;
  overflow: hidden;
  box-shadow: 0 10px 24px rgba(0,0,0,0.25);
  cursor: pointer;
  transition: transform 0.3s ease;
  aspect-ratio: 16 / 9;
}
.gallery-item:hover { transform: scale(1.03); }
.gallery-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* ---------- Virtual Staging (Before/After) ---------- */
.gallery-item.gallery-virtual { cursor: default; }
.before-after {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  cursor: ew-resize;
  border-radius: 10px;
}
.before-after img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  pointer-events: none;
}
.before-after .img-after {
  clip-path: inset(0 50% 0 0);
}
.before-after .slider-handle {
  position: absolute;
  top: 0;
  left: 50%;
  width: 3px;
  height: 100%;
  background: rgba(255,255,255,0.7);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 3;
}
.before-after .handle-line {
  position: absolute;
  width: 3px;
  height: 100%;
  background: rgba(255,255,255,0.6);
}
.before-after .handle-circle {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: rgba(0,0,0,0.6);
  border: 2px solid #fff;
  display: flex;
  align-items: center;
  justify-content: center;
}
.before-after .handle-circle .arrow {
  color: #fff;
  font-size: 1rem;
}

/* ---------- Lightbox ---------- */
.lightbox {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.9);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 9999;
}
.lightbox.show { display: flex; }
.lightbox img {
  max-width: 2400px;
  width: 90vw;
  border-radius: 10px;
}
.lightbox-prev,
.lightbox-next {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  font-size: 4rem;
  color: #fff;
  background: none;
  border: none;
  cursor: pointer;
  padding: 10px;
}
.lightbox-prev { left: 50px; }
.lightbox-next { right: 50px; }
.lightbox-close {
  position: absolute;
  top: 40px;
  right: 60px;
  font-size: 3rem;
  color: #fff;
  cursor: pointer;
}

/* ---------- RESPONSIVE ---------- */
@media (max-width: 1300px) {
  .gallery-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 30px;
  }
  .our-work-container { padding: 0 30px; }
}

@media (max-width: 700px) {
  .gallery-grid {
    grid-template-columns: 1fr;
    gap: 25px;
  }
  .our-work-container { padding: 0 20px; }
  .filter-btn { font-size: 1.1rem; }
}

/* ---------- Virtual Staging Fullscreen Modal ---------- */
.virtual-lightbox {
  background: rgba(0,0,0,0.95);
}
.virtual-wrapper {
  max-width: 2400px;
  width: 90vw;
  margin: auto;
  position: relative;
}
.before-after-large {
  width: 100%;
  aspect-ratio: 16/9;
  border-radius: 12px;
  overflow: hidden;
}
.virtual-lightbox .slider-handle .handle-circle {
  width: 40px;
  height: 40px;
  font-size: 1.3rem;
}
.virtual-lightbox .lightbox-close {
  top: 30px;
  right: 50px;
  font-size: 3rem;
}

/* =========================================================
   OUR SERVICES / OUR WORK
   Mobile spacing for Before & After sliders (gallery + section)
========================================================= */
@media (max-width: 700px) {

  /* Add space BELOW before/after slider */
  .before-after {
    margin-bottom: 40px;
  }

  /* Ensure gallery item itself has breathing room */
  .gallery-item.gallery-virtual {
    padding-bottom: 40px;
  }
}



/* =========================================
   OUR WORK ANIMATIONS
========================================= */

.gallery-item {
  opacity: 0;
  transform: scale(0.85) translate(-30px, -30px);
  transition: transform 0.7s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.7s ease;
  will-change: transform, opacity;
}

/* Active (when scrolled into view) */
.gallery-item.visible {
  opacity: 1;
  transform: scale(1) translate(0, 0);
}

/* Add subtle staggered delays per column */
.gallery-item[data-col="1"] {
  transition-delay: 0.1s;
}
.gallery-item[data-col="2"] {
  transition-delay: 0.25s;
}
.gallery-item[data-col="3"] {
  transition-delay: 0.4s;
}
.gallery-item[data-col="4"] {
  transition-delay: 0.55s;
}

/* Ensure lightboxes appear above absolutely everything */
.lightbox,
.virtual-lightbox {
  z-index: 99999 !important;
}


/* ================================
   FULLSCREEN MENU – No-Reload Close
================================ */
.mobile-menu{
  position:fixed; left:0; top:-100%;
  width:100%; height:100vh;
  background:#020713; color:#fff; z-index:9999;
  display:flex; flex-direction:column; justify-content:space-between; align-items:center;
  transition:top 1.1s cubic-bezier(0.33,1,0.68,1);
}

/* Curtain slide */
.mobile-menu.open{ top:0; }

/* Hold curtain still while fading content out */
.mobile-menu.closing-now{ top:0; transition:none; }

/* ---------------- Header ---------------- */
.menu-header{
  width:100%; padding:25px 30px;
  display:flex; justify-content:space-between; align-items:center;
}
.menu-logo{ width:130px; height:auto; }
.menu-close{ cursor:pointer; text-transform:uppercase; letter-spacing:1px; transition:color .3s; }
.menu-close:hover{ color:#c09354; }

/* ---------------- Content ---------------- */
.menu-links{
  display:flex; flex-direction:column; align-items:center; gap:22px;
  transform:translateY(-6vh); /* slightly above center */
}

/* Links default hidden */
.menu-links a{
  font-size:1.8rem; text-transform:uppercase; color:#fff; text-decoration:none;
  opacity:0; transition:opacity .6s ease;
}
.menu-links a:hover{ color:#c09354; }
.book-link{ font-weight:700; color:#c09354; }

.menu-phone{
  font-size:1.2rem; color:#c09354; letter-spacing:1px; margin-top:25px;
  opacity:0; transition:opacity .6s ease;
}

/* Line (fixed width, scale from center) */
.menu-footer{ width:100%; text-align:center; padding-bottom:40px; overflow:hidden; }
.menu-line{
  width:70%; height:1px; margin:15px auto; background:rgba(255,255,255,.25);
  transform-origin:center; transform:scaleX(0); opacity:0;
  transition:transform .6s ease, opacity .6s ease;
}

/* Socials */
.menu-socials{
  display:flex; justify-content:center; gap:25px;
  transform:translateY(10px); opacity:0;
  transition:opacity .6s ease, transform .6s ease;
}
.menu-socials a{ color:#fff; font-size:1.3rem; transition:color .3s; }
.menu-socials a:hover{ color:#c09354; }

/* ================================
   MOBILE MENU – OPTIMAL STAGGER (Sweet Spot)
   Curtain 1.1s + content fade ~0.6s total
================================ */
.menu-links a,
.menu-phone,
.menu-line,
.menu-socials {
  transition: opacity .35s ease, transform .35s ease;
}

/* Show content once curtain lands */
.mobile-menu.content-visible .menu-links a,
.mobile-menu.content-visible .menu-phone,
.mobile-menu.content-visible .menu-line,
.mobile-menu.content-visible .menu-socials {
  opacity: 1;
  transform: translateY(0);
}

/* Faster stagger: 0.07s apart, first starts almost instantly */
.mobile-menu.content-visible:not(.closing-now) .menu-links a:nth-child(1){ transition-delay:.05s; }
.mobile-menu.content-visible:not(.closing-now) .menu-links a:nth-child(2){ transition-delay:.12s; }
.mobile-menu.content-visible:not(.closing-now) .menu-links a:nth-child(3){ transition-delay:.19s; }
.mobile-menu.content-visible:not(.closing-now) .menu-links a:nth-child(4){ transition-delay:.26s; }
.mobile-menu.content-visible:not(.closing-now) .menu-links a:nth-child(5){ transition-delay:.33s; }
.mobile-menu.content-visible:not(.closing-now) .menu-links a:nth-child(6){ transition-delay:.40s; }
.mobile-menu.content-visible:not(.closing-now) .menu-links a:nth-child(7){ transition-delay:.47s; }
.mobile-menu.content-visible:not(.closing-now) .menu-phone{ transition-delay:.54s; }

/* Line + socials come in shortly after first links */
.mobile-menu.content-visible .menu-line {
  transform: scaleX(1);
  opacity: 1;
  transition-delay:.18s;
}
.mobile-menu.content-visible .menu-socials {
  opacity: 1;
  transform: translateY(0);
  transition-delay:.50s;
}

/* Close instantly */
.mobile-menu.closing-now .menu-links a,
.mobile-menu.closing-now .menu-phone,
.mobile-menu.closing-now .menu-line,
.mobile-menu.closing-now .menu-socials {
  transition-delay:0s !important;
  opacity:0;
  transform:translateY(10px);
}



/* -------- HIDE CONTENT (on close) -------- */
/* Remove all delays so EVERYTHING fades at once */
.mobile-menu.closing-now .menu-links a,
.mobile-menu.closing-now .menu-phone,
.mobile-menu.closing-now .menu-line,
.mobile-menu.closing-now .menu-socials{
  transition-delay:0s !important;
}

/* When content-visible is removed, all these revert to their base (hidden) states:
   links/phone -> opacity:0; line -> scaleX(0), opacity:0; socials -> translateY(10px), opacity:0
   Because we do NOT toggle .open yet, nothing reloads. */


   /* =========================================
   Mobile-only logo reposition for index page
========================================= */
@media (max-width: 768px) {
  body#index-page #top-header .header-left .logo {
    display: none !important; /* hide header logo */
  }

  /* Centered logo overlay on hero video */
  body#index-page .hero-video-wrapper::after {
    content: "";
    background-image: url("../images/logo.png");
    background-repeat: no-repeat;
    background-size: 75% auto;       /* scale to 75% screen width */
    background-position: center;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 100vw;
    height: 100vh;
    z-index: 3;                      /* above video, below text/buttons */
    pointer-events: none;            /* allows taps to pass through */
  }

  /* Push 'Our Latest Work' section down slightly */
  body#index-page #featured {
    margin-top: 60px; /* adjust this value as needed */
  }
}

/* =========================================
   INDEX PAGE — Mobile header layout (final)
   - No Call/Text
   - Larger Book Now + Hamburger
========================================= */
@media (max-width: 768px) {
  /* Hide header logo on mobile (index only) */
  body#index-page #top-header .header-left .logo {
    display: none !important;
  }

  /* Clean, absolute header bar */
  body#index-page #top-header {
      position: absolute;
      background: transparent;
  }

  /* Remove Call/Text entirely */
  body#index-page #top-header .contact-number {
    display: none !important;
  }

  /* Ensure the right container fills and positions properly */
  body#index-page #top-header .header-right {
    position: relative;
    display: block;
    height: 100%;
  }

  /* Book Now (LEFT side, enlarged) */
  body#index-page #top-header .header-buttons .book-now {
    position: absolute;
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
    height: 44px;
    padding: 0 18px;
    font-size: 1.05rem;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background-color: #c09354;
    color: #fff;
    z-index: 3;
  }

  /* Hamburger (RIGHT side, enlarged to match Book Now) */
  body#index-page #top-header .header-buttons .hamburger {
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 2.4rem;
    height: 44px;
    width: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 3;
    color: #fff;
  }

  /* Prevent inherited stacking/flex issues */
  body#index-page #top-header .header-right,
  body#index-page #top-header .header-buttons {
    flex-direction: initial !important;
    gap: 0 !important;
  }
}


/* =========================================
   INDEX PAGE — Remove Call/Text on mobile only
========================================= */
@media (max-width: 768px) {
  body#index-page #top-header .contact-number {
    display: none !important;
  }
}


/* ======================================
   FIX: Make header transparent on mobile
   ====================================== */
@media (max-width: 768px) {
    #top-header.booking-header {
        background-color: transparent !important;
    }
}

/* Disable safe-area padding on all headers */
#top-header,
.booking-header {
    background-color: transparent;
}

@media (max-width: 768px) {
    #top-header {
        height: 60px;
        min-height: 60px;
        box-sizing: border-box;
        display: flex;
        align-items: center;
        justify-content: space-between;
        flex-wrap: nowrap;
        /* prevents wrapping */
        padding: 0 12px;
        /* REMOVE overflow:hidden */
    }

    /* Prevent text/number from forcing a 2nd line */
    #top-header .contact-number {
        white-space: nowrap;
        font-size: 13px;
        line-height: 1;
    }

    /* Keep logo from being taller than the header */
    #top-header .logo img {
        max-height: 40px;
        width: auto;
        display: block;
    }

    /* Prevent hamburger icon from adding extra vertical height */
    #top-header .hamburger {
        line-height: 1;
        display: flex;
        align-items: center;
    }
}

/* Also remove any implicit safe-area padding */
html,
body {
    padding-top: 0 !important;
    margin-top: 0 !important;
}


/* =========================================================
   GLOBAL HEADER + MOBILE MENU NORMALIZATION
   - Header: 70px desktop / 60px mobile
   - Mobile header stays 1 row (no stacking)
   - Mobile menu never peeks and opens below header
========================================================= */

:root {
    --header-h-desktop: 70px;
    --header-h-mobile: 60px;
}

/* Desktop header sizing */
#top-header {
    height: var(--header-h-desktop);
    min-height: var(--header-h-desktop);
    box-sizing: border-box;
}

/* Mobile header sizing + layout */
@media (max-width: 768px) {
    #top-header {
        height: var(--header-h-mobile) !important;
        min-height: var(--header-h-mobile) !important;
        padding: 8px 14px !important;
        display: flex !important;
        align-items: center !important;
        justify-content: space-between !important;
        box-sizing: border-box !important;
    }

    /* Keep everything on ONE row */
    #top-header .header-right {
        flex-direction: row !important;
        align-items: center !important;
        gap: 12px !important;
    }

    /* This is usually what forces wrapping into a “bar” */
    #top-header .contact-number {
        display: none !important;
    }

    #top-header .logo {
        max-height: 40px !important;
        height: 40px !important;
        width: auto !important;
        display: block !important;
    }

    #top-header .book-now {
        height: 44px !important;
        padding: 0 16px !important;
        font-size: 1.0rem !important;
    }

    #top-header .hamburger {
        height: 44px !important;
        width: 44px !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
    }

    /* IMPORTANT: prevent menu background from peeking as a black bar */
    .mobile-menu {
        top: -100vh !important;
        /* use vh, not % */
        height: calc(100vh - var(--header-h-mobile)) !important;
    }

    .mobile-menu.open {
        top: var(--header-h-mobile) !important;
    }

    .mobile-menu.closing-now {
        top: var(--header-h-mobile) !important;
    }
}

/* =========================================================
   INDEX PAGE — FORCE mobile header layout AFTER global rules
   Fixes: Book Now drifting outside mobile margins
========================================================= */
@media (max-width: 768px) {
    body#index-page #top-header {
        position: absolute !important;
        top: 0 !important;
        left: 0 !important;
        right: 0 !important;
        height: 60px !important;
        min-height: 60px !important;
        padding: 8px 14px !important;
        display: block !important;
        /* override global flex */
        box-sizing: border-box !important;
        background: transparent !important;
    }

    body#index-page #top-header .header-right {
        position: relative !important;
        display: block !important;
        height: 100% !important;
    }

    body#index-page #top-header .header-buttons {
        position: relative !important;
        /* key: anchor absolute children */
        width: 100% !important;
        height: 100% !important;
    }

    body#index-page #top-header .contact-number {
        display: none !important;
    }

    /* Book Now pinned LEFT inside padding */
    body#index-page #top-header .header-buttons .book-now {
        position: absolute !important;
        left: 0 !important;
        /* use container edge (padding handled by header) */
        top: 50% !important;
        transform: translateY(-50%) !important;
        height: 44px !important;
        padding: 0 18px !important;
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
    }

    /* Hamburger pinned RIGHT inside padding */
    body#index-page #top-header .header-buttons .hamburger {
        position: absolute !important;
        right: 0 !important;
        /* use container edge (padding handled by header) */
        top: 50% !important;
        transform: translateY(-50%) !important;
        height: 44px !important;
        width: 44px !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
    }
}

/* =========================================================
   GLOBAL: FORCE TRANSPARENT HEADER ON ALL PAGES & SIZES
========================================================= */

#top-header,
#top-header.booking-header {
    background: transparent !important;
    background-color: transparent !important;
}

/* Mobile safety override */
@media (max-width: 768px) {

    #top-header,
    #top-header.booking-header {
        background: transparent !important;
        background-color: transparent !important;
    }
}

/* =========================================================
   HEADER BACKGROUND RULE OF TRUTH
   - Black header everywhere
   - Transparent header ONLY on index.html
========================================================= */

/* Default: black header on all pages */
#top-header {
    background-color: #000 !important;
}

/* Index page override */
body#index-page #top-header {
    background-color: transparent !important;
}

/* =========================================================
   HEADER COLOR: BLACK everywhere except index
   (Put at VERY BOTTOM of style.css)
========================================================= */
body:not(#index-page) #top-header {
    background: #000 !important;
    background-color: #000 !important;
}

body#index-page #top-header {
    background: transparent !important;
    background-color: transparent !important;
}

/* =========================================================
   MOBILE MENU: OPEN OVER HEADER (fullscreen overlay)
========================================================= */
@media (max-width: 768px) {

    /* Header sits below the overlay */
    #top-header {
        z-index: 10 !important;
    }

    /* Mobile menu overlay sits above header */
    .mobile-menu {
        position: fixed !important;
        top: -100vh !important;
        /* fully hidden off-screen */
        left: 0 !important;
        right: 0 !important;
        height: 100vh !important;
        z-index: 9999 !important;
        /* must be higher than header */
    }

    .mobile-menu.open {
        top: 0 !important;
        /* opens OVER header */
    }

    .mobile-menu.closing-now {
        top: 0 !important;
        /* prevent jump during closing animation */
    }
}

/* =========================================================
   HEADER POSITIONING RULES
   - Index: overlay header (absolute)
   - Other pages: normal/static header (relative)
   - Mobile menu overlay: covers header when open
========================================================= */

/* Default (non-index): header is in normal document flow */
body:not(#index-page) #top-header {
    position: relative !important;
    /* "static" effectively (but keeps top/left usable if needed) */
    top: auto !important;
    left: auto !important;
    right: auto !important;
    width: 100% !important;
    z-index: 10 !important;
}

/* Index: header overlays hero */
body#index-page #top-header {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    z-index: 10 !important;
}

/* Mobile menu should overlay header when open */
@media (max-width: 768px) {
    .mobile-menu {
        position: fixed !important;
        top: -100vh !important;
        left: 0 !important;
        right: 0 !important;
        height: 100vh !important;
        z-index: 9999 !important;
    }

    .mobile-menu.open {
        top: 0 !important;
    }

    .mobile-menu.closing-now {
        top: 0 !important;
    }
}

/* =========================================================
   FINAL HEADER + MOBILE MENU BEHAVIOR (SINGLE SOURCE OF TRUTH)
   - Index page: header overlays hero (NOT fixed, transparent)
   - All other pages: header FIXED, always visible, black
   - Mobile menu opens FULLSCREEN over header
========================================================= */

/* ======================
   HEADER HEIGHT VARIABLES
====================== */
:root {
    --header-desktop: 70px;
    --header-mobile: 60px;
}

/* ======================
   DEFAULT: NON-INDEX PAGES
   Fixed header, always visible
====================== */
body:not(#index-page) #top-header {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    height: var(--header-desktop) !important;
    min-height: var(--header-desktop) !important;
    z-index: 1000 !important;
    background: #000 !important;
    background-color: #000 !important;
    display: flex !important;
    align-items: center !important;
    box-sizing: border-box !important;
}

/* Push page content down so it doesn't hide under fixed header */
body:not(#index-page) {
    padding-top: var(--header-desktop) !important;
}

/* ======================
   INDEX PAGE
   Overlay header (not fixed)
====================== */
body#index-page #top-header {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    height: var(--header-desktop) !important;
    min-height: var(--header-desktop) !important;
    z-index: 10 !important;
    background: transparent !important;
    background-color: transparent !important;
}

/* ======================
   MOBILE OVERRIDES
====================== */
@media (max-width: 768px) {

    /* Header height */
    body:not(#index-page) #top-header,
    body#index-page #top-header {
        height: var(--header-mobile) !important;
        min-height: var(--header-mobile) !important;
        padding: 8px 14px !important;
    }

    body:not(#index-page) {
        padding-top: var(--header-mobile) !important;
    }

    /* Keep header on one row */
    #top-header {
        flex-wrap: nowrap !important;
    }

    /* Hide number so header never stacks */
    #top-header .contact-number {
        display: none !important;
    }

    #top-header .logo img {
        max-height: 40px !important;
        width: auto !important;
        display: block !important;
    }

    /* ======================
     MOBILE MENU
     Fullscreen OVER header
  ====================== */
    .mobile-menu {
        position: fixed !important;
        top: -100vh !important;
        left: 0 !important;
        right: 0 !important;
        height: 100vh !important;
        z-index: 9999 !important;
    }

    .mobile-menu.open,
    .mobile-menu.closing-now {
        top: 0 !important;
    }
}

/* =========================================================
   ALL PAGES: match index header button layout
   - Remove logo space (hide logo)
   - Book Now pinned LEFT
   - Hamburger pinned RIGHT
   - Does NOT change header colors or fixed behavior
========================================================= */

/* Hide logo on ALL pages (including index). 
   If you want to keep logo on index ONLY, see note below. */
#top-header .logo,
#top-header .logo-container,
#top-header .site-logo {
    display: none !important;
}

/* Make the right side take the full header width */
#top-header .header-right {
    width: 100% !important;
    flex: 1 1 auto !important;
    position: relative !important;
}

/* Anchor for absolute positioning of buttons */
#top-header .header-buttons {
    width: 100% !important;
    height: 100% !important;
    position: relative !important;
}

/* Book Now LEFT */
#top-header .header-buttons .book-now {
    position: absolute !important;
    left: 0 !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

/* Hamburger RIGHT */
#top-header .header-buttons .hamburger {
    position: absolute !important;
    right: 0 !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}

