﻿/* ═══════════════════════════════════════════════
   TradeAIStack - assets/css/animations.css
   All keyframes & animation utilities
   @package TradeAIStack v1.0.0
═══════════════════════════════════════════════ */

@keyframes fadeUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes slideR{from{opacity:0;transform:translateX(-36px)}to{opacity:1;transform:translateX(0)}}
@keyframes slideL{from{opacity:0;transform:translateX(36px)}to{opacity:1;transform:translateX(0)}}
@keyframes scaleUp{from{opacity:0;transform:scale(.93)}to{opacity:1;transform:scale(1)}}
@keyframes marquee{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}
@keyframes pulseRing{0%{transform:scale(1);opacity:.7}100%{transform:scale(1.8);opacity:0}}
@keyframes gradShift{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes spinSlow{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@keyframes shimmerBar{0%{background-position:-600px 0}100%{background-position:600px 0}}
@keyframes borderPulse{0%,100%{box-shadow:0 0 0 0 rgba(249,115,22,0)}50%{box-shadow:0 0 0 6px rgba(249,115,22,.12)}}

/* Scroll Reveal */
.reveal{opacity:0;transform:translateY(28px);transition:opacity .75s ease,transform .75s cubic-bezier(.22,1,.36,1)}
.reveal.vis{opacity:1;transform:translateY(0)}
.reveal-r{opacity:0;transform:translateX(-28px);transition:opacity .75s ease,transform .75s cubic-bezier(.22,1,.36,1)}
.reveal-r.vis{opacity:1;transform:translateX(0)}
.reveal-l{opacity:0;transform:translateX(28px);transition:opacity .75s ease,transform .75s cubic-bezier(.22,1,.36,1)}
.reveal-l.vis{opacity:1;transform:translateX(0)}

/* Skeleton shimmer (for JS loading states) */
.skeleton{background:linear-gradient(90deg,#f1f5f9 25%,#e2e8f0 50%,#f1f5f9 75%);background-size:600px 100%;animation:shimmerBar 1.5s infinite}

/* Float animation for decorative elements */
.float{animation:float 4s ease-in-out infinite}

/* Gradient border glow for featured cards */
.glow-orange{animation:borderPulse 2.5s ease-in-out infinite}
