/* ==========================================================================
   extras.css — penyempurnaan tampilan (opsional, tidak memengaruhi konten).
   Dimuat sebagai berkas terpisah dari /public. Semua aturan di sini aman bila
   JavaScript mati: mode gelap mengikuti pengaturan sistem lewat CSS murni;
   tombol-tombol hanya muncul bila main.js berjalan.
   ========================================================================== */

/* --- 1. Navigasi: tujuan anchor tidak tertutup header sticky --------------- */
section[id] {
  scroll-margin-top: 72px;
}

/* --- 2. Mode gelap --------------------------------------------------------- */
/* Otomatis mengikuti sistem, kecuali pengunjung memilih terang secara manual. */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --paper: oklch(20% 0.01 60);
    --paper-deep: oklch(23.5% 0.012 60);
    --ink: oklch(93% 0.01 84);
    --ink-soft: oklch(78% 0.01 220);
    --merah: oklch(70% 0.17 19);
    --merah-deep: oklch(76% 0.15 19);
    --line: oklch(34% 0.012 60);
  }
  :root:not([data-theme="light"]) .tag-teknologi {
    background: var(--paper-deep);
  }
}
/* Pilihan manual pengunjung (disimpan main.js di localStorage). */
:root[data-theme="dark"] {
  color-scheme: dark;
  --paper: oklch(20% 0.01 60);
  --paper-deep: oklch(23.5% 0.012 60);
  --ink: oklch(93% 0.01 84);
  --ink-soft: oklch(78% 0.01 220);
  --merah: oklch(70% 0.17 19);
  --merah-deep: oklch(76% 0.15 19);
  --line: oklch(34% 0.012 60);
}
:root[data-theme="dark"] .tag-teknologi {
  background: var(--paper-deep);
}
:root[data-theme="light"] {
  color-scheme: light;
}

/* Transisi warna halus saat tombol tema ditekan (kelas dipasang sementara). */
html.tema-transisi,
html.tema-transisi *,
html.tema-transisi *::before,
html.tema-transisi *::after {
  transition: background-color 300ms ease, color 300ms ease, border-color 300ms ease !important;
}

/* --- 3. Efek ringan tombol & kartu ---------------------------------------- */
.tombol-utama:active,
.tombol-bingkai:active {
  transform: translateY(1px) scale(0.98);
}
@media (hover: hover) {
  article.kartu.reveal {
    transition-property: opacity, transform, border-color, box-shadow;
  }
  article.kartu.reveal:hover {
    border-color: var(--merah);
    box-shadow: 0 10px 28px color-mix(in oklab, var(--ink) 12%, transparent);
  }
}

/* --- 4. Tombol melayang (dibuat oleh main.js) ----------------------------- */
.ui-ekstra {
  position: fixed;
  right: 16px;
  z-index: 45;
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  color: var(--ink);
  background: var(--paper);
  border: 1.5px solid var(--line);
  border-radius: 999px;
  box-shadow: 0 6px 18px color-mix(in oklab, var(--ink) 14%, transparent);
  cursor: pointer;
  transition: opacity 200ms ease, transform 200ms ease, border-color 200ms ease, color 200ms ease;
}
.ui-ekstra:hover {
  border-color: var(--merah);
  color: var(--merah);
}
.ui-ekstra:active {
  transform: scale(0.94);
}
.ui-ekstra svg {
  width: 20px;
  height: 20px;
  pointer-events: none;
}
#ui-tema {
  bottom: 16px;
}
#ui-atas {
  bottom: 68px;
}
#ui-atas[data-tampil="false"] {
  opacity: 0;
  transform: translateY(8px);
  visibility: hidden;
  pointer-events: none;
}
@media print {
  .ui-ekstra {
    display: none !important;
  }
}

/* --- 5. Perataan teks (v1.4) ----------------------------------------------- */
/* Daftar data Pendidikan: label & isi sejajar di dua kolom; label tidak pernah
   terpotong di tengah kata, isi yang panjang membungkus di kolomnya sendiri. */
#riwayat dl > div {
  display: grid;
  grid-template-columns: 5.5rem minmax(0, 1fr);
  column-gap: 0.5rem;
  align-items: baseline;
}
#riwayat dl > div > dt {
  white-space: nowrap;
}
#riwayat dl > div > dd {
  min-width: 0;
  overflow-wrap: break-word;
}
/* Hindari kata tunggal yatim di akhir paragraf & judul yang timpang. */
p, li, dd {
  text-wrap: pretty;
}
h1, h2, h3 {
  text-wrap: balance;
}
/* Teks tanpa spasi (email, nomor) tidak boleh melebihi kotaknya. */
main a, main p, main li, main dd {
  overflow-wrap: break-word;
}
