:root {
  --vd-ivory: #f8f7f2;
  --vd-cream: #f2f0e7;
  --vd-olive: #586d46;
  --vd-olive-dark: #34472d;
  --vd-background-edge: min(31.25vw, calc(100vh * 0.208333));
}

html {
  background: var(--vd-ivory);
}

.page-content .page-header__title {
  overflow-wrap: anywhere;
}

body {
  height: auto !important;
  min-height: 100vh !important;
  position: relative;
  z-index: 0;
  color: var(--vd-olive-dark);
  background-color: var(--vd-ivory) !important;
  background-image: none !important;
}

body::before,
.header::before {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  border-style: solid;
  border-width: 0 var(--vd-background-edge);
  border-image-source: url("botanical-page-background-v3.png");
  border-image-source: image-set(
    url("botanical-page-background-v3.webp") type("image/webp") 1x,
    url("botanical-page-background-v3.png") type("image/png") 1x
  );
  border-image-slice: 0 320 0 320 fill;
  border-image-width: 0 var(--vd-background-edge);
  border-image-outset: 0;
  border-image-repeat: stretch;
  content: "";
  pointer-events: none;
}

body::before {
  z-index: -1;
}

.cbc,
.page-content {
  background-color: transparent !important;
}

.cbc {
  overflow: visible !important;
}

.page-content .section:not(.promo-box),
.page-content .page-header {
  background-color: rgb(248 247 242 / 84%) !important;
  background-image: linear-gradient(
    135deg,
    rgb(248 247 242 / 88%),
    rgb(242 240 231 / 80%)
  ) !important;
}

.page-content .section.light-bg {
  background-color: rgb(242 240 231 / 88%) !important;
  background-image: linear-gradient(
    135deg,
    rgb(242 240 231 / 92%),
    rgb(228 232 218 / 82%)
  ) !important;
}

.page-content .full-bg {
  width: calc(100% - clamp(48px, 6vw, 120px)) !important;
  max-width: 100% !important;
  margin: clamp(16px, 2vw, 30px) auto !important;
  padding-top: clamp(44px, 4vw, 64px) !important;
  padding-bottom: clamp(44px, 4vw, 64px) !important;
  padding-right: clamp(20px, 3vw, 48px) !important;
  padding-left: clamp(20px, 3vw, 48px) !important;
  border-radius: clamp(22px, 2vw, 32px) !important;
  overflow: hidden;
}

.page-content .section:not(.full-bg, .promo-box),
.page-content .page-header {
  width: calc(100% - clamp(48px, 6vw, 120px)) !important;
  margin: clamp(16px, 2vw, 30px) auto !important;
  padding-top: clamp(44px, 4vw, 64px) !important;
  padding-bottom: clamp(44px, 4vw, 64px) !important;
  border-radius: clamp(22px, 2vw, 32px);
}

.footer {
  background-color: rgb(242 240 231 / 72%) !important;
}

.footer__contacts {
  border: 1px solid rgb(88 109 70 / 10%);
  background-color: rgb(248 247 242 / 82%) !important;
}

/* New before/after photos share one crop and meet cleanly at the comparison seam. */
.case-card--new .twentytwenty {
  height: auto !important;
  aspect-ratio: 4 / 3;
}

.case-card--new .twentytwenty img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
  object-position: center;
}

/* Promotion cards use the same quiet, light olive tone as the site palette. */
.page-content .section:has(.sale-slider),
.sale-slider,
.sale-slider__item,
.sale-card {
  background-color: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
}

.sale-card__wrap {
  color: var(--vd-olive-dark) !important;
  background: #e5eadc !important;
  transition: background-color 0.2s ease;
}

.sale-card:hover .sale-card__wrap,
.sale-card:focus-visible .sale-card__wrap {
  background: #d9e0cf !important;
}

.sale-card__wrap :where(.sale-card__title, .sale-card__price, .sale-card__date) {
  color: var(--vd-olive-dark) !important;
}

/* Decorative frames stay invisible; form controls and focus outlines remain usable. */
.page-content :where(
  .section,
  .page-header,
  .container,
  article,
  a[class*="button"],
  a[class*="more"],
  button[class*="more"],
  [class*="card"],
  [class*="box"]
),
.page-content a,
.page-content button,
.footer__contacts,
.header-locations,
.header-messenger,
.header-chat-cta {
  border-color: transparent !important;
}

.header {
  --vd-header-height: 98px;
  isolation: isolate;
  background-color: transparent !important;
  background-image: none !important;
  border: 0 !important;
  backdrop-filter: none;
  box-shadow: none !important;
}

.header::before {
  z-index: -1;
  clip-path: inset(0 0 calc(100vh - var(--vd-header-height)) 0);
}

@media (max-width: 826px) {
  /* Anchor the controls to their carousel, not the outer page container. */
  .page-content .sale-slider {
    position: relative;
  }

  html,
  body {
    overscroll-behavior-y: none;
  }

  .header {
    --vd-header-height: 64px;
  }

  .page-content .full-bg {
    width: calc(100% - 16px) !important;
    margin-top: 12px !important;
    margin-bottom: 12px !important;
    padding-top: 32px !important;
    padding-bottom: 32px !important;
    padding-right: 16px !important;
    padding-left: 16px !important;
  }

  .page-content .section:not(.full-bg, .promo-box),
  .page-content .page-header {
    width: calc(100% - 16px) !important;
    margin-top: 12px !important;
    margin-bottom: 12px !important;
    padding-top: 32px !important;
    padding-bottom: 32px !important;
  }
}

@media (max-width: 568px) {
  .header {
    --vd-header-height: 54px;
  }

  /* Keep mobile service cards as wide as on the public site and reserve
     a dedicated lane for the red icon so long titles cannot overlap it. */
  .home-page .page-content .section.full-bg:has(.service-list) {
    width: calc(100% + 40px) !important;
    max-width: none !important;
    margin-right: -20px !important;
    margin-left: -20px !important;
    padding-right: 20px !important;
    padding-left: 20px !important;
  }

  .home-page .service-card__title {
    width: auto;
    max-width: calc(100% - 48px);
  }
}

@media (max-width: 340px) {
  .home-page .service-card__title {
    font-size: 24px !important;
  }
}
