/* --- Global Styles & Reset --- */
:root {
    --primary-color: #007BFF; /* Main action blue */
    --secondary-color: #FFC107; /* Accent gold/yellow */
    --text-dark: #333;
    --text-light: #f4f4f4;
    --bg-dark: #2c3e50; /* Dark for footer/CTA bar */
    --bg-light: #f9f9f9; /* Subtle off-white for background blocks */
    --hero-cta-bg: #000; /* Plain black for hero CTA background */
    --card-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
    --selected-border: 2px solid var(--primary-color);
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box; 
    scroll-behavior: smooth; /* Ensures smooth scrolling for anchor links */
}

/* NEW FIX: Apply overflow hidden to the root element for maximum effect */
html {
    overflow-x: hidden !important; 
}

body {
    font-family: Arial, sans-serif;
    line-height: 1.6;
    color: var(--text-dark);
    background-color: #fff; /* Set body background to pure white */
    min-height: 100vh;
    overflow-x: hidden !important;
}

.container {
    /* Wider container width */
    width: 90%; 
    max-width: 1280px; /* Increased max width for more spread */
    margin: auto;
    overflow: hidden;
    padding: 20px 30px; 
}

h1, h2, h3 {
    text-align: center;
}

/* New: Consistent styling for section headings */
.section-heading {
    margin-bottom: 40px;
    font-size: 2.2em;
    color: var(--text-dark);
}

a {
    color: var(--primary-color);
    text-decoration: none;
    transition: color 0.2s;
}
a:hover {
    color: #0056b3;
}

/* -------------------------------------- */
/* --- HEADER/NAV STYLES (NEW) --- */
/* -------------------------------------- */
header {
    background-color: var(--bg-dark); /* FIX: Dark Header */
    padding: 10px 0;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
    position: sticky; 
    top: 0;
    z-index: 1000;
}
.header-content { /* NEW: Style the content wrapper from index.html */
    width: 90%; 
    max-width: 1280px;
    margin: auto;
    display: flex; 
    justify-content: space-between; /* Logo Left, Menu Right */
    align-items: center;
    padding: 0 30px; 
}

/* 1. Top Banner Styling */
#top-banner {
    background-color: var(--secondary-color); /* Catchy Gold/Yellow */
    color: var(--text-dark);
    text-align: center;
    padding: 10px 0;
    font-size: 0.9em;
    font-weight: bold;
}
.top-banner-content {
    padding: 0 30px; 
}
#top-banner p {
    margin: 0;
}
.banner-cta {
    color: var(--primary-color);
    text-decoration: underline;
    margin-left: 10px;
    font-weight: 900;
}
.banner-cta:hover {
    color: #0056b3;
}

/* 2. Main Header Bar (Dark background) */
#header-main {
    background-color: var(--bg-dark); /* Match footer dark background */
    display: flex;
    justify-content: space-between;
    align-items: center;
    /* Reset padding here, as .container provides 20px padding already. We want to be explicit. */
    padding: 15px 30px; 
}

.logo a {
    font-size: 1.8em;
    font-weight: bold;
    color: var(--secondary-color); /* FIX: Light color on dark background */
    text-decoration: none;
}
.logo a:hover {
    color: #fff;
}

/* Hamburger Icon Styling (Initially hidden on desktop) */
.menu-toggle {
    display: none; 
    font-size: 1.5em;
    color: var(--text-light); /* White/light icon color */
    cursor: pointer;
}

/* Main Navigation Container (Desktop) */
#main-nav {
	order: 2;
    flex-grow: 1; /* Allows nav to take up space between logo and end */
    display: flex;
    justify-content: flex-end;
}
nav ul {
    list-style: none;
    display: flex;
    align-items: center; /* Ensure button and text align */
    gap: 25px;
}
nav ul li {
    /* Remove original margin-left if it exists, use gap on ul instead */
    margin-left: 0; 
}
nav ul li a {
    text-decoration: none;
    color: var(--text-light); /* FIX: Light text on dark background */
    font-weight: 500;
    transition: color 0.3s, border-bottom 0.3s;
    padding-bottom: 5px; /* Space for the underline */
}
/* FIX: Hover Feature (Color and Underline) */
nav ul li a:hover, nav ul li a.active {
    color: var(--primary-color);
    border-bottom: 2px solid var(--primary-color);
}

.nav-book-btn { /* Style for the Book Now button link */
    padding: 8px 15px; 
    margin-left: 25px;
}

.mobile-controls {
	order: 3;
    display: flex;
    align-items: center;
    gap: 15px; /* Spacing between button and toggle */
	z-index: 1000;
}


/* -------------------------------------- */
/* --- BUTTONS --- */
/* -------------------------------------- */
.btn-primary {
    background-color: var(--primary-color);
    color: white;
    padding: 10px 20px;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    text-decoration: none;
    font-weight: bold;
    transition: background-color 0.3s, transform 0.1s;
    display: inline-block;
}
.btn-primary:hover {
    background-color: #0056b3;
    transform: translateY(-1px);
}
.btn-primary:disabled {
    background-color: #ccc;
    cursor: not-allowed;
    transform: none;
}
.btn-secondary {
    background-color: transparent;
    color: var(--primary-color);
    padding: 10px 20px;
    border: 2px solid var(--primary-color);
    border-radius: 5px;
    cursor: pointer;
    text-decoration: none;
    font-weight: bold;
    transition: background-color 0.3s, color 0.3s;
    display: inline-block;
}
.btn-secondary:hover {
    background-color: var(--primary-color);
    color: white;
}
/* New utility class for centering button/link */
.text-center {
    text-align: center;
    margin-top: 30px;
}

/* -------------------------------------- */
/* --- HERO SECTION STYLES --- */
/* -------------------------------------- */
/* -------------------------------------- */
/* --- HERO SECTION STYLES (UPDATED FOR DARK THEME & LARGE LOGO) --- */
/* -------------------------------------- */
#hero-split {
    display: flex; 
    height: 90vh; 
    overflow: hidden;
    position: relative; 
}
.hero-half {
    flex: 1; 
    height: 100%;
    position: relative;
    overflow: hidden;
}

/* Hero Text Half - Dark background for logo contrast */
#hero-text-half {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 30px;
    background-color: var(--bg-dark); /* Dark background color */
}
.hero-text-content {
    max-width: 650px;
    text-align: center; /* Center the entire content block */
}

/* UPDATED: Larger logo size */
.hero-logo {
    display: block;
    width: 400px; /* Increased size for prominence */
    max-width: 90%; /* Ensures it scales down on mobile */
    margin: 0 auto 20px auto; /* Center it and add extra space below */
}

/* REPLACED h1: Custom styled headline */
.hero-headline {
    font-size: 2.0em; 
    font-weight: 700; 
    font-family: 'Georgia', serif; 
    color: var(--text-light); /* Light text color for contrast */
    margin-bottom: 10px; /* Reduced margin */
    text-align: center; 
}

/* NEW: Style for the non-wrapping tagline */
.hero-tagline {
    font-size: 2.0em; 
    font-weight: 600;
    margin-bottom: 50px;
    color: var(--text-light); /* Use accent color to make it pop */
    
    /* KEY: Prevents wrapping */
    white-space: nowrap; 
    overflow: hidden; /* Hides content if it exceeds the container */
    text-overflow: ellipsis; /* Optional: adds ... if hidden */
    
    text-align: center; 
    width: 100%; 
}

.hero-text-content p {
    font-size: 1.1em;
    margin-bottom: 30px;
    color: var(--text-light); /* Light text color for contrast */
    opacity: 0.85; 
    text-align: center; 
}
.hero-cta-bar {
    display: flex;
    gap: 15px;
    justify-content: center; /* Ensure buttons are centered */
}

/* ... (Carousel Half styles follow after this) ... */

/* ... (Carousel Half styles follow after this) ... */

/* Carousel Half */
#hero-carousel-half {
    background-color: var(--hero-cta-bg); 
}
.carousel-slide {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 0; 
    transition: opacity 4s ease-in-out;
}
.carousel-slide.active {
    opacity: 1; 
}
.carousel-slide img {
    width: 100%;
    height: 100%;
    
	/* CHANGE THIS LINE */
    object-fit: contain; /* Prevents cutting, shows entire image */
    filter: brightness(0.8); 
}
.carousel-slide-caption {
    position: absolute;
    bottom: 20px;
    left: 20px;
    color: white;
    background-color: rgba(0, 0, 0, 0.6);
    padding: 10px 15px;
    border-radius: 5px;
    font-size: 1.1em;
}


/* ---------------------------------------------- */
/* --- WHY CHOOSE SECTION --- */
/* ---------------------------------------------- */
#why-choose {
    margin-top: 0px; 
    padding: 60px 0; /* Reduced bottom padding slightly to bring form closer */
    background-color: var(--bg-light); 
    border-top: 1px solid #ddd; 
    box-shadow: 0 -5px 10px -10px rgba(0, 0, 0, 0.1); 
}
#why-choose h2 { 
    margin-bottom: 30px;
    font-size: 2em;
    color: var(--text-dark);
}
.reason-grid {
    display: grid; 
    grid-template-columns: repeat(4, 1fr); 
    gap: 30px;
    text-align: center;
    padding: 0 20px;
}
.reason-card {
	/* 1. CRITICAL: Add transition to the element */
    transition: transform 0.3s ease-out, box-shadow 0.3s ease-out;
    will-change: transform; /* Performance optimization */
	
    padding: 25px;
    border-radius: 10px;
    box-shadow: var(--card-shadow);
    background-color: #fff; /* Cards are white against the light background */
    border: 1px solid #eee;
    transition: transform 0.3s ease, box-shadow 0.3s;
}
.reason-card:hover {
    transform: translateY(-8px);
    box-shadow: 0 12px 25px rgba(0, 0, 0, 0.25);
}
.reason-card i {
    font-size: 2.5em;
    color: var(--secondary-color); 
    margin-bottom: 15px;
}
.reason-card h4 {
    font-size: 1.2em;
    margin-bottom: 10px;
    color: var(--text-dark);
}
.reason-card p {
    font-size: 0.9em;
    color: #666;
}

/* 1. Initial State (Hidden and Slightly Lowered) */
.fade-in-element {
    opacity: 0;
    transform: translateY(20px); /* Starts 20px below its final position */
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
    will-change: opacity, transform; /* Performance optimization */
}

/* 2. Final State (Visible) */
.fade-in-element.is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* --- QUICK BOOKING FORM (UPDATED FOR MODERN FUSED BAND LOOK) --- */
#booking-form-area {
    /* Full-width dark band appearance */
    background-color: var(--bg-dark); /* Dark background like the footer */
    padding: 0; /* Remove top/bottom padding to make it a tight band */
    border-top: 5px solid var(--secondary-color); /* Add a subtle color accent */
    margin-bottom: 0px; /* Space below the band */
}

/* We'll use the container only to limit the width of the form box */
#booking-form-area .container {
    padding: 0; /* Remove padding from container so the box can stretch */
    max-width: 1400px; /* Make it slightly wider for full-screen feel */
}

.booking-form-box {
    /* Removed box shadow/border to achieve the seamless band look */
    background-color: var(--bg-dark); 
    border: none; 
    border-radius: 0; /* Remove rounded corners */
    padding: 0; 
    max-width: 100%; 
    margin: 0 auto; 
    transition: none;
}
.booking-form-box:hover {
    box-shadow: none;
}

.booking-form-box h2 {
    /* Heading removed in HTML, keeping this here for safety/future use */
    display: none;
}

.booking-form-inline {
    /* The core styling for the fused band */
    display: grid;
    grid-template-columns: repeat(5, 1fr); 
    gap: 0; /* KEY: Remove all gaps between form elements */
    align-items: stretch; /* Stretch items to fill the height */
    overflow: hidden; /* Contains the border-radius for the whole form */
    border-radius: 8px; /* Apply rounded corners to the whole grid container */
    margin: 20px auto; /* Center the box within the dark section */
    max-width: 1200px; 
    box-shadow: var(--card-shadow);
}
.form-group {
    display: flex;
    flex-direction: column;
	/* ADDED: Set positioning context for the error message */
    position: relative;
}
.form-group label {
    display: none; /* Hide labels */
}

/* Style for inputs and selects to look fused */
.form-control {
    padding: 30px 12px; /* Increased padding for better height */
    border: 2px solid #555; /* Thicker, dark separator */
    border-right-width: 1px; /* Lighter right border for fusion effect */
    border-radius: 0; /* Remove individual rounding */
    font-size: 1.05em;
    width: 100%; 
    background-color: white; /* White background for better contrast */
    color: var(--text-dark); 
    height: 100%;
}
.form-control:focus {
    border-color: var(--primary-color);
    outline: none;
    box-shadow: 0 0 0 1px var(--primary-color);
    z-index: 10; /* Ensure the focused element's border is visible */
}

/* Special border styling to fuse the elements: remove left border on all but first */
.form-control:not(:first-child) {
    border-left-width: 0;
}

/* Special rounding for the first and last elements */
.form-group:first-child .form-control {
    border-top-left-radius: 8px;
    border-bottom-left-radius: 8px;
}

/* The Search Button: Fuse it to the right-most input */
.btn-search {
    grid-column: span 1; 
    height: 100%; 
    padding: 30px 20px; 
    align-self: stretch;
    font-size: 1.1em;
    border-radius: 0;
    /* Overwrite border-radius to fuse with the form */
    border-top-right-radius: 8px;
    border-bottom-right-radius: 8px;
    z-index: 5;
    margin-left: -1px; /* Pull it slightly to overlap the border */
}

/* --- Custom Validation & Error Styles --- */

.error-message {
    /* Style the error message */
    display: block;
    color: var(--secondary-color); /* Use a secondary color for visibility */
    background-color: var(--bg-dark); 
    font-size: 0.75em;
    font-weight: bold;
    padding: 2px 5px; 
    visibility: hidden; /* Start hidden */
    text-align: left;
    
    /* POSITIONING FOR DESKTOP (fused bar) */
    position: absolute;
    bottom: -20px; /* Place below the input */
    left: 0;
    z-index: 15;
    white-space: nowrap; /* Prevents text wrap */
    border-radius: 4px;
}

.error-message.active {
    visibility: visible;
}

/* KEY FIX: Override the browser's thick default validation border */
.form-control:invalid,
.form-control.error { /* .error is added by our JS */
    border-color: #ff6666 !important; /* Use a standard error red */
    box-shadow: 0 0 0 1px #ff6666 !important;
}

/* Ensure that when an invalid input is focused, it still uses our clean error style */
.form-control:focus:invalid {
    box-shadow: 0 0 0 2px #ff6666 !important;
    border-color: #ff6666 !important;
    z-index: 10; /* Keep it on top of its neighbors */
}

/* On mobile, let the error flow normally */
@media (max-width: 768px) {
    .error-message {
        position: static;
        margin-top: 5px;
        padding-left: 0;
        background-color: transparent;
        color: #ff6666;
    }
}




/* -------------------------------------- */
/* --- FEATURED ROOMS SECTION --- */
/* -------------------------------------- */
#featured-rooms {
    padding: 60px 0;
    background-color: var(--bg-light); 
}

.room-card-grid {
    display: grid;
    grid-template-columns: 1fr 1fr; /* Two rooms side by side */
    gap: 40px;
    padding: 0 20px;
}

.room-card {
    background-color: #fff;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 8px 15px rgba(0, 0, 0, 0.1);
    transition: transform 0.3s ease, box-shadow 0.3s;
}

.room-card:hover {
    transform: translateY(-8px);
    box-shadow: 0 15px 30px rgba(0, 0, 0, 0.15);
}

.room-card img {
    width: 100%;
    height: 250px;
    object-fit: cover;
}

.room-info {
    padding: 30px;
}

.room-info h3 {
    text-align: left;
    color: var(--primary-color);
    font-size: 1.8em;
    margin-bottom: 10px;
}

.room-price {
    font-size: 1.1em;
    font-weight: bold;
    color: var(--secondary-color);
    margin-bottom: 15px;
}

.room-description {
    margin-bottom: 20px;
    color: #555;
    font-size: 0.95em;
}

.room-features {
    list-style: none;
    padding: 0;
    margin-bottom: 25px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.room-features li {
    font-size: 0.9em;
    color: var(--text-dark);
    line-height: 1.4;
}

.room-features li i {
    margin-right: 8px;
    color: var(--primary-color);
}


/* -------------------------------------- */
/* --- GALLERY TEASER SECTION --- */
/* -------------------------------------- */
#gallery-teaser {
    padding: 60px 0;
    background-color: #fff;
}

.gallery-grid {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    grid-template-rows: 200px 200px; /* Two rows of 200px height */
    gap: 15px;
    max-width: 1200px;
    margin: 0 auto;
}

.gallery-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 8px;
    transition: transform 0.3s, filter 0.3s;
    box-shadow: var(--card-shadow);
	/* CRITICAL: Set the container for overflow and positioning */
    overflow: hidden;
    position: relative;
    /* 1. CRITICAL: Add transition to the container for the caption effect */
    transition: box-shadow 0.3s ease-out;
}

/* --- Styles for the Image Element --- */
.gallery-item img {
    /* 2. CRITICAL: Add transition to the image itself */
    transition: transform 0.5s ease-out, filter 0.5s ease-out;
    will-change: transform; /* Performance optimization */
}

.gallery-item img:hover {
    transform: scale(1.02);
    filter: brightness(0.9);
	/* Optional: Add a subtle glow or shadow to the container */
    box-shadow: 0 0 15px rgba(var(--primary-color), 0.5);
	/* 3. SUBTLE ZOOM: Slightly zoom the image (less than 5% is best) */
    transform: scale(1.03); 
    
    /* 4. BRIGHTNESS BOOST: Increase brightness to make the image 'pop' */
    filter: brightness(1.05);
}

/* --- Optional: Corner Border Reveal Effect (Highly Modern) --- */
.gallery-item::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 0;
    height: 0;
    border-top: 2px solid white;
    border-left: 2px solid white;
    z-index: 5; /* Ensure border is above image */
    transition: width 0.3s ease, height 0.3s ease;
}

.gallery-item:hover::before {
    /* Reveals a top-left corner border on hover */
    width: 30%; 
    height: 30%;
}


/* Specific layout for 6 images (1 large, 5 smaller) */
/* Image 1: Takes up 2x2 space (top left) */
.gallery-item:nth-child(1) {
    grid-column: span 2;
    grid-row: span 2;
}
/* Images 2-6 arrange themselves in the remaining space (2 columns x 2 rows of smaller images) */
.gallery-item:nth-child(2) {
    grid-column: span 2; /* Small image - top middle */
}
.gallery-item:nth-child(3) {
    grid-column: span 2; /* Small image - top right */
}
.gallery-item:nth-child(4) {
    grid-column: span 2; /* Small image - bottom middle */
}
.gallery-item:nth-child(5) {
    grid-column: span 1; /* Small image - bottom right */
}
.gallery-item:nth-child(6) {
    grid-column: span 1; /* Small image - bottom right (next to 5) */
}


/* -------------------------------------- */
/* --- REVIEWS TEASER SECTION --- */
/* -------------------------------------- */
/* --- REVIEWS SECTION: Base Styles (Desktop - 2 per slide) --- */

/* --- REVIEWS SECTION: Base Styles (Desktop - 2 per slide) --- */

#reviews-teaser {
    background-color: var(--bg-light);
    position: relative; 
    padding-bottom: 50px; 
}

/* This container is the visible window for the carousel */
.review-carousel-wrapper {
    width: 100%;
    overflow: hidden; 
    /* Padding reserves space for the buttons */
    padding: 0 50px; 
}

.reviews-track {
    display: flex; 
    flex-direction: row; 
    transition: transform 0.5s ease-in-out; 
    flex-wrap: nowrap; 
}

.review-slide {
    /* Desktop: Two slides per view (50%) */
    width: 50%; 
    flex-shrink: 0; 
    padding: 15px; 
}

.review-card {
    background-color: #fff;
    padding: 30px;
    border-radius: 12px;
    box-shadow: var(--card-shadow);
    height: 100%; 
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.review-stars {
    color: var(--secondary-color);
    margin-bottom: 15px;
}

.review-text {
    font-style: italic;
    margin-bottom: 20px;
    font-size: 1.05em;
}

.reviewer-info {
    font-weight: bold;
    color: var(--text-dark);
    border-top: 1px solid #eee;
    padding-top: 10px;
}

.review-date {
    font-weight: normal;
    font-size: 0.9em;
    color: #666;
}

/* --- Navigation Buttons Positioning Fix (Desktop) --- */

/* The nav container spans the width of the main content container */
.review-nav {
    position: absolute;
    top: 50%;
    /* Centers the element horizontally within the section */
    left: 50%; 
    transform: translate(-50%, -50%); 
    
    /* Set max width to match the content container (e.g., .container) */
    width: 90%; 
    max-width: 1280px; 
    
    display: flex;
    justify-content: space-between;
    pointer-events: none; /* Allows clicks to pass through */
    z-index: 10;
}

.review-nav button {
    pointer-events: all; 
    background: var(--primary-color);
    color: white;
    border: none;
    cursor: pointer;
    border-radius: 50%;
    width: 50px;
    height: 50px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
    transition: background 0.2s;
    margin: 0;
}

/* Fix for Desktop: Use negative margin to pull the buttons 
   outward from the centered .review-nav container, placing them 
   in the reserved padding area (50px) */
.review-prev-btn { 
    margin-left: -50px; 
}
.review-next-btn { 
    margin-right: -50px; 
}


/* --- REVIEWS SECTION: Mobile Styles (1 per slide, Fixed Nav) --- */
@media (max-width: 768px) {
    
    /* 1. REVIEW WRAPPER: Needs space for the smaller buttons (40px wide) */
    .review-carousel-wrapper {
        padding: 0 40px; 
    }
    
    /* 2. INDIVIDUAL SLIDE */
    .review-slide {
        width: 100% !important; 
        flex-shrink: 0; 
        padding: 10px 0;
    }
    
    /* 3. MOBILE BUTTON FIX */
    .review-nav {
        /* Reset positioning for mobile to full width */
        top: 35%; /* Position slightly lower to prevent title/text overlap */
        width: 100%; 
        max-width: none;
        left: 0;
        transform: translateY(-50%); /* Only vertical translation needed */
    }

    .review-nav button {
        width: 40px;
        height: 40px;
        font-size: 0.8em;
    }

    /* Mobile Fix: Position buttons just inside the screen edges,
       respecting the 40px padding of the carousel wrapper. */
    .review-prev-btn { 
        margin-left: 10px; 
    }
    .review-next-btn { 
        margin-right: 10px; 
    }
}


/* ---- Room Modal section ------ */

/* --- Styles for the Modal Carousel (part of Home Page Modal) --- */

.modal {
    position: fixed;
    z-index: 1000; 
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0,0,0,0.7); /* Dark overlay */
}

.modal-content.room-teaser-content {
    background-color: #fefefe;
    margin: 5% auto; /* 5% from the top and centered */
    padding: 30px;
    border: 1px solid #888;
    border-radius: 8px;
    width: 80%; /* Width of the modal */
    max-width: 600px;
    position: relative;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
}

.close-btn {
    color: #aaa;
    float: right;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
    transition: color 0.2s;
}

.close-btn:hover,
.close-btn:focus {
    color: #000;
}

.modal-photo-viewer {
    margin-bottom: 20px;
}

.amenities-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
    margin-top: 20px;
    padding-top: 15px;
    border-top: 1px solid #eee;
}

@media (max-width: 600px) {
    .modal-content.room-teaser-content {
        margin: 10% auto;
        width: 95%;
    }
}

.modal-photo-viewer {
    position: relative; /* Crucial for positioning the buttons */
    margin-bottom: 20px;
    height: 300px; /* Define a height for the viewer */
    border-radius: 8px;
    overflow: hidden; /* Clips the image to the border radius */
}

#modal-room-image {
    width: 100%;
    height: 100%;
    object-fit: cover; /* Ensures the image covers the area without distortion */
    transition: opacity 0.5s ease-in-out; /* Smooth transition for image changes */
}

.modal-nav-btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(0, 0, 0, 0.5);
    color: white;
    border: none;
    padding: 10px 15px;
    font-size: 24px;
    cursor: pointer;
    z-index: 10;
    transition: background-color 0.2s;
}

.modal-nav-btn:hover {
    background: rgba(0, 0, 0, 0.8);
}

.prev-photo {
    left: 0;
    border-radius: 0 5px 5px 0;
}

.next-photo {
    right: 0;
    border-radius: 5px 0 0 5px;
}



/* --- FOOTER --- */
footer {
    background-color: var(--bg-dark);
    color: var(--text-light);
    padding: 40px 0 0;
    margin-top: 0px;
}
.footer-container {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 30px;
    padding-bottom: 30px;
}
.footer-col h3, .footer-col h4 {
    color: var(--secondary-color);
    margin-bottom: 15px;
    font-size: 1.2em;
    text-align: left;
}
.footer-col p, .footer-col ul {
    font-size: 0.9em;
    margin-bottom: 10px;
}
.footer-col ul {
    list-style: none;
    padding: 0;
}
.footer-col a {
    color: var(--text-light);
}
.footer-col a:hover {
    color: var(--primary-color);
}
.contact-info i {
    margin-right: 10px;
    color: var(--primary-color);
}
.social-links a {
    font-size: 1.5em;
    margin-right: 15px;
}
.newsletter input {
    padding: 10px;
    border: none;
    border-radius: 5px 0 0 5px;
    width: 60%;
}
.newsletter button {
    padding: 10px;
    border: none;
    border-radius: 0 5px 5px 0;
    background-color: var(--primary-color);
    color: white;
    cursor: pointer;
    width: 40%;
    margin-left: -5px; 
}
.newsletter form {
    display: flex;
}
.footer-bottom {
    border-top: 1px solid #444;
    padding: 15px 0;
    text-align: center;
    font-size: 0.8em;
}

/* -------------------------------------- */
/* --- RESPONSIVENESS --- */
/* -------------------------------------- */
@media (max-width: 1200px) {
    /* Adjustment for the form grid on slightly smaller screens */
    .booking-form-box {
        max-width: 90%;
    }
}
@media (max-width: 1024px) {
    /* Adjust hero split on smaller desktops/tablets */
    #hero-split {
        height: 70vh;
    }
    .hero-text-content h1 {
        font-size: 2.5em;
    }
    .reason-grid {
        grid-template-columns: repeat(2, 1fr); /* Switch to 2 columns */
    }
    
    /* FEATURED ROOMS: Stack vertically on tablet */
    .room-card-grid {
        grid-template-columns: 1fr;
    }
    .room-card img {
        height: 300px; /* Adjust height when full width */
    }
    
    /* GALLERY: Simple 3-column layout on tablet */
    .gallery-grid {
        grid-template-columns: repeat(3, 1fr);
        grid-template-rows: repeat(2, 200px);
    }
    .gallery-item:nth-child(1) { /* Reset large item */
        grid-column: span 1;
        grid-row: span 1;
    }
    .gallery-item:nth-child(2), .gallery-item:nth-child(3), .gallery-item:nth-child(4), .gallery-item:nth-child(5), .gallery-item:nth-child(6) {
        grid-column: span 1;
        grid-row: span 1;
    }
    
    /* REVIEWS: Cards still display side by side, but gap adjusted */
    .review-slide {
        gap: 20px;
    }
    .review-nav {
        padding: 10px 8px;
    }

    /* ADJUSTED: Form grid collapses to 4 columns, button spans the row */
    .booking-form-inline {
        grid-template-columns: repeat(4, 1fr);
    }
    .btn-search {
        grid-column: 1 / -1; /* Button spans all 4 columns */
    }
}

@media (max-width: 768px) {
    /* Stack hero section vertically */
    #hero-split {
        flex-direction: column;
        height: auto;
    }
    .hero-half {
        flex: none;
        width: 100%;
    }
    #hero-carousel-half {
        height: 50vh; 
    }
    #hero-text-half {
        padding: 40px 20px;
    }
	/* FIX: Allow hero tagline to wrap and prevent cut-off text */
    .hero-tagline {
        white-space: normal; /* Enables wrapping for the text */
        overflow: visible; /* Prevents text from being cut off */
        text-overflow: clip; /* Ensures no ... is displayed */
        margin-bottom: 30px; /* Adjust spacing below the wrapped text */
    }

    /* FIX: Ensures general hero text wraps correctly */
    .hero-text-content p {
        /* This text should wrap by default, but this ensures centering and proper spacing */
        text-align: center;
        padding: 0 10px;
    }
    
    /* UPDATED: Target new headline class */
    .hero-headline, .hero-text-content p {
        text-align: center;
    }
    .hero-cta-bar {
        justify-content: center;
    }
    
    /* HEADER (Mobile Menu Logic) */
    .menu-toggle {
        display: block; /* Show Hamburger Icon */
    }
    
    
    /* We need to hide the desktop menu on mobile. */
    /* The button is now separate, so we target the <nav> for collapsing */
    #main-nav {
        /* This creates the off-canvas menu */
        position: fixed;
        top: 0; 
        right: -300px; /* Initially off-screen */
        width: 250px;
        height: 100%;
        background-color: var(--bg-dark); 
        box-shadow: -5px 0 15px rgba(0, 0, 0, 0.5);
        transition: right 0.4s ease-in-out;
        z-index: 999; 
        /* overflow-y: auto; */
    }

    /* Toggled state: Menu is visible */
    #main-nav.active {
        right: 0;
    }
    
    #main-nav ul {
        flex-direction: column; 
        align-items: flex-start;
        padding: 80px 30px 20px; /* Padding for content inside menu */
    }

    #main-nav ul li {
        margin: 3px 0; 
        width: 100%;
    }
    
    #main-nav ul li a {
        display: block; 
        font-size: 1.1em;
        padding: 5px 0;
        border-bottom: 1px solid #444; /* Separator for clarity */
    }
    
    /* Hide the button when it's inside the off-canvas nav (if user forgot to move it) */
    /* If you moved it as advised, you can remove the following rule: */
    /* .nav-book-btn { display: none; } */

    /* Ensure the visible button is not affected by mobile nav list styling */
    .nav-book-btn {
        /* No change needed, it should look like the desktop button */
    }

  
    /* GALLERY: Simple 2-column layout on mobile */
    .gallery-grid {
        grid-template-columns: repeat(2, 1fr);
        grid-template-rows: repeat(3, 150px);
    }
    
    /* ADJUSTED: Form grid collapses to 2 columns on mobile/small tablets */
    .booking-form-inline {
        grid-template-columns: repeat(2, 1fr);
        
        /* FIX for FUSED BAR: Remove rounding when stacked */
        border-radius: 0;
        margin: 0;
    }
    
    /* FIX for FUSED BAR: Restore individual borders/rounding when stacked */
	
    .form-group:first-child .form-control,
    .btn-search {
        border-radius: 0;
        border-left-width: 2px; /* Restore border on the left of each element when stacked */
        margin-left: 0;
    }
    .form-control:not(:first-child) {
        border-left-width: 2px;
    }

    /* Button spans all 2 columns */
    .btn-search {
        grid-column: 1 / -1; 
    }

    /* Error message display fix for stacked inputs */
    .error-message {
        position: static;
        margin-top: 5px;
        padding-left: 0;
        background-color: transparent;
        color: #ff6666;
    }
	
	.search-form-wrapper { 
    /* Limits the form width to a more manageable size on mobile */
    max-width: 400px; 
    /* Centers the form block horizontally */
    margin: 0 auto 20px auto; 
    padding: 0 15px; /* Adds small side padding for very narrow screens */
    
    /* Ensure elements stack vertically and have space between them */
    display: flex; 
    flex-direction: column;
    gap: 10px; 
	}


	/* ---------------------------------- */
	/* FIX 2: Reduce Height (Vertical Padding) */
	/* ---------------------------------- */
	/* Targets all input fields and controls (like date pickers, dropdowns) */
	.form-control {
		/* ACTION: Greatly reduce vertical padding (the first value) to shrink height */
		padding: 8px 10px; 
		/* Ensures the fields take up 100% of the centered 400px container width */
		width: 100% !important; 
		height: auto; /* Remove any fixed height */
	}

	/* Targets the search button */
	.btn-search {
		/* ACTION: Reduced padding to be smaller than the desktop size */
		padding: 10px 20px; 
		width: 100% !important; 
	}
	
	/* 1. Ensure the date input has relative positioning for absolute content placement */
    .form-control[type="date"] {
        position: relative;
        /* Ensure the input text color is visible when a value is selected */
        color: var(--text-dark, #333); 
    }

    /* 2. Force the placeholder content to appear using ::before when the input is empty */
    /* The :not(:valid) selector works on modern browsers to target empty required fields */
    .form-control[type="date"]:not(:valid)::before {
        content: attr(placeholder); /* Use the content of the placeholder attribute */
        color: #999;               /* Placeholder color (adjust as needed) */
        position: absolute;
        left: 12px;                /* Match the padding-left of .form-control */
        z-index: 1;                /* Ensure it's on top of the native format text (if any) */
    }

    /* 3. Hide the pseudo-placeholder when the input is focused or has a value */
    .form-control[type="date"]:focus::before,
    .form-control[type="date"]:valid::before {
        content: "";
        display: none;
    }

    /* 4. For Webkit (Chrome/Safari) - you may need to explicitly hide the default text */
    /* This step can sometimes cause issues, so use cautiously. */
    /* input[type="date"]::-webkit-datetime-edit-text {
        -webkit-appearance: none;
        display: none;
    } */

    /* Footer layout adjustment */
    .footer-container {
        grid-template-columns: 1fr; /* Stack footer columns */
    }
    .footer-col {
        margin-bottom: 20px;
    }
    .footer-col h3 {
        text-align: center;
    }
}

@media (max-width: 480px) {
    /* Top banner adjustments */
    #top-banner {
        font-size: 0.8em;
    }
    .top-banner-content {
        padding: 0 15px;
    }
    
    #header-main {
        padding: 10px 15px;
    }
    
    .logo a {
        font-size: 1.6em;
    }
    
    /* Why Choose grid single column */
    .reason-grid {
        grid-template-columns: 1fr;
        padding: 0;
    }
    
    /* FEATURED ROOMS: Features stack vertically */
    .room-features {
        grid-template-columns: 1fr;
    }
    .room-info {
        padding: 20px;
    }
    
    /* GALLERY: Single column on smallest mobile */
    .gallery-grid {
        grid-template-columns: 1fr;
        grid-template-rows: auto;
    }
    .gallery-item, .gallery-item:nth-child(1), .gallery-item:nth-child(2), .gallery-item:nth-child(3), .gallery-item:nth-child(4), .gallery-item:nth-child(5), .gallery-item:nth-child(6) {
        grid-column: span 1;
        grid-row: span 1;
    }
    .gallery-item img {
        height: 200px;
    }
    
    /* Form stacks vertically on small phones */
    .booking-form-inline {
        grid-template-columns: 1fr;
        gap: 15px;
    }
    .btn-search {
        grid-column: 1 / -1; 
    }
    .booking-form-box {
        padding: 20px;
    }
    /* Adjust container padding on very small screens */
    .container {
        padding: 15px 15px;
    }
}