.reveal { opacity: 0; transform: translateY(28px); transition: opacity 0.7s ease, transform 0.7s ease; }
.reveal.is-visible { opacity: 1; transform: translateY(0); }

[data-animate] { opacity: 0; transform: translateY(30px); transition: opacity 0.7s ease, transform 0.7s ease; }
[data-animate].visible { opacity: 1; transform: translateY(0); }

.parallax-layer { transform: translate3d(0, 0, 0); will-change: transform; }

.animated-gradient { background: linear-gradient(125deg, var(--accent), var(--accent-2), #6b7cf5, #1ad0c6); background-size: 240% 240%; animation: gradientShift 8s ease infinite; }

@keyframes gradientShift {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}
