#sub-ledger /* ===========================================================================
 * 老板记账 · 老板板块（独立样式表）
 * ---------------------------------------------------------------------------
 * 为什么单开一个文件：全站铁律 —— **不加进 style.css**。
 *   style.css 快 500KB、多个会话并发在改，动它必然与别人互相覆盖。
 *   本文件在 index.html 里排在 style.css 与其它板块 css **之后**加载，
 *   同名选择器后出现者胜出。
 *
 * 配色说明（为什么主色没换、但大数字卡是墨绿）：
 *   · 品牌主色 --primary #f95901 是底线，按钮/强调一律用它，**不许换**；
 *   · 但「账本」需要自己的调性 —— 大数字卡用深墨绿（#123f36 → #1c5c4c）。
 *     理由有两点：① 与橘色形成冷暖对比，卡片层级一眼分明；
 *     ② 墨绿在中文语境里天然联想"账本/票据"，比橘色更像"钱的地方"。
 *   这是**辅色**不是主色，与 bossmusic 用粉、legal 用靛蓝是同一种做法。
 *
 * 🔴 两条硬规矩（都是踩过坑的，别改）：
 *   ① **任何含 position:absolute 装饰的卡片，容器必须有 position:relative** ——
 *      否则装饰会按 right:-30% 撑宽 document，**手机端整页缩成 77%**（桌面看不出来）。
 *   ② **子页底部必须留 ≥ 74px** —— 那是 fixed TabBar 的实测高度，
 *      不留的话最后一条记录永远被 TabBar 压住，用户以为"记丢了"。
 * =========================================================================== */

.lg-root { padding: 0 0 88px; }   #sub-ledger /* 88 > 74：给 TabBar 留位 + 一点呼吸 */

/* ============================== 顶部三档切换 ============================== */

.lg-tabs {
  display: flex; gap: 6px; padding: 10px 14px 4px;
  position: sticky; top: 0; z-index: 5;
  background: linear-gradient(180deg, var(--bg2, #fffbf7) 76%, rgba(255, 251, 247, 0));
}
#sub-ledger .lg-tab {
  position: relative;                 /* 见文件头规矩 ①：里面有 absolute 的红点 */
  flex: 1; padding: 9px 0; border: 0; border-radius: 12px;
  background: #fff; color: var(--text2, #a08c7c);
  font-size: 14px; font-weight: 600; letter-spacing: .3px;
  box-shadow: 0 1px 3px rgba(58, 42, 30, .06);
  transition: all .18s ease; cursor: pointer;
}
#sub-ledger .lg-tab.on {
  background: var(--grad, linear-gradient(135deg, #ff8845 0%, #f94400 100%));
  color: #fff; box-shadow: 0 4px 12px rgba(249, 89, 1, .28);
}

#sub-ledger /* 账本 tab 上的小红点：还有几笔没写用途（"半成品"提醒） */
.lg-tab-dot {
  position: absolute; top: 3px; right: 8px;
  min-width: 16px; height: 16px; padding: 0 4px; box-sizing: border-box;
  border-radius: 8px; font-size: 10.5px; font-style: normal; font-weight: 700;
  line-height: 16px; text-align: center;
  background: #e5484d; color: #fff;
  box-shadow: 0 0 0 1.5px #fff;
}
#sub-ledger .lg-tab.on .lg-tab-dot { background: #fff; color: var(--primary, #f95901); box-shadow: 0 0 0 1.5px rgba(249, 89, 1, .3); }

#sub-ledger .lg-pane { padding: 8px 14px 0; }

#sub-ledger /* ============================== 本月大数字卡 ============================== */

.lg-mcard {
  position: relative;                        /* 见文件头规矩 ① */
  border-radius: 22px; padding: 18px 20px 16px; margin: 6px 0 14px;
  background: linear-gradient(135deg, #123f36 0%, #1a5748 58%, #1c5c4c 100%);
  box-shadow: 0 10px 24px rgba(18, 63, 54, .26);
  overflow: hidden; color: #eaf4f0;
}
#sub-ledger /* 装饰光斑：容器有 relative + overflow:hidden，撑不宽页面 */
.lg-mcard::after {
  content: ''; position: absolute; right: -46px; top: -58px;
  width: 170px; height: 170px; border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 214, 148, .22) 0%, rgba(255, 214, 148, 0) 70%);
  pointer-events: none;
}
#sub-ledger .lg-mcard-h { display: flex; align-items: center; justify-content: space-between; }
#sub-ledger .lg-mcard-lbl { font-size: 12.5px; letter-spacing: 2px; color: #9dc4b8; }
#sub-ledger .lg-cmp {
  font-size: 11.5px; padding: 2px 8px; border-radius: 8px;
  background: rgba(255, 255, 255, .1); color: #cfe6de;
}
#sub-ledger .lg-cmp.up { color: #ffb9a0; background: rgba(249, 89, 1, .18); }
#sub-ledger .lg-cmp.down { color: #9fe0c4; background: rgba(120, 220, 180, .14); }

#sub-ledger .lg-mcard-num {
  font-size: 38px; font-weight: 700; line-height: 1.16; margin: 8px 0 6px;
  letter-spacing: -.5px; color: #fff;
  font-variant-numeric: tabular-nums; font-feature-settings: 'tnum';
}
#sub-ledger .lg-mcard-num i {
  font-size: 19px; font-weight: 600; font-style: normal;
  margin-right: 3px; color: #8fc0b1;
}
#sub-ledger .lg-mcard-meta {
  display: flex; align-items: center; flex-wrap: wrap; gap: 6px;
  font-size: 12px; color: #a8cec3;
}
#sub-ledger .lg-mcard-meta b { color: #eaf4f0; font-weight: 600; }
#sub-ledger .lg-meta-warn, #sub-ledger .lg-meta-warn b { color: #ffc9a8 !important; }
#sub-ledger .lg-dot { width: 3px; height: 3px; border-radius: 50%; background: #4d7f72; }

#sub-ledger .lg-mcard-bar {
  margin-top: 12px; height: 5px; border-radius: 3px;
  background: rgba(255, 255, 255, .13); overflow: hidden;
}
#sub-ledger .lg-mcard-bar i {
  display: block; height: 100%; border-radius: 3px;
  background: linear-gradient(90deg, #7fd6b4 0%, #b9e6a8 100%);
  transition: width .5s cubic-bezier(.22, 1, .36, 1);
}

#sub-ledger /* ================================ 记一笔 ================================ */

.lg-compose { margin-bottom: 14px; }

#sub-ledger .lg-in-wrap {
  position: relative;
  background: #fff; border-radius: 16px;
  box-shadow: 0 2px 10px rgba(58, 42, 30, .07), 0 0 0 1.5px rgba(249, 89, 1, .06);
  transition: box-shadow .2s;
}
#sub-ledger .lg-in-wrap:focus-within {
  box-shadow: 0 4px 16px rgba(249, 89, 1, .13), 0 0 0 2px rgba(249, 89, 1, .34);
}
#sub-ledger .lg-in {
  width: 100%; box-sizing: border-box; border: 0; outline: 0; background: transparent;
  padding: 15px 16px; font-size: 16.5px; color: var(--text, #3a2a1e);
  border-radius: 16px;
}
#sub-ledger .lg-in::placeholder { color: #c2b2a4; }

#sub-ledger /* 实时解析回显 —— 本功能的招牌 */
.lg-hint {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  margin: 0 12px 10px; padding: 8px 11px; border-radius: 10px;
  font-size: 13px; line-height: 1.4;
  animation: lg-hint-in .16s ease;
}
@keyframes lg-hint-in { from { opacity: 0; transform: translateY(-3px); } to { opacity: 1; transform: none; } }
#sub-ledger .lg-hint.ok { background: #edfaf3; color: #1c6b4e; }
#sub-ledger .lg-hint.miss { background: #fff4ec; color: #b7622a; }
#sub-ledger .lg-hint-res { font-weight: 600; }
#sub-ledger .lg-hint-go {
  flex: none; font-size: 11.5px; padding: 2px 7px; border-radius: 6px;
  background: rgba(28, 107, 78, .1); color: #1c6b4e; font-weight: 600;
}

#sub-ledger .lg-compose-row { display: flex; gap: 9px; margin-top: 10px; }
#sub-ledger .lg-go {
  flex: 1; padding: 13px 0; border: 0; border-radius: 14px; cursor: pointer;
  background: var(--grad, linear-gradient(135deg, #ff8845 0%, #f94400 100%));
  color: #fff; font-size: 15px; font-weight: 700; letter-spacing: 1px;
  box-shadow: 0 5px 14px rgba(249, 89, 1, .26);
  transition: opacity .18s, transform .12s;
}
#sub-ledger .lg-go:active { transform: scale(.985); }
#sub-ledger .lg-go:disabled { opacity: .42; box-shadow: none; cursor: default; }
#sub-ledger .lg-go-key { opacity: .66; font-size: 13px; margin-left: 2px; }

#sub-ledger .lg-cam {
  flex: none; display: flex; align-items: center; justify-content: center;
  padding: 0 18px; border-radius: 14px; cursor: pointer;
  background: #fff; color: #8a6f5c; font-size: 14.5px; font-weight: 600;
  box-shadow: 0 2px 8px rgba(58, 42, 30, .07), 0 0 0 1.5px rgba(58, 42, 30, .05);
  transition: background .16s;
}
#sub-ledger .lg-cam:active { background: #fdf6f1; }
#sub-ledger .lg-cam-t { white-space: nowrap; }

#sub-ledger /* 常用 chips */
.lg-quick { margin-bottom: 16px; }
#sub-ledger .lg-quick-h { font-size: 12px; color: var(--text2, #a08c7c); margin-bottom: 8px; letter-spacing: .4px; }
#sub-ledger .lg-chips { display: flex; flex-wrap: wrap; gap: 8px; }
#sub-ledger .lg-chip {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 8px 13px; border: 0; border-radius: 11px; cursor: pointer;
  background: var(--chip-bg, #fff1e7); color: #8a5230;
  font-size: 13.5px; font-weight: 600;
  transition: transform .12s, background .16s;
}
#sub-ledger .lg-chip:active { transform: scale(.94); background: #ffe3d0; }
#sub-ledger .lg-chip-e { font-size: 14px; }

#sub-ledger /* ============================= 流水列表 ============================= */

.lg-day { margin-bottom: 18px; }
#sub-ledger .lg-day-h {
  display: flex; align-items: baseline; justify-content: space-between;
  padding: 0 4px 8px; font-size: 13px; font-weight: 600; color: #7c6a5c;
}
#sub-ledger .lg-wd { font-style: normal; font-weight: 400; color: #bfae9f; font-size: 11.5px; margin-left: 3px; }
#sub-ledger .lg-day-s { font-size: 12.5px; color: #a08c7c; font-variant-numeric: tabular-nums; }

#sub-ledger .lg-list {
  background: #fff; border-radius: 16px; overflow: hidden;
  box-shadow: 0 2px 10px rgba(58, 42, 30, .06);
}
#sub-ledger .lg-row {
  display: flex; align-items: center; gap: 11px;
  padding: 13px 15px; cursor: pointer; position: relative;
  border-bottom: 1px solid #f6efe9;
  transition: background .14s;
}
#sub-ledger .lg-row:last-child { border-bottom: 0; }
#sub-ledger .lg-row:active { background: #fdfaf7; }
#sub-ledger .lg-row-ico {
  flex: none; width: 34px; height: 34px; border-radius: 11px;
  display: flex; align-items: center; justify-content: center;
  background: #fdf5ef; font-size: 16px;
}
#sub-ledger .lg-row-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
#sub-ledger .lg-row-item {
  font-size: 15px; color: var(--text, #3a2a1e); font-weight: 500;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
#sub-ledger .lg-row-item i { font-style: normal; color: #c0b0a2; }
#sub-ledger .lg-row-tags { display: flex; flex-wrap: wrap; gap: 5px; }
#sub-ledger .lg-row-amt {
  flex: none; font-size: 16.5px; font-weight: 700; color: #3a2a1e;
  font-variant-numeric: tabular-nums; letter-spacing: -.2px;
}
#sub-ledger .lg-row.priv .lg-row-amt { color: #a06fb8; }
#sub-ledger /* "待补用途"的行要显眼但不刺眼：左侧一道细琥珀条 */
.lg-row.thin { background: #fffdf8; }
#sub-ledger .lg-row.thin::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
  background: #f0b429;
}

#sub-ledger .lg-tag {
  display: inline-block; padding: 1.5px 6px; border-radius: 6px;
  font-size: 10.5px; line-height: 1.6; background: #f4f0ec; color: #8f7c6c;
}
#sub-ledger .lg-tag.ok { background: #e8f7ef; color: #1c7a55; }
#sub-ledger .lg-tag.no { background: #fdeeee; color: #c0483f; }
#sub-ledger .lg-tag.wait { background: #fff5e3; color: #b07d16; }
#sub-ledger .lg-tag.priv { background: #f4eefb; color: #7c4fa3; }
#sub-ledger .lg-tag.thin { background: #fff2d6; color: #a07a12; font-weight: 600; }

#sub-ledger /* ============================= 空状态 ============================= */

.lg-empty { text-align: center; padding: 40px 20px; }
#sub-ledger .lg-empty-ico { font-size: 38px; opacity: .5; }
#sub-ledger .lg-empty-t { margin-top: 10px; font-size: 15px; font-weight: 600; color: #8a7768; }
#sub-ledger .lg-empty-d { margin-top: 6px; font-size: 13px; color: #b6a496; line-height: 1.6; }

#sub-ledger .lg-err { padding: 18px; text-align: center; color: #c0483f; font-size: 14px; }
#sub-ledger .lg-need { text-align: center; padding: 54px 24px; }
#sub-ledger .lg-need-ico { font-size: 46px; }
#sub-ledger .lg-need-t { margin-top: 14px; font-size: 16px; font-weight: 600; color: #6b5a4d; }
#sub-ledger .lg-need-d { margin-top: 8px; font-size: 13px; color: #a8968a; line-height: 1.7; }

#sub-ledger /* ============================= 账本页 ============================= */

.lg-bill-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 4px 4px 12px;
}
#sub-ledger .lg-ym {
  border: 0; background: transparent; cursor: pointer;
  font-size: 17px; font-weight: 700; color: var(--text, #3a2a1e);
  padding: 4px 0;
}
#sub-ledger .lg-ym i { font-style: normal; color: var(--primary, #f95901); font-size: 13px; margin-left: 2px; }
#sub-ledger .lg-bill-sum { font-size: 13px; color: #a08c7c; font-variant-numeric: tabular-nums; }

#sub-ledger .lg-months {
  display: flex; flex-wrap: wrap; gap: 7px;
  padding: 2px 0 12px;
}
#sub-ledger .lg-mo {
  padding: 6px 12px; border: 0; border-radius: 9px; cursor: pointer;
  background: #fff; color: #8a7768; font-size: 12.5px;
  box-shadow: 0 1px 4px rgba(58, 42, 30, .07);
}
#sub-ledger .lg-mo.on { background: var(--grad, linear-gradient(135deg, #ff8845 0%, #f94400 100%)); color: #fff; }

#sub-ledger /* 类目占比条 */
.lg-catbar { margin-bottom: 16px; }
#sub-ledger .lg-catbar-track {
  display: flex; height: 9px; border-radius: 5px; overflow: hidden;
  background: #f2ece7;
}
#sub-ledger .lg-catbar-seg { display: block; height: 100%; }
#sub-ledger .lg-catbar-legend {
  display: flex; flex-wrap: wrap; gap: 4px 13px; margin-top: 9px;
}
#sub-ledger .lg-lgl {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 12px; color: #8a7768;
}
#sub-ledger .lg-lgl b { color: #5d4d40; font-variant-numeric: tabular-nums; font-weight: 600; }
#sub-ledger .lg-lgl-dot, #sub-ledger .lg-catbar-seg { border-radius: 3px; }
#sub-ledger .lg-lgl-dot { width: 8px; height: 8px; display: inline-block; }
#sub-ledger /* 五个色阶：都是低饱和，不与品牌橘抢眼 */
.s0 { background: #2f7f68; }
#sub-ledger .s1 { background: #5aa68c; }
#sub-ledger .s2 { background: #93c4ae; }
#sub-ledger .s3 { background: #c8b06a; }
#sub-ledger .s4 { background: #d8ccc0; }

#sub-ledger .lg-bill-foot { padding: 6px 0 10px; }

#sub-ledger /* ============================= 内联编辑 ============================= */

.lg-edit {
  background: #fdfaf7; padding: 14px 15px 15px;
  border-bottom: 1px solid #f2e9e1;
  animation: lg-hint-in .16s ease;
}
#sub-ledger .lg-edit-row { display: flex; align-items: center; gap: 10px; margin-bottom: 9px; }
#sub-ledger .lg-edit-k { flex: none; width: 42px; font-size: 12.5px; color: #a08c7c; }
#sub-ledger .lg-edit-in {
  flex: 1; min-width: 0; box-sizing: border-box;
  padding: 9px 11px; border: 0; border-radius: 10px; outline: 0;
  background: #fff; color: #3a2a1e; font-size: 14.5px;
  box-shadow: 0 0 0 1.5px #efe6de; transition: box-shadow .16s;
}
#sub-ledger .lg-edit-in:focus { box-shadow: 0 0 0 1.5px rgba(249, 89, 1, .45); }
#sub-ledger .lg-edit-in:disabled { background: #f5f1ed; color: #b6a496; }

#sub-ledger .lg-seg { display: flex; gap: 6px; flex: 1; }
#sub-ledger .lg-seg-b {
  flex: 1; padding: 8px 0; border: 0; border-radius: 10px; cursor: pointer;
  background: #fff; color: #8a7768; font-size: 13.5px; font-weight: 600;
  box-shadow: 0 0 0 1.5px #efe6de;
}
#sub-ledger .lg-seg-b.on { background: #eef7f3; color: #1c6b4e; box-shadow: 0 0 0 1.5px rgba(28, 107, 78, .34); }
#sub-ledger .lg-seg-b.on[data-kind="priv"] { background: #f6f0fb; color: #7c4fa3; box-shadow: 0 0 0 1.5px rgba(124, 79, 163, .32); }

#sub-ledger /* 类目那一句话 —— 本功能最值钱的一句，只在编辑时出现 */
.lg-tip {
  margin: 11px 0 12px; padding: 11px 12px; border-radius: 11px;
  background: #fff; font-size: 12.5px; line-height: 1.68; color: #7c6a5c;
  box-shadow: 0 0 0 1.5px #f2e9e1;
}
#sub-ledger .lg-tip.priv { background: #fbf7fe; box-shadow: 0 0 0 1.5px #efe4f7; color: #75588c; }
#sub-ledger .lg-tip-badge {
  display: inline-block; margin-right: 6px; padding: 1px 7px; border-radius: 6px;
  font-size: 11px; font-weight: 700; vertical-align: 1px;
}
#sub-ledger .lg-tip-badge.ok { background: #e8f7ef; color: #1c7a55; }
#sub-ledger .lg-tip-badge.warn { background: #fff5e3; color: #b07d16; }
#sub-ledger .lg-tip-badge.no { background: #fdeeee; color: #c0483f; }
#sub-ledger .lg-tip-line { margin-top: 7px; font-weight: 600; }
#sub-ledger .lg-tip-line.no { color: #c0483f; }
#sub-ledger .lg-tip-line.wait { color: #b07d16; }

#sub-ledger .lg-edit-btns { display: flex; gap: 9px; }

#sub-ledger /* ============================= 通用按钮 ============================= */

.lg-btn {
  flex: 1; padding: 12px 0; border: 0; border-radius: 12px; cursor: pointer;
  background: var(--grad, linear-gradient(135deg, #ff8845 0%, #f94400 100%));
  color: #fff; font-size: 14.5px; font-weight: 700;
  box-shadow: 0 4px 12px rgba(249, 89, 1, .22);
}
#sub-ledger .lg-btn:disabled { opacity: .45; box-shadow: none; }
#sub-ledger .lg-btn-ghost {
  flex: 1; padding: 12px 0; border: 0; border-radius: 12px; cursor: pointer;
  background: #fff; color: #8a7768; font-size: 14.5px; font-weight: 600;
  box-shadow: 0 0 0 1.5px #eee5dd;
}
#sub-ledger .lg-btn-ghost:active { background: #fdfaf7; }

#sub-ledger /* ============================= 月报页 ============================= */

.lg-rpt-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 4px 4px 12px;
}
#sub-ledger .lg-rpt-head > span { font-size: 17px; font-weight: 700; color: var(--text, #3a2a1e); }
#sub-ledger .lg-rpt-btn {
  border: 0; border-radius: 11px; padding: 9px 16px; cursor: pointer;
  background: var(--grad, linear-gradient(135deg, #ff8845 0%, #f94400 100%));
  color: #fff; font-size: 13.5px; font-weight: 700;
  box-shadow: 0 4px 12px rgba(249, 89, 1, .24);
}
#sub-ledger .lg-rpt-btn:disabled { opacity: .5; box-shadow: none; }

#sub-ledger .lg-rpt-nums {
  display: grid; grid-template-columns: 1fr 1fr; gap: 9px; margin-bottom: 14px;
}
#sub-ledger .lg-num {
  background: #fff; border-radius: 14px; padding: 12px 14px;
  box-shadow: 0 2px 9px rgba(58, 42, 30, .06);
}
#sub-ledger .lg-num-k { display: block; font-size: 11.5px; color: #a08c7c; margin-bottom: 4px; }
#sub-ledger .lg-num-v {
  display: block; font-size: 18px; font-weight: 700; color: #3a2a1e;
  font-variant-numeric: tabular-nums; letter-spacing: -.2px;
}
#sub-ledger .lg-num.warn .lg-num-v { color: #a06fb8; }

#sub-ledger /* 风险卡（数字与文案都是程序算的，不是模型发挥） */
.lg-risks { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; }
#sub-ledger .lg-risk {
  border-radius: 15px; padding: 14px 15px;
  background: #fff; box-shadow: 0 2px 10px rgba(58, 42, 30, .06);
  border-left: 4px solid #d8ccc0;
}
#sub-ledger .lg-risk.warn { border-left-color: #e8843c; background: #fffcf8; }
#sub-ledger .lg-risk.info { border-left-color: #6aa9c9; }
#sub-ledger .lg-risk-t { font-size: 14.5px; font-weight: 700; color: #4a3a2e; line-height: 1.45; }
#sub-ledger .lg-risk-d { margin-top: 6px; font-size: 12.5px; color: #8a7768; line-height: 1.72; }
#sub-ledger .lg-risk-a {
  margin-top: 9px; font-size: 12.5px; color: #1c6b4e; font-weight: 600; line-height: 1.6;
}
#sub-ledger .lg-risk-none {
  padding: 14px 16px; margin-bottom: 16px; border-radius: 15px;
  background: #f0faf5; color: #1c7a55; font-size: 13.5px; font-weight: 600;
}

#sub-ledger .lg-rpt-body { padding-bottom: 8px; }
#sub-ledger .lg-rone {
  font-size: 19px; font-weight: 700; line-height: 1.55; color: #3a2a1e;
  padding: 18px 18px; border-radius: 18px; margin-bottom: 16px;
  background: linear-gradient(135deg, #fff6ef 0%, #fffdfb 100%);
  box-shadow: 0 3px 14px rgba(249, 89, 1, .08), 0 0 0 1.5px rgba(249, 89, 1, .1);
}
#sub-ledger .lg-rsec { margin-bottom: 18px; }
#sub-ledger .lg-rsec-h {
  font-size: 13px; font-weight: 700; color: var(--primary, #f95901);
  letter-spacing: 1.2px; margin-bottom: 8px;
}
#sub-ledger .lg-rsec-b { font-size: 14.5px; line-height: 1.82; color: #4a3a2e; }
#sub-ledger .lg-rend {
  text-align: center; font-size: 13.5px; color: #a08c7c;
  padding: 16px 0 8px; letter-spacing: .6px;
}
#sub-ledger .lg-rwait { text-align: center; padding: 34px 16px; color: #a08c7c; font-size: 14px; }
#sub-ledger .lg-rwait-txt {
  padding: 16px; font-size: 13.5px; line-height: 1.8; color: #8a7768;
  background: #fff; border-radius: 15px;
  box-shadow: 0 2px 9px rgba(58, 42, 30, .05);
}

#sub-ledger /* ============================= 拍票识别 ============================= */

.lg-scan {
  background: #fff; border-radius: 17px; padding: 15px 16px; margin-bottom: 16px;
  box-shadow: 0 3px 14px rgba(58, 42, 30, .09);
  animation: lg-hint-in .2s ease;
}
#sub-ledger .lg-scan-busy {
  display: flex; align-items: center; gap: 9px;
  font-size: 14px; color: #8a7768; flex-wrap: wrap;
}
#sub-ledger .lg-scan-sub { width: 100%; font-size: 11.5px; color: #bfae9f; line-height: 1.6; }
#sub-ledger .lg-scan-warn { text-align: center; }
#sub-ledger .lg-scan-warn .lg-scan-t { color: #b07d16; }
#sub-ledger .lg-scan-t { font-size: 14px; font-weight: 700; color: #4a3a2e; margin-bottom: 12px; }
#sub-ledger .lg-scan-d { font-size: 12.5px; color: #a08c7c; line-height: 1.65; margin-bottom: 14px; }
#sub-ledger .lg-scan-low {
  display: inline-block; margin-left: 6px; padding: 1px 7px; border-radius: 6px;
  background: #fff5e3; color: #b07d16; font-size: 11px; font-weight: 600;
}

#sub-ledger .lg-scan-amount {
  display: flex; align-items: baseline; gap: 4px;
  padding: 4px 0 12px; border-bottom: 1.5px solid #f6efe9; margin-bottom: 11px;
}
#sub-ledger .lg-scan-y { font-size: 19px; color: #a08c7c; font-weight: 600; }
#sub-ledger .lg-scan-in {
  flex: 1; min-width: 0; border: 0; outline: 0; background: transparent;
  font-size: 32px; font-weight: 700; color: #3a2a1e; letter-spacing: -.5px;
  font-variant-numeric: tabular-nums;
}

#sub-ledger .lg-scan-rows { margin-bottom: 4px; }
#sub-ledger .lg-scan-row { display: flex; align-items: center; gap: 10px; margin-bottom: 9px; }
#sub-ledger .lg-scan-k { flex: none; width: 36px; font-size: 12.5px; color: #a08c7c; }
#sub-ledger .lg-scan-item, #sub-ledger .lg-scan-sel, #sub-ledger .lg-scan-date {
  flex: 1; min-width: 0; box-sizing: border-box;
  padding: 8px 10px; border: 0; border-radius: 9px; outline: 0;
  background: #fdfaf7; color: #3a2a1e; font-size: 14px;
}
#sub-ledger .lg-scan-tag { flex: none; font-size: 11px; color: #a08c7c; }
#sub-ledger .lg-scan-shop { font-size: 13.5px; color: #6b5a4d; }
#sub-ledger .lg-scan-miss {
  margin: 8px 0 2px; font-size: 12.5px; color: #b07d16; font-weight: 600;
}
#sub-ledger .lg-scan-btns { display: flex; gap: 9px; margin-top: 13px; }

#sub-ledger .lg-scan-spin {
  flex: none; width: 15px; height: 15px; border-radius: 50%;
  border: 2px solid rgba(249, 89, 1, .22); border-top-color: var(--primary, #f95901);
  animation: lg-spin .7s linear infinite;
}
@keyframes lg-spin { to { transform: rotate(360deg); } }

#sub-ledger /* ============================= Toast ============================= */

.lg-toast {
  position: fixed; left: 50%; bottom: 96px; transform: translateX(-50%);
  max-width: 84vw; padding: 11px 18px; border-radius: 13px; z-index: 60;
  background: rgba(46, 36, 28, .94); color: #fff; font-size: 13.5px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, .22); text-align: center; line-height: 1.5;
  animation: lg-toast-in .22s cubic-bezier(.22, 1, .36, 1);
}
@keyframes lg-toast-in { from { opacity: 0; transform: translate(-50%, 10px); } to { opacity: 1; transform: translate(-50%, 0); } }
#sub-ledger .lg-toast.good { background: rgba(24, 96, 70, .95); }
#sub-ledger .lg-toast.bad { background: rgba(160, 46, 40, .95); }
#sub-ledger .lg-toast.warn { background: rgba(150, 104, 18, .95); }

#sub-ledger /* ============================= 窄屏收紧 ============================= */

@media (max-width: 380px) {
  #sub-ledger .lg-mcard-num { font-size: 33px; }
  #sub-ledger .lg-in { font-size: 15.5px; padding: 14px 14px; }
  #sub-ledger .lg-go { font-size: 14.5px; }
  #sub-ledger .lg-cam { padding: 0 14px; font-size: 13.5px; }
  #sub-ledger .lg-scan-in { font-size: 28px; }
  #sub-ledger .lg-rpt-nums { gap: 7px; }
}

/* 记账专属图标配色 —— 本文件在 style.css 之后加载，
   所以这里新增的类名安全（不改 style.css，避免与并发会话互相覆盖）。

   ⚠️ 2026-09-19 用户反馈墨绿"不好看"。这格颜色**改过三版**，别再凭感觉挑：

   【一代】墨绿 #7fd6b4→#1a5748 —— 用户说"不好看"。
        根因：① 色相和「表格助手」的 f-green 同族；② emoji 算盘(🧮)本体是"浅木框+红珠"的暖色，
        配墨绿 = **两个暗色糊在一起**。
   【二代】深宝蓝 #5b83f0→#1e3a78 —— **只活了十几分钟就撤了**。
        撤的理由是硬的：跑 `tools/audit-icon-colors.cjs` 发现它色相 **221°**，
        而同一行右边的「Word助手」是 **217°**、下方「股权专家」213° —— **差 4~8°，等于同一个蓝**。
        教训：**只看自己的卡"好不好看"是不够的，必须看同屏所有卡的色相。**
   【三代·当前】深洋红 #b95aa8→#5f1157（色相约 310°）——
        用脚本把 14 张卡的色相全算出来后，**310° 是色相环上唯一的空位**
        （离最近占用色 50°，其余可选位都在 37° 以下；90°/95° 那片是黄绿，夹在金黄与绿之间会发脏）。
        记账卡的上/下/右邻居分别是 15° / 35° / 189° → 拉开 65° / 85° / 121°，怎么排都不撞。

   🔧 再改之前**必须先跑** `node tools/audit-icon-colors.cjs`（审线上老板板块，有撞色会 exit 1）。
      它会打印每张卡的实际色相 + 所有"相差 ≤30°"的配对。**别用肉眼比色。**

   【四代·当前】用户指定要「黄金钩子文案」那个粉 —— `#ffa7c0 → #ec4899`（色相 330°）。
        ⚠️ 这个值是从**线上计算样式**读出来的，不是照抄 style.css：那个 `.f-pink` 被
        `boss-hero-polish.css` 局部覆盖过（老板板块的「老板AI音乐」HTML 里也写着 `f-pink`，
        但实际显示青绿），所以 **f-pink 的定义值 ≠ 它在别处的渲染值**，只能读不能抄。
        📊 撞色实测：离最近占用色 **30°**（雷布斯顾问的红 0°，在第 14 位、隔了 10 张卡不会同屏）；
        左邻老板笔记 15° 差 45°、其余邻居 174°/189°/35° 差 65~156°。
        ➡️ 比上一版洋红（离最近 48°）更近一些，但**用户点名要，按用户来**。
        🔴 若日后要换：330° 的邻居区是 0°/15°/21° 那片暖红橙，很挤；
        色相环上最干净的位置仍是 **305~310°**（离最近占用色 47~50°）。 */
.f-ledger { background: linear-gradient(135deg, #ffa7c0 0%, #ec4899 100%); }
