/* Keyframes */
@keyframes shimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } }
@keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
@keyframes gradient-move { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } }
@keyframes fadePulse { 0%, 100% { opacity: .92; } 50% { opacity: 1; } }

/* Scroll reveal */
[data-animate] { opacity: 0; transform: translateY(14px); transition: opacity .6s cubic-bezier(.22,.61,.36,1), transform .6s cubic-bezier(.22,.61,.36,1); }
.in-view { opacity: 1 !important; transform: none !important; }

/* Hover transitions */
.transition { transition: all .2s ease; }

/* Animated text styles */
.text-gradient-animate {
  background: linear-gradient(90deg, var(--color-brand-700), var(--color-brand-600), var(--color-accent-600), var(--color-brand-600));
  background-size: 300% 100%;
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  animation: gradient-move 9s ease-in-out infinite;
}
.text-fadepulse { animation: fadePulse 6s ease-in-out infinite; }

/* Subtle shimmer underline for hero title */
.hero-title.text-gradient-animate {
  position: relative;
  text-shadow: 0 6px 32px rgba(2,8,23,.14);
}
.hero-title.text-gradient-animate::after {
  content: "";
  position: absolute; left: 50%; transform: translateX(-50%);
  bottom: -10px; width: 42%; height: 2px; border-radius: 2px;
  background: linear-gradient(90deg, transparent, color-mix(in oklab, var(--color-brand-600) 90%, transparent), transparent);
  animation: gradient-move 6s ease-in-out infinite;
  opacity: .8;
}

@media (prefers-reduced-motion: reduce) {
  .text-gradient-animate { animation: none; }
  .text-fadepulse { animation: none; }
}


