:root{
  --ivory:#F8F5F0;
  --beige:#EFE6DA;
  --charcoal:#1F1F1F;
  --slate:#5F5F5F;
  --gold:#C8A46A;
  --gold-dark:#A9854A;
  --font-display:'League Spartan', sans-serif;
  --font-body:'Quicksand', sans-serif;
}

*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  font-family:var(--font-body);
  background:var(--ivory);
  color:var(--slate);
  line-height:1.6;
  overflow-x:hidden;
}
img{max-width:100%;display:block;}
a{text-decoration:none;color:inherit;}
h1,h2,h3{font-family:var(--font-display);color:var(--charcoal);font-weight:600;}
section{padding:7rem 6vw;}

.eyebrow{
  display:inline-block;
  font-size:.78rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--gold-dark);
  margin-bottom:1.1rem;
  font-weight:500;
}

/* ---------- Buttons ---------- */
.btn{
  display:inline-block;
  padding:.95rem 2.4rem;
  border-radius:2px;
  font-size:.85rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  font-weight:500;
  cursor:pointer;
  border:none;
  transition:background .35s ease, transform .25s ease;
}
.btn-gold{
  background:var(--gold);
  color:#fff;
}
.btn-gold:hover{
  background:var(--gold-dark);
  transform:translateY(-2px);
}
.btn-outline-gold{
  background:transparent;
  color:var(--gold-dark);
  border:1.5px solid var(--gold);
}
.btn-outline-gold:hover{
  background:var(--gold);
  color:#fff;
  transform:translateY(-2px);
}

/* ---------- Header ---------- */
.site-header{
  position:fixed;
  top:0;left:0;right:0;
  z-index:100;
  padding:1.2rem 6vw;
  background:transparent;
  transition:background .4s ease, box-shadow .4s ease, padding .4s ease;
}
.site-header.scrolled{
  background:rgba(248,245,240,.92);
  backdrop-filter:blur(8px);
  box-shadow:0 6px 24px rgba(31,31,31,.06);
  padding:.8rem 6vw;
}
.header-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
}
.brand-logo{height:42px;width:auto;}
.main-nav{display:flex;align-items:center;gap:2.6rem;}
.nav-link{
  font-size:.85rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--charcoal);
  position:relative;
  padding-bottom:4px;
}
.nav-link:not(.nav-cta)::after{
  content:'';
  position:absolute;left:0;bottom:0;
  width:0;height:1px;
  background:var(--gold);
  transition:width .3s ease;
}
.nav-link:not(.nav-cta):hover::after{width:100%;}
.nav-cta{
  background:var(--gold);
  color:#fff;
  padding:.55rem 1.4rem;
  border-radius:2px;
  transition:background .3s ease;
}
.nav-cta:hover{background:var(--gold-dark);}

.nav-toggle{
  display:none;
  flex-direction:column;
  justify-content:center;
  gap:5px;
  width:34px;height:34px;
  background:none;
  border:none;
  cursor:pointer;
  z-index:101;
}
.nav-toggle span{
  display:block;
  width:100%;
  height:2px;
  background:var(--charcoal);
  border-radius:2px;
  transition:transform .3s ease, opacity .3s ease, background .3s ease;
}
.site-header.scrolled .nav-toggle span{background:var(--charcoal);}
.nav-toggle.is-open span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.nav-toggle.is-open span:nth-child(2){opacity:0;}
.nav-toggle.is-open span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

/* ---------- Hero ---------- */
.hero{
  position:relative;
  min-height:100vh;
  display:flex;
  align-items:flex-end;
  padding-top:8rem;
  padding-bottom:6rem;
  overflow:hidden;
  isolation:isolate;
}
.hero-bg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center 18%;
  z-index:-2;
}
.hero-scrim{
  position:absolute;
  inset:0;
  z-index:-1;
  background:
    linear-gradient(0deg, rgba(20,16,10,.82) 0%, rgba(20,16,10,.6) 38%, rgba(20,16,10,.18) 68%, rgba(20,16,10,0) 85%),
    linear-gradient(100deg, rgba(20,16,10,.35) 0%, rgba(20,16,10,0) 45%);
}
.hero-inner{
  display:flex;
  width:100%;
  max-width:1400px;
  margin:0 auto;
}
.hero-copy{max-width:620px;}
.hero-copy .eyebrow{display:block;color:var(--gold);}
.hero-copy h1{
  font-size:clamp(2.4rem,4.2vw,3.6rem);
  line-height:1.12;
  margin-bottom:1.4rem;
  color:#fff;
  text-shadow:0 4px 20px rgba(0,0,0,.35);
}
.hero-copy p{
  max-width:460px;
  margin-bottom:1.8rem;
  font-size:1.02rem;
  color:#eae4d8;
  text-shadow:0 2px 12px rgba(0,0,0,.3);
}
.rating{
  display:flex;
  align-items:center;
  gap:.6rem;
  margin-bottom:2.2rem;
}
.stars{color:var(--gold);letter-spacing:.15em;font-size:1.1rem;}
.rating-value{font-weight:600;color:#fff;}
.rating-label{font-size:.85rem;color:#d9d0c0;}

/* ---------- Fade up ---------- */
.fade-up{opacity:0;transform:translateY(28px);transition:opacity .8s ease, transform .8s ease;}
.fade-up.visible{opacity:1;transform:translateY(0);}

/* ---------- Past Events Showcase ---------- */
.gallery{background:var(--beige);}
.section-head{text-align:center;max-width:640px;margin:0 auto 3.5rem;}
.section-head p{margin-top:.6rem;}

.events-showcase{
  max-width:520px;
  margin:0 auto;
}
.events-card{
  position:relative;
  aspect-ratio:4/5;
  border-radius:20px;
  overflow:hidden;
  background:#141410;
  box-shadow:0 25px 60px rgba(31,31,31,.22);
}
.events-track{
  display:flex;
  width:100%;
  height:100%;
  transition:transform .65s cubic-bezier(.65,0,.35,1);
  touch-action:pan-y;
}
.event-slide{
  position:relative;
  flex:0 0 100%;
  width:100%;
  height:100%;
  cursor:pointer;
}
.event-media{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  pointer-events:none;
}
.event-overlay{
  position:absolute;
  inset:0;
  background:linear-gradient(0deg, rgba(10,8,5,.85) 0%, rgba(10,8,5,.25) 45%, rgba(10,8,5,0) 65%);
  pointer-events:none;
}
.event-caption{
  position:absolute;
  left:0;right:0;bottom:0;
  padding:1.8rem 1.8rem 2rem;
  color:#fff;
  pointer-events:none;
}
.event-tag{
  display:inline-block;
  font-size:.72rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--gold);
  background:rgba(200,164,106,.16);
  border:1px solid rgba(200,164,106,.4);
  padding:.3rem .7rem;
  border-radius:2px;
  margin-bottom:.6rem;
}
.event-caption h3{color:#fff;font-size:1.5rem;margin-bottom:.3rem;}
.event-caption p{color:#d9d0c0;font-size:.9rem;}

.event-play-btn{
  position:absolute;
  top:50%;left:50%;
  transform:translate(-50%,-50%);
  width:66px;height:66px;
  border-radius:50%;
  border:1.5px solid rgba(255,255,255,.7);
  background:rgba(20,16,10,.4);
  backdrop-filter:blur(2px);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;
  z-index:2;
  transition:background .3s ease, border-color .3s ease, transform .3s ease;
}
.event-play-btn svg{width:24px;height:24px;fill:#fff;margin-left:3px;}
.event-play-btn:hover{
  background:var(--gold);
  border-color:var(--gold);
  transform:translate(-50%,-50%) scale(1.08);
}

/* Video modal */
.video-modal{
  position:fixed;
  inset:0;
  background:rgba(10,8,5,.94);
  display:none;
  align-items:center;
  justify-content:center;
  z-index:1000;
  padding:3rem 1.5rem;
}
.video-modal.is-open{display:flex;}
.video-modal-inner{
  max-width:520px;
  width:100%;
  max-height:88vh;
}
.video-modal-player{
  width:100%;
  max-height:88vh;
  border-radius:16px;
  box-shadow:0 30px 70px rgba(0,0,0,.5);
  background:#000;
}
.video-modal-close{
  position:absolute;
  top:1.6rem;right:1.8rem;
  background:none;border:none;
  color:#fff;font-size:2.4rem;
  cursor:pointer;
  line-height:1;
  z-index:2;
}

.events-nav{
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  width:38px;height:38px;
  border-radius:50%;
  border:1px solid rgba(255,255,255,.4);
  background:rgba(20,16,10,.35);
  color:#fff;
  font-size:.85rem;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;
  transition:background .3s ease, border-color .3s ease;
  z-index:2;
}
.events-nav:hover{background:var(--gold);border-color:var(--gold);}
.events-nav-prev{left:1rem;}
.events-nav-next{right:1rem;}

.events-dots{
  display:flex;
  justify-content:center;
  gap:.6rem;
  margin-top:1.6rem;
}
.events-dot{
  width:9px;height:9px;
  border-radius:50%;
  background:rgba(31,31,31,.2);
  border:none;
  cursor:pointer;
  padding:0;
  transition:background .3s ease, transform .3s ease;
}
.events-dot.is-active{
  background:var(--gold);
  transform:scale(1.25);
}
.events-view-all{
  text-align:center;
  margin-top:2.2rem;
}

/* ---------- Reviews ---------- */
.reviews{background:var(--ivory);}
.reviews-view-all{
  text-align:center;
  margin:-1.5rem auto 3rem;
}
.reviews-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1.8rem;
  max-width:1200px;
  margin:0 auto 3.5rem;
}
.review-card{
  background:#fff;
  border:1px solid rgba(200,164,106,.2);
  border-radius:16px;
  padding:2rem 1.8rem;
  box-shadow:0 14px 32px rgba(31,31,31,.06);
}
.review-stars{color:var(--gold);letter-spacing:.12em;margin-bottom:1rem;}
.review-text{
  font-size:.95rem;
  color:var(--charcoal);
  margin-bottom:1.2rem;
  line-height:1.65;
}
.review-name{
  font-size:.85rem;
  color:var(--gold-dark);
  font-weight:600;
}
.review-actions{
  display:flex;
  gap:.7rem;
  margin-top:1.1rem;
  padding-top:1rem;
  border-top:1px solid rgba(31,31,31,.08);
}
.review-action-btn{
  background:none;
  border:none;
  padding:0;
  font-family:var(--font-body);
  font-size:.8rem;
  font-weight:600;
  letter-spacing:.03em;
  color:var(--slate);
  cursor:pointer;
  transition:color .2s ease;
}
.review-action-btn:hover{color:var(--gold-dark);}
.review-delete-btn:hover{color:#b3413a;}
.review-edit-form select.review-edit-rating{
  width:100%;
  margin-bottom:.8rem;
}
.review-edit-form textarea.review-edit-text{
  width:100%;
  resize:vertical;
  margin-bottom:1rem;
}
.review-edit-actions{
  display:flex;
  gap:.7rem;
}
.review-edit-actions .btn{
  flex:1;
  padding:.6rem 1rem;
  font-size:.82rem;
}
.reviews-empty{
  grid-column:1/-1;
  text-align:center;
  color:var(--slate);
  font-size:.95rem;
  padding:2rem 0;
}
.review-form-wrap{max-width:700px;}
.review-form-title{
  font-family:var(--font-display);
  color:var(--charcoal);
  font-size:1.5rem;
  margin-bottom:1.6rem;
  text-align:center;
}

/* ---------- Booking ---------- */
.booking{background:var(--ivory);}
.booking-card{
  max-width:840px;
  margin:0 auto;
  background:rgba(255,255,255,.6);
  backdrop-filter:blur(14px);
  border:1px solid rgba(200,164,106,.25);
  border-radius:20px;
  padding:3rem;
  box-shadow:0 25px 60px rgba(31,31,31,.08);
}
.form-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:1.6rem;
  margin-bottom:1.6rem;
}
.field{display:flex;flex-direction:column;gap:.5rem;}
.field-full{grid-column:1/-1;}
.field label{
  font-size:.8rem;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--charcoal);
  font-weight:500;
}
.optional{text-transform:none;color:var(--slate);font-weight:400;letter-spacing:0;}
.field input,.field select,.field textarea,.review-edit-form select,.review-edit-form textarea{
  font-family:var(--font-body);
  padding:.85rem 1rem;
  border:1px solid rgba(31,31,31,.15);
  border-radius:8px;
  background:rgba(255,255,255,.7);
  font-size:.95rem;
  color:var(--charcoal);
  transition:border .25s ease, box-shadow .25s ease;
}
.field input:focus,.field select:focus,.field textarea:focus,.review-edit-form select:focus,.review-edit-form textarea:focus{
  outline:none;
  border-color:var(--gold);
  box-shadow:0 0 0 3px rgba(200,164,106,.18);
}
.field textarea{resize:vertical;}
.budget-input{
  display:flex;align-items:center;
  border:1px solid rgba(31,31,31,.15);
  border-radius:8px;
  background:rgba(255,255,255,.7);
  overflow:hidden;
}
.currency-symbol{
  padding:0 .9rem;
  font-weight:600;
  color:var(--gold-dark);
  border-right:1px solid rgba(31,31,31,.12);
}
.budget-input input{border:none;background:transparent;flex:1;}
.budget-input input:focus{box-shadow:none;}
.btn-submit{width:100%;margin-top:.6rem;}
.form-success{
  display:none;
  margin-top:1.2rem;
  text-align:center;
  color:var(--gold-dark);
  font-size:.9rem;
}
.form-success.show{display:block;}
.form-success.error{color:#b3413a;}

/* ---------- Footer ---------- */
.site-footer{
  background:var(--charcoal);
  color:#cfcfcf;
  text-align:center;
  padding:3.5rem 6vw 2.5rem;
}
.footer-logo{
  height:44px;
  margin:0 auto 1.2rem;
  filter:brightness(0) invert(1);
}
.footer-copy{font-size:.85rem;margin-bottom:1.4rem;color:#a8a8a8;}
.social-links{display:flex;justify-content:center;gap:1.4rem;}
.social-icon{
  width:38px;height:38px;
  border:1px solid rgba(255,255,255,.2);
  border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  transition:background .3s ease, border-color .3s ease;
}
.social-icon svg{width:16px;height:16px;fill:#e8e0d0;}
.social-icon:hover{background:var(--gold);border-color:var(--gold);}

@media (min-width:1024px){
  .hero{padding-bottom:9.5rem;}

  .events-showcase{max-width:920px;}
  .events-card{
    background:none;
    box-shadow:none;
    border-radius:0;
    aspect-ratio:auto;
  }
  .events-track{
    display:grid;
    grid-template-columns:1fr 1fr;
    grid-auto-rows:auto;
    gap:1.5rem;
    height:auto;
    transform:none !important;
  }
  .event-slide{
    flex:none;
    width:100%;
    aspect-ratio:4/3;
    border-radius:16px;
    overflow:hidden;
    box-shadow:0 18px 40px rgba(31,31,31,.16);
    transition:transform .4s ease, box-shadow .4s ease;
  }
  .event-slide:nth-child(5){
    grid-column:1/-1;
    aspect-ratio:16/7;
  }
  .event-slide:hover{
    transform:translateY(-4px);
    box-shadow:0 24px 50px rgba(31,31,31,.22);
  }
  .events-nav,.events-dots{display:none;}
}
/* ---------- Responsive ---------- */
@media (max-width:768px){
  .nav-toggle{display:flex;}
  .main-nav{
    position:fixed;
    top:0;right:0;
    height:100vh;
    width:min(78vw,320px);
    background:var(--ivory);
    flex-direction:column;
    align-items:flex-start;
    justify-content:flex-start;
    gap:0;
    padding:6.5rem 2rem 2rem;
    transform:translateX(100%);
    transition:transform .4s ease;
    box-shadow:-10px 0 40px rgba(31,31,31,.15);
  }
  .main-nav.is-open{transform:translateX(0);}
  .main-nav .nav-link{
    width:100%;
    padding:1rem 0;
    font-size:.95rem;
    border-bottom:1px solid rgba(31,31,31,.08);
  }
  .main-nav .nav-cta{
    margin-top:1.4rem;
    text-align:center;
    border-bottom:none;
  }
  .nav-backdrop{
    display:none;
    position:fixed;
    inset:0;
    background:rgba(10,8,5,.45);
    z-index:99;
  }
  .nav-backdrop.is-open{display:block;}
}

@media (max-width:900px){
  section{padding:5rem 6vw;}
  .hero{align-items:center;padding-top:6.5rem;padding-bottom:3rem;}
  .hero-copy{max-width:100%;text-align:center;margin:0 auto;}
  .hero-copy p{margin-left:auto;margin-right:auto;margin-bottom:1.4rem;}
  .hero-copy h1{margin-bottom:1.1rem;}
  .rating{justify-content:center;margin-bottom:1.6rem;}
  .events-showcase{max-width:420px;}
  .reviews-grid{grid-template-columns:1fr;max-width:480px;}
  .form-row{grid-template-columns:1fr;}
  .booking-card{padding:2rem 1.4rem;}
}
@media (max-width:560px){
  .hero{padding-top:6rem;}
  .hero-copy h1{font-size:1.9rem;}
  .hero-copy p{font-size:.95rem;}
  .events-showcase{max-width:100%;}
  .events-card{aspect-ratio:3/4;}
}

@media (prefers-reduced-motion:reduce){
  .fade-up{transition:none;opacity:1;transform:none;}
}
