@keyframes float { 0%,100% { transform: translateY(0) translateX(0); } 50% { transform: translateY(-20px) translateX(10px); } }
@keyframes drift { 0%,100% { transform: translateY(-50%) rotate(0deg); } 50% { transform: translateY(-53%) rotate(1deg); } }
@keyframes fadeUp { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: none; } }
@keyframes pulse { 0%,100% { transform: scale(1); } 50% { transform: scale(1.04); } }
[data-animate] { animation: fadeUp .8s cubic-bezier(.22,1,.36,1) both; }
[data-delay="1"] { animation-delay: .1s; }
[data-delay="2"] { animation-delay: .2s; }
[data-delay="3"] { animation-delay: .3s; }
[data-delay="4"] { animation-delay: .4s; }
[data-delay="5"] { animation-delay: .5s; }
.hero h1 .word { display: inline-block; overflow: hidden; }
.hero h1 .word > span { display: inline-block; transform: translateY(110%); animation: wordUp .9s cubic-bezier(.22,1,.36,1) forwards; }
@keyframes wordUp { to { transform: translateY(0); } }
#particles { position: absolute; inset: 0; pointer-events: none; z-index: 1; }
.btn-primary.pulse { animation: pulse 2.4s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
  [data-animate], .reveal { opacity: 1 !important; transform: none !important; }
}
