/* Good Hope — Home page GSAP layer.
   When js/gsap-home.js runs it adds .gs to .gh; these rules hand the
   CSS scroll reveals over to GSAP so the two never fight. Without JS
   (or with reduced motion) nothing here applies and the page is unchanged. */
.gh.gs main .rv,.gh.gs footer .rv{animation:none!important}
.gh.gs .xpSec .hl::before{animation:none!important;transform:scaleX(var(--hl,0))}
.gh.gs .ev{transition:box-shadow .3s}
.gh.gs .xp.gsin .xp-i{transition:none!important}
.gh.gs .dz{translate:0 var(--py,0px)}
.gh.gs .band-item{display:inline-flex;transform:skewX(var(--sk,0deg))}
.gh.gs .split-line{padding-bottom:.06em}

/* cursor follower (desktop pointers only) */
.gcur{position:fixed;left:0;top:0;z-index:9999;width:38px;height:38px;margin:-19px 0 0 -19px;border:2.5px solid var(--pink);border-radius:50%;pointer-events:none;mix-blend-mode:multiply;opacity:0;transition:opacity .3s,background-color .3s,border-color .3s}
.gcur.on{opacity:1}
.gcur.big{background:rgba(255,200,87,.35);border-color:var(--ink)}
.gcur-dot{position:fixed;left:0;top:0;z-index:9999;width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:50%;background:var(--ink);pointer-events:none;opacity:0;transition:opacity .3s}
.gcur-dot.on{opacity:1}
@media (hover:none),(pointer:coarse){.gcur,.gcur-dot{display:none}}
