/* ==========================================================================
   DEBUCKS YAZILIM — ANIMATIONS
   ========================================================================== */

@keyframes blob-float {
  0%   { transform: translateX(-50%) translateY(0) scale(1); }
  50%  { transform: translateX(-46%) translateY(40px) scale(1.08); }
  100% { transform: translateX(-54%) translateY(-20px) scale(0.96); }
}

@keyframes blink { 50% { opacity: 0; } }

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

@keyframes fade-up {
  from { opacity: 0; transform: translateY(28px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes scale-in {
  from { opacity: 0; transform: scale(0.94); }
  to   { opacity: 1; transform: scale(1); }
}

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

@keyframes spin-slow {
  to { transform: rotate(360deg); }
}

@keyframes page-in {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: translateY(0); }
}
body { animation: page-in .6s var(--ease-out); }

/* Scroll reveal utility — toggled by animations.js via IntersectionObserver */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .8s var(--ease-out), transform .8s var(--ease-out);
}
.reveal.is-visible { opacity: 1; transform: translateY(0); }

.reveal-scale { opacity: 0; transform: scale(0.94); transition: opacity .7s var(--ease-out), transform .7s var(--ease-out); }
.reveal-scale.is-visible { opacity: 1; transform: scale(1); }

.reveal-stagger > * { opacity: 0; transform: translateY(24px); transition: opacity .6s var(--ease-out), transform .6s var(--ease-out); }
.reveal-stagger.is-visible > * { opacity: 1; transform: translateY(0); }
.reveal-stagger.is-visible > *:nth-child(1) { transition-delay: .05s; }
.reveal-stagger.is-visible > *:nth-child(2) { transition-delay: .12s; }
.reveal-stagger.is-visible > *:nth-child(3) { transition-delay: .19s; }
.reveal-stagger.is-visible > *:nth-child(4) { transition-delay: .26s; }
.reveal-stagger.is-visible > *:nth-child(5) { transition-delay: .33s; }
.reveal-stagger.is-visible > *:nth-child(6) { transition-delay: .40s; }

.floaty { animation: float-y 6s ease-in-out infinite; }

/* Magnetic buttons — transform driven by JS custom properties */
.magnetic { transition: transform .25s var(--ease-out); transform: translate(var(--mx, 0), var(--my, 0)); }

/* Cursor glow */
#cursor-glow {
  position: fixed; top: 0; left: 0; width: 420px; height: 420px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(139,92,246,.14) 0%, rgba(139,92,246,0) 70%);
  pointer-events: none; z-index: 5;
  transform: translate(-50%, -50%);
  will-change: transform;
}

/* Ripple */
.ripple { position: relative; overflow: hidden; }
.ripple-effect {
  position: absolute; border-radius: 50%;
  background: rgba(255,255,255,.35);
  transform: scale(0); animation: ripple .6s var(--ease-out);
  pointer-events: none;
}
@keyframes ripple { to { transform: scale(2.6); opacity: 0; } }

@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal-scale, .reveal-stagger > *, body { animation: none !important; transition: none !important; opacity: 1 !important; transform: none !important; }
}
