/* Penyesuaian kecil di luar Tailwind */

/**
 * Wadah grafik WAJIB punya tinggi pasti.
 * Chart.js dengan maintainAspectRatio:false akan mengikuti tinggi kontainer;
 * bila kontainernya ikut tinggi canvas, keduanya saling mendorong dan
 * grafik memanjang tanpa henti setiap kali halaman di-resize.
 */
.wadah-grafik {
  position: relative;
  width: 100%;
  height: 220px;
}
.wadah-grafik.wadah-pendek { height: 150px; }
.wadah-grafik.wadah-tinggi { height: 260px; }
.wadah-grafik > canvas { position: absolute; inset: 0; width: 100% !important; height: 100% !important; }

.card {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 14px;
}

/* Tabel yang bisa digeser di layar kecil */
.tabel-scroll { overflow-x: auto; }
.tabel-scroll table { min-width: 100%; }

/* Baris input harian */
.grid-input input,
.grid-input select {
  width: 100%;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  padding: 6px 9px;
  font-size: 13px;
  outline: none;
  background: #fff;
}
.grid-input input:focus,
.grid-input select:focus { border-color: #2563eb; box-shadow: 0 0 0 3px rgba(37,99,235,.12); }
.grid-input input[readonly] { background: #f8fafc; color: #64748b; }
.grid-input td { padding: 4px 3px; }

/* Angka rata kanan */
.num { text-align: right; font-variant-numeric: tabular-nums; }

/* Sembunyikan spinner input number */
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
input[type=number] { -moz-appearance: textfield; }

@media print {
  aside, header form, .no-print { display: none !important; }
  .lg\:ml-56 { margin-left: 0 !important; }
}
