:root{
  --green-950:#16332c;
  --green-800:#1e463c;
  --green-700:#28584b;
  --mint:#dce7dd;
  --mint-soft:#e7f0e7;
  --cream:#f7f9f6;
  --cream-soft:#eef3ec;
  --blush:#d98a93;
  --peach:#e8b98f;
  --gold:#dba955;
  --ink:#1c2b26;
  --ink-soft:#5c6b62;
  --line: rgba(22,51,44,0.14);
}
*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{
  background:var(--cream);
  color:var(--ink);
  font-family:'Work Sans', sans-serif;
  font-weight:400;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,.display{
  font-family:'Fraunces', serif;
  font-weight:500;
  letter-spacing:-0.01em;
}
.eyebrow{
  font-size:0.72rem;
  letter-spacing:0.22em;
  text-transform:uppercase;
  color:var(--gold);
  font-weight:600;
}
a{color:inherit; text-decoration:none;}
img{display:block; max-width:100%;}
.wrap{max-width:1180px; margin:0 auto; padding:0 32px;}
section{position:relative;}

/* ---------- nav ---------- */
header{
  position:sticky; top:0; z-index:50;
  background:rgba(250,247,239,0.92);
  backdrop-filter:blur(6px);
  border-bottom:1px solid var(--line);
}
.nav{
  display:flex; align-items:center; justify-content:space-between;
  padding:18px 32px;
  max-width:1180px; margin:0 auto;
}
.brand{display:flex; align-items:center; gap:12px;}
.brand-mark{
  width:44px; height:44px; border-radius:50%;
  overflow:hidden;
  display:flex; align-items:center; justify-content:center;
  background:var(--mint);
}
.brand-mark img{width:100%; height:100%; object-fit:cover;}
.brand-name{font-family:'Fraunces',serif; font-size:1.05rem; letter-spacing:0.02em;}
.brand-name span{display:block; font-family:'Work Sans',sans-serif; font-size:0.62rem; letter-spacing:0.18em; color:var(--ink-soft); text-transform:uppercase; margin-top:2px;}
nav.links{display:flex; gap:30px; font-size:0.85rem;}
nav.links a{padding:4px 0; border-bottom:1px solid transparent;}
nav.links a:hover{border-color:var(--gold);}
.chat-btn{
  background:var(--green-800); color:var(--cream);
  padding:10px 20px; border-radius:2px; font-size:0.8rem; letter-spacing:0.04em;
}
.chat-btn:hover{background:var(--green-950);}

/* ---------- hero ---------- */
.hero{
  background:var(--mint-soft);
  color:var(--ink);
  padding:90px 0 0;
  overflow:hidden;
  border-bottom:1px solid var(--line);
}
.hero-inner{
  display:grid; grid-template-columns:1.05fr 1fr; gap:60px;
  align-items:center;
  padding-bottom:70px;
}
.hero h1{
  font-size:clamp(2.4rem, 4.4vw, 3.6rem);
  font-style:italic;
  font-weight:400;
  line-height:1.08;
  margin:18px 0 22px;
  color:var(--green-950);
}
.hero p{color:var(--ink-soft); max-width:40ch; font-size:1rem;}
.hero-cta{display:flex; gap:14px; margin-top:34px; flex-wrap:wrap;}
.btn-primary{
  display:inline-block;
  background:var(--green-800); color:var(--cream);
  padding:13px 26px; font-size:0.85rem; letter-spacing:0.03em; border-radius:2px;
  border:none; cursor:pointer;
}
.btn-ghost{
  display:inline-block;
  border:1px solid var(--green-800); color:var(--green-800);
  padding:13px 26px; font-size:0.85rem; letter-spacing:0.03em; border-radius:2px;
  background:none; cursor:pointer;
}
.hero-swatch{
  aspect-ratio:4/5; align-self:stretch;
  width:100%; height:100%; object-fit:cover; border-radius:2px;
}

.hero-logo{
  object-fit:contain;
  padding:40px;
  aspect-ratio:1/1;
  max-height:420px;
  width:100%;
  align-self:center;
  }

.hero-hours{
  display:flex; gap:36px; padding:20px 0; border-top:1px solid var(--line);
  font-size:0.78rem; color:var(--ink-soft); letter-spacing:0.03em;
}
.hero-hours strong{color:var(--green-950); font-weight:500;}

/* ---------- generic section spacing ---------- */
.section{padding:96px 0;}
.section-head{max-width:640px; margin-bottom:52px;}
.section-head h2{font-size:clamp(1.7rem,2.6vw,2.3rem); margin-top:10px;}
.section-alt{background:var(--cream-soft);}

/* ---------- about ---------- */
.about-grid{max-width:720px;}
.about-grid p{color:var(--ink-soft); margin-bottom:16px; max-width:60ch;}
.about-grid .lead-quote{color:var(--ink); font-size:1.08rem; font-family:'Fraunces',serif; font-style:italic; font-weight:400;}

/* ---------- services ---------- */
.services-grid{display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--line); border:1px solid var(--line);}
.service-card{background:var(--cream); padding:44px 40px;}
.service-card h3{font-size:1.5rem; margin-bottom:4px;}
.price-tag{
  display:inline-flex; align-items:center; gap:8px;
  margin:14px 0 22px;
  font-family:'Fraunces',serif; font-size:1.6rem; color:var(--green-800);
}
.price-tag span{font-family:'Work Sans',sans-serif; font-size:0.72rem; letter-spacing:0.08em; text-transform:uppercase; color:var(--ink-soft); font-weight:500;}
.service-list{list-style:none; margin-top:18px;}
.service-list li{
  padding:11px 0; border-top:1px solid var(--line);
  font-size:0.92rem; color:var(--ink-soft);
  display:flex; justify-content:space-between;
}
.service-list li:last-child{border-bottom:1px solid var(--line);}
.service-list li::before{content:"—"; color:var(--gold); margin-right:10px;}

/* ---------- gallery ---------- */
.tabs{display:flex; gap:8px; margin-bottom:34px;}
.tab{
  padding:9px 18px; font-size:0.78rem; letter-spacing:0.05em; text-transform:uppercase;
  border:1px solid var(--line); border-radius:2px; color:var(--ink-soft); cursor:pointer;
}
.tab.active{background:var(--green-800); color:var(--cream); border-color:var(--green-800);}
.carousel-wrap{position:relative;}
.carousel{
  display:none; gap:16px; overflow-x:auto; scroll-snap-type:x mandatory;
  padding-bottom:8px; -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
}
.carousel::-webkit-scrollbar{display:none;}
.carousel.active{display:flex;}
.carousel img{
  flex:0 0 auto; width:280px; aspect-ratio:1/1.15; object-fit:cover;
  scroll-snap-align:center; border-radius:2px;
  transform:scale(0.82); opacity:0.55;
  transition:transform 0.35s ease, opacity 0.35s ease;
  }
  .carousel img.is-active{
  transform:scale(1.08); opacity:1;
  }
  
.carousel-nav{display:flex; justify-content:flex-end; gap:10px; margin-top:18px;}
.carousel-btn{
  width:42px; height:42px; border-radius:50%; border:1px solid var(--line);
  display:flex; align-items:center; justify-content:center; cursor:pointer;
  font-size:1rem; color:var(--ink-soft); background:var(--cream);
}
.carousel-btn:hover{border-color:var(--gold); color:var(--gold);}

/* ---------- testimonials ---------- */
.testi-carousel-wrap{
  display:flex; align-items:center; gap:20px; justify-content:center;
  }
  .testi-arrow{
  width:44px; height:44px; border-radius:50%; border:1px solid var(--line);
  display:flex; align-items:center; justify-content:center; cursor:pointer;
  color:var(--ink-soft); background:var(--cream); flex-shrink:0;
  transition:border-color 0.2s, color 0.2s;
  }
  .testi-arrow:hover{border-color:var(--gold); color:var(--gold);}
  .testi-card{
  background:var(--cream); border:1px solid var(--line); border-radius:2px;
  padding:40px 44px; max-width:560px; width:100%; text-align:center;
  transition:opacity 0.3s ease;
  }
  .testi-avatar{
  width:48px; height:48px; border-radius:50%; background:var(--green-700);
  color:var(--cream); display:flex; align-items:center; justify-content:center;
  font-family:'Fraunces',serif; font-size:1.1rem; margin:0 auto 14px;
  }
  .testi-name{font-weight:600; font-size:0.95rem; margin-bottom:6px;}
  .stars{color:var(--gold); letter-spacing:2px; font-size:0.9rem; margin-bottom:16px;}
  .testi-card p.quote{font-size:0.95rem; color:var(--ink-soft); font-style:italic; line-height:1.6;}
  .share-experience{
  margin-top:52px; padding:36px; background:var(--mint-soft);
  border:1px solid var(--line); border-radius:2px; text-align:center;
  }
  .share-experience h3{font-size:1.3rem; margin-bottom:8px;}
  .share-experience p{color:var(--ink-soft); font-size:0.9rem; max-width:48ch; margin:0 auto 22px;}
  .share-buttons{display:flex; gap:14px; justify-content:center; flex-wrap:wrap;}
  .share-btn{
  display:inline-flex; align-items:center; gap:10px;
  background:var(--cream); border:1px solid var(--green-800);
  color:var(--green-800); padding:12px 22px; border-radius:2px;
  font-size:0.85rem; letter-spacing:0.02em;
  }
  .share-btn:hover{background:var(--green-800); color:var(--cream);}
  
/* ---------- review form ---------- */
.review-form-wrap{display:none; margin-top:30px;}
.review-form-wrap.open{display:block;}
#review-form{
  background:var(--cream); border:1px solid var(--line); border-radius:2px;
  padding:32px; max-width:520px;
}
#review-form h3{margin-bottom:18px; font-weight:400;}
#review-form label{
  display:block; margin-bottom:16px; font-size:0.85rem; color:var(--ink-soft);
}
#review-form input, #review-form select, #review-form textarea{
  display:block; width:100%; margin-top:6px;
  padding:10px 12px; border:1px solid var(--line); border-radius:2px;
  font-family:'Work Sans',sans-serif; font-size:0.9rem; background:var(--cream);
  color:var(--ink);
}
.review-form-actions{display:flex; gap:12px; margin-top:8px;}
.review-form-note{margin-top:14px; font-size:0.85rem; color:var(--green-800);}

/* ---------- contact ---------- */
.contact-grid{display:grid; grid-template-columns:1fr 1fr; gap:0; border:1px solid var(--line); min-height:420px;}
.contact-info{padding:50px 44px; background:var(--cream);}
.contact-info h3{font-size:0.75rem; letter-spacing:0.12em; text-transform:uppercase; color:var(--ink-soft); font-weight:600; margin:26px 0 8px;}
.contact-info h3:first-child{margin-top:0;}
.contact-info p{font-size:0.95rem;}
.social-row{display:flex; gap:12px; margin-top:8px; flex-wrap:wrap;}
.social-row a{border:1px solid var(--line); padding:8px 16px; font-size:0.8rem; border-radius:2px;}
.social-row a:hover{border-color:var(--gold); color:var(--gold);}
.map-embed{min-height:360px;}

footer{
  background:var(--mint-soft); color:var(--ink-soft);
  padding:34px 0; font-size:0.78rem; text-align:center;
  border-top:1px solid var(--line);
}

.float-chat{
  position:fixed; bottom:22px; right:22px; z-index:60;
  background:var(--green-800); color:var(--cream);
  width:54px; height:54px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-size:0.7rem; text-align:center; letter-spacing:0.02em;
  box-shadow:0 8px 24px rgba(18,32,25,0.3);
}

@media (max-width:860px){
  nav.links{display:none;}
  .hero-inner, .services-grid, .contact-grid{grid-template-columns:1fr;}
  .testi-grid{grid-template-columns:1fr;}
  .section{padding:64px 0;}
}
@media (max-width:520px){
  .wrap{padding:0 20px;}
  .nav{padding:14px 20px;}
  .brand-name{font-size:0.92rem;}
  .hero{padding-top:50px;}
  .hero h1{font-size:2rem;}
  .hero-hours{flex-wrap:wrap; gap:18px;}
  .section{padding:52px 0;}
  .service-card{padding:32px 24px;}
  .price-tag{font-size:1.3rem;}
  .carousel img{width:220px;}
  .contact-info{padding:36px 24px;}
  .review-cta{flex-direction:column; align-items:flex-start;}
  .float-chat{width:48px; height:48px; font-size:0.62rem; bottom:16px; right:16px;}
}

/* ---------- license badge ---------- */
.license-badge{
  display:inline-block; margin:6px 0 20px;
  font-size:0.72rem; letter-spacing:0.1em; text-transform:uppercase;
  color:var(--green-800); font-weight:600;
  border:1px solid var(--green-800); border-radius:20px;
  padding:5px 14px;
  }
  
  /* ---------- share your experience ---------- */
  .share-experience{
  margin-top:26px; padding:36px; background:var(--mint-soft);
  border:1px solid var(--line); border-radius:2px; text-align:center;
  }
  .share-experience h3{font-size:1.3rem; margin-bottom:8px;}
  .share-experience p{color:var(--ink-soft); font-size:0.9rem; max-width:48ch; margin:0 auto 22px;}
  .share-buttons{display:flex; gap:14px; justify-content:center; flex-wrap:wrap;}
  .share-btn{
  display:inline-flex; align-items:center; gap:10px;
  background:var(--cream); border:1px solid var(--green-800);
  color:var(--green-800); padding:12px 22px; border-radius:2px;
  font-size:0.85rem; letter-spacing:0.02em;
  }
  .share-btn:hover{background:var(--green-800); color:var(--cream);}
  
  /* ---------- footer ---------- */
  footer{background:var(--green-950); color:rgba(250,247,239,0.75); padding:60px 0 0; border-top:none;}
  .footer-grid{display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:50px; padding-bottom:40px;}
  .footer-col h4{color:var(--cream); font-size:0.85rem; letter-spacing:0.08em; text-transform:uppercase; margin-bottom:16px; font-weight:600;}
  .footer-col ul{list-style:none;}
  .footer-col li{padding:6px 0; font-size:0.88rem;}
  .footer-col p{font-size:0.88rem; margin-bottom:8px; line-height:1.6;}
  .footer-col a{color:rgba(250,247,239,0.85);}
  .footer-col a:hover{color:var(--gold);}
  .footer-tagline{margin:16px 0 18px; font-size:0.88rem; max-width:32ch;}
  .footer-social{display:flex; gap:10px;}
  .footer-social a{
  width:36px; height:36px; border:1px solid rgba(250,247,239,0.3); border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-size:0.7rem; letter-spacing:0.02em;
  }
  .footer-social a:hover{border-color:var(--gold); color:var(--gold);}
  .footer-bottom{
  border-top:1px solid rgba(250,247,239,0.15);
  padding:20px 32px; text-align:center; font-size:0.78rem;
  }
  
  @media (max-width:860px){
  .footer-grid{grid-template-columns:1fr; gap:32px;}
  }
  