/* Mainsail Havenlytics Modern v3.4.0
 * Stable single-property skin. Kadence supplies the site foundation;
 * Havenlytics supplies property data/functionality.
 */
:root{
  --mshm-ink:#171717;--mshm-muted:#6f6f6f;--mshm-line:#dedede;--mshm-soft:#f6f5f4;
  --mshm-max:1240px;--mshm-sidebar:300px;--mshm-gap:44px;--mshm-accent:#173d64;--mshm-button-hover:#111;--mshm-button-text:#222;
  --mshm-body-size:14px;--mshm-body-line:1.65;--mshm-body-weight:400;--mshm-title-size:48px;--mshm-title-weight:400;
  --mshm-heading-size:26px;--mshm-label-size:11px;--mshm-value-size:13px;--mshm-doc-size:13px;--mshm-button-size:14px;
  --mshm-button-radius:10px;--mshm-card-radius:0px;--mshm-sidebar-top:28px;--mshm-accordion-active:#f1f1f1;
  --mshm-sched-heading-size:14px;--mshm-sched-date-size:18px;--mshm-sched-date-weight:300;--mshm-sched-font:var(--mshm-sans);
}
html{overflow-x:clip!important}
body.single-hvnly_property{overflow-x:clip!important}
body.single-hvnly_property .site-main,body.single-hvnly_property .content-area,body.single-hvnly_property .content-container,body.single-hvnly_property article,body.single-hvnly_property .entry-content,body.single-hvnly_property .hvnly-property-single__container{width:100%!important;max-width:none!important;margin:0!important;padding-left:0!important;padding-right:0!important;min-width:0!important}
body.single-hvnly_property .site-main{overflow:visible!important}
.mshm-single-property{width:100%;min-width:0;color:var(--mshm-ink);font-family:var(--mshm-sans,Arial,Helvetica,sans-serif);font-size:var(--mshm-body-size);line-height:var(--mshm-body-line);font-weight:var(--mshm-body-weight);overflow:visible}
.mshm-single-property *,.mshm-single-property *::before,.mshm-single-property *::after{box-sizing:border-box;min-width:0}
.mshm-single-property h1,.mshm-single-property h2,.mshm-single-property h3,.mshm-single-property h4{font-family:var(--mshm-serif,Georgia,"Times New Roman",serif)!important;font-weight:400!important;color:var(--mshm-ink)}
.mshm-single-property button,.mshm-single-property input,.mshm-single-property textarea,.mshm-single-property select{font-family:var(--mshm-sans,Arial,Helvetica,sans-serif);font-weight:400}

/* Hero — Splide main slider + name/location overlay + a second, separate
   Splide carousel of larger cards below (reference: joycerey.com's own
   .ip-ld-hero-slick / .banner-title / .ip-ld-hero-thumbs — see
   mshm_render_hero_gallery()'s own docblock in functions.php for the full
   mapping). Values below (80px corner radius, 60px overlay type, 6-card
   gallery row, 58px arrow buttons) are the reference's own real, measured
   CSS, read directly out of its saved page source — not guessed.
   Named request: full-bleed (no side container/max-width), unlike this
   page's other sections. */
/* Named bug: rounding just one corner (border-bottom-left-radius) doesn't
   just decorate the slide's own edge — it removes a real triangular
   piece of that corner from the slide's own box, and whatever sits
   BEHIND the slide in the page shows through that gap. Confirmed live:
   the slide/track/list themselves are all transparent, so what was
   actually showing there was this site's own body background
   (rgb(242,242,242) — Kadence's own default, not the white the
   Customizer's page-background setting was changed to, since that
   setting doesn't necessarily touch every ancestor between <body> and
   this section). Giving this wrapper its own explicit white background
   makes the corner always read as white regardless of whatever the
   site's own background resolves to elsewhere. */
.mshm-hero-gallery,.mshm-hero-slider,.mshm-hero-slider .splide__track,.mshm-hero-slider .splide__list,.mshm-hero-slider .splide__slide{background:#fff!important}
.mshm-hero-gallery{position:relative;z-index:1;width:100%;min-width:0}

.mshm-hero-slider{position:relative}
/* Reference's own .ip-ld-hero-item: border-bottom-left-radius:80px only
   — every other corner stays square. */
.mshm-hero-slider .splide__track,.mshm-hero-slider .splide__list{aspect-ratio:16/7}
.mshm-hero-slider .splide__slide{position:relative;aspect-ratio:16/7;min-width:0;min-height:0;overflow:hidden;background:#fff;border-bottom-left-radius:80px}
.mshm-hero-gallery__tile{-webkit-appearance:none!important;appearance:none!important;position:relative!important;display:block!important;width:100%!important;height:100%!important;padding:0!important;margin:0!important;border:0!important;border-radius:0!important;background:#eee!important;overflow:hidden!important;cursor:pointer!important;box-shadow:none!important}
.mshm-hero-gallery__tile img{display:block!important;width:100%!important;height:100%!important;object-fit:cover!important;margin:0!important;transition:opacity .35s ease,transform .45s ease}
.mshm-hero-slider__tile:hover img{transform:scale(1.015)!important}

/* Named request: property name/location sit on the hero, above the slider
   track — reference's own .banner-title is position:absolute;z-index:2
   against its hero slider; same technique here. A dark bottom-up scrim
   (not a flat overlay across the whole image) keeps the slider's own
   photo readable while still guaranteeing the white text has contrast
   regardless of which photo is showing. Decorative only — see the PHP
   docblock for why this is aria-hidden (the page's real, accessible <h1>
   renders separately, right after).
   Named correction: live-measured on the reference's own 14" Chrome
   viewport (~1440px wide) — title is 60px/400-weight, the location line
   is its own smaller 39px/300-weight.
   Named bug: a first version made these clamp()-fluid, reaching 60px/
   39px only exactly AT 1440px and scaling down continuously below it —
   so on the very common sub-1440 desktop widths (1280px, 1366px, a
   14"-MacBook-class window that isn't full-width, etc.) it rendered
   visibly smaller than 60px/39px, which is what was actually being
   reported as "not the size I set". Flat 60px/39px now holds across the
   whole normal desktop range (down to 992px), and only steps down for
   real tablet/mobile widths below that — matching "the size I set"
   literally, rather than treating 60/39 as a max only reached at one
   specific width. */
.mshm-hero-slider__overlay{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:48px 32px 28px;pointer-events:none;background:linear-gradient(180deg,transparent 0%,rgba(0,0,0,.55) 100%);text-align:center;overflow:hidden;border-bottom-left-radius:80px}
.mshm-hero-slider__overlay-title,.mshm-hero-slider__overlay-address{font-family:var(--mshm-serif,Georgia,"Times New Roman",serif);line-height:1.05;letter-spacing:.01em;color:#fff;text-transform:uppercase;text-shadow:0 2px 12px rgba(0,0,0,.35)}
.mshm-hero-slider__overlay-title{font-weight:400;font-size:60px}
.mshm-hero-slider__overlay-address{margin-top:6px;font-weight:300;font-size:39px}

@media(max-width:991px){.mshm-hero-slider__overlay-title{font-size:clamp(28px,5.7vw,60px)}.mshm-hero-slider__overlay-address{font-size:clamp(18px,3.7vw,39px)}}

.mshm-hero-slider .splide__pagination{bottom:0.75em}
.mshm-hero-slider .splide__pagination__page{background:rgba(255,255,255,.55)}
.mshm-hero-slider .splide__pagination__page.is-active{background:#fff;transform:scale(1.2)}

/* Below-hero gallery — reference's own .ip-ld-hero-thumbs: 6 cards per
   row (16.6667% width, 14px side padding = 28px gutter between cards),
   15px rounded corners, arrows OUTSIDE the row (not on the hero image —
   named bug fix, they used to sit on .mshm-hero-slider itself) via a
   wide side margin matching the reference's own 86px. */
.mshm-hero-gallery-thumbs{position:relative;margin:24px 86px 6px}
.mshm-hero-gallery-thumbs .splide__track{overflow:visible}
.mshm-hero-gallery-thumbs .splide__list{align-items:stretch}
/* Named bug (Safari only): the cards were rendering as flat color bars
   with no photo visible at all — a well-known Safari rendering fault
   where overflow:hidden + border-radius on an element fails to paint its
   content once that element sits inside an ancestor animated with
   transform (Splide's own track moves via translate3d for performance).
   Chromium doesn't have this bug, which is why it never showed up in
   this session's own testing. The standard fix is forcing this element
   onto its own stable GPU compositing layer so Safari has something
   concrete to paint into, instead of trying to clip live inside the
   moving transformed ancestor. */
.mshm-hero-gallery-thumbs .splide__slide{position:relative;aspect-ratio:8/5;min-width:0;min-height:0;overflow:hidden;background:#eee;border-radius:15px;opacity:.55;transition:opacity .25s ease;transform:translateZ(0);-webkit-transform:translateZ(0);will-change:transform;-webkit-mask-image:-webkit-radial-gradient(circle,#fff 100%,#000 100%)}
.mshm-hero-gallery-thumbs .splide__slide.is-active{opacity:1}
.mshm-hero-gallery-thumbs__tile{transform:translateZ(0);-webkit-transform:translateZ(0)}
.mshm-hero-gallery-thumbs__tile img{transform:translateZ(0);-webkit-transform:translateZ(0)}
.mshm-hero-gallery-thumbs__tile:hover img{transform:translateZ(0) scale(1.03)!important;-webkit-transform:translateZ(0) scale(1.03)!important}

/* Reference's own .custom-slick-arrow: 58px white circle, vertically
   centered against the row, sitting in the side margin reserved above. */
/* Named bug: Kadence's own kadence-splide.min.css (its native slider
   block's styling, loaded sitewide) ships `.splide .splide__arrow{
   border-radius:3px; ...}` — same 0-2-0 specificity as this rule, and
   since border-radius was never declared here at all, Kadence's 3px went
   completely uncontested (square-looking corners instead of circular).
   Also confirmed live: clicking an arrow leaves it with a dark
   background afterward, even once the mouse is no longer hovering it —
   Kadence's OWN rule covers `:hover, :focus` together
   (background:var(--splide-nav-background)), but this file only ever
   styled `:hover`, so Kadence's own :focus rule was what visibly won
   once the button had focus-without-hover (its normal post-click state).
   !important on border-radius, and an explicit :focus rule of this
   component's own, are the fix — not a Kadence bug, a gap in this rule. */
.mshm-hero-gallery-thumbs .splide__arrow{width:58px;height:58px;border-radius:50%!important;background:#fff;border:1px solid #fff;opacity:1;box-shadow:0 2px 10px rgba(0,0,0,.14)}
.mshm-hero-gallery-thumbs .splide__arrow svg{fill:var(--mshm-ink)}
.mshm-hero-gallery-thumbs .splide__arrow:focus{background:#fff;outline:2px solid var(--mshm-ink);outline-offset:2px}
.mshm-hero-gallery-thumbs .splide__arrow:hover{background:var(--mshm-ink)}
.mshm-hero-gallery-thumbs .splide__arrow:hover svg{fill:#fff}
.mshm-hero-gallery-thumbs .splide__arrow--prev{left:-70px}
.mshm-hero-gallery-thumbs .splide__arrow--next{right:-70px}

@media(max-width:991px){.mshm-hero-gallery-thumbs .splide__slide{border-radius:5px}}


/* Named bug: Havenlytics' own full-screen gallery lightbox
   (.hvnly-property-single__fancybox-popup, templates/single-property/
   modal-gallery.php) was rendering visibly, full-screen, on every page
   load instead of staying hidden until actually opened — confirmed live,
   its own plugin CSS that's meant to hide it by default isn't loading in
   this context. The hero + gallery carousels above now handle photo
   browsing directly on the page (see mshm-single-property-hero-slider.js
   and mshm-modern.js's own comment on the bridge this replaced), so
   rather than debug a locked plugin template, this is hidden outright. */
.hvnly-property-single__fancybox-popup{display:none!important}
.mshm-native-gallery-source{position:absolute!important;left:-100000px!important;top:0!important;width:1px!important;height:1px!important;overflow:hidden!important;opacity:0!important;pointer-events:none!important}

/* Breadcrumb: always rendered by the child, immediately below hero */
.mshm-content{width:min(calc(100% - 48px),var(--mshm-max));margin:0 auto;min-width:0}
.mshm-breadcrumb-row{display:block!important;padding:12px 0 10px!important;min-height:32px!important;overflow:visible!important}
.mshm-breadcrumb{display:flex!important;align-items:center!important;flex-wrap:wrap!important;gap:7px!important;margin:0!important;padding:0!important;color:var(--mshm-muted)!important;font:400 10px/1.5 var(--mshm-sans)!important;letter-spacing:.04em!important;text-transform:none!important}
.mshm-breadcrumb a{color:var(--mshm-muted)!important;text-decoration:none!important}.mshm-breadcrumb a:hover{text-decoration:underline!important}.mshm-breadcrumb span[aria-hidden]{color:#aaa}.mshm-breadcrumb span[aria-current]{color:#444}

/* Main layout */
.mshm-main-layout{display:grid;grid-template-columns:minmax(0,1fr) var(--mshm-sidebar);gap:var(--mshm-gap);align-items:start;min-width:0}
.mshm-main-column{min-width:0;width:100%}
.mshm-property-intro{padding:5px 0 28px;border-bottom:1px solid var(--mshm-line);min-width:0;position:relative;z-index:1}
.mshm-intro-head{position:static!important;display:block!important;overflow:visible!important}
.mshm-intro-top{display:block!important;margin:0 0 12px!important}
.mshm-badges{display:flex;gap:5px;align-items:center;flex-wrap:wrap;padding:0;margin:0 0 14px}
.mshm-badge{display:inline-flex;align-items:center;min-height:21px;padding:5px 8px;background:#008b57;color:#fff;font:500 9px/1 var(--mshm-sans);letter-spacing:.08em;text-transform:uppercase}
.mshm-single-property .mshm-property-title{position:static!important;display:block!important;width:100%!important;margin:0 0 7px!important;padding:0!important;font-size:var(--mshm-title-size)!important;font-weight:var(--mshm-title-weight)!important;line-height:1.06!important;letter-spacing:-.025em!important;overflow-wrap:anywhere!important;word-break:normal!important;color:var(--mshm-ink)!important}
.mshm-property-address{display:flex;align-items:flex-start;gap:7px;max-width:100%;color:#555;font:400 11px/1.5 var(--mshm-sans);letter-spacing:.03em;overflow-wrap:anywhere}
.mshm-address-icon{display:inline-flex;flex:0 0 15px;width:15px;height:17px;align-items:center;justify-content:center;color:var(--mshm-accent);margin-top:1px}.mshm-address-icon .mshm-icon{width:15px;height:15px}
.mshm-property-price{margin-top:14px;font:400 clamp(26px,2.6vw,38px)/1.08 var(--mshm-serif);color:var(--mshm-ink)}
.mshm-feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:23px;border-top:1px solid var(--mshm-line);border-bottom:1px solid var(--mshm-line)}
.mshm-feature-item{display:grid;grid-template-columns:20px minmax(0,1fr);grid-template-rows:auto auto;column-gap:8px;min-width:0;min-height:72px;padding:13px 13px 12px;border-right:1px solid var(--mshm-line);align-content:center;text-align:left}
.mshm-feature-item:nth-child(3n){border-right:0}
.mshm-feature-icon{grid-row:1/3;display:inline-flex!important;align-items:center;justify-content:center;color:var(--mshm-accent)!important;align-self:center}
.mshm-feature-icon svg,.mshm-feature-icon .hvnly-icon{width:17px!important;height:17px!important}
.mshm-feature-value{font:400 var(--mshm-value-size)/1.2 var(--mshm-sans);color:#222;overflow-wrap:anywhere}
.mshm-feature-label{font:500 var(--mshm-label-size)/1.25 var(--mshm-sans);color:#777;letter-spacing:.08em;text-transform:uppercase}
.mshm-property-ids{margin-top:10px;color:#777;font:400 9px/1.4 var(--mshm-sans);letter-spacing:.03em}

/* Sidebar / schedule */
.mshm-sidebar{min-width:0;align-self:stretch}
.mshm-schedule{width:100%;min-width:0;margin:0 0 14px;padding:50px 0 14px;border-bottom:1px solid var(--mshm-line)}
.mshm-schedule__heading{font-family:var(--mshm-sched-font);font-size:var(--mshm-sched-heading-size);font-weight:600;line-height:1.3;letter-spacing:.03em;text-align:left;color:var(--mshm-ink);margin:0 0 10px}
.mshm-schedule__strip-wrap{display:grid;grid-template-columns:20px minmax(0,1fr) 20px;align-items:stretch}
.mshm-schedule__arrow{width:20px!important;height:46px!important;padding:0!important;border:0!important;background:transparent!important;color:#555!important;font:400 16px/1 var(--mshm-sans)!important;cursor:pointer!important}
.mshm-schedule__strip{display:flex;min-width:0;overflow:hidden;border:1px solid var(--mshm-line);background:#fff}
.mshm-schedule__date{flex:0 0 67px;min-width:0;height:46px;padding:5px 4px!important;border:0!important;border-right:1px solid #eee!important;background:#fff!important;color:#777!important;text-align:center;cursor:pointer!important}
.mshm-schedule__date:last-child{border-right:0!important}.mshm-schedule__date span{display:block;font-family:var(--mshm-sched-font);font-size:calc(var(--mshm-sched-date-size) * .8);font-weight:500;line-height:1.2;text-transform:uppercase}.mshm-schedule__date strong{display:block;margin-top:4px;font-family:var(--mshm-sched-font);font-size:var(--mshm-sched-date-size);font-weight:var(--mshm-sched-date-weight);line-height:1.2}
.mshm-schedule__date.is-selected{background:#111!important;color:#fff!important}

.mshm-actions{display:grid;gap:7px}
.mshm-action-button,.mshm-outline-button{display:flex!important;align-items:center;justify-content:flex-start;gap:10px;width:100%;min-height:44px;padding:11px 13px!important;border:1px solid #999!important;border-radius:var(--mshm-button-radius)!important;background:#fff!important;color:var(--mshm-button-text)!important;text-decoration:none!important;font:500 var(--mshm-button-size)/1.2 var(--mshm-sans)!important;letter-spacing:.1em!important;text-transform:uppercase!important;cursor:pointer!important;box-shadow:none!important;transition:background .18s ease,color .18s ease,border-color .18s ease}
.mshm-action-button:hover,.mshm-action-button:focus-visible,.mshm-outline-button:hover,.mshm-outline-button:focus-visible{background:var(--mshm-button-hover)!important;color:#fff!important;border-color:var(--mshm-button-hover)!important}
.mshm-action-icon,.mshm-action-svg{display:inline-flex;flex:0 0 16px;width:16px;height:16px;align-items:center;justify-content:center;font-size:15px;line-height:1}.mshm-action-svg .mshm-icon{width:16px;height:16px}
.mshm-schedule__button{margin-top:8px!important}
.mshm-share-box{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:10px;padding:13px 0;border-top:1px solid var(--mshm-line);border-bottom:1px solid var(--mshm-line)}
.mshm-share-title{font:500 9px/1 var(--mshm-sans);letter-spacing:.13em;text-transform:uppercase;color:#555}.mshm-share-icons{display:flex;align-items:center;gap:7px}.mshm-share-icons a{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%!important;background:#111!important;color:#fff!important;text-decoration:none!important;font:500 9px/1 var(--mshm-sans)!important}.mshm-share-icons a:hover{opacity:.78}.mshm-share-icons .mshm-icon{width:13px;height:13px}

/* About */
.mshm-about-property{padding:34px 0 10px}.mshm-about-property h2,.mshm-section-heading{margin:0 0 14px!important;font:400 var(--mshm-heading-size)/1.15 var(--mshm-serif)!important;letter-spacing:-.01em!important}.mshm-about-property .hvnly-property-single__summary-card,.mshm-about-property .hvnly-property-single__description-card{margin:0 0 14px!important;border:0!important;background:transparent!important;box-shadow:none!important;padding:0!important}.mshm-about-property .hvnly-property-single__summary-card p,.mshm-about-property .hvnly-property-single__description-card p{margin:0 0 7px!important;color:#444;font-family:var(--mshm-sans)!important;font-weight:400!important;font-size:var(--mshm-body-size)!important;line-height:var(--mshm-body-line)!important}

/* Equinox-style compact accordion system */
.mshm-property-details{padding:24px 0 0}.mshm-section-heading{margin-bottom:12px!important}
.mshm-accordion-list{width:100%;max-width:760px;border-top:1px solid var(--mshm-line)}
.mshm-accordion{margin:0!important;border-bottom:1px solid var(--mshm-line);background:#fff!important}
.mshm-accordion__summary{display:flex!important;align-items:center;justify-content:space-between;gap:18px;min-height:48px;padding:0 0!important;list-style:none!important;cursor:pointer;color:#333!important;font-weight:500!important;font-family:var(--mshm-sans)!important;letter-spacing:.08em!important;text-transform:uppercase!important}
.mshm-accordion__summary::-webkit-details-marker{display:none}.mshm-accordion__summary::marker{display:none}
.mshm-accordion[open]>.mshm-accordion__summary{padding:0 12px!important;background:var(--mshm-accordion-active)!important;color:var(--mshm-accent)!important}
.mshm-accordion__plus{position:relative;flex:0 0 12px;width:12px;height:12px}.mshm-accordion__plus::before,.mshm-accordion__plus::after{content:"";position:absolute;left:0;top:5px;width:12px;height:1px;background:currentColor}.mshm-accordion__plus::after{transform:rotate(90deg)}.mshm-accordion[open] .mshm-accordion__plus::after{display:none}
.mshm-accordion__content{width:100%;max-width:690px!important;padding:14px 12px 18px!important;color:#333!important;font-weight:400!important;font-family:var(--mshm-sans)!important;overflow-wrap:anywhere}
.mshm-accordion__content .hvnly-property-single__section-fields{width:100%!important;max-width:690px!important}
.mshm-accordion__content .hvnly-field,.mshm-accordion__content .hvnly-property-single__field,.mshm-accordion__content li{display:grid!important;grid-template-columns:minmax(150px,38%) minmax(0,1fr)!important;column-gap:28px!important;align-items:start!important;padding:9px 0!important;border-bottom:1px solid #ededed!important}
.mshm-accordion__content .hvnly-field:last-child,.mshm-accordion__content .hvnly-property-single__field:last-child,.mshm-accordion__content li:last-child{border-bottom:0!important}
.mshm-accordion__content .hvnly-field__label,.mshm-accordion__content strong{font-weight:400!important;font-family:var(--mshm-sans)!important;color:#222!important}
.mshm-accordion__content .hvnly-field__value,.mshm-accordion__content li>span{font-weight:400!important;font-family:var(--mshm-sans)!important;color:#444!important;text-align:left!important;overflow-wrap:anywhere!important}
.mshm-accordion__content .hvnly-icon,.mshm-accordion__content .hvnly-field__icon{display:none!important}
.mshm-accordion__content .hvnly-property-single__documents,.mshm-accordion__content .hvnly-property-single__documents a,.mshm-accordion__content .hvnly-property-single__document,.mshm-accordion__content .hvnly-property-single__document a{font-size:var(--mshm-doc-size)!important;line-height:1.55!important}
.mshm-accordion__content a{color:var(--mshm-accent);text-underline-offset:2px}
.mshm-accordion__content .hvnly-property-single__stats{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:0 24px!important}

/* Agents */
.mshm-agent-selector-wrap{display:flex;align-items:center;gap:12px;margin:0 0 12px}.mshm-agent-selector-label{font:500 10px/1.2 var(--mshm-sans);letter-spacing:.08em;text-transform:uppercase;color:#555}.mshm-agent-selector{min-height:36px;padding:7px 32px 7px 10px;border:1px solid #bbb;border-radius:var(--mshm-button-radius);background:#fff;font-size:12px}.mshm-agent-single .hvnly-agents-section__grid{display:block!important}.mshm-agent-single .hvnly-agents-section__card,.mshm-agent-single .hvnly-agent-card{display:none!important;width:100%!important;max-width:100%!important;margin:0!important}.mshm-agent-single .hvnly-agents-section__card.is-mshm-selected,.mshm-agent-single .hvnly-agent-card.is-mshm-selected{display:block!important}

/* Bottom inquiry + location */
.mshm-bottom-contact-location{display:grid;grid-template-columns:minmax(300px,.82fr) minmax(0,1.18fr);gap:44px;align-items:start;margin-top:54px;padding-top:34px;border-top:1px solid var(--mshm-line)}
.mshm-interested{width:100%;max-width:440px;padding:28px 30px;background:#fff;border-radius:var(--mshm-card-radius)!important;box-shadow:-7px 8px 0 rgba(0,0,0,.045)!important}.mshm-eyebrow{margin:0 0 4px;color:#777;font:500 9px/1.3 var(--mshm-sans);letter-spacing:.14em;text-transform:uppercase}.mshm-interested h2{margin:0 0 14px!important;font:400 24px/1.15 var(--mshm-serif)!important}.mshm-interested .hvnly-contact-agent__form{margin:0!important}.mshm-interested .hvnly-contact-agent__btn--secondary,.mshm-interested .hvnly-contact-agent__cancel,.mshm-interested [class*="cancel"]{display:none!important}.mshm-location-slot{min-width:0}.mshm-location-slot>h2,.mshm-location-slot .hvnly-property-single__location-title{display:none!important}.mshm-location-slot .hvnly-property-single__location-card{width:100%!important;max-width:none!important;margin:0!important;padding:0!important;border:0!important;background:transparent!important;box-shadow:none!important}.mshm-location-slot .hvnly-property-single__map,.mshm-location-slot .hvnly-property-single__map-container{width:100%!important;max-width:none!important}.mshm-location-slot .hvnly-property-single__location-actions{display:flex;gap:7px}.mshm-location-slot .hvnly-property-single__location-actions>*{flex:1}
.mshm-interested .hvnly-contact-agent__field{min-width:0!important}.mshm-interested .hvnly-contact-agent__input,.mshm-interested .hvnly-contact-agent__select,.mshm-interested .hvnly-contact-agent__textarea{width:100%!important;max-width:100%!important;border:0!important;border-bottom:1px solid #bbb!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;font-size:13px!important;line-height:1.4!important;padding:10px 0!important}.mshm-interested .hvnly-contact-agent__textarea{min-height:110px!important}.mshm-interested .hvnly-contact-agent__actions{display:flex!important;justify-content:flex-end!important;gap:8px!important;align-items:stretch!important}.mshm-interested .hvnly-contact-agent__btn--primary{min-width:180px!important;min-height:44px!important;border:1px solid #111!important;border-radius:var(--mshm-button-radius)!important;background:#111!important;color:#fff!important}.mshm-interested .hvnly-contact-agent__btn--primary:hover{background:#333!important}.mshm-interested label{font-size:11px!important;line-height:1.35!important}

/* Navigation */
.mshm-listing-nav{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;margin-top:52px;padding-top:20px;padding-bottom:100px;border-top:1px solid var(--mshm-line)}.mshm-listing-nav__cell--previous{text-align:left}.mshm-listing-nav__cell--back{text-align:center}.mshm-listing-nav__cell--next{text-align:right}.mshm-outline-button{width:auto!important;min-width:0!important;justify-content:center!important;padding:10px 14px!important;font-size:var(--mshm-button-size)!important;letter-spacing:.11em!important}.mshm-listing-nav__cell--previous .mshm-outline-button,.mshm-listing-nav__cell--next .mshm-outline-button{min-width:125px}

/* Modals */
body.mshm-modal-open{overflow:hidden!important}
.mshm-mortgage-modal,.mshm-video-modal{position:fixed;inset:0;z-index:99999}.mshm-mortgage-modal[hidden],.mshm-video-modal[hidden]{display:none!important}.mshm-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.55)}
.mshm-modal-panel,.mshm-video-panel{position:relative;width:min(680px,calc(100vw - 32px));max-height:90vh;overflow:auto;margin:5vh auto;padding:34px;background:#fff;border-radius:var(--mshm-card-radius);box-shadow:0 18px 50px rgba(0,0,0,.2)}
.mshm-modal-close{position:absolute;right:14px;top:10px;border:0;background:transparent;font-size:24px;cursor:pointer;color:#333}.mshm-mortgage-panel h2,.mshm-video-panel h2{margin:0 0 12px!important;font-size:28px!important}.mshm-modal-intro{color:#555;font-size:13px}.mshm-required-note{color:#777;font-size:11px}
.mshm-mortgage-fields{display:grid;grid-template-columns:1fr 1fr;gap:18px 24px;margin-top:20px}.mshm-mortgage-fields label{display:block;color:#555;font-size:11px}.mshm-mortgage-fields input{width:100%;min-height:42px;border:0;border-bottom:1px solid #aaa;border-radius:0;background:transparent;font-size:15px;padding:8px 0}.mshm-mortgage-fields__full{grid-column:1/-1}
.mshm-calc-actions{display:grid!important;grid-template-columns:1fr 1fr!important;gap:12px!important;margin-top:22px}.mshm-calc-button,.mshm-reset-button{display:flex!important;align-items:center!important;justify-content:center!important;width:100%!important;min-height:48px!important;padding:12px 16px!important;cursor:pointer!important;border-radius:var(--mshm-button-radius)!important;letter-spacing:.12em!important;font:500 var(--mshm-button-size)/1.2 var(--mshm-sans)!important;text-transform:uppercase!important}.mshm-calc-button{background:var(--mshm-accent)!important;color:#fff!important;border:1px solid var(--mshm-accent)!important}.mshm-calc-button:hover{background:var(--mshm-button-hover)!important;border-color:var(--mshm-button-hover)!important}.mshm-reset-button{background:#fff!important;color:#111!important;border:1px solid #999!important}.mshm-reset-button:hover{background:#111!important;color:#fff!important;border-color:#111!important}
.mshm-results{margin-top:30px}.mshm-results>div{display:flex;justify-content:space-between;gap:20px;padding:12px 0;border-bottom:1px solid #ddd;font-size:13px}.mshm-results strong{font-weight:500}.mshm-disclaimer{margin:28px 0 0;text-align:center;color:#888;font-size:11px;line-height:1.7}
.mshm-video-frame{position:relative;width:100%;aspect-ratio:16/9;background:#111;overflow:hidden}.mshm-video-frame iframe,.mshm-video-frame video{display:block;width:100%;height:100%;border:0}.mshm-video-frame video{object-fit:contain}

/* Responsive */
/* Named bug: this used to also set .mshm-hero-gallery's width, back when
   the hero was still contained (width:min(...,var(--mshm-max))) like
   .mshm-content. It was never removed when the hero went full-bleed —
   same specificity as the hero's own base `width:100%` rule, and later
   in the file, so it silently won below 1100px (all tablet/mobile
   widths, and some desktop laptop widths too), clawing back a
   `calc(100% - 36px)` contained width and leaving a real, visible 36px
   gap on the right edge — confirmed live: 339px rendered instead of the
   full 375px at a 375px-wide viewport. .mshm-content still needs its own
   contained width here; the hero does not. */
@media(max-width:1100px){:root{--mshm-sidebar:280px;--mshm-gap:30px}.mshm-content{width:min(calc(100% - 36px),var(--mshm-max))}}
@media(max-width:820px){.mshm-main-layout{grid-template-columns:1fr;gap:30px}.mshm-sidebar{order:2}.mshm-sidebar__inner{position:static!important}.mshm-bottom-contact-location{grid-template-columns:1fr;gap:32px}.mshm-interested{max-width:none}.mshm-feature-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.mshm-accordion__content{max-width:100%!important}.mshm-schedule__date{flex:0 0 68px}.mshm-sidebar{width:100%}}
@media(max-width:600px){.mshm-content{width:calc(100% - 20px)}.mshm-hero-slider .splide__track,.mshm-hero-slider .splide__list,.mshm-hero-slider .splide__slide{aspect-ratio:3/4}.mshm-hero-slider .splide__slide{border-bottom-left-radius:40px}.mshm-hero-slider__overlay{padding:32px 16px 18px;border-bottom-left-radius:40px}.mshm-hero-gallery-thumbs{margin:16px 12px 6px}.mshm-hero-gallery-thumbs .splide__arrow{display:none}.mshm-breadcrumb-row{padding:10px 0 7px!important}.mshm-breadcrumb{font-size:9px!important}.mshm-property-title{font-size:34px!important}.mshm-property-price{font-size:27px!important}.mshm-feature-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.mshm-feature-item{grid-template-columns:16px minmax(0,1fr);min-height:64px;padding:9px 5px;column-gap:5px}.mshm-feature-icon svg,.mshm-feature-icon .hvnly-icon{width:14px!important;height:14px!important}.mshm-feature-value{font-size:11px}.mshm-feature-label{font-size:7px}.mshm-action-button{min-height:44px}.mshm-accordion__summary{min-height:48px;font-size:9px!important}.mshm-accordion__content{padding:13px 5px 17px!important}.mshm-accordion__content .hvnly-field,.mshm-accordion__content .hvnly-property-single__field,.mshm-accordion__content li{grid-template-columns:minmax(105px,38%) minmax(0,1fr)!important;column-gap:12px!important}.mshm-accordion__content .hvnly-field__label,.mshm-accordion__content strong,.mshm-accordion__content .hvnly-field__value,.mshm-accordion__content li>span{font-size:11px!important}.mshm-interested{padding:24px 18px}.mshm-interested .hvnly-contact-agent__form{grid-template-columns:1fr!important}.mshm-interested .hvnly-contact-agent__actions{display:grid!important;grid-template-columns:1fr!important}.mshm-interested .hvnly-contact-agent__btn--primary{width:100%!important}.mshm-location-slot .hvnly-property-single__map{min-height:300px!important}.mshm-location-slot .hvnly-property-single__location-actions{flex-direction:column}.mshm-listing-nav{grid-template-columns:1fr;gap:10px;margin-top:42px}.mshm-listing-nav__cell--previous,.mshm-listing-nav__cell--back,.mshm-listing-nav__cell--next{text-align:center}.mshm-outline-button{width:100%!important}.mshm-mortgage-fields{grid-template-columns:1fr}.mshm-mortgage-fields__full{grid-column:auto}.mshm-calc-actions{grid-template-columns:1fr!important}.mshm-modal-panel,.mshm-video-panel{width:calc(100vw - 16px);max-height:96vh;margin:2vh auto;padding:24px 16px}.mshm-share-box{align-items:flex-start;padding:13px 16px!important}.mshm-share-icons a{width:32px;height:32px}}
@media print{.mshm-sidebar,.mshm-listing-nav,.mshm-mortgage-modal,.mshm-video-modal,.mshm-native-gallery-source{display:none!important}.mshm-content,.mshm-hero-gallery{width:100%;max-width:none}}


/* v3.4.0 final Equinox alignment / regression guard */
body.single-hvnly_property .content-area,body.single-hvnly_property .content-container,body.single-hvnly_property article,body.single-hvnly_property .entry-content,body.single-hvnly_property .hvnly-property-single__container,body.single-hvnly_property #content,body.single-hvnly_property #primary,body.single-hvnly_property .site-content,body.single-hvnly_property .site{overflow:visible!important;transform:none!important;contain:none!important}
.mshm-content,.mshm-main-layout,.mshm-main-column{overflow:visible!important;transform:none!important;contain:none!important}
/* .mshm-sidebar is the grid cell: it must stretch to the row's full height (matching the
   main column) so its sticky child below has room to travel while scrolling. Forcing this
   cell to height:fit-content (as a prior patch did) left zero travel room and is why the
   sidebar could not visibly stick -- that is the confirmed root cause. */
.mshm-sidebar{overflow:visible!important;transform:none!important;contain:none!important;align-self:stretch!important;height:auto!important}
.mshm-sidebar__inner{position:sticky;top:var(--mshm-sidebar-top);z-index:20;height:fit-content;max-height:none;overflow:visible}
body.admin-bar .mshm-sidebar__inner{top:calc(var(--mshm-sidebar-top) + 32px)}
.mshm-schedule__strip{scroll-behavior:smooth;scrollbar-width:none}.mshm-schedule__strip::-webkit-scrollbar{display:none}
.mshm-schedule__date{flex:0 0 67px!important}
.mshm-schedule__date:focus-visible,.mshm-schedule__arrow:focus-visible,.mshm-action-button:focus-visible{outline:2px solid var(--mshm-accent)!important;outline-offset:2px!important}
.mshm-action-button{min-height:46px!important}
.mshm-accordion-list{width:min(100%,760px)!important;max-width:760px!important;margin:0!important}
.mshm-accordion{width:100%!important;margin:0!important;border-bottom:1px solid var(--mshm-line)!important;background:#fff!important}
.mshm-accordion__summary{min-height:50px!important;padding:0 14px!important;border-top:0!important;background:#fff!important;color:var(--mshm-ink)!important;font-size:var(--mshm-label-size)!important;letter-spacing:.05em!important}
.mshm-accordion[open]>.mshm-accordion__summary{background:var(--mshm-accordion-active)!important;color:var(--mshm-ink)!important}
.mshm-accordion__content{width:calc(100% - 28px)!important;max-width:700px!important;margin:0!important;padding:16px 14px 20px!important;background:#fff!important;font-size:var(--mshm-value-size)!important;line-height:1.6!important}
.mshm-accordion__content .hvnly-field,.mshm-accordion__content .hvnly-property-single__field,.mshm-accordion__content li{width:100%!important;max-width:100%!important;grid-template-columns:minmax(150px,34%) minmax(0,1fr)!important;column-gap:30px!important;padding:10px 0!important;border-bottom:1px solid #e8e8e8!important}
.mshm-accordion__content .hvnly-field:last-child,.mshm-accordion__content .hvnly-property-single__field:last-child,.mshm-accordion__content li:last-child{border-bottom:0!important}
.mshm-accordion__content .hvnly-field__label,.mshm-accordion__content strong{font-size:var(--mshm-value-size)!important;line-height:1.45!important;font-weight:400!important;color:#252525!important}
.mshm-accordion__content .hvnly-field__value,.mshm-accordion__content li>span{font-size:var(--mshm-value-size)!important;line-height:1.55!important;color:#444!important}
.mshm-accordion__content .hvnly-property-single__documents,.mshm-accordion__content .hvnly-property-single__documents a,.mshm-accordion__content .hvnly-property-single__document,.mshm-accordion__content .hvnly-property-single__document a{font-size:var(--mshm-doc-size)!important;line-height:1.6!important}
.mshm-share-title{font-size:11px!important}.mshm-share-icons{gap:8px!important}.mshm-share-icons a{width:34px!important;height:34px!important;font-size:11px!important}.mshm-share-icons .mshm-icon{width:15px!important;height:15px!important}
.mshm-mortgage-modal,.mshm-video-modal{z-index:999999!important}
/* Havenlytics native virtual-tour lightbox bridge */
.hvnly-property-single__fancybox-popup--active{z-index:999999!important}
@media(max-width:820px){.mshm-sidebar__inner{position:static!important;max-height:none!important;overflow:visible!important}.mshm-accordion-list{max-width:100%!important}.mshm-accordion__content{width:calc(100% - 10px)!important;max-width:100%!important}.mshm-accordion__content .hvnly-field,.mshm-accordion__content .hvnly-property-single__field,.mshm-accordion__content li{grid-template-columns:minmax(110px,38%) minmax(0,1fr)!important;column-gap:14px!important}.mshm-listing-nav__cell--previous .mshm-outline-button,.mshm-listing-nav__cell--next .mshm-outline-button,.mshm-listing-nav__cell--back .mshm-outline-button{width:100%!important;min-width:0!important}}
/* Schedule Showing (hvnly-schedule-showing) modal — visual integration only; no plugin files touched, no functional/AJAX/date logic changed */
.hss-dialog{border-radius:var(--mshm-card-radius)!important;box-shadow:0 22px 60px rgba(0,0,0,.24)!important}
.hss-dialog h2{font-family:var(--mshm-serif)!important;font-weight:var(--mshm-title-weight)!important;color:var(--mshm-ink)!important}
.hss-close{color:var(--mshm-ink)!important;opacity:.7}
.hss-close:hover{opacity:1}
.hss-grid label{font-family:var(--mshm-sans)!important;color:var(--mshm-muted)!important;letter-spacing:.05em!important}
.hss-grid input,.hss-grid textarea{font-family:var(--mshm-sans)!important;border-color:var(--mshm-line)!important;border-radius:var(--mshm-button-radius)!important}
.hss-grid input:focus,.hss-grid textarea:focus{outline:none!important;border-color:var(--mshm-accent)!important}
.hss-send{background:var(--mshm-ink)!important;border-color:var(--mshm-ink)!important;border-radius:var(--mshm-button-radius)!important;font-family:var(--mshm-sans)!important}
.hss-send:not(:disabled):hover{background:var(--mshm-button-hover)!important;border-color:var(--mshm-button-hover)!important}
.hss-note{font-family:var(--mshm-sans)!important;color:var(--mshm-muted)!important}

/* v3.4.1 — sidebar/nav button parity with homepage buttons (vertical
   padding 16px, icon 24px — .mainsail-fp__cta/.mainsail-fc__cta/
   .site-button.site-button--white all agree on 16px vertical padding),
   sidebar spacing, share button size, and the date slider showing 3 dates
   at a time. Appended last, same pattern as the "final Equinox alignment /
   regression guard" block above, so these intentionally win over every
   earlier rule (including the mobile media queries) for the properties
   actually touched here — everything else in those earlier rules (layout,
   colors, borders) is untouched.

   Font sizes specifically are NOT hardcoded here where a --mshm-* variable
   already exists for them (button/accordion/schedule text) — those are
   set via that variable's own default in :root and in
   mshm_customizer_css()'s get_theme_mod() fallbacks instead, so a site
   admin can still adjust them from Appearance > Customize > Mainsail
   Property Design, and the "Reset to Defaults" button there resets to
   these exact same values (its own $number()/$select() registrations in
   mshm_customize_register() were updated to match once this scale was
   approved). --mshm-button-size now defaults to 14px, so
   .mshm-action-button/.mshm-outline-button need no font-size override
   here at all. The one exception: .mshm-accordion__summary intentionally
   still overrides its font-size directly below, because the accordion
   title and the feature-grid micro-labels used to share one variable
   (--mshm-label-size) despite needing two different sizes (14px vs 11px)
   — decoupled here rather than perpetuating that mismatch. */
.mshm-action-button,.mshm-outline-button{padding-top:16px!important;padding-bottom:16px!important}
.mshm-action-icon,.mshm-action-svg{width:24px!important;height:24px!important;flex:0 0 24px!important;font-size:22px!important}
.mshm-action-svg .mshm-icon{width:24px!important;height:24px!important}
.mshm-accordion__summary{font-size:14px!important}
.mshm-breadcrumb{font-size:14px!important}
.mshm-badge{font-size:11px!important}
.mshm-property-ids{font-size:11px!important}
.mshm-eyebrow{font-size:11px!important}
.mshm-interested h2{font-size:20px!important}

.mshm-actions{gap:15px!important}
.mshm-schedule{margin-bottom:30px!important}
.mshm-schedule__button{margin-top:20px!important}

/* Share row: card-style panel (rounded, #f2f2f2 fill, no more border-top/
   bottom lines since the fill itself now separates it), 20px above the
   button stack, icon circles at 1.5x their original 34px (=51px) with the
   "f"/"in"/"X" glyph text scaled up to match (was left at the original
   11px, which is why the circles looked bigger but their labels didn't) —
   the 4th icon is a real SVG (mail), sized separately via .mshm-icon.
   align-items:center replaces the earlier mobile-only flex-start, which
   top-aligned the "SHARE" label against these now much-taller icons. */
.mshm-share-box{align-items:center!important;flex-wrap:wrap!important;row-gap:12px!important;margin-top:20px!important;padding:16px 20px!important;border-top:0!important;border-bottom:0!important;background:#f2f2f2!important;border-radius:12px!important}
.mshm-share-icons{flex-wrap:wrap!important}
.mshm-share-icons a{width:51px!important;height:51px!important;flex:0 0 51px!important;font-size:17px!important}
.mshm-share-icons .mshm-icon{width:22px!important;height:22px!important}
.mshm-share-title{font-size:14px!important}

.mshm-schedule__heading{font-weight:300!important;text-align:center!important}

/* 3 dates visible at a time: each date cell is 1/3 of the strip's width
   (box-sizing:border-box already applies sitewide, so its border doesn't
   add to that), sized taller to stay proportionate at the new width. */
.mshm-schedule__strip{gap:4px!important}
.mshm-schedule__date{flex:0 0 calc((100% - 8px) / 3)!important;height:64px!important;border-right:0!important}
.mshm-schedule__date:not(.is-selected):hover,.mshm-schedule__date:not(.is-selected):focus-visible{border:1px solid var(--mshm-accent)!important}
.mshm-schedule__date span{font-size:11px!important}

/* Prev/next date-strip arrows: now real SVGs (see mshm_render_schedule_strip()
   in functions.php) instead of the tiny "‹"/"›" characters, sized to match
   the taller 64px date row and the rest of the page's 20px icon size. */
.mshm-schedule__arrow{height:64px!important;display:flex!important;align-items:center!important;justify-content:center!important}
.mshm-schedule__arrow svg{width:20px!important;height:20px!important}

/* Havenlytics' own gallery "back to top" button (locked plugin CSS,
   .hvnly-property-single__gallery-scroll-top) is fixed at bottom:30px;
   right:30px — the exact same bottom-right corner as this theme's own
   .mainsail-floating-call button (fixed bottom:20px; right:20px; 56px
   circle; z-index 1000000), so it was rendering completely underneath
   the call button and effectively invisible. Moved up clear of it:
   the call button's own top edge sits 76px from the viewport bottom
   (20px offset + 56px height), so 96px leaves a visible 20px gap above it. */
.hvnly-property-single__gallery-scroll-top{bottom:96px!important}

/* Sidebar action icons — one consistent line-icon style. Schedule Tour now
   uses the same inline SVG style as the other buttons (see mshm_svg_icon()); Contact Agent's button is rendered by the Havenlytics
   plugin with a Font Awesome <i>, so that icon is swapped for the same
   line-drawn chat icon here with a CSS mask instead of touching the plugin. */
.mshm-actions .js-hvnly-contact-agent-open > i {
	display: none !important;
}

.mshm-actions .js-hvnly-contact-agent-open::before {
	content: "";
	flex: 0 0 24px;
	width: 24px;
	height: 24px;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 5h14a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-8l-5 4v-4H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2z'/%3E%3C/svg%3E") center / 24px 24px no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 5h14a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-8l-5 4v-4H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2z'/%3E%3C/svg%3E") center / 24px 24px no-repeat;
}

/* Contact Agent popup. Havenlytics gives its contact modal the same
   .hvnly-property-single__fancybox-popup class as its gallery popups, and this
   skin hides every such popup (display:none!important, above) to suppress the
   native gallery lightbox — which also hid the contact form after the button
   was clicked. Re-show it, and only it, while Havenlytics' own script marks
   it active (it toggles [hidden] and --active itself). */
.hvnly-property-single__fancybox-popup.hvnly-contact-agent__modal--active:not([hidden]) {
	display: flex !important;
}

/* ---------- Printable Flyer ----------
   "Printable Flyer" calls window.print(), so this is what gets printed. The
   screen layout prints badly as-is (sticky header/footer, the floating call
   button and mobile contact dock leave blank gaps, sliders collapse,
   accordions print closed, reveal animations print as empty space), so print
   a clean one-column flyer instead: first photo, details, about, every
   details section expanded, the attribution on IDX listings, and a Contact
   block with the agent/business details. The same rules style native and
   IDX listings (both carry body.single-hvnly_property). */
.mshm-print-contact {
	display: none;
}

@media print {
	@page {
		margin: 12mm;
	}

	html,
	body.single-hvnly_property {
		background: #fff !important;
		margin: 0 !important;
	}

	/* Everything that is chrome, not content, or that prints as a blank gap. */
	body.single-hvnly_property #wpadminbar,
	body.single-hvnly_property .skip-link,
	body.single-hvnly_property #masthead,
	body.single-hvnly_property .site-footer,
	body.single-hvnly_property .mainsail-floating-call,
	body.single-hvnly_property .mainsail-floating-socials,
	body.single-hvnly_property #hvnly-mobile-contact-dock,
	body.single-hvnly_property .hvnly-property-single__scroll-progress,
	body.single-hvnly_property .hvnly-property-single__gallery-scroll-top,
	body.single-hvnly_property #hss-modal,
	body.single-hvnly_property .hvnly-property-single__fancybox-popup,
	body.single-hvnly_property .hvnly-contact-agent__modal,
	body.single-hvnly_property .mshm-idx-contact-modal,
	body.single-hvnly_property .mshm-breadcrumb-row,
	body.single-hvnly_property .mshm-sidebar,
	body.single-hvnly_property .mshm-actions,
	body.single-hvnly_property .mshm-share-box,
	body.single-hvnly_property .mshm-bottom-contact-location,
	body.single-hvnly_property .mshm-listing-nav,
	body.single-hvnly_property .mshm-hero-gallery-thumbs,
	body.single-hvnly_property .mshm-hero-slider .splide__arrows,
	body.single-hvnly_property .mshm-hero-slider .splide__pagination,
	body.single-hvnly_property .mshm-accordion__plus,
	/* Interactive bits inside the expanded sections (the Listing Agents card's
	   Send-a-Message form, View Profile and other buttons) mean nothing on paper;
	   the Contact block below replaces them. */
	body.single-hvnly_property .mshm-accordion__content form,
	body.single-hvnly_property .mshm-accordion__content .hvnly-agents-section__form-row,
	body.single-hvnly_property .mshm-accordion__content .hvnly-agents-section__btn,
	body.single-hvnly_property .mshm-accordion__content .hvnly-btn,
	body.single-hvnly_property .mshm-accordion__content button {
		display: none !important;
	}

	/* One column, full page width, no sticky/fixed positioning. */
	body.single-hvnly_property .mshm-content,
	body.single-hvnly_property .mshm-main-column,
	body.single-hvnly_property .mshm-hero-gallery {
		width: 100% !important;
		max-width: none !important;
		padding-left: 0 !important;
		padding-right: 0 !important;
	}

	body.single-hvnly_property .mshm-main-layout {
		display: block !important;
	}

	/* Entrance animations print as empty space — show everything. */
	body.single-hvnly_property [data-mainsail-reveal] {
		opacity: 1 !important;
		transform: none !important;
		transition: none !important;
	}

	/* The slider becomes a single static first photo. */
	body.single-hvnly_property .mshm-hero-slider,
	body.single-hvnly_property .mshm-hero-slider .splide__track {
		height: auto !important;
		overflow: hidden !important;
	}

	body.single-hvnly_property .mshm-hero-slider .splide__list {
		display: block !important;
		transform: none !important;
		height: auto !important;
	}

	body.single-hvnly_property .mshm-hero-slider .splide__slide {
		display: none !important;
		width: 100% !important;
		height: auto !important;
	}

	body.single-hvnly_property .mshm-hero-slider .splide__slide:first-child {
		display: block !important;
	}

	body.single-hvnly_property .mshm-hero-slider .mshm-hero-gallery__tile,
	body.single-hvnly_property .mshm-hero-slider .splide__slide img {
		width: 100% !important;
		height: 105mm !important;
		object-fit: cover !important;
	}

	/* The title/address laid over the photo needs its scrim and white text to
	   print (browsers drop backgrounds unless told otherwise). */
	body.single-hvnly_property .mshm-hero-slider__overlay,
	body.single-hvnly_property .mshm-badge,
	body.single-hvnly_property .mshm-feature-icon {
		-webkit-print-color-adjust: exact;
		print-color-adjust: exact;
	}

	/* Every details section prints open (also forced open by script on
	   beforeprint, which is what browsers without ::details-content need). */
	body.single-hvnly_property .mshm-accordion {
		break-inside: avoid;
	}

	body.single-hvnly_property .mshm-accordion__content {
		max-width: none !important;
	}

	body.single-hvnly_property .mshm-property-intro,
	body.single-hvnly_property .mshm-about-property {
		break-inside: avoid;
	}

	body.single-hvnly_property .mshm-hero-gallery {
		break-after: avoid;
	}

	/* IDX attribution must print with the listing. */
	body.single-hvnly_property .mshm-idx-courtesy {
		display: block !important;
		margin-top: 18px;
	}

	/* Contact details — print only. */
	body.single-hvnly_property .mshm-print-contact {
		display: block !important;
		margin-top: 22px;
		padding-top: 14px;
		border-top: 1px solid #999;
		break-inside: avoid;
		font-size: 12px;
		line-height: 1.5;
		color: #111;
	}

	body.single-hvnly_property .mshm-print-contact h2 {
		margin: 0 0 6px !important;
		font-size: 16px !important;
	}

	body.single-hvnly_property .mshm-print-contact p {
		margin: 0 0 4px;
	}

	body.single-hvnly_property .mshm-print-contact__agent {
		font-weight: 600;
	}

	body.single-hvnly_property .mshm-print-contact__url {
		color: #555;
		word-break: break-all;
	}
}
