/* RejuvStem home page, design v2 ("RejuvStem homepage recreation", 8 Oct 2026; v2.1, 16 Oct 2026).
   Built into public/index.html by _dev/home-v2/build.js; behaviour in home.js. */
/* The site's own copies of its fonts (the same files as Google Fonts, 2 Nov 2026), so no other server holds up the first paint.
   The "Fallback" faces make the phone's own font take the same room as the web font until it arrives, so nothing moves
   when it swaps (layout shift): sizes worked out from each font's own metrics against Arial. */
@font-face { font-family: 'Belleza'; font-style: normal; font-weight: 400; font-display: swap; src: url(/assets/fonts/rejuv/belleza-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Belleza'; font-style: normal; font-weight: 400; font-display: swap; src: url(/assets/fonts/rejuv/belleza-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Cinzel'; font-style: normal; font-weight: 500; font-display: swap; src: url(/assets/fonts/rejuv/cinzel-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Cinzel'; font-style: normal; font-weight: 500; font-display: swap; src: url(/assets/fonts/rejuv/cinzel-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Source Sans 3'; font-style: normal; font-weight: 400 700; font-display: swap; src: url(/assets/fonts/rejuv/source-sans-3-latin-ext.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Source Sans 3'; font-style: normal; font-weight: 400 700; font-display: swap; src: url(/assets/fonts/rejuv/source-sans-3-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'RJ Serif Fallback'; src: local('Arial'), local('Helvetica'), local('Arimo'), local('Roboto'); size-adjust: 89.1%; ascent-override: 104.1%; descent-override: 25.1%; line-gap-override: 0%; }
@font-face { font-family: 'RJ Sans Fallback'; src: local('Arial'), local('Helvetica'), local('Arimo'), local('Roboto'); size-adjust: 87.7%; ascent-override: 116.8%; descent-override: 45.6%; line-gap-override: 0%; }
@font-face { font-family: 'RJ Cinzel Fallback'; src: local('Arial'), local('Helvetica'), local('Arimo'), local('Roboto'); size-adjust: 121.2%; ascent-override: 80.6%; descent-override: 30.7%; line-gap-override: 0%; }
:root {
  --green: #134b3d; --green-btn: #1b4b3c; --deep: #0f3a30; --deeper: #0e2a24; --night: #0c2420;
  --gold: #c2a85e; --gold-light: #e0c06b; --mint: #f4faf7; --sand: #f6f4f0; --text: #3d3d3d;
  --serif: Optima, 'Belleza', 'RJ Serif Fallback', sans-serif; --sans: 'Source Sans 3', 'RJ Sans Fallback', 'Myriad Pro', sans-serif;
  --pad: clamp(16px, 4vw, 48px);
}
html { scroll-behavior: smooth; }
body.home-v2 { margin: 0; background: #fff; font-family: var(--sans); color: var(--text); -webkit-font-smoothing: antialiased; }
.home-v2 *, .home-v2 *::before, .home-v2 *::after { box-sizing: border-box; }
.home-v2 a { color: var(--green); text-decoration: none; }
.home-v2 a:hover { color: var(--gold); }
.home-v2 img { max-width: 100%; }
/* Images carry their width and height in the HTML (audit line PERF-05) so their space is kept before
   they load; height follows the shown width unless a rule below sets one (lowest weight, so any wins). */
:where(.home-v2) img { height: auto; }
.home-v2 button { font: inherit; }
.hv-wrap { max-width: 1240px; margin: 0 auto; padding-left: var(--pad); padding-right: var(--pad); }
.hv-eyebrow { font-family: var(--serif); font-size: 20px; color: var(--gold); text-transform: uppercase; }
.hv-h2 { margin: 8px 0 0; font-family: var(--serif); font-weight: 400; font-size: clamp(36px, 4vw, 49px); line-height: 1.05; color: var(--green); }
.hv-p { font-size: 16px; line-height: 1.6; }
@keyframes rsSpin { to { transform: rotate(360deg); } }
@keyframes rsMarquee { to { transform: translateX(calc(-50% - 10px)); } }
.hv-spin { animation: rsSpin 18s linear infinite; }
@media (prefers-reduced-motion: reduce) { .hv-spin, .hv-marquee-track, .hv-gallery__track { animation: none !important; } }

/* Buttons */
.hv-btn { display: inline-flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 600; text-transform: uppercase; padding: 13px 22px; border-radius: 40px; border: 1.5px solid transparent; transition: background .2s, color .2s, border-color .2s; }
.home-v2 a.hv-btn--green { background: var(--green-btn); color: #fff; border-color: var(--green-btn); }
.home-v2 a.hv-btn--green:hover { background: var(--gold); border-color: var(--gold); color: #fff; }
.home-v2 a.hv-btn--gold { background: var(--gold); color: #fff; border-color: var(--gold); }
.home-v2 a.hv-btn--gold:hover { background: var(--green); border-color: var(--green); color: #fff; }
.home-v2 .hv-footer a.hv-btn--gold:not(:hover) { color: var(--deep); }   /* white on gold was too faint there */
.home-v2 a.hv-btn--line { color: var(--green); border-color: var(--green); }
.home-v2 a.hv-btn--line:hover { background: var(--green); color: #fff; }

/* Announcement */
.hv-announce { position: relative; overflow: hidden; background: linear-gradient(90deg, #0b2620 0%, #134b3d 50%, #0b2620 100%); color: #fff; border-bottom: 1px solid rgba(224,192,107,.28); }
.hv-announce__in { max-width: 1440px; margin: 0 auto; padding: 10px clamp(16px, 3vw, 40px); display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px 16px; font-size: 14px; letter-spacing: .3px; text-align: center; }
/* His moving shine across the bar */
@keyframes abShine { 0% { left: -30%; } 60%, 100% { left: 110%; } }
.hv-announce::before { content: ''; position: absolute; top: 0; bottom: 0; left: -30%; width: 30%; background: linear-gradient(90deg, rgba(224,192,107,0), rgba(224,192,107,.16), rgba(224,192,107,0)); pointer-events: none; animation: abShine 6s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce) { .hv-announce::before { animation: none; display: none; } }
.hv-announce__in { position: relative; }
.hv-announce__tag { display: inline-flex; align-items: center; gap: 8px; color: #e0c06b; font-weight: 700; letter-spacing: 1.8px; text-transform: uppercase; font-size: 11.5px; white-space: nowrap; }
.hv-announce__tag::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: #e0c06b; box-shadow: 0 0 10px #e0c06b; }
.hv-announce__sep { width: 1px; height: 14px; background: rgba(224,192,107,.4); }
.hv-announce__msg { color: #e6eeea; }
.hv-announce__msg strong { color: #fff; font-weight: 700; }
.home-v2 .hv-announce a { color: #e0c06b; font-weight: 700; white-space: nowrap; text-decoration: underline; text-decoration-color: rgba(224,192,107,.5); text-underline-offset: 4px; }
.home-v2 .hv-announce a.hv-lang { font-weight: 600; text-decoration: none; letter-spacing: 1px; font-size: 12.5px; color: #cfdad6; border: 1px solid rgba(255,255,255,.25); border-radius: 20px; padding: 2px 10px; }
.home-v2 .hv-announce a.hv-lang:hover { color: #fff; border-color: var(--gold); }
/* The language buttons carry a flag: Mexico for Español (the clinic is in Cancun), the US for English. */
.home-v2 .hv-announce a.hv-lang { display: inline-flex; align-items: center; gap: 7px; color: #fff; border-color: rgba(255,255,255,.5); }
.hv-lang::before, .hv-drawer__lang::before { content: ""; flex: none; width: 18px; height: 12px; border-radius: 2px; background: center / cover no-repeat; box-shadow: 0 0 0 1px rgba(0,0,0,.18); }
.hv-drawer__lang { gap: 7px; }
.hv-lang[lang="es"]::before, .hv-drawer__lang[lang="es"]::before { background-image: url(/assets/img/flag-mx.svg); }
.hv-lang[lang="en"]::before, .hv-drawer__lang[lang="en"]::before { background-image: url(/assets/img/flag-us.svg); }

/* Header (sticky) */
.hv-header { position: sticky; top: 0; z-index: 50; background: #fff; box-shadow: 0 2px 14px rgba(0,0,0,.06); }
.hv-header__in { max-width: 1440px; margin: 0 auto; padding: 12px clamp(16px, 3vw, 40px); min-height: 92px; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px clamp(16px, 2.5vw, 40px); }
.home-v2 a.hv-logo { display: flex; align-items: center; gap: 12px; flex: none; color: #2c3a33; }
.hv-logo img { width: 58px; height: 58px; display: block; }
/* Logo (v2.1): the mark turns in and the name writes itself on load; on hover the mark glows and turns a little. */
.hv-logo__mark { position: relative; flex: none; display: block; }
.hv-logo__mark::before { content: ""; position: absolute; inset: -6px; border-radius: 50%; background: radial-gradient(circle, rgba(224,192,107,.5) 0%, rgba(224,192,107,0) 70%); opacity: 0; transform: scale(.8); transition: opacity 1.2s ease, transform 1.6s cubic-bezier(.22,1,.36,1); }
.hv-logo__mark img { position: relative; transition: transform 1.6s cubic-bezier(.22,1,.36,1); }
.home-v2 a.hv-logo:hover .hv-logo__mark::before { opacity: 1; transform: scale(1.25); }
.home-v2 a.hv-logo:hover .hv-logo__mark img { transform: rotate(24deg) scale(1.05); transition-duration: 2.4s; }
.home-v2 a.hv-logo:hover .hv-logo__tag { color: #b0924a; }
@keyframes hvLogoIn { 0% { opacity: 0; transform: rotate(-450deg) scale(.85); filter: blur(3px); } 30% { opacity: 1; transform: rotate(-320deg) scale(1); filter: blur(0); } 100% { opacity: 1; transform: rotate(0deg) scale(1); filter: blur(0); } }
@keyframes hvNameIn { from { opacity: 0; transform: translateY(6px); letter-spacing: 6px; filter: blur(4px); } to { opacity: 1; transform: none; letter-spacing: 1.5px; filter: blur(0); } }
@keyframes hvTagIn { from { opacity: 0; transform: translateY(4px); letter-spacing: 4px; clip-path: inset(0 100% 0 0); } to { opacity: 1; transform: none; letter-spacing: 1.6px; clip-path: inset(0 0 0 0); } }
.hv-logo__mark img { animation: hvLogoIn 7s cubic-bezier(.45,.05,.25,1) .2s both; }
.hv-logo__name { animation: hvNameIn 1.8s cubic-bezier(.22,1,.36,1) .9s both; }
.hv-logo__tag { animation: hvTagIn 1.8s cubic-bezier(.22,1,.36,1) 1.7s both; transition: color 1.2s ease; }
@media (prefers-reduced-motion: reduce) { .hv-logo__mark img, .hv-logo__name, .hv-logo__tag { animation: none; } }
.hv-logo__words { display: flex; flex-direction: column; line-height: 1; }
/* The name and tag animate their letter spacing, which would widen the logo and push the header's button onto a
   second row until it ends (layout shift of the whole page). The box takes its width from these two invisible
   copies at their final spacing (home-v2/build.js, speedMarkup, fills the data attributes); the animated text does not count. */
.hv-logo__words::before, .hv-logo__words::after { display: block; height: 0; overflow: hidden; visibility: hidden; white-space: nowrap; }
.hv-logo__words::before { content: attr(data-name); font-family: var(--serif); font-size: 33px; letter-spacing: 1.5px; }
.hv-logo__words::after { content: attr(data-tag); font-family: 'Cinzel', 'RJ Cinzel Fallback', serif; font-size: 10px; letter-spacing: 1.6px; padding-left: 2px; }
.hv-logo__name, .hv-logo__tag { width: 0; min-width: 100%; white-space: nowrap; }
.hv-logo__name { font-family: var(--serif); font-size: 33px; letter-spacing: 1.5px; color: #2c3a33; }
.hv-logo__tag { font-family: 'Cinzel', 'RJ Cinzel Fallback', serif; font-size: 10px; letter-spacing: 1.6px; color: #2c3a33; margin-top: 5px; padding-left: 2px; }
.hv-nav { flex: 1 1 0; min-width: 0; display: flex; flex-wrap: nowrap; justify-content: center; gap: 0 clamp(14px, 1.8vw, 34px); align-items: center; white-space: nowrap; }
.hv-nav__item { position: relative; }
.hv-nav__btn { all: unset; cursor: pointer; display: flex; align-items: center; gap: 6px; font-size: 15.5px; color: var(--green); padding: 30px 0; border-bottom: 2px solid transparent; }
.hv-nav__btn:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
.hv-nav__btn svg { transition: transform .2s; }
.hv-nav__item.is-open > .hv-nav__btn { border-bottom-color: var(--gold); }
.hv-nav__item.is-open > .hv-nav__btn svg { transform: rotate(180deg); }
.hv-drop { display: none; position: absolute; top: 100%; left: -16px; min-width: 270px; background: #fff; border-top: 2px solid var(--gold); border-radius: 0 0 14px 14px; box-shadow: 0 24px 50px rgba(14,42,36,.16); padding: 10px; flex-direction: column; gap: 2px; white-space: normal; z-index: 2; }
.hv-nav__item.is-open > .hv-drop { display: flex; }
.home-v2 .hv-drop a { display: flex; flex-direction: column; gap: 2px; padding: 11px 14px; border-radius: 10px; }
.home-v2 .hv-drop a:hover { background: var(--mint); }
.hv-drop__t { font-size: 15.5px; font-weight: 600; color: var(--green); }
.hv-drop__d { font-size: 13px; color: #888; }
/* "Call now" and the number above the button (v2.1). */
.hv-cta { display: flex; flex-direction: column; align-items: stretch; gap: 6px; flex: none; white-space: nowrap; }
.home-v2 a.hv-phone { display: flex; align-items: center; justify-content: center; gap: 7px; padding: 2px 0; font-size: 14px; font-weight: 700; letter-spacing: .4px; color: var(--green); }
.home-v2 a.hv-phone:hover { color: #b0924a; }
.hv-phone__label { font-size: 11px; letter-spacing: 1.6px; text-transform: uppercase; color: #6b7a74; font-weight: 600; }
.home-v2 a.hv-book { text-align: center; background: var(--green-btn); color: #fff; font-size: 13.5px; font-weight: 600; text-transform: uppercase; padding: 11px 20px; border-radius: 40px; }
.home-v2 a.hv-book:hover { background: var(--gold); color: #fff; }
.hv-burger { all: unset; display: none; cursor: pointer; width: 44px; height: 44px; border-radius: 50%; align-items: center; justify-content: center; color: var(--green); }

/* Mega menus */
.hv-mega { display: none; position: absolute; left: 0; right: 0; top: 100%; background: #fff; border-top: 1px solid #eee; box-shadow: 0 30px 60px rgba(14,42,36,.18); }
.hv-mega.is-open { display: block; }
.hv-mega__grid { max-width: 1440px; margin: 0 auto; padding: 28px clamp(16px, 3vw, 40px); display: grid; grid-template-columns: 250px minmax(0,1fr) 420px; gap: clamp(16px, 2.4vw, 32px); }
.hv-mega--c .hv-mega__grid { max-width: 1240px; padding: 30px clamp(16px, 4vw, 48px); grid-template-columns: 260px minmax(0,1fr) 300px; }
.hv-mega__cats { display: flex; flex-direction: column; gap: 4px; border-right: 1px solid #eee; padding-right: 22px; }
.hv-mega__label { font-size: 12px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: #999; margin-bottom: 8px; }
.hv-mega__cat { all: unset; cursor: pointer; display: flex; justify-content: space-between; align-items: center; padding: 12px 14px; border-radius: 10px; border-left: 3px solid transparent; font-size: 15.5px; font-weight: 600; color: var(--green); }
.hv-mega__cat small { display: block; font-size: 12.5px; color: #888; font-weight: 400; margin-top: 2px; }
.hv-mega__cat span.arr { color: var(--gold); }
.hv-mega__cat.is-active { background: var(--mint); border-left-color: var(--gold); }
.home-v2 a.hv-mega__all { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 14px 16px; border-radius: 12px; background: #0f3a30; color: #fff; font-size: 13.5px; font-weight: 700; letter-spacing: .4px; }
.home-v2 a.hv-mega__all span:last-child { font-size: 16px; }
.home-v2 a.hv-mega__all:hover { background: var(--gold); color: #0f3a30; }
.hv-mega--c .hv-mega__cats { gap: 2px; padding-right: 24px; }
.hv-mega--c .hv-mega__cat { padding: 11px 14px; }
.hv-mega__panel { display: none; flex-direction: column; }
.hv-mega__panel.is-active { display: flex; }
.hv-mega__tag { font-size: 12px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--gold); }
.hv-mega__title { margin-top: 4px; font-family: var(--serif); font-size: clamp(24px, 2.4vw, 32px); line-height: 1.1; color: var(--green); }
.hv-mega__list { margin-top: 16px; display: flex; flex-direction: column; border-top: 1px solid #f1eee6; }
.home-v2 a.hv-mega__item { display: grid; grid-template-columns: 38px minmax(0,1fr) 20px; align-items: center; gap: 12px; padding: 15px 12px; border-bottom: 1px solid #f1eee6; transition: background .2s; }
.home-v2 a.hv-mega__item:hover, .home-v2 a.hv-mega__item.is-active { background: var(--mint); }
.hv-mega__num { font-family: var(--serif); font-size: 20px; color: var(--gold); }
.hv-mega__name { display: flex; flex-direction: column; gap: 2px; }
.hv-mega__name b { font-size: 16.5px; font-weight: 600; color: var(--green); }
.hv-mega__name span { font-size: 13.5px; color: #888; }
.hv-mega__arrow { color: #ddd; font-size: 18px; transition: color .2s; }
.hv-mega__item:hover .hv-mega__arrow, .hv-mega__item.is-active .hv-mega__arrow { color: var(--gold); }
.hv-feat { display: flex; flex-direction: column; border-radius: 18px; overflow: hidden; background: var(--deep); color: #fff; }
.hv-feat__img { position: relative; aspect-ratio: 16/11; background: var(--green); }
.hv-feat__img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hv-feat__img::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(15,58,48,0) 45%, rgba(15,58,48,.85)); }
.hv-feat__name { position: absolute; left: 18px; bottom: 14px; right: 18px; z-index: 1; font-family: var(--serif); font-size: 26px; line-height: 1.1; }
.hv-feat__body { padding: 16px 18px 20px; display: flex; flex-direction: column; gap: 12px; flex: 1; }
.hv-feat__text { font-size: 14px; line-height: 1.55; color: #d5e1dc; }
.hv-feat__btns { margin-top: auto; display: flex; flex-wrap: wrap; gap: 8px; }
.home-v2 .hv-feat__btns a, .home-v2 .hv-pill { font-size: 13px; font-weight: 700; text-transform: uppercase; padding: 10px 16px; border-radius: 30px; }
.home-v2 a.hv-pill--gold { background: var(--gold); color: var(--deep); }
.home-v2 a.hv-pill--gold:hover { background: #fff; color: var(--deep); }
.home-v2 a.hv-pill--ghost { border: 1px solid rgba(255,255,255,.55); color: #fff; }
.home-v2 a.hv-pill--ghost:hover { border-color: #fff; color: #fff; background: rgba(255,255,255,.1); }
.hv-mega__bar { background: var(--sand); }
.hv-mega__bar-in { max-width: 1440px; margin: 0 auto; padding: 13px clamp(16px, 3vw, 40px); display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 10px 24px; font-size: 13px; letter-spacing: 1px; text-transform: uppercase; color: #5b6b65; }
.hv-mega__bar-in > div { display: flex; flex-wrap: wrap; gap: 8px 24px; }
.home-v2 .hv-mega__bar a { font-weight: 700; letter-spacing: .5px; }
.hv-cond__text { margin: 12px 0 0; font-size: 15px; line-height: 1.6; color: #555; max-width: 560px; }
.hv-chips { margin-top: 18px; display: flex; flex-wrap: wrap; gap: 8px; }
.home-v2 a.hv-chip { white-space: nowrap; padding: 9px 15px; border-radius: 30px; border: 1px solid #e0d9c6; font-size: 14px; font-weight: 600; color: var(--green); }
.home-v2 a.hv-chip:hover { background: var(--green); border-color: var(--green); color: #fff; }
.home-v2 a.hv-cond__all { display: inline-block; margin-top: 20px; font-size: 14px; font-weight: 700; color: var(--gold); }
.hv-cond__card { position: relative; border-radius: 16px; overflow: hidden; background: var(--deep); color: #fff; display: flex; flex-direction: column; justify-content: flex-end; min-height: 300px; }
.hv-cond__card img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hv-cond__card::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(15,58,48,.15), rgba(15,58,48,.95) 70%); }
.hv-cond__card-body { position: relative; z-index: 2; padding: 22px; display: flex; flex-direction: column; gap: 8px; }

/* Hero */
.hv-hero { position: relative; min-height: 640px; background: var(--night); overflow: hidden; display: flex; flex-direction: column; }
.hv-hero__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hv-hero__shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(10,32,28,.55) 0%, rgba(10,32,28,.72) 55%, rgba(10,32,28,.95) 100%); }
.hv-hero__mark { position: absolute; right: -120px; top: -80px; width: 520px; opacity: .07; pointer-events: none; }
.hv-hero__in { position: relative; flex: 1; max-width: 1240px; width: 100%; margin: 0 auto; padding: 56px var(--pad) 40px; display: flex; flex-direction: column; align-items: center; text-align: center; }
.hv-mc { display: block; line-height: 0; padding: 14px 20px; background: #fff; border-radius: 18px; box-shadow: 0 16px 40px rgba(0,0,0,.3); border: 1px solid rgba(224,192,107,.6); transition: opacity .2s; }
.hv-mc:hover { opacity: .85; }
.hv-mc img { display: block; width: min(68vw, 320px); height: auto; }
.hv-hero h1 { margin: 24px 0 0; max-width: 1100px; font-family: var(--serif); font-weight: 400; font-size: clamp(40px, 5.4vw, 70px); line-height: 1.02; color: #fff; text-wrap: balance; }
.hv-hero h1 span { color: var(--gold-light); }
.hv-hero__rule { margin-top: 22px; width: 80px; height: 1px; background: var(--gold); }
.hv-hero__lead { margin: 22px 0 0; max-width: 720px; font-size: 19px; line-height: 1.45; color: #eef3f1; }
.hv-tags { margin-top: 34px; display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; }
.hv-tag { display: flex; align-items: center; gap: 8px; padding: 9px 16px; border-radius: 40px; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.18); font-size: 13px; letter-spacing: .5px; color: #fff; text-transform: uppercase; }
.hv-tag img { width: 16px; height: 16px; }
.hv-hero__btns { margin-top: 38px; display: flex; flex-wrap: wrap; justify-content: center; gap: 16px; }
.home-v2 .hv-hero__btns a { font-size: 16px; font-weight: 700; text-transform: uppercase; padding: 16px 28px; border-radius: 40px; }
.home-v2 a.hv-hero__book { background: var(--gold); color: #16332b; box-shadow: 0 10px 30px rgba(194,168,94,.35); }
.home-v2 a.hv-hero__book:hover { background: var(--gold-light); color: #16332b; }
.home-v2 a.hv-hero__ghost { color: #fff; border: 1.5px solid #fff; }
.home-v2 a.hv-hero__ghost:hover { background: #fff; color: var(--green); }
.hv-stats { position: relative; border-top: 1px solid rgba(255,255,255,.12); }
.hv-stats__in { max-width: 1240px; margin: 0 auto; padding: 18px var(--pad); display: flex; flex-wrap: wrap; justify-content: center; gap: 10px 40px; font-size: 13.5px; letter-spacing: 1.5px; text-transform: uppercase; color: #cfdad6; }
.hv-stats b { color: var(--gold-light); font-weight: 600; }

/* Two-column sections */
.hv-split { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 440px), 1fr)); gap: 36px; align-items: center; }

/* Micah */
.hv-micah { background: var(--mint); }
.hv-micah .hv-wrap { padding-top: 56px; padding-bottom: 70px; }
.hv-micah h2 { margin: 0; font-family: var(--serif); font-weight: 400; font-size: clamp(36px, 4vw, 49px); line-height: 1; color: var(--green); }
.hv-micah p { margin: 17px 0 0; }
.hv-micah p:first-of-type { margin-top: 26px; }
.hv-btn-row { margin-top: 40px; display: flex; flex-wrap: wrap; gap: 12px; }
.hv-strip { position: relative; height: 580px; overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 14%, #000 86%, transparent 100%); mask-image: linear-gradient(90deg, transparent 0, #000 14%, #000 86%, transparent 100%); }
.hv-strip__track { display: flex; gap: 12px; height: 100%; will-change: transform; }
.hv-strip__track img { flex: none; width: 320px; height: 100%; object-fit: cover; border-radius: 12px; background: var(--deeper); }
.hv-strip__bar { margin: 24px 30px 0; height: 3px; background: #ece6d2; border-radius: 3px; overflow: hidden; }
.hv-strip__bar div { height: 100%; width: 0; background: var(--green); }
.hv-press { margin-top: 24px; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 12px; }
.home-v2 a.hv-press__card { display: flex; align-items: center; justify-content: space-between; gap: 12px; background: #fff; border: 1px solid #e3ece8; border-radius: 14px; padding: 12px 18px; }
.home-v2 a.hv-press__card:hover { border-color: var(--gold); }
.hv-press__card img { height: 34px; width: auto; max-width: 150px; object-fit: contain; display: block; }
.hv-press__card span { font-size: 12.5px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: var(--gold); white-space: nowrap; }

/* Why choose (sticky video) */
.hv-why .hv-wrap { padding-top: 80px; padding-bottom: 80px; }
.hv-why .hv-split { gap: 48px; align-items: start; }
.hv-why__eyebrow { display: flex; align-items: center; gap: 12px; }
.hv-why__eyebrow img { width: 34px; height: 34px; }
.hv-why h2 { margin-top: 10px; line-height: 1; }
.hv-why p { margin: 20px 0 0; }
.hv-why p:first-of-type { margin-top: 26px; }
.hv-why__list { margin-top: 34px; display: flex; flex-direction: column; }
.hv-why__row { display: flex; gap: 16px; align-items: flex-start; padding: 16px 0; border-top: 1px solid #eee; }
.hv-why__row img { width: 22px; flex: none; margin-top: 2px; animation: rsSpin 14s linear infinite; }
.hv-why__t { font-size: 15px; font-weight: 700; text-transform: uppercase; letter-spacing: .3px; color: var(--green); }
.hv-why__d { margin-top: 3px; font-size: 15px; color: #666; }
.hv-sticky { position: sticky; top: 130px; }
.hv-video { display: block; position: relative; width: 100%; padding: 0; border: 0; background: none; cursor: pointer; border-radius: 18px; }
.hv-video img { width: 100%; aspect-ratio: 1059/595; object-fit: cover; border-radius: 18px; display: block; box-shadow: 0 30px 60px rgba(14,42,36,.18); }
.hv-video__play { position: absolute; left: 50%; top: 50%; width: 86px; height: 86px; margin: -43px 0 0 -43px; border-radius: 50%; background: var(--gold); display: flex; align-items: center; justify-content: center; box-shadow: 0 0 0 14px rgba(194,168,94,.18); transition: transform .2s; }
.hv-video:hover .hv-video__play { transform: scale(1.06); }
.hv-video__meta { margin-top: 16px; display: flex; justify-content: space-between; font-size: 13px; letter-spacing: 1.5px; text-transform: uppercase; color: #888; }
.hv-video__meta span:last-child { color: var(--gold); }
/* The Instagram reel beside "Why Choose RejuvStem" (Ryan's design, 2 Nov 2026) */
.hv-why__reel { display: flex; flex-direction: column; gap: 14px; align-items: center; width: 100%; }
.hv-why__frame { position: relative; width: 100%; max-width: 400px; aspect-ratio: 9/16; max-height: 720px; border-radius: 24px; overflow: hidden; background: #0f3a30; box-shadow: 0 30px 70px rgba(14,42,36,.22); border: 1px solid rgba(194,168,94,.35); }
.hv-why__frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: #fff; }
.hv-why__cap { display: flex; justify-content: space-between; align-items: center; gap: 12px; width: 100%; max-width: 400px; }
.hv-why__cap span { font-family: var(--serif); font-size: 20px; color: #134b3d; }
.home-v2 .hv-why__cap a { font-size: 13px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: #b0924a; }
.home-v2 .hv-why__cap a:hover { color: #134b3d; }

/* Human Regenerator */
.hv-regen { background: var(--sand); }
.hv-regen .hv-wrap { padding-top: 80px; padding-bottom: 80px; }
.hv-center { text-align: center; max-width: 640px; margin: 0 auto; }
.hv-regen__intro { margin: 28px 0 0; font-size: 16px; line-height: 1.55; }
.hv-regen__grid { margin-top: 50px; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); gap: 36px; align-items: start; }
.hv-regen__img { width: 100%; aspect-ratio: 3/2; object-fit: cover; object-position: center; display: block; border-radius: 14px; }
/* The photo and Read More stay in view (under the header) while the text beside them scrolls. */
.hv-regen h3 { margin: 0; font-family: var(--serif); font-weight: 400; font-size: clamp(32px, 3.6vw, 46px); line-height: 1; color: var(--green); }
.hv-regen__grid p { margin: 18px 0 0; font-size: 16px; line-height: 1.55; }
.hv-regen__grid h3 + p { margin-top: 22px; }
.hv-facts { margin-top: 28px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; border-top: 1px solid #e0d9c6; padding-top: 22px; }
.hv-facts b { display: block; font-family: var(--serif); font-size: 30px; font-weight: 400; color: var(--green); }
.hv-facts span { font-size: 13px; color: #666; }

/* Reviews marquee */
.hv-reviews { position: relative; background: var(--deep); overflow: hidden; }
.hv-reviews__mark { position: absolute; width: 520px; opacity: .06; pointer-events: none; }
.hv-reviews__in { position: relative; padding: 84px 0; }
.hv-reviews__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 24px; }
.hv-reviews .hv-eyebrow { color: var(--gold-light); }
.hv-reviews h2 { color: #fff; line-height: 1.02; }
.hv-score { display: flex; align-items: center; gap: 18px; background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.14); border-radius: 16px; padding: 14px 20px; }
.hv-score__num { font-family: var(--serif); font-size: 44px; line-height: 1; color: #fff; }
.hv-score__stars { display: flex; flex-direction: column; gap: 4px; }
.hv-score__stars span:first-child { font-size: 18px; letter-spacing: 3px; color: var(--gold-light); }
.hv-score__stars span:last-child { font-size: 13.5px; color: #cfdad6; }
.home-v2 a.hv-score__btn { margin-left: 8px; background: var(--gold); color: var(--deep); font-size: 13px; font-weight: 700; text-transform: uppercase; padding: 10px 16px; border-radius: 30px; }
.home-v2 a.hv-score__btn:hover { background: #fff; color: var(--deep); }
.hv-marquee { margin-top: 48px; display: flex; flex-direction: column; gap: 20px; -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%); mask-image: linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%); }
.hv-marquee__row { overflow: hidden; }
.hv-reviews__call { margin: 0; text-align: center; font-size: 15px; color: #cfdad6; }
.home-v2 .hv-reviews__call a { color: var(--gold); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.hv-marquee-track { display: flex; gap: 20px; width: max-content; align-items: stretch; animation: rsMarquee 70s linear infinite; }
.hv-marquee__row--b .hv-marquee-track { animation-duration: 85s; animation-direction: reverse; }
.hv-marquee-track:hover { animation-play-state: paused; }
.hv-review { flex: none; width: 380px; background: #fff; border-radius: 20px; padding: 26px 28px; display: flex; flex-direction: column; gap: 16px; box-shadow: 0 20px 40px rgba(0,0,0,.18); }
.hv-review__top { display: flex; justify-content: space-between; align-items: center; }
.hv-review__top span:first-child { font-size: 16px; letter-spacing: 3px; color: var(--gold); }
.hv-review__top span:last-child { font-family: var(--serif); font-size: 56px; line-height: .6; color: #e7dcbc; }
.hv-review__q { font-size: 16.5px; line-height: 1.55; color: #2f3d38; white-space: normal; flex: 1; margin: 0; }
.hv-review__by { display: flex; align-items: center; justify-content: space-between; gap: 12px; border-top: 1px solid #f0ece0; padding-top: 14px; }
.hv-review__by b { display: block; font-size: 15px; color: var(--green); }
.hv-review__by small { font-size: 12.5px; color: #888; }
.hv-review__by > span { font-size: 12px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: var(--gold); }

/* Conditions */
.hv-conds .hv-wrap { padding-top: 84px; padding-bottom: 84px; }
.hv-headrow { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 20px; }
.hv-headrow > div { max-width: 640px; }
.hv-conds__grid { margin-top: 44px; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); gap: 18px; }
.home-v2 a.hv-card { position: relative; display: flex; flex-direction: column; justify-content: flex-end; aspect-ratio: 4/5; border-radius: 18px; overflow: hidden; background: #e7e1d2; color: #fff; transition: box-shadow .25s; }
.home-v2 a.hv-card:hover { box-shadow: 0 24px 50px rgba(14,42,36,.3); color: #fff; }
.hv-card img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .5s; }
.hv-card:hover img { transform: scale(1.04); }
.hv-card::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(14,42,36,0) 35%, rgba(14,42,36,.92) 100%); }
.hv-card__body { position: relative; z-index: 2; padding: 22px; display: flex; flex-direction: column; gap: 8px; }
.hv-card__title { font-family: var(--serif); font-size: 24px; line-height: 1.1; }
.hv-card__text { font-size: 14px; line-height: 1.45; color: #dfe8e4; }
.hv-card__more { font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; color: var(--gold-light); }
.hv-under { margin-top: 34px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 18px; }
.home-v2 .hv-under a:not(.hv-btn) { font-size: 15px; font-weight: 600; text-decoration: underline; }

/* Video testimonials */
.hv-tests { background: var(--mint); }
.hv-tests .hv-wrap { padding-top: 84px; padding-bottom: 84px; }
.hv-tests__sub { margin: 14px 0 0; }
.hv-tests__grid { margin-top: 40px; display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 24px; align-items: stretch; }
.hv-player { min-width: 0; display: flex; flex-direction: column; background: var(--deep); border-radius: 20px; overflow: hidden; }
.hv-player__screen { position: relative; aspect-ratio: 16/9; background: linear-gradient(135deg, var(--green), #0b2a23); }
.hv-player__screen img, .hv-player__screen iframe { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border: 0; }
.hv-player__start { position: absolute; inset: 0; width: 100%; border: 0; padding: 0; cursor: pointer; background: rgba(12,36,32,.25); display: flex; align-items: center; justify-content: center; }
.hv-player__start span { width: 86px; height: 86px; border-radius: 50%; background: var(--gold); display: flex; align-items: center; justify-content: center; box-shadow: 0 0 0 14px rgba(194,168,94,.18); transition: transform .2s; }
.hv-player__start:hover span { transform: scale(1.06); }
.hv-player__info { padding: 24px 28px 28px; display: flex; flex-direction: column; gap: 10px; }
.hv-player__now { font-size: 12px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--gold-light); }
.hv-player__name { font-family: var(--serif); font-size: 30px; color: #fff; line-height: 1.1; }
.hv-player__text { font-size: 16px; line-height: 1.55; color: #d5e1dc; margin: 0; }
.hv-vlist { display: flex; flex-direction: column; gap: 8px; max-height: 620px; overflow-y: auto; padding-right: 4px; }
.hv-vlist button { all: unset; box-sizing: border-box; cursor: pointer; display: flex; gap: 14px; align-items: center; padding: 12px; border-radius: 14px; border: 1px solid transparent; }
.hv-vlist button:hover { background: rgba(255,255,255,.6); }
.hv-vlist button.is-active { background: #fff; border-color: var(--gold); }
.hv-vlist button:focus-visible { outline: 2px solid var(--gold); }
.hv-vlist__thumb { position: relative; flex: none; width: 96px; height: 62px; border-radius: 10px; overflow: hidden; background: linear-gradient(135deg, #1b5a4a, var(--deep)); display: flex; align-items: center; justify-content: center; }
.hv-vlist__thumb img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .55; }
.hv-vlist__thumb svg { position: relative; }
.hv-vlist__txt { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.hv-vlist__txt b { font-size: 15.5px; color: var(--green); }
.hv-vlist__txt span { font-size: 13px; color: #777; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* Protocol */
.hv-proto .hv-wrap { padding-top: 84px; padding-bottom: 84px; }
.hv-proto .hv-center { max-width: 740px; }
.hv-steps { position: relative; margin-top: 56px; }
.hv-steps__line, .hv-steps__fill { position: absolute; left: 10%; top: 31px; height: 2px; }
.hv-steps__line { right: 10%; background: #ece6d2; }
.hv-steps__fill { width: 0; background: var(--gold); transition: width .9s ease; }
.hv-steps__row { position: relative; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; }
.hv-step { all: unset; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 12px; text-align: center; }
.hv-step:focus-visible .hv-step__dot { outline: 2px solid var(--gold); outline-offset: 4px; }
.hv-step__dot { width: 64px; height: 64px; border-radius: 50%; background: #fff; color: var(--green); border: 2px solid var(--gold); font-family: var(--serif); font-size: 26px; display: flex; align-items: center; justify-content: center; transition: all .5s ease; }
.hv-step.is-done .hv-step__dot { background: var(--green); color: var(--gold-light); }
.hv-step.is-active .hv-step__dot { box-shadow: 0 0 0 8px rgba(194,168,94,.25); }
.hv-step__when { font-size: 12px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase; color: var(--gold); }
.hv-step__title { font-size: 15px; font-weight: 600; color: var(--green); line-height: 1.25; max-width: 170px; }
.hv-phase { display: none; margin-top: 40px; position: relative; overflow: hidden; background: var(--sand); border-radius: 22px; padding: clamp(28px, 4vw, 48px); grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 40px; align-items: center; }
.hv-phase.is-active { display: grid; }
.hv-phase__big { position: absolute; right: 20px; top: -40px; font-family: var(--serif); font-size: 260px; line-height: 1; color: rgba(19,75,61,.06); }
.hv-phase__body { position: relative; }
.hv-phase__kicker { font-size: 13px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--gold); }
.hv-phase h3 { margin: 8px 0 0; font-family: var(--serif); font-weight: 400; font-size: clamp(28px, 3vw, 38px); color: var(--green); line-height: 1.1; }
.hv-phase p { margin: 16px 0 0; font-size: 16.5px; line-height: 1.65; }
.hv-phase__foot { margin-top: 22px; display: flex; flex-wrap: wrap; align-items: center; gap: 14px; }
.hv-phase__tag { display: inline-flex; background: var(--green); color: #fff; border-radius: 30px; padding: 7px 14px; font-size: 13px; font-weight: 600; }
.hv-phase__next { all: unset; cursor: pointer; font-size: 14px; font-weight: 700; text-transform: uppercase; color: var(--green); }
.hv-phase__next:hover { color: var(--gold); }
.hv-phase__img { position: relative; aspect-ratio: 4/3; border-radius: 16px; width: 100%; object-fit: cover; background: var(--green); display: block; }
.hv-center-btns { margin-top: 36px; display: flex; flex-wrap: wrap; justify-content: center; gap: 16px; }

/* FAQ (sticky side) */
.hv-faq { background: var(--sand); }
.hv-faq .hv-wrap { padding-top: 84px; padding-bottom: 84px; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 44px; align-items: center; }
/* The questions sit level with the middle of the side panel (it is taller than most answers). */
.hv-faq__cats { margin-top: 28px; display: flex; flex-direction: column; gap: 6px; }
.hv-faq__cat { all: unset; box-sizing: border-box; cursor: pointer; display: flex; justify-content: space-between; align-items: center; padding: 13px 18px; border-radius: 12px; background: #fff; color: var(--green); font-size: 15.5px; font-weight: 600; border-left: 3px solid transparent; transition: background .2s, color .2s, border-color .2s, transform .2s; }
.hv-faq__cat span { font-size: 13px; opacity: .7; }
/* Hover: a soft mint fill, a gold edge and a nudge to the right; the chosen one stays solid green. */
.hv-faq__cat:not(.is-active):hover { background: var(--mint); border-left-color: var(--gold); transform: translateX(4px); }
.hv-faq__cat.is-active { background: var(--green); color: #fff; }
.hv-faq__cat:focus-visible { outline: 2px solid var(--gold); }
.hv-faq__call { margin-top: 24px; padding: 22px; border-radius: 16px; background: var(--green); color: #fff; }
.hv-faq__call b { display: block; font-family: var(--serif); font-size: 22px; font-weight: 400; }
.hv-faq__call span { display: block; margin-top: 6px; font-size: 14.5px; color: #cfdad6; }
.home-v2 .hv-faq__call a { margin-top: 14px; display: inline-flex; background: var(--gold); color: var(--deep); font-weight: 700; font-size: 14px; padding: 10px 18px; border-radius: 30px; }
.home-v2 .hv-faq__call a:hover { background: #fff; color: var(--deep); }
.hv-faq__list { min-width: 0; display: flex; flex-direction: column; gap: 12px; }
.hv-faq__group { display: none; flex-direction: column; gap: 12px; }
.hv-faq__group.is-active { display: flex; }
.hv-q { background: #fff; border-radius: 16px; border: 1px solid #ece6d2; overflow: hidden; transition: box-shadow .3s, border-color .3s; }
.hv-q:not(.is-open):hover { border-color: var(--gold); box-shadow: 0 10px 26px rgba(14,42,36,.06); }
.hv-q:not(.is-open):hover .hv-q__sign { background: var(--gold); color: #fff; }
.hv-q__sign { transition: background .2s, color .2s; }
.hv-q.is-open { border-color: var(--gold); box-shadow: 0 18px 40px rgba(14,42,36,.08); }
.hv-q__btn { all: unset; box-sizing: border-box; width: 100%; cursor: pointer; display: flex; align-items: center; gap: 18px; padding: 22px 26px; }
.hv-q__btn:focus-visible { outline: 2px solid var(--gold); outline-offset: -2px; }
.hv-q__num { flex: none; font-family: var(--serif); font-size: 22px; color: var(--gold); width: 30px; }
/* The number is drawn, not written, so the question's text is the question alone (audit line SCH-04). */
.hv-q__num::before { content: attr(data-n); }
.hv-q__text { flex: 1; font-size: 18px; font-weight: 600; color: var(--green); }
.hv-q__sign { flex: none; width: 34px; height: 34px; border-radius: 50%; background: var(--sand); color: var(--green); display: flex; align-items: center; justify-content: center; font-size: 20px; }
.hv-q.is-open .hv-q__sign { background: var(--green); color: #fff; }
.hv-q__body { display: none; padding: 0 26px 24px 74px; flex-direction: column; gap: 14px; }
.hv-q.is-open .hv-q__body { display: flex; }
.hv-q__a { font-size: 16px; line-height: 1.65; color: #555; margin: 0; }
/* The pages an answer names are linked, and each category's answers end with its condition page (v2.1). */
.home-v2 .hv-q__a a { color: var(--green); font-weight: 600; text-decoration: underline; text-decoration-color: rgba(194,168,94,.6); text-underline-offset: 3px; }
.home-v2 .hv-q__a a:hover { color: #b0924a; }
.home-v2 a.hv-q__more { align-self: flex-start; font-size: 13px; font-weight: 700; letter-spacing: 1.2px; text-transform: uppercase; color: #b0924a; }
.home-v2 a.hv-q__more:hover { color: var(--green); }
/* The FAQ controls show the logo mark (audit line DES-10): it turns a quarter when the answer opens,
   and each category carries a small mark beside its name. */
.hv-q__sign::before { content: '+'; }
.hv-q.is-open .hv-q__sign::before { content: '−'; }
.hv-faq__name { display: flex; align-items: center; gap: 10px; font-weight: inherit; }
.hv-faq__name img { width: 18px; height: 18px; flex: none; }

/* Gallery */
/* Two rows of clinic photos drifting opposite ways, paused on hover (v2.1). */
.hv-gallery { background: #fff; padding: 10px 0 0; overflow: hidden; display: flex; flex-direction: column; gap: 10px; }
.hv-gallery__track { display: flex; gap: 10px; width: max-content; animation: rsMarquee 90s linear infinite; }
.hv-gallery__row--b .hv-gallery__track { animation-duration: 110s; animation-direction: reverse; }
.hv-gallery__track:hover { animation-play-state: paused; }
.hv-gallery__track img { flex: none; width: clamp(220px, 22vw, 320px); aspect-ratio: 4/3; object-fit: cover; border-radius: 6px; display: block; background: #e7e1d2; }

/* Contact */
.hv-contact .hv-wrap { padding-top: 70px; padding-bottom: 84px; }
.hv-contact__box { border-radius: 28px; overflow: hidden; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); box-shadow: 0 40px 80px rgba(14,42,36,.14); }
.hv-contact__info { position: relative; background: var(--deep); color: #fff; display: flex; }
.hv-contact__info > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
/* The lobby sign shows through at the bottom (v2.1). */
.hv-contact__info::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(15,58,48,.94) 0%, rgba(15,58,48,.86) 45%, rgba(15,58,48,.35) 100%); }
.hv-contact__body { position: relative; z-index: 2; padding: clamp(28px, 4vw, 52px) clamp(28px, 4vw, 52px) 220px; display: flex; flex-direction: column; gap: 22px; }
.hv-contact .hv-eyebrow { color: var(--gold-light); }
.hv-contact h2 { margin: -12px 0 0; color: #fff; }
.hv-contact__lead { margin: 0; font-size: 16.5px; line-height: 1.6; color: #dfe8e4; }
.hv-contact__ways { display: flex; flex-direction: column; gap: 14px; margin-top: 6px; }
.home-v2 .hv-contact__ways a { display: flex; gap: 14px; align-items: center; color: #fff; }
.home-v2 .hv-contact__ways a:hover { color: var(--gold-light); }
.hv-contact__icon { flex: none; width: 44px; height: 44px; border-radius: 50%; background: var(--gold); display: flex; align-items: center; justify-content: center; }
.hv-contact__icon svg { width: 20px; height: 20px; }
.hv-contact__ways small { display: block; font-size: 12px; letter-spacing: 1.5px; text-transform: uppercase; color: var(--gold-light); }
/* The consultation form (GoHighLevel) is styled white-on-dark - white labels and borders, see-through
   background - so its panel is the brand green, as on the live site; on white it would be invisible. */
.hv-contact__form { background: var(--green); padding: clamp(16px, 2.5vw, 28px) clamp(12px, 2vw, 22px); min-height: 640px; }
.hv-contact__form iframe { width: 100%; min-height: 640px; border: 0; display: block; }
@media (max-width: 560px) { .hv-contact__form iframe { min-height: 921px; } }   /* the form's height on phones, kept while its frame loads near the visitor */

/* Instagram */
.hv-insta { background: var(--sand); }
.hv-insta .hv-wrap { max-width: none; padding: 60px clamp(12px, 2vw, 24px); }
.hv-insta h2 { font-size: 40px; }
.hv-insta__grid { margin-top: 30px; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: 14px; }
@media (min-width: 700px) { .hv-insta__grid { grid-template-columns: repeat(5, minmax(0, 1fr)); } }   /* the five posts on one row */
.home-v2 a.hv-reel { position: relative; display: block; aspect-ratio: 3/4; border-radius: 14px; overflow: hidden; background: #e7e1d2; }
.hv-reel img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .4s; }
.hv-reel:hover img { transform: scale(1.04); }
.hv-reel span { position: absolute; right: 10px; top: 10px; width: 34px; height: 34px; border-radius: 50%; background: rgba(15,58,48,.6); display: flex; align-items: center; justify-content: center; }

/* Footer */
.hv-footer { background: var(--deeper); color: #cfdad6; }
.hv-footer__grid { max-width: 1440px; margin: 0 auto; padding: 64px clamp(16px, 3vw, 40px) 30px; display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 36px; }
@media (min-width: 560px) and (max-width: 979px) { .hv-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }   /* tablets: two by two (three across left "Cancun, Mexico" alone) */
.hv-footer__brand { display: flex; flex-direction: column; gap: 16px; }
.hv-footer__brand > div:first-child { display: flex; align-items: center; gap: 10px; }
.hv-footer__brand > div:first-child img { width: 48px; }
.hv-footer__brand > div:first-child span { font-family: var(--serif); font-size: 26px; letter-spacing: 1.5px; color: #fff; }
.hv-footer p { margin: 0; font-size: 14.5px; line-height: 1.6; }
.hv-social { display: flex; gap: 10px; margin-top: 4px; }
.home-v2 .hv-social a { width: 38px; height: 38px; border-radius: 50%; border: 1px solid rgba(255,255,255,.22); display: flex; align-items: center; justify-content: center; color: var(--gold-light); }
.home-v2 .hv-social a:hover { background: var(--gold); color: var(--deeper); border-color: var(--gold); }
.hv-footer h3 { margin: 0; font-family: var(--serif); font-size: 20px; font-weight: 400; color: var(--gold-light); }
.hv-footer__links { margin-top: 16px; display: flex; flex-direction: column; gap: 10px; font-size: 14.5px; }
.home-v2 .hv-footer a { color: #cfdad6; }
.home-v2 .hv-footer a:hover { color: var(--gold-light); }
.home-v2 .hv-footer a.hv-more { color: var(--gold-light); font-weight: 600; }
.hv-footer__visit { margin-top: 16px; display: flex; flex-direction: column; gap: 12px; font-size: 14.5px; line-height: 1.5; }
.home-v2 .hv-footer__visit a { display: flex; gap: 10px; align-items: flex-start; }
.hv-footer__visit svg { flex: none; margin-top: 3px; }
.hv-footer__visit iframe { width: 100%; height: 170px; border: 0; border-radius: 12px; display: block; filter: grayscale(.3); }
.hv-footer__bottom { border-top: 1px solid rgba(255,255,255,.1); }
.hv-footer__bottom-in { max-width: 1440px; margin: 0 auto; padding: 20px clamp(16px, 3vw, 40px); display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; font-size: 13.5px; }
.hv-footer__bottom-in > div { display: flex; flex-wrap: wrap; gap: 6px 18px; }
.home-v2 .hv-footer__bottom a.hv-aim { color: var(--gold-light); font-weight: 600; }

/* Video pop-up */
dialog.hv-modal { width: min(1100px, calc(100vw - 32px)); padding: 0; border: 0; border-radius: 16px; background: #000; overflow: visible; }
dialog.hv-modal::backdrop { background: rgba(8, 24, 20, .85); }
.hv-modal__frame { position: relative; aspect-ratio: 16/9; }
.hv-modal__frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; border-radius: 16px; }
.hv-modal__close { all: unset; position: absolute; top: -46px; right: 0; width: 40px; height: 40px; border-radius: 50%; color: #fff; font-size: 30px; line-height: 40px; text-align: center; cursor: pointer; }
.hv-modal__close:hover, .hv-modal__close:focus-visible { background: rgba(255,255,255,.15); }

/* Narrower desktops: the menu gets its own row.
   The menu never wraps onto two lines. */
@media (max-width: 1279px) {
  .hv-nav { flex: 1 1 100%; order: 3; flex-wrap: wrap; }
  .hv-nav__btn { padding: 12px 0; }
  .hv-cta { flex-direction: row; align-items: center; gap: 18px; }
}
/* Spanish menu labels are longer ("Quiénes somos", "Cómo funciona"): from 1280px to 1439px they stay on the
   logo's row with a little less space around them (a second row made the header 142px tall). */
@media (min-width: 1280px) and (max-width: 1439px) {
  html[lang^="es"] .hv-header__in { padding-inline: 22px; column-gap: 18px; }
  html[lang^="es"] .hv-nav { gap: 0 12px; }
  html[lang^="es"] .hv-nav__btn, html[lang^="es"] .hv-nav > a { font-size: 14.5px; }
}
@media (max-width: 1100px) {
  .hv-mega__grid { grid-template-columns: minmax(180px, 220px) minmax(0, 1fr); }
  .hv-mega--c .hv-mega__grid { grid-template-columns: minmax(190px, 240px) minmax(0, 1fr); }
  .hv-feat, .hv-cond__card { display: none; }
}
/* Tablets */
@media (max-width: 1024px) {
  .hv-tests__grid { grid-template-columns: minmax(0, 1fr); }
  .hv-vlist { max-height: none; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
  .hv-faq .hv-wrap { grid-template-columns: minmax(0, 1fr); }
  .hv-faq .hv-sticky { position: static; }
  .hv-phase { grid-template-columns: minmax(0, 1fr); }
}
/* Phones and tablets: menu behind a button (MarkUp pin 14: on tablets the menu sat squeezed on a second
   row under the logo). Tablets keep the phone number and the Book button beside it. */
@media (max-width: 1024px) {
  .hv-burger { display: inline-flex; }
  .hv-nav { display: none; flex-direction: column; flex-wrap: nowrap; align-items: stretch; white-space: normal; gap: 0; max-height: calc(100vh - 140px); overflow-y: auto; border-top: 1px solid #eee; }
  .hv-header.is-menu .hv-nav { display: flex; }
  .hv-nav__btn { box-sizing: border-box; width: 100%; justify-content: space-between; padding: 14px 4px; border-bottom: 1px solid #f0eee8; font-size: 17px; }
  .hv-nav__item.is-open > .hv-nav__btn { border-bottom-color: #f0eee8; }
  .hv-drop { position: static; box-shadow: none; border-top: 0; min-width: 0; padding: 4px 0 10px 8px; }
  .hv-mega { position: static; box-shadow: none; border-top: 0; }
  .hv-nav__item .hv-mega { display: none; }
  .hv-nav__item.is-open .hv-mega { display: block; }
  .hv-mega__grid, .hv-mega--c .hv-mega__grid { grid-template-columns: minmax(0, 1fr); padding: 6px 0 12px 8px; gap: 10px; }
  .hv-mega__cats { border-right: 0; padding-right: 0; }
  .hv-mega__bar { display: none; }
  /* The two-column sections stack on tablets: a sticky photo then slid over the text under it while
     scrolling (MarkUp pin 19, the Human Regenerator photo on an iPad Air). */
  .hv-sticky { position: static; }
  /* The menu opens as a drawer from the right, over the dimmed page (MarkUp pin 33, iPad Air): a green panel,
     the logo in its top band, every section open with its pages listed under a gold label. The menu button
     turns into the drawer's close button; a tap on the dimmed page closes it too (home.js). */
  .hv-header.is-menu .hv-nav { display: none; }
  .hv-header.is-menu .hv-drawer { display: flex; flex-direction: column; position: fixed; top: 0; right: 0; bottom: 0; z-index: 60; width: min(380px, 88vw); background: #fff; color: var(--text); box-shadow: -24px 0 60px rgba(0, 0, 0, .25); overflow-y: auto; overscroll-behavior: contain; animation: hv-drawer-in .25s ease-out; }
  .hv-drawer__top { position: sticky; top: 0; z-index: 2; flex: none; display: flex; align-items: center; min-height: 64px; padding: 0 64px 0 18px; background: var(--green); border-bottom: 2px solid var(--gold); }
  .home-v2 a.hv-drawer__logo { display: flex; align-items: center; gap: 10px; color: #fff; font-family: var(--serif); font-size: 22px; letter-spacing: 1.5px; }
  .hv-drawer__logo img { width: 34px; height: 34px; display: block; }
  .hv-drawer__actions { flex: none; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; padding: 14px 18px; background: var(--sand); border-bottom: 1px solid #ece7da; }
  .home-v2 a.hv-drawer__book, .home-v2 a.hv-drawer__call { display: flex; align-items: center; justify-content: center; gap: 6px; min-height: 44px; padding: 8px 10px; border-radius: 12px; font-size: 14px; font-weight: 700; text-align: center; }
  .home-v2 a.hv-drawer__book { background: var(--green); color: #fff; }
  .home-v2 a.hv-drawer__call { background: #fff; color: var(--green); border: 1px solid #dfe8e3; }
  .hv-drawer__call svg { width: 16px; height: 16px; }
  .home-v2 a.hv-drawer__feat { flex: none; display: grid; grid-template-columns: 96px minmax(0, 1fr); margin: 14px 18px 6px; border-radius: 16px; overflow: hidden; background: var(--deep); color: #fff; }
  .hv-drawer__feat img { width: 96px; height: 100%; min-height: 96px; object-fit: cover; display: block; }
  .hv-drawer__feat > span { display: flex; flex-direction: column; justify-content: center; gap: 4px; padding: 12px 14px; }
  .hv-drawer__feat small { font-size: 10.5px; font-weight: 700; letter-spacing: 1.3px; text-transform: uppercase; color: var(--gold-light); }
  .hv-drawer__feat b { font-family: var(--serif); font-weight: 400; font-size: 20px; line-height: 1.1; }
  .hv-drawer__feat em { font-style: normal; font-size: 13px; font-weight: 700; color: var(--gold-light); }
  .hv-drawer__body { padding: 6px 0 10px; }
  .hv-drawer__row { all: unset; box-sizing: border-box; display: flex; align-items: center; gap: 14px; width: 100%; padding: 13px 18px; border-bottom: 1px solid #f0ece2; font-size: 16px; font-weight: 600; color: var(--green); cursor: pointer; }
  .hv-drawer__row:focus-visible { outline: 2px solid var(--gold); outline-offset: -2px; }
  .hv-drawer__row > svg { margin-left: auto; transition: transform .2s; }
  .hv-drawer__row[aria-expanded="true"] { background: #fbfaf6; border-bottom-color: transparent; }
  .hv-drawer__row[aria-expanded="true"] > svg { transform: rotate(180deg); }
  .hv-drawer__ico { flex: none; width: 34px; height: 34px; border-radius: 50%; background: #e9f2ed; display: grid; place-items: center; }
  .hv-drawer__ico svg { width: 17px; height: 17px; fill: none; stroke: var(--green); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
  .hv-drawer__pages { display: grid; padding: 0 18px 12px 66px; background: #fbfaf6; border-bottom: 1px solid #f0ece2; }
  .hv-drawer__pages[hidden] { display: none; }
  .home-v2 a.hv-drawer__page { display: grid; gap: 1px; padding: 8px 0; color: #2f3d38; font-size: 15px; font-weight: 600; line-height: 1.3; }
  .hv-drawer__page small { font-size: 12.5px; font-weight: 400; color: #7a8782; }
  .home-v2 a.hv-drawer__page:hover span { color: var(--green); text-decoration: underline; text-underline-offset: 3px; }
  .home-v2 a.hv-drawer__all { justify-self: start; padding: 8px 0; font-size: 14px; font-weight: 700; color: #9a7f34; }
  .hv-drawer__foot { margin-top: auto; flex: none; display: flex; justify-content: center; padding: 14px 18px max(18px, env(safe-area-inset-bottom, 0px)); border-top: 1px solid #ece7da; }
  .hv-drawer__langs { display: inline-flex; gap: 2px; padding: 3px; border: 1px solid #dfe8e3; border-radius: 999px; background: #fff; }
  .hv-drawer__lang { display: inline-flex; align-items: center; min-height: 34px; padding: 6px 18px; border-radius: 999px; font-size: 13.5px; font-weight: 600; color: var(--green); }
  .hv-drawer__lang.is-current { background: var(--green); color: #fff; }
  .home-v2 a.hv-drawer__lang { color: var(--green); }
  .home-v2 a.hv-drawer__lang:hover { background: #e9f2ed; }
  .hv-header.is-menu::before { content: ""; position: fixed; inset: 0; z-index: 55; background: rgba(9, 26, 22, .5); animation: hv-fade-in .25s ease-out; }
  .hv-header.is-menu .hv-burger { position: fixed; top: 12px; right: max(12px, env(safe-area-inset-right, 0px)); z-index: 61; background: transparent; border-color: transparent; }
  .hv-header.is-menu .hv-burger svg { display: none; }
  .hv-header.is-menu .hv-burger::before { content: "\2715"; font-size: 22px; line-height: 1; color: #fff; }
  html.hv-menu-open { overflow: hidden; }
}
/* Small tablets (768 to 899): the logo, phone, Book button and menu button on one row (the header wrapped onto
   two from 768 to about 880, iPad Air included): no "Call now" label, and below 860 the phone as a round icon. */
@media (min-width: 768px) and (max-width: 899px) {
  .hv-phone__label { display: none; }
  .hv-cta { gap: 12px; }
}
@media (min-width: 768px) and (max-width: 859px) {
  .hv-phone__num { display: none; }
  .home-v2 a.hv-phone { width: 44px; height: 44px; justify-content: center; border-radius: 50%; border: 1px solid #e3ece8; }
}
.hv-drawer { display: none; }
@media (min-width: 1025px) { .hv-header .hv-drawer { display: none !important; } }
@keyframes hv-drawer-in { from { transform: translateX(100%); } to { transform: none; } }
@keyframes hv-fade-in { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .hv-header.is-menu .hv-drawer, .hv-header.is-menu::before { animation: none; } }
/* Phones */
@media (max-width: 767px) {
  .hv-header__in { min-height: 72px; }
  .hv-logo img { width: 44px; height: 44px; }
  .hv-logo__name, .hv-logo__words::before { font-size: 25px; }
  .hv-logo__tag, .hv-logo__words::after { font-size: 8px; }
  .hv-cta { flex-direction: row; align-items: center; gap: 8px; }
  .hv-phone__num, .hv-phone__label, .home-v2 a.hv-book { display: none; }
  .hv-contact__body { padding-bottom: 160px; }
  .home-v2 a.hv-phone { width: 44px; height: 44px; justify-content: center; border-radius: 50%; border: 1px solid #e3ece8; }
  .hv-hero { min-height: 0; }
  .hv-hero__in { padding-top: 40px; }
  .hv-hero__lead { font-size: 17px; }
  .hv-strip { height: 420px; }
  .hv-strip__track img { width: 240px; }
  .hv-review { width: 300px; }
  .hv-steps__row { grid-template-columns: repeat(5, minmax(56px, 1fr)); overflow-x: auto; }
  .hv-step__dot { width: 48px; height: 48px; font-size: 21px; }
  .hv-steps__line, .hv-steps__fill { top: 23px; }
  .hv-step__title { font-size: 12.5px; }
  .hv-step__when { min-height: 2.5em; line-height: 1.25; letter-spacing: 1px; }   /* "Weeks 2–12" takes two lines: every title starts on the same line */
  .hv-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 18px; }
  .hv-q__btn { padding: 18px; gap: 12px; }
  .hv-q__body { padding: 0 18px 20px 60px; }
  .hv-q__text { font-size: 16.5px; }
  .hv-contact__form, .hv-contact__form iframe { min-height: 760px; }
  .hv-sticky { position: static; }
}

/* Keyboard focus (audit line DES-02): every link, button and form field shows a ring when reached
   with the keyboard (Tab), not on a mouse click; gold with a dark green edge, as on the other pages. */
a:focus-visible, button:focus-visible, [role="button"]:focus-visible, input:focus-visible,
select:focus-visible, textarea:focus-visible, summary:focus-visible, [tabindex]:focus-visible {
  outline: 2px solid var(--gold) !important;
  outline-offset: 2px !important;
  box-shadow: 0 0 0 4px var(--deep);
}

/* Where you are in the menus (home.js) */
.hv-nav__item.is-current > .hv-nav__btn { border-bottom-color: var(--gold); font-weight: 700; }
.home-v2 .hv-drop a.is-current { background: var(--mint); box-shadow: inset 3px 0 0 var(--gold); }
.home-v2 a.hv-mega__item.is-current { background: var(--mint); box-shadow: inset 3px 0 0 var(--gold); }
.home-v2 a.hv-chip.is-current { background: var(--green); border-color: var(--green); color: #fff; }
.home-v2 a.hv-drawer__page.is-current { color: #b0924a; }
.hv-drawer__row.is-current { color: #b0924a; }

/* A video's picture until someone presses play (html-fixes.js youtubeFacades). */
.rj-yt { position: relative; display: block; }
.rj-yt__play { position: absolute; left: 50%; top: 50%; width: 72px; height: 72px; margin: -36px 0 0 -36px; border-radius: 50%; background: rgba(19,75,61,.88); box-shadow: 0 0 0 6px rgba(224,192,107,.35); transition: transform .2s; }
.rj-yt__play::after { content: ""; position: absolute; left: 29px; top: 23px; border-style: solid; border-width: 13px 0 13px 21px; border-color: transparent transparent transparent #fff; }
.rj-yt:hover .rj-yt__play, .rj-yt:focus-visible .rj-yt__play { transform: scale(1.08); }
