/* Trendmetrik — markalı yükleme animasyonu (KAPSAMI DARALTILMIŞ / namespaced).
   =========================================================================
   2026-05-29 hotfix (PR loader-scope-narrow):
   Önceki sürüm tüm uygulamadaki spinner'ları GLOBAL override ile (substring
   selector `[class*="loading-spinner"]`, genel `.spinner-icon` / `.spinner-border`
   vb. + `animation: ... infinite !important`) markaya çeviriyordu. Bu:
     - chart/table/buton içi küçük loader'ları, hatta yükleme dışı statik öğeleri
       de yakalayıp sonsuz döndürüyordu → "grafikler/animasyonlar tekrar tekrar
       yükleniyor" algısı,
     - `!important` ile sayfa-özel davranışları eziyordu (global risk).

   YENİ YAKLAŞIM — yalnız BİLİNÇLİ, namespace'li unified-loader hedeflenir:
     - `.tm-unified-loader`, `.tm-loader`, `.tm-loading-spinner`
   Bootstrap `.spinner-border`, buton spinner'ları, `[class*="loading-spinner"]`
   gibi genel/sayfa-özel loader'lara DOKUNULMAZ (kendi stillerinde kalır).
   Tam sayfa "hero" overlay'i (#globalLoadingOverlay) zaten base.html içindeki
   kendi `.tm-brand-loader` / `.tm-pageload-*` stilleriyle çalışır — burada
   tekrar tanımlanmaz.

   base.html'de global.css'ten SONRA yüklenir. */

:root {
  --tm-loader-grad: conic-gradient(from 0deg, #1366e5, #f97316, #7db4f7, #1366e5);
}

/* ─────────────── Bilinçli unified loader (yalnız namespace'li class'lar) ───────────────
   Halka tabanlı marka spinner'ı. SADECE bu class'lar bir loader göstermek için
   kasıtlı eklendiğinde uygulanır; gizli/arka plan öğelerinde bulunmadığından
   istenmeyen "sürekli dönen animasyon" oluşmaz. !important KULLANILMAZ. */
.tm-unified-loader,
.tm-loader,
.tm-loading-spinner {
  border: 0;
  background: var(--tm-loader-grad);
  -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 2.5px));
          mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 2.5px));
  border-radius: 50%;
  animation: tmUnifiedSpin 0.9s linear infinite;
  box-shadow: none;
}

@keyframes tmUnifiedSpin {
  to { transform: rotate(360deg); }
}

/* Erişilebilirlik: hareket azaltma tercihinde animasyonu yavaşlat. */
@media (prefers-reduced-motion: reduce) {
  .tm-unified-loader,
  .tm-loader,
  .tm-loading-spinner {
    animation-duration: 1.8s;
  }
}

/* loader-unify: legacy FULL-SCREEN page overlays never paint their own UI.
   tm-loader-unify.js mirrors their show/hide intent (read from `display`) to
   the single global overlay (#globalLoadingOverlay). Suppressing visibility
   (not display) here removes the transition flash without breaking the
   bridge's intent detection. Scoped in-content loaders (e.g.
   #tableLoadingOverlay, position:absolute inside a card) are intentionally
   left untouched — only the whole-screen blocking overlays are unified. */
#loading-overlay,
#immediateLoadingOverlay {
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
