/* 动画效果样式表 */

/* 渐入动画 */
@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.fade-in {
  opacity: 0;
  animation: fadeIn 1s ease forwards;
}

/* 从左侧滑入 */
@keyframes slideInLeft {
  from {
    transform: translateX(-50px);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

.slide-in-left {
  opacity: 0;
  transform: translateX(-50px);
  transition: opacity 0.8s ease, transform 0.8s ease;
}

.slide-in-left.active {
  opacity: 1;
  transform: translateX(0);
}

/* 从右侧滑入 */
@keyframes slideInRight {
  from {
    transform: translateX(50px);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

.slide-in-right {
  opacity: 0;
  transform: translateX(50px);
  transition: opacity 0.8s ease, transform 0.8s ease;
}

.slide-in-right.active {
  opacity: 1;
  transform: translateX(0);
}

/* 从下方滑入 */
@keyframes slideInUp {
  from {
    transform: translateY(50px);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

.slide-in-up {
  opacity: 0;
  transform: translateY(50px);
  transition: opacity 0.8s ease, transform 0.8s ease;
}

.slide-in-up.active {
  opacity: 1;
  transform: translateY(0);
}

/* 缩放动画 */
@keyframes scaleIn {
  from {
    transform: scale(0.9);
    opacity: 0;
  }
  to {
    transform: scale(1);
    opacity: 1;
  }
}

.scale-in {
  opacity: 0;
  transform: scale(0.9);
  transition: opacity 0.8s ease, transform 0.8s ease;
}

.scale-in.active {
  opacity: 1;
  transform: scale(1);
}

/* 滚动触发动画 */
.fade-in:not(.active),
.slide-in-left:not(.active),
.slide-in-right:not(.active),
.slide-in-up:not(.active),
.scale-in:not(.active) {
  will-change: opacity, transform;
}

/* 添加延迟的动画序列 */
.delay-1 { animation-delay: 0.2s; transition-delay: 0.2s; }
.delay-2 { animation-delay: 0.4s; transition-delay: 0.4s; }
.delay-3 { animation-delay: 0.6s; transition-delay: 0.6s; }
.delay-4 { animation-delay: 0.8s; transition-delay: 0.8s; }
.delay-5 { animation-delay: 1s; transition-delay: 1s; }

/* 页面部分进入视图时的动画 */
.about, .skills, .projects, .contact {
  opacity: 0.8;
  transition: opacity 0.8s ease;
}

.about.in-view, .skills.in-view, .projects.in-view, .contact.in-view {
  opacity: 1;
}

/* 持续动画效果 */
@keyframes float {
  0% { transform: translateY(0px); }
  50% { transform: translateY(-10px); }
  100% { transform: translateY(0px); }
}

.float {
  animation: float 4s ease-in-out infinite;
}

@keyframes pulse {
  0% { transform: scale(1); }
  50% { transform: scale(1.05); }
  100% { transform: scale(1); }
}

.pulse {
  animation: pulse 3s ease-in-out infinite;
}

/* 横向滚动文本 */
@keyframes scrollText {
  0% { transform: translateX(0); }
  100% { transform: translateX(-100%); }
}

.scroll-text {
  animation: scrollText 20s linear infinite;
}

/* 英雄区下滑指示器动画 */
@keyframes bounce {
  0%, 20%, 50%, 80%, 100% { transform: translateY(0); }
  40% { transform: translateY(-10px); }
  60% { transform: translateY(-5px); }
}

.hero-scroll i {
  animation: bounce 2s infinite;
}

/* 加载动画 */
@keyframes rotating {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

.rotating {
  animation: rotating 2s linear infinite;
} 