/* =====================================================================
   animations.css — Scroll reveals, keyframes, micro-interactions
   ===================================================================== */

/* Scroll reveal base states */
[data-reveal] { opacity: 0; transform: translateY(34px); transition: opacity .8s var(--ease), transform .8s var(--ease); will-change: opacity, transform; }
[data-reveal].in { opacity: 1; transform: none; }
[data-reveal="left"] { transform: translateX(-44px); }
[data-reveal="right"] { transform: translateX(44px); }
[data-reveal="zoom"] { transform: scale(.9); }
[data-reveal="left"].in, [data-reveal="right"].in, [data-reveal="zoom"].in { transform: none; }

/* Stagger delays */
[data-delay="1"]{ transition-delay:.08s } [data-delay="2"]{ transition-delay:.16s }
[data-delay="3"]{ transition-delay:.24s } [data-delay="4"]{ transition-delay:.32s }
[data-delay="5"]{ transition-delay:.40s } [data-delay="6"]{ transition-delay:.48s }

/* Floating animation */
@keyframes float { 0%,100%{ transform: translateY(0) } 50%{ transform: translateY(-14px) } }
.floaty { animation: float 6s ease-in-out infinite; }

/* Glow pulse */
@keyframes glowPulse { 0%,100%{ box-shadow: 0 0 30px rgba(0,119,255,.3) } 50%{ box-shadow: 0 0 60px rgba(0,119,255,.55) } }
.glow { animation: glowPulse 3.5s ease-in-out infinite; }

/* Shine sweep across metallic surfaces */
.shine { position: relative; overflow: hidden; }
.shine::after { content:""; position: absolute; top: 0; left: -120%; width: 60%; height: 100%;
  background: linear-gradient(120deg, transparent, rgba(255,255,255,.35), transparent); transform: skewX(-20deg); }
.shine:hover::after { animation: shineSweep 1s var(--ease); }
@keyframes shineSweep { to { left: 130%; } }

/* Fade up for hero entrance */
@keyframes fadeUp { from { opacity: 0; transform: translateY(40px); } to { opacity: 1; transform: none; } }
.hero__inner > * { opacity: 0; animation: fadeUp .9s var(--ease) forwards; }
.hero__inner .eyebrow { animation-delay: .15s; }
.hero__inner .hero__title { animation-delay: .30s; }
.hero__inner .hero__sub { animation-delay: .45s; }
.hero__inner .hero__actions { animation-delay: .60s; }
.hero__inner .hero__trust { animation-delay: .75s; }

/* Gradient text shift */
@keyframes gradShift { 0%{ background-position: 0% 50% } 50%{ background-position: 100% 50% } 100%{ background-position: 0% 50% } }
.grad-animate { background-size: 200% 200%; animation: gradShift 6s ease infinite; }

/* Counting number tick */
.counting { font-variant-numeric: tabular-nums; }

/* Page transition fade-in */
.page-fade { animation: pageFade .6s var(--ease); }
@keyframes pageFade { from { opacity: 0; } to { opacity: 1; } }

/* Underline grow link */
.link-grow { position: relative; }
.link-grow::after { content:""; position: absolute; left: 0; bottom: -2px; width: 100%; height: 2px; background: var(--grad-accent); transform: scaleX(0); transform-origin: right; transition: transform .35s var(--ease); }
.link-grow:hover::after { transform: scaleX(1); transform-origin: left; }

/* Tilt hover for media */
.tilt { transition: transform .4s var(--ease); }
.tilt:hover { transform: perspective(800px) rotateX(2deg) rotateY(-2deg) translateY(-6px); }

/* Spark particles (decorative for waterjet sections) */
@keyframes spark { 0%{ transform: translateY(0) scale(1); opacity: .9 } 100%{ transform: translateY(-60px) scale(0); opacity: 0 } }
