/*
 * app.css — style khusus Dashboard Informatika UNTAN
 * Melengkapi core.css Vuexy; hanya untuk komponen yang tidak ada di template.
 */

/* Brand logo di sidebar */
.app-brand-logo.demo .app-brand-img {
  width: 34px;
  height: 34px;
  object-fit: contain;
}

/* Kartu yang bisa diklik */
.card-hover {
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.card-hover:hover {
  transform: translateY(-2px);
  box-shadow: 0 0.375rem 1rem rgba(var(--bs-primary-rgb), 0.15) !important;
}

/* Wadah chart dengan tinggi tetap (Chart.js maintainAspectRatio: false) */
.chart-box {
  position: relative;
  width: 100%;
}
.exec-apex { width: 100%; height: 100%; }
/* Tooltip ApexCharts dengan latar kartu Vuexy (padat, bukan transparan) */
.exec-apex .apexcharts-tooltip.apexcharts-theme-light,
.exec-apex .apexcharts-tooltip.apexcharts-theme-dark {
  background: var(--bs-paper-bg, #fff); color: var(--bs-body-color);
  border: 1px solid var(--bs-border-color); box-shadow: 0 .25rem 1rem rgba(0, 0, 0, .12);
}
.exec-apex .apexcharts-tooltip .apexcharts-tooltip-title {
  background: var(--bs-gray-25, rgba(0, 0, 0, .03)); border-bottom: 1px solid var(--bs-border-color);
  color: var(--bs-heading-color); font-weight: 500;
}
.exec-apex-klik .apexcharts-series path, .exec-apex-klik .apexcharts-pie-area, .exec-apex-klik .apexcharts-marker { cursor: pointer; }
.chart-box.h-200 { height: 200px; }
.chart-box.h-240 { height: 240px; }
.chart-box.h-280 { height: 280px; }
.chart-box.h-320 { height: 320px; }
.chart-box.h-360 { height: 360px; }
.chart-box.h-400 { height: 400px; }
.chart-box.h-640 { height: 640px; }

/* Batang horizontal HTML halaman Hasil Tracer Study (sama dengan aplikasi Tracer Study):
   label nilai selalu di ujung batang, label kategori panjang boleh turun baris. */
.tr-hbar { display: grid; grid-template-columns: minmax(7rem, 40%) 1fr; gap: .5rem 1rem; align-items: center; }
.tr-hbar-label { font-size: .8125rem; color: var(--bs-secondary-color); text-align: right; line-height: 1.25; }
.tr-hbar-track { display: flex; align-items: center; min-height: 1.5rem; }
.tr-hbar-isi { height: 1.125rem; border-radius: 0 4px 4px 0; background: var(--bs-primary); flex: none; }
.tr-hbar-isi:hover { filter: brightness(.9); }
.tr-hbar-nilai { margin-left: .5rem; font-size: .8125rem; color: var(--bs-heading-color); white-space: nowrap; }

/* Ticker pengumuman (dashboard) */
.ticker-container {
  height: 48px;
  overflow: hidden;
  background-color: var(--bs-primary-bg-subtle);
  border: 1px solid rgba(var(--bs-primary-rgb), 0.24);
  border-radius: var(--bs-border-radius);
  display: flex;
  align-items: stretch;
}
.ticker-container .ticker-icon {
  display: flex;
  align-items: center;
  padding: 0 1rem;
  color: var(--bs-primary);
  border-right: 1px solid rgba(var(--bs-primary-rgb), 0.24);
}
.ticker-container .ticker-wrap {
  flex: 1;
  overflow: hidden;
}
.ticker {
  display: flex;
  flex-direction: column;
  transition: transform 0.6s ease-in-out;
}
.ticker p {
  margin: 0 1rem;
  height: 48px;
  display: flex;
  align-items: center;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--bs-primary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Peta sebaran mahasiswa */
#peta_mahasiswa {
  height: 520px;
  border-radius: var(--bs-border-radius);
  z-index: 0;
}
.leaflet-container {
  font-family: var(--bs-body-font-family);
}
.leaflet-tooltip {
  border-radius: var(--bs-border-radius);
  border-color: var(--bs-border-color);
  box-shadow: var(--bs-box-shadow-sm);
}
.map-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  margin-top: 0.75rem;
  font-size: 0.8125rem;
  color: var(--bs-secondary-color);
}
.map-legend .dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  display: inline-block;
  margin-right: 0.35rem;
}

/* Daftar progress (kabupaten asal) */
.progress-list .progress-item + .progress-item {
  margin-top: 0.875rem;
}
.progress-list .progress-item .d-flex {
  font-size: 0.8125rem;
  margin-bottom: 0.25rem;
}
.progress-list .progress {
  height: 8px;
}
.progress-scroll {
  max-height: 440px;
  overflow-y: auto;
  padding-right: 0.25rem;
}

/* Tabel kompak angka */
.table-compact th,
.table-compact td {
  padding: 0.5rem 0.75rem;
  font-size: 0.8125rem;
}

/* Keyword badge pada detail dosen */
.keyword-cloud .badge {
  font-weight: 500;
  text-transform: capitalize;
}

/* Foto dosen */
.dosen-photo {
  width: 180px;
  height: 180px;
  object-fit: cover;
  object-position: top center;
  border-radius: 50%;
  border: 4px solid var(--bs-paper-bg);
  box-shadow: var(--bs-box-shadow);
}

/* Layanan (dashboard) */
.layanan-card .layanan-img {
  height: 96px;
  width: auto;
  max-width: 100%;
  object-fit: contain;
}

/* Frame dokumen */
.doc-frame {
  width: 100%;
  height: 480px;
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius);
}

/* Angka rasio besar */
.display-ratio {
  font-size: 3rem;
  font-weight: 600;
  line-height: 1.1;
  color: var(--bs-primary);
}

/* Gambar screenshot dalam card */
.card-img-shot {
  width: 100%;
  height: auto;
  border-radius: var(--bs-border-radius);
  border: 1px solid var(--bs-border-color);
}

/* Fokus input pencarian */
.search-input-group .input-group-text {
  background: transparent;
}

/* Switch mode Dashboard / Executive di bawah logo; disembunyikan saat menu diciutkan */
.layout-menu-collapsed:not(.layout-menu-hover) .layout-menu .mode-switch { display: none; }
.mode-switch .form-check-input { cursor: pointer; }

/* ===== Executive Dashboard ===== */
/* Kartu KPI: sparkline kecil di kanan nilai */
.exec-kpi .exec-spark { width: 96px; height: 36px; flex-shrink: 0; }
.exec-kpi .btn-xs { line-height: 1; }

/* Indikator tanpa data: abu-abu supaya kesenjangan data terlihat jelas */
.exec-kosong { background-color: var(--bs-gray-25, rgba(0, 0, 0, 0.02)); border-style: dashed !important; }
.exec-kosong .text-heading { color: var(--bs-secondary-color) !important; }

/* Mode Ideal: watermark CONTOH pada setiap kartu/baris berisi data contoh */
.exec-contoh { position: relative; }
.card.exec-contoh::after {
  content: 'CONTOH';
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) rotate(-18deg);
  font-size: 2.25rem;
  font-weight: 800;
  letter-spacing: 0.3em;
  color: rgba(var(--bs-warning-rgb), 0.12);
  pointer-events: none;
}
tr.exec-contoh td, li.exec-contoh { background-image: repeating-linear-gradient(-45deg, transparent 0 10px, rgba(var(--bs-warning-rgb), 0.04) 10px 20px); }
.exec-kpi.exec-contoh::after { font-size: 1.25rem; }

/* ===== Analitik Prodi ===== */
/* Bar filter menempel di bawah navbar saat di-scroll */
.ana-filter { position: sticky; top: 76px; z-index: 9; }
.ana-filter .btn-group .btn { padding: 0.25rem 0.6rem; }
.ana-peta { height: 320px; border-radius: var(--bs-border-radius); }
