/* Shared site base and utilities. Page-specific overrides remain inline. */
html.lenis,
html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }
.lenis.lenis-scrolling iframe { pointer-events: none; }
body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
::-webkit-scrollbar { display: none; }
* { -ms-overflow-style: none; scrollbar-width: none; }
.no-scrollbar::-webkit-scrollbar { display: none; }
.no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }
.mask-reveal { clip-path: inset(100% 0 0 0); }
.text-balance { text-wrap: balance; }
.hover-underline { position: relative; }
.hover-underline::after { content: ''; position: absolute; width: 0; height: 1px; bottom: -2px; left: 0; background-color: currentColor; transition: width 0.4s cubic-bezier(0.25, 1, 0.5, 1); }
.hover-underline:hover::after { width: 100%; }
.gsap-reveal-up { will-change: transform, opacity; }
.gsap-parallax-img, .gsap-parallax-bg, .gsap-hero-img { will-change: transform; }

/* Tablet navbar: retain the desktop controls while fitting the intermediate range. */
        @media (min-width: 768px) and (max-width: 1199px) {
            #site-header {
                padding-top: clamp(0.75rem, 1.3vw, 1.1rem);
                padding-bottom: clamp(0.75rem, 1.3vw, 1.1rem);
            }

            #site-header > div {
                padding-left: clamp(1rem, 2.5vw, 2rem);
                padding-right: clamp(1rem, 2.5vw, 2rem);
                gap: clamp(0.65rem, 1.5vw, 1.5rem);
            }

            #site-header > div > a.group {
                flex-shrink: 0;
            }

            #site-header > div > a.group > :not([hidden]) ~ :not([hidden]) {
                margin-left: clamp(0.45rem, 0.8vw, 0.65rem);
            }

            #site-header > div > a.group > span {
                flex-direction: column;
                align-items: flex-start;
                font-size: clamp(1.1rem, 2vw, 1.4rem);
                line-height: 0.95;
            }

            #site-header > div > a.group > span > span:last-child {
                margin-top: 0.2rem;
                margin-left: 0;
                font-size: clamp(0.48rem, 0.85vw, 0.62rem);
                line-height: 1;
                white-space: nowrap;
            }

            #site-header > div > nav {
                flex: 1 1 auto;
                min-width: 0;
                justify-content: center;
                gap: clamp(0.35rem, 1.1vw, 0.85rem);
                font-size: clamp(0.48rem, 0.85vw, 0.62rem);
            }

            #site-header > div > nav > :not([hidden]) ~ :not([hidden]) {
                margin-left: 0;
            }

            #site-header > div > nav a,
            #site-header > div > nav button {
                white-space: nowrap;
            }

            #site-header > div > div:last-child {
                flex: 0 0 auto;
            }

            #site-header > div > div:last-child > a {
                gap: 0.3rem;
                padding: clamp(0.45rem, 0.85vw, 0.65rem) clamp(0.55rem, 1.2vw, 0.9rem);
                font-size: clamp(0.48rem, 0.85vw, 0.62rem);
                white-space: nowrap;
            }

            #site-header > div > div:last-child > a > :not([hidden]) ~ :not([hidden]) {
                margin-left: 0;
            }

            #site-header > div > div:last-child > a > i {
                font-size: clamp(0.62rem, 1vw, 0.75rem);
            }
        }

        /* =========================================================
   Scroll Indicator — Expanded Invisible Click Area
   Visual dot size/spacing remains unchanged
   ========================================================= */

.nav-dot {
    position: relative;
}

/* Invisible hit area around the visible dot */
.nav-dot::before {
    content: "";
    position: absolute;
    inset: -8px;
    border-radius: 9999px;
    background: transparent;
    pointer-events: auto;
}