/* グラデーション */
.has-gradient-purple {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.has-gradient-orange {
  background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.has-gradient-blue {
  background: linear-gradient(90deg, #4facfe 0%, #00f2fe 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* アニメーション（初期状態） */
.animate-fade-up,
.animate-fade-down,
.animate-fade-in {
  opacity: 0;
}

.animate-fade-up {
  transform: translateY(30px);
}

.animate-fade-down {
  transform: translateY(-30px);
}

/* 見える時点でアクティブ */
.animate-fade-up.in-view {
  animation: fade-up 0.6s ease-out forwards;
}

.animate-fade-down.in-view {
  animation: fade-down 0.6s ease-out forwards;
}

.animate-fade-in.in-view {
  animation: fade-in 0.6s ease-out forwards;
}

@keyframes fade-up {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fade-down {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fade-in {
  to {
    opacity: 1;
  }
}