/*
 * Zetuya performans kuralları (public/js/perf.js ile birlikte; her sayfada yüklenir).
 * Boşta (30 sn etkileşim yok / sekme gizli): CSS animasyonları durur; ilk dokunuşta kaldığı yerden sürer.
 * [data-anim-keep] olanlar (yükleniyor göstergesi, maskotlar: Dotto-san NPC gibi donmasın) boşta da sürer.
 * Hafif mod (zayıf cihaz ya da kullanıcı seçimi): dekoratif animasyon yok, arka plan bulanıklığı yok.
 * Anlam taşıyan animasyonlar (yükleniyor göstergesi, çağrılan sıra numarası) [data-anim-keep] ile korunur;
 * meşgul düğmenin dönen göstergesi ([aria-busy="true"], panel UI kiti) de korunur.
 */
html[data-idle="1"] *:not([data-anim-keep]),
html[data-idle="1"] *:not([data-anim-keep])::before,
html[data-idle="1"] *:not([data-anim-keep])::after {
    animation-play-state: paused !important;
}

html[data-perf="lite"] *:not([data-anim-keep]):not(.animate-spin):not([aria-busy='true']),
html[data-perf="lite"] *:not([data-anim-keep]):not(.animate-spin):not([aria-busy='true'])::before,
html[data-perf="lite"] *:not([data-anim-keep]):not(.animate-spin):not([aria-busy='true'])::after {
    animation: none !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
}
html[data-perf="lite"] { scroll-behavior: auto !important; }

/* Dengeli mod (iPhone / iPad'de otomatik, perf.js): animasyonlar ve 3B yerinde; WebKit'te kaydırmayı takan efektler yok.
   - Arka plan bulanıklığı: yapışkan/sabit bulanık katman, altından geçen içeriği her karede yeniden bulanıklaştırır.
   - Kaydırma yumuşatması: klavye açılırken yapılan kod içi kaydırmalar iOS'un kendi kaydırmasıyla çekişiyordu. */
html[data-perf="balanced"] *,
html[data-perf="balanced"] *::before,
html[data-perf="balanced"] *::after {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
}
html[data-perf="balanced"], html[data-perf="balanced"] body,
html[data-perf="lite"] body { scroll-behavior: auto !important; }
/* Büyük bulanık dekor parıltıları (filter: blur 40–150 px, rounded-full): her biri ekran dışı bir tampon demek;
   telefonda kaydırırken karo karo yeniden çizilir. Dengeli ve hafif modda gösterilmez (yalnızca süs). */
html:not([data-perf="full"]) .rounded-full.blur-2xl,
html:not([data-perf="full"]) .rounded-full.blur-3xl,
html:not([data-perf="full"]) .rounded-full.blur-\[60px\],
html:not([data-perf="full"]) .rounded-full.blur-\[100px\],
html:not([data-perf="full"]) .rounded-full.blur-\[120px\],
html:not([data-perf="full"]) .rounded-full.blur-\[130px\],
html:not([data-perf="full"]) .rounded-full.blur-\[140px\],
html:not([data-perf="full"]) .rounded-full.blur-\[150px\] { display: none !important; }
/* Ağır gölgeler daha ucuz: 50 px bulanık gölge yerine kısa, koyu gölge (görünüm aynı kalır) */
html[data-perf="balanced"] .shadow-2xl {
    --tw-shadow: 0 12px 24px -10px rgb(0 0 0 / 0.55);
    --tw-shadow-colored: 0 12px 24px -10px var(--tw-shadow-color);
}
html[data-perf="balanced"] .glass,
html[data-perf="balanced"] .glass-panel,
html[data-perf="balanced"] .glass-card { box-shadow: 0 6px 16px -6px rgba(0, 0, 0, 0.5); }

/* Ekran klavyesi açıkken (perf.js → <html data-kb>) alttaki sabit "Diğer" düğmesi gizlenir: iOS'ta klavye açılınca
   görünen alan kaydığı için sabit alt düğme yazı alanının üstüne biniyordu. */
html[data-kb] .nav-pill-wrap { display: none !important; }
/* Klavye açıkken tam ekran pencere katmanları (fixed inset-0, çoğu kendi içinde kayar) klavyenin üstünde biter:
   formun alt kısmı (Kaydet / Vazgeç) klavyenin arkasında kalmaz, kaydırılarak erişilir. */
html[data-kb] .fixed.inset-0:not(.pointer-events-none) { bottom: var(--kb, 0px); }

/* Azaltılmış hareket (işletim sistemi ayarı): dekoratif animasyonlar bir kerede son karesine gider, geçişler anlık.
   Anlam taşıyanlar ([data-anim-keep], dönen yükleniyor göstergesi) aynen sürer. */
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto !important; }
    *:not([data-anim-keep]):not(.animate-spin):not([aria-busy='true']),
    *:not([data-anim-keep]):not(.animate-spin):not([aria-busy='true'])::before,
    *:not([data-anim-keep]):not(.animate-spin):not([aria-busy='true'])::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}
