/* ==========================================================================
   Belle Vous Spa and Wellness Laser Centre
   Design direction: "White Room". Tokens first, then the shell, then the
   site-wide layer that restyles existing Elementor content.
   ========================================================================== */

:root {
  --bg: #FFFFFF;
  --surface: #F6F7F5;
  --ink: #24312A;
  --ink-soft: #333333;
  --accent: #3E5A47;
  --accent-deep: #2F4736;
  --deep: #24312A;
  --hairline: #E3E6E1;
  --muted: #6E766C;
  --on-dark: #FFFFFF;
  --on-dark-soft: #C3CCC5;
  --on-dark-line: rgba(255, 255, 255, 0.18);
  --scrim: rgba(36, 49, 42, 0.52);

  --font-display: "Cormorant Garamond", "Iowan Old Style", Georgia, serif;
  --font-body: "Manrope", "Helvetica Neue", Arial, sans-serif;

  --sp-sm: 16px;
  --sp-md: 32px;
  --sp-lg: 64px;
  --sp-xl: 112px;

  --wrap: 1240px;
  --wrap-narrow: 720px;
  --gutter: 20px;

  --bar-h: 96px;
  --bar-h-sm: 68px;
}

@media (max-width: 1024px) {
  :root { --sp-xl: 72px; --sp-lg: 48px; }
}

/* --------------------------------------------------------------------------
   Base. :where() keeps specificity at zero so component rules always win.
   -------------------------------------------------------------------------- */

.bvs *,
.bvs *::before,
.bvs *::after { box-sizing: border-box; }

body.bvs {
  background: var(--bg);
  color: var(--ink-soft);
  font-family: var(--font-body);
  font-size: 17px;
  font-weight: 400;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

.bvs :where(h1, h2, h3, h4, h5, h6) {
  font-family: var(--font-display);
  font-weight: 500;
  color: var(--ink);
  margin: 0 0 0.5em;
  text-transform: none;
  letter-spacing: 0;
}

.bvs :where(h1) { font-size: clamp(36px, 5.2vw, 60px); line-height: 1.05; }
.bvs :where(h2) { font-size: clamp(30px, 3.6vw, 44px); line-height: 1.12; }
.bvs :where(h3) { font-size: clamp(24px, 2.4vw, 28px); line-height: 1.2; }
.bvs :where(h4) { font-size: 23px; line-height: 1.3; }
.bvs :where(h5) { font-size: 22px; line-height: 1.35; }
.bvs :where(h6) {
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  line-height: 1.4;
}

.bvs :where(p) { margin: 0 0 1.15em; }
.bvs :where(p:last-child) { margin-bottom: 0; }

.bvs :where(a) { color: var(--accent); text-decoration-thickness: 1px; text-underline-offset: 3px; }
.bvs :where(a:hover) { color: var(--accent-deep); }

.bvs :where(img, video) { max-width: 100%; height: auto; border-radius: 0; }

.bvs :where(blockquote) {
  margin: var(--sp-md) 0;
  padding: 0 0 0 var(--sp-md);
  border: 0;
  border-left: 1px solid var(--accent);
  font-family: var(--font-display);
  font-size: 26px;
  line-height: 1.35;
  color: var(--ink);
}

.bvs :where(hr) { border: 0; border-top: 1px solid var(--hairline); margin: var(--sp-lg) 0; }

.bvs ::selection { background: var(--accent); color: #FFFFFF; }

.bvs .skip-link:focus {
  position: fixed; top: 12px; left: 12px; z-index: 2000;
  background: #FFFFFF; color: var(--ink); padding: 12px 18px;
  clip: auto; clip-path: none; width: auto; height: auto;
}

.bvs :focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.bvs-header :focus-visible,
.bvs-drawer :focus-visible,
.bvs-footer :focus-visible { outline-color: #FFFFFF; }

/* --------------------------------------------------------------------------
   Layout helpers
   -------------------------------------------------------------------------- */

.bvs-wrap {
  width: 100%;
  max-width: var(--wrap);
  margin-inline: auto;
  padding-inline: var(--gutter);
}
.bvs-wrap--narrow { max-width: var(--wrap-narrow); }

.bvs-main { display: block; }

.bvs-eyebrow {
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--muted);
  margin: 0 0 var(--sp-sm);
}
.bvs-eyebrow a { color: inherit; text-decoration: none; }
.bvs-eyebrow a:hover { color: var(--accent); }

/* --------------------------------------------------------------------------
   Buttons and links
   -------------------------------------------------------------------------- */

.bvs-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 52px;
  padding: 16px 34px;
  border: 1px solid transparent;
  border-radius: 0;
  background: var(--accent);
  color: #FFFFFF;
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 1.6px;
  line-height: 1;
  text-transform: uppercase;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
.bvs-btn:hover { background: var(--accent-deep); color: #FFFFFF; }

.bvs-btn--primary { background: var(--accent); color: #FFFFFF; }
.bvs-btn--primary:hover { background: var(--accent-deep); color: #FFFFFF; }

.bvs-btn--onDark { background: #FFFFFF; color: var(--deep); }
.bvs-btn--onDark:hover { background: var(--on-dark-soft); color: var(--deep); }

.bvs-btn--ghost { background: transparent; border-color: currentColor; color: var(--ink); }
.bvs-btn--ghost:hover { background: var(--ink); border-color: var(--ink); color: #FFFFFF; }

.bvs-textlink {
  display: inline-block;
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  color: var(--accent);
  text-decoration: none;
  border-bottom: 1px solid currentColor;
  padding-bottom: 3px;
}
.bvs-textlink:hover { color: var(--accent-deep); }
.bvs-textlink--onDark { color: #FFFFFF; border-bottom-color: rgba(255, 255, 255, 0.45); }
.bvs-textlink--onDark:hover { color: #FFFFFF; border-bottom-color: #FFFFFF; }

/* --------------------------------------------------------------------------
   Header
   -------------------------------------------------------------------------- */

.bvs-header {
  position: sticky;
  top: 0;
  z-index: 900;
  background: var(--deep);
  color: #FFFFFF;
}
.bvs-header.is-stuck { box-shadow: 0 1px 0 rgba(255, 255, 255, 0.12), 0 10px 30px rgba(36, 49, 42, 0.10); }

/* Utility strip: names both branches before anything else on the page does. */
.bvs-utility {
  display: none;
  border-bottom: 1px solid var(--on-dark-line);
}
@media (min-width: 1025px) { .bvs-utility { display: block; } }

.bvs-utility__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-md);
  min-height: 42px;
}
.bvs-utility__label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--on-dark-soft);
}
.bvs-utility__branches { display: flex; align-items: center; gap: var(--sp-md); }
.bvs-utility__branch {
  display: inline-flex;
  align-items: baseline;
  gap: 10px;
  color: #FFFFFF;
  text-decoration: none;
  font-size: 13px;
}
.bvs-utility__branchname {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  color: var(--on-dark-soft);
}
.bvs-utility__branch:hover { color: #FFFFFF; }
.bvs-utility__branch:hover .bvs-utility__tel { border-bottom: 1px solid #FFFFFF; }
.bvs-utility__tel { border-bottom: 1px solid transparent; }

.bvs-bar__inner {
  display: flex;
  align-items: center;
  gap: var(--sp-md);
  min-height: var(--bar-h);
}

/* Two marks, one divider: same company, two named branches. */
.bvs-brand {
  display: flex;
  align-items: center;
  gap: 18px;
  flex: 0 0 auto;
  text-decoration: none;
}
.bvs-brand__mark { display: block; width: auto; }
.bvs-brand__mark--spa { height: 54px; }
.bvs-brand__mark--clinic { height: 34px; }
.bvs-brand__rule {
  display: block;
  width: 1px;
  height: 42px;
  background: rgba(255, 255, 255, 0.26);
  flex: 0 0 auto;
}

.bvs-nav { margin-left: auto; }
@media (max-width: 1024px) { .bvs-nav { display: none; } }

.bvs-nav__list {
  display: flex;
  align-items: center;
  gap: 30px;
  list-style: none;
  margin: 0;
  padding: 0;
}
.bvs-nav__item { position: relative; }
.bvs-nav__link {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 14px 0;
  color: rgba(255, 255, 255, 0.88);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color 0.2s ease, border-color 0.2s ease;
}
.bvs-nav__link:hover,
.bvs-nav__item:focus-within > .bvs-nav__link { color: #FFFFFF; border-bottom-color: #FFFFFF; }
.bvs-nav__item.current-menu-item > .bvs-nav__link,
.bvs-nav__item.current-menu-ancestor > .bvs-nav__link { color: #FFFFFF; border-bottom-color: #FFFFFF; }

.bvs-nav__caret {
  width: 7px; height: 7px;
  border-right: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
}

/* Treatments dropdown: light panel against the dark bar. */
.bvs-nav .sub-menu {
  position: absolute;
  top: 100%;
  left: -22px;
  z-index: 20;
  min-width: 266px;
  margin: 0;
  padding: 10px 0;
  list-style: none;
  background: #FFFFFF;
  border: 1px solid var(--hairline);
  opacity: 0;
  visibility: hidden;
  transform: translateY(6px);
  transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s;
}
.bvs-nav__item:hover > .sub-menu,
.bvs-nav__item:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: translateY(0); }
.bvs-nav .sub-menu li { margin: 0; }
.bvs-nav .sub-menu a {
  display: block;
  padding: 11px 22px;
  color: var(--ink-soft);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  text-decoration: none;
}
.bvs-nav .sub-menu a:hover { background: var(--surface); color: var(--accent); }

.bvs-bar__actions { display: flex; align-items: center; gap: 14px; flex: 0 0 auto; }
@media (min-width: 1025px) { .bvs-bar__actions { margin-left: 8px; } }
@media (max-width: 1024px) { .bvs-bar__actions { margin-left: auto; } }

.bvs-bar__cta { min-height: 44px; padding: 12px 22px; font-size: 12px; }
@media (max-width: 599px) { .bvs-bar__cta { display: none; } }

.bvs-burger {
  display: none;
  width: 46px; height: 46px;
  align-items: center; justify-content: center;
  padding: 0;
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.3);
  border-radius: 0;
  cursor: pointer;
}
@media (max-width: 1024px) { .bvs-burger { display: inline-flex; } }
.bvs-burger__box { display: block; width: 20px; }
.bvs-burger__box span {
  display: block; height: 1px; background: #FFFFFF;
  transition: transform 0.24s ease, opacity 0.18s ease;
}
.bvs-burger__box span + span { margin-top: 5px; }
.bvs-burger[aria-expanded="true"] .bvs-burger__box span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.bvs-burger[aria-expanded="true"] .bvs-burger__box span:nth-child(2) { opacity: 0; }
.bvs-burger[aria-expanded="true"] .bvs-burger__box span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

/* --------------------------------------------------------------------------
   Mobile drawer: designed for the phone, not a shrunken desktop menu.
   -------------------------------------------------------------------------- */

.bvs-drawer {
  position: fixed;
  inset: 0;
  z-index: 890;
  background: var(--deep);
  color: #FFFFFF;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: calc(var(--bar-h-sm) + 24px) var(--gutter) 56px;
}
.bvs-drawer[hidden] { display: none; }

.bvs-drawer__inner { max-width: 560px; margin-inline: auto; }

.bvs-drawer__list { list-style: none; margin: 0 0 var(--sp-md); padding: 0; }
.bvs-drawer__list > li { border-bottom: 1px solid var(--on-dark-line); }
.bvs-drawer__list > li > a {
  display: block;
  padding: 18px 0;
  color: #FFFFFF;
  font-family: var(--font-display);
  font-size: 28px;
  line-height: 1.2;
  text-decoration: none;
}
.bvs-drawer__list .sub-menu { list-style: none; margin: 0 0 16px; padding: 0; }
.bvs-drawer__list .sub-menu a {
  display: block;
  padding: 10px 0 10px 16px;
  color: var(--on-dark-soft);
  font-size: 15px;
  text-decoration: none;
  border-left: 1px solid var(--on-dark-line);
}
.bvs-drawer__list .sub-menu a:hover { color: #FFFFFF; }

.bvs-drawer__cta { width: 100%; margin-bottom: var(--sp-lg); }

.bvs-drawer__branches { display: grid; gap: var(--sp-md); }
.bvs-drawer__branch { padding-top: var(--sp-sm); border-top: 1px solid var(--on-dark-line); }
.bvs-drawer__branchname {
  font-family: var(--font-display);
  font-size: 26px;
  color: #FFFFFF;
  margin: 0 0 2px;
}
.bvs-drawer__legal,
.bvs-drawer__address { margin: 0 0 6px; font-size: 14px; color: var(--on-dark-soft); }
.bvs-drawer__legal { font-size: 11px; font-weight: 600; letter-spacing: 1.6px; text-transform: uppercase; }
.bvs-drawer__tel { color: #FFFFFF; font-size: 15px; text-decoration: none; border-bottom: 1px solid rgba(255, 255, 255, 0.45); }

body.bvs-locked { overflow: hidden; }

/* --------------------------------------------------------------------------
   Branch chooser dialog
   -------------------------------------------------------------------------- */

.bvs-modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; padding: var(--gutter); }
.bvs-modal[hidden] { display: none; }
.bvs-modal__scrim { position: absolute; inset: 0; background: var(--scrim); }
.bvs-modal__panel {
  position: relative;
  width: 100%;
  max-width: 880px;
  max-height: 88vh;
  overflow-y: auto;
  background: #FFFFFF;
  border-radius: 0;
  padding: 48px 44px 44px;
}
@media (max-width: 599px) { .bvs-modal__panel { padding: 44px 22px 28px; } }

.bvs-modal__close {
  position: absolute; top: 16px; right: 16px;
  width: 42px; height: 42px;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent; border: 1px solid var(--hairline); border-radius: 0;
  color: var(--ink); cursor: pointer;
}
.bvs-modal__close:hover { background: var(--surface); }

.bvs-modal__title { margin: 0 0 var(--sp-md); font-size: clamp(28px, 3.4vw, 40px); }

.bvs-modal__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0; }
@media (max-width: 767px) { .bvs-modal__grid { grid-template-columns: 1fr; } }

.bvs-branchcard { padding: var(--sp-md) var(--sp-md) var(--sp-md) 0; border-top: 1px solid var(--hairline); }
.bvs-modal__grid .bvs-branchcard + .bvs-branchcard { padding-left: var(--sp-md); border-left: 1px solid var(--hairline); }
@media (max-width: 767px) {
  .bvs-modal__grid .bvs-branchcard + .bvs-branchcard { padding-left: 0; border-left: 0; }
}
.bvs-branchcard__name { font-size: 30px; margin: 0 0 2px; }
.bvs-branchcard__legal { font-size: 11px; font-weight: 600; letter-spacing: 1.6px; text-transform: uppercase; color: var(--muted); margin: 0 0 12px; }
.bvs-branchcard__address { font-size: 15px; margin: 0 0 6px; }
.bvs-branchcard__tel { display: inline-block; margin-bottom: 20px; color: var(--ink-soft); font-size: 15px; text-decoration: none; border-bottom: 1px solid var(--hairline); }
.bvs-branchcard__tel:hover { color: var(--accent); border-bottom-color: var(--accent); }
.bvs-branchcard .bvs-btn { display: flex; width: 100%; margin-bottom: 16px; }

.bvs-modal__all { margin-top: var(--sp-md); }

/* --------------------------------------------------------------------------
   Closing booking band
   -------------------------------------------------------------------------- */

.bvs-band { background: var(--deep); color: var(--on-dark-soft); padding: var(--sp-xl) 0; }
.bvs-band__inner { display: grid; grid-template-columns: 1fr 1.25fr; gap: var(--sp-lg); align-items: start; }
@media (max-width: 900px) { .bvs-band__inner { grid-template-columns: 1fr; gap: var(--sp-md); } }
.bvs-band__title { color: #FFFFFF; font-size: clamp(30px, 3.4vw, 44px); margin: 0 0 12px; }
.bvs-band__text { margin: 0; max-width: 42ch; }
.bvs-band__branches { display: grid; grid-template-columns: 1fr 1fr; gap: 0; }
@media (max-width: 640px) { .bvs-band__branches { grid-template-columns: 1fr; } }
.bvs-band__branch { padding: 0 var(--sp-md) 0 0; }
.bvs-band__branches .bvs-band__branch + .bvs-band__branch { padding: 0 0 0 var(--sp-md); border-left: 1px solid var(--on-dark-line); }
@media (max-width: 640px) {
  .bvs-band__branch { padding: 0 0 var(--sp-md); }
  .bvs-band__branches .bvs-band__branch + .bvs-band__branch { padding: var(--sp-md) 0 0; border-left: 0; border-top: 1px solid var(--on-dark-line); }
}
.bvs-band__branchname { color: #FFFFFF; font-size: 26px; margin: 0 0 6px; }
.bvs-band__address { font-size: 14px; margin: 0 0 20px; }
.bvs-band__branch .bvs-btn { display: flex; width: 100%; }

/* --------------------------------------------------------------------------
   Articles and the blog
   -------------------------------------------------------------------------- */

.bvs-article__head { padding: var(--sp-xl) 0 var(--sp-md); }
.bvs-article__title { margin: 0 0 12px; }
.bvs-article__meta { font-size: 13px; letter-spacing: 1px; text-transform: uppercase; color: var(--muted); margin: 0; }
.bvs-article__cover { margin-bottom: var(--sp-lg); }
.bvs-article__cover img { display: block; width: 100%; max-height: 60vh; object-fit: cover; }
.bvs-article__body { padding-bottom: var(--sp-lg); }
.bvs-article__foot { padding-bottom: var(--sp-xl); }

.bvs-prose { max-width: var(--wrap-narrow); margin-inline: auto; padding-inline: var(--gutter); font-size: 18px; }
.bvs-prose h2 { margin-top: 1.6em; }
.bvs-prose h3 { margin-top: 1.4em; }
.bvs-prose ul, .bvs-prose ol { padding-left: 20px; margin: 0 0 1.15em; }
.bvs-prose li { margin-bottom: 10px; }
.bvs-prose li::marker { color: var(--accent); }
.bvs-prose img { margin: var(--sp-md) 0; }

.bvs-archive__head { padding: var(--sp-xl) 0 var(--sp-lg); }
.bvs-archive__title { margin: 0 0 14px; }
.bvs-archive__intro { color: var(--ink-soft); }

.bvs-postgrid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-lg) var(--sp-md);
  padding-bottom: var(--sp-xl);
}
@media (max-width: 980px) { .bvs-postgrid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 620px) { .bvs-postgrid { grid-template-columns: 1fr; gap: var(--sp-md); } }

.bvs-postcard { display: flex; flex-direction: column; }
.bvs-postcard__media { display: block; margin-bottom: 20px; overflow: hidden; background: var(--surface); }
.bvs-postcard__media img { display: block; width: 100%; aspect-ratio: 3 / 2; object-fit: cover; transition: transform 0.5s ease; }
.bvs-postcard:hover .bvs-postcard__media img { transform: scale(1.03); }
.bvs-postcard__placeholder { display: block; width: 100%; aspect-ratio: 3 / 2; background: linear-gradient(160deg, var(--surface), #E7EBE7); }
.bvs-postcard__date { font-size: 11px; font-weight: 600; letter-spacing: 1.6px; text-transform: uppercase; color: var(--muted); margin: 0 0 8px; }
.bvs-postcard__title { font-size: 26px; line-height: 1.2; margin: 0 0 10px; }
.bvs-postcard__title a { color: var(--ink); text-decoration: none; }
.bvs-postcard__title a:hover { color: var(--accent); }
.bvs-postcard__excerpt { font-size: 15px; margin: 0 0 16px; }
.bvs-postcard__more { font-size: 12px; font-weight: 600; letter-spacing: 1.4px; text-transform: uppercase; color: var(--accent); border-bottom: 1px solid currentColor; padding-bottom: 3px; align-self: flex-start; margin-top: auto; }

.bvs-pagination { padding-bottom: var(--sp-xl); }
.bvs-pagination__inner { display: flex; justify-content: space-between; gap: var(--sp-md); border-top: 1px solid var(--hairline); padding-top: var(--sp-md); }
.bvs-pagination a { font-size: 13px; font-weight: 600; letter-spacing: 1.2px; text-transform: uppercase; text-decoration: none; }
.bvs-empty { padding: var(--sp-lg) 0 var(--sp-xl); color: var(--muted); }

/* --------------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------------- */

.bvs-footer { background: var(--deep); color: var(--on-dark-soft); padding: var(--sp-xl) 0 var(--sp-lg); font-size: 15px; }
.bvs-footer a { color: var(--on-dark-soft); text-decoration: none; }
.bvs-footer a:hover { color: #FFFFFF; }

.bvs-footer__masthead {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--sp-lg);
  align-items: center;
  padding-bottom: var(--sp-lg);
  border-bottom: 1px solid var(--on-dark-line);
}
@media (max-width: 900px) { .bvs-footer__masthead { grid-template-columns: 1fr; gap: var(--sp-md); } }

.bvs-footer__marks { display: flex; align-items: center; gap: 20px; }
.bvs-footer__marks img { display: block; width: auto; }
.bvs-footer__marks img:first-of-type { height: 62px; }
.bvs-footer__marks img:last-of-type { height: 38px; }
.bvs-footer__rule { display: block; width: 1px; height: 48px; background: rgba(255, 255, 255, 0.26); }
.bvs-footer__standfirst { margin: 0; max-width: 56ch; font-size: 16px; }

.bvs-footer__branches {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  padding: var(--sp-lg) 0;
  border-bottom: 1px solid var(--on-dark-line);
}
@media (max-width: 780px) { .bvs-footer__branches { grid-template-columns: 1fr; } }
.bvs-footer__branch { padding-right: var(--sp-lg); }
.bvs-footer__branches .bvs-footer__branch + .bvs-footer__branch { padding: 0 0 0 var(--sp-lg); border-left: 1px solid var(--on-dark-line); }
@media (max-width: 780px) {
  .bvs-footer__branch { padding: 0 0 var(--sp-md); }
  .bvs-footer__branches .bvs-footer__branch + .bvs-footer__branch { padding: var(--sp-md) 0 0; border-left: 0; border-top: 1px solid var(--on-dark-line); }
}
.bvs-footer__branchname { color: #FFFFFF; font-size: 30px; margin: 0 0 2px; }
.bvs-footer__legal { font-size: 11px; font-weight: 600; letter-spacing: 1.6px; text-transform: uppercase; color: var(--muted); margin: 0 0 16px; }
.bvs-footer__address { font-style: normal; line-height: 1.9; margin: 0 0 16px; }
.bvs-footer__address a { border-bottom: 1px solid transparent; }
.bvs-footer__address a:hover { border-bottom-color: rgba(255, 255, 255, 0.6); }
.bvs-footer__hours { list-style: none; margin: 0 0 24px; padding: 0; font-size: 14px; }
.bvs-footer__hours li { padding-left: 16px; position: relative; margin-bottom: 4px; }
.bvs-footer__hours li::before { content: ""; position: absolute; left: 0; top: 11px; width: 6px; height: 1px; background: var(--on-dark-soft); }
.bvs-footer__branchlinks { display: flex; flex-wrap: wrap; align-items: center; gap: 20px; }
.bvs-footer__branchlinks .bvs-btn { min-height: 48px; padding: 14px 26px; }

.bvs-footer__cols {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-md);
  padding: var(--sp-lg) 0;
  border-bottom: 1px solid var(--on-dark-line);
}
@media (max-width: 780px) { .bvs-footer__cols { grid-template-columns: 1fr 1fr; gap: var(--sp-md); } }
@media (max-width: 460px) { .bvs-footer__cols { grid-template-columns: 1fr; } }
.bvs-footer__coltitle { font-family: var(--font-body); font-size: 11px; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; color: #FFFFFF; margin: 0 0 18px; }
.bvs-footer__col ul { list-style: none; margin: 0; padding: 0; }
.bvs-footer__col li { margin-bottom: 10px; font-size: 15px; }

.bvs-footer__base { padding-top: var(--sp-md); font-size: 13px; color: var(--muted); }
.bvs-footer__base p { margin: 0; }

/* --------------------------------------------------------------------------
   Site-wide layer over existing Elementor content.
   Family, colour and controls are forced; per-page sizes and spacing are left
   alone so no existing page loses its composition.
   -------------------------------------------------------------------------- */

.bvs .elementor-widget-heading .elementor-heading-title,
.bvs .elementor-widget-image-box .elementor-image-box-title,
.bvs .elementor-widget-icon-box .elementor-icon-box-title,
.bvs .elementor-widget-accordion .elementor-tab-title,
.bvs .elementor-widget-toggle .elementor-tab-title,
.bvs .elementor-widget-testimonial .elementor-testimonial-name,
.bvs .elementor-slide-heading {
  font-family: var(--font-display) !important;
  font-weight: 500 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  line-height: 1.14 !important;
}

.bvs .elementor-widget-heading .elementor-heading-title { color: var(--ink); }

.bvs .elementor-widget-text-editor,
.bvs .elementor-widget-text-editor p,
.bvs .elementor-widget-text-editor li,
.bvs .elementor-widget-image-box .elementor-image-box-description,
.bvs .elementor-widget-icon-box .elementor-icon-box-description,
.bvs .elementor-widget-icon-list .elementor-icon-list-text,
.bvs .elementor-widget-accordion .elementor-tab-content,
.bvs .elementor-widget-toggle .elementor-tab-content,
.bvs .elementor-slide-description {
  font-family: var(--font-body) !important;
  font-weight: 400 !important;
  letter-spacing: 0 !important;
}

.bvs .elementor-widget-text-editor,
.bvs .elementor-widget-text-editor p,
.bvs .elementor-widget-text-editor li {
  line-height: 1.7 !important;
  color: var(--ink-soft);
}
.bvs .elementor-widget-text-editor strong,
.bvs .elementor-widget-text-editor b { font-weight: 700; color: var(--ink); }

/* Buttons everywhere Elementor draws one. */
.bvs .elementor-button,
.bvs .elementor-button-link,
.bvs .elementor-widget-button .elementor-button,
.bvs .elementor-slide-button {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  min-height: 52px;
  padding: 16px 34px !important;
  border: 1px solid transparent !important;
  border-radius: 0 !important;
  background-color: var(--accent) !important;
  color: #FFFFFF !important;
  font-family: var(--font-body) !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: 1.6px !important;
  line-height: 1 !important;
  text-transform: uppercase !important;
  text-decoration: none !important;
  box-shadow: none !important;
  transition: background-color 0.2s ease;
}
.bvs .elementor-button:hover,
.bvs .elementor-slide-button:hover { background-color: var(--accent-deep) !important; color: #FFFFFF !important; }
.bvs .elementor-button .elementor-button-content-wrapper { gap: 8px; }
.bvs .elementor-button-text { font: inherit; letter-spacing: inherit; }

/* Square corners, no stray shadows. */
.bvs .elementor-widget img,
.bvs .elementor-image img,
.bvs .elementor-image-box-img img,
.bvs .elementor-slides .swiper-slide-bg,
.bvs .elementor-image-carousel img,
.bvs .elementor-testimonial-wrapper,
.bvs .elementor-widget-image-box .elementor-image-box-wrapper {
  border-radius: 0 !important;
}
.bvs .elementor-widget img { box-shadow: none; }

/* Image boxes read as flat editorial cards, never bordered boxes. */
.bvs .elementor-widget-image-box .elementor-image-box-img { margin-bottom: 20px !important; }
.bvs .elementor-widget-image-box .elementor-image-box-img img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.bvs .elementor-widget-image-box .elementor-image-box-description { font-size: 15px; line-height: 1.7 !important; color: var(--ink-soft); }

/* Forms */
.bvs input[type="text"],
.bvs input[type="email"],
.bvs input[type="tel"],
.bvs input[type="url"],
.bvs input[type="number"],
.bvs input[type="search"],
.bvs input[type="password"],
.bvs input[type="date"],
.bvs select,
.bvs textarea {
  width: 100%;
  min-height: 52px;
  padding: 14px 16px;
  background: #FFFFFF;
  border: 1px solid var(--hairline);
  border-radius: 0 !important;
  font-family: var(--font-body);
  font-size: 16px;
  color: var(--ink-soft);
  box-shadow: none;
}
.bvs textarea { min-height: 140px; line-height: 1.6; }
.bvs input:focus, .bvs select:focus, .bvs textarea:focus { border-color: var(--accent); outline: none; box-shadow: 0 0 0 1px var(--accent); }
.bvs label { display: block; font-size: 13px; font-weight: 600; letter-spacing: 0.6px; color: var(--ink); margin-bottom: 8px; }
.bvs input[type="submit"],
.bvs button[type="submit"] {
  width: auto; min-height: 52px; padding: 16px 34px;
  background: var(--accent); color: #FFFFFF; border: 0; border-radius: 0;
  font-family: var(--font-body); font-size: 13px; font-weight: 600;
  letter-spacing: 1.6px; text-transform: uppercase; cursor: pointer;
}
.bvs input[type="submit"]:hover, .bvs button[type="submit"]:hover { background: var(--accent-deep); }

/* Elementor posts widget, wherever a page lists articles. */
.bvs .elementor-posts .elementor-post__card,
.bvs .elementor-posts .elementor-post { border: 0 !important; border-radius: 0 !important; box-shadow: none !important; background: transparent !important; }
.bvs .elementor-posts .elementor-post__thumbnail__link { margin-bottom: 18px; }
.bvs .elementor-posts .elementor-post__title,
.bvs .elementor-posts .elementor-post__title a {
  font-family: var(--font-display) !important;
  font-size: 25px !important;
  font-weight: 500 !important;
  line-height: 1.2 !important;
  text-transform: none !important;
  color: var(--ink) !important;
}
.bvs .elementor-posts .elementor-post__title a:hover { color: var(--accent) !important; }
.bvs .elementor-posts .elementor-post__excerpt p { font-family: var(--font-body) !important; font-size: 15px !important; line-height: 1.7 !important; color: var(--ink-soft) !important; }
.bvs .elementor-posts .elementor-post__meta-data { font-size: 11px !important; letter-spacing: 1.4px; text-transform: uppercase; color: var(--muted) !important; }
.bvs .elementor-posts .elementor-post__read-more {
  font-family: var(--font-body) !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  letter-spacing: 1.4px !important;
  text-transform: uppercase !important;
  color: var(--accent) !important;
  border-bottom: 1px solid currentColor;
  padding-bottom: 3px;
}

/* Tables (price lists) */
.bvs table { width: 100%; border-collapse: collapse; font-size: 15px; }
.bvs th, .bvs td { padding: 14px 12px; text-align: left; border-bottom: 1px solid var(--hairline); }
.bvs th { font-size: 11px; font-weight: 600; letter-spacing: 1.6px; text-transform: uppercase; color: var(--ink); }

/* Nothing may push the page sideways. */
.bvs .elementor-section,
.bvs .elementor-container,
.bvs .e-con,
.bvs .elementor-widget-wrap { max-width: 100%; }
.bvs img, .bvs iframe, .bvs video { max-width: 100%; }
.bvs .elementor-widget-google_maps iframe,
.bvs iframe { display: block; }

@media (prefers-reduced-motion: reduce) {
  .bvs *, .bvs *::before, .bvs *::after {
    animation-duration: 0.001ms !important;
    transition-duration: 0.001ms !important;
  }
}
/* --------------------------------------------------------------------------
   Specificity guard.
   Elementor's kit styles land at (0,1,1) via ".elementor-kit-22 a" and
   ".elementor-kit-22 button", which outranks a single component class. The
   shell restates its own colours at (0,2,1) so the kit never repaints the
   header, drawer, dialog or footer. Nothing here changes the design; it only
   wins the cascade.
   -------------------------------------------------------------------------- */

body.bvs .bvs-btn {
  background-color: var(--accent);
  color: #FFFFFF;
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 1.6px;
  line-height: 1;
  text-transform: uppercase;
  border: 1px solid transparent;
  border-radius: 0;
}
body.bvs .bvs-btn:hover { background-color: var(--accent-deep); color: #FFFFFF; }
body.bvs .bvs-btn--onDark { background-color: #FFFFFF; color: var(--deep); }
body.bvs .bvs-btn--onDark:hover { background-color: var(--on-dark-soft); color: var(--deep); }
body.bvs .bvs-btn--ghost { background-color: transparent; border-color: currentColor; color: var(--ink); }
body.bvs .bvs-btn--ghost:hover { background-color: var(--ink); border-color: var(--ink); color: #FFFFFF; }
body.bvs .bvs-bar__cta { min-height: 44px; padding: 12px 22px; font-size: 12px; }

body.bvs .bvs-utility__branch,
body.bvs .bvs-utility__branch:hover { color: #FFFFFF; text-decoration: none; }
body.bvs .bvs-utility__branchname { color: var(--on-dark-soft); }

body.bvs .bvs-nav__link { color: rgba(255, 255, 255, 0.88); text-decoration: none; }
body.bvs .bvs-nav__link:hover,
body.bvs .bvs-nav__item.current-menu-item > .bvs-nav__link,
body.bvs .bvs-nav__item.current-menu-ancestor > .bvs-nav__link { color: #FFFFFF; }
body.bvs .bvs-nav .sub-menu a { color: var(--ink-soft); text-decoration: none; }
body.bvs .bvs-nav .sub-menu a:hover { color: var(--accent); }

body.bvs .bvs-drawer a { color: #FFFFFF; text-decoration: none; }
body.bvs .bvs-drawer .sub-menu a { color: var(--on-dark-soft); }
body.bvs .bvs-drawer .sub-menu a:hover { color: #FFFFFF; }
body.bvs .bvs-drawer__list > li > a { font-family: var(--font-display); }

body.bvs .bvs-footer a { color: var(--on-dark-soft); text-decoration: none; }
body.bvs .bvs-footer a:hover { color: #FFFFFF; }
body.bvs .bvs-footer .bvs-btn { color: var(--deep); }
body.bvs .bvs-footer .bvs-btn:hover { color: var(--deep); }
body.bvs .bvs-footer__branchname,
body.bvs .bvs-footer__coltitle,
body.bvs .bvs-band__title,
body.bvs .bvs-band__branchname,
body.bvs .bvs-drawer__branchname { color: #FFFFFF; }
body.bvs .bvs-band a.bvs-btn { color: var(--deep); }

body.bvs .bvs-textlink { color: var(--accent); text-decoration: none; }
body.bvs .bvs-textlink:hover { color: var(--accent-deep); }
body.bvs .bvs-textlink--onDark,
body.bvs .bvs-textlink--onDark:hover { color: #FFFFFF; }

body.bvs .bvs-modal__panel .bvs-branchcard__name { color: var(--ink); }
body.bvs .bvs-branchcard__tel { color: var(--ink-soft); text-decoration: none; }
body.bvs .bvs-branchcard__tel:hover { color: var(--accent); }

body.bvs .bvs-postcard__title a { color: var(--ink); text-decoration: none; }
body.bvs .bvs-postcard__title a:hover { color: var(--accent); }
body.bvs .bvs-eyebrow a { color: inherit; text-decoration: none; }
body.bvs .bvs-pagination a { color: var(--accent); text-decoration: none; }

body.bvs .bvs-article__title,
body.bvs .bvs-archive__title,
body.bvs .bvs-postcard__title,
body.bvs .bvs-modal__title,
body.bvs .bvs-branchcard__name,
body.bvs .bvs-footer__branchname,
body.bvs .bvs-band__title,
body.bvs .bvs-band__branchname,
body.bvs .bvs-drawer__branchname {
  font-family: var(--font-display);
  font-weight: 500;
  text-transform: none;
}
body.bvs .bvs-footer__coltitle,
body.bvs .bvs-eyebrow,
body.bvs .bvs-footer__legal,
body.bvs .bvs-branchcard__legal,
body.bvs .bvs-drawer__legal {
  font-family: var(--font-body);
  font-weight: 600;
  text-transform: uppercase;
}

/* Touch devices open the Treatments panel on first tap. */
.bvs-nav__item.is-open > .sub-menu { opacity: 1; visibility: visible; transform: translateY(0); }

/* Hello Elementor leftovers from the previous header and footer. */
.bvs .site-header,
.bvs .site-footer { display: none !important; }
/* Shell headings are h1/h2/h3 elements, so the kit's heading sizes reach them
   at (0,1,1). Restate every shell size at (0,2,1). */
body.bvs .bvs-footer__coltitle { font-size: 11px; line-height: 1.4; letter-spacing: 2px; }
body.bvs .bvs-footer__branchname { font-size: 30px; line-height: 1.15; }
body.bvs .bvs-band__title { font-size: clamp(30px, 3.4vw, 44px); line-height: 1.12; }
body.bvs .bvs-band__branchname { font-size: 26px; line-height: 1.2; }
body.bvs .bvs-drawer__branchname { font-size: 26px; line-height: 1.2; }
body.bvs .bvs-branchcard__name { font-size: 30px; line-height: 1.15; }
body.bvs .bvs-modal__title { font-size: clamp(28px, 3.4vw, 40px); line-height: 1.12; }
body.bvs .bvs-postcard__title { font-size: 26px; line-height: 1.2; }
body.bvs .bvs-article__title,
body.bvs .bvs-archive__title { font-size: clamp(34px, 4.6vw, 54px); line-height: 1.06; }
body.bvs .bvs-drawer__list > li > a { font-size: 28px; line-height: 1.2; }

/* Footer trim: the branch actions need room to breathe on one row. */
.bvs-footer__branchlinks { row-gap: 14px; }
.bvs-footer__branchlinks .bvs-btn { flex: 0 0 auto; }
.bvs-footer { padding-bottom: var(--sp-md); }
.bvs-footer__hours { margin-bottom: 20px; }
/* Buttons that sit on a dark ground invert, per the direction's button rule. */
body.bvs .elementor-button.bvs-btn-invert,
body.bvs .elementor-slide-button.bvs-btn-invert {
  background-color: #FFFFFF !important;
  color: var(--deep) !important;
}
body.bvs .elementor-button.bvs-btn-invert:hover,
body.bvs .elementor-slide-button.bvs-btn-invert:hover {
  background-color: var(--on-dark-soft) !important;
  color: var(--deep) !important;
}
/* --------------------------------------------------------------------------
   Phone: the header is redrawn for the small screen, not shrunk.
   -------------------------------------------------------------------------- */

@media (max-width: 767px) {
  .bvs-bar__inner { min-height: var(--bar-h-sm); gap: 12px; }
  .bvs-brand { gap: 12px; }
  .bvs-brand__mark--spa { height: 40px; }
  .bvs-brand__mark--clinic { height: 25px; }
  .bvs-brand__rule { height: 30px; }
  .bvs-burger { width: 42px; height: 42px; }
  .bvs-bar__actions { gap: 10px; }
  .bvs-drawer { padding-top: calc(var(--bar-h-sm) + 20px); }
}

@media (max-width: 479px) {
  .bvs-brand__mark--spa { height: 36px; }
  .bvs-brand__mark--clinic { height: 22px; }
  .bvs-brand__rule { height: 26px; }
}

/* Compact booking action stays on the phone header where there is room. */
@media (max-width: 599px) {
  .bvs-bar__cta { display: inline-flex; min-height: 40px; padding: 11px 14px; font-size: 11px; letter-spacing: 1.2px; }
  .bvs-bar__cta::after { content: ""; }
}
@media (max-width: 379px) {
  .bvs-bar__cta { display: none; }
}

/* Buttons run full width on the phone, as the direction requires. */
@media (max-width: 767px) {
  body.bvs .bvs-main .elementor-widget-button .elementor-button,
  body.bvs .bvs-band__branch .bvs-btn,
  body.bvs .bvs-footer__branchlinks .bvs-btn,
  body.bvs .bvs-branchcard .bvs-btn {
    display: flex;
    width: 100%;
  }
  body.bvs .bvs-footer__branchlinks { flex-direction: column; align-items: flex-start; gap: 16px; }
  body.bvs .bvs-footer__branchlinks .bvs-btn { flex: 1 1 auto; }
}

/* Tap targets and readable measures on small screens. */
@media (max-width: 767px) {
  body.bvs { font-size: 16px; }
  .bvs-utility { display: none; }
  .bvs-footer { padding-top: var(--sp-lg); font-size: 15px; }
  .bvs-footer__marks img:first-of-type { height: 52px; }
  .bvs-footer__marks img:last-of-type { height: 32px; }
  .bvs-modal__panel { max-height: 92vh; }
}
/* ==========================================================================
   Page section system.
   Rebuilt pages are Elementor containers carrying these classes; the layout
   itself lives here so the client edits content in Elementor without having
   to maintain spacing and grid settings by hand.
   ========================================================================== */

body.bvs .bvs-sec { padding-block: var(--sp-xl); }
body.bvs .bvs-sec--tight { padding-block: var(--sp-lg); }
body.bvs .bvs-sec--flush { padding-block: 0; }
body.bvs .bvs-sec--white { background-color: var(--bg); }
body.bvs .bvs-sec--surface { background-color: var(--surface); }
body.bvs .bvs-sec--deep { background-color: var(--deep); }

body.bvs .bvs-sec--deep .elementor-heading-title,
body.bvs .bvs-sec--deep .elementor-widget-text-editor,
body.bvs .bvs-sec--deep .elementor-widget-text-editor p,
body.bvs .bvs-sec--deep .elementor-widget-text-editor li { color: #FFFFFF; }
body.bvs .bvs-sec--deep .elementor-widget-text-editor,
body.bvs .bvs-sec--deep .elementor-widget-text-editor p { color: var(--on-dark-soft); }

/* Rows and grids ---------------------------------------------------------- */

body.bvs .bvs-row > .e-con-inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-lg);
  align-items: center;
}
body.bvs .bvs-row--top > .e-con-inner { align-items: start; }
body.bvs .bvs-row--wide > .e-con-inner { grid-template-columns: 1.15fr 1fr; }
body.bvs .bvs-row--narrowfirst > .e-con-inner { grid-template-columns: 1fr 1.15fr; }

body.bvs .bvs-grid2 > .e-con-inner { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--sp-lg) var(--sp-md); align-items: start; }
body.bvs .bvs-grid3 > .e-con-inner { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-lg) var(--sp-md); align-items: start; }
body.bvs .bvs-grid4 > .e-con-inner { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--sp-md); align-items: center; }

body.bvs .bvs-row > .e-con-inner > .e-con,
body.bvs .bvs-grid2 > .e-con-inner > .e-con,
body.bvs .bvs-grid3 > .e-con-inner > .e-con,
body.bvs .bvs-grid4 > .e-con-inner > .e-con {
  width: auto;
  max-width: 100%;
  min-width: 0;
  padding: 0;
}

@media (max-width: 1000px) {
  body.bvs .bvs-grid3 > .e-con-inner { grid-template-columns: repeat(2, 1fr); }
  body.bvs .bvs-grid4 > .e-con-inner { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 860px) {
  body.bvs .bvs-row > .e-con-inner,
  body.bvs .bvs-row--wide > .e-con-inner,
  body.bvs .bvs-row--narrowfirst > .e-con-inner { grid-template-columns: 1fr; gap: var(--sp-md); }
  body.bvs .bvs-row--reverse > .e-con-inner > .e-con:first-child { order: 2; }
}
@media (max-width: 620px) {
  body.bvs .bvs-grid2 > .e-con-inner,
  body.bvs .bvs-grid3 > .e-con-inner { grid-template-columns: 1fr; gap: var(--sp-md); }
}

/* On desktop the reversed split puts the image on the right. */
@media (min-width: 861px) {
  body.bvs .bvs-row--reverse > .e-con-inner > .e-con:first-child { order: 2; }
}

/* Narrow measures --------------------------------------------------------- */

body.bvs .bvs-narrow > .e-con-inner { max-width: 700px; margin-inline: auto; }
body.bvs .bvs-centre > .e-con-inner { text-align: center; align-items: center; }
body.bvs .bvs-centre .elementor-widget-text-editor { margin-inline: auto; max-width: 680px; }

/* Hero -------------------------------------------------------------------- */

body.bvs .bvs-hero { position: relative; min-height: 78vh; padding-block: var(--sp-xl); }
body.bvs .bvs-hero > .e-con-inner { justify-content: flex-end; min-height: inherit; }
body.bvs .bvs-hero .elementor-heading-title { color: #FFFFFF; font-size: clamp(38px, 6vw, 76px); line-height: 1.02; max-width: 15ch; }
body.bvs .bvs-hero .elementor-widget-text-editor,
body.bvs .bvs-hero .elementor-widget-text-editor p { color: #FFFFFF; max-width: 46ch; }
@media (max-width: 767px) {
  body.bvs .bvs-hero { min-height: 72vh; padding-block: var(--sp-lg); }
  body.bvs .bvs-hero .elementor-heading-title { max-width: 100%; }
}

/* Action rows ------------------------------------------------------------- */

body.bvs .bvs-actions > .e-con-inner { display: flex; flex-direction: row; flex-wrap: wrap; gap: 16px; align-items: center; }
body.bvs .bvs-actions > .e-con-inner > .e-con,
body.bvs .bvs-actions .elementor-widget-button { width: auto; max-width: none; }
@media (max-width: 620px) {
  body.bvs .bvs-actions > .e-con-inner { flex-direction: column; align-items: stretch; }
}

/* Secondary links keep every existing destination without competing with the
   primary action: same widget, rendered as an underlined text link. */
body.bvs .bvs-links > .e-con-inner { display: flex; flex-direction: row; flex-wrap: wrap; gap: 14px 26px; align-items: center; }
body.bvs .bvs-links .elementor-widget-button { width: auto; }
body.bvs .bvs-links .elementor-button {
  min-height: 0 !important;
  padding: 0 0 3px !important;
  background-color: transparent !important;
  color: var(--accent) !important;
  border: 0 !important;
  border-bottom: 1px solid currentColor !important;
  font-size: 12px !important;
  letter-spacing: 1.3px !important;
}
body.bvs .bvs-links .elementor-button:hover { background-color: transparent !important; color: var(--accent-deep) !important; }
body.bvs .bvs-sec--deep .bvs-links .elementor-button,
body.bvs .bvs-links--onDark .elementor-button { color: #FFFFFF !important; }
@media (max-width: 620px) {
  body.bvs .bvs-links > .e-con-inner { flex-direction: column; align-items: flex-start; gap: 14px; }
  body.bvs .bvs-links .elementor-button { display: inline-flex !important; width: auto !important; }
}

/* Cards ------------------------------------------------------------------- */

body.bvs .bvs-card { display: flex; flex-direction: column; gap: 14px; }
body.bvs .bvs-card .elementor-widget:not(:last-child) { --kit-widget-spacing: 0px; }
body.bvs .bvs-card .elementor-widget-image img,
body.bvs .bvs-card .elementor-widget-slides .elementor-slides { aspect-ratio: 3 / 2; object-fit: cover; }
body.bvs .bvs-card .elementor-heading-title { font-size: 26px; line-height: 1.2; }
body.bvs .bvs-card .elementor-widget-text-editor { font-size: 15px; }
body.bvs .bvs-card--hair { padding-top: var(--sp-md); border-top: 1px solid var(--hairline); }
body.bvs .bvs-sec--deep .bvs-card--hair { border-top-color: var(--on-dark-line); }

/* Slides inside a card keep a fixed, predictable frame. */
body.bvs .bvs-card .elementor-slides .swiper-slide-bg,
body.bvs .bvs-media .elementor-slides .swiper-slide-bg { background-size: cover; background-position: center; }

/* Media blocks ------------------------------------------------------------ */

body.bvs .bvs-media img { display: block; width: 100%; object-fit: cover; }
body.bvs .bvs-media--tall img { aspect-ratio: 4 / 5; }
body.bvs .bvs-media--wide img { aspect-ratio: 3 / 2; }

/* Statement --------------------------------------------------------------- */

body.bvs .bvs-statement .elementor-heading-title {
  font-size: clamp(28px, 3.6vw, 46px);
  line-height: 1.14;
  max-width: 22ch;
  margin-inline: auto;
}
body.bvs .bvs-quote .elementor-widget-text-editor,
body.bvs .bvs-quote .elementor-widget-text-editor p {
  font-family: var(--font-display) !important;
  font-size: clamp(21px, 2.3vw, 27px) !important;
  line-height: 1.4 !important;
  color: #FFFFFF;
}

/* A price figure is the one other place moss is allowed. */
body.bvs .bvs-price .elementor-heading-title { color: var(--accent); font-size: 30px; }
body.bvs .bvs-sec--deep .bvs-price .elementor-heading-title { color: #FFFFFF; }

/* Eyebrow-style small label rendered from a heading widget set to p. */
body.bvs .bvs-label .elementor-heading-title {
  font-family: var(--font-body) !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  letter-spacing: 2px !important;
  text-transform: uppercase !important;
  color: var(--muted) !important;
  line-height: 1.4 !important;
}
body.bvs .bvs-sec--deep .bvs-label .elementor-heading-title { color: var(--on-dark-soft) !important; }

/* A heading widget carrying a paragraph reads as body copy, not a headline. */
body.bvs .bvs-asbody .elementor-heading-title {
  font-family: var(--font-body) !important;
  font-size: 17px !important;
  font-weight: 400 !important;
  line-height: 1.7 !important;
  color: var(--ink-soft) !important;
  text-transform: none !important;
  max-width: 68ch;
}
body.bvs .bvs-sec--deep .bvs-asbody .elementor-heading-title { color: var(--on-dark-soft) !important; }
body.bvs .bvs-sec--pt0 { padding-top: 0; }
body.bvs .bvs-sec--pb0 { padding-bottom: 0; }
body.bvs .bvs-sec--band { padding-block: var(--sp-md); }

/* Action and link rows appear both as top-level boxed containers and as
   nested full-width children, so both shapes are matched. */
body.bvs .bvs-actions.e-con-full,
body.bvs .bvs-links.e-con-full {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  width: 100%;
}
body.bvs .bvs-actions.e-con-full { gap: 16px; }
body.bvs .bvs-links.e-con-full { gap: 14px 26px; }
body.bvs .bvs-centre .bvs-actions.e-con-full,
body.bvs .bvs-centre .bvs-actions > .e-con-inner { justify-content: center; }
@media (max-width: 620px) {
  body.bvs .bvs-actions.e-con-full { flex-direction: column; align-items: stretch; }
  body.bvs .bvs-links.e-con-full { flex-direction: column; align-items: flex-start; gap: 14px; }
}

/* Cards sit as full-width children of a grid. */
body.bvs .bvs-card.e-con-full { display: flex; flex-direction: column; gap: 16px; align-items: stretch; }
body.bvs .bvs-card.e-con-full > .elementor-widget { width: 100%; }
/* Hero must resolve inside the first viewport with the primary action visible. */
body.bvs .bvs-hero { min-height: 76vh; padding-block: var(--sp-lg); }
body.bvs .bvs-hero > .e-con-inner { justify-content: center; gap: var(--sp-md); }
body.bvs .bvs-hero .elementor-heading-title { font-size: clamp(30px, 4.4vw, 56px); line-height: 1.04; max-width: 18ch; }
@media (max-width: 767px) {
  body.bvs .bvs-hero { min-height: 66vh; }
  body.bvs .bvs-hero .elementor-heading-title { font-size: clamp(28px, 8vw, 40px); }
}
/* Photography frames: one ratio per context, cropped rather than letterboxed. */
body.bvs .bvs-shot img,
body.bvs .bvs-media .elementor-widget-image img,
body.bvs .bvs-media .elementor-image-carousel img {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}
body.bvs .bvs-card .bvs-shot img { aspect-ratio: 3 / 2; }
body.bvs .bvs-media--tall .bvs-shot img { aspect-ratio: 4 / 5; }
body.bvs .elementor-image-carousel-wrapper .swiper-slide { display: block; }
body.bvs .elementor-swiper-button { color: #FFFFFF; }
body.bvs .swiper-pagination-bullet { background: var(--ink); opacity: 0.28; border-radius: 0; width: 18px; height: 2px; }
body.bvs .swiper-pagination-bullet-active { background: var(--accent); opacity: 1; }
body.bvs .elementor-image-carousel-wrapper { margin-bottom: 0; }
/* Testimonials: hairline separated, no card chrome. */
body.bvs .bvs-quotes { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-lg) var(--sp-md); text-align: left; }
@media (max-width: 980px) { body.bvs .bvs-quotes { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { body.bvs .bvs-quotes { grid-template-columns: 1fr; gap: var(--sp-md); } }
body.bvs .bvs-quote-item { margin: 0; padding-top: var(--sp-md); border-top: 1px solid var(--hairline); }
body.bvs .bvs-quote-item__text {
  margin: 0 0 16px;
  padding: 0;
  border: 0;
  font-family: var(--font-display);
  font-size: 21px;
  line-height: 1.4;
  color: var(--ink);
}
body.bvs .bvs-quote-item__by {
  font-family: var(--font-body);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 1.8px;
  text-transform: uppercase;
  color: var(--muted);
}
/* Long-form policy copy inside a single editor widget. */
body.bvs .bvs-prose-block h2 {
  font-size: 28px;
  line-height: 1.2;
  margin: 2em 0 0.5em;
}
body.bvs .bvs-prose-block > h2:first-child { margin-top: 0; }
body.bvs .bvs-prose-block p { margin-bottom: 1.15em; }

/* Contact details rendered as icon lists. */
body.bvs .elementor-widget-icon-list .elementor-icon-list-items { padding: 0; margin: 0; list-style: none; }
body.bvs .elementor-widget-icon-list .elementor-icon-list-item {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 8px;
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.6;
  color: var(--ink-soft);
}
body.bvs .elementor-widget-icon-list .elementor-icon-list-icon svg,
body.bvs .elementor-widget-icon-list .elementor-icon-list-icon i { color: var(--accent); font-size: 13px; width: 13px; }
body.bvs .elementor-widget-icon-list a { color: var(--ink-soft); text-decoration: none; border-bottom: 1px solid var(--hairline); }
body.bvs .elementor-widget-icon-list a:hover { color: var(--accent); border-bottom-color: var(--accent); }

/* Maps sit flush in the branch card, square like everything else. */
body.bvs .elementor-widget-google_maps iframe {
  width: 100%;
  border: 0;
  border-radius: 0;
  filter: grayscale(0.35) contrast(1.02);
}
body.bvs .bvs-card .elementor-widget-google_maps { margin-top: 8px; }
/* Treatment cards read as editorial entries, left aligned under the photograph. */
body.bvs .bvs-grid3 .elementor-widget-image-box .elementor-image-box-content,
body.bvs .bvs-grid2 .elementor-widget-image-box .elementor-image-box-content { text-align: left; }
body.bvs .bvs-grid3 .elementor-image-box-title,
body.bvs .bvs-grid2 .elementor-image-box-title { margin: 0 0 10px; font-size: 25px; line-height: 1.2; }
body.bvs .bvs-grid3 .elementor-image-box-description,
body.bvs .bvs-grid2 .elementor-image-box-description { margin: 0; }
body.bvs .bvs-card .bvs-links { margin-top: 4px; }
/* On the scrimmed hero and on inverted bands the primary action is solid white
   and anything after it is a white stroke, per the direction's button rule. */
body.bvs .bvs-hero .bvs-actions .elementor-button,
body.bvs .bvs-sec--deep .bvs-actions .elementor-button {
  background-color: transparent !important;
  color: #FFFFFF !important;
  border: 1px solid rgba(255, 255, 255, 0.65) !important;
}
body.bvs .bvs-hero .bvs-actions .elementor-button:hover,
body.bvs .bvs-sec--deep .bvs-actions .elementor-button:hover {
  background-color: rgba(255, 255, 255, 0.12) !important;
  border-color: #FFFFFF !important;
  color: #FFFFFF !important;
}
body.bvs .bvs-hero .bvs-actions > .elementor-widget-button:first-child .elementor-button,
body.bvs .bvs-sec--deep .bvs-actions > .elementor-widget-button:first-child .elementor-button {
  background-color: #FFFFFF !important;
  color: var(--deep) !important;
  border-color: #FFFFFF !important;
}
body.bvs .bvs-hero .bvs-actions > .elementor-widget-button:first-child .elementor-button:hover,
body.bvs .bvs-sec--deep .bvs-actions > .elementor-widget-button:first-child .elementor-button:hover {
  background-color: var(--on-dark-soft) !important;
  border-color: var(--on-dark-soft) !important;
  color: var(--deep) !important;
}
body.bvs .bvs-hero .bvs-actions { gap: 14px; }
@media (max-width: 620px) {
  body.bvs .bvs-hero .bvs-actions .elementor-widget-button { width: 100%; }
  body.bvs .bvs-hero .bvs-actions .elementor-button { width: 100%; }
}