/* ============================================================
   PERFORMANS / AKICI SCROLL OPTİMİZASYONLARI
   Amaç: bölümler arası kaydırmada takılma ve titremeyi gidermek.
   Bu dosya en sona yüklenir; üstteki kuralları bilinçli olarak ezer.
   ============================================================ */

/* 1) REPAINT İZOLASYONU
   Her bölümün boyama (paint) ve yerleşim (layout) hesabı kendi kutusuyla
   sınırlı kalır. Böylece bir bölüm yeniden boyanırken komşu bölümler
   etkilenmez -> scroll sırasında titreme azalır. */
.slider_section,
.service_section,
.about_section,
.why_section,
.team_section,
.client_section,
.referanslar_section,
.info_section,
.footer_section {
  contain: layout paint;
}

/* 2) EKRAN DIŞI BÖLÜMLERİN ANİMASYONLARINI DURAKLAT
   Aşağıdaki .is-offscreen sınıfı, bölüm görünüm alanı dışındayken JS
   (IntersectionObserver) tarafından eklenir. O bölümdeki tüm sürekli
   animasyonlar duraklatılır -> compositor/main-thread yükü düşer, görünen
   bölümün scroll'u akıcılaşır. Yerleşim (layout) değişmediği için kayma/
   sıçrama RİSKİ YOKTUR. */
.is-offscreen,
.is-offscreen *,
.is-offscreen *::before,
.is-offscreen *::after,
.is-offscreen::before,
.is-offscreen::after {
  animation-play-state: paused !important;
}

/* 3) STICKY HEADER DÜZELTMESİ
   'position' geçerli bir will-change değeri değil; ayrıca background-color /
   box-shadow için will-change tarayıcıyı sürekli katman yeniden hazırlamaya
   zorlayıp scroll'da titremeye yol açar. Header'ı kendi sabit GPU katmanında
   tutuyoruz ve gereksiz will-change ipuçlarını kaldırıyoruz. */
.header_section {
  will-change: auto;
  transform: translateZ(0);
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
}

/* 4) HERO'DAKI PAHALI BLUR ANİMASYONU
   .img-box::before öğesi filter: blur(20px) taşıyor; üstüne pulse ölçek
   animasyonu her karede 20px bulanıklığı yeniden hesaplattırıyor (çok pahalı).
   Bulanıklığı sabit bırakıyoruz; görsel parıltı korunur, maliyet kalkar. */
.slider_section .img-box::before {
  animation: none !important;
}

/* 5) SÜREKLI ANİMASYONLU ÖĞELERİ COMPOSITOR'A AL
   transform ile sürekli hareket eden hero görselini kendi GPU katmanında
   tutarak main-thread'i meşgul etmesini engelliyoruz. */
.slider_section .img-box img {
  will-change: transform;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
}

/* 6) HAREKET AZALTMA TERCİHİ
   İşletim sisteminde "reduce motion" açık olan kullanıcılar için tüm
   süslü animasyon/geçişleri etkisiz kılarız (erişilebilirlik + performans). */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}
