/* =========================================================================
   Mod aplikasi — gaya yang HANYA berkuat kuasa apabila Tafaqquh dijalankan
   sebagai PWA terpasang.

   DUA cangkuk, sengaja:

     html.pwa-standalone       ditetapkan oleh cebisan skrip sebaris dalam
                               <head> sebelum lukisan pertama, dan disahkan
                               semula oleh assets/pwa.js. Ini cangkuk UTAMA
                               kerana ia satu-satunya yang meliputi iOS
                               "Add to Home Screen", yang tidak melaporkan
                               display-mode pada versi lama.

     @media (display-mode: standalone)
                               jaring keselamatan tanpa JavaScript. Ia
                               menduakan hanya peraturan yang paling penting
                               (sembunyi kaki dan bar atas laman web), supaya
                               aplikasi terpasang tidak kelihatan seperti
                               laman web penuh jika skrip gagal dimuat.

   Pelayar biasa TIDAK menerima satu pun daripada peraturan di bawah — laman
   web mudah alih kekal betul-betul seperti sedia ada.
   ========================================================================= */

/* ---- Token bar bawah ----
   Diisytiharkan pada :root supaya halaman boleh merujuknya untuk pelapik
   kandungan tanpa mengulang nombor yang sama di banyak tempat. */
:root{
  --pwa-bar: 56px;
  --pwa-bar-jumlah: calc(56px + env(safe-area-inset-bottom, 0px));
}

/* =========================================================================
   1. Rangka aplikasi
   ========================================================================= */

/* ---- Gerbang mod aplikasi ----
   `display-mode: standalone` SAHAJA tidak mencukupi untuk menentukan chrome
   aplikasi. Chrome desktop PWA, papan pintar landscape dan tetingkap lebar
   semuanya melapor standalone — namun pada skrin besar dengan tetikus, chrome
   laman web penuh (kepala + kaki, tanpa bar bawah) ialah yang betul.

   Chrome aplikasi (kepala padat, kaki disorok, ruang untuk bar bawah) hanya
   apabila skrin kecil ATAU peranti sentuh. Nilai 900px sepadan dengan gerbang
   yang sama dalam assets/pwa.js — ubah kedua-duanya sekali. */
@media (max-width: 899px), (pointer: coarse){

  /* Kandungan mesti berhenti di ATAS bar bawah. Tanpa pelapik ini, item
     terakhir setiap senarai tersembunyi di belakang bar dan kelihatan hilang. */
  html.pwa-standalone body{
    padding-bottom: var(--pwa-bar-jumlah);
  }

  /* Bar atas laman web dan kaki laman web ialah perabot LAMAN WEB. Dalam
     aplikasi terpasang, navigasi datang daripada bar bawah dan kaki setinggi
     300px hanyalah skrol mati. */
  /* Dua pemilih kaki, kerana dua cangkerang tidak berkongsi markup:
     tfd-shell.php menghantar <footer class="site-footer">, manakala index.html
     menghantar <footer id="hubungi"> tanpa kelas itu. */
  html.pwa-standalone .topbar,
  html.pwa-standalone .site-footer,
  html.pwa-standalone footer#hubungi{
    display: none;
  }

  /* ---- Kepala aplikasi padat ----
     Kepala laman web ialah 71-110px dengan jenama besar. Dalam aplikasi itu
     ruang yang dibayar pada setiap skrin. Ia dipadatkan, bukan diganti:
     markupnya sama, jadi butang kembali sedia ada (tfd_head 'ringkas') terus
     berfungsi. */
  html.pwa-standalone .site-header{
    padding-top: env(safe-area-inset-top, 0px);
  }
  html.pwa-standalone .navbar{
    height: auto;
    min-height: 52px;
    padding: 6px 0;
  }
  html.pwa-standalone .brand-logo{ width: 32px; height: 32px; }
  html.pwa-standalone .brand-copy b{ font-size: 16px; }
  html.pwa-standalone .brand-copy small{ display: none; }

  /* .tanya-bar melekat pada var(--tinggi-header). Kepala padat menjadikan
     nilai 89px itu salah, dan bar carian akan terapung dengan jurang. */
  html.pwa-standalone{ --tinggi-header: 55px; }
}

/* Jaring keselamatan tanpa JavaScript: hanya peraturan paling penting, dengan
   gerbang lebar/penuding yang sama supaya PWA desktop tidak kehilangan kaki. */
@media (display-mode: standalone) and (max-width: 899px),
       (display-mode: standalone) and (pointer: coarse){
  .topbar,
  .site-footer,
  footer#hubungi{ display: none; }
  body{ padding-bottom: var(--pwa-bar-jumlah); }
}

/* Skrin besar + penuding tepat: PWA terpasang dilayan sebagai laman web penuh.
   Bar bawah yang mungkin sempat disuntik pwa.js sebelum matchMedia menilai
   dinyahtayang di sini juga (pertahanan berlapis). */
@media (min-width: 900px) and (pointer: fine){
  html.pwa-standalone .pwa-nav{ display: none; }
  html.pwa-standalone body{ padding-bottom: 0; }
}

/* =========================================================================
   2. Bar navigasi bawah
   Disuntik oleh assets/pwa.js supaya markupnya hidup di SATU tempat sahaja,
   bukan diduakan antara index.html dan tfd-shell.php.
   ========================================================================= */

.pwa-nav{
  position: fixed;
  left: 0; right: 0; bottom: 0;
  z-index: 160;                 /* atas .tanya-apung (15) dan .site-header (100),
                                   bawah .tanya-sheet (150)? tidak — sheet mesti
                                   menutupi bar, jadi lihat peraturan sheet di bawah */
  display: flex;
  background: #0b2f57;          /* sama seperti .pk-bar-bawah tonton.php */
  border-top: 1px solid rgba(255,255,255,.08);
  padding-bottom: env(safe-area-inset-bottom, 0px);
  padding-left: env(safe-area-inset-left, 0px);
  padding-right: env(safe-area-inset-right, 0px);
}
.pwa-nav a{
  flex: 1 1 0;
  min-width: 0;
  min-height: var(--pwa-bar);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  text-decoration: none;
  font-family: 'Manrope', system-ui, sans-serif;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.1;
  color: #c3d4e6;
  -webkit-tap-highlight-color: transparent;
  transition: color .15s ease;
}
.pwa-nav svg{
  width: 21px; height: 21px;
  stroke: currentColor; fill: none;
  stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round;
  flex: none;
}
.pwa-nav a span{
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pwa-nav a:hover{ color: #e6eefb; }
/* Keadaan aktif dibawa oleh aria-current, bukan kelas: penanda yang SAMA
   memberitahu pembaca skrin dan mata. */
.pwa-nav a[aria-current="page"]{ color: #e8b04b; }
.pwa-nav a[aria-current="page"] svg{ stroke-width: 2.2; }
.pwa-nav a:focus-visible{
  outline: 2px solid #e8b04b;
  outline-offset: -3px;
  border-radius: 6px;
}

/* Bar hanya wujud dalam mod terpasang. pwa.js sudah menyuntiknya hanya di
   sana, tetapi peraturan ini memastikan ia tidak boleh muncul dalam pelayar
   biasa walaupun kelas mod tersilap ditetapkan. */
html.pwa-browser .pwa-nav{ display: none; }

/* =========================================================================
   3. Tiada dua bar bawah
   ========================================================================= */

/* tonton.php menghantar bar bawahnya sendiri pada web mudah alih. Itu kekal
   seperti sedia ada — tetapi apabila bar global aktif, hanya SATU yang boleh
   kelihatan. Peraturan ini berpagar di belakang gerbang yang sama seperti bar
   global (assets/pwa.js): pada skrin besar + tetikus, bar global tidak wujud,
   jadi bar tonton dan pelapiknya mesti kekal seadanya. */
@media (max-width: 899px), (pointer: coarse){
  html.pwa-standalone .pk-bar-bawah{ display: none !important; }
  /* Pelapik bawah .pk-bawah dikira untuk bar tonton (84px). Dalam mod aplikasi
     bar itu hilang dan bar global mengambil tempatnya, jadi pelapik
     diselaraskan kepada ketinggian bar global. */
  html.pwa-standalone .pk-bawah{ padding-bottom: 24px; }
}

/* =========================================================================
   4. Elemen terapung — dinaikkan ke atas bar
   ========================================================================= */

@media (max-width: 899px), (pointer: coarse){
  html.pwa-standalone .tanya-apung{
    bottom: calc(var(--pwa-bar-jumlah) + 14px);
  }
  html.pwa-standalone .floating-live{
    bottom: calc(var(--pwa-bar-jumlah) + 14px);
    right: calc(14px + env(safe-area-inset-right, 0px));
  }
}
/* Nota: .back-top (butang kembali ke atas laman utama) dikendalikan dalam
   <style> index.html, bukan di sini — peraturan yang sama di dalam fail ini
   tidak berkuat kuasa pada butang itu. Lihat komen di sebelah .back-top.show. */

/* Modal video laman utama mesti menutupi bar, bukan sebaliknya: ia mengambil
   alih skrin dan navigasi di belakangnya tidak sepatutnya boleh ditekan. */
html.pwa-standalone .yt-modal{ z-index: 220; }

/* Helaian bawah Tanya mesti menutupi bar navigasi: ia menahan fokus, dan
   navigasi di belakangnya masih boleh ditekan tanpa peraturan ini. */
html.pwa-standalone .tanya-sheet{ z-index: 200; }
html.pwa-standalone .tanya-sheet-isi{
  padding-bottom: calc(20px + env(safe-area-inset-bottom, 0px));
}
/* Lapisan carian skrin penuh juga mesti berada di atas bar. */
html.pwa-standalone .tfd-cari{ z-index: 210; }

/* =========================================================================
   5. Halaman aplikasi — Kemajuan dan Live
   Kedua-duanya memakai bahasa reka bentuk .pk-* daripada assets/tonton.css,
   jadi hanya perbezaan khusus halaman tinggal di sini.
   ========================================================================= */

.app-halaman{
  padding: 18px 16px 32px;
  padding-left: calc(16px + env(safe-area-inset-left, 0px));
  padding-right: calc(16px + env(safe-area-inset-right, 0px));
  max-width: 720px;
  margin-inline: auto;
}
.app-tajuk{
  font-family: 'Manrope', system-ui, sans-serif;
  font-size: 21px;
  font-weight: 800;
  letter-spacing: -.01em;
  color: var(--pk-ink, #122031);
  margin: 0;
}
.app-sub{
  margin-top: 6px;
  font-size: 14px;
  line-height: 1.6;
  color: var(--pk-ink-sekunder, #656e7c);
}
.app-seksyen{ margin-top: 26px; }
.app-seksyen-tajuk{
  font-family: 'Manrope', system-ui, sans-serif;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--pk-ink-sekunder, #656e7c);
  margin-bottom: 12px;
}

/* ---- Kad ---- */
.app-kad{
  display: block;
  background: var(--pk-kad, #fff);
  border: 1px solid var(--pk-garis, #dde2e9);
  border-radius: var(--pk-r-kad, 14px);
  padding: 16px;
  text-decoration: none;
  color: inherit;
}
.app-kad + .app-kad{ margin-top: 10px; }

/* ---- Kad sambung belajar ---- */
.app-sambung{
  display: grid;
  grid-template-columns: 116px minmax(0, 1fr);
  gap: 14px;
  align-items: start;
}
.app-sambung-imej{
  position: relative;
  aspect-ratio: 16 / 9;
  border-radius: var(--pk-r-thumb, 6px);
  overflow: hidden;
  background: #0a1622;
}
.app-sambung-imej img{ width: 100%; height: 100%; object-fit: cover; display: block; }
.app-sambung-isi{ min-width: 0; }
.app-kicap{
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--pk-teal, #0f5f5c);
}
.app-sambung-tajuk{
  margin-top: 5px;
  font-family: 'Manrope', system-ui, sans-serif;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.35;
  color: var(--pk-ink, #122031);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.app-sambung-meta{
  margin-top: 6px;
  font-size: 13px;
  color: var(--pk-ink-sekunder, #656e7c);
}

/* ---- Bar kemajuan ---- */
.app-bar{
  margin-top: 10px;
  height: 5px;
  border-radius: 999px;
  background: var(--pk-chip, #e6eaf0);
  overflow: hidden;
}
.app-bar i{
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--pk-emas, #e8b04b);
}

/* ---- Butang ---- */
.app-btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 48px;
  padding: 0 20px;
  border-radius: 999px;
  border: 1px solid transparent;
  font-family: 'Manrope', system-ui, sans-serif;
  font-size: 14.5px;
  font-weight: 800;
  text-decoration: none;
  cursor: pointer;
  transition: filter .15s ease;
}
.app-btn svg{ width: 17px; height: 17px; flex: none; }
.app-btn-utama{ background: var(--pk-emas, #e8b04b); color: #0b2f57; }
.app-btn-kedua{
  background: var(--pk-kad, #fff);
  color: var(--pk-navy, #12406f);
  border-color: var(--pk-garis-kuat, #d3d9e1);
}
.app-btn:hover{ filter: brightness(.97); }
.app-btn-penuh{ width: 100%; }
.app-aksi{ display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; }
.app-aksi .app-btn{ flex: 1 1 auto; }

/* ---- Keadaan kosong ---- */
.app-kosong{
  background: var(--pk-kad, #fff);
  border: 1px solid var(--pk-garis, #dde2e9);
  border-radius: var(--pk-r-kad, 14px);
  padding: 34px 22px;
  text-align: center;
}
.app-kosong-ikon{
  width: 52px; height: 52px;
  margin: 0 auto 16px;
  border-radius: 50%;
  display: grid; place-items: center;
  background: var(--pk-chip, #e6eaf0);
  color: var(--pk-navy, #12406f);
}
.app-kosong-ikon svg{ width: 24px; height: 24px; stroke: currentColor; fill: none; stroke-width: 1.8; }
.app-kosong strong{
  display: block;
  font-family: 'Manrope', system-ui, sans-serif;
  font-size: 16px;
  color: var(--pk-ink, #122031);
}
.app-kosong p{
  margin-top: 8px;
  font-size: 14px;
  line-height: 1.65;
  color: var(--pk-ink-sekunder, #656e7c);
  max-width: 34ch;
  margin-inline: auto;
}
.app-kosong .app-btn{ margin-top: 20px; }

/* ---- Pemuatan ---- */
.app-muat{
  padding: 30px 0;
  text-align: center;
  font-size: 14px;
  color: var(--pk-ink-sekunder, #656e7c);
}

/* =========================================================================
   6. Halaman Live
   ========================================================================= */

.live-status{
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 14px;
  border-radius: 999px;
  font-family: 'Manrope', system-ui, sans-serif;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .07em;
  text-transform: uppercase;
}
.live-status.on{ background: #fdeaea; color: #b42318; }
.live-status.off{ background: var(--pk-chip, #e6eaf0); color: var(--pk-ink-sekunder, #656e7c); }
.live-titik{
  width: 8px; height: 8px; border-radius: 50%;
  background: currentColor; flex: none;
}
.live-status.on .live-titik{ animation: live-denyut 1.6s ease-in-out infinite; }
@keyframes live-denyut{
  0%,100%{ opacity: 1 }
  50%{ opacity: .35 }
}

/* Pemain 16:9. Tiada lapisan di atas iframe: kawalan dan penjenamaan YouTube
   mesti kekal boleh dicapai sepenuhnya. */
.live-pemain{
  margin-top: 16px;
  position: relative;
  aspect-ratio: 16 / 9;
  border-radius: var(--pk-r-kad, 14px);
  overflow: hidden;
  background: #0a1622;
}
.live-pemain iframe{
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  border: 0; display: block;
}

@media (prefers-reduced-motion: reduce){
  .live-status.on .live-titik{ animation: none }
  .app-btn, .pwa-nav a{ transition: none }
}
