.reveal {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .7s ease, transform .7s ease;
}

.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

.delay-1 { transition-delay: .08s; }
.delay-2 { transition-delay: .16s; }
.delay-3 { transition-delay: .24s; }
.delay-4 { transition-delay: .32s; }
.delay-5 { transition-delay: .4s; }

.skill-card,
.project-card,
.glass.card {
  transition: transform .3s ease, border-color .3s ease, background .3s ease;
}

.skill-card:hover,
.project-card:hover,
.glass.card:hover {
  transform: translateY(-6px);
  border-color: rgba(255,255,255,.32);
}

.section {
  transition: opacity .35s ease;
}

.hero-content {
  animation: fadeInUp .9s ease both;
}

@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.parallax {
  transform: translateY(var(--parallax-shift, 0));
}
