/* ============================================================
   LX ANIMATIONS — Keyframes + scroll-reveal helpers
   IntersectionObserver helper'ı ile uyumlu (lx-core.js içinde)
   ============================================================ */

/* ----------------------------------------------------------
   KEYFRAMES — Liman'ın imza hareketleri
   ---------------------------------------------------------- */

/* Pulse — eyebrow dot, online indicator */
@keyframes lx-pulse {
  0%, 100% { opacity: 1;   transform: scale(1); }
  50%      { opacity: 0.5; transform: scale(0.85); }
}

/* Glow pulse — hero title, premium emphasis */
@keyframes lx-glow-pulse {
  0%, 100% { filter: drop-shadow(0 0 12px rgba(59, 130, 246, 0.30)); }
  50%      { filter: drop-shadow(0 0 24px rgba(80, 227, 255, 0.55)); }
}

/* Wave — footer/hero parallax */
@keyframes lx-wave-move {
  0%   { transform: translate3d(-90px, 0, 0); }
  100% { transform: translate3d(85px,  0, 0); }
}

/* Float — hero floating elements */
@keyframes lx-float {
  0%, 100% { transform: translate(0, 0); }
  50%      { transform: translate(-12px, -16px); }
}

/* Float subtle — fewer pixels for tighter context */
@keyframes lx-float-subtle {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-8px); }
}

/* Shimmer — loading skeleton */
@keyframes lx-shimmer {
  0%   { background-position: -200% 0; }
  100% { background-position:  200% 0; }
}

/* Aurora — bg gradient animation */
@keyframes lx-aurora {
  0%, 100% { background-position: 0% 50%; }
  50%      { background-position: 100% 50%; }
}

/* Border rotate — featured card glow border */
@keyframes lx-border-rotate {
  0%   { background-position: 0% 50%; }
  100% { background-position: 200% 50%; }
}

/* Fade-up — scroll reveal */
@keyframes lx-fade-up {
  from { opacity: 0; transform: translateY(30px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes lx-fade-down {
  from { opacity: 0; transform: translateY(-30px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes lx-fade-left {
  from { opacity: 0; transform: translateX(-30px); }
  to   { opacity: 1; transform: translateX(0); }
}

@keyframes lx-fade-right {
  from { opacity: 0; transform: translateX(30px); }
  to   { opacity: 1; transform: translateX(0); }
}

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

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

@keyframes lx-blur-in {
  from { opacity: 0; filter: blur(20px); transform: translateY(20px); }
  to   { opacity: 1; filter: blur(0);    transform: translateY(0); }
}

/* Cursor blink — terminal */
@keyframes lx-cursor-blink {
  0%, 50%   { opacity: 1; }
  51%, 100% { opacity: 0; }
}

/* Marquee — referans logoları */
@keyframes lx-marquee {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

/* Spin — loaders */
@keyframes lx-spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* Wave expand — page-loader rings */
@keyframes lx-wave-expand {
  0%   { width: 0%;   height: 0%;   opacity: 1; }
  100% { width: 200%; height: 200%; opacity: 0; }
}

/* ----------------------------------------------------------
   SCROLL REVEAL — IntersectionObserver target classes
   JS, görünür olduğunda .lx-in-view ekler.
   ---------------------------------------------------------- */

[data-lx-reveal] {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 700ms var(--lx-ease-out),
              transform 700ms var(--lx-ease-out),
              filter 700ms var(--lx-ease-out);
  will-change: opacity, transform;
}

[data-lx-reveal].lx-in-view {
  opacity: 1;
  transform: translateY(0);
}

[data-lx-reveal='fade']         { transform: none; }
[data-lx-reveal='fade-up']      { transform: translateY(30px); }
[data-lx-reveal='fade-down']    { transform: translateY(-30px); }
[data-lx-reveal='fade-left']    { transform: translateX(-30px); }
[data-lx-reveal='fade-right']   { transform: translateX(30px); }
[data-lx-reveal='zoom']         { transform: scale(0.92); }
[data-lx-reveal='blur']         { filter: blur(16px); transform: translateY(20px); }

[data-lx-reveal].lx-in-view {
  transform: translate(0) scale(1);
  filter: blur(0);
}

/* Stagger delays */
[data-lx-delay='1']  { transition-delay: 100ms; }
[data-lx-delay='2']  { transition-delay: 200ms; }
[data-lx-delay='3']  { transition-delay: 300ms; }
[data-lx-delay='4']  { transition-delay: 400ms; }
[data-lx-delay='5']  { transition-delay: 500ms; }
[data-lx-delay='6']  { transition-delay: 600ms; }
[data-lx-delay='7']  { transition-delay: 700ms; }
[data-lx-delay='8']  { transition-delay: 800ms; }

/* ----------------------------------------------------------
   ANIMATION HELPERS (declarative)
   ---------------------------------------------------------- */
.lx-anim-pulse        { animation: lx-pulse 2s var(--lx-ease-in-out) infinite; }
.lx-anim-glow-pulse   { animation: lx-glow-pulse 3s var(--lx-ease-in-out) infinite; }
.lx-anim-float        { animation: lx-float 8s var(--lx-ease-in-out) infinite; }
.lx-anim-float-subtle { animation: lx-float-subtle 6s var(--lx-ease-in-out) infinite; }
.lx-anim-spin         { animation: lx-spin 1.5s linear infinite; }

/* prefers-reduced-motion guard
   html.lx-motion-force set edilirse OS/tarayıcı ayarı bypass edilir. */
@media (prefers-reduced-motion: reduce) {
  html:not(.lx-motion-force) *,
  html:not(.lx-motion-force) *::before,
  html:not(.lx-motion-force) *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }

  html:not(.lx-motion-force) [data-lx-reveal] {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
  }
}
