/* Mainsail Havenlytics Modern — Archive skin v3.4.15
 * Presentation layer only. Havenlytics remains the query/filter/map engine.
 */
body.mshm-archive-page { --mshm-archive-max:1240px; --mshm-archive-gap:24px; --mshm-archive-sidebar:285px; --mshm-archive-ink:#171717; --mshm-archive-muted:#6d6d6d; --mshm-archive-line:#e3e3e3; --mshm-archive-sans:"Roboto",Arial,Helvetica,sans-serif; --mshm-archive-serif:"Cormorant",Georgia,"Times New Roman",serif; --mshm-archive-feature-font:var(--mshm-archive-sans); --mshm-archive-feature-label-size:.6875rem; --mshm-archive-feature-value-size:.8125rem; }
.mshm-archive{width:min(1140px,calc(100vw - 64px));max-width:none;margin-left:50%;margin-right:0;transform:translateX(-50%);padding:22px 0 70px;color:var(--mshm-archive-ink);font-family:var(--mshm-archive-sans);}
.mshm-archive__top{margin-bottom:20px}.mshm-archive__layout{display:grid;grid-template-columns:0 minmax(0,1fr);gap:0;position:relative;align-items:start;transition:grid-template-columns .25s ease,gap .25s ease}.mshm-archive__layout--no-filter{display:block}.mshm-archive__results{min-width:0;width:100%}

/* Archive title banner (see content-archive-property.php for why this is
   read/applied here rather than via Kadence's own title-bar system).
   Only rendered at all when a banner image is actually set, so pages
   without one are completely unaffected. Rendered as a sibling BEFORE
   .mshm-archive so it can be full-bleed — same "escape the boxed content
   container" need mshm-modern.css already solves for the single-property
   page's own hero gallery, so the exact same ancestor reset is applied
   here too (Kadence's generic .site-main/.content-area/.content-container
   wrappers, plus Havenlytics' own .hvnly-archive-property-wrapper),
   scoped to this page only via body.mshm-archive-page. */
body.mshm-archive-page .site-main,body.mshm-archive-page .content-area,body.mshm-archive-page .content-container,body.mshm-archive-page .hvnly-archive-property-wrapper,body.mshm-archive-page .hvnly-container{width:100%!important;max-width:none!important;margin:0!important;padding-left:0!important;padding-right:0!important;min-width:0!important}
.mshm-archive__title-banner{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;min-height:330px;margin-bottom:20px;padding:24px;background-size:cover;background-position:center;background-repeat:no-repeat;text-align:center;overflow:hidden}
.mshm-archive__title-banner::before{content:"";position:absolute;inset:0;background:rgba(0,0,0,.35)}
.mshm-archive__title-banner .hvnly-property-section-title{position:relative;z-index:1}
.mshm-archive__title-banner .property-archive-title{color:#fff!important}
.mshm-archive__title-banner .mshm-archive__title-breadcrumb{position:relative;z-index:1;margin-top:0}
.mshm-archive__title-banner .mshm-archive__title-breadcrumb .kadence-breadcrumbs{margin:6px 0 0!important}
.mshm-archive__title-banner .mshm-archive__title-breadcrumb .kadence-breadcrumbs,.mshm-archive__title-banner .mshm-archive__title-breadcrumb .kadence-breadcrumbs a,.mshm-archive__title-banner .mshm-archive__title-breadcrumb .kadence-breadcrumbs span{color:#fff}
.mshm-archive__title-banner .mshm-archive__title-description{position:relative;z-index:1;color:#fff;margin-top:10px}

/* Desktop: the filter is a true side panel beside the archive, matching the
 * earlier Equinox-style layout. Mobile keeps the drawer/overlay behavior. */
.mshm-archive__sidebar{position:relative;top:auto;left:auto;bottom:auto;z-index:20;width:auto;min-width:0;height:auto;max-height:calc(100vh - 40px);margin:0;padding:0;box-sizing:border-box;overflow:hidden;background:transparent;border:0;box-shadow:none;transform:none;visibility:hidden;pointer-events:none;opacity:0;transition:opacity .2s ease,visibility 0s linear .2s}.mshm-archive--filters-open .mshm-archive__layout{grid-template-columns:minmax(250px,var(--mshm-archive-sidebar)) minmax(0,1fr);gap:24px}.mshm-archive--filters-open .mshm-archive__sidebar{visibility:visible;pointer-events:auto;opacity:1;transition:opacity .2s ease}.mshm-archive__sidebar>.hvnly-property-filter-sidebar{display:block!important;width:100%!important;max-width:none!important;margin:0!important;padding:0!important;border:1px solid #e1e1e1!important;background:#fff!important;box-shadow:0 2px 12px rgba(0,0,0,.06)!important;border-radius:0!important;overflow:auto;max-height:calc(100vh - 40px)}
/* Havenlytics' OWN responsive CSS (hvnly-frontend-property-responsive.css)
 * force-hides .hvnly-property-filter-sidebar below 991px — that's the
 * breakpoint where IT switches to its own separate, unrelated
 * .hvnly-property-filter-drawer element. This theme's off-canvas panel
 * reuses .hvnly-property-filter-sidebar as its drawer content at every
 * width instead, so without the override above/below, the panel opens
 * completely empty between ~901px and 991px (mshm's own drawer
 * breakpoint is 900px) and, since this rule was missing entirely, at
 * any width below that too — the display:block!important directly
 * above is what actually fixes it; this comment documents why it's
 * necessary despite width/margin/etc. already being forced nearby. */.mshm-archive__sidebar-head{display:flex;align-items:center;justify-content:space-between;position:relative;height:auto;padding:15px 16px 8px;margin:0;z-index:3;background:#fff}.mshm-archive__sidebar-head strong{display:none}.mshm-archive__filter-close{position:static;transform:none;display:grid;place-items:center;width:28px;height:28px;padding:0;border:0;background:transparent;color:#333;font:400 22px/1 Arial,sans-serif;cursor:pointer;z-index:4}.mshm-archive__backdrop{display:none!important}.mshm-archive__sidebar *{box-sizing:border-box}.mshm-archive__sidebar input,.mshm-archive__sidebar select{max-width:100%}
.mshm-archive__sidebar .hvnly-property-filter-header{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;margin:0!important;padding:6px 16px 14px!important;border:0!important;background:#fff!important}.mshm-archive__sidebar .hvnly-property-filter-title{margin:0!important;font:600 18px/1.25 var(--mshm-archive-sans)!important;color:#222!important}.mshm-archive__sidebar .hvnly-property-reset-filters-btn{margin:0!important;padding:0!important;background:transparent!important;border:0!important;color:#5b46e8!important;font:500 11px/1.2 var(--mshm-archive-sans)!important}.mshm-archive__sidebar .hvnly-property-filter-group{margin:0!important;border-top:1px solid #ececec!important;background:#fff!important}.mshm-archive__sidebar .hvnly-property-filter-group-header{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;min-height:48px!important;padding:0 16px!important;background:#fff!important;cursor:pointer}.mshm-archive__sidebar .hvnly-property-filter-group-title{margin:0!important;font:600 14px/1.25 var(--mshm-archive-sans)!important;color:#252525!important}.mshm-archive__sidebar .hvnly-property-filter-group-toggle{display:grid!important;place-items:center!important;width:24px!important;height:24px!important;color:#555!important}.mshm-archive__sidebar .hvnly-property-filter-group-toggle i{font-size:10px!important}.mshm-archive__sidebar .hvnly-property-filter-group-content{padding:0 16px 14px!important}.mshm-archive__sidebar .hvnly-property-filter-label{display:block!important;margin:0 0 5px!important;font:500 10px/1.2 var(--mshm-archive-sans)!important;color:#777!important}.mshm-archive__sidebar .hvnly-property-form-select{width:100%!important;min-height:36px!important;border:1px solid #ddd!important;border-radius:2px!important;background:#fff!important;font:400 12px/1.2 var(--mshm-archive-sans)!important;color:#333!important}.mshm-archive__sidebar .hvnly-property-checkbox-group{gap:8px!important}.mshm-archive__sidebar .hvnly-property-checkbox-label{font:400 12px/1.35 var(--mshm-archive-sans)!important}.mshm-archive__sidebar .hvnly-property-filter-checkbox{display:flex!important;align-items:center!important;gap:8px!important}.mshm-archive__sidebar .hvnly-property-filter-checkbox input{margin:0!important}
/* Havenlytics' own search-form submit button ("Search") wraps onto two
 * lines ("Sea"/"rch") — its wrapper sizes to content but the icon+text+
 * padding combination is right at that width's edge. white-space:nowrap
 * plus a touch more padding keeps it on one line at every width; the
 * wrapper itself needs flex-shrink:0 so the flex row of search fields
 * doesn't squeeze it back down again. */
.mshm-archive .hvnly-property-filter-toggle-wrapper{flex-shrink:0}
.mshm-archive .hvnly-property-filter-toggle{white-space:nowrap!important;padding:9.5px 22px!important}
.mshm-archive__view-controls{display:flex!important;align-items:center;gap:16px;margin:0 0 18px!important;padding:0 0 14px;border-bottom:1px solid var(--mshm-archive-line)}
.mshm-archive__view-controls .mshm-archive__filter-toggle{order:0;display:inline-flex;align-items:center;justify-content:center;gap:8px;flex:0 0 auto;min-height:38px;padding:0 14px;border:1px solid #dedee3;background:#fff;color:#222;border-radius:4px;font:500 12px/1 var(--mshm-archive-sans);cursor:pointer}.mshm-archive__filter-toggle svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.mshm-archive__view-controls .hvnly-property-view-options{display:flex;align-items:center;gap:10px;margin-left:auto}.mshm-archive__view-controls .hvnly-property-view-buttons{display:flex;gap:5px}.mshm-archive__view-controls .hvnly-property-view-btn{width:38px;height:38px;padding:0!important;border:1px solid #dedee3!important;border-radius:4px!important;background:#fff!important;color:#555!important;display:grid!important;place-items:center}.mshm-archive__view-controls .hvnly-property-view-btn.active{background:#6748ff!important;border-color:#6748ff!important;color:#fff!important}.mshm-archive__view-controls .hvnly-property-view-btn i{font-size:14px!important;line-height:1}.mshm-archive__view-controls .hvnly-property-view-btn:hover{transform:none!important}

/* Equinox-inspired image-first cards.
 * :not(.hvnly-list-view) alone isn't enough to exclude every non-grid
 * state: switching to Map view swaps this element's own class to
 * .map-view (not .hvnly-list-view) and sets display:none inline, but
 * that inline style was still losing to this rule's !important, which
 * kept the grid forced visible underneath the map (map loads fine,
 * grid never actually hides) until the page was reloaded and the
 * archive re-initialized into its default grid state. Excluding
 * .map-view too — same pattern already used for .hvnly-list-view just
 * below — fixes it without touching Havenlytics' own files. */
.mshm-archive-grid:not(.hvnly-list-view):not(.map-view){display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:var(--mshm-archive-gap)!important;width:100%!important}
.mshm-archive-card{position:relative;min-width:0;background:#fff;overflow:visible;border-radius:0;isolation:isolate}.mshm-archive-card__media{position:relative;aspect-ratio:618/384;display:block;color:#fff;text-decoration:none;overflow:hidden;background:#777}.mshm-archive-card__media img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .35s ease}.mshm-archive-card:hover .mshm-archive-card__media img{transform:scale(1.018)}.mshm-archive-card__placeholder{display:block;width:100%;height:100%;background:#ddd}.mshm-archive-card__shade{position:absolute;inset:0;background:linear-gradient(to bottom,rgba(0,0,0,.42) 0%,rgba(0,0,0,.04) 32%,rgba(0,0,0,.10) 45%,rgba(0,0,0,.82) 100%);pointer-events:none}
.mshm-archive-card__top{position:absolute;top:0;left:0;right:0;display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:17px 17px 0;z-index:3}.mshm-archive-card__address{min-width:0;display:flex;flex-direction:column;gap:2px;text-shadow:0 1px 3px rgba(0,0,0,.55)}.mshm-archive-card__address strong{display:block;font:500 clamp(20px,2.25vw,28px)/.96 var(--mshm-archive-serif);color:#fff;letter-spacing:-.02em}.mshm-archive-card__address span{font:500 11px/1.2 var(--mshm-archive-sans);color:#fff;text-transform:uppercase;letter-spacing:.02em}.mshm-archive-card__address span:before{content:"";display:inline-block;width:11px;height:11px;margin:0 4px -1px 0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22s7-7.58 7-13A7 7 0 0 0 5 9c0 5.42 7 13 7 13Z' fill='none' stroke='white' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3Ccircle cx='12' cy='9' r='2.3' fill='none' stroke='white' stroke-width='1.8'/%3E%3C/svg%3E") no-repeat center/contain;vertical-align:middle}.mshm-archive-card__status{flex:0 0 auto;padding:7px 11px;background:#009a5b;color:#fff;font:600 10px/1 var(--mshm-archive-sans);text-transform:uppercase;letter-spacing:.08em;white-space:nowrap}
.mshm-archive-card__favorite{position:absolute!important;top:14px;right:14px;z-index:8;width:36px!important;height:36px!important;margin:0!important;padding:0!important;border:0!important;border-radius:50%!important;background:rgba(255,255,255,.94)!important;color:#4b5563!important;display:grid!important;place-items:center!important;box-shadow:0 1px 5px rgba(0,0,0,.12);cursor:pointer}.mshm-archive-card__favorite svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.mshm-archive-card__favorite.is-favorited{color:#6748ff!important}.mshm-archive-card__favorite.is-favorited svg{fill:currentColor}.mshm-archive-card__favorite:hover{transform:none!important}
/* Keep status clear of the favorite control. */.mshm-archive-card__top{padding-right:58px}.mshm-archive-card__status{margin-left:auto}
.mshm-archive-card__features{position:absolute;left:16px;right:16px;bottom:64px;z-index:4;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:9px 8px;background:rgba(12,14,18,.68);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);border-radius:3px;color:#fff}.mshm-archive-card__features>span{min-width:0;display:grid;grid-template-columns:22px minmax(0,1fr);grid-template-rows:auto auto;column-gap:5px;align-items:center;text-align:left}.mshm-archive-card__features svg{grid-row:1/3;width:18px;height:18px;fill:none;stroke:#fff;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.mshm-archive-card__features em{font:300 var(--mshm-archive-feature-label-size)/1.1 var(--mshm-archive-feature-font);font-style:normal;color:#fff;text-transform:uppercase;white-space:nowrap}.mshm-archive-card__features b{font:300 var(--mshm-archive-feature-value-size)/1.15 var(--mshm-archive-feature-font);color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mshm-archive-card__bottom{position:absolute;left:16px;right:16px;bottom:12px;z-index:5;display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.mshm-archive-card__price{display:inline-flex;align-items:center;padding:0;background:transparent;color:#fff;font:400 1.5rem/1.05 var(--mshm-archive-serif);letter-spacing:-.02em;text-shadow:0 2px 5px rgba(0,0,0,.55);white-space:nowrap}.mshm-archive-card__media-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;min-width:0}.mshm-archive-card__media-action{display:inline-flex;align-items:center;gap:5px;color:#fff;font:600 10px/1 var(--mshm-archive-sans);text-transform:uppercase;text-shadow:0 1px 3px rgba(0,0,0,.75);white-space:nowrap;cursor:pointer}.mshm-archive-card__media-action svg{width:15px;height:15px;fill:none;stroke:#fff;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.mshm-archive-card::after{content:"";position:absolute;left:50%;bottom:7px;z-index:6;width:24px;height:5px;transform:translateX(-50%);background:radial-gradient(circle,#fff 0 1.7px,transparent 2px) 0 50%/8px 5px repeat-x;opacity:.85;pointer-events:none}

.mshm-archive-card__footer{display:flex;flex-direction:column;justify-content:center;gap:6px;min-height:72px;padding:13px 16px 14px;background:#fff;border:0;color:#555;font:400 12px/1.35 var(--mshm-archive-sans)}.mshm-archive-card__footer p{margin:0;padding:0}.mshm-archive-card__footer p:first-child{text-transform:none}.mshm-archive-card__footer p:last-child{color:#666}.mshm-archive-card__footer:empty{display:none}

/* Native list/map remain functional; give list view a clean presentation without
   allowing the archive grid rules to distort its plugin markup. */
.mshm-archive .hvnly-property-grid-view.hvnly-list-view.list-view[data-view-type="list"]{display:flex!important;flex-direction:column!important;flex-wrap:nowrap!important;grid-template-columns:none!important;gap:18px;width:100%!important}
.mshm-archive .hvnly-list-view{display:flex!important;flex-direction:column!important;flex-wrap:nowrap!important;grid-template-columns:none!important;gap:18px;width:100%!important}.mshm-archive .hvnly-list-view .hvnly-property-grid-list-item{display:flex;flex-direction:row;min-height:300px;overflow:hidden;border-radius:4px;width:100%!important;max-width:100%!important;flex:0 0 100%!important}.mshm-archive .hvnly-list-view .hvnly-property-grid-list-thumb{width:42%;max-width:none;min-height:300px}.mshm-archive .hvnly-list-view .hvnly-property--grid-list--single__content{flex:1;min-width:0;padding:22px!important}.mshm-archive .hvnly-map-placeholder{width:100%;min-height:500px}

@media (max-width:1100px){
body.mshm-archive-page{--mshm-archive-gap:18px}.mshm-archive{width:min(960px,calc(100vw - 40px));padding-top:18px}.mshm-archive-grid{gap:18px}.mshm-archive-card__features{left:12px;right:12px;bottom:58px}.mshm-archive-card__bottom{left:12px;right:12px}.mshm-archive-card__top{left:0;right:0;padding-left:13px;padding-top:13px}
}
@media (max-width:900px){
.mshm-archive{width:calc(100vw - 28px);padding-top:16px}body.mshm-filter-open{overflow:hidden}.mshm-archive__view-controls{margin-top:12px!important}.mshm-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.mshm-archive-card__media{aspect-ratio:618/384}.mshm-archive-card__address strong{font-size:20px}.mshm-archive-card__features{bottom:59px}.mshm-archive-card__price{font-size:1.5rem}
}
@media (max-width:900px){
.mshm-archive__layout{display:block}.mshm-archive--filters-open .mshm-archive__layout{display:block}.mshm-archive__sidebar{position:fixed;top:0;left:0;bottom:0;z-index:100001;width:min(380px,92vw);height:100dvh;max-height:none;margin:0;padding:20px;overflow-y:auto;background:#fff;box-shadow:12px 0 40px rgba(0,0,0,.18);transform:translateX(-105%);visibility:hidden;pointer-events:none;opacity:1;transition:transform .25s ease,visibility 0s linear .25s}.mshm-archive--filters-open .mshm-archive__sidebar{transform:translateX(0);visibility:visible;pointer-events:auto}.mshm-archive__sidebar>.hvnly-property-filter-sidebar{max-height:none;border:0!important;box-shadow:none!important}.mshm-archive__sidebar-head{padding:0 0 10px}.mshm-archive__backdrop{display:block!important;position:fixed;inset:0;z-index:100000;background:rgba(10,15,24,.42)}.mshm-archive__backdrop[hidden]{display:none!important}.mshm-archive__filter-close{position:static}.mshm-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media (max-width:640px){
.mshm-archive{width:calc(100vw - 20px);padding-bottom:45px}.mshm-archive__view-controls{flex-wrap:wrap;gap:10px}.mshm-archive__view-controls .hvnly-property-view-options{width:100%;justify-content:flex-end;margin-left:0}.mshm-archive-grid{grid-template-columns:1fr;gap:16px}.mshm-archive-card__media{aspect-ratio:618/384}.mshm-archive-card__top{padding:13px 52px 0 13px}.mshm-archive-card__address strong{font-size:19px}.mshm-archive-card__address span{font-size:10px}.mshm-archive-card__status{font-size:9px;padding:6px 8px}.mshm-archive-card__features{left:10px;right:10px;bottom:58px;gap:4px;padding:8px 6px}.mshm-archive-card__features>span{grid-template-columns:17px minmax(0,1fr);column-gap:4px}.mshm-archive-card__features svg{width:15px;height:15px}.mshm-archive-card__features em{font-size:.4375rem}.mshm-archive-card__features b{font-size:.625rem}.mshm-archive-card__bottom{left:10px;right:10px;bottom:10px}.mshm-archive-card__price{padding:0;font-size:1.5rem}.mshm-archive-card__media-actions{gap:8px}.mshm-archive-card__media-action{font-size:9px}.mshm-archive-card__media-action svg{width:14px;height:14px}.mshm-archive .hvnly-list-view .hvnly-property-grid-list-item{display:block;min-height:0}.mshm-archive .hvnly-list-view .hvnly-property-grid-list-thumb{width:100%;height:240px;min-height:240px}.mshm-archive .hvnly-list-view .hvnly-property--grid-list--single__content{padding:18px!important}
}


/* v3.4.15 — archive pagination. */
.mshm-archive #hvnly-property-pagination { width:100%; margin:28px 0 0; }
.mshm-archive #hvnly-property-pagination > .hvnly-property-pagination {
    display:flex; align-items:center; justify-content:space-between; gap:20px;
    width:100%; padding:18px 0 0; border-top:1px solid var(--mshm-archive-line);
}
.mshm-archive .hvnly-property-pagination-info { color:#666; font:400 12px/1.4 var(--mshm-archive-sans); }
.mshm-archive .hvnly-property-pagination-info span { color:#222; font-weight:600; }
.mshm-archive .hvnly-property-pagination-list { display:flex; align-items:center; justify-content:flex-end; gap:6px; margin-left:auto; }
.mshm-archive .hvnly-property-pagination-item {
    display:inline-grid!important; place-items:center; min-width:34px; height:34px;
    margin:0!important; padding:0 9px!important; border:1px solid #ddd!important;
    border-radius:3px!important; background:#fff!important; color:#333!important;
    box-shadow:none!important; font:500 12px/1 var(--mshm-archive-sans)!important; cursor:pointer;
}
.mshm-archive .hvnly-property-pagination-item:hover { background:#f7f7f7!important; transform:none!important; }
.mshm-archive .hvnly-property-pagination-item.active { border-color:#333!important; background:#333!important; color:#fff!important; }
.mshm-archive .hvnly-property-pagination-prev, .mshm-archive .hvnly-property-pagination-next { min-width:34px; }

/* Havenlytics writes inline grid dimensions after AJAX. Child theme owns the
 * archive grid geometry for initial render, filter results and page results.
 *
 * :not(.hvnly-list-view) added as a real bug fix: this rule and the earlier
 * .hvnly-list-view override (above) are both two-class selectors (equal
 * specificity), and this one — unconditional, no list-view exception —
 * came later in the cascade and always won the tie, so switching to List
 * view never actually changed the layout (grid-template-columns stayed
 * "repeat(2,...)" and display stayed "grid" no matter what).
 *
 * :not(.map-view) added for the same reason, found separately: Map view
 * swaps this element's class to .map-view (not .hvnly-list-view) and sets
 * display:none inline, but this rule's !important still won, so the grid
 * never actually hid behind the map — same root cause as the List-view
 * bug above, just not covered by that fix since it only excluded
 * .hvnly-list-view. */
.mshm-archive .mshm-archive-grid:not(.hvnly-list-view):not(.map-view) {
    display:grid!important; grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:var(--mshm-archive-gap)!important; width:100%!important;
}
.mshm-archive .mshm-archive-grid > .mshm-archive-card { min-width:0!important; width:100%!important; }

@media (min-width:901px) {
    .mshm-archive--filters-open .mshm-archive__layout {
        grid-template-columns:minmax(250px,var(--mshm-archive-sidebar)) minmax(0,1fr)!important;
        gap:var(--mshm-archive-gap)!important;
    }
    .mshm-archive--filters-open .mshm-archive__sidebar { width:100%!important; max-width:var(--mshm-archive-sidebar)!important; }
}
@media (max-width:640px) {
    .mshm-archive #hvnly-property-pagination > .hvnly-property-pagination { align-items:flex-start; flex-direction:column; }
    .mshm-archive .hvnly-property-pagination-list { width:100%; justify-content:center; margin-left:0; }
}

/* v3.4.17 — filter reset feedback. */
.mshm-archive__notice{
    margin:14px 0 0;
    padding:11px 16px;
    border:1px solid #b7e4c7;
    border-radius:4px;
    background:#eafaf0;
    color:#1e6b3c;
    font:500 12px/1.4 var(--mshm-archive-sans);
}

/* v3.4.17 — Favorites page uses the same Mainsail archive card geometry. */
.hvnly-block-saved.mshm-saved-skin,
.hvnly-block-saved{
    --mshm-saved-gap: var(--mshm-archive-gap, 24px);
}
.mshm-saved__toolbar{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:18px;
    margin:0 0 20px;
    padding:0 0 14px;
    border-bottom:1px solid var(--mshm-archive-line, #e2e2e2);
}
.mshm-saved__count{margin:0;color:#222;font:500 13px/1.4 var(--mshm-archive-sans);}
.mshm-saved__count strong{font-weight:700;}
.mshm-saved__actions{display:flex;align-items:center;gap:8px;}
.mshm-saved__browse,.mshm-saved__clear{
    display:inline-flex;align-items:center;justify-content:center;
    min-height:36px;padding:0 14px;border:1px solid #ddd;border-radius:3px;
    background:#fff;color:#333;text-decoration:none;cursor:pointer;
    font:500 12px/1 var(--mshm-archive-sans);
}
.mshm-saved__browse:hover,.mshm-saved__clear:hover{background:#f7f7f7;color:#222;}
.mshm-saved__listings{width:100%;}
.mshm-saved__grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:var(--mshm-saved-gap)!important;width:100%!important;}
.mshm-saved__grid>.mshm-archive-card{min-width:0!important;width:100%!important;}
.mshm-saved__pagination{
    display:flex;align-items:center;justify-content:space-between;gap:20px;
    width:100%;margin:28px 0 0;padding:18px 0 0;border-top:1px solid var(--mshm-archive-line,#e2e2e2);
}
.mshm-saved__pagination-info{margin:0;color:#666;font:400 12px/1.4 var(--mshm-archive-sans);}
.mshm-saved__pages{display:flex;align-items:center;gap:6px;margin-left:auto;}
.mshm-saved__page{
    display:inline-grid;place-items:center;min-width:34px;height:34px;padding:0 9px;
    border:1px solid #ddd;border-radius:3px;background:#fff;color:#333;text-decoration:none;
    font:500 12px/1 var(--mshm-archive-sans);
}
.mshm-saved__page:hover{background:#f7f7f7;color:#222;}
.mshm-saved__page.is-active{border-color:#333;background:#333;color:#fff;}
.mshm-saved__empty{margin-top:10px;padding:42px 24px;text-align:center;border:1px solid #e3e3e3;background:#fff;}
.mshm-saved__empty .mshm-saved__browse{margin-top:12px;}
.mshm-saved__gate{padding:40px 24px;background:#fff;border:1px solid #e3e3e3;text-align:center;}
.mshm-saved__gate h2{margin:0 0 20px;font:600 24px/1.2 var(--mshm-archive-sans);color:#222;}

@media (max-width:900px){
    .mshm-saved__grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;}
}
@media (max-width:640px){
    .mshm-saved__toolbar{align-items:flex-start;flex-direction:column;}
    .mshm-saved__actions{width:100%;}
    .mshm-saved__browse,.mshm-saved__clear{flex:1;}
    .mshm-saved__grid{grid-template-columns:1fr!important;}
    .mshm-saved__pagination{align-items:flex-start;flex-direction:column;}
    .mshm-saved__pages{width:100%;justify-content:center;margin-left:0;}
}


/* v3.4.17 — archive/favorites card visual consistency.
 * The archive card is a single presentation component everywhere it appears.
 * Keep the feature rail solid and its typography/icons white; keep price in rem.
 */
.mshm-archive-card__features,
.mshm-saved-skin .mshm-archive-card__features{
    position:absolute!important;
    left:16px!important;
    right:16px!important;
    bottom:64px!important;
    z-index:4!important;
    display:grid!important;
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    gap:8px!important;
    width:auto!important;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    margin:0!important;
    padding:9px 8px!important;
    box-sizing:border-box!important;
    overflow:hidden!important;
    background:rgba(12,14,18,.68)!important;
    backdrop-filter:blur(2px)!important;
    -webkit-backdrop-filter:blur(2px)!important;
    border-radius:3px!important;
    color:#fff!important;
    border:0!important;
    opacity:1!important;
}
.mshm-archive-card__features>span,
.mshm-saved-skin .mshm-archive-card__features>span{
    min-width:0!important;
    width:auto!important;
    height:auto!important;
    min-height:0!important;
    margin:0!important;
    padding:0!important;
    display:grid!important;
    grid-template-columns:22px minmax(0,1fr)!important;
    grid-template-rows:auto auto!important;
    column-gap:5px!important;
    align-items:center!important;
    text-align:left!important;
    overflow:hidden!important;
    background:transparent!important;
    color:#fff!important;
}
.mshm-archive-card__features svg,
.mshm-saved-skin .mshm-archive-card__features svg{
    grid-row:1/3!important;
    width:18px!important;
    height:18px!important;
    max-width:18px!important;
    max-height:18px!important;
    margin:0!important;
    fill:none!important;
    stroke:#fff!important;
    stroke-width:1.6!important;
    stroke-linecap:round!important;
    stroke-linejoin:round!important;
}
.mshm-archive-card__features em,
.mshm-saved-skin .mshm-archive-card__features em{
    min-width:0!important;
    margin:0!important;
    padding:0!important;
    color:#fff!important;
    font:300 var(--mshm-archive-feature-label-size)/1.1 var(--mshm-archive-feature-font)!important;
    font-style:normal!important;
    text-transform:uppercase!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
}
.mshm-archive-card__features b,
.mshm-saved-skin .mshm-archive-card__features b{
    min-width:0!important;
    margin:0!important;
    padding:0!important;
    color:#fff!important;
    font:300 var(--mshm-archive-feature-value-size)/1.15 var(--mshm-archive-feature-font)!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
}
.mshm-archive-card__price,
.mshm-saved-skin .mshm-archive-card__price{
    font-size:1.5rem!important;
    font-weight:400!important;
    font-family:var(--mshm-archive-serif)!important;
    line-height:1.05!important;
    color:#fff!important;
    white-space:nowrap!important;
}

/* Saved/Favorites page: neutralize native grid-item sizing so the shared
 * archive card cannot inherit the plugin's alternate card geometry. */
.mshm-saved-skin .mshm-archive-card,
.mshm-saved-skin .mshm-archive-card__media,
.mshm-saved-skin .mshm-archive-card__footer{
    box-sizing:border-box!important;
}
.mshm-saved-skin .mshm-archive-card{
    position:relative!important;
    display:block!important;
    min-width:0!important;
    width:100%!important;
    height:auto!important;
    overflow:visible!important;
    background:#fff!important;
}
.mshm-saved-skin .mshm-archive-card__media{
    position:relative!important;
    display:block!important;
    width:100%!important;
    height:auto!important;
    aspect-ratio:618/384!important;
    overflow:hidden!important;
    margin:0!important;
    padding:0!important;
}
.mshm-saved-skin .mshm-archive-card__media img{
    width:100%!important;
    height:100%!important;
    max-width:none!important;
    object-fit:cover!important;
}
.mshm-saved-skin .mshm-archive-card__bottom{
    position:absolute!important;
    left:16px!important;
    right:16px!important;
    bottom:12px!important;
    width:auto!important;
    margin:0!important;
    padding:0!important;
    background:transparent!important;
    z-index:5!important;
}
.mshm-saved-skin .mshm-archive-card__footer{
    position:relative!important;
    width:100%!important;
    min-height:0!important;
    margin:0!important;
    padding:14px 16px 16px!important;
    background:#fff!important;
    overflow:hidden!important;
}
.mshm-saved-skin .mshm-archive-card__footer p{
    margin:0 0 6px!important;
    padding:0!important;
    color:#222!important;
    font:400 12px/1.35 var(--mshm-archive-sans)!important;
}
.mshm-saved-skin .mshm-archive-card__footer p:last-child{margin-bottom:0!important;}

@media (max-width:1100px){
    .mshm-archive-card__features,
    .mshm-saved-skin .mshm-archive-card__features{left:12px!important;right:12px!important;bottom:58px!important;}
    .mshm-saved-skin .mshm-archive-card__bottom{left:12px!important;right:12px!important;}
}
@media (max-width:640px){
    .mshm-archive-card__features,
    .mshm-saved-skin .mshm-archive-card__features{
        left:10px!important;right:10px!important;bottom:58px!important;
        gap:4px!important;padding:8px 6px!important;
    }
    .mshm-archive-card__features>span,
    .mshm-saved-skin .mshm-archive-card__features>span{
        grid-template-columns:17px minmax(0,1fr)!important;column-gap:4px!important;
    }
    .mshm-archive-card__features svg,
    .mshm-saved-skin .mshm-archive-card__features svg{width:15px!important;height:15px!important;max-width:15px!important;max-height:15px!important;}
    .mshm-archive-card__features em,
    .mshm-saved-skin .mshm-archive-card__features em{font-size:.4375rem!important;}
    .mshm-archive-card__features b,
    .mshm-saved-skin .mshm-archive-card__features b{font-size:.625rem!important;}
    .mshm-archive-card__price,
    .mshm-saved-skin .mshm-archive-card__price{font-size:1.5rem!important;}
    .mshm-saved-skin .mshm-archive-card__bottom{left:10px!important;right:10px!important;bottom:10px!important;}
    /* v3.4.25 — actually-definitive mobile one-column fix. The v3.4.19
       comment below claimed "same or higher specificity than every
       competing 2-column rule", but ".mshm-archive-grid" alone is one
       class (0,1,0) — LOWER than Havenlytics' own competing !important
       rule ".hvnly-property-grid-view.hvnly-grid-view" (0,2,0), so that
       rule was silently losing the !important-vs-!important tie on
       every page (confirmed on /properties/, /property-search/, and
       the single-agent listings grid, all of which carry both classes
       on the wrapper). Selectors below match the same three classes
       the grid wrapper actually has (0,3,0), unambiguously higher than
       every competing rule regardless of source order. */
    .mshm-archive-grid.hvnly-property-grid-view.hvnly-grid-view,
    .mshm-archive .mshm-archive-grid.hvnly-property-grid-view.hvnly-grid-view,
    .mshm-saved__grid,
    .mshm-archive .hvnly-property-grid-view.hvnly-grid-view{
        grid-template-columns:1fr!important;
    }
    .mshm-archive-grid>.mshm-archive-card,
    .mshm-archive .mshm-archive-grid>.mshm-archive-card{
        width:100%!important;max-width:100%!important;
    }
}
