
:root {
    --tsw-scrollbar-thumb: #306648;
    --tsw-scrollbar-thumb-hover: #90bb32;
    --tsw-scrollbar-track: #f1efe9;
}

html {
    scrollbar-width: thin;
    scrollbar-color: var(--tsw-scrollbar-thumb) var(--tsw-scrollbar-track);
}

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--tsw-scrollbar-track); }
::-webkit-scrollbar-thumb {
    background: var(--tsw-scrollbar-thumb);
    border-radius: 999px;
    border: 2px solid var(--tsw-scrollbar-track);
}
::-webkit-scrollbar-thumb:hover { background: var(--tsw-scrollbar-thumb-hover); }

.tsw-animate {
    --tsw-animation-effect: fade-up;
    --tsw-animation-duration: 750ms;
    --tsw-animation-delay: 0ms;
    --tsw-animation-mobile-off: 0;
}

.tsw-animations-ready .tsw-animate.tsw-effect-fade:not(.is-inview),
.tsw-animations-ready .tsw-animate.tsw-effect-fade-up:not(.is-inview),
.tsw-animations-ready .tsw-animate.tsw-effect-fade-left:not(.is-inview),
.tsw-animations-ready .tsw-animate.tsw-effect-fade-right:not(.is-inview),
.tsw-animations-ready .tsw-animate.tsw-effect-zoom:not(.is-inview) {
    opacity: 0;
}
.tsw-animations-ready .tsw-animate.tsw-effect-fade-up:not(.is-inview) { transform: translate3d(0, 26px, 0); }
.tsw-animations-ready .tsw-animate.tsw-effect-fade-left:not(.is-inview) { transform: translate3d(-28px, 0, 0); }
.tsw-animations-ready .tsw-animate.tsw-effect-fade-right:not(.is-inview) { transform: translate3d(28px, 0, 0); }
.tsw-animations-ready .tsw-animate.tsw-effect-zoom:not(.is-inview) { transform: scale(.975); }

.tsw-animations-ready .tsw-animate.tsw-effect-fade,
.tsw-animations-ready .tsw-animate.tsw-effect-fade-up,
.tsw-animations-ready .tsw-animate.tsw-effect-fade-left,
.tsw-animations-ready .tsw-animate.tsw-effect-fade-right,
.tsw-animations-ready .tsw-animate.tsw-effect-zoom {
    transition-property: opacity, transform;
    transition-duration: var(--tsw-animation-duration);
    transition-delay: var(--tsw-animation-delay);
    transition-timing-function: cubic-bezier(.22, .61, .36, 1);
    will-change: opacity, transform;
}
.tsw-animations-ready .tsw-animate.is-inview {
    opacity: 1;
    transform: none;
}

/* Curated staggered reveals */
.tsw-animations-ready .tsw-hero.tsw-animate:not(.is-inview) .tsw-hero__panel,
.tsw-animations-ready .tsw-intro.tsw-animate:not(.is-inview) .tsw-intro__content,
.tsw-animations-ready .tsw-intro.tsw-animate:not(.is-inview) .tsw-intro__media,
.tsw-animations-ready .tsw-contact.tsw-animate:not(.is-inview) > * {
    opacity: 0;
    transform: translate3d(0, 20px, 0);
}

.tsw-hero__panel,
.tsw-intro__content,
.tsw-intro__media,
.tsw-stats__item,
.tsw-harmony__image-wrap,
.tsw-harmony__text,
.tsw-space__card,
.tsw-stages__item,
.tsw-news__item,
.tsw-news__card,
.tsw-nearby__item,
.tsw-standard__item,
.tsw-gallery__image,
.tsw-gallery__link {
    transition: opacity .65s cubic-bezier(.22,.61,.36,1), transform .65s cubic-bezier(.22,.61,.36,1);
}

.tsw-animations-ready .tsw-stats.tsw-animate:not(.is-inview) .tsw-stats__item,
.tsw-animations-ready .tsw-space.tsw-animate:not(.is-inview) .tsw-space__card,
.tsw-animations-ready .tsw-stages.tsw-animate:not(.is-inview) .tsw-stages__item,
.tsw-animations-ready .tsw-nearby.tsw-animate:not(.is-inview) .tsw-nearby__item,
.tsw-animations-ready .tsw-standard.tsw-animate:not(.is-inview) .tsw-standard__item,
.tsw-animations-ready .tsw-gallery.tsw-animate:not(.is-inview) .tsw-gallery__image,
.tsw-animations-ready .tsw-gallery.tsw-animate:not(.is-inview) .tsw-gallery__link,
.tsw-animations-ready .tsw-harmony.tsw-animate:not(.is-inview) .tsw-harmony__image-wrap,
.tsw-animations-ready .tsw-harmony.tsw-animate:not(.is-inview) .tsw-harmony__text,
.tsw-animations-ready .tsw-news.tsw-animate:not(.is-inview) .tsw-news__item,
.tsw-animations-ready .tsw-news.tsw-animate:not(.is-inview) .tsw-news__card {
    opacity: 0;
    transform: translate3d(0, 18px, 0);
}

.tsw-animate.is-inview .tsw-stats__item,
.tsw-animate.is-inview .tsw-space__card,
.tsw-animate.is-inview .tsw-stages__item,
.tsw-animate.is-inview .tsw-nearby__item,
.tsw-animate.is-inview .tsw-standard__item,
.tsw-animate.is-inview .tsw-gallery__image,
.tsw-animate.is-inview .tsw-gallery__link,
.tsw-animate.is-inview .tsw-harmony__image-wrap,
.tsw-animate.is-inview .tsw-harmony__text,
.tsw-animate.is-inview .tsw-news__item,
.tsw-animate.is-inview .tsw-news__card,
.tsw-animate.is-inview .tsw-hero__panel,
.tsw-animate.is-inview .tsw-intro__content,
.tsw-animate.is-inview .tsw-intro__media {
    opacity: 1;
    transform: none;
}

.tsw-stats__item:nth-child(2), .tsw-standard__item:nth-child(2), .tsw-nearby__item:nth-child(2), .tsw-gallery__top .tsw-gallery__image:nth-child(2) { transition-delay: .07s; }
.tsw-stats__item:nth-child(3), .tsw-standard__item:nth-child(3), .tsw-nearby__item:nth-child(3), .tsw-gallery__top .tsw-gallery__image:nth-child(3) { transition-delay: .14s; }
.tsw-stats__item:nth-child(4), .tsw-standard__item:nth-child(4), .tsw-nearby__item:nth-child(4) { transition-delay: .21s; }
.tsw-stats__item:nth-child(5), .tsw-standard__item:nth-child(5), .tsw-nearby__item:nth-child(5) { transition-delay: .28s; }
.tsw-stats__item:nth-child(6), .tsw-standard__item:nth-child(6), .tsw-nearby__item:nth-child(6) { transition-delay: .35s; }
.tsw-standard__item:nth-child(7), .tsw-nearby__item:nth-child(7) { transition-delay: .42s; }
.tsw-nearby__item:nth-child(8) { transition-delay: .49s; }
.tsw-nearby__item:nth-child(9) { transition-delay: .56s; }
.tsw-space__card:nth-child(2), .tsw-stages__item:nth-child(2) { transition-delay: .10s; }
.tsw-space__card:nth-child(3) { transition-delay: .20s; }
.tsw-intro.is-inview .tsw-intro__media { transition-delay: .10s; }
.tsw-gallery.is-inview .tsw-gallery__bottom .tsw-gallery__image { transition-delay: .17s; }
.tsw-gallery.is-inview .tsw-gallery__link { transition-delay: .24s; }

/* Premium hover movement for imagery */
.tsw-space__image,
.tsw-news img,
.tsw-gallery__image img,
.tsw-harmony__image {
    transition: transform .7s cubic-bezier(.22,.61,.36,1);
    will-change: transform;
}
.tsw-space__card:hover .tsw-space__image,
.tsw-news__item:hover img,
.tsw-news__card:hover img,
.tsw-gallery__image:hover img,
.tsw-harmony__image-wrap:hover .tsw-harmony__image {
    transform: scale(1.025);
}

/* Film play: subtle living accent */
.tsw-banner.is-inview .tsw-banner__play {
    animation: tswPlayPulse 2.8s ease-out infinite;
}
@keyframes tswPlayPulse {
    0%, 55%, 100% { box-shadow: 0 5px 16px rgba(0,0,0,.18), 0 0 0 0 rgba(200,166,87,.28); }
    75% { box-shadow: 0 5px 16px rgba(0,0,0,.18), 0 0 0 12px rgba(200,166,87,0); }
}

/* Header smoothly compacts after scroll */
.tsw-header,
.tsw-header__inner,
.tsw-header__logo img,
.tsw-header__menu a {
    transition: min-height .28s ease, width .28s ease, padding .28s ease, box-shadow .28s ease, background-color .28s ease;
}
.tsw-header.is-scrolled {
    box-shadow: 0 8px 30px rgba(17, 39, 29, .08);
}
@media (min-width: 1025px) {
    .tsw-header.is-scrolled .tsw-header__inner { min-height: 76px; }
    .tsw-header.is-scrolled .tsw-header__logo img { width: 178px; }
    .tsw-header.is-scrolled .tsw-header__menu a { padding-top: 28px; padding-bottom: 28px; }
}

@media (max-width: 767px) {
    .tsw-animations-ready .tsw-animate[style*="--tsw-animation-mobile-off: 1"] {
        opacity: 1;
        transform: none;
        transition: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .tsw-animate,
    .tsw-animate *,
    .tsw-banner__play {
        animation: none !important;
        transition-duration: .001ms !important;
        transition-delay: 0ms !important;
        transform: none !important;
        opacity: 1 !important;
    }
}


/* Mobile viewport guard — prevents any widget/fixed panel from widening the page. */
@media (max-width: 1024px) {
    html,
    body {
        width: 100%;
        max-width: 100%;
        overflow-x: clip;
    }

    body > .elementor,
    .elementor,
    .elementor-section,
    .e-con,
    .e-con-inner {
        max-width: 100%;
    }

    /* On phones/tablets use the native overlay scrollbar.
       The desktop green branded scrollbar stays unchanged. */
    html {
        scrollbar-width: auto;
    }

    ::-webkit-scrollbar {
        width: 0;
        height: 0;
    }
}
