/* Smooth scroll-in motion for every page / section */

html.hv-wait-reveal main section:not(.is-in),
html.hv-wait-reveal .site-main > article:not(.is-in),
html.hv-wait-reveal .site-main > .page-header:not(.is-in),
html.hv-wait-reveal .pg-listing-hero:not(.is-in),
html.hv-wait-reveal .rd-pagehead:not(.is-in),
html.hv-wait-reveal .rd-stage > *:not(.is-in),
html.hv-wait-reveal .rd-block:not(.is-in),
html.hv-wait-reveal .rd-trust:not(.is-in),
html.hv-wait-reveal .ft-grid > *:not(.is-in),
html.hv-wait-reveal .error-404:not(.is-in),
html.hv-wait-reveal .no-results:not(.is-in),
html.hv-wait-reveal .gallery-section:not(.is-in),
html.hv-wait-reveal .pg-listing-page > *:not(.is-in) {
    opacity: 0;
}

.hv-reveal:not(.is-in) {
    opacity: 0 !important;
    transform: translate3d(0, 28px, 0) !important;
    filter: blur(0);
}

.hv-reveal.hv-from-left:not(.is-in) {
    transform: translate3d(-28px, 14px, 0) !important;
}

.hv-reveal.hv-from-right:not(.is-in) {
    transform: translate3d(28px, 14px, 0) !important;
}

.hv-reveal.hv-from-up:not(.is-in) {
    transform: translate3d(0, 14px, 0) !important;
}

.hv-reveal {
    transition:
        opacity .55s cubic-bezier(.16, 1, .3, 1),
        transform .55s cubic-bezier(.16, 1, .3, 1);
    transition-delay: calc(var(--hv-i, 0) * 40ms);
}

.hv-reveal.is-in {
    opacity: 1 !important;
    transform: none;
    will-change: auto;
}

.hero .hero-text.hv-reveal,
.hero .hero-image.hv-reveal {
    transition-duration: 1.05s;
}

body.hv-home-page .hv-reveal:not(.is-in),
body.hv-home-page .facility-card.hv-reveal:not(.is-in),
body.hv-home-page .gal-item.hv-reveal:not(.is-in),
body.hv-home-page .pg-loc-card.hv-reveal:not(.is-in),
body.hv-home-page .pg-address-card.hv-reveal:not(.is-in) {
    opacity: 0 !important;
    transform: translate3d(0, 28px, 0) !important;
}

body.hv-home-page .hv-reveal.hv-from-left:not(.is-in) {
    transform: translate3d(-28px, 14px, 0) !important;
}

body.hv-home-page .hv-reveal.hv-from-right:not(.is-in) {
    transform: translate3d(28px, 14px, 0) !important;
}

body.hv-home-page .hv-reveal.is-in,
body.hv-home-page .facility-card.hv-reveal.is-in,
body.hv-home-page .gal-item.hv-reveal.is-in,
body.hv-home-page .pg-loc-card.hv-reveal.is-in,
body.hv-home-page .pg-address-card.hv-reveal.is-in {
    opacity: 1 !important;
    transform: none;
}

/* Header menu + Visit Now — play once on load */
@keyframes hvMenuIn {
    from { opacity: 0; transform: translateY(-12px); }
    to { opacity: 1; transform: none; }
}

.navbar .logo {
    animation: hvMenuIn .55s cubic-bezier(.16, 1, .3, 1) both;
}

.navbar .main-menu li,
.navbar #menu-pg-menu li {
    animation: hvMenuIn .5s cubic-bezier(.16, 1, .3, 1) both;
}

.navbar .main-menu li:nth-child(1),
.navbar #menu-pg-menu li:nth-child(1) { animation-delay: .04s; }
.navbar .main-menu li:nth-child(2),
.navbar #menu-pg-menu li:nth-child(2) { animation-delay: .08s; }
.navbar .main-menu li:nth-child(3),
.navbar #menu-pg-menu li:nth-child(3) { animation-delay: .12s; }
.navbar .main-menu li:nth-child(4),
.navbar #menu-pg-menu li:nth-child(4) { animation-delay: .16s; }
.navbar .main-menu li:nth-child(5),
.navbar #menu-pg-menu li:nth-child(5) { animation-delay: .2s; }
.navbar .main-menu li:nth-child(6),
.navbar #menu-pg-menu li:nth-child(6) { animation-delay: .24s; }
.navbar .main-menu li:nth-child(7),
.navbar #menu-pg-menu li:nth-child(7) { animation-delay: .28s; }
.navbar .main-menu li:nth-child(8),
.navbar #menu-pg-menu li:nth-child(8) { animation-delay: .32s; }

.navbar > .nav-inner > .btn,
.navbar .btn.btn-primary {
    animation: hvMenuIn .55s cubic-bezier(.16, 1, .3, 1) .3s both;
}

@media (max-width: 767px) {
    .navbar .main-menu li,
    .navbar #menu-pg-menu li,
    .navbar > .nav-inner > .btn,
    .navbar .btn.btn-primary {
        animation: none;
    }
}

/* Buttons that enter on scroll */
@keyframes hvBtnIn {
    from { opacity: 0; transform: translateY(16px); }
    to { opacity: 1; transform: none; }
}

.hv-btn-in {
    animation: hvBtnIn .65s cubic-bezier(.16, 1, .3, 1) both;
}

@media (max-width: 1200px) {
    .hv-reveal:not(.is-in) {
        transform: translate3d(0, 22px, 0) !important;
    }

    .hv-reveal.hv-from-left:not(.is-in),
    .hv-reveal.hv-from-right:not(.is-in) {
        transform: translate3d(0, 22px, 0) !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    html.hv-wait-reveal main section:not(.is-in),
    html.hv-wait-reveal .site-main > article:not(.is-in),
    html.hv-wait-reveal .rd-block:not(.is-in),
    html.hv-wait-reveal .ft-grid > *:not(.is-in),
    .hv-reveal,
    .hv-reveal:not(.is-in),
    .hv-reveal.is-in,
    .navbar .logo,
    .navbar .main-menu li,
    .navbar #menu-pg-menu li,
    .navbar .btn,
    .hv-btn-in {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
        animation: none !important;
        filter: none !important;
    }
}

/* Native page scrolling on every screen */
html {
    scroll-behavior: auto !important;
    overflow-x: hidden !important;
    overflow-y: scroll !important;
    height: auto !important;
}
body,
#page,
#page.site,
.site {
    overflow-x: visible !important;
    overflow-y: visible !important;
    height: auto !important;
}
body.rd-book-open,
body.rd-light-open,
body.hv-nav-open,
html.hv-lightbox-open,
html.hv-lightbox-open body {
    overflow: hidden !important;
}

/* Room page + mobile: no scroll-reveal transforms (fixes stutter) */
.rd-wrap .hv-reveal,
.rd-wrap .hv-reveal:not(.is-in),
.rd-wrap .hv-reveal.is-in,
body.single-room .hv-reveal,
body.single-room .hv-reveal:not(.is-in),
body.single-room .hv-reveal.is-in {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
    filter: none !important;
    will-change: auto !important;
}
@media (max-width: 900px) {
    .hv-reveal,
    .hv-reveal:not(.is-in),
    .hv-reveal.is-in {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
        filter: none !important;
        will-change: auto !important;
    }
    html.hv-wait-reveal main section:not(.is-in),
    html.hv-wait-reveal .site-main > article:not(.is-in),
    html.hv-wait-reveal .rd-stage > *:not(.is-in),
    html.hv-wait-reveal .rd-block:not(.is-in),
    html.hv-wait-reveal .rd-trust:not(.is-in),
    html.hv-wait-reveal .rd-pagehead:not(.is-in),
    html.hv-wait-reveal .ft-grid > *:not(.is-in) {
        opacity: 1 !important;
    }
}
