.hero { position: relative; isolation: isolate; display: flex; align-items: center; min-height: 650px; padding-top: 118px; padding-bottom: 64px; overflow: hidden; border-radius: 0 0 7% 7% / 0 0 5% 5%; background: #ece8dd; }
.hero-image { position: absolute; z-index: -2; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center top; }
.hero::after { content: ''; position: absolute; z-index: -1; inset: 0; background: linear-gradient(90deg, rgb(250 247 242 / 97%) 0%, rgb(250 247 242 / 94%) 25%, rgb(250 247 242 / 70%) 40%, rgb(250 247 242 / 0%) 65%); }
.hero-copy { max-width: 650px; }
.hero h1 { margin-bottom: 20px; }
.hero h1 span { color: var(--sage-dark); }
.hero-copy > p { max-width: 460px; font-size: 17px; line-height: 1.6; margin-bottom: 26px; }
.hero .eyebrow { margin-bottom: 16px; }
.benefits { padding-block: 25px 32px; background: var(--paper); }
.benefits ul { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; text-align: center; }
.benefits .icon-circle { width: 58px; height: 58px; margin-bottom: 10px; }
.benefits h2 { margin-bottom: 4px; font: 600 15px/1.4 var(--font-body); letter-spacing: -.02em; }
.benefits p { margin: 0; font-size: 13px; color: var(--muted); }
.services { position: relative; overflow: hidden; }
.service-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 18px; position: relative; z-index: 1; }
.botanical { pointer-events: none; position: absolute; width: 160px; opacity: .35; }
.services > .botanical { top: -60px; left: -85px; transform: rotate(24deg); }
.about { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.12fr) minmax(0, .9fr); align-items: center; gap: 48px; background: var(--paper); padding-right: var(--gutter); border-radius: 0 0 7% 0 / 0 0 6% 0; overflow: hidden; }
.about-image { width: 100%; height: 400px; object-fit: cover; object-position: 54% center; }
.about-copy { padding-block: 44px; }
.about-copy h2 { font-size: clamp(30px, 2.8vw, 42px); margin-bottom: 15px; }
.about-copy p { font-size: 15px; color: var(--muted); }
.about-values { position: relative; z-index: 1; padding-block: 30px; }
.about-values li { display: flex; align-items: center; gap: 16px; font-size: 13px; margin-bottom: 17px; }
.about-values .icon-circle { width: 44px; height: 44px; flex-shrink: 0; }
.about-values .icon { width: 23px; height: 23px; }
.about > .botanical { top: -35px; right: -68px; width: 190px; transform: rotate(-29deg); }
.process { background: var(--sage); }
.process h2 { margin-bottom: 30px; }
.pricing-reviews { position: relative; overflow: hidden; }
.pricing-reviews > .container { display: grid; grid-template-columns: .9fr 1.5fr; gap: 68px; }
.pricing { padding-right: 52px; border-right: 1px solid var(--line); }
.pricing h2, .reviews h2 { font-size: clamp(30px, 2.4vw, 38px); margin-bottom: 22px; }
.pricing table { width: 100%; border-collapse: collapse; font-size: 14px; margin-bottom: 25px; }
.pricing caption { text-align: left; margin-bottom: 8px; font-size: 11px; color: var(--muted); }
.pricing td, .pricing th { padding: 13px 0; border-bottom: 1px solid var(--line); }
.pricing th { text-align: left; font-weight: 400; }
.pricing td { text-align: right; font-weight: 700; white-space: nowrap; padding-left: 12px; }
.pricing-reviews > .botanical { bottom: -35px; left: -75px; transform: rotate(24deg); width: 190px; }
.review-label { color: var(--muted); font-size: 11px; margin-top: -12px; margin-bottom: 18px; }
.review-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.review-card { display: flex; flex-direction: column; padding: 21px 18px; background: var(--paper); border-radius: 12px; box-shadow: var(--shadow); margin: 0; }
.stars { color: #ac6600; letter-spacing: 2px; font-size: 19px; margin-bottom: 16px; }
.review-card p { font-size: 13px; line-height: 1.65; }
.review-card footer { margin-top: auto; font-size: 11px; font-weight: 600; }
.booking { position: relative; isolation: isolate; overflow: hidden; display: flex; align-items: center; min-height: 400px; padding-block: 60px; border-radius: 0 0 6% 6% / 0 0 6% 6%; background: var(--forest); color: white; }
.booking-image { position: absolute; z-index: -2; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 54%; }
.booking::after { content: ''; position: absolute; z-index: -1; inset: 0; background: linear-gradient(90deg, rgb(19 47 45 / 94%), rgb(19 47 45 / 65%) 43%, rgb(19 47 45 / 5%) 78%); }
.booking .eyebrow { color: #e2be93; }
.booking h2 { font-size: clamp(38px, 3.7vw, 56px); max-width: 560px; margin-bottom: 18px; }
.booking p { max-width: 470px; color: #edf0e9; font-size: 16px; }
.contact { padding-block: 48px; }
.contact-layout { display: grid; grid-template-columns: 1.8fr .92fr .9fr; gap: 24px; align-items: stretch; }
.contact h2 { font-size: clamp(30px, 2.4vw, 38px); }
.contact-details { padding-right: 20px; }
.contact-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
.contact-item { display: flex; align-items: start; gap: 16px; margin-bottom: 22px; }
.contact-item .icon-circle { width: 46px; height: 46px; flex-shrink: 0; background: var(--sage-dark); color: white; }
.contact-item .icon-circle--pale { background: var(--sage); color: var(--forest); }
.contact-item p, .contact-item address { margin-bottom: 0; font-size: 13px; }
.contact-item h3 { margin: 0 0 6px; font-size: 14px; }
.contact-item address strong { font-size: 14px; }
.contact-item [data-directions-link] { min-height: 44px; }
.contact-item dl { font-size: 12px; margin: 0; }
.contact-item dl > div { display: flex; gap: 16px; margin-bottom: 5px; }
.contact-item dt { width: 42px; flex-shrink: 0; }
.contact-item dd { margin: 0; }
.contact-item .text-link { font-size: 12px; min-height: 36px; }
.contact-demo { font-size: 11px; color: var(--muted); margin: 14px 0 0; }
.map-preview { position: relative; isolation: isolate; min-height: 360px; overflow: hidden; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 24px; border-radius: 12px; background: #e8eeea; }
.map-preview .icon-circle { background: var(--terracotta); color: white; width: 56px; height: 56px; margin-bottom: 14px; }
.map-preview strong { font: 25px var(--font-heading); }
.map-preview p { font-size: 12px; max-width: 180px; margin: 10px 0 25px; }
.map-preview .button { font-size: 12px; padding: 12px 20px; }
.map-disclaimer { position: absolute; bottom: 12px; font-size: 10px; color: #55655c; }
@media (min-width: 1700px) { .hero { min-height: 760px; } .hero-image { object-position: center top; } }
@media (max-width: 1199px) { .hero { min-height: 610px; } .hero-copy { max-width: 570px; } .service-grid { gap: 13px; } .service-card-body { padding-inline: 13px; } .service-card h3 { font-size: 14px; } .service-card p { font-size: 12px; } .about { gap: 28px; grid-template-columns: 1fr 1.2fr; padding-right: var(--gutter); } .about-values { grid-column: 2; padding: 0 0 30px; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: -15px; } .about-values li { font-size: 12px; margin: 0; gap: 9px; } .about-image { grid-row: span 2; height: 100%; min-height: 430px; } .about-copy { padding-bottom: 20px; } .pricing-reviews > .container { gap: 32px; } .pricing { padding-right: 28px; } .review-grid { gap: 10px; } .review-card { padding: 18px 13px; } .contact-layout { grid-template-columns: 1.6fr 1fr; } .map-preview { grid-column: 1 / -1; min-height: 210px; } .map-preview p { max-width: none; margin-bottom: 15px; } }
@media (max-width: 899px) { .hero { min-height: 620px; padding-top: 128px; padding-bottom: 60px; } .hero-copy { max-width: 530px; } .hero::after { background: linear-gradient(90deg, rgb(250 247 242 / 96%), rgb(250 247 242 / 86%) 40%, rgb(250 247 242 / 15%) 100%); } .hero h1 { font-size: 49px; } .hero-copy > p { font-size: 16px; max-width: 400px; } .service-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; } .service-card > img { aspect-ratio: 1.4; } .service-card h3 { font-size: 17px; } .service-card p { font-size: 14px; } .service-card-body { padding-inline: 20px; } .benefits ul { gap: 16px; } .benefits h2 { font-size: 13px; } .benefits p { font-size: 12px; } .about { gap: 25px; } .about-values { grid-template-columns: 1fr; } .about-image { min-height: 570px; } .about-copy h2 { font-size: 33px; }   .pricing-reviews > .container { grid-template-columns: 1fr; gap: 42px; } .pricing { padding: 0; border: 0; } .pricing table { max-width: 600px; } .review-card { padding: 25px 20px; } .review-card p { font-size: 14px; } .booking { min-height: 390px; } .contact-layout { gap: 25px; } .contact-columns { grid-template-columns: 1fr; gap: 0; } .contact-details { padding: 0; } }
@media (max-width: 599px) {
  .hero { background: var(--cream); display: block; min-height: 0; padding-top: 121px; padding-bottom: 380px; border-radius: 0 0 6% 6% / 0 0 2% 2%; }
  .hero-image { top: auto; bottom: 0; height: 340px; object-position: 59% top; }
  .hero::after { top: auto; bottom: 300px; height: 70px; background: linear-gradient(180deg, var(--cream), rgb(250 247 242 / 0%)); }
  .hero h1 { font-size: clamp(32px, 8.5vw, 46px); margin-bottom: 20px; }
  .hero-copy > p { font-size: 15px; max-width: 340px; }
  .hero .eyebrow { font-size: 9px; letter-spacing: .2em; }
  .hero .button-group { gap: 10px; }
  .hero .button { min-height: 48px; padding-inline: 19px; font-size: 12px; gap: 10px; }
  .benefits { padding-block: 30px; }
  .benefits ul { grid-template-columns: 1fr 1fr; gap: 28px 14px; }
  .benefits .icon-circle { width: 48px; height: 48px; }
  .benefits h2 { font-size: 13px; }
  .benefits p { font-size: 11px; }
  .service-grid { grid-template-columns: 1fr 1fr; gap: 16px; }
  .service-card-body { padding: 18px 14px 14px; }
  .service-card h3 { font-size: 15px; overflow-wrap: anywhere; }
  .service-card p { font-size: 12px; }
  .service-card > img { aspect-ratio: 1.12; }
  .circle-link { width: 44px; height: 44px; }
  .about { display: flex; flex-direction: column; align-items: stretch; padding: 0 0 40px; gap: 0; }
  .about-image { min-height: 0; height: 320px; object-position: center 32%; }
  .about-copy { padding: 36px var(--gutter) 24px; }
  .about-copy h2 { font-size: 35px; }
  .about-values { margin: 0; padding: 0 var(--gutter); grid-template-columns: 1fr; gap: 15px; }
  .about-values li { font-size: 13px; gap: 14px; }
  
  
  
  
  
  .review-grid { grid-template-columns: 1fr; gap: 16px; }
  .review-card { padding: 23px; }
  .stars { margin-bottom: 10px; }
  .review-card p { margin-bottom: 12px; }
  .booking { min-height: 470px; }
  .booking-image { object-position: 62% center; }
  .booking::after { background: rgb(19 47 45 / 70%); }
  .booking h2 { font-size: 43px; }
  .booking p { font-size: 15px; }
  .booking .button { padding-inline: 20px; font-size: 13px; }
  .contact-layout { grid-template-columns: 1fr; }
  .contact-columns { grid-template-columns: 1fr; }
  .map-preview { min-height: 300px; }
}
@media (max-width: 359px) { .hero h1 { font-size: 30px; } .hero .button-group { align-items: stretch; flex-direction: column; max-width: 225px; } .service-card-body { padding-inline: 11px; } .service-card h3 { font-size: 14px; } .service-card p { font-size: 11px; } }

/* Homepage Google Maps uses the existing explicit-load privacy controller. */
.home-location.map-preview { justify-content: flex-start; gap: 14px; padding: 20px; }
.home-location.map-preview p { max-width: none; margin: 0; font-size: 11px; line-height: 1.6; }
.home-location.map-preview .button { max-width: 100%; padding: 12px 14px; }
.home-location .location-map { position: relative; flex: 1; width: 100%; min-height: 300px; aspect-ratio: 4 / 3; border-radius: 8px; overflow: hidden; background: var(--paper); }
.home-location .location-map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.home-location .text-link { font-size: 12px; text-align: left; }
