:root{
  --brand: #1b3b2f; --brand-2: #274d3e; --accent: #8e7cc3;
  --bg: #f9f3ea; --bg-tinted: #fdf9f3;
  --text: #1b1a17; --muted: #5c5a56;
  --radius: 14px; --shadow: 0 10px 30px rgba(0,0,0,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0; font:16px/1.6 system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Arial; color:var(--text); background:var(--bg)}
img{max-width:100%; display:block; height:auto}
a{color:var(--accent); text-decoration:none} a:hover{text-decoration:underline}
.container{width:min(1200px,92vw); margin-inline:auto}
.small{font-size:.925rem} .muted{color:var(--muted)} .nowrap{white-space:nowrap}
.skip-link{position:absolute; left:-9999px; top:0; background:#000; color:#fff; padding:.6rem .8rem; z-index:1000}
.skip-link:focus{left:1rem; top:1rem}

/* Topbar */
.topbar{background:#143125; color:#efe6d6; font-size:.925rem}
.topbar .container{display:flex; gap:1rem; align-items:center; padding:.4rem 0;}
.topbar__spacer{flex:1} .topbar__link{color:#fff; opacity:.9; margin-left:1rem} .topbar__link:hover{opacity:1}

/* Header */
.site-header{position:sticky; top:0; z-index:50; background:var(--brand); color:#fff; border-bottom:1px solid rgba(0,0,0,.05)}
.header__inner{display:flex; align-items:center; justify-content:space-between; padding:.9rem 0;}
.logo{display:flex; gap:.6rem; align-items:center; font-weight:700; color:#fff}
.logo__mark{background:#fff; color:var(--brand); padding:.25rem .45rem; border-radius:8px}

/* Nav */
.nav ul{display:flex; gap:1rem; list-style:none; margin:0; padding:0; align-items:center}
.nav a{padding:.5rem .6rem; border-radius:8px; color:#fff}
.nav a:hover{background: rgba(255,255,255,.08)}
.nav .btn{padding:.55rem .9rem}
.nav-toggle{display:none; background:none; border:0; padding:.5rem; cursor:pointer}
.nav-toggle__bar{display:block; width:24px; height:2px; background:#fff; margin:5px 0}

/* Buttons */
.btn{display:inline-block; padding:.8rem 1.1rem; border-radius:999px; border:2px solid transparent; font-weight:600}
.btn--primary{background: var(--accent); border-color: var(--accent); color:#fff}
.btn--primary:hover{filter:brightness(1.1)}
.btn--ghost{border-color: var(--accent); color: var(--accent); background:transparent}
.btn--ghost:hover{background: rgba(142,124,195,.12)}
.btn--small{padding:.5rem .8rem}
.btn--tiny{padding:.35rem .6rem; font-size:.9rem}

/* Hero */
.hero{position:relative; min-height:72vh; display:flex; align-items:center; color:#fff; overflow:hidden}
.hero__media{position:absolute; inset:0; background:center/cover no-repeat var(--brand); background-image: var(--hero, none); transform:scale(1.02)}
.hero__overlay{position:absolute; inset:0; background:rgba(0,0,0,.55)}
.hero__inner{position:relative; padding:clamp(2rem,5vw,4rem) 0}
.eyebrow{letter-spacing:.12em; text-transform:uppercase; font-weight:700; margin:0 0 .5rem; color:#efe6ff}
.hero h1{font-size:clamp(2rem,5vw,3.2rem); margin:.2rem 0 1rem}
.hero .lead{font-size:clamp(1rem,2.2vw,1.25rem); max-width:60ch; margin:0 0 1.1rem}
.hero__cta{display:flex; gap:.8rem; flex-wrap:wrap}

/* Sections */
.section{padding:clamp(2.4rem,6vw,4rem) 0}
.section--tinted{background:var(--bg-tinted)}
.section--brand{background: linear-gradient(180deg, var(--brand), var(--brand-2)); color:#fff}
.section h2{font-size:clamp(1.6rem,3.5vw,2.2rem); margin:.2rem 0 1.1rem}

/* Facts & grids */
.facts{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; list-style:none; padding:0; margin:0 0 1.6rem}
.facts li{background:#fff; border:1px solid #e0d6c5; border-radius:var(--radius); padding:1rem; box-shadow: var(--shadow); display:grid; grid-template-columns:auto 1fr; gap:.25rem; align-items:center}
.facts svg{width:28px; height:28px; margin-right:.6rem; fill:var(--accent)}
.cols{display:grid; grid-template-columns:1.1fr .9fr; gap:2rem; align-items:center}
.card-img{border-radius:var(--radius); overflow:hidden; box-shadow: var(--shadow)}
.badges{display:flex; gap:.5rem; flex-wrap:wrap; margin-top:.6rem}
.badge{background:rgba(142,124,195,.15); color:var(--accent); border:1px solid var(--accent); padding:.25rem .55rem; border-radius:999px; font-size:.9rem}

.grid--features{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem}
.feature{background:#fff; border:1px solid #e0d6c5; border-radius:var(--radius); padding:1rem; box-shadow: var(--shadow)}
.checklist{list-style:none; padding:0; margin:.6rem 0 0}
.checklist li{padding-left:1.4rem; position:relative}
.checklist li::before{content:"✓"; position:absolute; left:0; color:var(--accent)}

.grid--gallery{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.75rem}
.grid--gallery figure{border-radius:12px; overflow:hidden; box-shadow: var(--shadow)}

/* Map */
.map-embed{ 
  position:relative; 
  border-radius:var(--radius); 
  overflow:hidden; 
  box-shadow: var(--shadow); 
  background:#fff; 
  border:1px solid #e0d6c5;
}


/* Ratings */
.ratings{display:flex; gap:.6rem; flex-wrap:wrap; align-items:center}
.rating{display:inline-flex; gap:.5rem; align-items:center; background:#fff; border:1px solid #e0d6c5; border-radius:999px; padding:.3rem .6rem; box-shadow: var(--shadow)}
.rating__logo{display:inline-grid; place-items:center; width:24px; height:24px; font-weight:700; background:rgba(142,124,195,.15); color:var(--accent); border-radius:50%}
.rating__label {font-weight: 600; margin-right: 0.4rem; color: var(--accent);}
.rating__score{font-weight:700}
.rating__stars .star{opacity:.25}
.rating__stars .star.is-on{opacity:1}
.rating__count{color:var(--muted); font-size:.9rem}

/* Guestbook */
.gb-list{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem}
.gb-item{background:#fff; border:1px solid #e0d6c5; border-radius:var(--radius); padding:1rem; box-shadow:var(--shadow)}
.gb-head{display:flex; gap:.6rem; align-items:center; flex-wrap:wrap; margin-bottom:.4rem}
.gb-date{color:var(--muted); font-size:.9rem}
.gb-stars .star{opacity:.25} .gb-stars .star.is-on{opacity:1}

.pagination { margin-top:.6rem; text-align:center; display:flex; gap:.5rem; justify-content:center; align-items:center; }
.pagination .pg-info { opacity:.75 }
.pagination button {  padding:.35rem .6rem; border:1px solid #d8cdbb; background:#fff; border-radius:8px; cursor:pointer; }
.pagination button[disabled]{ opacity:.45; cursor:default }


/* Form */
.form{max-width:760px}
.form__row{margin-bottom:1rem}
.form__row--half{display:grid; grid-template-columns:1fr 1fr; gap:.8rem}
.form__row label{font-weight:600; display:block; margin-bottom:.35rem}
.form__row input,.form__row textarea{
  width:100%; padding:.75rem .85rem; border-radius:10px; border:1px solid #d8cdbb; background:#fff;
  font:inherit; color:inherit; outline-color: var(--accent);
}
.form__row--actions{display:flex; gap:.6rem; align-items:center}
.form__hint{margin:.6rem 0 0}

/* Footer */
.site-footer{background:var(--brand); color:#efe6d6; padding:2rem 0}
.footer__grid{display:grid; grid-template-columns:2fr 1fr; gap:1rem; align-items:start}
.footer__nav{list-style:none; margin:.2rem 0 0; padding:0}
.footer__nav a{color:#efe6d6}

/* Availability / Calendar */
.availability{display:grid; grid-template-columns:1fr 1fr; gap:1.2rem; align-items:start}
.calendar{background:#fff; border:1px solid #e0d6c5; border-radius:var(--radius); box-shadow: var(--shadow); padding:1rem}
.calendar__controls{display:flex; align-items:center; justify-content:space-between; margin-bottom:.6rem}
.calendar__weekdays{display:grid; grid-template-columns:repeat(7,1fr); gap:.25rem; font-weight:600; color:var(--muted); margin-bottom:.25rem}
.calendar__grid-inner{display:grid; grid-template-columns:repeat(7,1fr); gap:.25rem}
.day{padding:.6rem .2rem; text-align:center; border:1px solid #e0d6c5; background:#fbf8f1; border-radius:8px; cursor:default}
.day--blank{visibility:hidden}
.day--blocked{background:#e8e1f7; border-color:#cfc2f0}

/* Prices */
.price-wrap { margin-bottom: 1rem; }
.price-card{
  background:#fff; border:1px solid #e0d6c5; border-radius:var(--radius);
  box-shadow: var(--shadow); overflow:hidden;
}
.price-table{ width:100%; border-collapse:collapse; font-size:1rem }
.price-table th, .price-table td{ padding:.8rem .7rem; border-bottom:1px solid #efe7d9; vertical-align:top }
.price-table thead th{ background:#fbf8f1; text-align:left }
.price-table .num{ text-align:right; white-space:nowrap }
.price-notes{ margin-top:.6rem }
.price-notes ul{ margin:.4rem 0 0; padding-left:1.1rem }
.price-fees{ display:flex; gap:.6rem; flex-wrap:wrap; margin:.6rem 0 }
.price-fees .fee{
  background:rgba(142,124,195,.12); color:var(--accent);
  border:1px solid var(--accent); border-radius:999px; padding:.25rem .6rem; font-size:.95rem;
}
.price-cta{ margin-top:.6rem }


/* Responsive */
@media (max-width:960px){
  .facts{grid-template-columns:repeat(2,1fr)}
  .cols{grid-template-columns:1fr}
  .grid--features{grid-template-columns:repeat(2,1fr)}
  .grid--gallery{grid-template-columns:repeat(2,1fr)}
  .footer__grid{grid-template-columns:1fr}
  .availability{grid-template-columns:1fr}
  .gb-list{grid-template-columns:1fr}
}
@media (max-width:720px){
  .nav-toggle{display:block}
  .nav{position:fixed; inset:64px 0 auto 0; background:var(--brand); color:#fff; border-bottom:1px solid rgba(0,0,0,.05); transform: translateY(-120%); transition:.24s ease; box-shadow: 0 10px 20px rgba(0,0,0,.06)}
  .nav.is-open{transform: translateY(0)}
  .nav ul{flex-direction:column; align-items:stretch; padding: .6rem}
  .nav a{color:#fff}
  .facts{grid-template-columns:1fr}
  .grid--features{grid-template-columns:1fr}
}
