/* 共通の部品：一覧行の操作（ホバー表示）・インライン編集・取消トースト */

/* ── 行アクション（ホバー表示）＋インライン編集＋取消トースト ─────────────── */
#tb td.row-act-cell { position: relative; width: 34px; padding: 2px 4px; text-align: center; white-space: nowrap; }
/* 📦の無い収入タブでは操作列を幅ゼロに（ホバーアクションのアンカーとしてだけ残す）。
   幅ゼロだと待機時の translateX(10px) が右へはみ出し横スクロールを生むため、スライドせずフェードのみ */
#tb td.row-act-cell.no-inv { width: 0; padding: 0; }
#tb td.row-act-cell.no-inv .row-actions-hover { transform: translateY(-50%); }
.row-act { border: none; background: none; cursor: pointer; font-size: var(--text-md); line-height: 1;
  padding: 3px 4px; border-radius: var(--radius-md); transition: opacity 0.12s, background 0.12s; }
.row-act:hover { background: var(--color-bg); }
/* 📦在庫は常時表示・不透明度で登録状態を示す（登録済み=濃色 / 未登録=淡色） */
.row-act-inv { opacity: 0.3; }
.row-act-inv:hover { opacity: 0.6; }
.row-act-inv.is-reg { opacity: 1; }
.row-act-inv.is-reg:hover { opacity: 1; }
.row-act-del:hover { background: color-mix(in srgb, var(--color-danger) 14%, transparent); }
/* ✏️📋🗑 は行ホバーで右から滑り出すオーバーレイ（絶対配置＝列幅を確保しない）。
   コンテナは常にクリック透過（帯・パディング部分が下のセルを塞がない）、ボタンだけ受ける */
.row-actions-hover { position: absolute; right: 100%; top: 50%; display: flex; gap: 1px;
  padding-left: 34px; opacity: 0; pointer-events: none;
  transform: translateY(-50%) translateX(10px);
  background: linear-gradient(to left, var(--color-row-hover) 66%, transparent);
  transition: opacity 0.15s ease, transform 0.15s ease; }
#tb tr:hover .row-actions-hover { opacity: 1; transform: translateY(-50%) translateX(0); }
#tb tr:hover .row-actions-hover .row-act { pointer-events: auto; }

/* URL付き支出行の項目名リンク（本文色のまま・破線下線＋↗で控えめにリンクを示す） */
.sp-name-link { color: inherit; text-decoration: none;
  border-bottom: 1px dashed var(--color-primary-border); }
.sp-name-link::after { content: "↗"; font-size: var(--text-3xs); margin-left: 3px;
  color: var(--color-primary); opacity: 0.55; }
.sp-name-link:hover { color: var(--color-primary); border-bottom-style: solid; }
.sp-name-link:hover::after { opacity: 1; }

.row-editing td { background: var(--color-primary-light) !important; }
.row-editor { padding: 6px 4px 10px; }
/* インライン編集フォームのフィールド（旧未確認カードから流用） */
.unc-grid { display: flex; flex-wrap: wrap; gap: 10px 12px; align-items: flex-end; }
.unc-f { display: flex; flex-direction: column; gap: 3px; flex: 1 1 150px; min-width: 118px; }
.unc-f-name, .unc-f-note { flex: 2 1 190px; }
.unc-f-amt { flex: 0 1 120px; }
.unc-f-date { flex: 0 1 165px; }
.unc-f label { font-size: var(--text-2xs); font-weight: var(--fw-semibold); color: var(--color-text-muted); }
.unc-req { color: var(--color-danger-text); }
.unc-f .fp-trigger { width: 100%; box-sizing: border-box; }
.unc-inp { width: 100%; box-sizing: border-box; padding: 7px 9px; border: 1px solid var(--color-border);
  border-radius: var(--radius-md); font-family: var(--font); font-size: var(--text-sm); color: var(--color-text); background: var(--color-surface); }
.unc-inp:focus { outline: none; border-color: var(--color-primary); box-shadow: 0 0 0 3px var(--color-primary-light); }
.unc-inp-amt { text-align: right; font-variant-numeric: tabular-nums; }
textarea.unc-inp { resize: vertical; min-height: 34px; line-height: 1.4; }
.row-editor .unc-grid { align-items: flex-end; }
.unc-f-ratio { flex: 0 1 90px; }
.row-editor-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 10px; }
.re-tail { display: flex; align-items: center; gap: 10px; margin-left: auto; }
.re-save { border: none; border-radius: var(--radius-md); background: var(--color-primary); color: var(--color-text-on-accent);
  padding: 8px 20px; font-size: var(--text-sm); font-weight: var(--fw-bold); cursor: pointer; font-family: var(--font); }
.re-save:hover { background: var(--color-primary-hover); }
.re-cancel { border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-surface);
  color: var(--color-text-muted); padding: 7px 14px; font-size: var(--text-sm); cursor: pointer; font-family: var(--font); }
.re-cancel:hover { border-color: var(--color-text-muted); color: var(--color-text); }

/* モーダル（.md-overlay＝2100）より上＝「直す」で開いたモーダルの裏に前の知らせが沈まない */
.row-toast { position: fixed; left: 50%; bottom: 26px; transform: translateX(-50%) translateY(12px); z-index: 2300;
  display: flex; align-items: center; gap: 14px; background: #1f2937; color: var(--color-text-on-accent); padding: 11px 16px;
  border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); font-size: var(--text-sm);
  opacity: 0; pointer-events: none; transition: opacity 0.18s, transform 0.18s; }
.row-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); pointer-events: auto; }
.row-toast-undo { border: none; background: none; color: #8ab4ff; font-weight: var(--fw-bold); cursor: pointer;
  font-size: var(--text-sm); font-family: var(--font); padding: 2px 4px; }
.row-toast-undo:hover { text-decoration: underline; }

/* ファセット型チップフィルタ（支出/収入の絞り込み） */
