/* ==========================================================================
   Animations & Effects
   ========================================================================== */

/* Shimmer Effect for Buttons */
.btn-primary::before {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 50%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
  transform: skewX(-20deg);
  animation: shimmer 3s infinite;
}

@keyframes shimmer {
  0% { left: -100%; }
  20% { left: 200%; }
  100% { left: 200%; }
}

/* Card Glow Pulse Hover */
.card::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border-radius: inherit;
  box-shadow: inset 0 0 0 1px transparent;
  transition: all 0.4s ease;
  pointer-events: none;
}

.card:hover::after {
  box-shadow: inset 0 0 0 1px rgba(59, 130, 246, 0.5);
}

/* Floating Animation */
.float-anim {
  animation: float 6s ease-in-out infinite;
}

@keyframes float {
  0% { transform: translateY(0px); }
  50% { transform: translateY(-20px); }
  100% { transform: translateY(0px); }
}

/* Custom Cursor */
.cursor-dot {
  width: 8px;
  height: 8px;
  background-color: var(--accent-cyan);
  border-radius: 50%;
  position: fixed;
  top: 0;
  left: 0;
  transform: translate(-50%, -50%);
  pointer-events: none;
  z-index: 9999;
  transition: width 0.2s, height 0.2s, background-color 0.2s;
}

.cursor-outline {
  width: 40px;
  height: 40px;
  border: 1px solid rgba(6, 182, 212, 0.5);
  border-radius: 50%;
  position: fixed;
  top: 0;
  left: 0;
  transform: translate(-50%, -50%);
  pointer-events: none;
  z-index: 9998;
  transition: width 0.2s, height 0.2s, border-color 0.2s;
}

/* Animated Background Mesh/Grid */
.bg-mesh {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-image: 
    linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px);
  background-size: 50px 50px;
  z-index: -1;
  mask-image: radial-gradient(circle at center, black, transparent 80%);
  -webkit-mask-image: radial-gradient(circle at center, black, transparent 80%);
}

/* Glowing Orbs */
.glow-orb {
  position: absolute;
  border-radius: 50%;
  filter: blur(80px);
  z-index: -2;
  opacity: 0.5;
}

.orb-1 {
  width: 400px;
  height: 400px;
  background: var(--accent-violet);
  top: -100px;
  right: -100px;
  animation: float 10s ease-in-out infinite alternate;
}

.orb-2 {
  width: 300px;
  height: 300px;
  background: var(--accent-blue);
  bottom: -50px;
  left: -50px;
  animation: float 8s ease-in-out infinite alternate-reverse;
}

/* Scroll Indicator Bounce */
@keyframes bounce {
  0%, 20%, 50%, 80%, 100% { transform: translateY(0); }
  40% { transform: translateY(-10px); }
  60% { transform: translateY(-5px); }
}

.scroll-indicator {
  animation: bounce 2s infinite;
}

/* Marquee Ticker */
.marquee-container {
  overflow: hidden;
  white-space: nowrap;
  position: relative;
  background: rgba(255, 255, 255, 0.02);
  padding: 1.5rem 0;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}

.marquee-content {
  display: inline-block;
  animation: marquee 30s linear infinite;
}

.marquee-content.reverse {
  animation: marquee-reverse 30s linear infinite;
}

.marquee-item {
  display: inline-block;
  font-family: 'Syne', sans-serif;
  font-size: 1.5rem;
  font-weight: 700;
  margin: 0 2rem;
  color: var(--text-primary);
}

.marquee-item .star {
  color: var(--accent-cyan);
  margin-left: 2rem;
}

@keyframes marquee {
  0% { transform: translateX(0%); }
  100% { transform: translateX(-50%); }
}

@keyframes marquee-reverse {
  0% { transform: translateX(-50%); }
  100% { transform: translateX(0%); }
}
