/* 跑单收益网页版 · 样式（视觉基准 = 跑单系统效果图.html）
 * 亮色 = 效果图原样；暗色 = 同色系深底浅字。手机优先单列。
 */

/* ===== 主题变量 ===== */
:root, html[data-theme="light"] {
  --bg: #f2f2f6;
  --card: #ffffff;
  --border: #ececf0;
  --text: #3a3a3a;
  --k: #55555e;
  --v: #333333;
  --muted: #b0b0b8;
  --dashed: #eee2ec;
  --banner-bg: linear-gradient(90deg, #fbe0eb 0%, #f6e9dd 50%, #d9ecd4 100%);
  --banner-border: #f0dde4;
  --green: #1fa856;
  --red: #d64545;
  --orange: #d97a2b;
  --teal: #177e8c;
  --pink: #e0558a;
  --hl-bg: #fdf6d8;    --hl-k: #7a5d13;   --hl-v: #7a5d13;
  --hl2-bg: #eaf7ee;   --hl2-k: #1c7a42;  --hl2-v: #1c7a42;
  /* v3.55 冲刺目标横幅进度红绿灯（三档：红<30% / 黄30-99% / 绿≥100%）亮色 */
  --band-red-bg: #fbe4e2;  --band-red-k: #b03a30;  --band-red-v: #c0392b;
  --band-green-bg: #dff2e3; --band-green-k: #2e6b45; --band-green-v: #2e7d4f;
  --band-none-bg: #e1eaf6; --band-none-k: #33618f; --band-none-v: #2f6394; /* v3.90：未填收益淡蓝，防误读成30%+ */
  --badge-green-bg: #eaf7ee; --badge-green-tx: #1fa856; --badge-green-bd: #bfe6cc;
  --badge-red-bg: #fdeaea;   --badge-red-tx: #d64545;   --badge-red-bd: #f2c6c6;
  --badge-white-bg: #ffffff; --badge-white-tx: #222222; --badge-white-bd: #e5e5ea;
  --badge-orange-bg: #fdf1e3; --badge-orange-tx: #d97a2b; --badge-orange-bd: #f2d9bd;
  --sum-bg: #e1eaf6; --sum-bd: #c5d6ee; --sum-k: #33618f; /* v3.101：汇总徽章淡蓝（亮） */
  --th-bg: #f2f8ef;   --th-tx: #3d8b57;
  --wk-bg: #fdf6d8;   --wk-tx: #c9a94e;  --wk-cur-bg: #8fcf9f; --wk-cur-tx: #ffffff;
  --td-bg: #fbfbfd;
  --cal-line: #e4e4ec;
  --today-bg: #fbdcea;
  --rest-bg: #f3edf7; --rest-tx: #b9a8c9;
  --bar-bg: #f0eef2;
  --bar-fill: linear-gradient(90deg, #8fcf9f, #5ab873);
  --input-bg: #fbfbfd;
  --lock-bg: #eaeaef;  --lock-bd: #d8d8df; /* v3.81：输入框锁定态实灰底/灰边（亮色） */
  --sess-am-bg: #fdf8ee;  --sess-am-bd: #efb04a;  --sess-am-head: #a06a10;
  --ref-base-bg: #fdf1e3; --ref-base-bd: #f2d9bd; --ref-base-tx: #d97a2b;
  --ref-adv-bg: #efe9f8;  --ref-adv-bd: #d8ccef;  --ref-adv-tx: #7a4fd0;
  --sess-pm-bg: #eef8f1;  --sess-pm-bd: #5ab873;  --sess-pm-head: #1c7a42;
  --sess-day-bg: #f4f4f7; --sess-day-bd: #c9c9d2; --sess-day-head: #6b6b75;
  --fill-am-bd: #f2ddb0; --fill-pm-bd: #c4e3cc;
  --teal-bg: #e6f4f5; --teal-bd: #bfe0e3; --teal-tx: #1a7f8c;
  --mask: rgba(0, 0, 0, 0.45);
  --shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}
html[data-theme="dark"] {
  --bg: #17171c;
  --card: #222229;
  --border: #33333d;
  --text: #e8e8ee;
  --k: #b9b9c4;
  --v: #f2f2f7;
  --muted: #7c7c8a;
  --dashed: #3a3a44;
  --banner-bg: linear-gradient(90deg, #3a2430 0%, #332b26 50%, #22301f 100%);
  --banner-border: #3d2b35;
  --green: #4cd07d;
  --red: #ff7070;
  --orange: #f5a05a;
  --teal: #4fc0cf;
  --pink: #f278a9;
  --hl-bg: #3d3418;   --hl-k: #f0d878;   --hl-v: #f0d878;
  --hl2-bg: #1d3a28;  --hl2-k: #7fe0a4;  --hl2-v: #7fe0a4;
  /* v3.55 红绿灯暗色成对 */
  --band-red-bg: #42282a;  --band-red-k: #ef9d94;  --band-red-v: #f0938a;
  --band-green-bg: #24402c; --band-green-k: #8fd6a8; --band-green-v: #7fd6a0;
  --band-none-bg: #243447; --band-none-k: #8fb8e0; --band-none-v: #8ab6e2;
  --badge-green-bg: #1d3a28; --badge-green-tx: #7fe0a4; --badge-green-bd: #2c5a3d;
  --sum-bg: #243447; --sum-bd: #3a5578; --sum-k: #8fb8e0; /* v3.101：汇总徽章淡蓝（暗） */
  --badge-red-bg: #3d2020;   --badge-red-tx: #ff9090;   --badge-red-bd: #5a3030;
  --badge-white-bg: #2b2b33; --badge-white-tx: #e8e8ee; --badge-white-bd: #3d3d48;
  --badge-orange-bg: #3a2b18; --badge-orange-tx: #f5a05a; --badge-orange-bd: #5a4526;
  --th-bg: #232c23;   --th-tx: #7fc89a;
  --wk-bg: #3a3418;   --wk-tx: #d8bc5e;  --wk-cur-bg: #3f7a52; --wk-cur-tx: #ffffff;
  --td-bg: #26262e;
  --cal-line: #3a3a44;
  --today-bg: #3c2531;
  --rest-bg: #2f2836; --rest-tx: #a893bd;
  --bar-bg: #33333d;
  --bar-fill: linear-gradient(90deg, #4a9a63, #3f8a56);
  --input-bg: #1c1c22;
  --lock-bg: #2b2b33;  --lock-bd: #41414c; /* v3.81：输入框锁定态实灰底/灰边（暗色） */
  --sess-am-bg: #33291a;  --sess-am-bd: #8a6a2a;  --sess-am-head: #f0d878;
  --ref-base-bg: #3a2b18; --ref-base-bd: #5a4526; --ref-base-tx: #f5a05a;
  --ref-adv-bg: #2c2440;  --ref-adv-bd: #4a3d6e;  --ref-adv-tx: #b39be8;
  --sess-pm-bg: #1a2e22;  --sess-pm-bd: #2c5a3d;  --sess-pm-head: #7fe0a4;
  --sess-day-bg: #26262e; --sess-day-bd: #3d3d48; --sess-day-head: #9a9aa8;
  --fill-am-bd: #5a4526; --fill-pm-bd: #2c5a3d;
  --teal-bg: #16333a; --teal-bd: #2c5a63; --teal-tx: #7fd8e0;
  --mask: rgba(0, 0, 0, 0.6);
  --shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
}

/* ===== 基础 ===== */
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
  font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
  background: var(--bg); color: var(--text);
  padding: 24px 12px;
  display: flex; justify-content: center;
  transition: background 0.2s;
}
.board { width: 820px; max-width: 100%; }
.card {
  background: var(--card); border: 1px solid var(--border); border-radius: 18px;
  padding: 16px 18px; box-shadow: var(--shadow); margin-bottom: 14px;
}
.row { display: flex; gap: 14px; }
.row > .card { flex: 1; margin-bottom: 14px; }
/* v3.25：align-top 的 flex-start 挪到桌面媒体查询——手机 column 下它会连水平拉伸一起关掉，卡片缩成内容宽 */

/* ===== 口令门 ===== */
.gate {
  position: fixed; inset: 0; background: var(--bg);
  display: flex; align-items: center; justify-content: center; z-index: 50;
  padding: 16px;
}
.gate[hidden] { display: none; }
.gate-card {
  background: var(--card); border: 1px solid var(--border); border-radius: 18px;
  padding: 32px 28px; width: 320px; max-width: 100%; text-align: center;
  box-shadow: var(--shadow);
}
.gate-logo { font-size: 40px; }
.gate-name { font-size: 19px; font-weight: 800; margin-top: 8px; color: var(--text); }
.gate-sub { font-size: 12.5px; color: var(--muted); margin: 6px 0 18px; }
.gate-card input {
  width: 100%; padding: 11px 14px; border: 1px solid var(--border); border-radius: 12px;
  font-size: 16px; text-align: center; background: var(--input-bg); color: var(--text);
  outline: none; margin-bottom: 12px;
}
.gate-card input:focus { border-color: var(--green); }
.gate-card button {
  width: 100%; padding: 11px; border: none; border-radius: 12px;
  background: var(--green); color: #fff; font-size: 15px; font-weight: 800; cursor: pointer;
}
.gate-card button:active { opacity: 0.85; }
.gate-err { font-size: 12.5px; color: var(--red); margin-top: 10px; min-height: 16px; }

/* ===== 顶部横幅 ===== */
.banner {
  background: var(--banner-bg); border: 1px solid var(--banner-border);
  border-radius: 18px; padding: 16px 22px; margin-bottom: 14px;
  display: flex; align-items: center; gap: 14px;
}
.banner .logo { font-size: 30px; }
.banner .name { font-size: 19px; font-weight: 800; color: var(--text); }
.banner .slogan { font-size: 12px; color: var(--muted); margin-top: 2px; }
.datechip {
  margin-left: auto; background: var(--card); border-radius: 10px; padding: 6px 14px;
  font-size: 13px; font-weight: 800; color: var(--text); border: 1px solid var(--border);
  white-space: nowrap;
}
.theme-btn {
  border: 1px solid var(--border); background: var(--card); border-radius: 10px;
  width: 30px; height: 30px; padding: 0; cursor: pointer; color: var(--text);
  display: inline-flex; align-items: center; justify-content: center; flex: none;
}
.theme-btn svg { width: 16px; height: 16px; display: block; }
.theme-btn .icon-sun { display: none; }
html[data-theme="dark"] .theme-btn .icon-sun { display: block; }
html[data-theme="dark"] .theme-btn .icon-moon { display: none; }
.save-state { font-size: 12px; font-weight: 700; color: var(--muted); white-space: nowrap; }
.save-state.ok { color: var(--green); }
.save-state.err { color: var(--red); }

/* ===== 顶部指标卡 ===== */
.top-cards { display: flex; gap: 12px; margin: 0 auto 14px; justify-content: center; }
.stat-card {
  flex: 0 1 auto; background: var(--card); border: 1px solid var(--border); border-radius: 18px;
  padding: 16px 18px; display: flex; align-items: center; gap: 10px;
  box-shadow: var(--shadow);
}
.stat-icon {
  width: 42px; height: 42px; border-radius: 12px; background: #fdf1d7;
  display: flex; align-items: center; justify-content: center; font-size: 21px;
  flex-shrink: 0;
}
html[data-theme="dark"] .stat-icon { background: #3a3418; }
.stat-icon.teal { background: #e3f2ee; }
.stat-icon.pink { background: #fbdcea; }
html[data-theme="dark"] .stat-icon.teal { background: #1d3330; }
html[data-theme="dark"] .stat-icon.pink { background: #3c2531; }
.stat-label { font-size: 14px; font-weight: 600; color: var(--k); white-space: nowrap; }
.stat-sub { font-size: 11px; color: var(--pink); font-weight: 600; margin-top: 2px; white-space: nowrap; }
.stat-value { font-size: 24px; font-weight: 800; white-space: nowrap; }
.stat-value.green { color: var(--green); }
.stat-value.teal  { color: var(--teal); }
.stat-value.orange{ color: var(--orange); }

/* ===== 区块标题条 ===== */
.sec-header {
  background: var(--banner-bg); border-radius: 12px; padding: 8px 14px;
  display: flex; align-items: center; gap: 10px; margin-bottom: 12px; flex-wrap: wrap;
}
.sec-header .title { font-size: 15px; font-weight: 800; color: var(--text); }
.badge { border-radius: 8px; padding: 3px 10px; font-size: 13px; font-weight: 800; }
.badge.green { background: var(--badge-green-bg); color: var(--badge-green-tx); border: 1px solid var(--badge-green-bd); }
.badge.red   { background: var(--badge-red-bg);   color: var(--badge-red-tx);   border: 1px solid var(--badge-red-bd); }
.badge.white { background: var(--badge-white-bg); color: var(--badge-white-tx); border: 1px solid var(--badge-white-bd); }
.badge.orange{ background: var(--badge-orange-bg); color: var(--badge-orange-tx); border: 1px solid var(--badge-orange-bd); }
/* v3.66：月历卡右上角月份徽标放大（只作用这一处，其他 badge 不变）
   v3.67：手机 16.5→18px；电脑 ≥721px 20px
   v3.69：改正方形+相对横幅上下居中——绝对定位挂在 .sec-header.stack（仅月历卡使用）右侧垂直居中，脱离文档流不挤压其他行
   v3.70：宽度改自适应+左右内边距 14/16px（v3.69 死宽 44/48 里文字左右贴边、上下空），高度不变保持居中比例
   v3.71：回归正方形 56/62px（柱哥确认要方方正正；方块放大到文字+左右各 ~9px 边距，四边留白匀称）
   v3.72：白底改磨砂白 → 柱哥改选 B 奶油暖白：底色 #fff5f0（带粉调暖白）+淡粉描边 #f2d8c8 同横幅色系，柔和不突兀；暗色主题徽标本是深灰底不受影响
   v3.74：柱哥不要描边——去掉边框（.badge.white 基础描边一并覆盖为 none），纯底色方块；暗色主题恢复规则同步去边框 */
.sec-header.stack { position: relative; }
.badge.white.right#calMonth {
  position: absolute; right: 10px; top: 50%; transform: translateY(-50%);
  width: 56px; height: 56px; padding: 0; margin: 0;
  display: flex; align-items: center; justify-content: center;
  font-size: 18px; border-radius: 12px;
  background: #fff5f0;
  border: none;
}
@media (min-width: 721px) {
  .badge.white.right#calMonth { width: 62px; height: 62px; font-size: 20px; border-radius: 13px; }
}
/* v3.72：暗色主题徽标恢复原深灰底（暖白只作用亮色）；v3.74：描边一并去掉 */
html[data-theme="dark"] .badge.white.right#calMonth {
  background: var(--badge-white-bg); border: none;
}
.sec-header .right { margin-left: auto; }

/* ===== 今日收益目标：上下午分组 ===== */
.session {
  border-radius: 10px; padding: 2px 12px 4px 9px; margin: 10px 0;
  border-left: 3px solid;
}
.session .drow { padding-left: 0; padding-right: 0; }
.session .session-head { padding-left: 0; }
.session.am  { background: var(--sess-am-bg);  border-color: var(--sess-am-bd); }
.session.pm  { background: var(--sess-pm-bg);  border-color: var(--sess-pm-bd); }
.session.day { background: var(--sess-day-bg); border-color: var(--sess-day-bd); }
.session-head { font-size: 12.5px; font-weight: 800; padding: 9px 4px 3px; }
.session.am  .session-head { color: var(--sess-am-head); }
.session.pm  .session-head { color: var(--sess-pm-head); }

/* 月历标题条专用：两行结构（上行=标题+月份，下行=金额并排） */
.sec-header.stack { flex-direction: column; align-items: stretch; gap: 8px; flex-wrap: nowrap; }
.sec-header.stack .sec-top { display: flex; align-items: center; gap: 10px; }
.sec-header.stack .sec-amounts { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }

/* ===== 通用数据行 ===== */
.drow {
  display: flex; justify-content: space-between; align-items: center;
  padding: 7px 12px; border-bottom: 1px dashed var(--dashed); font-size: 14px; gap: 10px;
}
.drow:last-child { border-bottom: none; }
.drow .k { color: var(--k); font-weight: 500; }
.drow .v { font-weight: 700; color: var(--v); white-space: nowrap; }
.drow .v.green { color: var(--green); }
.drow .v.red   { color: var(--red); }
.drow .v.orange{ color: var(--orange); }
.drow .v.gray  { color: var(--muted); font-weight: 500; }
.drow .small { font-size: 11.5px; color: var(--muted); font-weight: 500; }
.drow.hl {
  background: var(--hl-bg); border-radius: 10px; border-bottom: none;
  padding: 9px 12px; margin-top: 3px;
}
.drow.hl .k { font-weight: 800; color: var(--hl-k); }
.drow.hl .v { font-size: 19px; color: var(--hl-v); }
.drow.hl2 {
  background: var(--hl2-bg); border-radius: 10px; border-bottom: none;
  padding: 9px 12px; margin-top: 3px;
}
.drow.hl2 .k { font-weight: 800; color: var(--hl2-k); }
.drow.hl2 .v { font-size: 19px; color: var(--hl2-v); }
.note { font-size: 11px; color: var(--muted); margin-top: 8px; padding: 0 12px; }
/* v3.39：下午怎么跑卡——黄底行 + 三格对照（近单格绿色高亮） */
.plan-card .near-row {
  background: var(--hl-bg); border-radius: 10px; padding: 10px 12px;
  display: flex; justify-content: space-between; align-items: center;
}
.plan-card .near-row .k { font-size: 14px; font-weight: 800; color: var(--hl-k); }
.plan-card .near-row .v { font-size: 19px; font-weight: 800; color: var(--hl-v); }
.plan-card .ref-row { display: flex; gap: 8px; margin-top: 8px; }
.plan-card .ref-cell {
  flex: 1; background: var(--bar-bg); border: 1px solid var(--cal-line);
  border-radius: 10px; padding: 8px 6px; text-align: center;
}
.plan-card .ref-cell .r-num { font-size: 16px; font-weight: 800; color: var(--k); }
.plan-card .ref-cell .r-label { font-size: 11px; color: var(--muted); margin-top: 2px; font-weight: 600; }
.plan-card .ref-cell.hot { background: var(--hl2-bg); border-color: var(--badge-green-bd); }
.plan-card .ref-cell.hot .r-num { color: var(--badge-green-tx); }
/* v3.39d：基础/进阶分色——基础淡橙、进阶淡青（亮暗成对变量） */
.plan-card .ref-cell.base { background: var(--ref-base-bg); border-color: var(--ref-base-bd); }
.plan-card .ref-cell.base .r-num { color: var(--ref-base-tx); }
.plan-card .ref-cell.adv { background: var(--ref-adv-bg); border-color: var(--ref-adv-bd); }
.plan-card .ref-cell.adv .r-num { color: var(--ref-adv-tx); }
/* v3.42：今日统计并入 plan-card——第二行三块同族网格（几何复用 ref-cell，仅配色不同） */
/* v3.56：mini-cap「📊 今日统计」标题删除（v3.48 同理），两排格子用间距区分 */
.plan-card .ref-row + .ref-row { margin-top: 10px; }
.plan-card .ref-cell.st-total .r-num { color: var(--v); }
.plan-card .ref-cell.st-remain { background: var(--hl-bg); border-color: var(--fill-am-bd); } /* v3.61：补边框与同卡一致 */
.plan-card .ref-cell.st-remain .r-num { color: var(--hl-v); }
.plan-card .ref-cell.st-remain .r-label { color: var(--hl-k); font-weight: 800; }
.plan-card .ref-cell.st-ran { background: var(--hl2-bg); border-color: var(--badge-green-bd); } /* v3.61：补边框与同卡 hot 格一致 */
.plan-card .ref-cell.st-ran .r-num { color: var(--hl2-v); }
.plan-card .ref-cell.st-ran .r-label { color: var(--hl2-k); font-weight: 800; }
.plan-card .ref-cell .r-label .s-sub { font-weight: 500; }
/* 周汇总：日期区间整体换行不拆日期 */
.wk-range { white-space: nowrap; }
/* v3.65（A 方案）：周汇总紧凑表格——一行一周，div grid 实现便于桌面端拉伸填满卡高 */
.wkt-head, .wkt-row { display: grid; grid-template-columns: minmax(0,1.35fr) 1.05fr .62fr .95fr; gap: 6px; align-items: center; }
.wkt-head { font-size: 10.5px; font-weight: 700; color: var(--muted); padding: 2px 4px 7px; border-bottom: 1px solid var(--cal-line); }
.wkt-head span:not(:first-child) { text-align: right; }
.wkt-row { padding: 8px 4px; border-bottom: 1px dashed var(--cal-line); }
.wkt-row:last-child { border-bottom: none; }
.wkt-name { font-size: 12px; font-weight: 600; color: var(--k); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wkt-name small { display: block; font-weight: 500; color: var(--muted); font-size: 10px; margin-top: 1px; }
.wkt-earn { font-size: 14.5px; font-weight: 800; text-align: right; white-space: nowrap; color: var(--v); }
.wkt-earn em { font-style: normal; font-size: 11px; font-weight: 600; color: var(--muted); }
.wkt-earn.green { color: var(--green); }
.wkt-earn.red { color: var(--red); }
.wkt-diff { font-size: 11.5px; font-weight: 700; color: var(--red); text-align: right; white-space: nowrap; }
.wkt-diff.none { color: var(--muted); font-weight: 600; }
.wkt-prog { display: flex; align-items: center; gap: 5px; justify-content: flex-end; }
.wkt-bar { flex: 1; max-width: 54px; height: 5px; border-radius: 3px; background: var(--bar-bg); overflow: hidden; }
.wkt-bar i { display: block; height: 100%; border-radius: 3px; background: var(--red); }
.wkt-bar i.ok { background: var(--green); }
.wkt-prog em { font-style: normal; font-size: 10.5px; color: var(--muted); font-weight: 600; min-width: 30px; text-align: right; }
.wkt-row.future .wkt-name, .wkt-row.future .wkt-earn, .wkt-row.future .wkt-diff { color: var(--muted); }
.wkt-row.future .wkt-earn { font-size: 12.5px; font-weight: 600; }
/* v3.15：周汇总「本周」小标 */
.wk-now { display: inline-block; margin-left: 2px; padding: 0 7px; font-size: 10.5px; font-weight: 700;
          line-height: 17px; color: var(--pink); border: 1px solid var(--pink); border-radius: 9px;
          vertical-align: 1.5px; white-space: nowrap; }
.catch-date {
  margin-top: 10px; padding: 10px 12px; border-radius: 10px;
  background: var(--hl-bg); border-left: 3px solid var(--green);
  display: flex; justify-content: space-between; align-items: center; gap: 10px;
}
.catch-date .k { font-size: 13px; font-weight: 700; color: var(--hl-k); white-space: nowrap; }
.catch-date .fc { font-size: 11.5px; font-weight: 600; color: var(--muted); white-space: nowrap; }
.catch-date .date { font-size: 17px; font-weight: 800; color: var(--green); white-space: nowrap; }
/* v3.68（B 空态智能版）：「填」默认隐藏，仅输入框被清空（.price-item.empty）时出现，填上自动消失 */
.input-hint {
  display: none; background: #fff59d; border-radius: 5px;
  padding: 0 6px; font-size: 11px; color: #7a5d13; font-weight: 700; margin-left: 6px;
}
.price-item.empty .input-hint { display: inline-block; }
html[data-theme="dark"] .input-hint { background: #4a4018; color: #f0d878; }

/* ===== 输入框 ===== */
.num-input {
  width: 72px; border: 1px solid var(--border); border-radius: 8px;
  padding: 5px 7px; text-align: right; background: var(--input-bg); color: var(--text);
  font-weight: 700; font-size: 14px; outline: none; flex-shrink: 0;
  font-family: inherit;
}
.num-input:focus { border-color: var(--green); }
/* v3.40：今日弹窗收益/单量只读态（自动联动值；muted 变量亮暗成对） */
.num-input[readonly] { background: transparent; border-style: dashed; color: var(--muted); }
/* 按内容位数分档：天数/单数 48px · 小时 60px · 金额 76px */
.num-input.w-sm { width: 48px; }
.num-input.w-md { width: 60px; }
.num-input.w-lg { width: 76px; }
.drow .field { display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0; }
.drow .unit { color: var(--k); font-size: 12.5px; font-weight: 600; }
/* 单价基准三列并排 */
.price-row { display: flex; align-items: stretch; }
.price-item {
  flex: 1; display: flex; flex-direction: column; align-items: center;
  gap: 5px; padding: 9px 4px 10px;
}
.price-item + .price-item { border-left: 1px dashed var(--dashed); }
.price-item .p-label { font-size: 11.5px; font-weight: 600; color: var(--k); white-space: nowrap; }
.price-item .p-val { font-size: 15px; font-weight: 800; color: var(--v); white-space: nowrap; }
.price-item .p-val.green { color: var(--green); }
.price-item .p-val.red { color: var(--red); }
.row-note { font-size: 10.5px; color: var(--muted); text-align: center; padding: 2px 0 6px; }
.price-item .field { display: inline-flex; align-items: center; gap: 6px; } /* v3.85b：补 flex 布局（原 span 无 display，gap 从未生效），「元」与输入框间隙 6px */
.price-row .num-input { text-align: center; } /* v3.85：单价基准输入数字居中（全局右对齐规则只保留给弹窗等场景） */
.price-item .unit { font-size: 11.5px; }
/* v3.62：月度数据两排醒目化——彩底描边格（照彩格铁律，亮暗变量成对） */
.price-row.data-row { gap: 8px; margin-top: 10px; }
.price-row.data-row .price-item { border-radius: 10px; padding: 10px 4px 11px; border: 1px solid transparent; }
.price-row.data-row .price-item .p-label { font-size: 12px; font-weight: 700; }
.price-row.data-row .price-item .p-val { font-size: 17px; font-weight: 800; }
.price-row.data-row .p-green  { background: var(--badge-green-bg); border-color: var(--badge-green-bd); }
.price-row.data-row .p-red    { background: var(--badge-red-bg);   border-color: var(--badge-red-bd); }
.price-row.data-row .p-teal   { background: var(--teal-bg);        border-color: var(--teal-bd); }
.price-row.data-row .p-yellow { background: var(--hl-bg);          border-color: var(--fill-am-bd); }
.price-row.data-row .p-purple { background: var(--ref-adv-bg);     border-color: var(--ref-adv-bd); }
.price-row.data-row .p-green  .p-label, .price-row.data-row .p-green  .p-val { color: var(--badge-green-tx); }
.price-row.data-row .p-red    .p-label, .price-row.data-row .p-red    .p-val { color: var(--badge-red-tx); }
.price-row.data-row .p-teal   .p-label, .price-row.data-row .p-teal   .p-val { color: var(--teal-tx); }
.price-row.data-row .p-yellow .p-label, .price-row.data-row .p-yellow .p-val { color: var(--hl-k); }
.price-row.data-row .p-purple .p-label, .price-row.data-row .p-purple .p-val { color: var(--ref-adv-tx); }
/* 今日统计三列并排 */
.stat-row { display: flex; align-items: stretch; gap: 6px; padding: 8px 8px 9px; }
.stat-item {
  flex: 1; display: flex; flex-direction: column; align-items: center;
  gap: 3px; padding: 8px 2px; border-radius: 9px; min-width: 0;
}
.stat-item.hl { background: var(--hl-bg); }
.stat-item.hl2 { background: var(--hl2-bg); }
.stat-item .s-label { font-size: 11.5px; font-weight: 600; color: var(--k); white-space: nowrap; }
.stat-item.hl .s-label { color: var(--hl-k); font-weight: 800; }
.stat-item.hl2 .s-label { color: var(--hl2-k); font-weight: 800; }
.stat-item .s-val { font-size: 18px; font-weight: 800; color: var(--v); white-space: nowrap; }
.stat-item.hl .s-val { color: var(--hl-v); }
.stat-item.hl2 .s-val { color: var(--hl2-v); }
.stat-item .s-sub { display: block; font-size: 9.5px; color: var(--muted); font-weight: 500; }
/* 手机端 16px 防 iOS 缩放（对焦时） */
@media (max-width: 720px) {
  .num-input { font-size: 16px; }
}

/* ===== 月历 ===== */
table { width: 100%; border-collapse: collapse; table-layout: fixed; }
th {
  font-size: 12.5px; color: var(--th-tx); font-weight: 700; padding: 5px 0;
  background: var(--th-bg); border: 1px solid var(--cal-line);
}
th.week-h { width: 44px; background: var(--wk-bg); color: var(--wk-tx); }
td { background: var(--td-bg); border: 1px solid var(--cal-line); padding: 0; vertical-align: top; }
td.wk { background: var(--wk-bg); text-align: center; vertical-align: top; }
td.wk .w { font-size: 13px; font-weight: 800; color: var(--wk-tx); }
td.wk.cur { background: var(--wk-bg); }
/* v3.38：所有周格统一套 .wkcur 顶格块（高度 JS 同步同行天方块）→ W 字位置全部一致；本周格绿底 */
td.wk .wkcur {
  display: flex; align-items: center; justify-content: center;
  height: 100%; /* JS 未接管前兜底 */
}
td.wk.cur .wkcur { background: var(--wk-cur-bg); }
td.wk.cur .w { color: var(--wk-cur-tx); }
td.day { cursor: pointer; }
td:not(.day) { cursor: default; }
td.day:hover:not(.empty) { outline: 2px solid var(--green); outline-offset: -2px; }
td.day.empty { background: transparent; cursor: default; }
td.day.empty .dnum { color: var(--muted); opacity: 0.55; }
.dcell { display: flex; flex-direction: column; align-items: center; }
.dsq { width: 100%; aspect-ratio: 1 / 1; position: relative; }
.dnum { position: absolute; top: 3px; right: 6px;
        font-size: 16px; font-weight: 700; color: var(--v); }
/* v3.35：今天高亮只作用于天号方块，金额/单量不吃粉底 */
td.today:not(.empty) { background: var(--td-bg); }
td.today:not(.empty) .dsq { background: var(--today-bg); }
.amt { text-align: center; font-size: 15px; font-weight: 800;
       width: 88%; padding-top: 4px; border-top: 1px dashed var(--dashed); }
.amt .earn { color: var(--green); }
.amt .rest { color: var(--rest-tx); }
.amt.none  { color: var(--muted); opacity: 0.5; font-weight: 500; }
.cnt { text-align: center; font-size: 14px; font-weight: 700; margin-top: 3px;
       margin-bottom: 6px; width: 88%; }
.cnt .orders { color: var(--orange); }
.cnt.none { color: var(--muted); opacity: 0.4; }
.legend-row {
  display: flex; justify-content: center; gap: 18px; margin-top: 10px; flex-wrap: wrap;
  font-size: 11.5px; color: var(--muted);
}
.legend-row b { font-weight: 800; }
.legend-row .g { color: var(--green); } .legend-row .o { color: var(--orange); }
.legend-row .p { color: var(--pink); }  .legend-row .pu { color: var(--rest-tx); }

/* ===== 进度条 ===== */
.bar-wrap { background: var(--bar-bg); border-radius: 8px; height: 18px; overflow: hidden; margin-top: 6px; }
.bar-fill { height: 100%; width: 0%; background: var(--bar-fill); border-radius: 8px; transition: width 0.3s; }
.bar-meta { display: flex; justify-content: space-between; margin-top: 5px; font-size: 11.5px; color: var(--muted); gap: 8px; }
.bar-meta .warn { color: var(--red); font-weight: 700; text-align: right; }

/* ===== 弹窗 ===== */
.modal-mask {
  position: fixed; inset: 0; background: var(--mask); z-index: 40;
  display: flex; align-items: center; justify-content: center; padding: 16px;
}
.modal-mask[hidden] { display: none; }
.modal-card {
  background: var(--card); border: 1px solid var(--border); border-radius: 18px;
  padding: 22px; width: 340px; max-width: 100%; box-shadow: var(--shadow);
}
.modal-title { font-size: 17px; font-weight: 800; margin-bottom: 12px; color: var(--text); }
.rest-label { font-size: 14px; color: var(--k); display: flex; align-items: center; gap: 6px; }
.modal-btns { display: flex; gap: 10px; margin-top: 18px; }
.m-btn {
  flex: 1; padding: 10px 0; border: none; border-radius: 10px; cursor: pointer;
  background: var(--green); color: #fff; font-size: 14px; font-weight: 800;
}
.m-btn.gray { background: var(--bar-bg); color: var(--k); }
.m-btn:active { opacity: 0.85; }
/* v3.41：收工锁期间弹窗禁改态（休标记/保存/清空灰化，亮暗都吃变量） */
.m-btn:disabled { opacity: 0.45; cursor: default; }
.modal-card.day-locked .rest-label { color: var(--muted); }

/* ===== 月份选择弹窗 ===== */
#calMonth { cursor: pointer; }
.mp-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.mp-title { font-size: 17px; font-weight: 800; color: var(--text); }
.mp-nav {
  width: 34px; height: 34px; border: 1px solid var(--border); border-radius: 9px;
  background: var(--card); color: var(--k); font-size: 18px; cursor: pointer;
}
.mp-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.mp-m {
  padding: 10px 0; border-radius: 9px; border: 1px solid var(--border);
  background: var(--card); color: var(--v); font-size: 14px; font-weight: 700; cursor: pointer;
}
.mp-m.sel { background: var(--hl-bg); color: var(--hl-k); border-color: transparent; }
.mp-m.cur { background: var(--wk-cur-bg); color: #ffffff; border-color: transparent; }
/* v3.81：锁定态改实灰底+灰边（不用 opacity——收益框是空的，透明度变化看不出来，柱哥实测） */
.num-input:disabled { opacity: 1; color: var(--muted); background: var(--lock-bg); border-color: var(--lock-bd); }
/* v3.57：单价基准锁后不灰化——仍 disabled 拦输入，但外观保持普通态（只靠🔒图标示意锁定） */
.price-row .num-input:disabled { opacity: 1; color: var(--text); background: var(--input-bg); }

.foot { font-size: 11.5px; color: var(--muted); text-align: center; margin-top: 4px; }

/* ===== 手机优先（窄屏单列） ===== */
@media (max-width: 720px) {
  body { padding: 12px 8px; }
  .banner { padding: 12px 12px; gap: 8px; flex-wrap: nowrap; }
  .banner .logo { font-size: 22px; }
  .banner > div { flex: 1; min-width: 0; }
  .banner .name { font-size: 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .banner .slogan { font-size: 10px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .save-state { font-size: 10px; }
  .datechip { margin-left: 0; width: auto; order: 0; padding: 5px 10px; font-size: 12px; }
  .top-cards { flex-direction: column; gap: 10px; }
  .row { flex-direction: column; gap: 0; }
  .card { padding: 14px 12px; }
  .drow { font-size: 13.5px; }
  .drow .v { white-space: normal; text-align: right; }
  .drow.hl .v, .drow.hl2 .v { font-size: 17px; }
  th { font-size: 10px; padding: 4px 0; }
  th.week-h { width: 28px; }
  .dnum { top: 2px; right: 4px; font-size: 13px; }
  .amt { font-size: 10px; padding-top: 2px; }
  .cnt { font-size: 9.5px; margin-top: 2px; margin-bottom: 3px; }
  td.wk .w { font-size: 10px; }
  .stat-value { font-size: 20px; margin-left: auto; }
  .sec-header { padding: 7px 10px; }
}

/* ---------- 页脚（v3.24，对齐出行速记样式，亮暗自适应） ---------- */
.site-foot { margin-top: 18px; padding: 0 4px 10px; }
.foot-brand { display: flex; align-items: center; gap: 10px; max-width: 430px; margin: 0 auto; }
.foot-line { flex: 1 1 auto; height: 1px; min-width: 8px; background: linear-gradient(to right, transparent, var(--cal-line)); }
.foot-line.r { background: linear-gradient(to left, transparent, var(--cal-line)); }
.foot-name { font-size: 14px; font-weight: 800; color: var(--text); letter-spacing: .5px; white-space: nowrap; flex: 0 0 auto; }
.foot-slogan { font-size: 11px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 0 1 auto; min-width: 0; padding: 0 2px; }
.foot-links { display: flex; flex-wrap: nowrap; justify-content: center; gap: 4px; max-width: 430px; margin: 11px auto 0; }
.foot-links a { flex: 1 1 0; min-width: 0; text-align: center; box-sizing: border-box; background: var(--td-bg); border: 1px solid var(--border); color: var(--k); font-size: 12px; font-weight: 700; text-decoration: none; padding: 5px 2px; border-radius: 999px; white-space: nowrap; }
.foot-copy { text-align: center; margin: 13px 0 0; font-size: 11px; color: var(--muted); letter-spacing: .3px; }
.foot-beian { text-align: center; margin-top: 6px; font-size: 11px; color: var(--muted); }
.foot-beian a { color: var(--muted); text-decoration: none; }

/* ===== 电脑横排专用（v3.25：align-top 仅桌面生效，消两卡等高拉空） ===== */
/* v3.65：A 方案表格天然比左卡矮，改 stretch 等高——右卡行均分拉伸填满，左卡无空白 */
@media (min-width: 721px) {
  .row.align-top { align-items: stretch; }
  .row.align-top > .card:last-child { display: flex; flex-direction: column; }
  .row.align-top > .card:last-child #weeksBody { flex: 1; display: flex; flex-direction: column; }
  .row.align-top > .card:last-child .wkt-head { flex: 0 0 auto; }
  .row.align-top > .card:last-child .wkt-row { flex: 1; }
}

/* ---------- 清除今日表单按钮（v3.26，两段式防误触） ---------- */
.btn-clear-day { margin-left: auto; background: none; border: none; color: var(--red); font-size: 12.5px; font-weight: 700; padding: 4px 8px; border-radius: 999px; cursor: pointer; flex: 0 0 auto; }
.btn-clear-day.armed { background: var(--red); color: #fff; }
/* v3.92：清除被锁拦截——按钮抖动 */
@keyframes shakeX { 0%,100% { transform: translateX(0); } 20% { transform: translateX(-4px); } 40% { transform: translateX(4px); } 60% { transform: translateX(-3px); } 80% { transform: translateX(3px); } }
.btn-clear-day.shake { animation: shakeX 0.4s; }

/* ---------- v3.92：清除被锁拦截的顶部醒目横幅（复用 badge-red 亮暗成对变量） ---------- */
#lockToast {
  position: fixed; top: 12px; left: 50%; transform: translate(-50%, -12px);
  background: var(--badge-red-bg); color: var(--badge-red-tx);
  border: 1.5px solid var(--badge-red-bd);
  font-size: 14px; font-weight: 800;
  padding: 10px 18px; border-radius: 12px;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18);
  opacity: 0; pointer-events: none;
  transition: opacity 0.25s, transform 0.25s;
  z-index: 60; max-width: 86vw;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
#lockToast.show { opacity: 1; transform: translate(-50%, 0); }

/* ---------- v3.41：当天输入锁定 ---------- */
/* 「锁定全天」按钮（卡头，红色系，复用两段式 .armed）；锁定后转绿色系解锁态 */
.btn-clear-day { display: inline-flex; align-items: center; gap: 4px; }
.btn-lock-day { margin-left: 0; }
.btn-lock-day.locked { color: var(--green); }
.btn-lock-day.armed { background: var(--red); color: #fff; }
.btn-lock-day svg { width: 13px; height: 13px; display: block; flex: 0 0 auto; }
/* 上午组头 🔒 小圆钮：SVG 线条图标，未锁=🔓 半透明可点，锁定=🔒 实底 */
.session-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.lock-am-btn {
  border: none; background: none; cursor: pointer; flex: 0 0 auto;
  display: inline-flex; align-items: center; justify-content: center;
  padding: 4px 8px; border-radius: 8px;
  opacity: 0.45; color: var(--k);
}
.lock-am-btn svg { width: 14px; height: 14px; display: block; }
.lock-am-btn.on { opacity: 1; background: var(--bar-bg); color: var(--v); }
.lock-am-btn:active { transform: scale(0.9); }

/* ---------- v3.44 单量换算：「今日已跑单量」2×2 步进面板 ---------- */
.run-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 5px; margin-bottom: 8px; } /* v3.105：margin-top 2→5px，徽章→格子缝 5→8px 与格子行距等宽 */
/* v3.101：汇总徽章并入 session-head 标题行右侧（蓝条撤销补右栏空白），蓝底+同色系边框守彩底铁律 */
.session-head .sh-sum { display: inline-flex; justify-content: center; align-items: center; gap: 6px; width: calc(50% - 2px); margin-right: -4px; color: var(--sum-k); background: var(--sum-bg); border: 1px solid var(--sum-bd); border-radius: 11px; padding: 7px 8px; white-space: nowrap; flex: 0 0 auto; }
.session-head .sh-sum .sh-n { font-size: 14.5px; font-weight: 800; }
.session-head .sh-sum .sh-sub { font-size: 11px; font-weight: 600; opacity: .72; }
.run-cell { border-radius: 11px; padding: 9px 8px 10px; border: 1px solid transparent; }
.run-cell.am { background: var(--hl-bg); border-color: var(--fill-am-bd); } /* v3.60：补边框与专送两格一致 */
.run-cell.pm { background: var(--hl2-bg); border-color: var(--fill-pm-bd); }
.run-cell.base { background: var(--ref-base-bg); border-color: var(--ref-base-bd); }
.run-cell.adv { background: var(--ref-adv-bg); border-color: var(--ref-adv-bd); }
.run-cell .rc-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 7px; }
.run-cell .rc-label { font-size: 12px; font-weight: 800; }
.run-cell.am .rc-label { color: var(--hl-k); }
.run-cell.pm .rc-label { color: var(--hl2-k); }
.run-cell.base .rc-label { color: var(--ref-base-tx); }
.run-cell.adv .rc-label { color: var(--ref-adv-tx); }
.lock-mini { border: none; background: none; cursor: pointer; color: var(--k); opacity: .4; display: inline-flex; padding: 2px 4px; border-radius: 6px; }
.lock-mini.on { opacity: 1; background: var(--badge-green-bg); color: var(--badge-green-tx); box-shadow: inset 0 0 0 1px var(--badge-green-bd); } /* v3.106：锁定态绿底显眼（不锁态保持原样） */
.lock-mini svg { width: 13px; height: 13px; }
.stepper { display: flex; align-items: stretch; background: var(--input-bg); border: 1px solid var(--cal-line); border-radius: 10px; overflow: hidden; }
.stepper button { flex: 0 0 44px; border: none; background: none; cursor: pointer; font-size: 16px; font-weight: 600; color: var(--k); user-select: none; -webkit-user-select: none; touch-action: manipulation; padding: 6px 0; }
.stepper button:active { background: var(--bar-bg); }
.stepper .num { flex: 1; text-align: center; align-self: center; font-size: 16px; font-weight: 700; color: var(--text); }
.stepper.disabled { opacity: .45; pointer-events: none; }

/* ---------- v3.45 今日收益目标卡分层改版（效果图=今日收益目标分层-效果图.html 淡彩版） ---------- */
/* 上层：✍️ 时段录入 2×2 四格大输入（v3.93：竖读序——左列上午 时长→收益，右列下午 时长→收益） */
.fill-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.fill-cell { display: flex; flex-direction: column; border-radius: 11px; padding: 10px 8px; border: 1px solid transparent; }
/* v3.58：白底条拉伸贴底——步进器条(42)与输入条(43)高度差1px且不贴底，左底隙14/右12 不齐；flex 拉伸后两格底隙一致(=padding) */
.fill-cell .fill-row, .fill-cell .fill-input { flex: 1 1 auto; }
.fill-cell .fill-row { align-items: center; } /* v3.84：条高固定 36px 与单量换算步进器同高 */
.fill-cell .fill-row .stepper, .fill-cell .fill-input { height: 36px; }.fill-cell .fill-row .unit { align-self: center; }
.fill-cell.am { background: var(--sess-am-bg); border-color: var(--fill-am-bd); }
.fill-cell.pm { background: var(--sess-pm-bg); border-color: var(--fill-pm-bd); }
.fill-cell .fc-label { font-size: 12px; font-weight: 800; margin-bottom: 6px; display: block; }
.fill-cell.am .fc-label { color: var(--sess-am-head); }
.fill-cell.pm .fc-label { color: var(--sess-pm-head); }
.fc-head { display: flex; align-items: center; justify-content: space-between; gap: 4px; }
.fc-head .fc-label { flex: 1; margin-bottom: 6px; }
.fc-head .lock-mini { margin-bottom: 6px; }
.fill-input { display: flex; align-items: center; background: var(--card);
  border: 1px solid var(--cal-line); border-radius: 9px; padding: 0 8px; }
.fill-input input { flex: 1; min-width: 0; border: none; background: none; outline: none;
  color: var(--text); font-size: 18px; font-weight: 800; text-align: center; padding: 0;
  font-family: inherit; -webkit-appearance: none; appearance: none; } /* v3.84：去 9px 上下 padding，高度交给容器 36px */
.fill-input input:disabled { opacity: 1; color: var(--muted); }
/* v3.83：锁定灰度与步进器对齐——容器整条 opacity .45 白底透卡底（柱哥反馈实灰底太深，要跟时长一致） */
.fill-input:has(input:disabled) { opacity: .45; }
.fill-input .unit { font-size: 11px; color: var(--muted); font-weight: 600; flex: 0 0 auto; }
/* v3.53：时长步进格单位「小时」与「元」同款小字灰（fill-row 容器换掉后原选择器够不着） */
.fill-row .unit { font-size: 11px; color: var(--muted); font-weight: 600; flex: 0 0 auto; }
/* v3.50：时长格换步进器——白底 −/＋ 条占满，单位挂右侧（与「今日已跑单量」同款按钮） */
/* v3.54：单量四格也套 run-row（补「单」单位），两容器共用同款布局 */
.fill-row, .run-row { display: flex; align-items: center; gap: 6px; }
.fill-row .stepper, .run-row .stepper { flex: 1; min-width: 0; }
.fill-row .unit, .run-row .unit { font-size: 11px; color: var(--muted); font-weight: 600; flex: 0 0 auto; }
/* 下层：📊 目标进度（冲刺目标横幅 + 两行三格淡彩） */
.gap-banner { background: var(--hl-bg); border-radius: 10px; padding: 11px 12px;
  display: flex; justify-content: space-between; align-items: center; margin-top: 8px; }
.gap-banner .gb-k { font-size: 14px; font-weight: 800; color: var(--hl-k); }
.gap-banner .gb-v { font-size: 21px; font-weight: 800; color: var(--hl-v); }
.gap-banner .gb-v.good { color: var(--hl2-v); }
/* v3.55：进度红绿灯三档底色（黄=默认 --hl-bg 不另设；红<30%；绿≥100%，数字同步换色） */
.gap-banner.band-red { background: var(--band-red-bg); }
.gap-banner.band-red .gb-k { color: var(--band-red-k); }
.gap-banner.band-red .gb-v { color: var(--band-red-v); }
.gap-banner.band-green { background: var(--band-green-bg); }
.gap-banner.band-green .gb-k { color: var(--band-green-k); }
.gap-banner.band-green .gb-v { color: var(--band-green-v); }
/* v3.90：还没填收益的中性灰档（区别于黄=30%+，防误读） */
.gap-banner.band-none { background: var(--band-none-bg); }
.gap-banner.band-none .gb-k { color: var(--band-none-k); }
.gap-banner.band-none .gb-v { color: var(--band-none-v); }
.res-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; margin-top: 8px; }
.res-cell { background: var(--bar-bg); border: 1px solid var(--cal-line); border-radius: 10px;
  padding: 8px 4px; text-align: center; min-width: 0; }
.res-cell .num { font-size: 15px; font-weight: 800; color: var(--text); line-height: 1.3; white-space: nowrap; }
.res-cell .num.good { color: var(--hl2-v); }
.res-cell .num.warn { color: var(--hl-v); }
.res-cell .cap { font-size: 10.5px; color: var(--muted); margin-top: 2px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* 淡彩版：进度三格染时段色（上午淡黄/下午淡绿/全天淡青），金额三格保持灰=参照组 */
.res-cell.t-am  { background: var(--hl-bg);  border-color: var(--fill-am-bd); } /* v3.61：补边框与同排一致 */
.res-cell.t-pm  { background: var(--hl2-bg); border-color: var(--fill-pm-bd); }
.res-cell.t-day { background: var(--teal-bg); border-color: var(--teal-bd); }
.res-cell.t-am  .cap { color: var(--hl-k); }
.res-cell.t-pm  .cap { color: var(--hl2-k); }
.res-cell.t-day .cap { color: var(--teal-tx); }

/* ---------- v3.86：单量换算 + 今日收益目标 合并一卡 ---------- */
.merge-wrap { display: flex; flex-direction: column; gap: 16px; }
@media (min-width: 721px) {
  .merge-wrap { flex-direction: row; align-items: flex-start; gap: 20px; }
  .merge-col { flex: 1; min-width: 0; }
  .merge-col + .merge-col { border-left: 1px dashed var(--dashed); padding-left: 20px; }
}
@media (max-width: 720px) {
  /* v3.89：上列末尾 session 自带 margin-bottom 10px 计入列高（flex 不塌陷），
     视觉上间隙 = 16 - |margin-top| + 10，取 -14 使视觉=12px 与下方一致 */
  .merge-col + .merge-col { margin-top: -14px; }
}
