/* base.css — style dasar ops console (tanpa build step, handwritten).
   Utility classes di-generate runtime oleh tailwind.js + theme.js;
   file ini hanya berisi base + font + detail global yang bukan utility. */

/* ---- Font Geist (variable, latin subset, self-host — lihat OFL.txt) ---- */
@font-face {
  font-family: 'Geist';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('../fonts/geist.woff2') format('woff2');
}
@font-face {
  font-family: 'Geist Mono';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('../fonts/geistmono.woff2') format('woff2');
}

/* ---- Base ---- */
html {
  color-scheme: light;
}

body {
  font-size: 15px;
  line-height: 1.5;
  letter-spacing: -0.01em;
  background-color: #fafafa;
  color: #27272a;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Numeric alignment untuk nilai KPI/tabel. */
.tabular-nums {
  font-variant-numeric: tabular-nums;
}

/* Focus ring keyboard-only — hitam, khas Vercel. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 2px solid #18181b;
  outline-offset: 2px;
}

/* ---- Scrollbar tipis serasi tema terang ---- */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: #d4d4d8;
  border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover { background: #a1a1aa; }

/* Sticky table head. */
table thead th { position: sticky; top: 0; z-index: 1; background-clip: padding-box; }

/* Truncate sel tabel lebar. */
.truncate-cell {
  max-width: 22rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Fade-in konten saat pindah route. */
#content > * {
  animation: arc-fade-in 0.18s ease-out;
}

@keyframes arc-fade-in {
  from { opacity: 0; transform: translateY(2px); }
  to   { opacity: 1; transform: translateY(0); }
}
