:root{
  --ink:#1d2620;--ink-rgb:29 38 32;
  --forest:#2e4636;--forest-rgb:46 70 54;
  --forest-deep:#223428;
  --bone:#f5f2ec;--bone-rgb:245 242 236;
  --paper:#fbfaf7;
  --stone:#ddd6c9;
  --muted:#5b655d;
  --amber:#a8682c;
  --error:#9b2c1f;
  --font-head:"Cormorant Garamond",Georgia,serif;
  --font-body:"Manrope",system-ui,-apple-system,"Segoe UI",sans-serif;
  --ease-out:cubic-bezier(0.23,1,0.32,1);
  --ease-in-out:cubic-bezier(0.77,0,0.175,1);
  --dur-fast:150ms;--dur-base:250ms;--dur-slow:700ms;
  --radius:2px;
  --container:1200px;--gutter:24px;
  --section:clamp(4rem,9vw,7.5rem);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bone);color:var(--ink);font-family:var(--font-body);font-size:1.0625rem;line-height:1.65;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%;height:auto}
h1,h2,h3{font-family:var(--font-head);font-weight:500;line-height:1.1;margin:0 0 .6em;letter-spacing:-.01em}
h1{font-size:clamp(2.4rem,5vw,4.2rem)}
h2{font-size:clamp(1.9rem,3.4vw,2.8rem)}
h3{font-size:1.5rem;font-weight:600}
p{margin:0 0 1em}
a{color:var(--amber);text-underline-offset:3px;transition:color var(--dur-fast) ease}
a:hover{color:var(--ink)}
:focus-visible{outline:2px solid var(--amber);outline-offset:3px}
.container{max-width:var(--container);margin:0 auto;padding:0 var(--gutter)}
.section{padding:var(--section) 0}
.section--tight{padding:calc(var(--section)*.6) 0}
.lead{font-size:1.2rem;color:var(--muted);max-width:40rem}
.muted{color:var(--muted)}
.eyebrow{font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--amber);font-weight:600;margin-bottom:1rem}
.skip{position:absolute;left:-999px;top:0;background:var(--forest);color:var(--bone);padding:.75rem 1rem;z-index:100}
.skip:focus{left:1rem;top:1rem}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:48px;padding:0 1.5rem;border-radius:var(--radius);font:600 .95rem/1 var(--font-body);letter-spacing:.02em;text-decoration:none;cursor:pointer;border:1px solid transparent;white-space:nowrap;transition:background-color var(--dur-base) ease,color var(--dur-base) ease,border-color var(--dur-base) ease,transform 160ms var(--ease-out)}
.btn:active{transform:scale(.97)}
.btn[disabled]{opacity:.5;pointer-events:none}
.btn--primary{background:var(--forest);color:var(--bone)}
.btn--primary:hover{background:var(--forest-deep);color:var(--bone)}
.btn--ghost{background:transparent;color:inherit;border-color:currentColor}
.btn--ghost:hover{background:rgb(var(--bone-rgb)/.12);color:inherit}
.btn--light{background:var(--bone);color:var(--forest)}
.btn--light:hover{background:var(--paper);color:var(--forest-deep)}

/* Header */
.site-header{position:fixed;inset:0 0 auto;z-index:50;height:72px;display:flex;align-items:center;color:var(--bone);transition:background-color var(--dur-base) ease,color var(--dur-base) ease,box-shadow var(--dur-base) ease}
.site-header.is-solid,.site-header--solid{background:var(--bone);color:var(--ink);box-shadow:0 1px 0 var(--stone)}
.site-header .container{display:flex;align-items:center;justify-content:space-between;width:100%}
.brand{font-family:var(--font-head);font-size:1.6rem;font-weight:600;color:inherit;text-decoration:none;line-height:1}
.brand small{display:block;font-family:var(--font-body);font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;font-weight:500;opacity:.8;margin-top:4px}
.brand:hover{color:inherit}
.nav{display:flex;align-items:center;gap:2rem}
.nav a:not(.btn){color:inherit;text-decoration:none;font-size:.95rem;font-weight:500}
.nav a:not(.btn)[aria-current=page]{text-decoration:underline;text-underline-offset:6px}
.site-header:not(.is-solid):not(.site-header--solid) .btn--primary{background:var(--bone);color:var(--forest)}
.menu-toggle{display:none;background:none;border:0;color:inherit;width:44px;height:44px;cursor:pointer;padding:10px}
.menu-toggle span{display:block;height:2px;background:currentColor;margin:5px 0;transition:transform var(--dur-base) var(--ease-out),opacity var(--dur-fast) ease}
@media (max-width:899px){
  .menu-toggle{display:block}
  .nav{position:fixed;inset:72px 0 auto;background:var(--bone);color:var(--ink);flex-direction:column;align-items:stretch;gap:0;padding:.5rem var(--gutter) 1.5rem;box-shadow:0 12px 24px rgb(var(--ink-rgb)/.1);opacity:0;transform:translateY(-8px);pointer-events:none;transition:opacity var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out)}
  .nav a:not(.btn){padding:.9rem 0;border-bottom:1px solid var(--stone)}
  .nav .btn{margin-top:1rem}
  .site-header .nav .btn--primary{background:var(--forest)!important;color:var(--bone)!important}
  .nav-open .nav{opacity:1;transform:none;pointer-events:auto}
  .nav-open .site-header{background:var(--bone);color:var(--ink)}
  .nav-open .menu-toggle span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .nav-open .menu-toggle span:nth-child(2){opacity:0}
  .nav-open .menu-toggle span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
}

/* Hero */
.hero{position:relative;min-height:min(100svh,900px);display:flex;align-items:flex-end;color:var(--bone);overflow:hidden;background:var(--forest-deep)}
.hero__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:68% 40%;transform:scale(1.06);animation:heroIn 2.4s var(--ease-out) forwards}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(to right,rgb(var(--ink-rgb)/.7) 0%,rgb(var(--ink-rgb)/.35) 45%,rgb(var(--ink-rgb)/0) 70%),linear-gradient(to top,rgb(var(--ink-rgb)/.55) 0%,rgb(var(--ink-rgb)/0) 40%),linear-gradient(to bottom,rgb(var(--ink-rgb)/.35) 0%,rgb(var(--ink-rgb)/0) 18%)}
.hero .container{position:relative;z-index:1;padding-bottom:clamp(3rem,8vh,6rem);padding-top:120px}
.hero h1{max-width:15ch;margin-bottom:.4em}
.hero p{font-size:1.2rem;max-width:34rem;opacity:.92}
.hero__ctas{display:flex;gap:1rem;flex-wrap:wrap;margin-top:1.75rem}
@keyframes heroIn{to{transform:scale(1)}}
.page-hero{position:relative;min-height:56vh;display:flex;align-items:flex-end;color:var(--bone);overflow:hidden;background:var(--forest-deep)}
.page-hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.page-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgb(var(--ink-rgb)/.7),rgb(var(--ink-rgb)/.2) 60%,rgb(var(--ink-rgb)/.35))}
.page-hero .container{position:relative;z-index:1;padding-bottom:3rem;padding-top:110px}
.page-hero p{max-width:36rem;font-size:1.15rem;opacity:.92;margin:0}

/* Facts strip */
.facts{background:var(--forest);color:var(--bone)}
.facts ul{list-style:none;margin:0;padding:1.4rem 0;display:flex;flex-wrap:wrap;gap:.75rem 2.5rem;justify-content:space-between}
.facts li{display:flex;align-items:center;gap:.6rem;font-weight:500;font-size:.98rem}
.facts svg{width:20px;height:20px;flex:none;stroke:currentColor;opacity:.85}
.facts strong{font-weight:700}

/* Split */
.split{display:grid;grid-template-columns:1fr;gap:2.5rem;align-items:center}
@media (min-width:900px){.split{grid-template-columns:7fr 5fr;gap:4.5rem}.split--rev{grid-template-columns:5fr 7fr}.split--rev .split__media{order:2}}
.split__media img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius)}
.ticks{list-style:none;padding:0;margin:1.5rem 0 0;display:grid;gap:.6rem}
.ticks li{padding-left:1.6rem;position:relative}
.ticks li::before{content:"";position:absolute;left:0;top:.55em;width:10px;height:6px;border-left:2px solid var(--amber);border-bottom:2px solid var(--amber);transform:rotate(-45deg)}

/* Mosaic gallery */
.mosaic{display:grid;gap:10px;grid-template-columns:repeat(2,1fr);grid-auto-rows:160px}
@media (min-width:900px){.mosaic{grid-template-columns:repeat(4,1fr);grid-auto-rows:220px}}
.mosaic button{padding:0;border:0;background:var(--stone);cursor:zoom-in;overflow:hidden;border-radius:var(--radius)}
.mosaic img{width:100%;height:100%;object-fit:cover;transition:transform 600ms var(--ease-out)}
.mosaic .w2{grid-column:span 2}.mosaic .h2{grid-row:span 2}
@media (hover:hover) and (pointer:fine){.mosaic button:hover img{transform:scale(1.04)}}
.gallery-head{display:flex;justify-content:space-between;align-items:end;gap:1rem;flex-wrap:wrap;margin-bottom:2rem}

/* Lightbox */
.lightbox{position:fixed;inset:0;z-index:90;background:rgb(var(--ink-rgb)/.94);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity 200ms var(--ease-out)}
.lightbox.is-open{opacity:1;pointer-events:auto}
.lightbox img{max-width:min(92vw,1400px);max-height:84vh;object-fit:contain}
.lightbox button{position:absolute;background:none;border:0;color:var(--bone);width:52px;height:52px;cursor:pointer;font-size:2rem;line-height:1}
.lb-close{top:16px;right:16px}.lb-prev{left:12px;top:50%;transform:translateY(-50%)}.lb-next{right:12px;top:50%;transform:translateY(-50%)}
.lb-caption{position:absolute;bottom:20px;left:0;right:0;text-align:center;color:var(--bone);font-size:.9rem;opacity:.85}

/* Full band */
.band{position:relative;color:var(--bone);background:var(--forest-deep);overflow:hidden}
.band img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.55}
.band .container{position:relative;z-index:1}
.band__panel{max-width:34rem}
.band ul{list-style:none;padding:0;margin:1.5rem 0 2rem;display:grid;grid-template-columns:1fr 1fr;gap:.8rem 1.5rem}
.band li{border-top:1px solid rgb(var(--bone-rgb)/.35);padding-top:.6rem;font-weight:500}

/* Reviews */
.reviews{display:grid;gap:2.5rem}
@media (min-width:900px){.reviews{grid-template-columns:1.3fr 1fr 1fr}}
.review{border-top:1px solid var(--stone);padding-top:1.25rem}
.review blockquote{margin:0 0 1rem;font-family:var(--font-head);font-size:1.45rem;line-height:1.35}
.reviews .review:first-child blockquote{font-size:1.85rem}
.review cite{font-style:normal;font-size:.9rem;color:var(--muted)}
.todo{background:#fff3cd;color:#5c4400;padding:.15em .4em;border-radius:var(--radius);font-family:var(--font-body);font-size:.85rem}

/* Rooms */
.rooms{display:grid;gap:3.5rem}
.room{display:grid;gap:1.5rem;align-items:center}
@media (min-width:900px){.room{grid-template-columns:1fr 1fr;gap:3.5rem}.room:nth-child(even) .room__media{order:2}}
.room__media img{width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:var(--radius)}
.room__meta{display:flex;gap:1.5rem;flex-wrap:wrap;color:var(--muted);font-size:.95rem;margin-bottom:1rem}

/* Areas list */
.places{display:grid;gap:0;border-top:1px solid var(--stone)}
@media (min-width:900px){.places{grid-template-columns:1fr 1fr;column-gap:4rem}}
.place{padding:1.75rem 0;border-bottom:1px solid var(--stone);display:grid;grid-template-columns:auto 1fr;gap:1.25rem}
.place__dist{font-family:var(--font-head);font-size:1.6rem;color:var(--amber);min-width:4.5rem;line-height:1.1}
.place__dist small{display:block;font-family:var(--font-body);font-size:.75rem;color:var(--muted);letter-spacing:.04em}
.place h3{margin-bottom:.3em}
.place p{margin:0;color:var(--muted)}

/* Booking */
.book-grid{display:grid;gap:3rem}
@media (min-width:1000px){.book-grid{grid-template-columns:1.25fr 1fr;gap:4rem}}
.booking-engine{background:var(--paper);border:1px solid var(--stone);border-radius:var(--radius);padding:.5rem}
.booking-engine iframe{display:block;width:100%;border:0}
.calendar{background:var(--paper);border:1px solid var(--stone);border-radius:var(--radius);padding:1rem}
.calendar iframe{width:100%;height:540px;border:0}
.terms{display:grid;grid-template-columns:1fr 1fr;gap:1rem 2rem;margin:2rem 0;padding:0;list-style:none}
.terms li{border-top:1px solid var(--stone);padding-top:.6rem}
.terms span{display:block;font-size:.8rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.terms strong{font-weight:600}

/* Forms */
.form{display:grid;gap:1rem}
.form .row{display:grid;gap:1rem}
@media (min-width:600px){.form .row{grid-template-columns:1fr 1fr}}
.form label{display:grid;gap:.35rem;font-size:.9rem;font-weight:600}
.form input,.form select,.form textarea{font:inherit;font-weight:400;background:var(--paper);border:1px solid var(--stone);border-radius:var(--radius);padding:.75rem .85rem;min-height:48px;color:var(--ink);transition:border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease}
.form input::placeholder,.form textarea::placeholder{color:var(--muted)}
.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-color:var(--amber);box-shadow:0 0 0 3px rgb(168 104 44/.2)}
.form input:user-invalid{border-color:var(--error)}
.form .hint{font-weight:400;color:var(--muted);font-size:.85rem}
.hp{position:absolute;left:-9999px}

/* FAQ */
.faq{border-top:1px solid var(--stone)}
.faq details{border-bottom:1px solid var(--stone)}
.faq summary{cursor:pointer;list-style:none;padding:1.2rem 2.5rem 1.2rem 0;position:relative;font-weight:600;font-size:1.05rem}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:.25rem;top:50%;transform:translateY(-50%);font-size:1.5rem;color:var(--amber);transition:transform var(--dur-base) var(--ease-out)}
.faq details[open] summary::after{transform:translateY(-50%) rotate(45deg)}
.faq details p{padding:0 0 1.2rem;margin:0;color:var(--muted);max-width:46rem}

/* CTA band */
.cta{background:var(--forest);color:var(--bone);text-align:center}
.cta h2{max-width:22ch;margin-left:auto;margin-right:auto}
.cta p{max-width:36rem;margin:0 auto 2rem;opacity:.9}

/* Map */
.map{aspect-ratio:16/10;width:100%;border:0;border-radius:var(--radius);filter:grayscale(.3)}

/* Footer */
.site-footer{background:var(--forest-deep);color:rgb(var(--bone-rgb)/.85);padding:4rem 0 6rem;font-size:.95rem}
.site-footer a{color:var(--bone)}
.site-footer a:hover{color:var(--stone)}
.footer-grid{display:grid;gap:2.5rem}
@media (min-width:900px){.footer-grid{grid-template-columns:2fr 1fr 1fr 1fr}.site-footer{padding-bottom:3rem}}
.site-footer h3{font-family:var(--font-body);font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--bone);margin-bottom:1rem;font-weight:600}
.site-footer ul{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}
.footer-base{border-top:1px solid rgb(var(--bone-rgb)/.15);margin-top:3rem;padding-top:1.5rem;display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;font-size:.85rem}

/* Mobile book bar */
.bookbar{position:fixed;left:12px;right:12px;bottom:12px;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:1rem;background:var(--paper);border:1px solid var(--stone);border-radius:var(--radius);padding:.6rem .6rem .6rem 1rem;box-shadow:0 8px 24px rgb(var(--ink-rgb)/.12);font-size:.9rem;transform:translateY(140%);transition:transform var(--dur-base) var(--ease-out)}
.bookbar.is-visible{transform:none}
@media (min-width:900px){.bookbar{display:none}}

/* Reveal */
.reveal{opacity:0;transform:translateY(16px);transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out)}
.reveal.is-in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .hero__img{animation:none;transform:none}
  .reveal{transform:none}
  .mosaic img,.btn{transition:none}
}

/* Polish */
.hero__badge{display:inline-flex;align-items:center;gap:.6rem;font-size:.9rem;font-weight:600;margin:0 0 1.25rem;background:rgb(var(--bone-rgb)/.14);border:1px solid rgb(var(--bone-rgb)/.35);padding:.35rem .9rem .35rem .35rem;border-radius:var(--radius)}
.hero__badge span{background:var(--bone);color:var(--forest);padding:.15rem .5rem;border-radius:var(--radius);font-weight:700}
.split__media--layered{position:relative;padding-bottom:12%}
.split__media--layered .inset{position:absolute;right:-6%;bottom:0;width:42%;aspect-ratio:3/4;object-fit:cover;border:6px solid var(--bone);border-radius:var(--radius)}
@media (max-width:899px){.split__media--layered .inset{right:4%;width:38%}}
.quote-band{position:relative;min-height:70vh;display:flex;align-items:flex-end;overflow:hidden;background:var(--forest-deep);color:var(--bone)}
.quote-band img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.quote-band::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgb(var(--ink-rgb)/.7),rgb(var(--ink-rgb)/0) 55%)}
.quote-band .container{position:relative;z-index:1;padding-bottom:clamp(2.5rem,7vw,5rem)}
.quote-band p{font-family:var(--font-head);font-size:clamp(1.8rem,3.6vw,3rem);line-height:1.15;max-width:22ch;margin:0}
.score{display:inline-block;background:var(--forest);color:var(--bone);font-family:var(--font-body);font-weight:700;font-size:.55em;padding:.2em .45em;border-radius:var(--radius);vertical-align:.35em;margin-right:.35em}
.split__media img,.room__media img{transition:transform 900ms var(--ease-out)}
@media (hover:hover) and (pointer:fine){.split__media:hover img:first-child{transform:scale(1.02)}}
.band img{opacity:.45}
.band .band__panel{background:rgb(var(--ink-rgb)/.35);padding:clamp(1.5rem,3vw,2.5rem);border-radius:var(--radius)}

.hero .container,.page-hero .container,.quote-band .container{width:100%}
.hero__badge em{font-style:normal}
@media (max-width:599px){.hero__badge em{display:none}}

/* Video tour */
.video{position:relative;display:block;width:100%;padding:0;border:0;cursor:pointer;background:var(--forest-deep);border-radius:var(--radius);overflow:hidden;aspect-ratio:16/9;color:var(--bone)}
.video img{width:100%;height:100%;object-fit:cover;opacity:.85;transition:opacity var(--dur-base) ease,transform 900ms var(--ease-out)}
.video::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgb(var(--ink-rgb)/.55),rgb(var(--ink-rgb)/0) 50%)}
.video__play{position:absolute;left:50%;top:50%;width:88px;height:88px;margin:-44px 0 0 -44px;border-radius:50%;background:var(--bone);display:grid;place-items:center;z-index:1;transition:transform 200ms var(--ease-out)}
.video__play svg{width:34px;height:34px;fill:var(--forest);margin-left:4px}
.video__label{position:absolute;left:1.5rem;bottom:1.25rem;z-index:1;font-weight:600;letter-spacing:.02em}
.video:active .video__play{transform:scale(.96)}
@media (hover:hover) and (pointer:fine){.video:hover img{opacity:1;transform:scale(1.02)}.video:hover .video__play{transform:scale(1.06)}}
.video__frame{display:block;width:100%;aspect-ratio:16/9;border:0;border-radius:var(--radius)}
.booking-engine iframe{margin:0 auto}

.perks{list-style:none;padding:0;margin:1.25rem 0 0;display:flex;flex-wrap:wrap;gap:.6rem 1.5rem}
.perks li{padding-left:1.6rem;position:relative;font-weight:600}
.perks li::before{content:"";position:absolute;left:0;top:.5em;width:10px;height:6px;border-left:2px solid var(--amber);border-bottom:2px solid var(--amber);transform:rotate(-45deg)}
