:root {
    --forest: #1f3028;
    --forest-2: #2b4036;
    --olive: #6f765c;
    --sand: #ece2d2;
    --ivory: #faf7f0;
    --cream: #f3eee4;
    --gold: #b18a4d;
    --gold-hover: #d7b979;
    --gold-deep: #8d6734;
    --brown: #4b3525;
    --pool: #9dc8c5;
    --ink: #20231f;
    --muted: #676a63;
    --white: #fff;
    --serif: Georgia, "Times New Roman", serif;
    --sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --shadow: 0 24px 70px rgba(31, 48, 40, .15);
    --radius: 3px;
    --ease-out: cubic-bezier(.22, 1, .36, 1);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; overflow-x: hidden; }
body { margin: 0; background: var(--ivory); color: var(--ink); font-family: var(--sans); font-size: 16px; line-height: 1.66; overflow-x: hidden; }
img { max-width: 100%; height: auto; }
a { color: inherit; }
h1, h2, h3, h4 { color: var(--forest); font-family: var(--serif); font-weight: 400; letter-spacing: -.035em; line-height: 1.08; }
h1 { font-size: clamp(2.6rem, 4.8vw, 4.9rem); }
h2 { font-size: clamp(2rem, 3.2vw, 3.35rem); }
h3 { font-size: clamp(1.25rem, 1.65vw, 1.7rem); }
p { color: var(--muted); }

.site-container { width: min(100% - 2rem, 1380px); }
.section { padding: clamp(4.5rem, 7vw, 7.5rem) 0; }
.section-sand { background: var(--sand); }
.section-dark { background: var(--forest); color: var(--white); }
.section-dark h2, .section-dark h3 { color: var(--white); }
.section-dark p { color: rgba(255,255,255,.68); }
.eyebrow { margin-bottom: 1.2rem; color: var(--gold); font-size: .74rem; font-weight: 700; letter-spacing: .22em; text-transform: uppercase; }
.eyebrow.light { color: #e4c790; }
.lead-copy { color: var(--forest); font-family: var(--serif); font-size: clamp(1.25rem, 2vw, 1.8rem); line-height: 1.45; }
.narrow-heading { max-width: 780px; margin-right: auto; margin-bottom: 3.25rem; margin-left: auto; }
.split-heading { display: flex; align-items: end; justify-content: space-between; gap: 4rem; margin-bottom: 4rem; }
.split-heading > * { flex: 1; }
.split-heading > p { max-width: 470px; }
.text-link { display: inline-flex; align-items: center; gap: .7rem; padding-bottom: .25rem; border-bottom: 1px solid var(--gold); color: var(--forest); font-weight: 650; text-decoration: none; transition: color .25s ease, border-color .25s ease; }
.text-link i { transition: transform .35s var(--ease-out); }
.text-link:hover, .text-link:focus-visible { border-color: var(--gold-deep); color: var(--gold-deep); }
.text-link:hover i, .text-link:focus-visible i { transform: translateX(6px); }

.btn { border-radius: 0; font-size: .85rem; font-weight: 700; letter-spacing: .04em; padding: .85rem 1.35rem; transition: color .3s ease, background-color .3s ease, border-color .3s ease, box-shadow .3s ease, transform .3s var(--ease-out); }
.btn-lg { padding: 1rem 1.65rem; }
.btn:hover { transform: translateY(-3px); }
.btn:active { transform: translateY(0); }
.btn-brand { border-color: var(--gold); background: var(--gold); color: #17231d; }
.btn-brand:hover, .btn-brand:focus { border-color: var(--gold-hover); background: var(--gold-hover); box-shadow: 0 12px 28px rgba(25, 35, 29, .2); color: #17231d; }
.btn-light:hover, .btn-light:focus { border-color: var(--gold-hover); background: var(--gold-hover); color: var(--forest); }
.btn-outline-light:hover, .btn-outline-light:focus { border-color: var(--cream); background: var(--cream); color: var(--forest); }
.btn-outline-dark { border-color: var(--forest); color: var(--forest); }
.btn-outline-dark:hover, .btn-outline-dark:focus { border-color: var(--forest); background: var(--forest); box-shadow: 0 12px 28px rgba(31,48,40,.18); color: #fff; }
:focus-visible { outline: 3px solid rgba(215,185,121,.92); outline-offset: 4px; }

.skip-link { position: fixed; top: -100px; left: 1rem; z-index: 2000; background: #fff; color: #000; padding: .75rem 1rem; }
.skip-link:focus { top: 1rem; }
.site-header { position: absolute; inset: 0 0 auto; z-index: 1000; background: linear-gradient(180deg, rgba(8,18,13,.58), rgba(8,18,13,0)); transition: background .3s ease, box-shadow .3s ease, transform .3s ease; }
.site-header.is-scrolled, .site-header.is-solid { position: fixed; background: rgba(250,247,240,.97); box-shadow: 0 6px 30px rgba(31,48,40,.09); backdrop-filter: blur(14px); }
.site-header .navbar { min-height: 104px; padding: 0; }
.navbar-brand-logos { position: relative; display: block; width: 116px; height: 92px; margin-top: 20px; margin-bottom: 20px; }
.navbar-brand-logos img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; filter: none; transition: opacity .3s ease; }
.brand-logo-white { opacity: 1; }
.brand-logo-color { opacity: 0; }
.site-header.is-scrolled .brand-logo-white, .site-header.is-solid .brand-logo-white { opacity: 0; }
.site-header.is-scrolled .brand-logo-color, .site-header.is-solid .brand-logo-color { opacity: 1; }
.navbar-nav { gap: .25rem; }
.nav-link { position: relative; color: rgba(255,255,255,.92) !important; font-size: .78rem; font-weight: 680; letter-spacing: .035em; padding: .75rem .72rem !important; text-shadow: 0 1px 12px rgba(0,0,0,.32); }
.nav-link::after { position: absolute; bottom: .42rem; left: .72rem; width: 0; height: 1px; background: var(--gold); content: ""; transition: width .25s ease; }
.site-header .navbar-nav .nav-link:hover, .site-header .navbar-nav .nav-link:focus-visible, .site-header .navbar-nav .nav-link.active { color: var(--gold-hover) !important; }
.nav-link:hover::after, .nav-link.active::after { width: calc(100% - 1.44rem); }
.site-header.is-scrolled .nav-link, .site-header.is-solid .nav-link { color: var(--forest) !important; text-shadow: none; }
.site-header.is-scrolled .navbar-nav .nav-link:hover, .site-header.is-scrolled .navbar-nav .nav-link:focus-visible, .site-header.is-scrolled .navbar-nav .nav-link.active,
.site-header.is-solid .navbar-nav .nav-link:hover, .site-header.is-solid .navbar-nav .nav-link:focus-visible, .site-header.is-solid .navbar-nav .nav-link.active { color: var(--gold-deep) !important; }
.nav-book .btn { color: #17231d !important; text-shadow: none; }
.nav-book { margin-left: .8rem; }
.navbar-toggler { width: 46px; border: 0; box-shadow: none !important; }
.navbar-toggler span { display: block; width: 28px; height: 1px; margin: 7px auto; background: #fff; transition: background .3s; }
.site-header.is-scrolled .navbar-toggler span, .site-header.is-solid .navbar-toggler span { background: var(--forest); }

.home-hero { position: relative; display: flex; min-height: 88svh; align-items: center; background: var(--forest); overflow: hidden; }
.home-hero-image, .page-hero > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.home-hero-image { filter: saturate(.92) contrast(1.02); transform: translate3d(var(--hero-x, 0), var(--hero-y, 0), 0) scale(1.025); transition: transform 1.2s var(--ease-out); will-change: transform; }
.home-hero-overlay { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(8,19,14,.88) 0%, rgba(10,22,17,.73) 34%, rgba(10,22,17,.4) 62%, rgba(8,18,14,.16) 100%), linear-gradient(0deg, rgba(7,16,12,.36), transparent 58%); }
.home-hero-content { position: relative; z-index: 2; max-width: 1380px; padding-top: 8rem; padding-bottom: 3.5rem; }
.home-hero-content h1 { max-width: 850px; margin: 0; color: #fff; font-size: clamp(2.9rem, 5vw, 5rem); text-shadow: 0 3px 24px rgba(0,0,0,.28); text-wrap: balance; }
.home-hero-content > p:not(.eyebrow) { max-width: 610px; margin: 1.5rem 0 2rem; color: rgba(255,255,255,.88); font-size: clamp(1rem, 1.15vw, 1.14rem); line-height: 1.65; text-shadow: 0 2px 14px rgba(0,0,0,.32); }
.home-hero-content .eyebrow { margin-bottom: 1rem; color: var(--gold-hover); letter-spacing: .18em; }
.hero-actions .btn-lg { padding: .9rem 1.4rem; font-size: .8rem; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 1rem; }
.hero-scroll { position: absolute; right: 3rem; bottom: 3rem; z-index: 3; display: flex; align-items: center; gap: 1rem; color: #fff; font-size: .72rem; letter-spacing: .18em; text-decoration: none; text-transform: uppercase; transform: rotate(90deg); transform-origin: right bottom; }
.hero-scroll i { animation: hero-arrow 1.7s ease-in-out infinite; }

.fact-strip { position: relative; z-index: 3; margin-top: -1px; background: var(--forest); color: #fff; }
.fact { display: flex; min-height: 160px; flex-direction: column; align-items: center; justify-content: center; border-right: 1px solid rgba(255,255,255,.12); text-align: center; }
.fact strong { font-family: var(--serif); font-size: clamp(2.15rem, 3vw, 3.25rem); font-weight: 400; line-height: 1; }
.fact span { margin-top: .7rem; color: rgba(255,255,255,.6); font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; }

.story-images { position: relative; min-height: 620px; }
.story-main { width: 84%; height: 540px; object-fit: cover; box-shadow: var(--shadow); }
.story-detail { position: absolute; right: 0; bottom: 0; width: 48%; height: 250px; border: 12px solid var(--ivory); object-fit: cover; }
.story-seal { position: absolute; top: 8%; right: 1%; display: grid; width: 144px; height: 144px; place-content: center; border-radius: 50%; background: var(--sand); color: var(--forest); font-family: var(--serif); font-size: .86rem; letter-spacing: .2em; text-align: center; text-transform: uppercase; }
.story-seal em { font-size: .7rem; letter-spacing: .06em; text-transform: none; }

.service-card { position: relative; height: 100%; min-height: 320px; padding: 2.25rem; border: 1px solid rgba(31,48,40,.14); background: radial-gradient(circle at var(--pointer-x, 50%) var(--pointer-y, 50%), rgba(215,185,121,.15), transparent 38%), rgba(255,255,255,.42); overflow: hidden; transition: transform .4s var(--ease-out), box-shadow .4s ease, background .4s ease, border-color .3s ease; }
.service-card:hover { border-color: rgba(177,138,77,.72); background-color: #fff; box-shadow: var(--shadow); transform: translateY(-8px); }
.service-card > i { display: block; margin-bottom: 3rem; color: var(--gold); font-size: 2rem; transition: color .3s ease, transform .4s var(--ease-out); }
.service-card:hover > i { color: var(--gold-deep); transform: translateY(-3px) scale(1.08); }
.service-card h2, .service-card h3 { font-size: 1.5rem; }
.service-card p { margin: 0; }
.dark-card { min-height: 300px; border-color: rgba(255,255,255,.13); background: rgba(255,255,255,.035); }
.dark-card:hover { border-color: rgba(215,185,121,.7); background-color: rgba(255,255,255,.08); box-shadow: none; }
.dark-card h3 { color: #fff; }
.service-number { position: absolute; top: 1.7rem; right: 1.7rem; color: rgba(31,48,40,.25); font-family: var(--serif); }
.service-card.featured { background: var(--forest); color: #fff; }
.service-card.featured h2, .service-card.featured p { color: #fff; }

.home-gallery-grid { display: grid; grid-template-columns: 1.3fr .8fr .9fr; grid-template-rows: 310px 310px; gap: .7rem; }
.home-gallery-item { position: relative; overflow: hidden; }
.home-gallery-item::after { position: absolute; inset: 0; background: linear-gradient(145deg, transparent 48%, rgba(18,31,24,.32)); content: ""; opacity: 0; transition: opacity .45s ease; }
.home-gallery-item img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2,.8,.2,1); }
.home-gallery-item:hover img { transform: scale(1.055); }
.home-gallery-item:hover::after { opacity: 1; }
.home-gallery-item.item-1 { grid-row: 1 / 3; }
.home-gallery-item.item-4 { grid-row: 1 / 3; grid-column: 3; }
.home-gallery-item.item-5, .home-gallery-item.item-6 { display: none; }

.territory-card { position: relative; min-height: 590px; overflow: hidden; }
.territory-card img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 1s var(--ease-out), filter .6s ease; }
.territory-card:hover img { filter: saturate(1.05); transform: scale(1.025); }
.territory-card::after { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(24,40,32,.78), rgba(24,40,32,.06)); content: ""; }
.territory-content { position: relative; z-index: 2; max-width: 670px; padding: clamp(4rem, 8vw, 8rem); }
.territory-content h2 { color: #fff; }
.territory-content p { color: rgba(255,255,255,.8); }
.booking-banner { padding: clamp(5rem, 8vw, 8rem) 0; background: var(--sand); }
.booking-banner h2 { margin-bottom: 1.2rem; }

.page-hero { position: relative; display: flex; min-height: clamp(430px, 58svh, 620px); align-items: end; padding-bottom: clamp(3rem, 5vw, 4.8rem); background: var(--forest); overflow: hidden; }
.page-hero > img { filter: saturate(.93) contrast(1.02); transform: scale(1.008); }
.page-hero-overlay { position: absolute; inset: 0; background: linear-gradient(0deg, rgba(8,19,14,.82) 0%, rgba(8,19,14,.5) 40%, rgba(8,19,14,.14) 76%), linear-gradient(90deg, rgba(8,19,14,.48), transparent 66%); }
.page-hero-content { position: relative; z-index: 2; }
.page-hero h1 { max-width: 860px; margin: 0; color: #fff; font-size: clamp(2.6rem, 4.2vw, 4.45rem); text-shadow: 0 2px 20px rgba(0,0,0,.28); text-wrap: balance; }
.page-hero .lead { max-width: 720px; margin: 1.1rem 0 0; color: rgba(255,255,255,.82); font-size: clamp(.98rem, 1.15vw, 1.14rem); line-height: 1.65; }
.page-hero .eyebrow { margin-bottom: .85rem; }
.breadcrumb { margin-bottom: 1.4rem; }
.breadcrumb-item, .breadcrumb-item a, .breadcrumb-item.active { color: rgba(255,255,255,.66); font-size: .76rem; letter-spacing: .08em; text-decoration: none; text-transform: uppercase; }
.breadcrumb-item + .breadcrumb-item::before { color: rgba(255,255,255,.4); }

.villa-facts-grid { display: grid; grid-template-columns: repeat(2, 1fr); border-top: 1px solid rgba(31,48,40,.2); border-left: 1px solid rgba(31,48,40,.2); }
.villa-facts-grid > div { display: flex; min-height: 180px; flex-direction: column; justify-content: center; padding: 2rem; border-right: 1px solid rgba(31,48,40,.2); border-bottom: 1px solid rgba(31,48,40,.2); }
.villa-facts-grid strong { color: var(--forest); font-family: var(--serif); font-size: 3rem; font-weight: 400; line-height: 1; }
.villa-facts-grid span { margin-top: .7rem; color: var(--muted); font-size: .75rem; letter-spacing: .14em; text-transform: uppercase; }
.villa-collage { display: grid; grid-template-columns: 1.35fr .8fr; grid-template-rows: 360px 360px; gap: 1rem; }
.villa-collage img { width: 100%; height: 100%; object-fit: cover; }
.villa-collage-a { grid-row: 1 / 3; }
.three-moods article { height: 100%; padding: 3rem 2.3rem; border-top: 1px solid var(--gold); background: rgba(255,255,255,.35); transition: background .35s ease, box-shadow .35s ease, transform .4s var(--ease-out); }
.three-moods article:hover { background: rgba(255,255,255,.76); box-shadow: 0 18px 42px rgba(31,48,40,.1); transform: translateY(-6px); }
.three-moods span { color: var(--gold); font-family: var(--serif); font-size: 1.2rem; }

.services-grid .service-card { min-height: 350px; }
.image-quote { position: relative; min-height: 560px; overflow: hidden; }
.image-quote img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.image-quote::after { position: absolute; inset: 0; background: rgba(25,37,31,.42); content: ""; }
.image-quote > div { position: relative; z-index: 2; display: grid; min-height: 560px; place-content: center; padding: 2rem; text-align: center; }
.image-quote p { max-width: 920px; color: #fff; font-family: var(--serif); font-size: clamp(2rem, 3.8vw, 3.8rem); line-height: 1.18; }
.image-quote a { color: #fff; font-weight: 700; text-underline-offset: .4rem; }

.catering-aerial { position: relative; min-height: 430px; margin: 4.5rem 0 0; background: var(--forest); overflow: hidden; }
.catering-aerial img { width: 100%; height: 100%; min-height: 430px; object-fit: cover; transition: filter .5s ease, transform .8s var(--ease-out); }
.catering-aerial:hover img { filter: saturate(1.05); transform: scale(1.018); }
.catering-aerial figcaption { position: absolute; right: 0; bottom: 0; margin: 0; padding: 1rem 1.35rem; background: rgba(22,35,29,.9); color: rgba(255,255,255,.78); font-size: .75rem; letter-spacing: .04em; }
.catering-occasions .narrow-heading p:last-child { max-width: 660px; margin: 1.2rem auto 0; }
.catering-event-card { height: 100%; min-height: 310px; padding: 2.4rem 2rem; border-top: 2px solid var(--gold); background: rgba(255,255,255,.55); transition: background .3s ease, box-shadow .35s ease, transform .4s var(--ease-out); }
.catering-event-card:hover { background: #fff; box-shadow: 0 20px 45px rgba(31,48,40,.1); transform: translateY(-6px); }
.catering-event-card i { display: block; margin-bottom: 2.8rem; color: var(--gold-deep); font-size: 1.7rem; }
.catering-event-card h3 { margin-bottom: 1rem; }
.catering-event-card p { margin: 0; }
.catering-planning h2 { max-width: 620px; }
.catering-checklist { margin: 0; padding: 0; border-top: 1px solid rgba(255,255,255,.16); list-style: none; }
.catering-checklist li { display: flex; align-items: center; gap: 1.4rem; padding: 1.25rem 0; border-bottom: 1px solid rgba(255,255,255,.16); }
.catering-checklist span { color: var(--gold-hover); font-family: var(--serif); font-size: 1.1rem; }
.catering-checklist strong { color: #fff; font-size: .84rem; font-weight: 650; letter-spacing: .06em; }

.gallery-filters { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem; margin-bottom: 3.5rem; }
.gallery-filters button { border: 1px solid rgba(31,48,40,.22); background: transparent; color: var(--forest); font-size: .76rem; font-weight: 700; letter-spacing: .08em; padding: .7rem 1.1rem; text-transform: uppercase; transition: color .25s ease, background .25s ease, border-color .25s ease, transform .3s var(--ease-out); }
.gallery-filters button:hover { border-color: var(--gold); background: rgba(177,138,77,.12); color: var(--gold-deep); transform: translateY(-2px); }
.gallery-filters button.active { border-color: var(--gold); background: var(--gold); color: #17231d; }
.gallery-masonry { columns: 3 320px; column-gap: 1rem; }
.gallery-tile { position: relative; display: block; width: 100%; margin: 0 0 1rem; padding: 0; border: 0; background: #ddd; break-inside: avoid; cursor: zoom-in; overflow: hidden; }
.gallery-tile[hidden] { display: none; }
.gallery-tile img { display: block; width: 100%; height: auto; transition: filter .6s ease, transform .7s var(--ease-out); }
.gallery-tile > span { position: absolute; inset: auto 0 0; padding: 3.5rem 1.4rem 1.3rem; background: linear-gradient(transparent, rgba(20,31,26,.82)); color: #fff; font-family: var(--serif); font-size: 1.2rem; text-align: left; opacity: 0; transform: translateY(10px); transition: .3s ease; }
.gallery-tile small { display: block; margin-bottom: .3rem; color: #dfc48f; font-family: var(--sans); font-size: .62rem; letter-spacing: .14em; text-transform: uppercase; }
.gallery-tile:hover img { filter: saturate(1.06); transform: scale(1.045); }
.gallery-tile:hover > span, .gallery-tile:focus-visible > span { opacity: 1; transform: translateY(0); }
.gallery-tile.gallery-enter { animation: gallery-enter .45s var(--ease-out) both; }
.gallery-lightbox { position: fixed; inset: 0; z-index: 2000; display: grid; place-items: center; background: rgba(12,18,15,.96); opacity: 0; transition: opacity .28s ease; }
.gallery-lightbox.is-open { opacity: 1; }
.gallery-lightbox[hidden] { display: none; }
.gallery-lightbox figure { max-width: min(88vw, 1500px); max-height: 88vh; margin: 0; text-align: center; transform: translateY(16px) scale(.985); transition: transform .38s var(--ease-out); }
.gallery-lightbox.is-open figure { transform: none; }
.gallery-lightbox figure img { max-height: 80vh; object-fit: contain; }
.gallery-lightbox figcaption { margin-top: .7rem; color: rgba(255,255,255,.75); }
.gallery-lightbox button { position: absolute; z-index: 2; width: 52px; height: 52px; border: 1px solid rgba(255,255,255,.28); background: rgba(0,0,0,.16); color: #fff; transition: color .25s ease, background .25s ease, border-color .25s ease, transform .25s ease; }
.gallery-lightbox button:hover { border-color: var(--gold-hover); background: var(--gold-hover); color: var(--forest); transform: scale(1.06); }
.lightbox-close { top: 1.5rem; right: 1.5rem; }
.lightbox-prev { top: 50%; left: 1.5rem; }
.lightbox-next { top: 50%; right: 1.5rem; }

.calendar-toolbar { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin-bottom: 2.5rem; }
.calendar-toolbar h2 { margin-bottom: 0; }
.calendar-legend { display: flex; flex-wrap: wrap; gap: 1rem; color: var(--muted); font-size: .8rem; }
.calendar-legend span { display: flex; align-items: center; gap: .45rem; }
.calendar-legend i { width: 12px; height: 12px; border-radius: 50%; }
.calendar-legend .available { background: #d7e5d7; }
.calendar-legend .occupied { background: #bd8b83; }
.availability-calendar { min-height: 430px; }
.calendar-loading { display: flex; min-height: 300px; align-items: center; justify-content: center; gap: 1rem; color: var(--muted); }
.calendar-months { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem; }
.calendar-month { padding: 1.5rem; border: 1px solid rgba(31,48,40,.13); background: #fff; }
.calendar-month h3 { margin-bottom: 1.2rem; font-size: 1.45rem; text-transform: capitalize; }
.calendar-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: .35rem; }
.calendar-grid .weekday { color: var(--muted); font-size: .62rem; font-weight: 700; text-align: center; text-transform: uppercase; }
.calendar-day { display: grid; aspect-ratio: 1; place-items: center; border-radius: 50%; color: var(--forest); font-size: .78rem; }
.calendar-day.available { background: #e3ede3; }
.calendar-day.occupied { background: #be8d85; color: #fff; text-decoration: line-through; }
.calendar-day.past { background: #eee; color: #aaa; }
.calendar-day.empty { background: transparent; }
.calendar-note { margin-top: 1.3rem; font-size: .82rem; }
.booking-side-card { position: sticky; top: 130px; padding: 3rem; background: var(--forest); box-shadow: var(--shadow); }
.booking-side-card h2 { color: #fff; }
.booking-side-card p { color: rgba(255,255,255,.68); }
.faq-heading { max-width: 900px; margin: 0 auto 2.75rem; }
.faq-accordion { max-width: 900px; margin-right: auto; margin-left: auto; }
.faq-accordion .accordion-item { border: 0; border-bottom: 1px solid rgba(31,48,40,.16); background: transparent; }
.faq-accordion .accordion-button { padding: 1.5rem 0; background: transparent; color: var(--forest); box-shadow: none; font-family: var(--serif); font-size: 1.35rem; }
.faq-accordion .accordion-button::after { transition: transform .3s var(--ease-out); }
.faq-accordion .accordion-body { padding: 0 0 1.5rem; color: var(--muted); }

.review-card { height: 100%; min-height: 380px; padding: 2.4rem; border: 1px solid rgba(31,48,40,.15); background: #fff; transition: border-color .3s ease, box-shadow .35s ease, transform .4s var(--ease-out); }
.review-card:hover { border-color: rgba(177,138,77,.58); box-shadow: 0 22px 54px rgba(31,48,40,.11); transform: translateY(-6px); }
.review-stars { color: var(--gold); }
.review-card blockquote { margin: 2.3rem 0; color: var(--forest); font-family: var(--serif); font-size: 1.55rem; line-height: 1.45; }
.review-card footer { display: flex; flex-direction: column; }
.review-card footer span { color: var(--muted); font-size: .8rem; }
.honest-empty-state { max-width: 780px; margin: auto; padding: 4rem; background: var(--sand); text-align: center; }
.quote-mark { display: block; height: 70px; color: var(--gold); font-family: var(--serif); font-size: 7rem; line-height: 1; }

.territory-intro { padding-bottom: 6rem; }
.poi-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 1rem; }
.poi-card { grid-column: span 4; min-height: 330px; padding: 2.2rem; border-top: 1px solid var(--gold); background: var(--sand); overflow: hidden; transition: box-shadow .35s ease, transform .4s var(--ease-out); }
.poi-card:hover { box-shadow: 0 20px 54px rgba(31,48,40,.12); transform: translateY(-6px); }
.poi-card.has-image { grid-column: span 6; padding: 0; background: #fff; }
.poi-card img { width: 100%; height: 320px; object-fit: cover; transition: transform .7s var(--ease-out); }
.poi-card:hover img { transform: scale(1.035); }
.poi-card > div { padding: 2rem; }
.poi-card > div > span { color: var(--gold); font-size: .7rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.poi-card h2 { margin-top: .7rem; font-size: 1.7rem; }
.experiences-strip { padding: 5rem 0; background: var(--forest); overflow: hidden; }
.experience-marquee { display: flex; flex-wrap: wrap; gap: 1rem; }
.experience-marquee span { border: 1px solid rgba(255,255,255,.2); color: #fff; padding: .75rem 1rem; }

.contact-list { margin-top: 2.5rem; border-top: 1px solid rgba(31,48,40,.14); }
.contact-list > * { display: flex; align-items: center; gap: 1.2rem; padding: 1.3rem 0; border-bottom: 1px solid rgba(31,48,40,.14); color: var(--forest); text-decoration: none; }
.contact-list > a { transition: color .25s ease, padding .35s var(--ease-out); }
.contact-list > a:hover { color: var(--gold-deep); padding-left: .7rem; }
.contact-list i { color: var(--gold); font-size: 1.3rem; }
.contact-list span { display: flex; flex-direction: column; }
.contact-list small { color: var(--muted); font-size: .66rem; letter-spacing: .14em; text-transform: uppercase; }
.contact-form { padding: clamp(2rem, 5vw, 4rem); background: var(--sand); }
.contact-form label { margin-bottom: .45rem; color: var(--forest); font-size: .76rem; font-weight: 700; }
.form-control, .form-select { min-height: 52px; border: 1px solid rgba(31,48,40,.22); border-radius: 0; background: rgba(255,255,255,.65); }
.form-control:focus, .form-select:focus { border-color: var(--gold); box-shadow: 0 0 0 .2rem rgba(177,138,77,.13); }
textarea.form-control { min-height: 150px; }
.consent { color: var(--muted) !important; font-weight: 400 !important; }
.form-status { margin-top: 1rem; color: var(--forest); }
.form-status.error { color: #8c2f2f; }
.hp-field { position: absolute; left: -10000px; }
.contact-location { min-height: 480px; padding: 7rem 0; background: linear-gradient(90deg, rgba(31,48,40,.96), rgba(31,48,40,.84)), url('../images/gallery/large/4725705-100drone-sing0055.webp') center/cover; }
.contact-location h2 { max-width: 850px; color: #fff; }
.contact-location p { color: rgba(255,255,255,.7); }

.legal-page article { max-width: 900px; margin: auto; }
.legal-page article > p { margin-bottom: 1.5rem; }
.legal-note { margin-top: 4rem; padding: 2rem; background: var(--sand); color: var(--muted); }
.not-found { min-height: 80vh; display: grid; place-items: center; padding-top: 10rem; }

.site-footer { padding-top: 6rem; background: #16231d; color: #fff; }
.footer-logo { width: 190px; height: 160px; object-fit: contain; filter: none; }
.site-footer p, .site-footer address { color: rgba(255,255,255,.62); }
.site-footer h2 { color: #fff; font-family: var(--sans); font-size: .72rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; }
.site-footer ul { padding: 0; list-style: none; }
.site-footer li { margin: .65rem 0; }
.site-footer a { color: rgba(255,255,255,.72); text-decoration: none; }
.site-footer a { transition: color .25s ease; }
.site-footer a:hover { color: var(--gold-hover); }
.footer-contact { display: block; margin: .35rem 0; }
.cin { margin-top: 1.3rem; color: #d9bd87 !important; font-size: .76rem; letter-spacing: .09em; }
.footer-bottom { display: flex; justify-content: space-between; gap: 2rem; margin-top: 5rem; padding: 1.5rem 0; border-top: 1px solid rgba(255,255,255,.12); font-size: .78rem; }
.footer-bottom p { margin: 0; }
.footer-bottom div { display: flex; gap: 1.5rem; }
.footer-powered { margin-left: .55rem; white-space: nowrap; }
.footer-powered a { color: var(--gold-hover); }
.whatsapp-float { position: fixed; right: 1.5rem; bottom: 1.5rem; z-index: 950; display: grid; width: 58px; height: 58px; place-items: center; border-radius: 50%; background: #1fa855; box-shadow: 0 12px 35px rgba(20,80,45,.3); color: #fff; font-size: 1.6rem; text-decoration: none; transition: transform .25s ease; }
.whatsapp-float:hover { background: #168d48; color: #fff; transform: translateY(-5px) scale(1.04); }

.scroll-progress { position: fixed; inset: 0 0 auto; z-index: 2200; height: 3px; pointer-events: none; }
.scroll-progress span { display: block; width: 100%; height: 100%; background: linear-gradient(90deg, var(--gold-deep), var(--gold-hover)); transform: scaleX(var(--scroll-progress, 0)); transform-origin: left center; }
.fact { transition: background .3s ease, color .3s ease; }
.fact:hover { background: rgba(255,255,255,.055); }
.calendar-day:not(.empty) { transition: box-shadow .25s ease, transform .25s var(--ease-out); }
.calendar-day:not(.empty):hover { box-shadow: 0 7px 18px rgba(31,48,40,.13); transform: translateY(-2px); }

.home-hero-content > * { animation: hero-copy-in .65s var(--ease-out) both; }
.home-hero-content > :nth-child(1) { animation-delay: .05s; }
.home-hero-content > :nth-child(2) { animation-delay: .1s; }
.home-hero-content > :nth-child(3) { animation-delay: .15s; }
.home-hero-content > :nth-child(4) { animation-delay: .2s; }

html.has-motion .reveal-item { opacity: 0; transform: translateY(28px); transition: opacity .8s ease var(--reveal-delay, 0ms), transform .8s var(--ease-out) var(--reveal-delay, 0ms); }
html.has-motion .reveal-item.reveal-left { transform: translateX(-30px); }
html.has-motion .reveal-item.reveal-right { transform: translateX(30px); }
html.has-motion .reveal-item.is-visible { opacity: 1; transform: none; }

@keyframes hero-copy-in {
    from { opacity: 0; transform: translateY(24px); }
    to { opacity: 1; transform: none; }
}

@keyframes hero-arrow {
    0%, 100% { transform: translateX(0); }
    50% { transform: translateX(7px); }
}

@keyframes gallery-enter {
    from { opacity: 0; transform: translateY(14px) scale(.985); }
    to { opacity: 1; transform: none; }
}

@media (max-width: 1199.98px) {
    .site-header .navbar-collapse { margin: 0 -1rem; padding: 1.5rem 1rem 2rem; background: var(--ivory); }
    .site-header .nav-link { color: var(--forest) !important; font-size: .9rem; padding: .65rem 0 !important; text-shadow: none; }
    .site-header .navbar-nav .nav-link:hover, .site-header .navbar-nav .nav-link:focus-visible, .site-header .navbar-nav .nav-link.active { color: var(--gold-deep) !important; }
    .nav-link::after { display: none; }
    .nav-book { margin: 1rem 0 0; }
    .navbar-nav { align-items: stretch !important; }
    .poi-card { grid-column: span 6; }
}

@media (max-width: 991.98px) {
    .story-images { min-height: 620px; }
    .story-main { height: 520px; }
    .split-heading { align-items: start; flex-direction: column; gap: 1rem; }
    .home-gallery-grid { grid-template-columns: 1fr 1fr; grid-template-rows: 420px 280px; }
    .home-gallery-item.item-1 { grid-row: auto; }
    .home-gallery-item.item-4 { grid-row: auto; grid-column: auto; }
    .calendar-months { grid-template-columns: 1fr; }
    .booking-side-card { position: static; }
    .poi-card, .poi-card.has-image { grid-column: span 12; }
    .footer-main > div:first-child { margin-bottom: 1rem; }
}

@media (max-width: 767.98px) {
    body { font-size: 15px; }
    .site-container { width: min(100% - 1.3rem, 1380px); }
    .site-header .navbar { min-height: 84px; }
    .navbar-brand-logos { width: 92px; height: 72px; }
    .home-hero { min-height: 88svh; }
    .home-hero-content { padding: 6.5rem 0 2.5rem; }
    .home-hero-content h1 { max-width: 100%; font-size: clamp(2.55rem, 11vw, 3.55rem); }
    .home-hero-content > p:not(.eyebrow) { margin: 1.4rem 0 1.8rem; }
    .hero-actions .btn { width: 100%; }
    .hero-scroll { display: none; }
    .fact { min-height: 120px; border-bottom: 1px solid rgba(255,255,255,.12); }
    .fact:nth-child(even) { border-right: 0; }
    .fact:nth-last-child(-n + 2) { border-bottom: 0; }
    .story-images { min-height: 510px; }
    .story-main { width: 92%; height: 430px; }
    .story-detail { width: 53%; height: 210px; border-width: 7px; }
    .story-seal { width: 108px; height: 108px; font-size: .66rem; }
    .home-gallery-grid { grid-template-columns: 1fr; grid-template-rows: repeat(4, 320px); }
    .territory-card { min-height: 560px; }
    .territory-content { padding: 3rem 1.5rem; }
    .page-hero { min-height: clamp(420px, 58svh, 520px); padding-bottom: 2.75rem; }
    .page-hero h1 { font-size: clamp(2.35rem, 10.5vw, 3.4rem); }
    .catering-aerial, .catering-aerial img { min-height: 300px; }
    .catering-aerial { margin-top: 3rem; }
    .catering-aerial figcaption { position: static; display: block; }
    .catering-event-card { min-height: 0; }
    .villa-collage { grid-template-columns: 1fr; grid-template-rows: 420px 280px 280px; }
    .villa-collage-a { grid-row: auto; }
    .gallery-masonry { columns: 2 180px; }
    .gallery-tile > span { display: none; }
    .lightbox-prev { left: .5rem; }
    .lightbox-next { right: .5rem; }
    .calendar-toolbar { align-items: start; flex-direction: column; }
    .contact-form { padding: 2rem 1.2rem; }
    .footer-bottom { align-items: flex-start; flex-direction: column; }
    .footer-powered { display: block; margin: .35rem 0 0; }
}

@media (max-width: 479.98px) {
    .section { padding: 4.5rem 0; }
    .villa-facts-grid { grid-template-columns: 1fr; }
    .villa-facts-grid > div { min-height: 130px; }
    .gallery-masonry { columns: 1; }
    .honest-empty-state { padding: 2.2rem 1.3rem; }
    .booking-side-card { padding: 2rem 1.3rem; }
    .calendar-month { padding: 1rem; }
    .whatsapp-float { right: 1rem; bottom: 1rem; width: 52px; height: 52px; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; }
    .home-hero-image { transform: scale(1.025); }
}
