/* ============================================================
   bestiary.css — layar Bestiary: katalog spesies.
   Butuh: tokens.css, base.css, components.css, overlay.css, tas.css

   Kenapa tas.css ikut disebut: sheet detail Bestiary memakai
   chrome yang SAMA dengan sheet detail Tas — .fh-fishhd,
   .fh-fishprev, .fh-fishstage, .fh-fishrows, .fh-chips, dan menu
   tarik-turun .fh-drop. Itu satu komponen dipakai dua layar, bukan
   salinan; menggambarnya ulang di sini dengan nama lain akan
   melahirkan dua sheet yang perlahan menyimpang.

   ⚠ Nama-nama itu masih berawalan `fish`/`bag` karena lahir di
   Tas, dan tempatnya sekarang keliru — semestinya di
   components.css. Memindahkannya BUKAN sekadar potong-tempel:
   .fh-fishstage::after dan .fh-holo::after (components.css)
   menyasar pseudo-element yang sama dengan kekhususan yang sama,
   dan yang menang sekarang ditentukan URUTAN MUAT berkas. Begitu
   keduanya pindah ke satu berkas, pita holo di sheet detail bisa
   menang diam-diam tanpa satu error pun. Kalau nanti dipindah,
   taruh blok itu SESUDAH .fh-holo dan periksa sheet celestial.

   Yang ditulis di berkas ini hanya yang memang milik layar ini:
   baris saring, panel, kepala tier, dan kotak katalog.
   ============================================================ */


/* ============================================================
   BARIS SARING

   Menempel di bawah header saat grid digulung, dengan cara yang
   sama persis seperti .fh-bagbar di Tas: top-nya setinggi header
   (--fh-hdr-h, diukur JS) dan bukan 0, karena header juga sticky
   di posisi itu — kalau keduanya berhenti di 0, baris ini berhenti
   tepat DI BALIK header dan hilang tanpa gejala.

   Bedanya dengan Tas: di sini tidak ada tab yang menyatu dengan
   panel, jadi ada padding-bawah dan panelnya bertepi penuh. Tab
   menyatu di Tas menyampaikan "tiga laci dari satu tas"; di layar
   ini yang dipilih bukan laci lain melainkan saringan atas daftar
   yang sama, dan bentuk yang sama akan berbohong soal isinya.
   ============================================================ */

.fh-besbar{
  position:sticky;top:var(--fh-hdr-h,0px);
  z-index:var(--z-subbar);
  flex:none;
  display:flex;align-items:center;gap:var(--sp-sm);
  padding:var(--sp-md) var(--sp-md) var(--sp-sm);
  background:var(--pixel-bg);

  /* TINGGI BARIS INI SATU ANGKA, dan semua isinya memakai angka
     itu. Tanpa itu tinggi baris ditentukan anaknya yang paling
     tinggi — dan begitu pencarian dibuka, isinya berganti: kolom
     ketik sempat 36px sementara progres dan tombol 34px, jadi
     menekan tombol cari menggeser SELURUH grid di bawahnya 2px.
     Pergeseran sekecil itu tidak terbaca sebagai bug, cuma terasa
     seperti layar yang tidak stabil.

     min-height, bukan height: kalau suatu saat ada isi yang memang
     lebih tinggi, dia boleh tumbuh — yang dilarang adalah tumbuh
     karena isinya BERGANTI. */
  --bar-h:34px;
  min-height:calc(var(--bar-h) + var(--sp-md) + var(--sp-sm));
}


/* ---------- KOLOM CARI ----------
   MENGAMBIL ALIH tempat segmen, tidak berdiri di sebelahnya. Pada
   390px baris ini cuma punya ~330px, dan segmen dua tombol + kolom
   ketik + dua tombol bulat tidak muat tanpa membuat ketiganya
   sama-sama sempit. Keduanya juga tidak pernah dipakai bersamaan:
   yang sedang mengetik nama ikan tidak sedang memilih Semua/Belum.

   Tingginya memakai --bar-h milik barisnya, sama dengan progres
   dan kedua tombol bulat — lihat catatan di .fh-besbar. */
.fh-bescari{
  display:none;
  flex:1;min-width:0;
  align-items:center;gap:var(--sp-sm);
  height:var(--bar-h);padding:0 8px 0 10px;
  background:var(--pixel-surface);
  border:1px solid var(--pixel-border);
  border-radius:var(--r-md);
}
.fh-besbar.is-cari .fh-bescari{display:flex}
.fh-besbar.is-cari .fh-besprog,
.fh-besbar.is-cari .fh-besbtn--cari{display:none}

/* Tepi emas saat sedang dipakai, pola yang sama dengan
   .fh-besbtn.is-set — penanda KEADAAN, bukan ajakan menekan.
   :focus-within, bukan :focus: yang menerima fokus adalah <input>
   di dalamnya, sementara yang bertepi adalah pembungkusnya. */
.fh-bescari:focus-within{border-color:var(--pixel-primary)}

.fh-bescari__ic{
  flex:none;width:11px;height:11px;
  fill:var(--pixel-muted);shape-rendering:crispEdges;
}

.fh-bescari input{
  flex:1;min-width:0;
  height:100%;
  background:none;border:0;outline:none;
  color:var(--pixel-text);
  /* 16px, dan ini BUKAN pilihan selera: Safari iOS memperbesar
     seluruh halaman begitu <input> berfont di bawah 16px disentuh,
     dan di Mini App yang sudah diskalakan sendiri, zoom itu tidak
     pernah kembali dengan rapi. */
  font-size:16px;
}
.fh-bescari input::placeholder{color:var(--pixel-muted);opacity:.8}
/* Tombol X bawaan Safari/Chrome untuk type=search dibuang: kita
   sudah punya X sendiri yang sekaligus MENUTUP pencarian, dan dua
   silang bersebelahan dengan arti berbeda cuma membingungkan. */
.fh-bescari input::-webkit-search-cancel-button{display:none}

.fh-bescari__x{
  flex:none;
  width:22px;height:22px;border-radius:50%;
  display:grid;place-items:center;
  background:var(--pixel-raised);
  color:var(--pixel-muted);
}
.fh-bescari__x svg{width:9px;height:9px;fill:currentColor;shape-rendering:crispEdges}
.fh-bescari__x:active{transform:scale(.92)}


/* ---------- TOMBOL BULAT ----------
   TIDAK ADA definisi sendiri di sini: kedua tombol memakai
   .fh-bagbtn.fh-bagbtn--sort milik Tas apa adanya, supaya lingkaran
   di dua layar ini tidak pernah berbeda 4px atau setengah tingkat
   warna. Yang ditimpa cuma satu hal, dan itu memang khas Tas:
   margin-bawah 4px di sana menahan lingkaran supaya berhenti di
   ATAS garis panel yang ditempeli tab. Di baris ini tidak ada tab
   yang menyatu, jadi margin itu cuma membuatnya duduk miring. */
.fh-besbar .fh-bagbtn--sort{align-self:auto;margin-bottom:0}

/* Menu-nya rata kanan mengikuti tombolnya. Lebih lebar dari menu
   urut di Tas karena tiap barisnya membawa tiga hal: titik warna,
   nama tier, dan progres tier itu. */
.fh-drop--tier{right:var(--sp-md);min-width:196px}

/* Angka progres per tier di menu: redup, rata kanan, tabular.
   Dia konteks, bukan yang dipilih — kalau setebal nama tiernya,
   dua hal di satu baris jadi berebut dibaca duluan. */
.fh-drop--tier .fh-dropopt span{
  margin-left:auto;
  font-size:11px;color:var(--pixel-muted);
  font-variant-numeric:tabular-nums;
}


/* ============================================================
   PROGRES, PESAN, KOSONG
   ============================================================ */

/* Progres duduk DI BARIS ATAS yang sticky, bukan di dalam panel.
   Waktu dia masih di dalam panel, "20/28" hilang di gulungan
   pertama — padahal itu satu-satunya angka yang menjawab pertanyaan
   pokok layar ini, dan pemain justru menggulung untuk mencarinya.

   Formatnya tetap kembar dengan baris kapasitas Tas: angka pixel,
   pembagi dan satuan diredam. Dua layar yang menghitung "berapa
   dari berapa" tidak boleh menulisnya dengan dua cara. */
.fh-besprog{
  flex:1;min-width:0;
  display:flex;align-items:center;
  height:var(--bar-h);padding:0 2px;
  overflow:hidden;
}
.fh-besprog b{
  font-family:var(--font-pixel);font-size:11px;
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.fh-besprog b i{font-style:normal;color:var(--pixel-muted);opacity:.7}

.fh-besmsg{margin:0 var(--sp-md) var(--sp-md);display:none}
.fh-besmsg.is-on{display:block}

.fh-besempty{
  margin:0 var(--sp-md) var(--sp-lg);
  padding:var(--sp-lg) var(--sp-md);
  text-align:center;
  background:var(--pixel-surface);
  border:1px solid var(--pixel-border);
  border-radius:var(--r-md);
}
.fh-besempty b{
  display:block;font-family:var(--font-pixel);font-size:10px;
  margin-bottom:var(--sp-sm);
}
.fh-besempty p{font-size:12px;color:var(--pixel-muted);line-height:1.5}


/* ============================================================
   PANEL PER TIER

   Sembilan tier sempat tinggal di SATU panel besar, dan hasilnya
   terbaca menyatu: kepala tier cuma sebaris teks yang mengambang
   di tengah aliran kotak yang tidak pernah putus, jadi batas
   antar-kategori harus ditebak dari jarak. Sekarang tiap tier
   panelnya sendiri — batasnya digambar, bukan disiratkan.

   Kolomnya tetap sejajar antar-panel walau isinya beda-beda:
   auto-fill + minmax membuat jumlah TREK ditentukan lebar wadah,
   bukan jumlah isi, dan semua panel selebar layar yang sama. Itu
   yang membuat pemisahan ini tidak mengorbankan keteraturan grid.
   ============================================================ */

.fh-besgrup{
  margin:0 var(--sp-md) var(--sp-md);
  background:var(--pixel-surface);
  border:1px solid var(--pixel-border);
  border-radius:var(--r-md);
  /* Kepala tier punya batang warna yang menempel ke tepi kiri
     panel; tanpa ini ujungnya menonjol keluar dari lengkungan. */
  overflow:hidden;
}

/* KEPALA TIER, sekarang menempel di puncak panelnya sendiri.

   Latarnya naik satu tingkat dari isi panel — itu yang membuatnya
   terbaca sebagai kepala, bukan sebagai baris pertama. Batang
   warna tier menempel di tepi kiri, penuh setinggi kepala:
   warna dipakai sebagai penanda, tidak pernah sebagai warna teks.
   Pada normal abu dan artefak oranye tua, teks berwarna di atas
   panel gelap tidak lolos kontras — dan satu kepala yang lebih
   redup dari yang lain terbaca seperti keadaan, padahal cuma
   warna tiernya yang kebetulan gelap. */
.fh-bestier{
  position:relative;
  display:flex;align-items:center;gap:var(--sp-sm);
  width:100%;text-align:left;
  padding:9px var(--sp-md) 9px calc(var(--sp-md) + 3px);
  background:var(--pixel-raised);
  border-bottom:1px solid var(--pixel-border);
}
.fh-bestier__bar{
  position:absolute;left:0;top:0;bottom:0;
  width:3px;
  background:var(--t,var(--pixel-border));
}

/* Yang BISA dibentang ditekan seperti tombol. Kepala tier yang
   isinya sudah tampil semua tidak pernah dapat kelas ini, jadi
   tidak ada kepala yang terlihat bisa ditekan padahal tidak. */
.fh-bestier.is-buka:active{background:var(--pixel-border)}

.fh-bestier b{
  font-family:var(--font-pixel);font-size:9px;letter-spacing:.5px;
}
.fh-bestier span{
  margin-left:auto;
  font-size:11px;color:var(--pixel-muted);
  font-variant-numeric:tabular-nums;
}

/* PEMBENTANG. Angkanya yang bekerja, bukan panahnya: "+13"
   menyebutkan berapa yang belum terlihat, dan itu yang membuat
   orang mengetuk — panah sendirian cuma mengumumkan bahwa sesuatu
   bisa dibuka tanpa memberi alasan.

   Panahnya tetap ada karena dia yang mengatakan ARAH: teks "+13"
   sendirian bisa dibaca sebagai penanda, bukan tombol. Dia
   berputar 180° saat terbentang, jadi keadaannya terbaca bahkan
   kalau labelnya tidak sempat dibaca. */
.fh-besmore{
  flex:none;
  display:flex;align-items:center;gap:5px;
  margin-left:2px;padding:3px 8px;
  border-radius:20px;
  font-style:normal;font-size:10px;font-weight:600;
  font-variant-numeric:tabular-nums;
  color:var(--pixel-text);
  background:var(--pixel-surface);
  border:1px solid var(--pixel-border);
}
.fh-besmore svg{
  width:7px;height:4px;fill:currentColor;shape-rendering:crispEdges;
  transition:transform .15s ease-out;
}
.fh-besmore.is-on svg{transform:rotate(180deg)}

@media (prefers-reduced-motion:reduce){
  .fh-besmore svg{transition:none}
}


/* ---------- GRID DI DALAM PANEL ----------
   Ukuran kotak sama dengan grid Tas (minmax 76px, auto-fill) —
   ASET_IKAN bagian 8 memang menetapkan grid bestiary ± 76px, dan
   satu ukuran tampil untuk kedua layar berarti satu berkas ikon
   untuk keduanya. */
.fh-besgrid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(76px,1fr));
  gap:var(--sp-sm);
  padding:var(--sp-md);
}


/* ---------- KOTAK SPESIES ----------
   Kotaknya .fh-bagslot milik Tas apa adanya — termasuk .fh-tile,
   .fh-cel-grad, .fh-holo, dan .fh-spark. Yang ditulis di sini cuma
   dua hal yang tidak punya padanan di sana: nama yang boleh dua
   baris, dan keadaan TERKUNCI. */

/* Nama SATU BARIS berpotong, sama dengan kotak Tas. Dua baris
   sempat dicoba supaya "Penjaga Abyss" muat utuh, dan hasilnya
   lebih buruk: tinggi kotak harus dikunci setinggi dua baris
   supaya kotak tetap sejajar, jadi mayoritas nama yang pendek
   ("Teri", "Nila") meninggalkan satu baris kosong menganga di
   bawahnya. Ruang kosong yang muncul di hampir semua kotak lebih
   merusak daripada elipsis yang muncul di beberapa. */

/* PIALA — pemain masuk 50 besar papan skor ikan ini.

   DUDUK DI LUAR KOTAK, menonjol dari sudut kanan atas kartu. Dua
   alasan, dan keduanya menentukan:

   1. Di DALAM kotak, dia menimpa gambar ikannya — dan gambar itu
      satu-satunya isi kotak ini. Penanda yang menghapus hal yang
      sedang dipamerkan adalah penanda yang salah tempat.
   2. Yang ditandai bukan ikannya, tapi PENCAPAIAN pemain atas ikan
      itu. Benda yang menempel di tepi luar terbaca sebagai label
      yang ditempelkan pada kotak; benda di dalam terbaca sebagai
      bagian dari isinya.

   Acuannya KARTU, bukan kotak asetnya: .fh-tile memakai
   overflow:hidden supaya kilau dan gambar tidak bocor keluar
   sudutnya, jadi apa pun di dalamnya mustahil menonjol. Karena
   itu .fh-bescard di bawah diberi position:relative — satu-satunya
   alasan aturan itu ada.

   Menonjolnya 6px, dan itu diukur bukan dikira: jarak antar-kotak
   di grid ini 8px (--sp-sm), jadi piala berhenti di dalam celah
   dan tidak pernah menyentuh kartu tetangganya. Tanpa itu perlu
   z-index antar-kartu di grid yang sama — urusan yang tidak perlu
   diadakan.

   TANPA PLAT GELAP. Yang menjaga keterbacaannya sekarang bayangan
   rapat di sekeliling glifnya: dia menempel pada bentuk pialanya,
   bukan kotak hitam yang menempel pada kotak ikannya. Tetap perlu
   ada sesuatu — di belakang piala bisa ada latar panel, bisa juga
   sudut kartu yang berwarna, dan emas di atas keduanya tidak sama
   terbacanya. */
.fh-bescard{position:relative}

.fh-bespiala{
  position:absolute;right:-6px;top:-6px;z-index:2;
  display:block;line-height:0;
  /* transform-origin di dasar pialanya, bukan di tengah: benda
     yang bergoyang bertumpu pada alasnya. Diputar dari tengah,
     gerakannya terbaca seperti melayang. */
  transform-origin:50% 85%;
}

/* 2x dari viewBox 9x7 — SATU satuan = DUA piksel CSS, jadi tiap
   goresan tetap sama tebal di DPR 1, 2, dan 3. Ukuran yang bukan
   kelipatan bulat membuat crispEdges membulatkan tiap tepi ke
   piksel perangkat terdekat, dan piala setinggi 7 satuan kehilangan
   bentuknya lebih dulu daripada glif mana pun di app ini. */
.fh-bespiala svg{
  width:18px;height:14px;
  fill:var(--medal-1);
  shape-rendering:crispEdges;
  filter:drop-shadow(0 0 1px rgba(0,0,0,.9)) drop-shadow(0 1px 1px rgba(0,0,0,.5));
}

/* GOYANGANNYA JARANG, bukan terus-menerus. Siklus 3,6 detik yang
   90%-nya diam: penanda yang bergoyang tanpa henti berhenti jadi
   penanda dan mulai jadi gangguan — apalagi kalau pemain punya
   piala di belasan kotak sekaligus. Yang dianimasikan cuma
   transform, dikerjakan compositor.

   Jatahnya dibatasi PIALA_MAX di bestiary.js; yang lewat batas
   tetap dapat pialanya, hanya diam. */
@keyframes fh-piala-goyang{
  0%, 88%, 100%{transform:rotate(0deg)}
  90%{transform:rotate(-11deg)}
  93%{transform:rotate(9deg)}
  96%{transform:rotate(-5deg)}
}
.fh-bespiala.is-live{animation:fh-piala-goyang 3.6s ease-in-out infinite}

@media (prefers-reduced-motion:reduce){
  .fh-bespiala.is-live{animation:none}
}

/* TERKUNCI. Seluruh kartunya diredam, bukan cuma kotak asetnya:
   kalau hanya asetnya yang abu sementara nama dan tepinya tetap
   penuh, yang terbaca adalah "ikonnya belum ada" — persis salah
   paham yang paling mungkin terjadi di app yang memang masih
   kekurangan ikon.

   Tepi putus-putus melakukan sisanya. Dia terbaca sebagai "tempat
   yang belum terisi" tanpa satu kata pun, dan tetap terbaca
   begitu di layar yang sedang digulung cepat. */
.fh-bescard.is-lock{
  background:var(--pixel-bg);
  border-style:dashed;
}
.fh-bescard.is-lock small{color:var(--pixel-muted)}
.fh-bescard.is-lock .fh-fishghost{opacity:.4}

/* ---------- PANGGUNG SHEET, KEADAAN TERKUNCI ----------
   Satu baris teks di atas siluet. Tanpa itu panggungnya cuma
   bidang kosong berisi bayangan, dan pemain yang membukanya tidak
   tahu apakah ikannya belum pernah ditangkap atau layarnya gagal
   memuat sesuatu. */
.fh-besmark{
  position:absolute;left:0;right:0;bottom:var(--sp-md);
  text-align:center;
  font-family:var(--font-pixel);font-size:8px;letter-spacing:.5px;
  color:var(--pixel-muted);
}


/* ============================================================
   PAPAN SKOR PER IKAN
   Sheet kedua di atas sheet detail. Chrome-nya (.fh-sheet,
   .fh-fishhd) sama dengan sheet mana pun; yang di bawah ini cuma
   isinya.
   ============================================================ */

/* TOMBOL DI SUDUT KIRI JUDUL, kembar persis dengan tombol tutup
   di sudut kanan — kelasnya memang sama (.fh-fishhd__x), yang
   berbeda cuma sisinya. Dua sudut judul untuk dua hal yang sejenis:
   keduanya PINDAH LAYAR, tidak satu pun mengubah ikannya.

   Sebelumnya tombol berteks selebar penuh di kaki sheet. Bobotnya
   salah: tombol sebesar itu di posisi paling menonjol terbaca
   sebagai tindakan utama layar, padahal dia cuma jalan ke bacaan
   lain — dan kakinya ikut memakan tinggi yang seharusnya milik
   panggung ikan. */
.fh-fishhd__x--kiri{right:auto;left:var(--sp-md)}


/* GANTI HALAMAN, BUKAN TUMPUK.

   Papan skor dan rincian ikan tidak pernah tampil bersamaan: yang
   sedang di bawah disembunyikan, dan yang di atas muncul DI TEMPAT
   tanpa animasi naik. Yang terlihat satu panel yang isinya
   berganti halaman.

   Keduanya tetap dua elemen dan dua lapisan di tumpukan overlay —
   itu yang memberi tombol back Telegram arti yang benar (back dari
   papan skor kembali ke rincian, bukan menutup semuanya). Lihat
   catatan di bukaLb() di bestiary.js. */
.fh-sheet.is-tuck{display:none}

/* transform DIPAKSA ke posisi akhir di kedua keadaan: tanpa ini
   panelnya naik dari dasar layar, dan naiknya panel kedua di atas
   panel pertama yang baru saja hilang terbaca seperti kedip. Yang
   tersisa cuma opacity — cukup untuk tidak terasa patah, tidak
   cukup untuk terasa sebagai panel baru. */
.fh-sheet--ganti,
.fh-sheet--ganti.is-on{transform:translate(-50%,0)}
.fh-sheet--ganti{transition:opacity .12s}

@media (prefers-reduced-motion:reduce){
  .fh-sheet--ganti{transition:none}
}

/* ============================================================
   BARIS PAPAN SKOR PER-IKAN

   Kerangkanya — .fh-seg, .fh-lbtop, .fh-lblist, .fh-lbrank berikut
   medalinya, .fh-lbme, .fh-lbkabar — tinggal di components.css:
   Papan Mingguan memakai semuanya.

   BENTUK BARISNYA di sini, dan itu turun-naik dua kali. Dia naik ke
   components.css waktu Papan Mingguan lahir dengan baris yang sama
   persis; turun lagi ke sini begitu Papan Mingguan berganti jadi
   kartu (foto profil, poin di bawah nama, ilustrasi karakter).
   Aturan bagian 2 IMPLEMENTASI dipakai apa adanya: satu layar →
   berkas layarnya.

   Baris di sini sengaja PADAT dan tetap padat: dia hidup di dalam
   sheet 78vh yang cuma memuat lima baris, dan tiap piksel tinggi
   yang dipakai satu baris dibayar dengan satu nama yang tidak
   terlihat. Jangan ikut-ikutan jadi kartu — alasan Papan Mingguan
   sanggup begitu adalah karena dia overlay penuh layar.
   ============================================================ */

.fh-lbrow{
  display:flex;align-items:center;gap:var(--sp-md);
  padding:9px 2px;
}
.fh-lbrow + .fh-lbrow{border-top:1px solid var(--hairline)}

.fh-lbnama{
  flex:1;min-width:0;
  font-size:13px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.fh-lbnilai{
  flex:none;font-style:normal;
  font-size:13px;font-weight:600;
  font-variant-numeric:tabular-nums;
}
/* Satuan diredam dan tidak ditebalkan. Di kolom yang seluruh
   isinya berakhiran "ekor", yang dibandingkan mata cuma angkanya. */
.fh-lbnilai i{
  font-style:normal;font-weight:400;font-size:11px;
  color:var(--pixel-muted);
}

/* Tiga baris teratas ikut naik latarnya, tipis. Medali sendirian
   sudah menandai peringkatnya, tapi barisnya tetap terbaca sama
   berat dengan peringkat 40 — dan podium yang tidak terasa sebagai
   podium menghapus alasan orang menggulung ke sini. */
.fh-lblist .fh-lbrow:nth-child(-n+3){
  background:linear-gradient(90deg,
    rgba(255,255,255,.05),rgba(255,255,255,0) 60%);
}

/* BARIS PEMAIN SENDIRI, di daftar maupun di kaki. Latar naik
   setingkat plus tepi kiri emas — cukup untuk ditemukan mata saat
   menggulung 50 baris, tanpa berteriak seperti tombol. */
.fh-lbrow.is-me{
  margin:0 -8px;padding-left:10px;padding-right:8px;
  background:var(--pixel-raised);
  border-radius:var(--r-sm);
  box-shadow:inset 3px 0 0 var(--pixel-primary);
}
.fh-lbrow.is-me + .fh-lbrow{border-top-color:transparent}
.fh-lbrow.is-me .fh-lbnama{font-weight:600}
.fh-lbrow.is-me .fh-lbrank{color:var(--pixel-text)}

/* Di kaki sheet barisnya dirapatkan: .fh-sheet__ft sudah memberi
   padding sendiri, dan padding baris yang penuh di atasnya membuat
   kaki terasa jauh lebih tebal dari daftarnya. */
.fh-lbme .fh-lbrow{padding-top:2px;padding-bottom:2px}
