:root {
  --hv-ink: #0e1117;
  --hv-ink-2: #161a22;
  --hv-ivory: #f6f2eb;
  --hv-paper: #fcfaf6;
  --hv-stone: #e6dfd2;
  --hv-text: #1c1f26;
  --hv-muted: #5b5e66;
  --hv-on-dark: #ede8df;
  --hv-on-dark-muted: #a8a49c;
  --hv-gold: #c2a26b;
  --hv-gold-soft: #d8c299;
  --hv-gold-ink: #85663a;
  --hv-line: rgba(14, 17, 23, 0.12);
  --hv-line-dark: rgba(237, 232, 223, 0.14);
  --hv-serif: "Playfair Display", Georgia, "Times New Roman", serif;
  --hv-sans: "Montserrat", "Helvetica Neue", Arial, sans-serif;
  /* Read by the editor's Layouts (accent, heading font, section spacing) */
  --ep-tpl-accent: #c2a26b;
  --ep-tpl-font: "Playfair Display", Georgia, "Times New Roman", serif;
  --ep-tpl-space: 128px;
  --ap-primary: #c2a26b;
  --ap-on-primary: #0e1117;
  --ap-surface: #fcfaf6;
  --ap-on-surface: #1c1f26;
  --ap-heading: #0e1117;
  --ap-accent: #85663a;
  --ap-muted: #5b5e66;
  --ap-soft: #f4eee3;
  --ap-line: rgba(14, 17, 23, 0.12);
  --ap-field: #ffffff;
  --ap-on-field: #1c1f26;
  --ap-field-line: rgba(14, 17, 23, 0.2);
  --ap-ring: rgba(194, 162, 107, 0.3);
  --ap-radius: 2px;
  --ap-radius-sm: 2px;
}

body {
  font-family: var(--hv-sans);
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

section[id], h2[id] {
  scroll-margin-top: 96px;
}

.hv-sec {
  position: relative;
  width: 100%;
  padding: 128px 0;
  color: var(--hv-text);
}

.hv-sec .container, .hv-footer .container {
  max-width: 1200px;
  margin-top: 0;
  margin-bottom: 0;
  padding: 0 24px;
}

.hv-sec .row, .hv-footer .row {
  margin: 0 -15px;
  padding: 0;
}

.hv-sec .row.no-gutters {
  margin: 0;
}

.hv-sec [class^="col"], .hv-sec [class*=" col-"], .hv-footer [class^="col"], .hv-footer [class*=" col-"] {
  padding: 0 15px;
}

.hv-sec .no-gutters > [class^="col"], .hv-sec .no-gutters > [class*=" col-"] {
  padding: 0;
}

.hv-sec ul, .hv-footer ul {
  padding: 0;
}

.hv-sec li > *, .hv-footer li > * {
  margin: 0;
}

.hv-dark {
  background-color: var(--hv-ink);
  color: var(--hv-on-dark);
}

/* Type */
.hv-eyebrow {
  display: flex;
  align-items: center;
  gap: 14px;
  margin: 0 0 22px;
  font-family: var(--hv-sans);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--hv-gold-ink);
}

.hv-eyebrow::before {
  content: "";
  display: inline-block;
  width: 40px;
  height: 1px;
  background-color: currentColor;
}

.hv-dark .hv-eyebrow, .hv-eyebrow-light {
  color: var(--hv-gold);
}

.hv-eyebrow-center {
  justify-content: center;
}

.hv-display {
  margin: 0 0 30px;
  font-family: var(--hv-serif);
  font-size: clamp(2.6rem, 5.4vw, 5.1rem);
  font-weight: 400;
  line-height: 1.05;
  letter-spacing: -0.012em;
  color: #ffffff;
}

.hv-h2 {
  margin: 0 0 26px;
  font-family: var(--hv-serif);
  font-size: clamp(2rem, 3.4vw, 3.15rem);
  font-weight: 400;
  line-height: 1.14;
  letter-spacing: -0.008em;
  color: var(--hv-ink);
}

.hv-dark .hv-h2 {
  color: #ffffff;
}

.hv-h3 {
  margin: 0 0 14px;
  font-family: var(--hv-serif);
  font-size: 1.5rem;
  font-weight: 400;
  line-height: 1.3;
  color: var(--hv-ink);
}

.hv-dark .hv-h3 {
  color: #ffffff;
}

.hv-h4 {
  margin: 0 0 12px;
  font-family: var(--hv-serif);
  font-size: 1.35rem;
  font-weight: 400;
  color: var(--hv-ink);
}

.hv-italic {
  font-family: var(--hv-serif);
  font-style: italic;
  font-weight: 400;
  color: var(--hv-gold-ink);
}

.hv-dark .hv-italic, .hv-hero .hv-italic {
  color: var(--hv-gold);
}

.hv-body {
  margin: 0 0 18px;
  font-size: 0.98rem;
  font-weight: 400;
  line-height: 1.85;
  color: var(--hv-muted);
}

.hv-dark .hv-body {
  color: var(--hv-on-dark-muted);
}

.hv-strong {
  font-weight: 600;
  color: var(--hv-ink);
}

/* Buttons */
.hv-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 17px 32px;
  border: 1px solid transparent;
  border-radius: 0;
  font-family: var(--hv-sans);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.2em;
  line-height: 1;
  text-transform: uppercase;
  text-decoration: none;
  transition: background-color 0.35s ease, color 0.35s ease, border-color 0.35s ease, transform 0.35s ease;
}

.hv-btn:hover, .hv-btn:focus {
  text-decoration: none;
  transform: translateY(-2px);
}

.hv-btn-gold {
  background-color: var(--hv-gold);
  border-color: var(--hv-gold);
  color: var(--hv-ink);
}

.hv-btn-gold:hover, .hv-btn-gold:focus {
  background-color: var(--hv-gold-soft);
  border-color: var(--hv-gold-soft);
  color: var(--hv-ink);
}

.hv-btn-ghost {
  background-color: transparent;
  border-color: rgba(255, 255, 255, 0.45);
  color: #ffffff;
}

.hv-btn-ghost:hover, .hv-btn-ghost:focus {
  border-color: #ffffff;
  background-color: rgba(255, 255, 255, 0.08);
  color: #ffffff;
}

.hv-btn-outline {
  background-color: transparent;
  border-color: var(--hv-ink);
  color: var(--hv-ink);
}

.hv-btn-outline:hover, .hv-btn-outline:focus {
  background-color: var(--hv-ink);
  color: var(--hv-ivory);
}

/* The outline buttons also carry Bootstrap's btn-outline-* (the editor themes them as outlines):
   its pressed fill and focus glow are replaced by this design's own */
.hv-btn-ghost:not(:disabled):not(.disabled):active {
  background-color: rgba(255, 255, 255, 0.08);
  border-color: #ffffff;
  color: #ffffff;
}

.hv-btn-outline:not(:disabled):not(.disabled):active {
  background-color: var(--hv-ink);
  border-color: var(--hv-ink);
  color: var(--hv-ivory);
}

.hv-btn:focus, .hv-btn:not(:disabled):not(.disabled):active:focus {
  box-shadow: none;
}

.hv-btn:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 3px;
}

.hv-link {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--hv-gold);
  text-decoration: none;
}

.hv-link:hover {
  color: var(--hv-gold-soft);
  text-decoration: none;
}

.hv-link-icon {
  font-size: 0.75em;
  transition: transform 0.35s ease;
}

.hv-link:hover .hv-link-icon, .hv-btn:hover .hv-link-icon {
  transform: translateX(4px);
}

/* Navbar */
.hv-nav {
  padding: 0;
  background-color: rgba(14, 17, 23, 0.94);
  border-bottom: 1px solid var(--hv-line-dark);
  -webkit-backdrop-filter: saturate(140%) blur(14px);
  backdrop-filter: saturate(140%) blur(14px);
}

.hv-nav .hv-nav-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  max-width: 1200px;
  min-height: 84px;
  margin: 0 auto;
  padding: 0 24px;
}

.hv-brand {
  display: flex;
  flex-direction: column;
  padding: 0;
  margin: 0;
  line-height: 1;
  text-decoration: none;
}

.hv-nav .hv-brand > .hv-brand-name {
  margin: 0;
  font-family: var(--hv-serif);
  font-size: 1.45rem;
  font-weight: 400;
  letter-spacing: 0.02em;
  color: #ffffff;
}

.hv-brand-tag {
  margin-top: 6px;
  font-family: var(--hv-sans);
  font-size: 0.58rem;
  font-weight: 600;
  letter-spacing: 0.34em;
  text-transform: uppercase;
  color: var(--hv-gold);
}

.hv-nav .hv-menu-list {
  padding: 0;
  align-items: center;
}

.hv-nav .hv-menu-item > * {
  margin: 0;
}

.hv-nav .hv-menu-link {
  padding: 30px 16px;
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: rgba(237, 232, 223, 0.78);
  transition: color 0.3s ease;
}

.hv-nav .hv-menu-link:hover, .hv-nav .hv-menu-link:focus {
  color: var(--hv-gold);
}

.hv-nav-cta {
  margin-left: 22px;
  padding: 14px 22px;
}

.hv-toggler {
  padding: 10px 12px;
  border: 1px solid var(--hv-line-dark);
  border-radius: 0;
  background-color: transparent;
  color: var(--hv-on-dark);
  font-size: 1rem;
}

.hv-toggler:focus {
  outline: 1px solid var(--hv-gold);
}

/* Hero
   The photo is a real column, so the editor's Layouts can move it.
   Original (no data-ep-hero): the photo runs full-bleed behind the text, as designed.
   A layout marks the hero data-ep-hero="left|right|full|stack": photo left of the text (below),
   photo right, full-bleed with the text centred, or photo above centred text. */
.hv-sec.hv-hero {
  padding: 0;
  background-color: var(--hv-ink);
  color: #ffffff;
  overflow: hidden;
}

.hv-hero .hv-hero-row {
  min-height: clamp(640px, 100vh, 960px);
  align-items: center;
}

.hv-sec.hv-hero .hv-hero-media {
  position: relative;
  padding: 150px 40px 72px 6vw;
}

.hv-hero .hv-hero-img {
  display: block;
  width: 100%;
  max-width: none;
  height: auto;
  max-height: 680px;
  aspect-ratio: 4 / 5;
  object-fit: cover;
}

.hv-sec.hv-hero .hv-hero-copy {
  position: relative;
  z-index: 1;
  padding: 150px 6vw 72px 40px;
  animation: hv-rise 1.2s cubic-bezier(0.2, 0.7, 0.2, 1) both;
}

.hv-hero .hv-display {
  font-size: clamp(2.4rem, 4vw, 4rem);
}

.hv-lede {
  max-width: 600px;
  margin: 0 0 44px;
  font-size: 1.08rem;
  font-weight: 300;
  line-height: 1.85;
  color: rgba(237, 232, 223, 0.82);
}

.hv-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
}

.hv-sec .hv-stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin: 56px 0 0;
  border-top: 1px solid var(--hv-line-dark);
  animation: hv-rise 1.2s 0.25s cubic-bezier(0.2, 0.7, 0.2, 1) both;
}

.hv-sec .hv-stat {
  padding: 30px 20px 6px;
  border-left: 1px solid var(--hv-line-dark);
}

.hv-sec .hv-stat:first-child {
  border-left: 0;
  padding-left: 0;
}

.hv-stat-num {
  margin: 0 0 8px;
  font-family: var(--hv-serif);
  font-size: clamp(1.9rem, 3vw, 2.6rem);
  line-height: 1;
  color: #ffffff;
}

.hv-stat-label {
  margin: 0;
  font-size: 0.66rem;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--hv-gold);
}

/* Original: full-bleed photo under a dark veil, text along the bottom (the template as designed) */
.hv-hero:not([data-ep-hero]) .hv-hero-row {
  align-items: flex-end;
}

.hv-sec.hv-hero:not([data-ep-hero]) .hv-hero-media {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  max-width: none;
  padding: 0;
}

.hv-hero:not([data-ep-hero]) .hv-hero-media::after {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: linear-gradient(100deg, rgba(14, 17, 23, 0.94) 0%, rgba(14, 17, 23, 0.82) 45%, rgba(14, 17, 23, 0.45) 100%);
  pointer-events: none;
}

.hv-hero:not([data-ep-hero]) .hv-hero-img {
  height: 100%;
  max-height: none;
  aspect-ratio: auto;
}

.hv-sec.hv-hero:not([data-ep-hero]) .hv-hero-copy {
  flex: 0 0 100%;
  max-width: 1248px;
  margin: 0 auto;
  padding: 170px 24px 0;
}

.hv-hero:not([data-ep-hero]) .hv-display {
  max-width: 900px;
  font-size: clamp(2.6rem, 5.4vw, 5.1rem);
}

.hv-hero:not([data-ep-hero]) .hv-stats {
  margin-top: 96px;
}

.hv-hero:not([data-ep-hero]) .hv-stat {
  padding: 34px 28px 40px;
}

/* Split Hero: the photo moves to the right */
.hv-sec.hv-hero[data-ep-hero="right"] .hv-hero-media {
  padding: 150px 6vw 72px 40px;
}

.hv-sec.hv-hero[data-ep-hero="right"] .hv-hero-copy {
  padding: 150px 40px 72px 6vw;
}

/* Photo Hero: full-bleed photo, centred text (kept clear of the fixed navbar) */
.hv-sec.hv-hero[data-ep-hero="full"] .hv-hero-copy {
  padding: 150px 24px 64px !important;
}

.hv-hero[data-ep-hero="full"] .hv-eyebrow,
.hv-hero[data-ep-hero="full"] .hv-actions,
.hv-hero[data-ep-hero="stack"] .hv-eyebrow,
.hv-hero[data-ep-hero="stack"] .hv-actions {
  justify-content: center;
}

.hv-hero[data-ep-hero="full"] .hv-lede,
.hv-hero[data-ep-hero="stack"] .hv-lede {
  margin-left: auto;
  margin-right: auto;
}

/* Centered Story: a wide photo above, the text centred below it */
.hv-sec.hv-hero[data-ep-hero="stack"] .hv-hero-media {
  padding: 130px 24px 0;
}

.hv-hero[data-ep-hero="stack"] .hv-hero-img {
  aspect-ratio: 16 / 9;
  max-height: 420px;
}

.hv-sec.hv-hero[data-ep-hero="stack"] .hv-hero-copy {
  padding: 16px 24px 72px;
}

@keyframes hv-rise {
  from { opacity: 0; transform: translateY(28px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Ribbon */
.hv-sec.hv-ribbon {
  padding: 34px 0;
  background-color: var(--hv-ink-2);
  border-bottom: 1px solid var(--hv-line-dark);
  color: var(--hv-on-dark);
}

.hv-ribbon .hv-ribbon-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 14px 40px;
}

.hv-ribbon-lead {
  margin: 0;
  font-size: 0.66rem;
  font-weight: 600;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--hv-on-dark-muted);
}

.hv-ribbon-list {
  margin: 0;
  font-size: 1.2rem;
  color: var(--hv-on-dark);
}

.hv-ribbon-list .hv-italic {
  color: var(--hv-on-dark);
}

.hv-dot {
  margin: 0 16px;
  font-size: 0.5rem;
  vertical-align: middle;
  color: var(--hv-gold);
}

/* About */
.hv-about {
  background-color: var(--hv-ivory);
}

.hv-frame {
  position: relative;
  margin: 0 40px 40px 0;
}

.hv-frame::before {
  content: "";
  position: absolute;
  top: 40px;
  right: -40px;
  bottom: -40px;
  left: 40px;
  border: 1px solid var(--hv-gold);
  pointer-events: none;
}

.hv-img {
  display: block;
  width: 100%;
  filter: saturate(0.85) contrast(1.04);
}

.hv-frame .hv-img-portrait {
  position: relative;
  height: 620px;
  object-fit: cover;
  padding: 0;
  margin: 0;
  border-radius: 0;
}

.hv-frame-card {
  position: absolute;
  left: -1px;
  bottom: 48px;
  max-width: 250px;
  padding: 28px 30px;
  background-color: var(--hv-ink);
  color: var(--hv-on-dark);
}

.hv-frame-num {
  margin: 0 0 6px;
  font-family: var(--hv-serif);
  font-size: 3rem;
  line-height: 1;
  color: var(--hv-gold);
}

.hv-frame-text {
  margin: 0;
  font-size: 0.82rem;
  line-height: 1.6;
  color: var(--hv-on-dark-muted);
}

.hv-sec .hv-about-copy {
  padding-top: 40px;
}

.hv-checks {
  margin: 30px 0 36px;
  list-style: none;
  border-top: 1px solid var(--hv-line);
}

.hv-check {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 0;
  border-bottom: 1px solid var(--hv-line);
  font-size: 0.92rem;
  color: var(--hv-text);
}

.hv-checks-light {
  border-top-color: var(--hv-line-dark);
}

.hv-checks-light .hv-check {
  border-bottom-color: var(--hv-line-dark);
  color: var(--hv-on-dark);
}

.hv-sec .hv-check > .hv-check-icon {
  margin: 0;
  font-size: 0.72rem;
  color: var(--hv-gold-ink);
}

.hv-dark .hv-check > .hv-check-icon {
  color: var(--hv-gold);
}

.hv-signature {
  display: flex;
  flex-direction: column;
  margin: 0;
  font-family: var(--hv-serif);
  font-size: 1.7rem;
  font-style: italic;
  color: var(--hv-ink);
}

.hv-signature-role {
  margin-top: 6px;
  font-family: var(--hv-sans);
  font-size: 0.64rem;
  font-style: normal;
  font-weight: 600;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--hv-muted);
}

/* Section heads */
.hv-sec .hv-head-row {
  margin-bottom: 64px;
}

.hv-sec .hv-head-side {
  padding-top: 46px;
}

.hv-head-center {
  text-align: center;
}

/* Services */
.hv-sec .hv-grid {
  border-top: 1px solid var(--hv-line-dark);
  border-left: 1px solid var(--hv-line-dark);
}

.hv-sec .hv-cell {
  border-right: 1px solid var(--hv-line-dark);
  border-bottom: 1px solid var(--hv-line-dark);
}

.hv-sec .hv-card {
  position: relative;
  height: 100%;
  padding: 0;
  border: 0;
  border-radius: 0;
  background-color: transparent;
  transition: background-color 0.45s ease;
}

.hv-sec .hv-card::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 0;
  width: 0;
  height: 2px;
  background-color: var(--hv-gold);
  transition: width 0.6s cubic-bezier(0.2, 0.7, 0.2, 1);
}

.hv-sec .hv-card:hover {
  background-color: rgba(255, 255, 255, 0.03);
}

.hv-sec .hv-card:hover::before {
  width: 100%;
}

.hv-sec .hv-card-body {
  padding: 48px 40px 44px;
}

.hv-numeral {
  margin: 0 0 30px;
  font-family: var(--hv-serif);
  font-size: 0.95rem;
  font-style: italic;
  color: var(--hv-on-dark-muted);
}

.hv-icon {
  display: block;
  margin-bottom: 26px;
  font-size: 1.7rem;
  color: var(--hv-gold);
}

/* Approach */
.hv-approach {
  background-color: var(--hv-paper);
}

.hv-sec .hv-steps {
  margin: 0 -15px;
}

.hv-sec .hv-step {
  position: relative;
  padding-top: 40px;
  padding-bottom: 20px;
}

.hv-step::before {
  content: "";
  position: absolute;
  top: 0;
  left: 15px;
  right: 15px;
  height: 1px;
  background-color: var(--hv-line);
}

.hv-step::after {
  content: "";
  position: absolute;
  top: -4px;
  left: 15px;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background-color: var(--hv-gold);
}

.hv-step-num {
  margin: 0 0 20px;
  font-family: var(--hv-serif);
  font-size: 3rem;
  font-style: italic;
  line-height: 1;
  color: var(--hv-gold-ink);
}

/* Quote band */
.hv-sec.hv-quote-band {
  padding: 150px 0;
  background-color: var(--hv-ink);
  background-image: url("https://www.eprofitify.com/image-gallery/img/img1780388827_dc0b6778012eb883.webp");
  background-size: cover;
  background-position: center;
  color: #ffffff;
  text-align: center;
}

.hv-quote-band::before {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background-color: rgba(14, 17, 23, 0.8);
  pointer-events: none;
}

.hv-quote-band .hv-quote-veil {
  position: relative;
  z-index: 1;
  max-width: 940px;
}

.hv-quote-mark {
  margin: 0;
  height: 70px;
  font-family: var(--hv-serif);
  font-size: 7rem;
  line-height: 1;
  color: var(--hv-gold);
}

.hv-quote-text {
  margin: 0 0 32px;
  font-family: var(--hv-serif);
  font-size: clamp(1.5rem, 2.8vw, 2.3rem);
  font-style: italic;
  line-height: 1.45;
  color: #ffffff;
}

.hv-quote-by {
  margin: 0;
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--hv-gold);
}

/* Cases */
.hv-cases {
  background-color: var(--hv-ivory);
}

.hv-sec .hv-case-cell {
  margin-bottom: 30px;
}

.hv-sec .hv-case {
  height: 100%;
  padding: 0;
  border: 0;
  border-radius: 0;
  background-color: transparent;
  overflow: hidden;
}

.hv-sec .hv-case-img {
  height: 380px;
  padding: 0;
  margin: 0;
  border-radius: 0;
  object-fit: cover;
  transition: transform 1.2s cubic-bezier(0.2, 0.7, 0.2, 1), filter 0.6s ease;
}

.hv-sec .hv-case:hover .hv-case-img {
  transform: scale(1.04);
  filter: saturate(1) contrast(1.04);
}

.hv-sec .hv-case-body {
  position: relative;
  padding: 28px 0 0;
  background-color: var(--hv-ivory);
}

.hv-case-tag {
  margin: 0 0 12px;
  font-size: 0.64rem;
  font-weight: 600;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--hv-gold-ink);
}

.hv-case-metric {
  margin: 18px 0 0;
  padding-top: 18px;
  border-top: 1px solid var(--hv-line);
  font-size: 0.86rem;
  line-height: 1.6;
  color: var(--hv-muted);
}

.hv-case-figure {
  display: block;
  margin-bottom: 4px;
  font-family: var(--hv-serif);
  font-size: 2rem;
  font-weight: 400;
  color: var(--hv-ink);
}

/* Reviews */
.hv-reviews {
  background-color: var(--hv-paper);
}

.hv-sec .hv-review-cell {
  margin-bottom: 30px;
}

.hv-sec .hv-review {
  height: 100%;
  padding: 0;
  border: 1px solid var(--hv-line);
  border-radius: 0;
  background-color: #ffffff;
  transition: box-shadow 0.45s ease, transform 0.45s ease;
}

.hv-sec .hv-review:hover {
  transform: translateY(-4px);
  box-shadow: 0 24px 60px rgba(14, 17, 23, 0.08);
}

.hv-sec .hv-review-body {
  display: flex;
  flex-direction: column;
  height: 100%;
  padding: 44px 40px 38px;
}

.hv-stars {
  margin: 0 0 24px;
  font-size: 0.72rem;
  letter-spacing: 4px;
  color: var(--hv-gold);
}

.hv-review-text {
  flex: 1 1 auto;
  margin: 0 0 32px;
  font-family: var(--hv-serif);
  font-size: 1.22rem;
  font-style: italic;
  line-height: 1.6;
  color: var(--hv-ink);
}

.hv-reviewer {
  display: flex;
  align-items: center;
  gap: 16px;
  padding-top: 24px;
  border-top: 1px solid var(--hv-line);
}

.hv-avatar {
  flex: 0 0 48px;
  width: 48px;
  height: 48px;
  margin: 0;
  border: 1px solid var(--hv-gold);
  border-radius: 50%;
  font-family: var(--hv-serif);
  font-size: 0.95rem;
  line-height: 46px;
  text-align: center;
  color: var(--hv-gold-ink);
}

.hv-reviewer-name {
  display: flex;
  flex-direction: column;
  margin: 0;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--hv-ink);
}

.hv-reviewer-role {
  margin-top: 4px;
  font-size: 0.74rem;
  font-weight: 400;
  color: var(--hv-muted);
}

/* Booking */
.hv-booking {
  background-color: var(--hv-ink);
}

.hv-sec .hv-booking-copy {
  padding-right: 40px;
}

.hv-booking-widget .calendar-appointment {
  margin: 0 0 0 auto;
}

/* Contact */
.hv-contact {
  background-color: var(--hv-ivory);
}

.hv-contact-list {
  margin: 36px 0 0;
  list-style: none;
}

.hv-contact-item {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 18px 0;
  border-bottom: 1px solid var(--hv-line);
}

.hv-sec .hv-contact-item > .hv-contact-icon {
  width: 18px;
  margin: 0;
  font-size: 0.9rem;
  color: var(--hv-gold-ink);
}

.hv-contact-link, .hv-contact-text {
  font-size: 0.95rem;
  color: var(--hv-text);
  text-decoration: none;
}

.hv-contact-link:hover {
  color: var(--hv-gold-ink);
  text-decoration: none;
}

.hv-sec .hv-form-card {
  padding: 0;
  border: 0;
  border-radius: 0;
  background-color: #ffffff;
  box-shadow: 0 30px 80px rgba(14, 17, 23, 0.08);
}

.hv-sec .hv-form-body {
  padding: 48px;
}

.hv-sec .hv-form {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px 28px;
  margin: 0;
  padding: 0;
}

.hv-sec .hv-field {
  margin: 0 0 18px;
  padding: 0;
}

.hv-field-wide {
  grid-column: 1 / -1;
}

.hv-label {
  display: block;
  margin: 0 0 10px;
  font-size: 0.64rem;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--hv-muted);
}

.hv-sec .hv-input {
  height: auto;
  padding: 12px 0;
  border: 0;
  border-bottom: 1px solid rgba(14, 17, 23, 0.22);
  border-radius: 0;
  background-color: transparent;
  font-family: var(--hv-sans);
  font-size: 0.96rem;
  color: var(--hv-text);
  box-shadow: none;
  transition: border-color 0.3s ease;
}

.hv-sec .hv-input:focus {
  border-bottom-color: var(--hv-gold);
  background-color: transparent;
  box-shadow: none;
  outline: none;
}

.hv-sec .hv-input::placeholder {
  color: #9a9890;
}

.hv-sec textarea.hv-input {
  resize: vertical;
  min-height: 110px;
}

.hv-submit {
  margin-top: 8px;
}

.hv-fineprint {
  display: inline-block;
  margin: 0 0 0 20px;
  font-size: 0.76rem;
  color: var(--hv-muted);
}

/* Location */
.hv-sec.hv-location {
  padding-top: 0;
  background-color: var(--hv-ivory);
}

.hv-sec .hv-visit {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  padding-top: 56px;
  padding-bottom: 56px;
  padding-right: 48px;
}

.hv-visit-title {
  font-size: 2rem;
}

.hv-address {
  color: var(--hv-text);
  font-size: 1.02rem;
}

.hv-hours {
  margin-bottom: 30px;
}

.hv-sec .hv-map {
  filter: grayscale(0.9) contrast(1.05);
  border-radius: 0;
}

/* Footer */
.hv-footer {
  width: 100%;
  padding: 96px 0 0;
  background-color: var(--hv-ink);
  color: var(--hv-on-dark);
}

.hv-footer .hv-footer-inner {
  padding-top: 0;
  padding-bottom: 0;
}

.hv-footer .hv-footer-top {
  padding-bottom: 64px;
}

.hv-footer-name {
  margin: 0 0 18px;
  font-family: var(--hv-serif);
  font-size: 2rem;
  color: #ffffff;
}

.hv-footer-about {
  max-width: 380px;
  margin: 0 0 28px;
  font-size: 0.9rem;
  line-height: 1.8;
  color: var(--hv-on-dark-muted);
}

.hv-socials {
  display: flex;
  gap: 10px;
  margin: 0 0 30px;
}

.hv-social {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border: 1px solid var(--hv-line-dark);
  border-radius: 50%;
  font-size: 0.85rem;
  color: var(--hv-on-dark);
  text-decoration: none;
  transition: border-color 0.3s ease, color 0.3s ease;
}

.hv-social:hover {
  border-color: var(--hv-gold);
  color: var(--hv-gold);
  text-decoration: none;
}

.hv-footer-head {
  margin: 8px 0 22px;
  font-size: 0.66rem;
  font-weight: 600;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--hv-gold);
}

.hv-footer-list {
  margin: 0;
  list-style: none;
}

.hv-footer-li {
  margin: 0 0 12px;
}

.hv-footer-link {
  font-size: 0.88rem;
  color: var(--hv-on-dark-muted);
  text-decoration: none;
  transition: color 0.3s ease;
}

.hv-footer-link:hover {
  color: #ffffff;
  text-decoration: none;
}

.hv-footer-bottom {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 12px;
  padding: 28px 0 32px;
  border-top: 1px solid var(--hv-line-dark);
}

.hv-copy {
  margin: 0;
  font-size: 0.74rem;
  letter-spacing: 0.04em;
  color: var(--hv-on-dark-muted);
}

/* Tablet */
@media (max-width: 991px) {
  :root {
    --ep-tpl-space: 96px;
  }
  .hv-sec {
    padding: 96px 0;
  }
  .hv-nav .hv-nav-inner {
    min-height: 72px;
  }
  .hv-nav .hv-menu {
    padding: 8px 0 24px;
  }
  .hv-nav .hv-menu-link {
    padding: 14px 0;
    border-bottom: 1px solid var(--hv-line-dark);
  }
  .hv-nav-cta {
    margin: 20px 0 0;
  }
  .hv-nav .hv-menu-list {
    align-items: stretch;
  }
  .hv-sec .hv-head-side {
    padding-top: 0;
  }
  .hv-sec .hv-about-copy {
    padding-top: 80px;
  }
  .hv-sec .hv-booking-copy {
    padding-right: 15px;
    margin-bottom: 48px;
  }
  .hv-booking-widget .calendar-appointment {
    margin: 0 auto;
  }
  .hv-sec .hv-visit {
    padding-right: 15px;
  }
  .hv-sec .hv-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .hv-sec .hv-stat:nth-child(odd) {
    border-left: 0;
    padding-left: 0;
  }
  .hv-sec .hv-stat:nth-child(n+3) {
    border-top: 1px solid var(--hv-line-dark);
  }
  /* Laid-out hero: text first (below the navbar), the photo under it */
  .hv-hero[data-ep-hero] .hv-hero-row {
    min-height: 0;
  }
  .hv-sec.hv-hero[data-ep-hero]:not([data-ep-hero="full"]) .hv-hero-media {
    order: 2;
    padding: 0 24px 64px;
  }
  .hv-sec.hv-hero[data-ep-hero]:not([data-ep-hero="full"]) .hv-hero-copy {
    padding: 130px 24px 40px;
  }
  .hv-sec.hv-hero[data-ep-hero]:not([data-ep-hero="full"]) .hv-hero-img {
    aspect-ratio: 4 / 3;
    max-height: 520px;
  }
}

/* Phone */
@media (max-width: 767px) {
  :root {
    --ep-tpl-space: 133px; /* Layouts use 60% on phones = 80px */
  }
  .hv-sec {
    padding: 80px 0;
  }
  .hv-sec .container, .hv-footer .container, .hv-nav .hv-nav-inner {
    padding: 0 20px;
  }
  .hv-sec.hv-hero:not([data-ep-hero]) .hv-hero-copy {
    padding: 140px 20px 0;
  }
  .hv-sec.hv-hero[data-ep-hero]:not([data-ep-hero="full"]) .hv-hero-media {
    padding: 0 20px 56px;
  }
  .hv-sec.hv-hero[data-ep-hero]:not([data-ep-hero="full"]) .hv-hero-copy {
    padding: 120px 20px 32px;
  }
  .hv-actions .hv-btn {
    width: 100%;
  }
  .hv-sec .hv-stat {
    padding: 24px 16px 28px;
  }
  .hv-ribbon .hv-ribbon-inner {
    justify-content: center;
    text-align: center;
  }
  .hv-ribbon-list {
    font-size: 1rem;
    line-height: 2;
  }
  .hv-dot {
    margin: 0 8px;
  }
  .hv-frame {
    margin: 0 24px 24px 0;
  }
  .hv-frame::before {
    top: 24px;
    right: -24px;
    bottom: -24px;
    left: 24px;
  }
  .hv-frame .hv-img-portrait {
    height: 440px;
  }
  .hv-frame-card {
    bottom: 24px;
    max-width: 210px;
    padding: 20px 22px;
  }
  .hv-sec .hv-head-row {
    margin-bottom: 40px;
  }
  .hv-sec .hv-card-body {
    padding: 36px 28px;
  }
  .hv-sec .hv-form-body {
    padding: 32px 24px;
  }
  .hv-sec .hv-form {
    grid-template-columns: 1fr;
  }
  .hv-fineprint {
    display: block;
    margin: 14px 0 0;
  }
  .hv-sec .hv-case-img {
    height: 300px;
  }
  .hv-sec.hv-quote-band {
    padding: 110px 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .hv-hero-copy, .hv-sec .hv-stats {
    animation: none;
  }
  .hv-btn, .hv-sec .hv-card, .hv-sec .hv-case-img, .hv-sec .hv-review {
    transition: none;
  }
}

[data-ep-id="ep_div_116"] {
  position: relative !important;
  width: 100% !important;
  height: 420px !important;
  min-height: 240px !important;
  overflow: hidden !important;
  border-radius: 8px !important;
}

[data-ep-id="ep_button_5"] {
  float: right !important;
}

[data-ep-id="ep_button_6"] {
  float: right !important;
}