/*
 * Perbaikan shell layout milik proyek, di luar tema GXON.
 *
 * Tema mengunci footer ke dasar layar lewat perhitungan
 * `min-height: calc(100vh - var(--app-header-height) - var(--footer-height))`
 * pada `.app-wrapper`, dan `--footer-height` itu baru diisi `main.js` setelah
 * halaman selesai dimuat. Kalau nilainya meleset — footer membungkus ke dua
 * baris, `main.js` gagal, atau isi halaman lebih pendek dari yang diperkirakan —
 * footer berhenti di tengah layar dan card di atasnya terlihat melewatinya.
 *
 * Pola sticky footer berbasis flex di bawah ini tidak bergantung pada angka
 * apa pun: `.app-wrapper` mengambil sisa ruang, jadi footer selalu berada di
 * dasar viewport saat isi pendek dan tetap mengalir di bawah isi saat panjang.
 */
.page-layout {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

/* Header dan sidebar `position: fixed`, jadi keduanya bukan flex item yang
   ikut menghitung tinggi — hanya main dan footer yang mengisi kolom ini. */
.page-layout > .app-wrapper {
    flex: 1 0 auto;
    /* Perhitungan tema tidak lagi dipakai; kalau dibiarkan, tingginya
       ditambahkan di atas `min-height: 100vh` induknya dan halaman pendek
       justru jadi ikut menggulung. */
    min-height: 0;
}

.page-layout > .footer-wrapper {
    flex-shrink: 0;
}
