/* =====================================================================
   ANIMATION SYSTEM
   Reveal-on-scroll ditenagai GSAP + ScrollTrigger (lihat js/core/reveal.js).
   File ini cuma nyimpen state awal (elemen mulai tersembunyi sebelum
   GSAP ambil alih) dan animasi kecil yang cukup pakai CSS murni.
   ===================================================================== */

@keyframes toastUp{
  from{ opacity: 0; transform: translate(-50%, 8px); }
  to{ opacity: 1; transform: translate(-50%, 0); }
}
@keyframes revealUp{
  from{ opacity: 0; transform: translateY(14px); }
  to{ opacity: 1; transform: translateY(0); }
}

/* state awal sebelum GSAP reveal.js jalan -- dicegah nge-flash konten
   sebelum animasinya sempat kepasang */
[data-reveal]{
  opacity: 0;
  transform: translateY(16px);
}

#main-panel:not([hidden]){
  animation: revealUp var(--dur-med) var(--ease-out);
}
.toast.show{
  animation: toastUp var(--dur-fast) var(--ease-out);
}
.pane-in{
  animation: revealUp var(--dur-med) var(--ease-out);
}

@media (prefers-reduced-motion: reduce){
  [data-reveal]{ opacity: 1; transform: none; }
  #main-panel:not([hidden]), .toast.show, .pane-in{ animation: none; }
  *{ transition-duration: .001ms !important; }
}
