/* Font of choice at the very top */
@font-face {
  font-family: 'Helvetica Neue Roman'; /* This is the name you'll use in your CSS */
  src: url('./fonts/HelveticaNeue-Roman.otf') format('opentype');
  font-weight: normal; /* Adjust if your font file is specifically bold/light etc. */
  font-style: normal;
}

:root {
  --primary-color: #8b4513;
  --secondary-color: #d2691e;
  --text-color: #ffffff;
  --text-color-rusticgold: rgba(182, 143, 71, 0.8);
  --dark-overlay: rgba(0, 0, 0, 0.5);
  --light-overlay: rgb(255, 255, 255);
  --dark-text-on-light: #333333; /* Added for text on light backgrounds */
  --medium-dark-text-on-light: rgba( 0, 0, 0, 0.7); /* For paragraphs on light backgrounds */
  --nav-height: 80px;
  --mobile-menu-width: 70%;
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  font-family: 'Helvetica Neue Roman', sans-serif;
  background-color: #ffffff;
  color: var(--text-color);
}
body.no-scroll {
  overflow: hidden;
}
/* Background Images */
.background-wrapper {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  z-index: -2;
  overflow: hidden; /* Ensure no overflow issues */
}

.top-background {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  background-image: url('top-bg.jpg');
  background-size: cover;
  background-position: bottom;
  transition: transform 0.01s linear; /* Smooth transition for transform */
}

.content-background {
  position: fixed;
  top: 0; /* Start from the top, not 50vh */
  left: 0;
  width: 100%;
  height: 100vh;
  background-image: url('bottom-bg-new.jpg');
  background-size: cover;
  background-position: center;
  z-index: -1;
  transform: translateY(100vh); /* Start below the viewport */
  transition: transform 0.01s linear; /* Smooth transition */
}

.main-content {
  position: relative;
  z-index: 1;
}

/*! ---------------------------------------------------------------------------------- */
/* Navigation */
nav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1rem 5%;
  position: fixed;
  width: 100%;
  z-index: 10;
  top: 0;
  left: 0;
  background-color: rgba(0, 0, 0, 0.7); /* This is the ONLY allowed overlay on scroll */
  box-sizing: border-box; /* FIX: Include padding in width to prevent overflow */
}

.logo img {
  height: 50px; /* Adjust as needed for your logo size */
}

.nav-links {
  display: flex;
  list-style: none;
  gap: 2rem;
  margin: 0; /* Remove default ul margin */
  padding: 0; /* Remove default ul padding */
  /* Add transition for smooth opening/closing on mobile */
  transition: transform 0.3s ease-in-out;
  box-sizing: border-box; /* FIX: Good practice for any padding/width */
}

.nav-links li {
  margin: 0; /* Ensure no extra margins on list items */
}

.nav-links a {
  color: var(--text-color);
  text-decoration: none;
  font-weight: normal;
  padding: 0.5rem 0; /* Add some padding for clickability */
  display: block; /* Make the whole padding area clickable */
}

.nav-links a:hover {
  color: var(--secondary-color); /* Example hover effect */
}

/* Hamburger menu icon styles */
.hamburger {
  display: none; /* Hidden by default on larger screens */
  flex-direction: column;
  justify-content: space-around; /* Distribute bars evenly */
  width: 30px; /* Width of the hamburger icon */
  height: 25px; /* Height of the hamburger icon */
  cursor: pointer;
  z-index: 20; /* Ensure it's above the mobile nav-links */
  padding: 5px; /* Add some padding for easier clicking */
  background-color: transparent; /* Explicit: No background to avoid hiding bars */
  position: relative; /* Ensure bars are positioned relative to this */
  -webkit-appearance: none; /* iOS/Safari fix for any native styling */
}

/* NEW: Change color on active */
.hamburger.active .bar {
  background-color: var(--secondary-color); /* Rustic color when clicked */
}

.hamburger .bar {
  width: 100%; /* Bars fill the hamburger width */
  height: 3px;
  background-color: var(--text-color); /* Color of the bars */
  transition: all 0.3s ease-in-out; /* Smooth transition for X animation */
}

/* --- Media Query for Mobile Responsiveness --- */
/* @media (max-width: 768px) { */
@media (max-width: 908px) {
  /* Ensure the main nav (and thus hamburger) is on top */
  nav {
    z-index: 20;
  }

  .logo {
    flex-shrink: 1; /* Allow the logo to shrink in flex if needed */
    max-width: 50%; /* Limit to half the nav width on mobile */
  }

  /* Hide the main nav-links by default on mobile */
  .nav-links {
    position: fixed; /* Crucial for positioning it off-screen */
    /* *** MODIFIED *** */
    top: var(--nav-height); /* Use the --nav-height variable */
    right: 0;
    width: var(--mobile-menu-width); /* Use the --mobile-menu-width variable */
    height: calc(100vh - var(--nav-height)); /* Calculate height dynamically */
    /* ***************** */

    /* ***** IMPORTANT FOR VISIBILITY ***** */
    background-color: #333; /* Make sure this is a solid, non-transparent color. */
    color: #fff; /* Set a contrasting text color for the links */
    /* ************************************ */

    flex-direction: column; /* Stack links vertically */
    justify-content: flex-start; /* Align items from the top, common for mobile menus */
    align-items: center; /* Center the links horizontally */
    transform: translateX(100%); /* Initially hide it off-screen to the right */
    transition: transform 0.3s ease-in-out; /* Smooth slide animation */
    z-index: 15; /* Ensure it's above other page content, but below hamburger icon */
    padding: 20px 20px 20px
      30px; /* ADJUSTED: Add left padding for indentation; reduce top if needed */
    box-shadow: -2px 0 5px
      rgba(0, 0, 0, 0.2); /* Optional: subtle shadow on the left edge */
    overflow-y: auto; /* Added: Allow scrolling within the menu if links overflow height */
    gap: 0; /* OPTIONAL: Reset gap if using it; we'll use margins instead */
  }

  /* When the 'active' class is added (by JS), bring it into view */
  .nav-links.active {
    transform: translateX(0); /* Slide into view */
  }

  /* Style individual list items and links within the mobile menu */
  .nav-links li {
    width: 100%; /* Make list items take full width for easier tapping */
    text-align: left; /* Center text within each list item */
    margin: 0; /* Spacing between links */
    padding: 10px 0; /* Space between items */
    border-bottom: 1px solid
      rgba(
        255,
        255,
        255,
        0.3
      ); /* ADDED: Thin white-ish divider (adjust color/opacity for subtlety; e.g., #ccc for gray) */
  }

  /* REMOVE divider from the last item (cleaner look, like the image) */
  .nav-links li:last-child {
    border-bottom: none;
  }

  .nav-links a {
    color: inherit; /* Inherit the color from the .nav-links parent */
    text-decoration: none;
    font-weight: 100;
    font-size: 18px;
    /* REDUCED: Just a bit of padding (dividers handle separation) */
    padding: 3px 0;
    display: block; /* Keeps it tappable */
    transition: color 0.28s ease; /* OPTIONAL: Smooth hover/tap effect */
  }

  .nav-links a:hover,
  .nav-links a:focus {
    color: var(--secondary-color); /* Example hover color for mobile links */
  }

  /* Display the hamburger icon on mobile */
  .hamburger {
    display: flex;
    z-index: 20; /* Ensure hamburger is above the sliding menu */
  }

  /* Styles for when the hamburger is clicked (to become an 'X') */
  .hamburger.active .bar:nth-child(2) {
    opacity: 0; /* Hide middle bar */
  }

  .hamburger.active .bar:nth-child(1) {
    transform: translateY(4px) rotate(45deg);
  }

  .hamburger.active .bar:nth-child(3) {
    transform: translateY(-6px) rotate(-45deg);
  }
}

/*! ---------------------------------------------- */

/* Hero Section */
.hero {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
}

.hero::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(145, 82, 0, 0.3);
}

.hero-content {
  position: relative;
  text-align: center;
  padding: 0 2rem;
}

.hero h1,
.hero h2 {
  text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
}

/* === MODIFIED BOOKING FORM STYLES START === */
/* Now applied to the <form> itself */
.booking-form {
  display: flex; /* Make the form itself a flex container */
  gap: 1rem; /* Space between form fields */
  justify-content: center;
  margin: 2rem auto; /* Center the form and provide margin */
  align-items: flex-end; /* Aligns input fields and button at the bottom */
  flex-wrap: wrap; /* Allows items to wrap to the next line on smaller screens */
  padding: 0 1rem; /* Padding for mobile to prevent elements from touching screen edges */
  max-width: 800px; /* Optional: Limit form width on very large screens */
}

.form-group {
  display: flex;
  flex-direction: column; /* Stacks label and input within each group */
  gap: 0.5rem; /* Space between label and input */
  /* min-width for date inputs to ensure they don't get too small */
  min-width: 150px; /* Adjust as needed */
  flex-grow: 1; /* Allow them to grow */
}

.booking-form label {
  color: var(--text-color);
  font-weight: bold;
  font-size: 0.9rem;
  text-align: center;
  text-shadow: none; /* Remove shadow from labels */
  white-space: nowrap; /* Prevent label from wrapping */
}

.booking-form input {
  padding: 0.8rem;
  border: none;
  border-radius: 4px;
  /* Ensure Flatpickr inputs have a background and are readable */
  background-color: #fff;
  color: #333;
}
/* === MODIFIED BOOKING FORM STYLES END === */

/* Featured Cabins Section */
.featured-cabins {
  padding: 4rem 5%;
  background-color: rgba(209, 209, 209, 0.733);
  color: var(--dark-text-on-light); /* Set default text color for this section */
}

.featured-cabins h2 {
  color: var(--primary-color); /* Apply primary color to headings */
  text-align: center;
  margin-bottom: 2rem;
  font-size: 2.5em;
  /* text-shadow: 1px 1px 3px rgba(97, 68, 15, 0.411); */
}

.cabin-grid {
  margin: 2rem 0; /* Maintain margin for spacing */
}

/* --- REVISED STYLES FOR THE CABIN EXPERIENCES GALLERY (Horizontal 3 Columns, Square Cards) --- */
.cabin-experiences-gallery {
  display: grid;
  /* Default for smaller screens: responsive columns, at least 280px wide */
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 2rem;
  margin-top: 2rem; /* Spacing below the h2 */
  padding: 0 1rem; /* Add some padding for smaller screens */
  justify-content: center; /* Center the grid items if they don't fill the row */
}

/* Media Query for Desktop: Force 3 Columns, Make Cards "Huge" and Square */
@media (min-width: 992px) {
  /* Starting desktop layout at 992px */
  .cabin-experiences-gallery {
    /* EXACTLY 3 columns, each taking an equal fraction of the available space */
    grid-template-columns: repeat(3, 1fr);
    /* Control the overall width of the gallery to make cards "huge" but not too wide */
    max-width: 1800px; /* Adjust this value to control how large the cards become */
    margin: 2rem auto; /* Center the entire gallery */
    padding: 0; /* Remove padding if max-width and margin auto are used */
    /* ensure there are only 3 columns, no wrapping */
    flex-wrap: nowrap; /* although grid typically handles this, helps conceptualize */
  }
}

/* Individual Cabin Card Styling: Make the entire card 1:1 (Square) */
.cabin-card {
  position: relative; /* Crucial for absolute positioning of children */
  border-radius: 0px;
  overflow: hidden; /* Hide anything outside the card, like overflow from image or shadows */
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
  background-color: #fff; /* Ensure card background is white */
  color: var(
    --dark-text-on-light
  ); /* Ensure text is readable on cards by default (though overlay changes it) */

  /* Make the entire card square (1:1 aspect ratio) */
  width: 100%; /* Take full width of its grid cell */
  padding-top: 100%; /* Creates the 1:1 aspect ratio based on its width */
  height: 0; /* Important: collapse height so padding-top defines it */
}

/* Container for the image, positioned to fill the square .cabin-card */
.cabin-card-image-container {
  position: absolute; /* Position to fill the .cabin-card */
  top: 0;
  left: 0;
  width: 100%;
  height: 100%; /* Fill the 1:1 card */
  overflow: hidden; /* Ensure image overflow is hidden */
}

/* Image Styling */
.cabin-card-image-container img {
  width: 100%;
  height: 100%;
  object-fit: cover; /* Scales the image to cover the container */
  object-position: center; /* Centers the image content */
}

/* Cabin Info (Text content as overlay) */
.cabin-info {
  position: absolute; /* Position on top of the image */
  bottom: 0;
  left: 0;
  width: 100%;
  padding: 1rem;
  background: var(
    --dark-overlay
  ); /* Semi-transparent background for readability */
  color: var(--text-color); /* White text for contrast on dark overlay */
  text-align: center;
  z-index: 2; /* Ensure it's above the image */
  transition: background 0.3s ease; /* Smooth transition for hover effects */
  /* If you want the info box to be a fixed height, you could add:
     height: 30%;
     display: flex;
     flex-direction: column;
     justify-content: center;
     align-items: center;
  */
}

/* Optional: Darker overlay on hover */
.cabin-card:hover .cabin-info {
  background: rgba(0, 0, 0, 0.7); /* Slightly darker on hover */
}

.cabin-info h3 {
  margin-top: 0;
  margin-bottom: 0.5rem;
  color: var(--text-color); /* Keep white text for heading on overlay */
  font-size: 1.5em;
  /* text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.7); */
}

.cabin-info p {
  margin-bottom: 0;
  font-size: 1.2em;
  font-weight: bold;
  color: var(--text-color); /* Keep white text for paragraph on overlay */
}
/* --- END OF REVISED CABIN EXPERIENCES GALLERY STYLES --- */

/** --- START OF BUTTON STYLES ------------------------------------------------- */
/* Buttons */
/* Shared styles for the buttons/links */
.submit-btn,
.list-property-btn,
.view-more-btn {
  display: inline-block; /* Makes it behave like a button while keeping it inline */
  padding: 0.8rem 2rem; /* Padding for size */
  background-color: var(--primary-color); /* Use your primary color variable */
  color: var(--text-color); /* Use your text color variable */
  font-size: 14px; /* Adjust font size as needed */
  font-weight: normal; /* Make text bolder */
  border: none; /* No border by default */
  border-radius: 4px; /* Rounded corners for a button-like feel */
  cursor: pointer; /* Pointer cursor on hover */
  transition: background-color 0.3s,
    transform 0.2s ease; /* Smooth hover effects */
  text-decoration: none !important; /* Remove underline (with !important to override conflicts) */
}

/* Specific styles for .submit-btn */
.submit-btn {
  align-self: flex-end; /* Integrated: Align to the end in a flex container */
  margin-bottom: 0.5rem; /* Integrated: Bottom margin */
}

/* Shared hover state for interactivity */
.submit-btn:hover,
.list-property-btn:hover,
.view-more-btn:hover {
  background-color: var(
    --secondary-color
  ); /* Integrated: Use secondary color on hover */
  transform: translateY(-2px); /* Slight lift effect */
  text-decoration: none !important; /* Ensure no underline on hover */
}

/* Shared active state (when clicked) */
.submit-btn:active,
.list-property-btn:active,
.view-more-btn:active {
  /* Example: Darken more for press effect (kept as-is; adjust if needed to use a variable) */
  background-color: var(
    --primary-color
  ); /* Or update to var(--secondary-dark) etc. */
  transform: translateY(0); /* Reset lift */
  text-decoration: none !important; /* Ensure no underline when active */
}

/* Shared focus state for accessibility (e.g., keyboard navigation) */
.submit-btn:focus,
.list-property-btn:focus,
.view-more-btn:focus {
  outline: 2px solid var(--primary-color); /* Visible focus ring using primary color */
  outline-offset: 2px;
  text-decoration: none !important; /* Ensure no underline on focus */
}

/* @media (max-width: 768px) { */
@media (max-width: 908px) {
  .submit-btn,
  .list-property-btn,
  .view-more-btn {
    display: inline-block; /* Makes it behave like a button while keeping it inline */
    padding: 0.8rem 2rem; /* Padding for size */
    background-color: var(
      --primary-color
    ); /* Use your primary color variable */
    color: var(--text-color); /* Use your text color variable */
    text-decoration: none !important; /* Remove underline (with !important to override conflicts) */
    font-size: 10px; /* Adjust font size as needed */
    font-weight: normal; /* Make text bolder */
    border: none; /* No border by default */
    border-radius: 4px; /* Rounded corners for a button-like feel */
    cursor: pointer; /* Pointer cursor on hover */
    transition: background-color 0.3s,
      transform 0.2s ease; /* Smooth hover effects */
  }
}
/**--- END OF BUTTON STYLES ------------------------------------------------- */

/* Category Grid */
.category-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 2rem;
  padding: 2rem 5%;
}

.category-card {
  position: relative;
  height: 200px;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

.category-card img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.category-card h3 {
  position: absolute;
  bottom: 1rem;
  left: 1rem;
  color: var(--text-color);
  text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.7);
}

/* Promotions and Categories Sections */
.promotions,
.cabin-categories {
  background-color: rgba(26, 26, 26, 0.9);
  padding: 4rem 5%;
}

/* Footer */
footer {
  background-color: #000;
  padding: 2rem 5%;
  text-align: center;
}

/* === ADDED STYLES FOR GUEST POPUP (Integrated with your color scheme) === */
.booking-form input[readonly] {
  cursor: pointer;
  background-color: #fff;
}

.form-group-guests-wrapper {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  min-width: 200px;
  flex-grow: 1;
}

#guest-popup {
  position: absolute;
  top: calc(100% + 10px);
  left: 0;
  background-color: #fff;
  border: 1px solid #ccc;
  border-radius: 5px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
  padding: 15px;
  width: 250px;
  z-index: 1000;
  display: none;
  color: var(--dark-text-on-light);
}

.counter-group {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 10px;
}

.counter-group label {
  flex: 1;
  color: var(--dark-text-on-light);
  font-weight: normal;
}

.counter-group button {
  background-color: #eee;
  border: 1px solid #ccc;
  padding: 5px 10px;
  cursor: pointer;
  border-radius: 3px;
  font-size: 1rem;
  line-height: 1;
}

.counter-group button:hover {
  background-color: #ddd;
}

.counter-group span {
  padding: 5px 15px;
  min-width: 30px;
  text-align: center;
  border-top: 1px solid #ccc;
  border-bottom: 1px solid #ccc;
  background-color: #f9f9f9;
  display: inline-block;
}

.toggle-group {
  margin-bottom: 10px;
}

.toggle-group label {
  display: block;
  margin-bottom: 5px;
  color: var(--dark-text-on-light);
}

.toggle-group p {
  font-size: 12px;
  color: var(--medium-dark-text-on-light);
  margin: 5px 0 0;
}

.toggle-group a {
  color: var(--primary-color);
  text-decoration: none;
}

.toggle-group a:hover {
  text-decoration: underline;
}

#guest-popup .done-btn {
  background-color: var(--primary-color);
  color: var(--text-color);
  border: none;
  padding: 10px;
  width: 100%;
  border-radius: 4px;
  cursor: pointer;
  transition: background-color 0.3s;
  margin-top: 10px;
}

#guest-popup .done-btn:hover {
  background-color: var(--secondary-color);
}

/* CAPTCHA Styling */
.captcha-group {
  margin: 20px 0;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.g-recaptcha {
  margin: 10px 0;
}

.error-message {
  color: #ff4444;
  font-size: 14px;
  margin-top: 5px;
  text-align: center;
}

/* Ensure honeypot fields are completely hidden */
input[name='website'],
input[name='email_confirm'],
input[name='phone_backup'] {
  display: none !important;
  position: absolute !important;
  left: -9999px !important;
  top: -9999px !important;
  visibility: hidden !important;
  opacity: 0 !important;
  width: 0 !important;
  height: 0 !important;
}

/* --- NEW STEP-BY-STEP LAYOUT SYSTEM --- */

/* --- EXACT WIREFRAME-BASED LAYOUT --- */

/* Main Layout Container (White Background) */
.layout-container {
  background-color: #fff;
  padding: 30px;
  border-radius: 0px;
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
  margin-bottom: 3rem;
  display: grid;

  /* Columns:
     — cols 1–5: flexible tracks (min 30px, share leftover)
     — col 6: fixed 20px gutter
     — cols 7–9: flexible tracks (min 30px, share leftover) */
  grid-template-columns: minmax(30px, 1fr) minmax(30px, 1fr) minmax(30px, 1fr)
    minmax(30px, 1fr) minmax(30px, 1fr) minmax(30px, 1fr) minmax(30px, 1fr)
    minmax(30px, 1fr) minmax(30px, 1fr) minmax(30px, 1fr) minmax(30px, 1fr)
    minmax(30px, 1fr);

  /* Rows:
     — rows 1–15: flexible (min 30px, share leftover)
     — row 16: fixed 10px gutter
     — rows 17–22: flexible (min 30px, share leftover) */
  grid-template-rows: repeat(15, minmax(30px, 1fr)) 10px
    repeat(6, minmax(30px, 1fr));

  gap: 18px; /* uniform gap between *all* tracks */
  min-width: 620px;
}

/* Picture 1 Box - cols 1–5, rows 1–15 */
.picture-1-box {
  grid-column: 1 / 8;
  grid-row: 1 / 14;
  overflow: hidden;
  border-radius: 0px;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
}
.picture-1-box img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

/* Text Box - cols 7–9, rows 2–7 */
.text-box {
  grid-column: 8 / 14;
  grid-row: 2 / 8;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 10px;
  border-radius: 8px;
}
.text-box .title {
  font-size: 2.2em;
  color: var(--primary-color);
  margin-bottom: 20px;
  /* text-shadow: 1px 1px 3px rgba(97, 68, 15, 0.911); */
  line-height: 1.2;
}
.text-box p {
  font-size: 1.1em;
  line-height: 1.6;
  color: var(--medium-dark-text-on-light);
}

/* Picture 3 Box - cols 7–9, rows 11–18 */
.picture-3-box {
  grid-column: 8 / 14;
  grid-row: 11 / 19;
  overflow: hidden;
  border-radius: 0px;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
}
.picture-3-box img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

/* Picture 2 Box - cols 5–6, rows 16–22 */
.picture-2-box {
  grid-column: 3 / 8;
  grid-row: 14 / 23;
  overflow: hidden;
  border-radius: 0px;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
}
.picture-2-box img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

/* --- Responsive Design --- */
/* These media queries will override the desktop grid settings and stack the items */

/* ========================================================== */
/* ========================================================== */
/** NEW MEDIA QUERY FOR LARGE LAPTOPS / SMALLER DESKTOPS */
/* ========================================================== */
@media (max-width: 1707px) {
  /* --- Styles for screens 1707px and narrower --- */
  nav {
    padding: 1rem 0;  /* Remove all side padding */
    /* your other properties stay the same */
  }

  nav > *:first-child {  /* Logo - flush left */
    margin-left: 1.5rem;   /* Small buffer from wall */
  }

  nav > *:last-child {  /* Menu - control right spacing */
    margin-right: 3rem;  /* Adjust this value */
  }

  .logo img{
    /* flex-shrink: 1; /*Allow the logo to shrink in flex if needed */
    height: 25px; /* Limit to half the nav width on mobile */
    width: 150px; /* Limit to half the nav width on mobile */
  }

  .nav-links a {
    font-size: 12px;
  }

  .featured-cabins,
  .promotions,
  .cabin-categories {
    padding-left: 3%;
    padding-right: 3%;
  }

  /* This nested query ensures this only applies on screens that
     are also desktop-sized (wider than 991px). */
  @media (min-width: 992px) {
    .cabin-experiences-gallery {
      max-width: 95%; /* Use a percentage to keep it responsive */
    }
  }

  .text-box .title {
    font-size: 2em;
  }
}
/* ========================================================== */

@media (max-width: 991px) {
  /* Adjusted to match the desktop breakpoint above */
  .layout-container {
    grid-template-columns: 1fr; /* Single column on mobile */
    grid-template-rows: auto auto auto auto; /* Four auto rows for stacked content */
    gap: 15px; /* Adjust gap for mobile if needed */
    min-width: unset; /* Remove min-width to allow shrinking on mobile */
    width: 100%; /* Take full width on mobile */
    height: auto; /* Allow height to be determined by content */
  }

  .picture-1-box {
    grid-column: 1;
    grid-row: 1;
    height: 250px; /* You might want min-height here too if content can grow */
  }

  .text-box {
    grid-column: 1;
    grid-row: 2;
    padding: 15px;
    text-align: center;
  }

  .picture-3-box {
    grid-column: 1;
    grid-row: 3;
    height: 180px; /* You might want min-height here too if content can grow */
  }

  .picture-2-box {
    grid-column: 1;
    grid-row: 4;
    height: 150px; /* You might want min-height here too if content can grow */
  }

  .text-box .title {
    font-size: 2em;
    margin-bottom: 15px;
  }

  .text-box p {
    font-size: 1em;
  }
}

@media (max-width: 768px) {
  .category-grid {
    grid-template-columns: 1fr;
  }

  .layout-container {
    padding: 15px;
    gap: 12px;
  }

  .picture-1-box {
    height: 200px;
  }

  .picture-3-box {
    height: 150px;
  }

  .picture-2-box {
    height: 120px;
  }

  .text-box .title {
    font-size: 1.8em;
  }

  .text-box p {
    font-size: 0.95em;
  }
}

@media (max-width: 480px) {
  .text-box .title {
    font-size: 1.6em;
  }

  .text-box p {
    font-size: 0.9em;
  }
}