/* ═══════════════════════════════════════════════════════════
   ANİMASYONLAR — GSAP + CSS Hibrit
   ═══════════════════════════════════════════════════════════ */

/* ── Reveal sistemi (GSAP yönetiminde) ── */
.reveal, .reveal-left, .reveal-right, .reveal-soft {
  will-change: opacity, transform;
}
.reveal-static {
  opacity: 1 !important;
  transform: none !important;
}
.reveal.visible, .reveal-left.visible, .reveal-right.visible {
  opacity: 1;
  transform: none;
}
.stagger-children > * { will-change: opacity, transform; }
.stagger-children.visible > * { opacity: 1; transform: none; }

/* ── Hero içerik giriş animasyonları ── */
.hero-institution {
  animation: fadeSlideDown 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.05s both;
}
.hero-title {
  animation: fadeSlideUp 0.9s cubic-bezier(0.16, 1, 0.3, 1) 0.12s both;
}
.hero-subtitle {
  animation: fadeSlideUp 0.9s cubic-bezier(0.16, 1, 0.3, 1) 0.22s both;
}
.hero-bio {
  animation: fadeSlideUp 0.9s cubic-bezier(0.16, 1, 0.3, 1) 0.30s both;
}
.hero-actions {
  animation: fadeSlideUp 0.9s cubic-bezier(0.16, 1, 0.3, 1) 0.38s both;
}
.hero-stats {
  animation: fadeSlideUp 0.9s cubic-bezier(0.16, 1, 0.3, 1) 0.46s both;
}

@keyframes fadeSlideDown {
  from { opacity: 0; transform: translateY(-16px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes fadeSlideUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── Sayfa geçişi ── */
.page-transition {
  animation: pageIn 0.45s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes pageIn {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── Kart hover geçişleri ── */
.card, .vaka-card {
  transition:
    transform 0.36s cubic-bezier(0.4, 0, 0.2, 1),
    box-shadow 0.36s cubic-bezier(0.4, 0, 0.2, 1);
}

/* ── Pulse dot (canlı gösterge) ── */
.pulse-dot {
  width: 8px;
  height: 8px;
  background: var(--color-primary);
  border-radius: 50%;
  animation: pulseDot 2.2s ease-in-out infinite;
}
@keyframes pulseDot {
  0%, 100% { opacity: 1; transform: scale(1); box-shadow: 0 0 0 0 rgba(155,27,27,0.4); }
  50%       { opacity: 0.6; transform: scale(1.5); box-shadow: 0 0 0 6px rgba(155,27,27,0); }
}

/* ── EKG çizme animasyonu (SVG .ekg-line sınıfı için) ──
   Statik SVG'lerdeki EKG elementleri (footer, sayfalar)
   CSS ile kontrol edilir; hero EKG JS+CSS hibrit.
   ──────────────────────────────────────────────────────── */
.ekg-line {
  stroke: var(--ekg-color, #C0292E);
  stroke-linecap: round;
  stroke-linejoin: round;
  filter: drop-shadow(0 0 3px var(--ekg-glow, rgba(192,41,46,0.45)));
  stroke-dasharray: 1200;
  stroke-dashoffset: 1200;
  animation: ekgDraw 3.2s cubic-bezier(0.4, 0, 0.2, 1) infinite;
}

/* EKG draw: yazılıyor → görünür → siliniyor */
@keyframes ekgDraw {
  0%   { stroke-dashoffset: 1200; opacity: 0; }
  8%   { opacity: 1; }
  48%  { stroke-dashoffset: 0; opacity: 1; }
  52%  { stroke-dashoffset: 0; opacity: 1; }
  100% { stroke-dashoffset: -1200; opacity: 0; }
}

/* Footer EKG statik path — draw animasyonu yok, sadece soluklaşır */
.footer-ekg .ekg-line {
  animation: ekgFade 5s ease-in-out 1s forwards;
  stroke-dashoffset: 0;
}
@keyframes ekgFade {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* ── Orb float (hero arka plan) ── */
@keyframes orbFloat {
  0%, 100% { transform: translate(0, 0) scale(1); }
  33%       { transform: translate(28px, -18px) scale(1.04); }
  66%       { transform: translate(-18px, 14px) scale(0.96); }
}

/* ── Hero logo halka ── */
@keyframes heroGlow {
  0%, 100% { opacity: 0.55; transform: scale(1); }
  50%       { opacity: 0.9; transform: scale(1.07); }
}
@keyframes heroRing {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}
@keyframes heroLogoFloat {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(-10px); }
}

/* ── Preloader pulse ── */
@keyframes preloaderPulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50%       { transform: scale(1.04); opacity: 0.82; }
}

/* ── Hero EKG beat indicator ── */
@keyframes ekgBeat {
  0%   { box-shadow: 0 0 0 0 var(--ekg-glow); transform: translateY(-50%) scale(1); }
  25%  { box-shadow: 0 0 0 8px rgba(192,41,46,0); transform: translateY(-50%) scale(1.4); }
  50%  { box-shadow: 0 0 0 0 rgba(192,41,46,0); transform: translateY(-50%) scale(1); }
  75%  { box-shadow: 0 0 0 4px rgba(192,41,46,0.08); transform: translateY(-50%) scale(1.15); }
  100% { box-shadow: 0 0 0 0 rgba(192,41,46,0); transform: translateY(-50%) scale(1); }
}

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

/* ── Reduced motion ── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
