/*! motion.css — web-motion-kit 1.0
 * Lenis'in önerdiği CSS + kaydırma kilidi + preloader / geçiş örtüsü / reveal temel durumları.
 * Görünüm (renk, yazı, düzen) projeye özeldir; burada yalnızca mekanik vardır.
 * Renkleri projede şu değişkenlerle verin: --pl-bg, --pl-fg (preloader), --pt-bg (geçiş).
 */

/* ---------- Lenis (lenis/dist/lenis.css 1.3.26 ile aynı kurallar) ---------- */
html.lenis,
html.lenis body { height: auto; }
.lenis:not(.lenis-autoToggle).lenis-stopped { overflow: clip; }
.lenis [data-lenis-prevent],
.lenis [data-lenis-prevent-wheel],
.lenis [data-lenis-prevent-touch],
.lenis [data-lenis-prevent-vertical],
.lenis [data-lenis-prevent-horizontal] { overscroll-behavior: contain; }
.lenis.lenis-smooth iframe { pointer-events: none; }
.lenis.lenis-autoToggle {
  transition-property: overflow;
  transition-duration: 1ms;
  transition-behavior: allow-discrete;
}

/* Lenis kendi animasyonunu yapar; CSS smooth scroll ile çakışmasın */
html.lenis,
html.lenis body { scroll-behavior: auto; }

/* ---------- kaydırma kilidi ----------
 * scrollbar-gutter: kilitlenince kaydırma çubuğu kaybolup sayfa yana kaymasın.
 * overflow:clip gutter'ı korumaz; bu yüzden durdurulmuş Lenis'te de hidden kullanılır. */
html { scrollbar-gutter: stable; }
html.sm-locked,
html.lenis.lenis-stopped:not(.lenis-autoToggle) { overflow: hidden; }

/* ---------- preloader ---------- */
.preloader { display: none; }
html.is-preloading .preloader,
.preloader.is-running {
  display: flex;
  position: fixed;
  inset: 0;
  z-index: 10000;
  background: var(--pl-bg, #0e0e0e);
  color: var(--pl-fg, #f2f2f2);
}
/* emniyet: preloader.js hiç çalışmazsa 10 sn sonra kendiliğinden kalkar (motion-head.js bekletmesiyle aynı) */
html.is-preloading .preloader { animation: sm-failsafe-hide 0.01s linear 10s forwards; }
.preloader.is-running { animation: none; }
/* curtain çıkışı: sütun paneller içeriğin arkasında, rengi --pl-panel */
.preloader__panels { position: absolute; inset: 0; display: flex; }
.preloader__panels > * { flex: 1 1 0; margin-right: -1px; background: var(--pl-panel, var(--pl-bg, #0e0e0e)); }
.preloader > :not(.preloader__panels) { position: relative; z-index: 1; }

/* ---------- sayfa geçiş örtüsü ---------- */
.pt-overlay {
  position: fixed;
  inset: 0;
  z-index: 9990;
  pointer-events: none;
  visibility: hidden;
}
.pt-overlay.is-active,
html.is-arriving .pt-overlay {
  visibility: visible;
  pointer-events: auto; /* geçiş sırasında tıklamaları yut */
}
html.is-arriving .pt-overlay { animation: sm-failsafe-hide 0.01s linear 6s forwards; }
.pt-panel {
  position: absolute;
  inset: 0;
  background: var(--pt-bg, #0e0e0e);
}
.pt-overlay[data-variant="panels"] { display: flex; }
.pt-overlay[data-variant="panels"] .pt-panel { position: relative; inset: auto; flex: 1 1 0; margin-right: -1px; }

@keyframes sm-failsafe-hide {
  to { visibility: hidden; opacity: 0; pointer-events: none; }
}

/* ---------- reveal (reveal.js) ----------
 * Yalnızca opacity gizlenir: ekran okuyucular içeriği okumaya devam eder.
 * reveal.js yüklenmezse 3 sn sonra içerik kendiliğinden görünür. */
html.js:not(.motion-off):not(.reveal-off) [data-reveal] { opacity: 0; }
html.js:not(.motion-off):not(.reveal-off) [data-reveal="group"] { opacity: 1; }
html.js:not(.motion-off):not(.reveal-off) [data-reveal="group"] > * { opacity: 0; }
html.js:not(.reveal-ready):not(.motion-off) [data-reveal],
html.js:not(.reveal-ready):not(.motion-off) [data-reveal="group"] > * {
  animation: sm-failsafe-show 0.01s linear 3s forwards;
}
@keyframes sm-failsafe-show { to { opacity: 1; } }

/* SplitText satır maskesi (reveal.js linesClass: "reveal-line"): overflow:clip olan maske
 * İ, Ğ, Ş, Ç, Ö, Ü, g, y gibi harflerin taşan kısmını keser (satır aralığı 1.15'te bile).
 * Dolgu + eksi kenar boşluğu düzeni bozmadan maskeyi büyütür (1.0 altı satır aralığında da test edildi). */
.reveal-line-mask { padding-block: 0.14em; margin-block: -0.14em; }
