@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,300;0,9..144,400;0,9..144,500;1,9..144,400&family=Work+Sans:wght@400;500&display=swap');

:root{
  --paper:#FAF8F3;
  --band-alt:#EDF1EC;
  --band-sand:#F5EEDD;
  --ink:#2B2A26;
  --ink-soft:#5C5A52;
  --stone:#DCD6C9;
  --stone-line:#CFC8B8;
  --display:'Fraunces', serif;
  --body:'Work Sans', sans-serif;
  --accent:#5C8A86;
  --accent-deep:#3E615D;
  --accent-tint:#E7EFEE;
  --water:#4E7C78;
  --shore:#E9DFC6;
}
*{box-sizing:border-box; margin:0; padding:0;}
body{background:var(--paper); color:var(--ink); font-family:var(--body); line-height:1.7; -webkit-font-smoothing:antialiased;}
.wrap{max-width:1100px; margin:0 auto; padding:0 32px;}
.band{width:100%; background:var(--paper);}
.band.alt{background:var(--band-alt);}
.band.sand{background:var(--band-sand);}
.band-inner{padding:34px 0;}
.eyebrow{font-family:var(--body); font-size:15px; letter-spacing:.14em; text-transform:uppercase; color:var(--accent-deep);}
h1,h2{font-family:var(--display); font-weight:400; color:var(--ink);}

nav{display:flex; justify-content:space-between; align-items:center; padding:22px 0 8px; position:relative;}
.wordmark{font-family:var(--display); font-size:39px; letter-spacing:.005em;}
.navlinks{display:flex; gap:26px; font-size:16px; color:var(--ink-soft);}
.navlinks a{color:var(--ink-soft); text-decoration:none;}
.navlinks a:hover{color:var(--accent-deep);}

.nav-toggle{display:none; flex-direction:column; justify-content:center; align-items:flex-end; gap:6px; width:36px; height:32px; background:none; border:none; cursor:pointer; padding:0; flex-shrink:0;}
.nav-toggle span{display:block; width:100%; height:2px; background:var(--ink); transition:transform .2s ease, opacity .2s ease, width .2s ease;}
.nav-toggle.active span:nth-child(1){transform:translateY(8px) rotate(45deg); width:100%;}
.nav-toggle.active span:nth-child(2){opacity:0;}
.nav-toggle.active span:nth-child(3){transform:translateY(-8px) rotate(-45deg); width:100%;}

.navdropdown{position:relative; padding-bottom:14px; margin-bottom:-14px;}
.navdropdown-menu{display:none; position:absolute; top:100%; left:0; background:var(--paper); border:1px solid var(--stone-line); border-radius:2px; padding:6px 0; min-width:190px; box-shadow:0 4px 14px rgba(0,0,0,.08); z-index:10;}
.navdropdown-menu a{display:block; padding:8px 14px; font-size:16px; color:var(--ink-soft); text-decoration:none; white-space:nowrap;}
.navdropdown-menu a:hover{color:var(--accent-deep); background:var(--band-alt);}
.navdropdown:hover .navdropdown-menu, .navdropdown:focus-within .navdropdown-menu{display:block;}

.horizon{margin-top:18px; height:400px; border-radius:2px; overflow:hidden; position:relative; background:var(--water);}
.horizon video{width:100%; height:100%; object-fit:cover; display:block;}
.hero-copy{position:absolute; left:28px; bottom:26px; color:#FAF8F3; max-width:440px; z-index:2;}
.hero-copy .eyebrow{color:#EFEBDD; text-shadow:0 1px 8px rgba(0,0,0,.4);}
.hero-copy h1{color:#FAF8F3; font-size:48px; line-height:1.22; margin-top:6px; text-shadow:0 1px 3px rgba(0,0,0,.5), 0 4px 20px rgba(0,0,0,.35);}
.hero-copy .hero-subtitle{font-family:var(--body); font-size:16px; color:#EFEBDD; margin-top:8px; letter-spacing:.02em; text-shadow:0 1px 6px rgba(0,0,0,.4);}
.hero-scrim{position:absolute; inset:0; background:linear-gradient(0deg, rgba(20,30,28,.55) 0%, rgba(20,30,28,0) 45%); z-index:1;}

.waterline{display:block; width:100%; height:26px;}
.waterline path{fill:none; stroke:var(--accent); stroke-width:2.2;}

.intro{display:grid; grid-template-columns:1fr 1fr; gap:48px; align-items:start;}
.intro p.lede{font-family:var(--display); font-size:26px; font-style:italic; margin-bottom:0;}
.intro p{font-size:20px; color:var(--ink-soft);}
.intro .intro-copy p.lede{margin-bottom:14px;}
.intro .intro-copy p:last-child{margin-bottom:0;}
.intro .intro-copy a{color:var(--ink-soft); text-decoration-color:var(--stone-line);}
.intro .intro-copy a:hover{color:var(--accent-deep);}

.intro-address{display:flex; flex-direction:column; align-items:center; justify-content:center; gap:20px; height:100%; text-align:center;}
.address-block{font-size:18px; color:var(--ink-soft); line-height:1.6;}

.gallery-grid{display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:8px;}
.gallery-cell{position:relative; height:250px; border-radius:2px; overflow:hidden; background:var(--stone);}

.home-grid{display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:8px;}
.home-grid .gallery-cell{height:250px;}
.home-grid a.gallery-cell{display:block; text-decoration:none; color:inherit;}
.home-grid a.gallery-cell img{transition:transform .35s ease;}
.home-grid a.gallery-cell:hover img{transform:scale(1.05);}
.gallery-cell img{width:100%; height:100%; object-fit:cover; display:block;}
.gallery-label{position:absolute; left:12px; bottom:10px; color:var(--accent-deep); font-size:15px; letter-spacing:.04em; background:rgba(250,248,243,.92); padding:5px 10px; border-radius:2px;}
.gallery-note{font-size:16px; color:var(--ink-soft); margin-top:10px; font-style:italic;}

.lightbox-overlay{position:fixed; inset:0; background:rgba(20,20,18,.94); display:none; align-items:center; justify-content:center; z-index:1000; padding:40px;}
.lightbox-overlay.open{display:flex;}
.lightbox-img{max-width:90vw; max-height:85vh; object-fit:contain; border-radius:2px; box-shadow:0 10px 40px rgba(0,0,0,.5);}
.lightbox-close{position:absolute; top:20px; right:24px; background:none; border:none; color:#FAF8F3; font-size:36px; line-height:1; cursor:pointer;}
.lightbox-prev, .lightbox-next{position:absolute; top:50%; transform:translateY(-50%); background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.25); color:#FAF8F3; font-size:28px; width:48px; height:48px; border-radius:50%; cursor:pointer; display:flex; align-items:center; justify-content:center;}
.lightbox-prev{left:20px;}
.lightbox-next{right:20px;}
.lightbox-prev:hover, .lightbox-next:hover, .lightbox-close:hover{background:rgba(255,255,255,.16);}
.lightbox-count{position:absolute; bottom:20px; left:50%; transform:translateX(-50%); color:#FAF8F3; font-size:13px; opacity:.8;}

@media (max-width: 640px){
  .lightbox-overlay{padding:16px;}
  .lightbox-prev, .lightbox-next{width:40px; height:40px; font-size:22px;}
  .lightbox-close{font-size:30px; top:12px; right:14px;}
}

.quickfacts{display:flex; flex-wrap:wrap; justify-content:center; text-align:center; gap:8px 0; margin:20px 0 4px; font-size:18px; color:var(--ink-soft);}
.quickfacts strong{color:var(--ink); font-weight:500;}
.quickfacts span:not(:last-child)::after{content:"·"; margin:0 14px; color:var(--accent-deep); font-size:28px; line-height:0; position:relative; top:3px;}
.details{display:flex; flex-wrap:wrap; justify-content:center; gap:10px 0; font-size:19px; margin-top:10px;}
.details span{padding-right:18px; margin-right:18px; border-right:1px solid var(--stone-line);}
.details span:last-child{border-right:none;}

.table-scroll{width:100%; overflow-x:auto; margin-top:14px; -webkit-overflow-scrolling:touch; border:1px solid var(--stone-line); border-radius:2px;}
table.rates{width:100%; min-width:480px; border-collapse:collapse; font-size:18px; margin-top:0;}
table.rates th, table.rates td{padding:8px 4px; text-align:center; border-bottom:1px solid var(--stone-line);}
table.rates th{font-weight:500; color:var(--accent-deep); font-size:15px; text-transform:uppercase; letter-spacing:.04em; background:var(--accent-tint);}
.rates-note{font-size:16px; color:var(--ink-soft); margin-top:10px;}

.icon-grid{display:grid; grid-template-columns:repeat(4, 1fr); gap:32px; margin-top:24px; text-align:center;}
.icon-card .icon-circle{width:64px; height:64px; border-radius:50%; background:var(--accent-deep); display:flex; align-items:center; justify-content:center; margin:0 auto 16px;}
.icon-card .icon-circle svg{width:28px; height:28px; stroke:#FAF8F3; fill:none;}
.icon-card h4{font-family:var(--display); font-weight:500; font-size:19px; margin-bottom:8px;}
.icon-card p{font-size:15px; line-height:1.6; color:var(--ink-soft);}

.card-grid{display:grid; grid-template-columns:1fr 1fr; gap:24px; margin-top:24px;}
.info-card{border:1px solid var(--stone-line); border-radius:2px; overflow:hidden; background:var(--paper);}
.info-card-head{background:var(--band-sand); padding:14px 20px; text-align:center; font-family:var(--display); font-size:19px; color:var(--ink); border-bottom:1px solid var(--stone-line);}
.info-card-body{padding:20px; font-size:16px; line-height:1.6; color:var(--ink-soft);}

@media (min-width: 641px) and (max-width: 900px){
  .icon-grid{grid-template-columns:1fr 1fr;}
}

.cal-legend{display:flex; flex-wrap:wrap; gap:20px; margin-top:16px; font-size:15px; color:var(--ink-soft);}
.cal-legend-item{display:flex; align-items:center; gap:8px;}
.cal-legend-swatch{width:16px; height:16px; border-radius:2px; display:inline-block; flex-shrink:0;}
.cal-legend-swatch.available{background:var(--paper); border:1px solid var(--stone-line);}
.cal-legend-swatch.booked{background:var(--accent-deep);}

.cal-status{font-size:15px; color:var(--ink-soft); margin-top:12px;}

.cal-grid{display:grid; grid-template-columns:1fr; gap:28px; margin-top:20px;}
.cal-month{border:1px solid var(--stone-line); border-radius:2px; overflow:hidden; background:var(--paper);}
.cal-month-head{background:var(--band-sand); padding:12px 16px; text-align:center; font-family:var(--display); font-size:18px; color:var(--ink); border-bottom:1px solid var(--stone-line);}
.cal-month-days{display:grid; grid-template-columns:repeat(7, 1fr);}
.cal-dow{text-align:center; font-size:12px; color:var(--ink-soft); padding:8px 0; text-transform:uppercase; letter-spacing:.04em; background:var(--band-alt);}
.cal-day{aspect-ratio:1; display:flex; align-items:center; justify-content:center; font-size:14px; color:var(--ink); border-top:1px solid var(--stone-line); border-left:1px solid var(--stone-line);}
.cal-day.empty{background:var(--band-alt);}
.cal-day.booked{background:var(--accent-deep); color:#FAF8F3; font-weight:500;}
.cal-day.editable{cursor:pointer;}
.cal-day.editable:hover{outline:2px solid var(--accent); outline-offset:-2px; position:relative; z-index:1;}
.cal-month-days .cal-day:nth-child(7n+1){border-left:none;}

@media (min-width: 700px){
  .cal-grid{grid-template-columns:1fr 1fr;}
}
@media (min-width: 1100px){
  .cal-grid{grid-template-columns:1fr 1fr 1fr;}
}
@media (max-width: 640px){
  .cal-grid{gap:20px;}
  .cal-day{font-size:12px;}
}

.button-row{display:flex; gap:12px; margin-top:16px;}
.cta{font-family:var(--body); font-size:18px; letter-spacing:.03em; color:#FAF8F3; background:var(--accent-deep); border:1px solid var(--accent-deep); padding:13px 26px; border-radius:2px; cursor:pointer;}
.cta-ghost{font-family:var(--body); font-size:18px; letter-spacing:.03em; color:var(--accent-deep); background:transparent; border:1px solid var(--stone-line); padding:13px 26px; border-radius:2px; cursor:pointer;}

footer{padding:26px 0 40px; display:flex; justify-content:space-between; align-items:baseline; flex-wrap:wrap; gap:10px;}
footer .wordmark{font-size:20px;}
footer .contact{font-size:16px; color:var(--ink-soft);}
footer .contact a{color:var(--ink-soft);}
footer .contact a:hover{color:var(--accent-deep);}
footer .footer-links{display:flex; align-items:center; gap:18px; flex-wrap:wrap;}
footer .footer-links .privacy-link{font-size:16px; color:var(--ink-soft); text-decoration:none;}
footer .footer-links .privacy-link:hover{color:var(--accent-deep);}

.accordion{border-top:1px solid var(--stone-line); margin-top:12px;}
.accordion-item{border-bottom:1px solid var(--stone-line); padding:0 24px;}
.accordion-item:nth-child(odd){background:var(--band-sand);}
.accordion-item:nth-child(even){background:var(--band-alt);}
.accordion-trigger{display:flex; justify-content:space-between; align-items:center; gap:12px; width:100%; background:none; border:none; text-align:left; padding:18px 0; font-family:var(--display); font-size:24px; color:var(--ink); cursor:pointer;}
.accordion-trigger .chevron{transition:transform .2s ease; color:var(--accent-deep); width:56px; height:56px; flex-shrink:0;}
.accordion-item.open .accordion-trigger .chevron{transform:rotate(180deg);}
.accordion-panel{display:none;}
.accordion-item.open .accordion-panel{display:block;}
.accordion-body{padding:0 0 22px;}
.accordion-group{margin-bottom:18px;}
.accordion-group:last-child{margin-bottom:0;}
.accordion-group h4{font-family:var(--display); font-weight:500; font-size:19px; color:var(--accent-deep); margin-bottom:8px;}
.accordion-group ul{list-style:none;}
.accordion-group li{font-size:18px; line-height:1.6; color:var(--ink-soft); padding:7px 0; border-bottom:1px dotted var(--stone-line);}
.accordion-group li:last-child{border-bottom:none;}
.accordion-group li strong{color:var(--ink); font-weight:500;}
.accordion-group li a{color:var(--accent-deep);}

@media (min-width: 900px){
  .accordion-group ul{columns:2; column-gap:32px;}
  .accordion-group li{break-inside:avoid;}
}

.contact-form{max-width:900px; display:grid; grid-template-columns:1fr 1fr; gap:0 32px; align-items:start;}
.contact-form .hp-field{grid-column:1 / -1;}
.contact-form > .button-row{grid-column:1 / -1; margin-top:8px;}
.contact-form > .form-status{grid-column:1 / -1;}
.form-field{margin-bottom:18px;}
.form-field label{display:block; font-size:16px; color:var(--ink-soft); margin-bottom:6px;}
.form-field input[type="text"], .form-field input[type="email"], .form-field input[type="tel"], .form-field textarea{
  width:100%; font-family:var(--body); font-size:19px; color:var(--ink); background:var(--paper);
  border:1px solid var(--stone-line); border-radius:2px; padding:11px 12px;
}
.form-field textarea{min-height:120px; resize:vertical;}
.form-field input:focus, .form-field textarea:focus{outline:none; border-color:var(--accent-deep);}
.month-grid{display:flex; flex-wrap:wrap; gap:8px 18px;}
.month-grid label{display:flex; align-items:center; gap:6px; font-size:16px; color:var(--ink-soft); margin-bottom:0; cursor:pointer;}
.hp-field{position:absolute; left:-9999px; opacity:0;}
.form-status{font-size:16px; margin-top:12px; display:none;}
.form-status.success{color:var(--accent-deep); display:block;}
.form-status.error{color:#a4433a; display:block;}

.map-frame{margin-top:10px; border-radius:2px; overflow:hidden; border:1px solid var(--stone-line);}
.map-frame iframe{width:100%; aspect-ratio:1 / 1; height:auto; border:0; display:block;}

@media (min-width: 900px){
  .horizon{height:520px;}
  .hero-copy{max-width:560px;}
  .hero-copy h1{font-size:66px;}
  .hero-copy .hero-subtitle{font-size:19px;}
  .gallery-grid{grid-template-columns:repeat(2, 1fr);}
  .gallery-cell{height:300px;}
  .home-grid .gallery-cell{height:320px;}
}

@media (min-width: 1300px){
  .horizon{height:600px;}
  .gallery-grid{grid-template-columns:repeat(3, 1fr);}
  .gallery-cell{height:325px;}
  .home-grid .gallery-cell{height:360px;}
}

@media (max-width: 640px){
  .wrap{padding:0 20px;}
  .band-inner{padding:26px 0;}
  nav{flex-wrap:wrap; padding:18px 0 4px;}
  .nav-toggle{display:flex;}
  .navlinks{display:none; flex-direction:column; align-items:stretch; gap:0; width:100%; font-size:17px; margin-top:14px; border-top:1px solid var(--stone-line);}
  .navlinks.open{display:flex;}
  .navlinks a{padding:14px 4px; border-bottom:1px solid var(--stone-line);}
  .navdropdown{padding-bottom:0; margin-bottom:0; border-bottom:1px solid var(--stone-line);}
  .navdropdown > a{border-bottom:none;}
  .navdropdown-menu{display:block; position:static; margin-top:0; padding:0 0 4px 16px; border:none; box-shadow:none; min-width:0;}
  .navdropdown-menu a{padding:10px 0; font-size:15px; border-bottom:none;}
  .horizon{height:280px;}
  .hero-copy{left:18px; bottom:18px; right:18px;}
  .hero-copy h1{font-size:38px;}
  .hero-copy .hero-subtitle{font-size:14px;}
  .intro{grid-template-columns:1fr; gap:16px;}
  .intro p.lede{font-size:22px; margin-bottom:0;}
  .intro p:not(.lede){font-size:19px;}
  .intro-address{align-items:center; margin-top:4px;}
  .contact-form{grid-template-columns:1fr;}
  .icon-grid{grid-template-columns:1fr; gap:28px;}
  .card-grid{grid-template-columns:1fr;}
  .gallery-grid{grid-template-columns:1fr; }
  .home-grid{gap:8px;}
  .home-grid .gallery-cell{height:160px;}
  .details{flex-direction:column; gap:10px;}
  .details span{border-right:none; padding-right:0; margin-right:0; padding-bottom:10px; border-bottom:1px solid var(--stone-line);}
  .details span:last-child{border-bottom:none; padding-bottom:0;}
  .accordion-item{padding:0 14px;}
  .accordion-trigger{font-size:19px;}
  .accordion-trigger .chevron{width:36px; height:36px;}
  .button-row{flex-direction:column;}
  .cta,.cta-ghost{width:100%; text-align:center; padding:15px 26px;}
  footer{flex-direction:column; align-items:flex-start;}
}
