/* ============================================================================
 * print-pdf-fix.css — Perbaikan tata letak khusus mode ekspor PDF (?print-pdf).
 *
 * Reveal.js sudah membawa aturan cetak dasar di dalam dist/reveal.css. Berkas
 * ini hanya menambal komponen buatan sendiri (kartu metrik, chart, slide
 * penanda penyaji, appendix) agar tidak ada yang terpotong di PDF.
 * ========================================================================== */

/* Warna latar wajib ikut tercetak — tanpa ini slide penanda penyaji, header
   tabel, dan badge akan keluar putih polos di PDF. */
html.print-pdf,
html.print-pdf * {
  -webkit-print-color-adjust: exact !important;
  print-color-adjust: exact !important;
}

html.print-pdf .reveal .slides section {
  /* Cegah isi meluber ke halaman berikutnya. */
  overflow: hidden !important;
  height: 720px !important;
}

/* Slide penanda penyaji & sampul appendix memakai margin negatif agar
   latarnya penuh; saat dicetak, margin itu harus dihitung ulang. */
html.print-pdf .reveal .segment-slide,
html.print-pdf .reveal .appendix-cover {
  margin: 0 !important;
  padding: 0 10% !important;
  height: 720px !important;
  width: 100% !important;
}

/* Chart: kunci tinggi supaya Chart.js tidak menghitung ulang jadi 0 saat
   layout cetak, dan matikan animasi (sudah dimatikan juga di charts.js). */
html.print-pdf .reveal .chart-box {
  height: var(--chart-h, 380px) !important;
  page-break-inside: avoid;
}
html.print-pdf .reveal .chart-box canvas {
  max-height: 100% !important;
  height: 100% !important;
}

/* Diagram Mermaid — jangan sampai terpotong. */
html.print-pdf .reveal .mermaid-box svg {
  max-height: 470px !important;
  height: auto !important;
}

/* Fragment tidak dipakai sebagai halaman terpisah: tampilkan semuanya. */
html.print-pdf .reveal .fragment {
  opacity: 1 !important;
  visibility: visible !important;
}

/* Kartu dan tabel jangan pecah antar halaman. */
html.print-pdf .reveal .metric,
html.print-pdf .reveal .card,
html.print-pdf .reveal table,
html.print-pdf .reveal .callout {
  page-break-inside: avoid;
  break-inside: avoid;
}

/* Speaker notes tidak ikut tercetak. */
html.print-pdf .reveal aside.notes { display: none !important; }

/* Pada mode cetak, Reveal memindahkan setiap slide ke dalam pembungkus
   .pdf-page. Pembungkus vertical slides (section.stack milik Lampiran) ikut
   tertinggal di aliran dokumen dalam keadaan kosong namun tetap setinggi satu
   slide — menghasilkan HALAMAN KOSONG di awal PDF. Sembunyikan sisa itu.
   Slide Lampiran yang sebenarnya tetap tercetak karena sudah dipindahkan
   ke dalam .pdf-page masing-masing. */
html.print-pdf .reveal .slides > section.stack { display: none !important; }

/* Cegah halaman kosong tambahan di akhir berkas. */
html.print-pdf .reveal .pdf-page:last-of-type { page-break-after: avoid !important; break-after: avoid !important; }
