/* v4.61 — Animasi saat digulir (scroll reveal) + menu HP.
   Kelas .gerak hanya dipasang oleh app.js, jadi kalau JS gagal semua isi
   tetap tampil normal. Pita harga (.tiker), hero, header, dan form tidak
   pernah dianimasikan. */
.gerak-siap .gerak{opacity:0;transform:translate3d(0,26px,0);transition:opacity .7s cubic-bezier(.2,.65,.25,1),transform .7s cubic-bezier(.2,.65,.25,1);transition-delay:var(--gerak-tunda,0ms);will-change:opacity,transform}
.gerak-siap .gerak.gerak-kiri{transform:translate3d(-28px,0,0)}
.gerak-siap .gerak.gerak-kanan{transform:translate3d(28px,0,0)}
.gerak-siap .gerak.gerak-zoom{transform:scale(.96)}
.gerak-siap .gerak.muncul{opacity:1;transform:none}

/* Garis aksen di bawah judul bagian ikut "tumbuh" saat muncul */
.gerak-siap .tumpuk-judul.gerak h2,.gerak-siap .judul-bagian.gerak h2{transition:letter-spacing .9s ease;transition-delay:var(--gerak-tunda,0ms)}

/* Menu HP: tautan meluncur masuk bergantian saat menu dibuka */
@keyframes tm-menu-masuk{from{opacity:0;transform:translate3d(-14px,0,0)}to{opacity:1;transform:none}}
@keyframes tm-panel-masuk{from{opacity:0;transform:translate3d(0,-10px,0)}to{opacity:1;transform:none}}
.menu-mobil:not([hidden])>.container{animation:tm-panel-masuk .28s ease-out both}
.menu-mobil:not([hidden]) a,.menu-mobil:not([hidden]) .menu-mobil-grup{animation:tm-menu-masuk .38s cubic-bezier(.2,.65,.25,1) both;animation-delay:calc(var(--i,0) * 35ms + 60ms)}

/* Kartu kategori di bawah hero beranda muncul bergantian saat halaman dibuka */
@keyframes tm-naik{from{opacity:0;transform:translate3d(0,18px,0)}to{opacity:1;transform:none}}
.hg-kategori .hg-kat{animation:tm-naik .6s cubic-bezier(.2,.65,.25,1) both}
.hg-kategori .hg-kat:nth-child(2){animation-delay:.08s}
.hg-kategori .hg-kat:nth-child(3){animation-delay:.16s}
.hg-kategori .hg-kat:nth-child(4){animation-delay:.24s}

/* Banyak PC Windows mematikan "Animation effects" sehingga browser melapor
   "kurangi gerakan" dan semua animasi situs mati (style.css). Animasi di sini
   halus & pendek, jadi sengaja tetap jalan seperti pita harga. */
@media (prefers-reduced-motion:reduce){
  .gerak-siap .gerak{transition-duration:.7s!important}
  .menu-mobil:not([hidden])>.container{animation-duration:.28s!important}
  .menu-mobil:not([hidden]) a,.menu-mobil:not([hidden]) .menu-mobil-grup{animation-duration:.38s!important}
  .hg-kategori .hg-kat{animation-duration:.6s!important}
  .beranda .hg-latar{animation-duration:14s!important;animation-iteration-count:infinite!important}
  .beranda .hg-cahaya{animation-duration:7s!important;animation-iteration-count:infinite!important}
  .beranda .hg-titik{animation-duration:9s!important;animation-iteration-count:infinite!important}
}
@media print{.gerak-siap .gerak{opacity:1!important;transform:none!important}}

/* v4.61 — Ruang di bawah footer supaya tombol chat mengambang tidak menutupi
   tautan terakhir (mis. TikTok di iPad) saat halaman digulir sampai bawah. */
.footer{padding-bottom:calc(92px + env(safe-area-inset-bottom))!important}
