/* ===== ANIMATIONS ===== */
@keyframes fadeInUp { from { opacity:0; transform:translateY(30px); } to { opacity:1; transform:translateY(0); } }
@keyframes fadeInDown { from { opacity:0; transform:translateY(-20px); } to { opacity:1; transform:translateY(0); } }
@keyframes slideInLeft { from { opacity:0; transform:translateX(-30px); } to { opacity:1; transform:translateX(0); } }
@keyframes slideInRight { from { opacity:0; transform:translateX(30px); } to { opacity:1; transform:translateX(0); } }
@keyframes scaleIn { from { opacity:0; transform:scale(0.9); } to { opacity:1; transform:scale(1); } }
@keyframes scrollWheel { 0%,100%{transform:translateY(0);opacity:1} 50%{transform:translateY(8px);opacity:0.3} }
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.5} }
@keyframes spin { to{transform:rotate(360deg)} }
@keyframes shimmer { 0%{background-position:200% 0} 100%{background-position:-200% 0} }
@keyframes float { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-10px)} }
@keyframes particle { 0%{transform:translateY(100vh) scale(0);opacity:0} 10%{opacity:1} 90%{opacity:0.8} 100%{transform:translateY(-10vh) scale(1.2);opacity:0} }
@keyframes gradientShift { 0%,100%{background-position:0% 50%} 50%{background-position:100% 50%} }
@keyframes countUp { from{opacity:0;transform:translateY(10px)} to{opacity:1;transform:translateY(0)} }
@keyframes checkmark { 0%{stroke-dashoffset:50} 100%{stroke-dashoffset:0} }

.fade-in-up { opacity:0; animation:fadeInUp 0.7s ease forwards; animation-delay:var(--delay,0s); }
.fade-in { opacity:0; animation:scaleIn 0.5s ease forwards; }
.float-anim { animation:float 4s ease-in-out infinite; }

/* Skeleton loading */
.skeleton { background:linear-gradient(90deg,rgba(255,255,255,0.05) 0%,rgba(255,255,255,0.1) 50%,rgba(255,255,255,0.05) 100%); background-size:200% 100%; animation:shimmer 1.5s infinite; border-radius:8px; }

/* Particle */
.particle { position:absolute; border-radius:50%; pointer-events:none; animation:particle linear infinite; }

/* Page transitions */
.page-enter { animation:fadeInUp 0.5s ease; }

/* Hover glow */
.hover-glow:hover { box-shadow:0 0 20px rgba(201,162,39,0.3); }

/* Animated gradient text */
.text-animated-gradient {
  background:linear-gradient(270deg,#C9A227,#F0C040,#FFD700,#C9A227);
  background-size:300% 300%;
  -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text;
  animation:gradientShift 4s ease infinite;
}

/* Loading spinner */
.spinner { width:32px; height:32px; border:3px solid rgba(201,162,39,0.2); border-top-color:var(--gold-500); border-radius:50%; animation:spin 0.8s linear infinite; }

/* Success checkmark */
.checkmark { stroke-dasharray:50; stroke-dashoffset:50; animation:checkmark 0.5s ease forwards 0.2s; }

/* Pulse badge */
.pulse-dot { position:relative; }
.pulse-dot::after { content:''; position:absolute; top:-2px; right:-2px; width:8px; height:8px; background:var(--emerald); border-radius:50%; border:2px solid var(--navy-900); animation:pulse 2s infinite; }

/* Transition classes */
.transition-all { transition:var(--transition); }
.hover-lift:hover { transform:translateY(-4px); }
.hover-scale:hover { transform:scale(1.03); }
