/* 全站共用的小件（console.css 已过 600 行，另起一个文件）：列表空态（list-empty.js）、作废行、标题旁的 ⓘ 说明气泡（info-tip.js）。
   颜色与间距只取 console.css :root 的变量。 */

/* ---------- 列表空态：一句说清什么是空的、为什么，旁边最多一个动作 ---------- */
.list-empty { display: inline-flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: var(--space-2) var(--space-3); color: var(--muted); font-size: 13px; }
td > .list-empty { display: flex; }
/* 列表工具栏的月份空着＝不限月份（list-toolbar.js 加 .is-all）：盖一行「全部月份」，点上去照样打开月份选择 */
.month-stepper { position: relative; }
.ms-all { display: none; position: absolute; left: 30px; right: 30px; top: 50%; transform: translateY(-50%); text-align: center; color: var(--text); pointer-events: none; }
.month-stepper.is-all .ms-all { display: block; }
.month-stepper.is-all .ms-input { color: transparent; }
table.data-table:not(.list-table) tr.table-state td { padding: var(--space-5) var(--space-4); text-align: center; }

/* ---------- 作废行（有连续号段的台账：税票、贷项通知单、扣缴凭证）：不藏，整行灰显，号码用 <s> 划掉，状态徽标照旧 ---------- */
tr.row-void > td { color: var(--muted); }
tr.row-void > td s { text-decoration-color: var(--muted); }

/* ---------- ⓘ 说明气泡：点开 / 悬停显示（都由 info-tip.js 加 .is-open），再点、点别处、Esc 收起 ---------- */
.info-tip { position: relative; display: inline-block; margin-left: var(--space-1); vertical-align: baseline; font-weight: 400; }
.info-tip-btn {
  width: 20px; height: 20px; padding: 0; border: none; border-radius: 50%; background: none;
  color: var(--muted); font-size: 15px; line-height: 20px; cursor: pointer;
}
.info-tip-btn:hover, .info-tip.is-open .info-tip-btn { color: var(--accent); }
.info-tip-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
.info-tip-pop {
  display: none; position: absolute; top: calc(100% + 6px); left: -8px; z-index: 30;
  width: max-content; max-width: min(420px, calc(100vw - 32px)); padding: var(--space-3) var(--space-4);
  background: var(--panel-2); border: 1px solid var(--border); border-radius: var(--radius-lg); box-shadow: 0 12px 32px rgba(0, 0, 0, .45);
  color: var(--text); font-size: 12px; font-weight: 400; line-height: 1.6; text-align: left; white-space: normal; text-transform: none; letter-spacing: normal;
}
.info-tip.is-open .info-tip-pop { display: block; }
/* ⓘ 与气泡之间那 6px 也算在气泡里：鼠标从 ⓘ 移到说明上去不会因为经过空隙而收起 */
.info-tip-pop::before { content: ''; position: absolute; left: 0; right: 0; top: -8px; height: 8px; }

/* ---------- 表格里可以换行的格（地址、买方、主体这类长名字）：全站表格默认不换行，长名字会把表格撑出横向滚动（UI 审视 L3） ---------- */
table.data-table td.cell-wrap { white-space: normal; min-width: 8em; max-width: 20em; overflow-wrap: anywhere; }
/* 列表工具栏下面一行的批量操作（扣缴凭证「下载选中凭证」） */
.list-bulk { display: flex; justify-content: flex-end; margin-top: var(--space-3); }

/* ---------- 视觉 token 落地（UI 审视 §4.5） ---------- */
/* 金额一律等宽数字（表格的 td.num 在 console.css；这里补上其余写了 .num 的地方） */
.num { font-variant-numeric: tabular-nums; }
/* 两套徽标形状不同，不只靠颜色区分：状态徽标是圆角胶囊（.badge，console.css）；来源徽标（「TWH 迁来」这类）是方角、--info 色 */
.badge.badge-source { border-radius: 3px; color: var(--info); border-color: var(--info); background: transparent; }
/* 行操作那一格仍是表格的一格（以前 display:flex 让这一格的底线和同行别的格对不齐） */
td.row-actions { display: table-cell; vertical-align: middle; }
