/* ==========================================================================
   M2Y DECK — Cinematic Animations · Konu-temalı geçişler
   ========================================================================== */

/* ---------- Genel slide transition ---------- */
.reveal[data-transition-speed="default"] .slides section {
  transition: transform 1100ms var(--ease-keynote, cubic-bezier(0.22,1,0.36,1)),
              opacity 900ms var(--ease-keynote);
}

/* ---------- Stagger ---------- */
.reveal .stagger-children > * {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 700ms var(--ease-keynote), transform 800ms var(--ease-keynote);
}
.reveal .stagger-children.is-active > * {
  opacity: 1;
  transform: translateY(0);
}
.reveal .stagger-children.is-active > *:nth-child(1) { transition-delay: 80ms; }
.reveal .stagger-children.is-active > *:nth-child(2) { transition-delay: 180ms; }
.reveal .stagger-children.is-active > *:nth-child(3) { transition-delay: 280ms; }
.reveal .stagger-children.is-active > *:nth-child(4) { transition-delay: 380ms; }
.reveal .stagger-children.is-active > *:nth-child(5) { transition-delay: 480ms; }
.reveal .stagger-children.is-active > *:nth-child(6) { transition-delay: 580ms; }
.reveal .stagger-children.is-active > *:nth-child(7) { transition-delay: 680ms; }
.reveal .stagger-children.is-active > *:nth-child(8) { transition-delay: 780ms; }

/* ---------- Drop drift ---------- */
@keyframes drift {
  0%,100% { transform: translate(0,0) rotate(0deg); }
  50%     { transform: translate(2vw,-1.5vh) rotate(2deg); }
}
.drop { animation: drift 18s ease-in-out infinite; }
.drop.tr { animation-delay: 0s; }
.drop.bl { animation-delay: -6s; }
.drop.cl { animation-delay: -12s; }

/* ---------- Hero entrance ---------- */
@keyframes hero-in {
  0%   { opacity: 0; transform: translateY(60px) scale(0.96); filter: blur(8px); }
  60%  { opacity: 1; filter: blur(0); }
  100% { opacity: 1; transform: translateY(0) scale(1); filter: blur(0); }
}
.reveal .slides section.present .hero-in {
  animation: hero-in 1400ms var(--ease-keynote) both;
}

/* ---------- Chapter title flicker ---------- */
@keyframes chapter-num {
  0%   { opacity: 0; letter-spacing: 0.6em; }
  100% { opacity: 1; letter-spacing: 0.4em; }
}
.reveal .slides section.present .chapter .number {
  animation: chapter-num 1200ms var(--ease-keynote) both;
}
@keyframes chapter-title {
  0%   { opacity: 0; transform: translateY(50px); filter: blur(6px); }
  100% { opacity: 1; transform: translateY(0); filter: blur(0); }
}
.reveal .slides section.present .chapter .title {
  animation: chapter-title 1300ms var(--ease-keynote) 200ms both;
}

/* ---------- Bignum entrance ---------- */
@keyframes bignum-in {
  0%   { opacity: 0; transform: translateX(-30px) scale(0.96); filter: blur(10px); }
  100% { opacity: 1; transform: translateX(0) scale(1); filter: blur(0); }
}
.reveal .slides section.present .bignum {
  animation: bignum-in 1300ms var(--ease-keynote) both;
}

/* ==========================================================================
   KONU-TEMALI GEÇİŞ ANİMASYONLARI
   data-theme attr ile slayt'a sap, geçişe konuya özel hareket ver
   ========================================================================== */

/* Su teması — dalga ripple */
@keyframes theme-water-in {
  0%   { opacity: 0; transform: scale(1.05); filter: blur(8px) hue-rotate(-15deg); }
  100% { opacity: 1; transform: scale(1); filter: blur(0) hue-rotate(0); }
}
.reveal .slides section[data-theme="water"].present {
  animation: theme-water-in 1400ms var(--ease-keynote) both;
}
.reveal .slides section[data-theme="water"].present::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 80% 20%, rgba(49,183,188,0.18) 0%, transparent 30%),
    radial-gradient(circle at 20% 80%, rgba(0,133,128,0.20) 0%, transparent 35%);
  pointer-events: none;
  animation: water-ripple 8s ease-in-out infinite;
  z-index: -1;
}
@keyframes water-ripple {
  0%,100% { transform: scale(1); opacity: 0.7; }
  50%     { transform: scale(1.04); opacity: 1; }
}

/* İklim teması — ısı dalgası */
@keyframes theme-climate-in {
  0%   { opacity: 0; transform: translateY(20px); filter: blur(6px) brightness(1.4); }
  60%  { filter: blur(0) brightness(1.05); }
  100% { opacity: 1; transform: translateY(0); filter: blur(0) brightness(1); }
}
.reveal .slides section[data-theme="climate"].present {
  animation: theme-climate-in 1400ms var(--ease-keynote) both;
}
.reveal .slides section[data-theme="climate"].present::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 50% 110%, rgba(242,143,37,0.18) 0%, transparent 50%),
    radial-gradient(circle at 80% -10%, rgba(234,234,146,0.10) 0%, transparent 40%);
  pointer-events: none;
  animation: heat-shimmer 6s ease-in-out infinite;
  z-index: -1;
}
@keyframes heat-shimmer {
  0%,100% { opacity: 0.85; transform: translateY(0); }
  50%     { opacity: 1.0;  transform: translateY(-8px); }
}

/* Çevre/toprak teması */
@keyframes theme-earth-in {
  0%   { opacity: 0; transform: translateX(-30px) skewX(-2deg); }
  100% { opacity: 1; transform: translateX(0) skewX(0); }
}
.reveal .slides section[data-theme="earth"].present {
  animation: theme-earth-in 1300ms var(--ease-keynote) both;
}
.reveal .slides section[data-theme="earth"].present::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 30% 100%, rgba(48,39,104,0.32) 0%, transparent 55%),
    radial-gradient(circle at 70% 0%, rgba(49,183,188,0.12) 0%, transparent 45%);
  pointer-events: none;
  z-index: -1;
}

/* Acil/uyarı teması — kırmızıya doğru çekim */
@keyframes theme-alert-in {
  0%   { opacity: 0; transform: scale(0.97); filter: hue-rotate(20deg) saturate(1.4); }
  100% { opacity: 1; transform: scale(1); filter: hue-rotate(0) saturate(1); }
}
.reveal .slides section[data-theme="alert"].present {
  animation: theme-alert-in 1300ms var(--ease-keynote) both;
}
.reveal .slides section[data-theme="alert"].present::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 0% 50%, rgba(242,143,37,0.18) 0%, transparent 45%),
    radial-gradient(circle at 100% 50%, rgba(220,80,80,0.14) 0%, transparent 40%);
  pointer-events: none;
  animation: alert-pulse 2.5s ease-in-out infinite;
  z-index: -1;
}
@keyframes alert-pulse {
  0%,100% { opacity: 0.8; }
  50%     { opacity: 1.0; }
}

/* Bilim/veri teması — net tepe vurgusu */
@keyframes theme-data-in {
  0%   { opacity: 0; transform: translateY(40px); filter: blur(10px); }
  100% { opacity: 1; transform: translateY(0); filter: blur(0); }
}
.reveal .slides section[data-theme="data"].present {
  animation: theme-data-in 1300ms var(--ease-keynote) both;
}
.reveal .slides section[data-theme="data"].present::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 50% 50%, rgba(49,183,188,0.16) 0%, transparent 50%);
  pointer-events: none;
  z-index: -1;
}

/* Sonuç teması — kucaklayıcı warm fade */
@keyframes theme-conclusion-in {
  0%   { opacity: 0; transform: scale(1.04); filter: brightness(1.2); }
  100% { opacity: 1; transform: scale(1); filter: brightness(1); }
}
.reveal .slides section[data-theme="conclusion"].present {
  animation: theme-conclusion-in 1500ms var(--ease-keynote) both;
}
.reveal .slides section[data-theme="conclusion"].present::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 50% 100%, rgba(234,234,146,0.16) 0%, transparent 55%),
    radial-gradient(circle at 50% 0%, rgba(49,183,188,0.18) 0%, transparent 50%);
  pointer-events: none;
  z-index: -1;
}

/* ==========================================================================
   FRAGMENT motion variants
   ========================================================================== */

.reveal .fragment.fade-up {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 800ms var(--ease-keynote), transform 900ms var(--ease-keynote);
}
.reveal .fragment.fade-up.visible {
  opacity: 1;
  transform: translateY(0);
}
.reveal .fragment.zoom-in {
  opacity: 0;
  transform: scale(0.92);
  transition: opacity 700ms var(--ease-keynote), transform 900ms var(--ease-keynote);
}
.reveal .fragment.zoom-in.visible {
  opacity: 1;
  transform: scale(1);
}
