:root{
  --bg:#fbf8f9;
  --text:#221c1f;
  --muted:#74656c;
  --card:#fff;
  --accent:#8e6f7d;
  --line:#e8dde2;
}

*{box-sizing:border-box}

html{scroll-behavior:smooth}

body{
  margin:0;
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  background:var(--bg);
  color:var(--text);
  line-height:1.6;
}

body.menu-open{overflow:hidden}

a{color:inherit}

.hero{
  min-height:88vh;
  padding:28px max(5vw,24px);
}

nav{
  display:flex;
  justify-content:space-between;
  align-items:center;
  max-width:1180px;
  margin:auto;
}

.brand{
  font-family:Georgia,serif;
  font-size:28px;
}

/* Hamburger */

.menu-button{
  width:52px;
  height:52px;
  border:1px solid var(--accent);
  border-radius:50%;
  background:transparent;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:5px;
  cursor:pointer;
  color:var(--text);
}

.menu-button span{
  display:block;
  width:21px;
  height:1.5px;
  background:currentColor;
  border-radius:10px;
}

/* Slide-out menu */

.menu-backdrop{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.45);
  opacity:0;
  visibility:hidden;
  transition:opacity .3s ease,visibility .3s ease;
  z-index:999;
}

.menu-backdrop.open{
  opacity:1;
  visibility:visible;
}

.site-menu{
  position:fixed;
  top:0;
  right:0;
  width:min(420px,88vw);
  height:100vh;
  background:var(--card);
  border-left:1px solid var(--line);
  padding:32px;
  transform:translateX(100%);
  transition:transform .35s ease;
  z-index:1000;
  box-shadow:-20px 0 50px rgba(0,0,0,.12);
}

.site-menu.open{
  transform:translateX(0);
}

.menu-header{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding-bottom:28px;
  border-bottom:1px solid var(--line);
}

.menu-title{
  font-family:Georgia,serif;
  font-size:25px;
}

.menu-close{
  border:0;
  background:transparent;
  color:var(--text);
  font-size:38px;
  line-height:1;
  cursor:pointer;
  padding:0 4px;
}

.menu-links{
  display:flex;
  flex-direction:column;
  padding-top:26px;
}

.menu-links a{
  font-family:Georgia,serif;
  font-size:30px;
  line-height:1.2;
  padding:17px 4px;
  text-decoration:none;
  border-bottom:1px solid var(--line);
  transition:opacity .2s ease;
}

.menu-links a:hover{opacity:.6}

/* Hero */

.hero-grid{
  max-width:1180px;
  margin:80px auto 0;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:54px;
  align-items:center;
}

.hero h1{
  font-family:Georgia,serif;
  font-size:clamp(48px,7vw,92px);
  line-height:1.02;
  font-weight:500;
  margin:8px 0 28px;
}

.hero img{
  width:100%;
  aspect-ratio:4/5;
  object-fit:cover;
  border-radius:28px;
}

.eyebrow{
  letter-spacing:.2em;
  font-size:12px;
  color:var(--muted);
}

.cta{
  display:inline-block;
  border:1px solid var(--accent);
  padding:12px 20px;
  border-radius:999px;
  text-decoration:none;
  background:var(--accent);
  color:#fff;
}

/* General sections */

.section{
  max-width:1100px;
  margin:auto;
  padding:90px 24px;
}

.section h2{
  font-family:Georgia,serif;
  font-size:clamp(36px,5vw,60px);
  font-weight:500;
  margin:4px 0 20px;
}

.section>p:not(.eyebrow){
  max-width:720px;
  font-size:20px;
  color:var(--muted);
}

/* Services */

.services-list{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:18px;
  margin-top:34px;
}

.service-card{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:22px;
  padding:30px;
}

.service-card h3{
  font-family:Georgia,serif;
  font-size:28px;
  font-weight:500;
  margin:0 0 10px;
}

.service-card p{
  color:var(--muted);
  margin:0 0 22px;
}

.service-meta{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
  padding-top:18px;
  border-top:1px solid var(--line);
}

.service-meta span{color:var(--muted)}

.service-meta strong{
  font-family:Georgia,serif;
  font-size:20px;
  font-weight:500;
}

/* Restrictions */

.restrictions-list{
  max-width:760px;
  margin-top:25px;
}

.restrictions-list ul{
  margin:0;
  padding:0;
  list-style:none;
}

.restrictions-list li{
  padding:16px 0;
  border-bottom:1px solid var(--line);
  font-size:18px;
}

.restrictions-list li::before{
  content:"—";
  color:var(--accent);
  margin-right:12px;
}

/* Socials */

.social-links{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  margin-top:28px;
}

.social-links a{
  display:inline-block;
  border:1px solid var(--accent);
  border-radius:999px;
  padding:11px 20px;
  text-decoration:none;
  transition:background .2s ease,color .2s ease;
}

.social-links a:hover{
  background:var(--accent);
  color:#fff;
}

/* Gallery */

.gallery{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:18px;
}

.gallery img{
  width:100%;
  aspect-ratio:4/5;
  object-fit:cover;
  border-radius:18px;
}

/* Testimonials */

.testimonials{text-align:center}

.testimonial-wrap{
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:22px;
  align-items:center;
  margin-top:30px;
}

.testimonial-wrap button{
  border:0;
  background:transparent;
  color:var(--text);
  font-size:46px;
  cursor:pointer;
}

.testimonial-card{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:24px;
  padding:42px;
  max-width:760px;
  margin:auto;
  min-height:220px;
  display:flex;
  flex-direction:column;
  justify-content:center;
}

.testimonial-card p{
  font-family:Georgia,serif;
  font-size:26px;
}

.testimonial-card img{
  max-height:360px;
  max-width:100%;
  object-fit:contain;
  border-radius:14px;
}

.testimonial-card span{color:var(--muted)}

/* Inquiry */

.inquiry form{
  max-width:780px;
  margin-top:30px;
}

.form-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:16px;
}

label{
  display:grid;
  gap:7px;
  margin-bottom:16px;
  font-size:14px;
  color:var(--muted);
}

input,
textarea{
  width:100%;
  padding:14px;
  border-radius:12px;
  border:1px solid var(--line);
  background:var(--card);
  font:inherit;
  color:var(--text);
}

.hidden{display:none}

/* Footer */

footer{
  max-width:1100px;
  margin:auto;
  padding:30px 24px 50px;
  display:flex;
  justify-content:space-between;
  color:var(--muted);
  border-top:1px solid var(--line);
}

/* Themes */

/* Themes */

body.theme-classic{
  --bg:#fbf8f9;
  --text:#221c1f;
  --muted:#74656c;
  --card:#ffffff;
  --line:#e8dde2;
  --accent:#8e6f7d;
}

body.theme-rose{
  --bg:#fff7f8;
  --text:#2b2024;
  --muted:#806a72;
  --card:#ffffff;
  --line:#eddde2;
  --accent:#a85b70;
}

body.theme-sage{
  --bg:#f7faf6;
  --text:#20261f;
  --muted:#697267;
  --card:#ffffff;
  --line:#dde5da;
  --accent:#6e7f69;
}

body.theme-midnight{
  --bg:#161417;
  --text:#f7f3f5;
  --muted:#c2b9be;
  --card:#211e22;
  --line:#3a3438;
  --accent:#b994a6;
}

body.theme-sand{
  --bg:#faf6ef;
  --text:#2c251f;
  --muted:#7c6e62;
  --card:#fffdf9;
  --line:#e7ddd0;
  --accent:#9a795f;
}

/* Deep wine red + soft cream */
body.theme-burgundy{
  --bg:#241316;
  --text:#f8eeee;
  --muted:#cfb8bc;
  --card:#321a1f;
  --line:#513039;
  --accent:#a85f6b;
}

/* Warm luxury neutral */
body.theme-champagne{
  --bg:#f7f1e7;
  --text:#302820;
  --muted:#7e7163;
  --card:#fffaf1;
  --line:#e4d6c1;
  --accent:#a47e4f;
}

/* Dark warm brown */
body.theme-espresso{
  --bg:#1c1715;
  --text:#f5eee9;
  --muted:#c4b5ac;
  --card:#29211e;
  --line:#463a34;
  --accent:#b18468;
}

/* Deep elegant purple */
body.theme-plum{
  --bg:#21161f;
  --text:#f7eff6;
  --muted:#c8b5c4;
  --card:#30212e;
  --line:#4b3748;
  --accent:#a9759d;
}

/* Dramatic black + muted gold */
body.theme-blackgold{
  --bg:#0d0d0d;
  --text:#f6f1e7;
  --muted:#bbb2a2;
  --card:#181818;
  --line:#34302a;
  --accent:#b99a5f;
}

/* Bright editorial cream */
body.theme-ivory{
  --bg:#fffdf6;
  --text:#292621;
  --muted:#777066;
  --card:#ffffff;
  --line:#e8e1d4;
  --accent:#8f7658;
}

/* Soft coffee neutral */
body.theme-mocha{
  --bg:#eee5dd;
  --text:#302721;
  --muted:#75675d;
  --card:#f8f2ed;
  --line:#d9c9bd;
  --accent:#8b6653;
}

/* Mobile */

@media(max-width:780px){

  .hero{
    padding:22px 20px;
  }

  .brand{font-size:25px}

  .menu-button{
    width:48px;
    height:48px;
  }

  .site-menu{
    padding:26px 24px;
  }

  .menu-links a{
    font-size:27px;
    padding:15px 3px;
  }

  .hero-grid,
  .form-grid,
  .services-list{
    grid-template-columns:1fr;
  }

  .hero-grid{
    margin-top:45px;
    gap:38px;
  }

  .gallery{
    grid-template-columns:1fr 1fr;
  }

  .section{
    padding:65px 20px;
  }

  .service-meta{
    align-items:flex-start;
  }
}

@media(max-width:480px){

  .gallery{
    grid-template-columns:1fr;
  }

  .testimonial-wrap{
    grid-template-columns:36px 1fr 36px;
    gap:6px;
  }

  .testimonial-card{
    padding:26px 18px;
  }

  .testimonial-card p{
    font-size:22px;
  }
}
/* =========================================================
   Final feature additions
   Availability, FAQ, gallery lightbox and thank-you page
   ========================================================= */

/* Availability */

.availability-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  margin-top: 28px;
}

.availability-card {
  padding: 24px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--card);
}

.availability-card h3 {
  margin: 0 0 8px;
  font-size: 1.15rem;
}

.availability-dates {
  display: block;
  margin-bottom: 10px;
  color: var(--accent);
}

.availability-card p {
  margin: 0;
  color: var(--muted);
  line-height: 1.7;
}


/* FAQ */

.faq-list {
  margin-top: 28px;
  border-top: 1px solid var(--line);
}

.faq-item {
  border-bottom: 1px solid var(--line);
}

.faq-item summary {
  position: relative;
  padding: 20px 42px 20px 0;
  cursor: pointer;
  font-weight: 600;
  list-style: none;
}

.faq-item summary::-webkit-details-marker {
  display: none;
}

.faq-item summary::after {
  content: "+";
  position: absolute;
  right: 4px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--accent);
  font-size: 1.5rem;
  font-weight: 400;
}

.faq-item[open] summary::after {
  content: "−";
}

.faq-item p {
  margin: 0;
  padding: 0 42px 20px 0;
  color: var(--muted);
  line-height: 1.7;
}


/* Gallery lightbox */

.gallery img {
  cursor: zoom-in;
}

body.lightbox-open {
  overflow: hidden;
}

.lightbox {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 60px 80px;
  background: rgba(0, 0, 0, 0.92);
}

.lightbox.open {
  display: flex;
}

.lightbox img {
  display: block;
  max-width: min(1100px, 88vw);
  max-height: 86vh;
  object-fit: contain;
  border-radius: 10px;
  box-shadow: 0 24px 70px rgba(0, 0, 0, 0.35);
}

.lightbox-close,
.lightbox-nav {
  position: absolute;
  border: 0;
  background: transparent;
  color: #fff;
  cursor: pointer;
  line-height: 1;
}

.lightbox-close {
  top: 18px;
  right: 24px;
  padding: 8px;
  font-size: 2.4rem;
}

.lightbox-nav {
  top: 50%;
  transform: translateY(-50%);
  padding: 16px;
  font-size: 3rem;
}

.lightbox-prev {
  left: 18px;
}

.lightbox-next {
  right: 18px;
}


/* Thank-you page */

.thank-you-page {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 30px;
  background: var(--bg);
  color: var(--text);
}

.thank-you-card {
  width: min(620px, 100%);
  padding: 48px;
  border: 1px solid var(--line);
  border-radius: 24px;
  background: var(--card);
  text-align: center;
}

.thank-you-card .eyebrow {
  margin-bottom: 12px;
}

.thank-you-card h1 {
  margin: 0 0 16px;
  font-size: clamp(2rem, 6vw, 3.5rem);
}

.thank-you-card p {
  margin: 0 auto 28px;
  max-width: 480px;
  color: var(--muted);
  line-height: 1.7;
}


/* Mobile */

@media (max-width: 700px) {
  .availability-list {
    grid-template-columns: 1fr;
  }

  .availability-card {
    padding: 20px;
  }

  .lightbox {
    padding: 58px 16px 28px;
  }

  .lightbox img {
    max-width: 94vw;
    max-height: 78vh;
  }

  .lightbox-nav {
    top: auto;
    bottom: 18px;
    transform: none;
    font-size: 2.5rem;
  }

  .lightbox-prev {
    left: 24px;
  }

  .lightbox-next {
    right: 24px;
  }

  .thank-you-card {
    padding: 34px 22px;
  }
}
