.wm { display: inline-block; overflow: hidden; vertical-align: bottom; padding-bottom: .14em; margin-bottom: -.14em; }
.w { display: inline-block; transform: translateY(118%) rotate(3deg); opacity: .001; transition: transform 1.15s var(--ease-expo), opacity .8s ease; will-change: transform; }
.words-reveal.in .w { transform: translateY(0) rotate(0); opacity: 1; }

.reveal { opacity: 0; filter: blur(6px); transform: translateY(34px) scale(.985); transition: opacity 1.1s ease, filter 1.1s ease, transform 1.2s var(--ease-expo); will-change: opacity, transform; }
.reveal.in { opacity: 1; filter: blur(0); transform: none; }

.label-reveal { opacity: 0; letter-spacing: .55em; transition: opacity 1s ease, letter-spacing 1.4s var(--ease-expo); }
.label-reveal.in { opacity: 1; letter-spacing: .2em; }

.line-reveal { transform: scaleX(0); transform-origin: left center; transition: transform 1.5s var(--ease-expo); }
.line-reveal.in { transform: scaleX(1); }

.glow-line { animation: textGlow 4.5s ease-in-out infinite; text-shadow: 0 0 15px rgba(255,255,255,0.2); }
@keyframes textGlow { 0%,100% { opacity: 0.65; } 50% { opacity: 1; } }

.scroll-blur {
  animation: scroll-fade-in linear both;
  animation-timeline: view();
  animation-range: entry 10% cover 30%;
}

.scroll-blur-sidebar {
  animation: scroll-fade-in linear both;
  animation-timeline: view();
  animation-range: entry 0% cover 15%;
}

.scroll-blur-right {
  animation: scroll-fade-in linear both;
  animation-timeline: view();
  animation-range: entry 5% cover 25%;
}

.scroll-blur-left {
  animation: scroll-fade-in linear both;
  animation-timeline: view();
  animation-range: entry 15% cover 35%;
}

@keyframes scroll-fade-in {
  from {
    opacity: 0;
    transform: translateY(80px) scale(0.92) perspective(1000px) rotateX(4deg);
    filter: blur(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1) perspective(1000px) rotateX(0);
    filter: blur(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .reveal, .w, .line-reveal, .label-reveal, .scroll-blur { transition: none !important; animation: none !important; opacity: 1 !important; filter: none !important; transform: none !important; }
}
