:root{
  --ink:#2B1420;
  --wine:#5C2338;
  --wine-deep:#3A1424;
  --amber:#C08A3E;
  --sand:#E7DCC8;
  --paper:#FAF5EC;
  --taupe:#8A7A6A;

  --display:"Fraunces",Georgia,serif;
  --body:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;

  --pad:clamp(1.25rem,5vw,3rem);
  --measure:64rem;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--body);
  font-size:clamp(1rem,.96rem + .2vw,1.075rem);
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block}
a{color:inherit}
.wrap{width:100%;max-width:var(--measure);margin-inline:auto;padding-inline:var(--pad)}

.eyebrow{
  font-size:.72rem;font-weight:600;letter-spacing:.22em;
  text-transform:uppercase;color:var(--taupe);margin:0 0 1.1rem;
}

/* ---------- header + nav ---------- */
.site-head{
  position:relative;z-index:5;
  background:var(--wine-deep);
  border-bottom:1px solid rgba(224,178,106,.18);
}
.site-head .wrap{
  display:flex;align-items:center;justify-content:space-between;
  gap:1rem;flex-wrap:wrap;padding-block:.9rem;
}
.brand{
  font-family:var(--display);
  font-variation-settings:"SOFT" 50,"opsz" 40;
  font-size:1.35rem;letter-spacing:.14em;
  color:#F6EEDF;text-decoration:none;
}
.nav{display:flex;gap:1.35rem;flex-wrap:wrap}
.nav a{
  font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;
  font-weight:500;color:rgba(231,220,200,.75);text-decoration:none;
  padding-block:.25rem;border-bottom:1px solid transparent;
}
.nav a:hover{color:#F6EEDF}
.nav a[aria-current="page"]{color:var(--amber);border-bottom-color:var(--amber)}
.nav a:focus-visible,.brand:focus-visible{outline:2px solid var(--amber);outline-offset:3px}

/* ---------- hero (home) ---------- */
.hero{
  position:relative;overflow:hidden;isolation:isolate;
  background:var(--wine-deep);color:var(--sand);
  padding:clamp(4rem,13vw,7.5rem) 0 clamp(3.5rem,11vw,6rem);
}
.hero::before{
  content:"";position:absolute;inset:-10% 0 auto;height:120%;z-index:-2;
  background:
    radial-gradient(60% 42% at 50% 6%, rgba(224,178,106,.34), rgba(224,178,106,0) 70%),
    radial-gradient(120% 80% at 50% 120%, rgba(92,35,56,.9), rgba(58,20,36,0) 60%);
}
.hero.has-photo::before{
  background:
    linear-gradient(rgba(58,20,36,.72),rgba(58,20,36,.86)),
    var(--hero-photo) center/cover no-repeat;
}
.ripples{
  position:absolute;left:50%;bottom:-14rem;
  width:min(120vw,60rem);aspect-ratio:1;
  transform:translateX(-50%);z-index:-1;pointer-events:none;
}
.ripples span{
  position:absolute;inset:0;border-radius:50%;
  border:1px solid rgba(224,178,106,.32);
  transform:scale(.28);opacity:0;
  animation:well 11s ease-out infinite;
}
.ripples span:nth-child(2){animation-delay:3.6s}
.ripples span:nth-child(3){animation-delay:7.2s}
@keyframes well{
  0%{transform:scale(.22);opacity:0}
  14%{opacity:.75}
  100%{transform:scale(1);opacity:0}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .ripples span{animation:none;opacity:.3;transform:scale(.6)}
  .ripples span:nth-child(2){transform:scale(.8)}
  .ripples span:nth-child(3){transform:scale(1)}
}
.mark{
  font-family:var(--display);
  font-variation-settings:"SOFT" 50,"opsz" 120;
  font-weight:400;font-size:clamp(2.9rem,12vw,5.5rem);
  line-height:.95;letter-spacing:.06em;margin:0;color:#F6EEDF;
}
.mark-rule{width:3.5rem;height:1px;background:rgba(224,178,106,.6);margin:1.6rem 0 1.4rem}
.tagline{
  font-family:var(--display);
  font-variation-settings:"SOFT" 50,"opsz" 40;
  font-weight:300;font-style:italic;
  font-size:clamp(1.35rem,4.4vw,2rem);line-height:1.3;
  margin:0 0 .5rem;color:#EFE2CC;
}
.hero .lede{color:rgba(231,220,200,.78);max-width:34rem;margin:0 0 2.4rem}
.hero .eyebrow{color:rgba(224,178,106,.85)}
.hero .meta{margin:1.4rem 0 0;font-size:.9rem;color:rgba(231,220,200,.62)}

/* ---------- inner page banner ---------- */
.banner{
  position:relative;overflow:hidden;isolation:isolate;
  background:var(--wine-deep);color:var(--sand);
  padding:clamp(3rem,9vw,5rem) 0;
}
.banner::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:radial-gradient(70% 60% at 50% 0%, rgba(224,178,106,.22), rgba(224,178,106,0) 72%);
}
.banner .eyebrow{color:rgba(224,178,106,.85)}
.banner h1{
  font-family:var(--display);
  font-variation-settings:"SOFT" 50,"opsz" 90;
  font-weight:400;font-size:clamp(2.1rem,7vw,3.4rem);
  line-height:1.1;margin:0;color:#F6EEDF;
}
.banner p.sub{margin:.9rem 0 0;color:rgba(231,220,200,.78);max-width:38rem}

/* ---------- buttons ---------- */
.cta{
  display:inline-block;font-weight:600;font-size:.9rem;
  letter-spacing:.1em;text-transform:uppercase;text-decoration:none;
  padding:1rem 2rem;border-radius:2rem;
  background:var(--amber);color:#2B1420;
  transition:background .25s ease,transform .25s ease;
}
.cta:hover{background:#D2A059;transform:translateY(-1px)}
.cta:focus-visible{outline:2px solid #F6EEDF;outline-offset:3px}
.cta--quiet{background:transparent;color:var(--wine);border:1px solid rgba(92,35,56,.45)}
.cta--quiet:hover{background:rgba(92,35,56,.07)}

/* ---------- bands ---------- */
.band{padding:clamp(3.5rem,10vw,6rem) 0}
.band--sand{background:var(--sand)}
.band-title{
  font-family:var(--display);
  font-variation-settings:"SOFT" 50,"opsz" 90;
  font-weight:400;font-size:clamp(1.9rem,6vw,2.9rem);
  line-height:1.15;margin:0 0 .6rem;color:var(--wine);
}
.band-note{color:var(--taupe);max-width:38rem;margin:0 0 2.6rem}

/* ---------- service list ---------- */
.list{list-style:none;margin:0;padding:0}
.item{
  display:grid;grid-template-columns:2.4rem 1fr;gap:1.1rem;
  padding:1.9rem 0;border-top:1px solid rgba(138,122,106,.28);
}
.item:last-child{border-bottom:1px solid rgba(138,122,106,.28)}
.ring{
  width:2.4rem;height:2.4rem;border-radius:50%;
  border:1px solid var(--amber);position:relative;margin-top:.35rem;
}
.ring::after{
  content:"";position:absolute;inset:.62rem;border-radius:50%;
  background:var(--amber);opacity:.28;
}
.item h3{
  font-family:var(--display);
  font-variation-settings:"SOFT" 50,"opsz" 40;
  font-weight:500;font-size:1.28rem;line-height:1.25;
  margin:0 0 .3rem;color:var(--wine);
}
.dur{
  font-size:.86rem;letter-spacing:.06em;color:var(--taupe);
  margin:0 0 .7rem;font-variant-numeric:tabular-nums;
}
.dur b{color:var(--ink);font-weight:600}
.item p.desc{margin:0;max-width:44rem;color:#4A3542}

/* ---------- add-ons ---------- */
.addons{
  list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));
  gap:1px;background:rgba(92,35,56,.16);border:1px solid rgba(92,35,56,.16);
}
.addons li{background:var(--sand);padding:1.4rem 1.3rem}
.band:not(.band--sand) .addons li{background:#FDFAF3}
.addons strong{
  display:block;font-family:var(--display);
  font-variation-settings:"SOFT" 50,"opsz" 30;
  font-weight:500;font-size:1.05rem;color:var(--wine);margin-bottom:.2rem;
}
.addons span{font-size:.86rem;color:var(--taupe);font-variant-numeric:tabular-nums}

/* ---------- packages ---------- */
.packs{display:grid;grid-template-columns:repeat(auto-fit,minmax(17rem,1fr));gap:1.25rem}
.pack{
  border:1px solid rgba(92,35,56,.2);border-radius:.4rem;
  padding:1.9rem 1.6rem;background:#FDFAF3;
}
.pack h3{
  font-family:var(--display);
  font-variation-settings:"SOFT" 50,"opsz" 40;
  font-weight:500;font-size:1.35rem;margin:0 0 .3rem;color:var(--wine);
}
.pack .dur{margin-bottom:.9rem}
.pack p{margin:0;color:#4A3542;font-size:.95rem}

/* ---------- photo band ---------- */
.photoband{display:none;margin:0}
.photoband.on{display:block}
.photoband img{width:100%;height:clamp(16rem,45vw,28rem);object-fit:cover}

/* ---------- prose (about / policy) ---------- */
.prose{max-width:44rem}
.prose p{margin:0 0 1.15rem;color:#4A3542}
.prose p:last-child{margin-bottom:0}
.prose .pull{
  font-family:var(--display);
  font-variation-settings:"SOFT" 50,"opsz" 40;
  font-style:italic;font-weight:300;font-size:clamp(1.2rem,3.6vw,1.6rem);
  line-height:1.4;color:var(--wine);
  border-left:2px solid var(--amber);padding-left:1.2rem;margin:0 0 2rem;
}
.policy-block{
  padding:1.9rem 0;border-top:1px solid rgba(138,122,106,.28);
}
.policy-block:last-child{border-bottom:1px solid rgba(138,122,106,.28)}
.policy-block h3{
  font-family:var(--display);
  font-variation-settings:"SOFT" 50,"opsz" 40;
  font-weight:500;font-size:1.2rem;margin:0 0 .7rem;color:var(--wine);
}
.policy-block ul{margin:0;padding-left:1.1rem;color:#4A3542}
.policy-block li{margin-bottom:.45rem}
.policy-block li:last-child{margin-bottom:0}

/* ---------- visit / contact columns ---------- */
.visit{background:var(--wine);color:var(--sand)}
.visit .band-title{color:#F6EEDF}
.visit .eyebrow{color:rgba(224,178,106,.85)}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:2rem;margin-top:2rem}
.cols h4{
  font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;
  font-weight:600;color:rgba(224,178,106,.85);margin:0 0 .6rem;
}
.cols p{margin:0;color:rgba(231,220,200,.85)}
.cols small{color:rgba(231,220,200,.55)}
.cols a{color:#F6EEDF}

/* ---------- footer ---------- */
.site-foot{
  background:var(--wine-deep);color:rgba(231,220,200,.6);
  padding:2.5rem 0;font-size:.84rem;
}
.site-foot p{margin:0 0 .4rem}
.site-foot a{color:rgba(231,220,200,.8)}
.foot-nav{display:flex;gap:1.1rem;flex-wrap:wrap;margin-bottom:.9rem}
.foot-nav a{text-decoration:none;letter-spacing:.1em;text-transform:uppercase;font-size:.72rem}
.foot-nav a:hover{color:#F6EEDF}

/* ---------- booking page ---------- */
.step{padding:clamp(2rem,7vw,3rem) 0;border-top:1px solid rgba(138,122,106,.28)}
.step:first-of-type{border-top:0}
.stepnum{
  font-size:.72rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;
  color:var(--amber);margin:0 0 .5rem;
}
.chips{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.2rem}
.chip{
  font-family:var(--body);font-size:.95rem;font-weight:500;text-align:left;
  background:#FDFAF3;color:var(--wine);cursor:pointer;
  border:1px solid rgba(92,35,56,.25);border-radius:.4rem;
  padding:.8rem 1rem;line-height:1.3;
}
.chip span{display:block;font-size:.78rem;font-weight:400;color:var(--taupe);margin-top:.15rem}
.chip:hover{background:#fff;border-color:var(--wine)}
.chip.sel{background:var(--wine);color:#F6EEDF;border-color:var(--wine)}
.chip.sel span{color:rgba(246,238,223,.75)}
.chip--small{padding:.6rem .85rem;font-size:.88rem}
.booknote{margin:1rem 0 0;font-size:.9rem;color:var(--taupe)}
.booknote.bad{color:#8E3A24}
.bookfields{max-width:26rem;margin-top:1.2rem}
.bookfields label{
  display:block;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;
  font-weight:600;color:var(--taupe);margin:0 0 .35rem;
}
.bookfields input{
  width:100%;font-family:var(--body);font-size:1rem;color:var(--ink);
  padding:.75rem .85rem;margin-bottom:1rem;background:#fff;
  border:1px solid rgba(92,35,56,.25);border-radius:.3rem;
}
.bookfields input:focus{outline:2px solid var(--amber);outline-offset:1px}
.summary{
  background:var(--sand);border-radius:.4rem;padding:1.1rem 1.2rem;
  margin:1.2rem 0;color:var(--ink);line-height:1.5;
}
.summary strong{color:var(--wine)}
