@keyframes fadeUp{from{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes floatY{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
@keyframes rotateSlow{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@keyframes lineGrow{from{transform:scaleX(0);transform-origin:left}to{transform:scaleX(1)}}
@keyframes goldShimmer{0%{background-position:-200% center}100%{background-position:200% center}}
@keyframes countUp{from{opacity:0;transform:translateY(20px) scale(0.9)}to{opacity:1;transform:translateY(0) scale(1)}}

[data-reveal]{opacity:0;will-change:opacity,transform}
[data-reveal="fade-up"]{transform:translateY(50px);transition:opacity var(--dur-reveal) var(--ease-gold),transform var(--dur-reveal) var(--ease-gold)}
[data-reveal="fade"]{transition:opacity var(--dur-reveal) var(--ease-out-expo)}
[data-reveal="slide-left"]{transform:translateX(-60px);transition:opacity var(--dur-reveal) var(--ease-gold),transform var(--dur-reveal) var(--ease-gold)}
[data-reveal="slide-right"]{transform:translateX(60px);transition:opacity var(--dur-reveal) var(--ease-gold),transform var(--dur-reveal) var(--ease-gold)}
[data-reveal="scale"]{transform:scale(0.9);transition:opacity var(--dur-reveal) var(--ease-spring),transform var(--dur-reveal) var(--ease-spring)}
[data-reveal].is-visible{opacity:1;transform:none}

[data-delay="1"]{transition-delay:0.1s}
[data-delay="2"]{transition-delay:0.2s}
[data-delay="3"]{transition-delay:0.3s}
[data-delay="4"]{transition-delay:0.4s}
[data-delay="5"]{transition-delay:0.5s}
[data-delay="6"]{transition-delay:0.6s}
[data-delay="7"]{transition-delay:0.7s}
[data-delay="8"]{transition-delay:0.8s}

.text-reveal{overflow:hidden}
.text-reveal__line{display:block;overflow:hidden}
.text-reveal__line>span{display:block;transform:translateY(110%);transition:transform var(--dur-reveal) var(--ease-gold)}
.text-reveal.is-visible .text-reveal__line>span{transform:translateY(0)}
.text-reveal.is-visible .text-reveal__line:nth-child(1)>span{transition-delay:0s}
.text-reveal.is-visible .text-reveal__line:nth-child(2)>span{transition-delay:0.08s}
.text-reveal.is-visible .text-reveal__line:nth-child(3)>span{transition-delay:0.16s}
.text-reveal.is-visible .text-reveal__line:nth-child(4)>span{transition-delay:0.24s}

.parallax-img{will-change:transform}
.parallax-slow{--parallax-factor:0.2}
.parallax-mid{--parallax-factor:0.4}
.parallax-fast{--parallax-factor:0.6}

.magnetic{transition:transform var(--dur-fast) var(--ease-out-expo);will-change:transform}

.split-text .char{display:inline-block;overflow:hidden;vertical-align:top}
.split-text .char>span{display:inline-block;transform:translateY(110%) rotate(8deg);opacity:0;transition:transform var(--dur-reveal) var(--ease-gold),opacity var(--dur-fast) var(--ease-out-expo)}
.split-text.is-visible .char>span{transform:translateY(0) rotate(0);opacity:1}

.text-shimmer{background:var(--grad-gold);background-size:200% auto;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:goldShimmer 4s linear infinite}

.clip-reveal{will-change:clip-path}
.velocity-skew{will-change:transform}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}
  [data-reveal]{opacity:1 !important;transform:none !important}
}
