/* 台帳の1行＝1件の観測記録。カードではなく、横罫で区切った行。
   番号は CSS カウンタで振るので、絞り込みで隠れた行があれば自動で詰め直される。
   署名：ホバーした行の左に観測印（✓）が捺され、下罫が青に変わる。 */

.ledger-head {
  display: grid;
  grid-template-columns: var(--cols);
  gap: 0 1rem;
  font-family: var(--font-mono);
  font-size: .64rem;
  letter-spacing: .1em;
  color: var(--ink-2);
  padding-bottom: .45rem;
  border-bottom: 1px solid var(--ink);
}

.cabinet {
  counter-increment: obs;
  border-bottom: 1px solid var(--rule);
  transition: border-color .15s;
}

.cab-link {
  display: grid;
  grid-template-columns: var(--cols);
  gap: 0 1rem;
  align-items: start;
  padding-block: .75rem;
  position: relative;
}

/* 観測印。通常は伏せておき、ホバー/フォーカスで捺す */
.cab-link::before {
  content: "✓";
  position: absolute;
  left: 0;
  top: .78rem;
  font-family: var(--font-mono);
  font-size: .8rem;
  line-height: 1.4;
  color: var(--blue);
  opacity: 0;
  transform: translateY(2px);
  transition: opacity .15s, transform .15s;
}
:root[data-fx="off"] .cab-link::before { display: none; }

/* 管理番号 */
.cab-no {
  font-family: var(--font-mono);
  font-size: .72rem;
  letter-spacing: .04em;
  line-height: 1.55;
  color: var(--ink-2);
  padding-left: 1.5em;
  padding-top: .12em;
  transition: color .15s;
}
.cab-no::after { content: counter(obs, decimal-leading-zero); }

/* 図版＝小さな標本写真。台紙に貼るだけで、紙とは混ぜない */
.cab-fig {
  width: var(--fig-w);
  aspect-ratio: 4 / 3;
  background: var(--card);
  border: 1px solid var(--rule);
  position: relative;
  overflow: hidden;
}
/* 台紙のふちを図版の上に重ねる＝標本写真を貼ったように見せる */
.cab-fig::after {
  content: "";
  position: absolute;
  inset: 0;
  border: 3px solid var(--card);
  pointer-events: none;
}
.cab-thumb {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
}
/* 図版なし＝台帳の「記載なし」に倣って斜線を1本引く */
.cab-thumb-ph {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top right,
    transparent calc(50% - .5px),
    var(--rule) calc(50% - .5px),
    var(--rule) calc(50% + .5px),
    transparent calc(50% + .5px)
  );
}

.cab-main { min-width: 0; }
.cab-title {
  display: block;
  font-size: .95rem;
  line-height: 1.55;
  text-decoration: underline 1px transparent;
  text-underline-offset: .28em;
  transition: text-decoration-color .15s;
}
.cab-note {
  display: block;
  font-size: .8rem;
  line-height: 1.7;
  color: var(--ink-2);
  margin-top: .1em;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* ピック印は青の小さな点。★は使わない */
.cab-badge {
  color: var(--blue);
  font-size: .5em;
  vertical-align: .45em;
  margin-right: .55em;
}

/* 分類・記録日は既定では行の列にそのまま流す */
.cab-meta { display: contents; }
.cab-genre,
.cab-date {
  font-family: var(--font-mono);
  font-size: .7rem;
  letter-spacing: .04em;
  line-height: 1.55;
  color: var(--ink-2);
  padding-top: .12em;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ── 署名：ホバーで観測印が捺される ─────── */
.cabinet:hover,
.cabinet:focus-within { border-bottom-color: var(--blue); }
:root[data-fx="off"] .cabinet:hover,
:root[data-fx="off"] .cabinet:focus-within { border-bottom-color: var(--ink); }

.cabinet:hover .cab-link::before,
.cabinet:focus-within .cab-link::before { opacity: 1; transform: none; }
.cabinet:hover .cab-no,
.cabinet:focus-within .cab-no { color: var(--blue); }
.cabinet:hover .cab-title,
.cabinet:focus-within .cab-title { text-decoration-color: var(--blue); }

/* ── 狭い画面：分類・記録日を名称の下へ折り返す ─── */
@media (width <= 720px) {
  :root { --fig-w: 64px; --cols: 3.4em var(--fig-w) minmax(0, 1fr); }
  .ledger-head { display: none; }
  .cab-no,
  .cab-fig { grid-row: 1 / span 2; }
  .cab-meta {
    display: flex;
    gap: 1em;
    grid-column: 3;
    grid-row: 2;
    margin-top: .25em;
  }
  .cab-genre,
  .cab-date { padding-top: 0; }
}
