:root{
  --focus:#e0564a; --focus-soft:#fdecea; --brk:#3fa66b; --brk-soft:#e9f5ee;
  --bg:#f6f5f2; --card:#fff; --text:#2b2b2b; --muted:#8b8b8b; --line:#e9e7e2;
  --radius:16px; --shadow:0 2px 12px rgba(0,0,0,.06);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--text); font-size:16px; line-height:1.55;
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  /* 左右留白：.wrap 里本来就有这两条，但所有页面都没用 .wrap 容器，等于从没生效过
     （2026-10-06 补：全站卡片此前贴着屏幕左右边缘，手机上很挤） */
  padding-left:14px; padding-right:14px;
}
.wrap{max-width:720px;margin:0 auto;padding:14px 14px 40px}
a{color:var(--focus);text-decoration:none}

/* ---------------- 顶栏 ---------------- */
.topbar{display:flex;align-items:center;gap:10px;padding:6px 4px 14px}
.topbar .who{font-size:14px;color:var(--muted);flex:0 0 auto}
.topbar .who b{color:var(--text)}
.topbar .today{flex:1;text-align:center;font-size:13px;color:var(--muted)}
.topbar .today .num{font-size:22px;font-weight:700;color:var(--text);margin:0 2px 0 6px;font-variant-numeric:tabular-nums}
.topbar .today .num:first-child{margin-left:0}
.topbar .today .dot{margin:0 6px;color:#ccc}
.topbar .link{flex:0 0 auto;font-size:14px}

/* ---------------- 卡片 ---------------- */
.card,.timer-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:14px}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.card-head h2{margin:0;font-size:17px;flex:1 1 auto;min-width:0;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.head-right{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.ts-today .finish-at{margin-left:6px}
.finish-at{font-size:12px;color:var(--muted);background:#f4f3f0;padding:3px 8px;border-radius:8px}
.finish-at:empty{display:none}

/* ---------------- 计时器 ---------------- */
.timer-card{text-align:center;padding:20px 16px 18px}
.ring-wrap{position:relative;width:250px;height:250px;margin:0 auto}
.ring{width:100%;height:100%;transform:rotate(-90deg)}
.ring-bg{fill:none;stroke:#f0efec;stroke-width:13}
.ring-fg{fill:none;stroke:var(--focus);stroke-width:13;stroke-linecap:round;
  stroke-dasharray:741.4;stroke-dashoffset:0;transition:stroke-dashoffset .35s linear,stroke .3s}
.ring-wrap.brk .ring-fg{stroke:var(--brk)}
.ring-wrap.paused .ring-fg{stroke:#c9c7c2}
.ring-inner{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.clock{font-size:56px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:1px;line-height:1}
.clock.long{font-size:44px}
.phase{font-size:14px;color:var(--muted);margin-top:6px}
.cur-task{margin:14px auto 0;font-size:15px;color:var(--muted);max-width:100%;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cur-task b{color:var(--text)}
.timer-btns{display:flex;gap:10px;justify-content:center;align-items:center;margin-top:16px;flex-wrap:wrap}

/* ---------------- 按钮 ---------------- */
button{font-family:inherit;cursor:pointer}
.btn-primary{background:var(--focus);color:#fff;border:none;border-radius:12px;
  padding:12px 24px;font-size:16px;font-weight:600;transition:filter .15s}
.btn-primary:active{filter:brightness(.92)}
.btn-primary.big{padding:15px 44px;font-size:18px;min-width:150px;border-radius:14px}
.btn-ghost{background:#fff;color:var(--text);border:1px solid var(--line);border-radius:12px;
  padding:11px 16px;font-size:15px}
.btn-ghost:active{background:#f6f5f2}
.btn-add{background:var(--focus-soft);color:var(--focus);border:none;border-radius:10px;
  padding:8px 12px;font-size:14px;font-weight:600}
.btn-ghost:disabled,.btn-primary:disabled{opacity:.45;cursor:not-allowed}

/* ---------------- 任务 ---------------- */
.addbox{display:none;background:#faf9f7;border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px}
.addbox.open{display:block}
/* ★ #139（2026-10-25）：输入时识别到的日期/时间提示 */
.nl-hint{margin-top:6px;font-size:12.5px;color:#137a37;background:#eef8f1;border:1px solid #d7ecdf;
  border-radius:8px;padding:5px 9px;line-height:1.5}
.addbox input[type=text],.addbox input:not([type]){width:100%;padding:11px 12px;border:1px solid var(--line);
  border-radius:10px;font-size:15px;background:#fff}
.addbox-row{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}
.addbox-row label{font-size:13px;color:var(--muted)}
.step{width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:#fff;font-size:17px;line-height:1}
.est{min-width:26px;text-align:center;font-weight:700;font-variant-numeric:tabular-nums}
.task-list{list-style:none;margin:0;padding:0}
.task-list li{display:flex;align-items:center;gap:9px;padding:11px 2px;border-bottom:1px dashed var(--line)}
.task-list li:last-child{border-bottom:none}
.chk{width:20px;height:20px;flex:0 0 20px;border:1.8px solid #c9c7c2;border-radius:6px;background:#fff;
  padding:0;display:flex;align-items:center;justify-content:center;font-size:13px;color:#fff;font-weight:700}
.chk.on{background:#3fa66b;border-color:#3fa66b}
.chip{font-size:11px;background:#f1efec;border-radius:6px;padding:1px 6px;color:#666;white-space:nowrap}
.chip.time{background:#fff3d6;color:#a06a11}
.chip.old{background:#f1efec;color:#8b8b8b}
.tip-inline{font-size:12px;color:var(--muted)}
.addbox-row input[type=date],.addbox-row input[type=time]{padding:8px;border:1px solid var(--line);
  border-radius:9px;font-size:14px;font-family:inherit;background:#fff}
.t-main{flex:1;min-width:0}
.t-title{font-size:15.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.t-meta{font-size:12px;color:var(--muted);margin-top:2px;display:flex;gap:8px;align-items:center}
.tag-old{background:#f1efec;border-radius:6px;padding:0 5px;font-size:11px}
.dots{color:var(--focus);letter-spacing:1px;font-size:12px}
.dots i{color:#dcdad5;font-style:normal}
.icon-btn{width:32px;height:32px;flex:0 0 32px;border-radius:9px;border:1px solid var(--line);
  background:#fff;font-size:14px;color:#666;padding:0;display:flex;align-items:center;justify-content:center}
.icon-btn.play{background:var(--focus-soft);border-color:transparent;color:var(--focus);font-size:13px}
.icon-btn.danger{color:#c0392b}
.icon-btn:disabled{opacity:.35}
.empty{color:var(--muted);font-size:14px;text-align:center;padding:18px 0}
.done-fold{margin-top:10px}
.done-fold summary{font-size:13px;color:var(--muted);cursor:pointer;list-style:none;padding:6px 2px}
.done-fold summary::-webkit-details-marker{display:none}
.done-fold .task-list li{opacity:.55}
.done-fold .t-title{text-decoration:line-through}
.li-done .t-title{text-decoration:line-through;color:var(--muted)}

/* ---------------- 弹窗 / 提示 ---------------- */
.modal-mask{display:none;position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:50;
  align-items:center;justify-content:center;padding:18px}
.modal-mask.open{display:flex}
.modal{background:#fff;border-radius:18px;padding:20px;width:100%;max-width:380px;text-align:center}
.modal h3{margin:0 0 6px;font-size:19px}
.modal p{margin:6px 0;color:var(--muted);font-size:14px}
.modal .mrow{display:flex;gap:8px;justify-content:center;margin-top:16px;flex-wrap:wrap}
.toast{position:fixed;left:50%;bottom:34px;transform:translateX(-50%) translateY(20px);
  background:rgba(43,43,43,.94);color:#fff;padding:10px 18px;border-radius:22px;font-size:14px;
  opacity:0;pointer-events:none;transition:.25s;z-index:80;max-width:88%;text-align:center}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.offline-bar{position:fixed;top:0;left:0;right:0;background:#c0392b;color:#fff;font-size:13px;
  text-align:center;padding:7px 10px;z-index:90;display:none}

/* ---------------- 登录 / 我的 ---------------- */
.login-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:28px 20px;max-width:400px;margin:8vh auto 0;text-align:center}
.login-card .logo{font-size:42px}
.login-card h1{margin:6px 0 2px;font-size:22px}
.login-card .sub{color:var(--muted);font-size:14px;margin:0 0 18px}
.login-card form{text-align:left}
.login-card label{display:block;font-size:13px;color:var(--muted);margin:12px 0 5px}
.login-card input{width:100%;padding:12px;border:1px solid var(--line);border-radius:11px;font-size:16px}
.login-card .btn-primary{width:100%;margin-top:20px;padding:14px}
.err{background:#fdecea;color:#c0392b;border-radius:10px;padding:9px;font-size:14px;margin-bottom:8px}
.tip{color:var(--muted);font-size:12.5px;margin-top:14px;line-height:1.6;text-align:left}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px}
.form-grid label{font-size:13.5px;color:var(--muted);display:flex;flex-direction:column;gap:6px}
.form-grid input[type=number],.form-grid input[type=password]{padding:10px;border:1px solid var(--line);
  border-radius:10px;font-size:16px;width:100%}
.form-grid .switch{flex-direction:row;align-items:center;gap:8px;font-size:14px;color:var(--text);
  grid-column:span 2}
.form-grid .switch input{width:19px;height:19px}
.card .btn-primary{margin-top:14px}
.token-row{display:flex;gap:12px;align-items:center;padding:10px 0;border-top:1px dashed var(--line)}
.qr{width:112px;height:112px;flex:0 0 112px;background:#fff;border:1px solid var(--line);border-radius:10px}
.token-info{min-width:0}
.mono{font-family:Consolas,monospace;font-size:12px;word-break:break-all;color:var(--text)}

/* ---------------- 底部导航 ---------------- */
.tabbar{position:fixed;left:0;right:0;bottom:0;display:flex;background:#fff;
  border-top:1px solid var(--line);box-shadow:0 -2px 10px rgba(0,0,0,.04);z-index:40;
  padding-bottom:env(safe-area-inset-bottom)}
.tabbar a{flex:1;text-align:center;padding:9px 4px 10px;font-size:12px;color:var(--muted);
  display:flex;flex-direction:column;gap:2px;align-items:center}
.tabbar a .ic{font-size:19px;line-height:1}
/* ★ 2026-10-10 反馈 #154④：她要在底栏再加一个「笔记」（5 → 6 个）。6 个时每个约 16%，
   360px 的手机上每格 60px，够放两个汉字；把左右内边距和字号收一点，不至于挤。 */
.tabbar.tb6 a{padding:8px 2px 9px;font-size:11.5px}
.tabbar.tb6 a .ic{font-size:18px}
/* ★ 2026-10-25 反馈 #378②：她要底栏加第 7 个「分红」。
   360px 手机每格 51px、390px 每格 55.7px，两个汉字 11px 刚好；再收内边距和图标。 */
.tabbar.tb7 a{padding:7px 0 8px;font-size:11px}
.tabbar.tb7 a .ic{font-size:17px}
.tabbar a.on{color:var(--focus);font-weight:600}
body.has-tabbar .wrap{padding-bottom:84px}
/* ★底栏铁律②：每页都得给底栏留出高度——之前只写在 .wrap 上，可所有页面都没用 .wrap，
   结果日历/日视图最下面的内容被底栏压住（2026-10-05 Lisa 报「最下面的文字被底栏挡掉」）。
   改挂 body 本身，不依赖任何容器类名。 */
body.has-tabbar{padding-bottom:calc(84px + env(safe-area-inset-bottom))}

/* ---------------- 日历 ---------------- */
.month-nav{flex:1;display:flex;align-items:center;justify-content:center;gap:12px}
.month-label{font-size:16px;font-weight:600}
.nav-btn{width:30px;height:30px;border:1px solid var(--line);border-radius:9px;background:#fff;
  display:flex;align-items:center;justify-content:center;font-size:16px;color:#666}
.cal-week-head{display:grid;grid-template-columns:22px repeat(7,1fr);gap:4px;margin-bottom:6px}
.cal-week-head span{text-align:center;font-size:12px;color:var(--muted)}
.cal-grid{display:grid;grid-template-columns:22px repeat(7,1fr);gap:4px}
.cal-grid .wnum{grid-column:1;display:flex;align-items:center;justify-content:center;
  background:transparent;border:none;font-size:9.5px;color:var(--muted);font-variant-numeric:tabular-nums;
  writing-mode:horizontal-tb;padding:0;line-height:1.1}
.cal-week-head .wnum-h{display:block}
.cal-day{position:relative;aspect-ratio:1/1;border-radius:10px;background:#f4f3f0;
  display:flex;align-items:center;justify-content:center;color:var(--text);font-size:14px;
  border:1px solid transparent;min-height:42px}
.cal-day.other{opacity:.32}
.cal-day.today{border-color:var(--focus)}
.cal-day.lv1{background:#fde9e7}
.cal-day.lv2{background:#f9cfc9}
.cal-day.lv3{background:#f2a79d}
.cal-day.lv4{background:#e77565}
.cal-day.lv5{background:#d94b39;color:#fff}
.cal-day .dnum{font-weight:600;font-variant-numeric:tabular-nums}
.cal-day .cd-dot{position:absolute;bottom:5px;left:50%;transform:translateX(-50%);
  width:5px;height:5px;border-radius:50%;background:#4a7fd9}
.cal-day.lv4 .cd-dot,.cal-day.lv5 .cd-dot{background:#4a7fd9}
.cal-day.sel{outline:2px solid var(--focus);outline-offset:-2px}
.cal-head{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:10px}
/* 日历工具条 */
.cal-tools{display:flex;gap:6px;margin:-2px 0 12px;background:#fff;border-radius:12px;
  padding:2px 6px 6px;box-shadow:var(--shadow)}
.cal-tools .tool{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;background:transparent;
  border:none;font-size:11px;color:#666;padding:7px 2px;border-radius:9px}
.cal-tools .tool:active{background:#f4f3f0}
.cal-tools .tico{font-size:17px;line-height:1}
/* 点阵时间轴 */
.dots-grid{display:flex;gap:2px;align-items:flex-end;padding:6px 0 2px}
.dot-col{flex:1;display:flex;flex-direction:column;gap:2px}
.dot-col i{display:block;height:9px;border-radius:2px;background:#f0efec}
.dot-col i.dl1{background:#f9cfc9}
.dot-col i.dl2{background:#f2a79d}
.dot-col i.dl3{background:#e77565}
.dot-col i.dl4{background:#d94b39}
.dot-axis{display:flex;font-size:10.5px;color:var(--muted);padding:0 2px}
.dot-axis span{flex:0 0 25%}
/* 本周总结 */
.wk-list{margin:10px 0 4px;text-align:left}
.wk-row{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:4px 0}
.wk-row>span:first-child{flex:0 0 56px;color:var(--muted)}
.wk-row>span:last-child{flex:0 0 92px;text-align:right;color:var(--muted)}
.wk-bar{flex:1;height:7px;background:#f0efec;border-radius:4px;overflow:hidden}
.wk-bar b{display:block;height:100%;background:var(--focus);border-radius:4px}
/* ---- 日历记录行：照番茄的照片（时间·任务名·状态 / 时长·完成度 / 心得）---- */
#day-panel{padding:10px 12px}
#day-panel .rec{padding:10px 2px;border-bottom:1px solid var(--line);cursor:pointer}
#day-panel .rec:last-child{border-bottom:none}
#day-panel .rec-head{display:flex;align-items:center;gap:8px}
#day-panel .rec-time{font-variant-numeric:tabular-nums;font-weight:600;font-size:13.5px}
#day-panel .rec-name{flex:1;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#day-panel .rec-meta{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-top:3px}
#day-panel .rec-note{margin-top:5px}
#day-panel .rec-note{font-size:12.5px;color:#444;margin-top:6px;background:#f7f7f5;border-radius:7px;padding:6px 8px;line-height:1.5}
#day-panel .rec-note.ph{color:#b5b3ae;background:transparent;padding:2px 0}
#day-panel .rec-ops{display:none;gap:8px;margin-top:8px}
#day-panel .rec.open .rec-ops{display:flex}
#day-panel .rec-ops button{flex:1;background:#f4f3f0;border:none;border-radius:8px;padding:7px 0;font-size:12.5px;color:#444}
#day-panel .rec-ops button.danger{color:#c0392b;background:#fbeceb}
/* 月历照番茄：白底 + 有记录的天一个蓝点 + 选中的天蓝圈 */
.cal-day{background:#fff;color:#1c1c1e}
.cal-day.lv1,.cal-day.lv2,.cal-day.lv3,.cal-day.lv4,.cal-day.lv5{background:#fff;color:#1c1c1e}
.cal-day.today{color:#4a7fd9;font-weight:800}
.cal-day.sel{background:#f2f6fd;box-shadow:inset 0 0 0 1.5px #4a7fd9}
.cal-day .cd-dot{background:#4a7fd9}
/* 日历格子：公历数字 + 休/班 + 农历/节气/节日（照华为日历） */
.cal-grid{gap:3px}
.cal-day{aspect-ratio:5/6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:2px 1px}
.cal-day .dtop{display:flex;align-items:center;gap:2px}
.cal-day .dnum{font-size:14px;font-weight:600;line-height:1.05}
.cal-day .doff{font-size:8.5px;line-height:1.25;color:#fff;background:#e2534b;border-radius:3px;padding:0 3px}
.cal-day .doff.work{background:#9a9a95}
.cal-day .dlab{font-size:9px;line-height:1.1;color:var(--muted);max-width:98%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-day .cd-dot{top:3px;right:3px;left:auto;bottom:auto;transform:none;width:4px;height:4px;border-radius:50%}
.cal-day.other{opacity:.28}
/* 手机端：格子再压扁一档，整月控制在尽量少滚动，底栏始终可见 */
@media (max-width:640px){
  .cal-grid{gap:2px}
  .cal-day{aspect-ratio:auto;height:44px;min-height:44px;padding:1px}
  .cal-day .dnum{font-size:13.5px}
  .cal-day .dlab{font-size:8.5px;line-height:1.05}
  .cal-week-head{gap:2px;margin-bottom:4px}
  .cal-week-head span{font-size:11px}
}
/* ---------- 日历：年/月/周/日 + 上拉只留两行（照华为日历） ---------- */
.cal-top{position:sticky;top:0;z-index:30;background:var(--bg,#faf9f7);
  padding:2px 0 6px;margin:-4px 0 6px;border-bottom:1px solid var(--line)}
.cal-nav{display:flex;gap:4px;margin-bottom:6px}
.cal-nav .cn{flex:1;background:transparent;border:none;padding:6px 0 5px;font-size:14px;
  color:var(--muted);border-radius:8px}
.cal-nav .cn.active{color:#4a7fd9;font-weight:700;box-shadow:inset 0 -2px 0 #4a7fd9}
.cal-bar{display:flex;align-items:center;gap:6px}
.cal-bar .cb-arrow{background:transparent;border:none;font-size:20px;color:var(--muted);padding:0 6px;line-height:1}
.cal-bar .cb-title{font-size:17px;font-weight:700}
.cal-bar .cb-today{margin-left:auto;font-size:12px;color:var(--muted)}
/* 年视图：12 个小月历 */
.year-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.ym{border:1px solid var(--line);border-radius:10px;padding:6px 5px 7px;cursor:pointer;background:#fff}
.ym-title{font-size:12.5px;font-weight:700;color:#4a7fd9;text-align:center;margin-bottom:4px}
.ym-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px}
.ym-grid i{font-style:normal;font-size:9.5px;text-align:center;line-height:15px;color:#3a3a38;font-variant-numeric:tabular-nums}
.ym-grid i.dot{background:#e8f0fe;border-radius:50%;color:#1a56b3;font-weight:700}
.ym-grid i.today{background:#4a7fd9;border-radius:50%;color:#fff;font-weight:700}
.ym-grid i.off{color:#c0392b}
.ym-grid i.work{color:#9a9a95}
/* 周视图：7 列时间轴 */
.wk-head{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:6px}
.wk-d{text-align:center;padding:5px 0 4px;border-radius:9px;cursor:pointer}
.wk-d.today{background:#eef4ff}
.wk-d b{display:block;font-size:11px;color:var(--muted);font-weight:500}
.wk-d span{display:block;font-size:14px;font-weight:700}
.wk-d em{display:block;font-style:normal;font-size:9.5px;color:var(--muted)}
.wk-d em.off{color:#c0392b}
.wk-d em.work{color:#9a9a95}
.wk-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.wk-col .tl-wrap{max-height:380px;margin-top:0;border:none}
.wk-col .tl{margin-left:16px}
.wk-col .tl-hour span{left:-16px;font-size:8px}
.wk-col .tl-block{font-size:9px;padding:2px 3px}
/* 重要提醒 */
#remind-card .bd-row{margin-bottom:8px;padding:10px 12px}
#remind-card .bd-l3{margin-top:4px}
/* 生日与纪念日 */
.bd-today{font-size:12.5px;color:var(--muted);padding:2px 4px 10px}
.bd-row{background:#fff;border-radius:12px;padding:12px 14px;margin-bottom:10px;box-shadow:var(--shadow);cursor:pointer}
.bd-row.soon{background:#fff7f5}
.bd-l1{display:flex;align-items:baseline;gap:6px}
.bd-name{font-size:15px;font-weight:700}
.bd-age{font-size:12.5px;color:var(--muted)}
.bd-l2{font-size:12.5px;color:var(--muted);margin-top:4px}
.bd-l3{font-size:13px;color:#d94b39;font-weight:600;margin-top:6px}
.bd-row.soon .bd-l3{color:#c0392b}
.me-link{display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit;padding:2px 0}
.me-link .ml-sub{flex:1;font-size:12px;color:var(--muted);text-align:right}
.me-link .ml-go{color:var(--muted);font-size:18px}
.cal-legend{display:flex;align-items:center;justify-content:flex-end;gap:4px;margin-top:10px;
  font-size:11px;color:var(--muted)}
.cal-legend i{width:12px;height:12px;border-radius:3px;background:#f4f3f0;display:inline-block}
.cal-legend i.lv1{background:#fde9e7}.cal-legend i.lv2{background:#f9cfc9}
.cal-legend i.lv3{background:#f2a79d}.cal-legend i.lv4{background:#e77565}
.cal-legend i.lv5{background:#d94b39}

/* ---------------- 时间轴 ---------------- */
.tl-wrap{position:relative;margin-top:8px;border:1px solid var(--line);border-radius:12px;
  overflow-y:auto;max-height:60vh;background:#fff}
.tl{position:relative;margin-left:52px}
.tl-hour{position:absolute;left:0;right:0;border-top:1px solid #f2f1ee}
.tl-hour.major{border-top-color:#e2e0db}
.tl-hour span{position:absolute;left:-46px;top:-8px;font-size:11px;color:var(--muted);
  font-variant-numeric:tabular-nums}
.tl-block{position:absolute;border-radius:7px;color:#fff;font-size:11px;overflow:hidden;
  padding:3px 5px;line-height:1.25;box-shadow:0 1px 3px rgba(0,0,0,.12);cursor:pointer;
  border:none;text-align:left}
.tl-block .bt{font-weight:600;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tl-empty{color:var(--muted);font-size:14px;text-align:center;padding:32px 10px}
.tl-legend{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;font-size:12px;color:var(--muted)}
.tl-legend span{display:flex;align-items:center;gap:4px}
.tl-legend i{width:10px;height:10px;border-radius:3px;display:inline-block}

/* ---------------- 记录列表 ---------------- */
.rec{border-top:1px solid var(--line);padding:11px 2px}
.rec:first-child{border-top:none}
.rec-head{display:flex;align-items:center;gap:8px}
.rec-time{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums;flex:0 0 auto}
.rec-name{font-weight:600;font-size:15px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tag{font-size:11px;padding:1px 6px;border-radius:6px;background:#f1efec;color:#666;flex:0 0 auto}
.tag.manual{background:#fff3d6;color:#a06a11}
.tag.done{background:#e9f5ee;color:#2f6f4f}
.tag.inter{background:#f4f3f0;color:#8b8b8b}
.rec-meta{font-size:12.5px;color:var(--muted);margin-top:3px}
.rec-note{margin-top:6px;font-size:13.5px;background:#faf9f7;border-radius:9px;padding:7px 9px;
  white-space:pre-wrap;word-break:break-word}
.rec-note.ph{color:#a9a7a2;font-style:normal;cursor:pointer;background:#faf9f7}
.rec-ops{margin-top:7px;display:flex;gap:8px;flex-wrap:wrap}
.rec-ops button{font-size:12.5px;padding:5px 10px;border-radius:8px;border:1px solid var(--line);
  background:#fff;color:#555}
.rec-ops button.danger{color:#c0392b}
.fab{position:fixed;right:18px;bottom:74px;width:56px;height:56px;border-radius:50%;
  background:var(--focus);color:#fff;font-size:28px;line-height:1;border:none;
  box-shadow:0 4px 14px rgba(224,86,74,.42);z-index:45}
.modal-form{text-align:left}
.modal-form label{display:block;font-size:13px;color:var(--muted);margin:10px 0 4px}
.modal-form input,.modal-form select,.modal-form textarea{width:100%;padding:10px;border:1px solid var(--line);
  border-radius:10px;font-size:15px;font-family:inherit;background:#fff}
.modal-form .row2{display:flex;gap:10px}
.modal-form .row2>div{flex:1}
.modal-form textarea{min-height:64px;resize:vertical}

/* ---------------- 计时条（首页顶部紧凑条） ---------------- */
.tstrip{position:relative;background:#fff;border-radius:14px;box-shadow:var(--shadow);
  padding:10px 12px 14px;margin-bottom:12px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ts-left{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
.ts-clock{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.5px}
.ts-clock.long{font-size:22px}
.ts-info{min-width:0}
.ts-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.ts-today{font-size:12.5px;color:var(--muted)}
.ts-today b{color:var(--text);font-size:15px;font-variant-numeric:tabular-nums}
.addbox-slot{display:block}
.addbox-slot:empty{display:none}
.tip-sm{margin:-4px 0 10px;font-size:12.5px}
.btn-start{background:var(--focus);color:#fff;border:none;border-radius:9px;padding:7px 13px;
  font-size:13.5px;font-weight:600;flex:0 0 auto}
.btn-start:active{filter:brightness(.92)}
.t-main{cursor:pointer}
.ts-task{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ts-phase{font-size:12px;color:var(--muted)}
.ts-btns{display:flex;align-items:center;gap:6px}
.btn-primary.small,.btn-ghost.small{padding:8px 14px;font-size:14px;border-radius:10px}
.ts-bar{position:absolute;left:12px;right:12px;bottom:3px;height:3px;background:#f0efec;border-radius:2px;overflow:hidden}
.ts-bar i{display:block;height:100%;width:0;background:var(--focus);transition:width .3s}
a.icon-btn{text-decoration:none;font-size:15px;color:#666;display:flex;align-items:center;justify-content:center}

/* ---------------- 拖拽排序 ---------------- */
.drag-handle{width:22px;height:30px;flex:0 0 22px;border:none;background:transparent;color:#c4c2bd;
  font-size:13px;padding:0;line-height:1;cursor:grab;touch-action:none;letter-spacing:-3px}
.drag-handle:active{cursor:grabbing;color:var(--focus)}
li.dragging{position:relative;z-index:20;background:#fff;border-radius:10px;
  box-shadow:0 8px 22px rgba(0,0,0,.18);opacity:.96;transition:none}
/* 拖动时的蓝色落位线（Lisa 2026-10-06 要求：电脑上一定要有） */
.drop-line{list-style:none;height:3px;margin:1px 0;border-radius:3px;background:#2f7de1;
  box-shadow:0 0 6px rgba(47,125,225,.45);pointer-events:none}

/* ---------------- 沉浸式专注页（点开始就跳到这里） ---------------- */
.fx{position:fixed;inset:0;z-index:30;display:flex;flex-direction:column;
  background:linear-gradient(160deg,#2b1b3d 0%,#5b2a4a 38%,#a34a3d 68%,#e08a3c 100%);
  color:#fff;padding:22px 18px calc(22px + env(safe-area-inset-bottom))}
.fx-top{display:flex;align-items:center;justify-content:space-between}
.fx-phase{font-size:14px;letter-spacing:2px;opacity:.85}
.fx-close{color:#fff;opacity:.8;font-size:20px;text-decoration:none;line-height:1}
.fx-mid{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px}
.fx-clock{font-size:86px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:2px;
  text-shadow:0 4px 24px rgba(0,0,0,.28);line-height:1}
.fx-clock.long{font-size:64px}
.fx-task{font-size:16px;opacity:.92;max-width:92%;text-align:center;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fx-quote{font-size:13.5px;opacity:.72;text-align:center;margin:0 6px 22px;cursor:pointer;line-height:1.6}
.fx-btns{display:flex;gap:12px;justify-content:center;align-items:center;margin-bottom:16px}
.fx-btn{flex:0 0 auto;background:rgba(255,255,255,.16);color:#fff;border:1px solid rgba(255,255,255,.28);
  border-radius:26px;padding:12px 22px;font-size:15px;backdrop-filter:blur(4px)}
.fx-btn.main{background:#fff;color:#a34a3d;font-weight:700;padding:14px 46px;font-size:17px;border:none}
.fx-extra{display:flex;gap:10px;justify-content:center}
.fx-mini{background:transparent;color:rgba(255,255,255,.82);border:1px solid rgba(255,255,255,.3);
  border-radius:18px;padding:6px 14px;font-size:12.5px;text-decoration:none}
@media (max-width:640px){
  .fx{padding:18px 14px calc(18px + env(safe-area-inset-bottom))}
  .fx-clock{font-size:74px}
  .fx-btn.main{padding:14px 40px}
}

/* ---------------- 手机端 ---------------- */
  @media (max-width:640px){
  body{font-size:15px}
  .wrap{padding:10px 11px 34px}
  /* has-tabbar 时保住底部导航的空间（34px 会把内容沉到 tabbar 底下，手机浏览器工具条一收 tabbar 才露出来） */
  body.has-tabbar .wrap{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
  body.has-tabbar{padding-bottom:calc(88px + env(safe-area-inset-bottom))}
  .topbar{flex-wrap:wrap;row-gap:4px}
  .topbar .today{order:3;flex:1 0 100%;text-align:left}
  .topbar .today .num{font-size:20px}
  /* 计时条：手机上分两行，避免计时中按钮变多把文字挤花 */
  .tstrip{padding:10px 12px 18px;gap:6px 8px}
  .ts-left{flex:1 1 100%}
  .ts-right{flex:1 1 100%;align-items:stretch;gap:8px}
  .ts-today{text-align:left}
  .ts-btns{justify-content:space-between}
  .ts-btns .btn-primary.small,.ts-btns .btn-ghost.small{padding:9px 10px;font-size:14px;flex:1 1 auto}
  .ts-btns .btn-primary.small{max-width:34%}
  .ts-btns a.icon-btn{flex:0 0 34px;border:1px solid var(--line);border-radius:9px}
  .ts-bar{left:12px;right:12px;bottom:6px}
  .ts-clock{font-size:30px}
  .ts-task,.ts-phase{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .drag-handle{width:26px;flex:0 0 26px}
  .btn-start{padding:8px 12px;font-size:14px}
  .ring-wrap{width:220px;height:220px}
  .clock{font-size:48px}
  .clock.long{font-size:38px}
  .btn-primary.big{flex:1 1 100%;padding:16px;font-size:18px}
  .timer-btns .btn-ghost{flex:1}
  .form-grid{grid-template-columns:1fr}
  .card,.timer-card{padding:13px;border-radius:14px}
  .task-list li{gap:7px}
  .icon-btn{width:34px;height:34px;flex:0 0 34px}
  .month-nav{gap:8px}
  .cal-day{min-height:38px;font-size:13px;border-radius:8px}
  .tl-wrap{max-height:52vh}
  .tl-block{font-size:10px;padding:2px 4px}
  .fab{right:14px;bottom:70px;width:52px;height:52px;font-size:26px}
}

/* ---------------- 月度汇总条（日历月视图顶部） ---------------- */
.month-sum-card{padding:13px 14px}
.ms-head{margin-bottom:8px}
.ms-title{font-size:14px;color:var(--muted)}
.ms-row{display:flex;align-items:stretch}
.ms-item{flex:1 1 0;min-width:0;text-align:center;display:flex;flex-direction:column;gap:1px}
.ms-item b{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--focus);line-height:1.2}
.ms-item:first-child b{color:var(--text)}
.ms-item span{font-size:12px;color:var(--muted)}

/* ---------------- 补录弹窗：手机端不再溢出 ---------------- */
.modal{max-width:min(380px, 100%);box-sizing:border-box}
.modal-form .row2>div{min-width:0;flex:1 1 0}
.modal-form input,.modal-form select,.modal-form textarea{max-width:100%}
.modal-form input[type=date],.modal-form input[type=time]{min-width:0;-webkit-appearance:none;appearance:none}
.modal-form input[type=date]::-webkit-date-and-time-value{text-align:left}
@media (max-width:400px){
  .modal{padding:16px 13px}
  .modal-form .row2{gap:8px}
  .modal-form input[type=date],.modal-form input[type=time]{font-size:14px;padding:9px 6px}
}

/* ---------------- v1.2：排序切换 / 左滑操作 / 循环任务 / 未来分组 ---------------- */
.sort-btn{background:#fff;color:#666;border:1px solid var(--line);border-radius:9px;
  padding:6px 10px;font-size:13px;white-space:nowrap}
.sort-btn.on{background:#eef3fb;color:#4a7fd9;border-color:#bcd0f0}
.task-list li{position:relative;overflow:hidden}
.sw-wrap{display:flex;align-items:center;gap:9px;flex:1;min-width:0;
  padding:11px 2px;background:var(--card);position:relative;z-index:2;
  transition:transform .18s ease}
.task-list li:not(.li-done) .sw-wrap{padding:11px 2px}
.task-list li{padding:0;border-bottom:1px dashed var(--line)}
.sw-actions{position:absolute;top:0;right:0;bottom:0;display:flex;z-index:1}
.sw-btn{border:none;width:62px;font-size:13px;color:#fff;padding:0;
  display:flex;align-items:center;justify-content:center}
.sw-btn.today{background:#4a7fd9}
.sw-btn.date{background:#c98a2e}
.sw-btn.danger{background:#c0392b}
li.sw-open .sw-wrap{transform:translateX(-248px)}
.sw-btn.pin{background:#6b7f9e}
.chip.recur{background:#e8f1fb;color:#4a7fd9}
.group-head{padding:10px 2px 4px;font-size:12.5px;color:var(--muted);font-weight:600;
  display:flex;align-items:center;gap:8px}
.group-head::after{content:"";flex:1;height:1px;background:var(--line)}
.menu-list{display:flex;flex-direction:column;margin-top:10px}
.menu-item{background:#f7f6f3;border:none;border-radius:11px;margin:4px 0;
  padding:12px;font-size:15px;text-align:left;color:var(--text)}
.menu-item:active{background:#efedea}
.menu-item.danger{color:#c0392b;background:#fdecea}
.recur-toggle{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:var(--muted);cursor:pointer}
.recur-toggle input{width:17px;height:17px;accent-color:var(--focus)}
.addbox select{padding:8px;border:1px solid var(--line);border-radius:9px;font-size:14px;background:#fff;font-family:inherit}
@media (max-width:640px){
  .sw-btn{width:58px;font-size:12.5px}
  li.sw-open .sw-wrap{transform:translateX(-232px)}
}

/* ---------------- 周视图 v2（照华为：刻度只留最左一列，7天共用一根轴） ---------------- */
.wk-head-grid{display:grid;grid-template-columns:34px repeat(7,1fr);gap:2px;margin-bottom:6px}
.wk-head-grid .wk-gutter{display:block}
.wk-scroll{max-height:56vh;overflow-y:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:12px}
.wk-shared-wrap{min-width:100%}
.wk-shared{display:flex;position:relative}
.wk-gutter-col{position:relative;flex:0 0 34px;width:34px}
.wk-gutter-col span{position:absolute;right:6px;transform:translateY(-50%);font-size:9.5px;color:var(--muted);line-height:1}
.wk-cols{flex:1;display:grid;grid-template-columns:repeat(7,1fr);gap:2px;position:relative}
.wk-col2{position:relative;min-width:0}
.wk-col2 .wk-line{position:absolute;left:0;right:0;height:1px;background:#f2f1ee;pointer-events:none}
.wk-col2 .wk-line.major{background:#e2e0db}
.wk-col2 .tl-block{left:2px;width:calc(100% - 5px);border-radius:5px}
.wk-col2 .tl-block .bt{font-size:9px}
.wk-col2:last-child .tl-block{border-right:2px solid #4a7fd9}

/* ---------------- 日视图：今日各任务汇总（同任务合并） ---------------- */
.day-tasks{margin-top:10px;border-top:1px dashed var(--line);padding-top:8px}
.dt-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:4px 0}
.dt-name{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.dt-val{font-size:12.5px;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}

/* ---------------- 补录表单：不记时间开关 / 起止同行 ---------------- */
.switch-line{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:var(--muted);cursor:pointer;padding-bottom:8px}
.switch-line input{width:17px;height:17px;accent-color:var(--focus)}
.tl-no-time-line{position:absolute;left:0;right:0;border-top:1px dashed #d8d6d0}
.tl-no-time-line span{position:absolute;right:4px;top:2px;font-size:9.5px;color:var(--muted);background:var(--bg);padding:0 4px;border-radius:4px}
.tl-block.no-time{opacity:.88;border:1.5px dashed rgba(255,255,255,.75)}

/* ---------------- 搜索浮钮 / 搜索结果 ---------------- */
.fab.search{bottom:140px;width:44px;height:44px;font-size:17px;background:#fff;color:#666;
  border:1px solid var(--line);box-shadow:0 2px 10px rgba(0,0,0,.1)}
.s-hit{display:flex;flex-direction:column;gap:1px;padding:8px 6px;border-bottom:1px dashed var(--line);cursor:pointer}
.s-hit:active{background:#f4f3f0}
.s-hit b{font-size:14px}
.s-hit span{font-size:12px;color:var(--muted)}
.s-sum{font-size:12.5px;color:var(--focus);background:var(--focus-soft,#fdecea);border-radius:8px;padding:6px 10px;margin-bottom:6px}

/* ---------------- 补录表单：照华为日历「新建日程」行式布局 ---------------- */
.hw-form{max-height:62vh;overflow-y:auto;text-align:left;-webkit-overflow-scrolling:touch}
.hw-row{display:flex;align-items:center;gap:8px;padding:11px 2px;border-bottom:1px solid var(--line)}
.hw-row:last-child{border-bottom:none}
.hw-ic{flex:0 0 20px;font-size:15px;text-align:center}
.hw-lab{flex:0 0 38px;font-size:13.5px;color:var(--muted)}
.hw-sep{flex:0 0 1px;height:22px;background:var(--line)}
.hw-unit{flex:0 0 auto;font-size:12.5px;color:var(--muted)}
.hw-row input,.hw-row select,.hw-row textarea{border:none;background:transparent;font-size:15.5px;
  padding:4px 2px;min-width:0;-webkit-appearance:none;appearance:none}
.hw-row input[type=number]{flex:1;text-align:left}
.hw-row input[type=time],.hw-row input[type=date]{flex:1;min-width:0}
.hw-row .switch-line{margin-left:auto;padding-bottom:0}
.hw-title input{font-size:16.5px;font-weight:600;width:100%}
.hw-sel select{width:100%;color:var(--focus);font-weight:600}
.hw-note-row{align-items:flex-start}
.hw-note-row textarea{width:100%;min-height:56px;resize:none}
.hw-form .tip-inline{padding:0 2px 6px;border-bottom:1px solid var(--line)}

/* ---------------- 重要日到点提醒横幅（R11） ---------------- */
.remind-banner{position:fixed;left:8px;right:8px;top:calc(8px + env(safe-area-inset-top));z-index:60;
  display:none;background:#fff;border:1px solid var(--line);border-left:4px solid var(--focus);
  border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.14);padding:10px 12px 10px 12px;
  max-height:40vh;overflow-y:auto;animation:rbIn .18s ease-out}
.remind-banner.show{display:block}
@keyframes rbIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.remind-banner .rb-row{display:flex;flex-direction:column;gap:3px;padding:5px 20px 5px 0;
  border-bottom:1px dashed var(--line);font-size:14px;line-height:1.45}
.remind-banner .rb-row:last-child{border-bottom:none}
.remind-banner .rb-row b{font-size:14.5px;color:var(--focus)}
.remind-banner .rb-row span{color:var(--muted);font-size:12.5px}
/* ★ 2026-10-10 反馈 #120：可点的提醒条（点了跳去看那一条） */
.remind-banner .rb-row.rb-link{cursor:pointer;border-radius:8px;padding-right:52px}
.remind-banner .rb-row.rb-link:hover{background:#f6faf7}
.remind-banner .rb-row.rb-link:after{content:"查看 ›";position:absolute;right:34px;top:50%;
  transform:translateY(-50%);font-size:12px;color:var(--g);white-space:nowrap}
.remind-banner .rb-row.rb-link{position:relative}
.remind-banner .rb-close{position:absolute;right:6px;top:6px;width:26px;height:26px;border:none;
  background:transparent;font-size:18px;line-height:1;color:var(--muted);cursor:pointer}
.notify-state{font-size:12.5px;color:var(--muted);margin:2px 0 8px}
.notify-state.ok{color:var(--ok,#2f8f5b)}
.notify-state.warn{color:#c07a12}

/* 重要日：列表里的提醒设置小标（R5） */
.bd-l3 .bd-rem{font-style:normal;font-weight:500;color:var(--muted);font-size:11.5px;margin-left:6px}
.bd-l3 .bd-off{font-style:normal;font-weight:500;color:#bdbcb8;font-size:11.5px;margin-left:6px}

/* ---------------- v1.2c 新增：周序号 / 待办打点 / 日程视图 / 跨天 / 导出 ---------------- */
/* 月历左侧「第几周」（照华为） */
.cal-grid .wnum{font-size:9.5px;color:#b0aea9;letter-spacing:-.2px}
.cal-day .task-dot{position:absolute;top:3px;left:3px;width:4px;height:4px;border-radius:50%;background:#e0a020}
.cal-legend{display:flex;align-items:center;gap:4px;margin-top:8px;font-size:11px;color:var(--muted)}
.cal-legend .cd-dot{position:static;width:5px;height:5px;border-radius:50%;background:#4a7fd9;display:inline-block;margin-left:8px}
.cal-legend .cd-dot:first-child{margin-left:0}
.cal-legend .task-dot{position:static;width:5px;height:5px;border-radius:50%;background:#e0a020;display:inline-block;margin-left:8px}

/* 日历顶部导航：5 个视角 + 搜索 */
.cal-nav .cn-search{margin-left:auto;flex:0 0 auto;font-size:14px}

/* 当天日程卡里的「这天的待办」 */
.dp-tk-head{font-size:11.5px;color:var(--muted);margin:2px 0 4px}
.dp-tasks{margin-bottom:8px;padding-bottom:6px;border-bottom:1px dashed var(--line)}
.dp-tk{display:flex;align-items:center;gap:6px;padding:5px 2px;font-size:13.5px;border-bottom:1px solid #f6f5f3}
.dp-tk:last-child{border-bottom:none}
.dp-tk-dot{flex:0 0 6px;width:6px;height:6px;border-radius:50%;background:#e0a020}
.dp-tk.done .dp-tk-dot{background:#c9c7c2}
.dp-tk-t{flex:0 0 42px;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}
.dp-tk-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dp-tk.done .dp-tk-name{color:var(--muted);text-decoration:line-through}
.dp-tk-tag{flex:0 0 auto;font-size:10.5px;color:#9a9a95;background:#f4f3f0;border-radius:4px;padding:1px 5px}
.dp-tl-head{font-size:11.5px;color:var(--muted);margin:6px 0 4px}

/* 周视图：底部「N 个待办」带 */
.wk-tasks{position:absolute;left:0;right:0;height:18px;line-height:18px;text-align:center;
  font-size:9px;color:#b8860b;background:#fdf6e3;border-radius:4px}

/* 日程视图 */
.ag-tip{font-size:11.5px;color:var(--muted);margin:-2px 0 8px}
.ag-day{margin-bottom:14px}
.ag-head{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;background:#f7f6f4;cursor:pointer}
.ag-day.today .ag-head{background:#eef3fb}
.ag-head b{font-size:14px}
.ag-head span{font-size:11.5px;color:var(--muted);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ag-head em{font-size:11.5px;color:var(--focus);font-style:normal}
.ag-now{font-style:normal;font-size:10.5px;color:#fff;background:var(--focus);border-radius:4px;padding:1px 5px}
.ag-item{display:flex;align-items:center;gap:8px;padding:8px 10px;margin:4px 0 0;
  border-radius:8px;background:#fff;border:1px solid var(--line);font-size:13.5px}
.ag-item.rec{border-left:3px solid #4a7fd9}
.ag-item.inter{border-left:3px solid #c9a227}
.ag-item.task{border-left:3px solid #e0a020}
.ag-item.task.ok{border-left-color:#c9c7c2;opacity:.7}
.ag-item .ag-t{flex:0 0 42px;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}
.ag-item .ag-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ag-item.task.ok .ag-title{text-decoration:line-through;color:var(--muted)}
.ag-item .ag-min{font-size:11.5px;color:var(--muted)}
.ag-item .ag-tag{font-size:10.5px;border-radius:4px;padding:1px 5px;background:#f4f3f0;color:#8a8885}
.ag-item .ag-tag.cross{background:#eef3fb;color:#4a7fd9}

/* 跨天标记 */
.tag.cross{background:#eef3fb;color:#4a7fd9}
.tl-block.cross{border-bottom-right-radius:0;border-top-right-radius:0}
.tip-inline.cross{color:#4a7fd9}
.tip-inline.warn{color:#c0392b}

/* 重要日：正数日标 */
.bd-l3 .bd-up{font-style:normal;font-weight:600;color:#4a7fd9;font-size:11.5px;margin-right:4px}
.bd-l3 .bd-up::before{content:"";}

/* 导出按钮铺满一行 */
.btn-block{display:block;width:100%;text-align:center;text-decoration:none;box-sizing:border-box}

/* ---------------- 账号管理 ---------------- */
.acc-row{background:#fff;border:1px solid var(--line);border-radius:12px;padding:11px 13px;margin-bottom:9px}
.acc-row.off{opacity:.62;background:#fafaf8}
.acc-l1{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.acc-l1 b{font-size:15.5px}
.acc-user{font-size:12px;color:var(--muted);font-family:ui-monospace,Menlo,Consolas,monospace}
.acc-tag{font-size:10.5px;border-radius:4px;padding:1px 6px;background:#eef3fb;color:#4a7fd9}
.acc-tag.off{background:#f4f3f0;color:#9a9a95}
.acc-tag.me{background:#eaf6ee;color:#2f8f5b}
.acc-l2{font-size:12px;color:var(--muted);margin:5px 0 8px}
.acc-ops{display:flex;gap:6px;flex-wrap:wrap}
.acc-ops button{flex:1 1 auto;min-width:74px;padding:7px 8px;font-size:12.5px;border-radius:8px;
  border:1px solid var(--line);background:#fff;color:var(--text)}
.acc-ops button.danger{color:#c0392b;border-color:#f0d6d2}
.acc-ops button:active{background:#f4f3f0}

/* 「不记时间」点选框：原来挤在数量那一行的小勾，太不醒目（Lisa 2026-10-05 要求做成点选框） */
.chk-box{display:flex;align-items:flex-start;gap:9px;margin:11px 0 4px;padding:11px 12px;
  border:1.5px solid var(--line);border-radius:11px;background:#fbfaf9;cursor:pointer;
  font-size:14.5px;line-height:1.35;color:var(--text)}
.chk-box.on{border-color:var(--focus);background:var(--focus-soft,#fdecea);
  box-shadow:inset 0 0 0 1px var(--focus)}
.chk-box input{width:20px;height:20px;flex:0 0 20px;margin:1px 0 0;accent-color:var(--focus)}
.chk-box span{display:block}
.chk-box i{font-style:normal;font-size:12px;color:var(--muted)}
.chk-box.on i{color:#a0493f}

/* ================= 生理期（拾光） ================= */
/* 颜色沿用竞品惯例：经期红 / 预计经期粉 / 排卵日橙黄 / 预计易孕期淡紫 */
.pd-hero{text-align:center;padding:4px 0 10px}
.pd-big{font-size:34px;font-weight:700;line-height:1.1;color:var(--focus);font-variant-numeric:tabular-nums}
.pd-bigsub{font-size:13px;color:var(--muted);margin-top:6px}
.pd-facts{display:flex;gap:8px;border-top:1px solid var(--line);padding-top:11px}
.pd-fact{flex:1 1 0;min-width:0;text-align:center}
.pd-fact b{display:block;font-size:15px;font-variant-numeric:tabular-nums;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.pd-fact span{display:block;font-size:11.5px;color:var(--muted);margin-top:2px}
.pd-fact i{display:block;font-style:normal;font-size:10.5px;color:#b9b7b2;margin-top:1px}
.pd-warn{margin:11px 0 0;font-size:12.5px;line-height:1.5;color:#9a6a12;background:#fdf6e6;
  border:1px solid #f2e3c3;border-radius:10px;padding:8px 10px}

.pd-legend{display:flex;flex-wrap:nowrap;gap:10px;font-size:12.5px;color:#6f6d69}
.pd-legend span{display:flex;align-items:center;gap:5px;white-space:nowrap}
.pd-dot{width:12px;height:12px;border-radius:50%;display:inline-block;flex:0 0 12px}
.pd-dot.period{background:#e0564a}
.pd-dot.predict{background:#fff;border:1.5px solid #e0564a}
.pd-dot.ovulation{background:#3b82f6;width:7px;height:7px;flex:0 0 7px;margin:0 2.5px}
.pd-dot.fertile{background:#cfe4fb}
.pd-disclaim{margin:10px 0 0;font-size:11.5px;color:#a3a19c;line-height:1.5}

.pd-calhead{justify-content:center;gap:16px}
.pd-calhead h2{font-size:16px;min-width:104px;text-align:center;font-variant-numeric:tabular-nums}
.pd-nav{width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:#fff;
  color:var(--text);font-size:18px;line-height:1;padding:0}
.pd-nav:active{background:#f4f3f0}
.pd-week,.pd-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.pd-week span{text-align:center;font-size:11.5px;color:var(--muted);padding-bottom:5px}
/* 2026-10-06 R26：格子不再铺满，只在数字外画一个圆——照华为运动：
   经期＝红色实心圆／预测经期＝红色空心圆环／排卵期＝浅蓝实心圆／排卵日＋有记录＝数字下面的小圆点 */
.pd-cell{position:relative;height:52px;border-radius:10px;background:transparent;display:flex;
  align-items:center;justify-content:center;cursor:pointer;border:1px solid transparent}
.pd-cell .pd-d{position:relative;z-index:1;font-size:15px;font-weight:600;line-height:1.15;
  font-variant-numeric:tabular-nums;color:#3a3a3a}
.pd-cell.out{opacity:.3}
.pd-cell.m-period::before,.pd-cell.m-predict::before,
.pd-cell.m-fertile::before,.pd-cell.m-ovulation::before{
  content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:28px;height:28px;border-radius:50%;box-sizing:border-box}
.pd-cell.m-period::before{background:#e0564a}
.pd-cell.m-period .pd-d{color:#fff}
.pd-cell.m-predict::before{border:1.5px solid #e0564a}
.pd-cell.m-predict .pd-d{color:#e0564a}
.pd-cell.m-fertile::before,.pd-cell.m-ovulation::before{background:#cfe4fb}
.pd-cell.m-fertile .pd-d,.pd-cell.m-ovulation .pd-d{color:#2f6fb7}
.pd-bdots{position:absolute;left:50%;bottom:4px;transform:translateX(-50%);display:flex;gap:4px}
.pd-bdots i{width:5px;height:5px;border-radius:50%;display:block}
.pd-bdots i.ovu{background:#3b82f6}
.pd-bdots i.log{background:#e0564a}
.pd-cell.today{outline:2px solid #4a7fd9;outline-offset:-2px}   /* 蓝＝今天 */
.pd-cell.sel{box-shadow:inset 0 0 0 2px #2b2b2b}                /* 深色圈＝当前正在看的那天 */

.pd-count{font-size:12px;color:var(--muted)}
.pd-list{list-style:none;margin:0;padding:0}
.pd-row{display:flex;align-items:center;gap:11px;padding:9px 2px;border-bottom:1px solid var(--line)}
.pd-row:last-child{border-bottom:none}
.pd-ring{width:22px;height:22px;border-radius:50%;flex:0 0 22px;background:#fff;
  border:5px solid #e0564a;box-sizing:border-box}
.pd-r-main{flex:1;min-width:0}
.pd-r-t{font-size:15px;font-weight:600;color:#191919;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;font-variant-numeric:tabular-nums}
.pd-r-s{font-size:12.5px;color:#7d7d7d;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pd-del{border:1px solid var(--line);background:#fff;color:#c0392b;border-radius:8px;
  padding:6px 10px;font-size:12.5px;flex:0 0 auto}
.pd-del:active{background:#fdf2f0}

@media (max-width:640px){
  .pd-big{font-size:30px}
  .pd-cell{height:44px;border-radius:8px}      /* 底栏铁律③：手机端格子压到 44px */
  .pd-cell .pd-d{font-size:15px}
  .pd-facts{gap:5px}
  .pd-fact b{font-size:13.5px}
  .pd-fact span,.pd-fact i{font-size:10.5px}
  .pd-week span{font-size:11px;padding-bottom:4px}
}

/* ================= 首页宫格（照时光序 2.12） ================= */
/* 一格 = 入口 + 一行「我此刻的数据」，不写功能说明 */
.hm-hero{text-align:center;padding:16px 14px 14px}
.hm-today{font-size:16.5px;font-weight:600;color:var(--text);line-height:1.4}
.hm-help{display:inline-block;margin-top:9px;font-size:13px;color:var(--muted);
  border:1px solid var(--line);border-radius:999px;padding:4px 13px;background:#fbfaf8}
.hm-help:active{background:#f4f3f0}

.hm-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;margin-bottom:14px}
.hm-cell{position:relative;display:block;background:var(--card);border-radius:14px;
  box-shadow:var(--shadow);padding:13px 12px;min-height:92px;color:var(--text);
  border:1px solid transparent}
.hm-cell:active{background:#fbfaf8}
.hm-cell.hm-focus{background:linear-gradient(180deg,#fff 0%,var(--focus-soft) 100%)}
.hm-ic{display:block;font-size:19px;line-height:1.2}
.hm-t{display:block;font-size:15px;font-weight:600;margin-top:5px}
.hm-s{display:block;font-size:12.5px;color:var(--muted);margin-top:3px;line-height:1.4;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hm-badge{position:absolute;top:10px;right:10px;font-style:normal;font-size:11.5px;font-weight:600;
  min-width:19px;height:19px;line-height:19px;text-align:center;border-radius:999px;
  background:var(--focus);color:#fff;padding:0 5px}

/* ================= 目标（照时光序 2.13） ================= */
#gl-list{display:flex;flex-direction:column;gap:11px}
.gl-card{background:#faf9f7;border:1px solid var(--line);border-radius:13px;padding:12px 13px}
.gl-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.gl-title{font-size:16px;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gl-range{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;flex:0 0 auto}
.gl-pct{font-size:15px;font-weight:700;color:var(--focus);font-variant-numeric:tabular-nums;flex:0 0 auto}
.gl-del{border:1px solid var(--line);background:#fff;color:#c0392b;border-radius:8px;
  padding:4px 9px;font-size:12.5px;flex:0 0 auto}
.gl-del:active{background:#fdf2f0}
.gl-bar{height:7px;border-radius:999px;background:#efede9;overflow:hidden;margin:9px 0 6px}
.gl-bar i{display:block;height:100%;border-radius:999px;background:var(--focus);transition:width .3s}
.gl-sub{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.gl-items{list-style:none;margin:9px 0 0;padding:0}
.gl-item{display:flex;align-items:center;gap:9px;padding:6px 0;border-top:1px solid #f0eeea}
.gl-item:first-child{border-top:none}
.gl-chk{width:22px;height:22px;flex:0 0 22px;border-radius:50%;border:2px solid #d8d6d1;
  background:#fff;color:#fff;font-size:13px;line-height:1;padding:0;cursor:pointer}
.gl-chk.on{background:var(--brk);border-color:var(--brk)}
.gl-it{flex:1;min-width:0;font-size:14.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gl-item.on .gl-it{color:var(--muted);text-decoration:line-through}
.gl-idel{border:none;background:none;color:#b9b7b2;font-size:12.5px;padding:2px 4px;flex:0 0 auto}
.gl-idel:active{color:#c0392b}
.gl-addrow{display:flex;gap:8px;margin-top:10px}
.gl-new{flex:1;min-width:0;padding:8px 11px;border:1px solid var(--line);border-radius:9px;
  font-size:14px;font-family:inherit}
.gl-addbtn{border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 14px;
  font-size:14px;flex:0 0 auto}
.gl-addbtn:active{background:#f4f3f0}

/* ================= 打卡（照时光序 2.6） ================= */
.hb-date{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.hb-list{list-style:none;margin:0;padding:0}
.hb-row{display:grid;grid-template-columns:26px minmax(0,1fr) auto;column-gap:11px;row-gap:8px;
  align-items:center;padding:11px 2px;border-bottom:1px solid var(--line)}
.hb-row:last-child{border-bottom:none}
.hb-ring{grid-column:1;grid-row:1 / span 2;align-self:center;width:26px;height:26px;border-radius:50%;background:#fff;
  border:3px solid #ddd9d3;color:#fff;font-size:14px;line-height:1;padding:0;cursor:pointer}
.hb-ring.on{background:var(--brk);border-color:var(--brk)}
.hb-main{grid-column:2;grid-row:1;min-width:0}
.hb-t{font-size:15px;font-weight:600;line-height:1.32;white-space:normal;overflow:hidden;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.hb-s{font-size:12.5px;color:#7d7d7d;margin-top:2px;white-space:normal;overflow:hidden;
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}
.hb-right{grid-column:3;grid-row:1;display:flex;align-items:center;gap:7px}
.hb-cnt{display:block;font-size:12.5px;font-variant-numeric:tabular-nums;color:var(--muted)}
/* 反馈 #383：一周七天的格子单独占第二行，铺满宽度、看得清 */
.hb-days{grid-column:2 / 4;grid-row:2;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;max-width:560px}
.hb-days.one{grid-template-columns:minmax(0,72px)}
.hb-d{height:19px;border-radius:5px;background:#eceae6;display:flex;align-items:center;justify-content:center;
  font-style:normal;font-size:10px;line-height:1;color:#b3aea6}
.hb-d.on{background:var(--brk);color:#fff}
.hb-d.off{opacity:.45}
.hb-d.td{box-shadow:inset 0 0 0 1.5px rgba(0,0,0,.18)}
.hb-del{border:1px solid var(--line);background:#fff;color:#c0392b;border-radius:8px;
  padding:5px 9px;font-size:12.5px;flex:0 0 auto}
.hb-del:active{background:#fdf2f0}
/* 反馈 #277③：习惯也能改（跟「删」并排，颜色走主题绿，别两粒都红） */
.hb-edit{color:var(--focus,#2f7a4f);border-color:var(--line)}
.wd-pick{display:flex;gap:6px;flex-wrap:wrap}
.wd-pick .wd{width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:#fff;
  font-size:13.5px;padding:0;color:var(--text)}
.wd-pick .wd.on{background:var(--focus-soft);border-color:var(--focus);color:var(--focus);font-weight:600}

/* ================= 如何玩转（指引页） ================= */
.hp-p{margin:0 0 9px;font-size:14.5px;line-height:1.6;color:var(--text)}
.hp-p:last-child{margin-bottom:0}
.hp-ul{margin:0;padding-left:19px}
.hp-ul li{font-size:14.5px;line-height:1.65;margin-bottom:7px;color:var(--text)}
.hp-ul li:last-child{margin-bottom:0}
.hp-ul b{color:var(--focus)}

@media (max-width:640px){
  .hm-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
  .hm-cell{padding:11px 10px;min-height:86px;border-radius:13px}
  .hm-t{font-size:14.5px}
  .hb-row{padding:9px 0;column-gap:9px;row-gap:7px}
  .gl-item{padding:5px 0}
  .wd-pick .wd{width:32px;height:32px}
}

/* ================= 第3批 · 新建入口（照时光序 2.2） ================= */
.cmp{background:#faf9f7;border:1px solid var(--line);border-radius:14px;padding:12px}
.cmp-title{width:100%;padding:12px 13px;border:1px solid var(--line);border-radius:11px;
  font-size:15.5px;font-family:inherit;background:#fff;outline:none}
.cmp-title:focus{border-color:var(--focus);box-shadow:0 0 0 3px var(--focus-soft)}
.cmp-icons{display:flex;align-items:center;gap:6px;margin-top:10px;flex-wrap:wrap}
.cmp-ic{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  min-width:56px;padding:6px 4px;border:1px solid transparent;border-radius:11px;background:none;
  color:var(--muted);font-family:inherit;cursor:pointer}
.cmp-ic:active{background:#f1efec}
.cmp-ic .cmp-emo{font-size:19px;line-height:1.15}
.cmp-ic i{font-style:normal;font-size:11.5px;line-height:1.2;max-width:62px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cmp-ic i.on{color:var(--text);font-weight:600}
.cmp-ic[data-ic="cat"] i.on{color:var(--c)}
.cmp-ic[data-ic="pri"] i.on{color:var(--p)}
.cmp-est{display:flex;align-items:center;gap:2px;margin-left:auto;color:var(--muted);font-size:12px}
.cmp-est b{min-width:18px;text-align:center;font-size:15px;color:var(--text);
  font-variant-numeric:tabular-nums}
.cstep{width:26px;height:26px;border:1px solid var(--line);background:#fff;border-radius:8px;
  font-size:15px;line-height:1;padding:0;color:var(--text)}
.cmp-save{margin-top:0;padding:10px 18px;border-radius:11px;font-size:15px;flex:0 0 auto}

/* ================= 第3批 · 列表行改版（照时光序 2.1） ================= */
.cats{display:flex;gap:7px;overflow-x:auto;padding:2px 0 10px;-webkit-overflow-scrolling:touch}
.cats::-webkit-scrollbar{display:none}
.cat{flex:0 0 auto;padding:5px 13px;border-radius:999px;border:1px solid var(--line);
  background:#fff;color:#8b8b8b;font-size:13px;font-family:inherit;cursor:pointer;
  max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cat.on{background:var(--c,#eef3fb);border-color:var(--c,#bcd0f0);color:#fff;font-weight:600}
.cat.on[data-cat="all"]{background:var(--focus);border-color:var(--focus)}
.task-list li.tk{display:flex;align-items:center}
.tk .sw-wrap{gap:11px}
.tk-ring{width:24px;height:24px;flex:0 0 24px;border-radius:50%;background:#fff;
  border:3px solid var(--c,#d8d6d1);color:#fff;font-size:13px;line-height:1;padding:0;cursor:pointer}
.tk-ring.on{background:var(--c,#3fa66b);border-color:var(--c,#3fa66b)}
.tk-main{flex:1;min-width:0}
.tk-t{font-size:15.5px;color:#191919;overflow:hidden;display:-webkit-box;
  -webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word;line-height:1.35}
.tk-s{font-size:12.5px;color:#7d7d7d;margin-top:2px;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;font-variant-numeric:tabular-nums}
.tk-done .tk-t{text-decoration:line-through;color:var(--muted)}
.done-fold .tk-t{text-decoration:line-through}
.group-head i{font-style:normal;font-weight:400;color:#b9b7b2;font-size:12px;
  font-variant-numeric:tabular-nums}

/* ================= 第4批 · 重复任务完成度（照时光序 2.10） ================= */
.rs{margin-top:14px;border-top:1px dashed var(--line);padding-top:12px}
.rs-head{display:flex;align-items:center;justify-content:space-between;font-size:13.5px;
  color:var(--muted);margin-bottom:4px}
.rs-head b{font-size:17px;color:var(--focus);font-variant-numeric:tabular-nums}
.rs-line{font-size:13.5px;color:var(--muted);margin-bottom:9px}
.rs-line b{color:var(--text);font-variant-numeric:tabular-nums}
.rs-w,.rs-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.rs-w i{font-style:normal;text-align:center;font-size:11px;color:var(--muted);padding-bottom:3px}
.rs-c{font-style:normal;height:26px;border-radius:6px;background:#f6f5f2;display:flex;
  align-items:center;justify-content:center;font-size:11.5px;color:#c2c0bb;
  font-variant-numeric:tabular-nums}
.rs-c.has{background:#fdecea;color:#c0564a;font-weight:600}
.rs-c.done{background:var(--brk);color:#fff;font-weight:600}
.rs-c.out{background:none}

/* ================= 第4批 · 打卡「一天/周/月」切换（照时光序 2.6） ================= */
.seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;background:#fff;
  overflow:hidden;flex:0 0 auto}
.seg-b{border:none;background:none;font-family:inherit;font-size:12.5px;color:var(--muted);
  padding:5px 11px;cursor:pointer}
.seg-b.on{background:var(--focus);color:#fff;font-weight:600}
.hb-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
.hb-days.one{grid-template-columns:minmax(0,72px)}

/* ================= 第4批 · 左侧抽屉：分类清单带条数（照时光序 2.9） ================= */
.dr-mask{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:75;display:flex;align-items:stretch}
.dr{width:268px;max-width:84vw;background:#fff;height:100%;display:flex;flex-direction:column;
  animation:drin .2s ease;box-shadow:2px 0 16px rgba(0,0,0,.12);overflow:hidden}
@keyframes drin{from{transform:translateX(-24px);opacity:.5}to{transform:translateX(0);opacity:1}}
.dr-head{display:flex;align-items:center;justify-content:space-between;padding:16px 14px 10px}
.dr-head b{font-size:16px}
.dr-x{border:none;background:none;font-size:16px;color:var(--muted);padding:2px 6px;cursor:pointer}
.dr-list{flex:1;overflow-y:auto;padding:4px 8px}
.dr-row{display:flex;align-items:center;gap:10px;width:100%;padding:11px 10px;border:none;
  background:none;font-family:inherit;font-size:14.5px;color:var(--text);border-radius:10px;
  cursor:pointer;text-align:left}
.dr-row:active{background:#f6f5f2}
.dr-row.on{background:var(--focus-soft);color:var(--focus);font-weight:600}
.dr-row .dr-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dr-row>i:last-child{font-style:normal;font-size:12.5px;color:#b9b7b2;font-variant-numeric:tabular-nums}
.dr-row.on>i:last-child{color:var(--focus)}
.dr-ic{width:13px;flex:0 0 13px;font-style:normal;font-size:13px}
.dr-dot{width:11px;height:11px;border-radius:50%;flex:0 0 11px;display:inline-block}
.dr-foot{border-top:1px solid var(--line);padding:8px;display:grid;grid-template-columns:1fr 1fr;gap:6px}
.dr-f{display:block;text-align:center;padding:9px 6px;border-radius:10px;background:#faf9f7;
  border:1px solid var(--line);font-size:13px;font-family:inherit;color:var(--text);cursor:pointer}
.dr-f:active{background:#f1efec}
@media (max-width:640px){
  .rs-c{height:23px;font-size:11px}
  .hb-d{height:17px;font-size:9.5px}
}

/* ================= 第3批 · 下半屏弹层（时间面板 / 重复 / 清单 / 优先级） ================= */
.sh-mask{position:fixed;inset:0;background:rgba(0,0,0,.38);z-index:70;display:flex;
  align-items:center;justify-content:center;padding:14px;animation:shfade .18s ease}
@keyframes shfade{from{opacity:0}to{opacity:1}}
.sh{width:100%;max-width:520px;background:#fff;border-radius:16px;padding:0;
  max-height:86vh;overflow-y:auto;animation:shup .22s ease;position:relative;
  box-shadow:0 18px 50px rgba(0,0,0,.22)}
/* ★ #240：弹层可以按住标题栏拖动（她要求「跳出来的页面能移动、不靠底」） */
.sh-head{cursor:move;touch-action:none;user-select:none}
.sh-head button,.sh-head input{cursor:pointer}
@media (max-width:560px){.sh-mask{padding:10px}.sh{max-height:88vh}}
@keyframes shup{from{transform:translateY(26px);opacity:.6}to{transform:translateY(0);opacity:1}}
.sh-tall{max-height:80vh}
.sh-head{position:sticky;top:0;background:#fff;display:flex;align-items:center;gap:8px;
  padding:12px 14px;border-bottom:1px solid var(--line);z-index:2}
.sh-cancel,.sh-ok{border:none;background:none;font-size:15px;font-family:inherit;padding:4px 2px}
.sh-cancel{color:var(--muted)}
.sh-ok{color:var(--focus);font-weight:600}
.sh-tabs{flex:1;display:flex;justify-content:center;gap:4px}
.sh-tab{border:none;background:none;font-family:inherit;font-size:14px;color:var(--muted);
  padding:5px 11px;border-radius:999px}
.sh-tab.on{background:var(--focus-soft);color:var(--focus);font-weight:600}
.sh-title2{flex:1;text-align:center;font-size:15px;font-weight:600}
.sh-spacer{width:34px;flex:0 0 34px}

.sh-cal{padding:10px 14px 4px}
.sh-calhead{display:flex;align-items:center;justify-content:center;gap:18px;padding:4px 0 8px}
.sh-calhead b{font-size:15px;min-width:110px;text-align:center;font-variant-numeric:tabular-nums}
.sh-nav{width:32px;height:32px;border-radius:50%;border:1px solid var(--line);background:#fff;
  font-size:17px;line-height:1;padding:0;color:var(--text)}
.sh-nav:active{background:#f4f3f0}
.sh-week,.sh-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.sh-week span{text-align:center;font-size:11.5px;color:var(--muted);padding-bottom:5px}
.sh-cell{height:50px;border-radius:9px;background:#fbfaf8;border:1px solid transparent;
  display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;
  font-family:inherit;cursor:pointer;overflow:hidden}
.sh-cell .sh-d{font-size:14.5px;font-weight:600;line-height:1.15;font-variant-numeric:tabular-nums}
.sh-cell .sh-l{font-size:9.5px;color:var(--muted);line-height:1.2;white-space:nowrap;
  max-width:100%;overflow:hidden}
.sh-cell.out{opacity:.35}
.sh-cell.today{box-shadow:inset 0 0 0 2px #4a7fd9}
.sh-cell.sel{background:var(--focus);border-color:var(--focus)}
.sh-cell.sel .sh-d,.sh-cell.sel .sh-l{color:#fff}

.sh-fields{border-top:1px solid var(--line);margin-top:8px}
.sh-f{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line);
  width:100%;background:none;border-left:none;border-right:none;border-top:none;font-family:inherit;
  text-align:left}
.sh-f>span{font-size:13px;color:var(--muted);flex:0 0 34px}
.sh-fv{flex:1;display:flex;align-items:center;gap:8px;min-width:0}
.sh-fv input[type=time]{padding:7px 9px;border:1px solid var(--line);border-radius:9px;
  font-size:14px;font-family:inherit;background:#fff}
.sh-fbtn{cursor:pointer}
.sh-fbtn b{flex:1;font-size:14.5px;font-weight:400;color:var(--muted)}
.sh-fbtn b.on{color:var(--text);font-weight:600}
.sh-fbtn i{font-style:normal;color:#c9c7c2;font-size:16px}
.sh-none,.sh-allday{font-size:14.5px;color:var(--muted)}
.sh-wav{color:var(--muted)}

.sh-opts{padding:4px 0}
.sh-opt{display:flex;align-items:center;gap:10px;width:100%;padding:13px 16px;background:none;
  border:none;border-bottom:1px solid var(--line);font-family:inherit;text-align:left;cursor:pointer}
.sh-opt:active{background:#faf9f7}
.sh-opt-t{font-size:15.5px;color:var(--text);flex:1 1 auto;min-width:0}
.sh-opt-d{font-size:12.5px;color:var(--muted);flex:0 0 auto;max-width:46%;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.sh-opt-c{font-style:normal;color:var(--focus);font-size:15px;flex:0 0 16px;text-align:right}
.sh-dot{width:13px;height:13px;border-radius:50%;flex:0 0 13px;display:inline-block}
.sh-extra{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px 16px 16px;
  border-top:1px solid var(--line);font-size:13px;color:var(--muted)}
.sh-extra input[type=number]{width:64px;padding:7px 9px;border:1px solid var(--line);
  border-radius:9px;font-size:14px;font-family:inherit}
.sh-wd{width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:#fff;
  font-size:13.5px;font-family:inherit;padding:0;color:var(--text)}
.sh-wd.on{background:var(--focus-soft);border-color:var(--focus);color:var(--focus);font-weight:600}

@media (max-width:640px){
  .cmp-ic{min-width:52px}
  .sh-cell{height:44px;border-radius:8px}
  .sh-cell .sh-d{font-size:13.5px}
  .sh-cell .sh-l{font-size:9px}
  .cmp-save{flex:1 1 100%;margin-top:6px}
}


/* ---------- 生理期：记录区（R22）+ 「有记录」标记（R21）+ 结论句（R23），2026-10-06 ---------- */
body.swipeable{touch-action:pan-y}              /* 手机横滑交给 JS，不被浏览器滚动吃掉 */
.pd-conclusion{margin:11px 0 0;font-size:13px;color:#6f6d69;line-height:1.5;
  background:#faf9f7;border-radius:9px;padding:9px 11px}
.pd-logs{margin:2px 0 4px}
.pd-row2{display:flex;align-items:center;gap:10px;padding:11px 2px;border-bottom:1px solid var(--line)}
.pd-row2:last-child{border-bottom:none}
.pd-row2 .pd-ic{flex:0 0 20px;text-align:center;font-size:15px}
.pd-row2 .pd-t{flex:0 0 auto;font-size:14.5px;color:var(--text)}
.pd-row2 .pd-v{flex:1 1 auto;min-width:0;text-align:right;font-size:12.5px;color:#7d7d7d;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pd-row2 .pd-v.off{color:#c2c0bb}
.pd-plus{flex:0 0 auto;width:30px;height:30px;border-radius:50%;border:1px solid #f0bdb6;
  background:#fff;color:var(--focus);font-size:17px;line-height:1;padding:0;font-family:inherit;cursor:pointer}
.pd-plus:active{background:#fdeeec}
.pd-btn{flex:0 0 auto;border:none;background:var(--focus);color:#fff;border-radius:9px;
  padding:7px 12px;font-size:13.5px;font-family:inherit;cursor:pointer}
.pd-date{font-size:12.5px;color:var(--muted)}
.pd-cell .pd-haslog{position:absolute;left:50%;bottom:4px;transform:translateX(-50%);
  width:5px;height:5px;border-radius:50%;background:var(--focus)}
.pd-cell.m-period .pd-haslog{background:#fff}
.pd-dot.haslog{background:var(--focus);width:7px;height:7px;border-radius:50%}
.lg-body{padding:14px 16px}
.lg-body textarea{width:100%;min-height:96px;border:1px solid var(--line);border-radius:10px;
  padding:10px;font-size:15px;font-family:inherit;line-height:1.5;resize:vertical;box-sizing:border-box}
.lg-body input[type=number]{width:100%;padding:11px 12px;border:1px solid var(--line);
  border-radius:10px;font-size:16px;font-family:inherit;box-sizing:border-box}
.lg-chips{display:flex;flex-wrap:wrap;gap:8px}
.lg-chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 13px;
  font-size:14px;font-family:inherit;color:var(--text);cursor:pointer}
.lg-chip.on{background:#fdeeec;border-color:var(--focus);color:var(--focus);font-weight:600}
.lg-foot{padding:0 16px 16px}
.lg-foot .btn-primary{width:100%}
.sh-spacer{flex:0 0 46px}
@media (max-width:640px){
  .pd-row2{padding:10px 0}
  .pd-row2 .pd-t{font-size:14px}
  .pd-row2 .pd-v{font-size:12px}
  .lg-chip{padding:9px 14px;font-size:15px}
}


/* ---------- 「我的」页改成时光序那种列表式（2026-10-06 Lisa：上面一行没意义、设置要收在一起） ---------- */
.topbar-center{justify-content:center}
.me-account{display:flex;align-items:center;gap:12px}
.me-avatar{width:44px;height:44px;border-radius:50%;background:var(--focus);color:#fff;font-size:19px;
  font-weight:600;display:flex;align-items:center;justify-content:center;flex:0 0 44px}
.me-acc-main{min-width:0;flex:1 1 auto}
.me-acc-name{font-size:16px;font-weight:600}
.me-acc-sub{font-size:12.5px;color:var(--muted);margin-top:2px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.set-card{padding:2px 14px 10px}
.set-group{font-size:12.5px;color:var(--muted);padding:14px 2px 4px}
.set-row{display:flex;align-items:center;gap:10px;width:100%;padding:13px 2px;
  border:none;border-bottom:1px solid var(--line);background:none;font-family:inherit;
  text-align:left;color:var(--text);text-decoration:none;cursor:pointer;font-size:15px}
.set-row:active{background:#faf9f7}
.set-t{flex:0 0 auto}
.set-v{flex:1 1 auto;min-width:0;text-align:right;font-size:12.5px;color:var(--muted);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.set-go{flex:0 0 auto;color:#c9c7c2;font-size:17px;line-height:1}
.set-panel{display:none;padding:12px 12px 14px;margin:4px 0 6px;background:#fbfaf8;
  border-radius:10px;border:1px solid var(--line)}
.set-panel.open{display:block}
.set-panel .form-grid{gap:10px 12px}
.set-panel .notify-state{margin:0 0 8px}
.set-save{margin:14px 0 6px}
@media (max-width:640px){
  .set-row{padding:12px 2px;font-size:14.5px}
  .set-panel{padding:11px 10px 13px}
}

/* 逾期出口条（专注/待办清单顶部，2026-10-06） */
.stale-bar{display:flex;align-items:center;gap:10px;padding:9px 11px;margin:2px 0 8px;
  background:#fdf6e6;border-radius:10px;font-size:13px;color:#9a6a12;list-style:none}
.stale-btn{margin-left:auto;border:none;background:#9a6a12;color:#fff;border-radius:8px;
  padding:6px 11px;font-size:12.5px;font-family:inherit;cursor:pointer}
.stale-btn:active{opacity:.85}

/* ---------- 任务行＝图片卡片（Lisa 2026-10-06 照番茄ToDo；封面自动分配，不用她挑） ---------- */
.task-list li.tk{border-radius:14px;overflow:hidden;margin:0 0 8px;border-bottom:none;
  box-shadow:0 1px 4px rgba(0,0,0,.10)}
.task-list li.tk .sw-wrap{padding:13px 12px;gap:10px}
.sw-wrap.tk-img{background-size:cover;background-position:center;border-radius:14px}
.tk-img .tk-t{color:#fff;font-weight:600;text-shadow:0 1px 3px rgba(0,0,0,.45)}
.tk-img .tk-s{color:rgba(255,255,255,.9);text-shadow:0 1px 2px rgba(0,0,0,.35)}
.tk-img .tk-ring{background:rgba(255,255,255,.92);border-color:rgba(255,255,255,.92)}
.tk-img .tk-ring.on{background:#3fa66b;border-color:#3fa66b;color:#fff}
.tk-img .drag-handle{color:rgba(255,255,255,.65)}
.tk-img .btn-start{background:#fff;color:#1f1f1f;font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.15)}
.tk-img .btn-start:active{filter:brightness(.95)}
.sw-wrap.tk-img.tk-done,.tk-done .sw-wrap.tk-img{filter:saturate(.45) brightness(.92)}


/* ---------------- 快速添加（全屏页 /add，照滴答清单点 + 进来的那一页）2026-10-06 ---------------- */
body.ad-page{padding-left:0;padding-right:0;background:var(--card)}
.ad-bar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;
  padding:10px 14px;background:var(--card);border-bottom:1px solid var(--line)}
.ad-x{width:34px;height:34px;border:none;background:#f4f3f0;border-radius:50%;font-size:16px;
  color:var(--muted);line-height:1;flex:0 0 34px}
.ad-title{flex:1;text-align:center;font-size:16px;font-weight:600}
.ad-save{border:none;background:var(--focus);color:#fff;border-radius:10px;padding:8px 18px;
  font-size:15px;font-weight:600;font-family:inherit;flex:0 0 auto}
.ad-save:active{filter:brightness(.92)}
.ad-body{padding:12px 14px 40px;max-width:720px;margin:0 auto}
.ad-text{width:100%;min-height:84px;max-height:360px;resize:none;overflow-y:auto;
  border:none;outline:none;font-family:inherit;font-size:19px;line-height:1.5;color:var(--text);
  background:transparent;padding:6px 2px;display:block}
.ad-text::placeholder{color:#bdbab4}
.ad-rows{margin-top:6px}
.arow{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;
  border:none;border-top:1px solid var(--line);padding:14px 4px;font-family:inherit;
  font-size:15px;color:var(--text)}
.arow.act{background:#faf9f7;border-radius:10px}
.arow-ic{font-size:17px;width:22px;text-align:center;flex:0 0 22px}
.arow-k{flex:0 0 auto;color:var(--muted)}
.arow-v{flex:1;text-align:right;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.arow-v.on{color:var(--focus);font-weight:600}
.arow-a{color:#c9c7c2;font-style:normal;flex:0 0 auto}
.apanel{display:none;padding:0 4px 14px}
.apanel.open{display:block}
.achips{display:flex;flex-wrap:wrap;gap:8px;padding:10px 0 2px}
.achip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 14px;
  font-size:14px;font-family:inherit;color:var(--text)}
.achip.on{background:var(--focus);border-color:var(--focus);color:#fff;font-weight:600}
.atimes{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 0 2px;
  font-size:14px;color:var(--muted)}
.atimes input[type=time],.atimes input[type=number]{padding:8px 10px;border:1px solid var(--line);
  border-radius:9px;font-size:15px;font-family:inherit;background:#fff;color:var(--text)}
.atimes input[type=number]{width:74px}
.awd{width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:#fff;
  font-family:inherit;font-size:14px;color:var(--text)}
.awd.on{background:var(--focus);border-color:var(--focus);color:#fff;font-weight:600}
.anote{font-size:12.5px;color:var(--muted);padding:6px 0 0}
.acal{background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px 8px 12px;margin-top:6px}
.acal-head{display:flex;align-items:center;justify-content:center;gap:18px;padding:2px 0 8px}
.acal-head b{font-size:15px;min-width:112px;text-align:center;font-variant-numeric:tabular-nums}
.acal-nav{width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:#fff;
  font-size:15px;color:var(--muted);line-height:1;padding:0}
.acal-week,.acal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.acal-week span{text-align:center;font-size:11.5px;color:var(--muted);padding-bottom:4px}
.acal-cell{background:none;border:none;font-family:inherit;border-radius:10px;padding:5px 0 4px;
  display:flex;flex-direction:column;align-items:center;gap:1px;min-height:44px;justify-content:center}
.acal-cell.out{visibility:hidden}
.acal-d{font-size:15px;line-height:1.15;color:var(--text);font-variant-numeric:tabular-nums}
.acal-l{font-size:9.5px;line-height:1.1;color:var(--muted);white-space:nowrap;overflow:hidden;max-width:100%}
.acal-cell.today .acal-d{color:var(--focus);font-weight:700}
.acal-cell.sel{background:var(--focus)}
.acal-cell.sel .acal-d,.acal-cell.sel .acal-l{color:#fff}
.acal-slide{touch-action:pan-y}          /* 日历左右滑切月（2026-10-07），纵向滚动不受影响 */

/* ================= 提醒（多条，照华为日历）+ 重复（自定义）================= */
/* 提醒：一条一条列出来，点一条改，右边 ✕ 删；底下「＋ 添加提醒」 */
.rm-list{display:flex;flex-direction:column;gap:6px;padding:10px 0 2px}
.rm-row{display:flex;align-items:center;gap:8px}
.rm-main{flex:1;display:flex;align-items:center;gap:8px;text-align:left;border:1px solid var(--line);
  background:#fff;border-radius:10px;padding:10px 12px;font-size:14.5px;font-family:inherit;color:var(--text)}
.rm-main span{font-size:15px}
.rm-row .rm-x{flex:0 0 34px;width:34px;height:38px;border-radius:10px;border:1px solid var(--line);
  background:#fff;color:#bbb;font-size:14px;line-height:1;font-family:inherit}
.rm-add{width:100%;border:1px dashed var(--line);background:#faf9f7;border-radius:10px;padding:10px 12px;
  font-size:14px;font-family:inherit;color:var(--focus);font-weight:600}
/* 底部弹上来的选项单：无 / 准时 / 5分钟前 / … */
.rm-mask{position:fixed;inset:0;background:rgba(0,0,0,.32);z-index:70;display:flex;align-items:flex-end}
.rm-sheet{width:100%;max-height:82vh;overflow-y:auto;background:#fff;border-radius:16px 16px 0 0;
  padding:8px 0 calc(10px + env(safe-area-inset-bottom))}
.rm-sheet-t{text-align:center;font-size:14px;color:var(--muted);padding:12px 0 6px}
.rm-opt{width:100%;border:none;background:none;font-family:inherit;text-align:left;font-size:16px;
  color:var(--text);padding:14px 20px;border-top:1px solid #f2f0ec;display:flex;justify-content:space-between}
.rm-opt.on{color:var(--focus);font-weight:600}
.rm-opt i{font-style:normal;color:var(--focus)}
.rm-cancel{width:100%;border:none;background:none;font-family:inherit;font-size:16px;color:var(--muted);
  padding:15px 20px;border-top:8px solid #f6f5f2;margin-top:4px}
@media (min-width:641px){.rm-mask{align-items:center;justify-content:center}
  .rm-sheet{width:360px;border-radius:16px;max-height:70vh}}

/* 重复：类型这一排用 .achips，下面自定义块 */
#c-rep .achips{padding-top:10px}
.rp-box{border:1px solid var(--line);background:#faf9f7;border-radius:12px;padding:4px 12px 12px;margin-top:10px}
.rp-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid #efedE8}
.rp-box .rp-line:last-of-type{border-bottom:none}
.rp-k{font-size:13.5px;color:var(--muted);flex:0 0 auto}
.rp-k2{font-size:14px;color:var(--text)}
.rp-n{width:64px;padding:8px 9px;border:1px solid var(--line);border-radius:9px;font-size:15px;
  font-family:inherit;text-align:center;background:#fff;color:var(--text)}
.rp-units{display:flex;gap:6px;margin-left:auto}
.rp-unit{min-width:38px;height:34px;border:1px solid var(--line);background:#fff;border-radius:9px;
  font-family:inherit;font-size:14px;color:var(--text);padding:0 10px}
.rp-unit.on{background:var(--focus);border-color:var(--focus);color:#fff;font-weight:600}
.rp-wds{display:flex;gap:6px;flex-wrap:wrap}
.rp-wd{width:32px;height:32px;border-radius:50%;border:1px solid var(--line);background:#fff;
  font-family:inherit;font-size:13.5px;color:var(--text);padding:0}
.rp-wd.on{background:var(--focus);border-color:var(--focus);color:#fff;font-weight:600}
.rp-until{border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 12px;font-size:14px;
  font-family:inherit;color:var(--text);margin-left:auto}
.rp-until.on{border-color:var(--focus);color:var(--focus);font-weight:600}
.rp-until-x{border:1px solid var(--line);background:#fff;border-radius:9px;color:#bbb;font-size:13px;
  width:32px;height:32px;font-family:inherit;padding:0}
.rp-date{width:100%;margin-top:8px;padding:9px 10px;border:1px solid var(--line);border-radius:9px;
  font-size:15px;font-family:inherit;background:#fff;color:var(--text)}

/* 首页右下角「＋ 快速添加」（照滴答清单的 + 入口） */
.afab{position:fixed;right:18px;bottom:calc(86px + env(safe-area-inset-bottom));
  width:56px;height:56px;border-radius:50%;background:var(--focus);color:#fff;font-size:30px;
  line-height:1;display:flex;align-items:center;justify-content:center;text-decoration:none;
  box-shadow:0 6px 18px rgba(224,86,74,.42);z-index:30}
.afab:active{filter:brightness(.92)}
@media (max-width:480px){
  .ad-text{font-size:18px}
  .arow{padding:13px 4px}
}


/* ================= 待办页 · 文字式列表（Lisa 2026-10-06：从「卡片式列表」改成滴答清单那种「文字式列表」） ================= */
.task-list.plain li.tk{border-radius:0;box-shadow:none;margin:0;border-bottom:1px solid var(--line)}
.task-list.plain li.tk:last-child{border-bottom:none}
.task-list.plain li.tk .sw-wrap{padding:12px 2px;gap:12px;background:transparent}
.task-list.plain li.tk .sw-wrap.tk-img{background-image:none}
.task-list.plain .drag-handle{color:#d2d0cb;font-size:13px;padding:0 2px}
.task-list.plain .tk-ring{width:20px;height:20px;flex:0 0 20px;border-width:1.6px;border-color:#c9c7c2;
  background:#fff;color:transparent;font-size:12px}
.task-list.plain .tk-ring.on{background:var(--brk);border-color:var(--brk);color:#fff}
.task-list.plain .tk-t{font-size:15.5px;font-weight:400;color:#20201f}
.task-list.plain .tk-s{font-size:12.5px;color:#9a9a95;margin-top:3px;white-space:normal;
  overflow:visible;text-overflow:clip;line-height:1.4}
.task-list.plain .tk-done .tk-t{color:#b0aeaa}
/* ---------- R27（2026-10-06，照滴答清单）：行右侧元信息 / 悬停才现的拖拽把手 / 分组折叠 ---------- */
.task-list.plain .tk-right{flex:0 0 auto;display:flex;align-items:center;gap:6px;
  font-size:12.5px;color:#9a9a95;white-space:nowrap;font-variant-numeric:tabular-nums}
.task-list.plain .tk-right .tk-ic{font-size:12.5px;line-height:1;opacity:.85}
.task-list.plain .tk-right .tk-date{font-size:12.5px}
.task-list.plain li.tk{cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none !important;user-select:none !important}
/* 长标题长按会跳出「选词」——安卓这套比我们的长按还早，所以行内所有子元素都关掉选择（输入框除外） */
.task-list.plain li.tk *:not(input):not(textarea){-webkit-touch-callout:none;
  -webkit-user-select:none !important;user-select:none !important}
/* 行首「⋮⋮」平时宽度 0（勾选框顶格，和滴答一样）；鼠标移到这一行才在它前面露出来。
   用 :hover 直接控制、再用 pointer:coarse 关掉触摸设备上的粘滞 hover——比只挂 (hover:hover) 稳，
   触摸屏笔记本那种混合设备也能用鼠标拖。 */
.task-list.plain li.tk .drag-handle{width:0;flex:0 0 0;opacity:0;overflow:hidden;padding:0;
  transition:width .12s ease,opacity .12s ease}
.task-list.plain li.tk:hover .drag-handle{width:22px;flex:0 0 22px;opacity:1;padding:0 2px}
@media (pointer:coarse){
  /* 手机上不靠长按也能拖：行尾给一个很淡的小把手（长按那条路保留，能用就用） */
  .task-list.plain li.tk .drag-handle{width:18px !important;flex:0 0 18px !important;
    opacity:.45 !important;padding:0 !important;order:9;font-size:12px;letter-spacing:-2px}
}
/* 分组标题：左侧名称，右侧「条数 ＋ 折叠箭头」，点整行折叠 */
.task-list.plain .group-head{cursor:pointer;-webkit-user-select:none;user-select:none}
.task-list.plain .gh-r{margin-left:auto;display:flex;align-items:center;gap:8px}
.task-list.plain .gh-r i{font-style:normal;color:#b9b7b2;font-weight:400}
.task-list.plain .gh-arrow{font-weight:400;color:#c4c2bd;font-size:11px;transition:transform .15s;
  display:inline-block}
.task-list.plain .group-head.folded .gh-arrow{transform:rotate(-90deg)}
/* 右下角悬浮「＋」＝新增（照滴答清单） */
.fab{position:fixed;right:16px;bottom:calc(70px + env(safe-area-inset-bottom));
  width:56px;height:56px;border-radius:50%;border:none;background:var(--focus);color:#fff;
  font-size:26px;line-height:1;box-shadow:0 6px 18px rgba(224,86,74,.38);z-index:65;
  display:flex;align-items:center;justify-content:center;padding:0}
.fab:active{filter:brightness(.93)}
@media (min-width:900px){ .fab{right:30px;bottom:30px} }
.task-list.plain .group-head{font-size:13px;color:#3f3f3d;font-weight:600;padding:14px 2px 6px}
.task-list.plain .group-head::after{display:none}
.task-list.plain .group-head i{color:#b9b7b2}
.task-list.plain .stale-bar{background:none;border:1px dashed #ecdcae;border-radius:10px}
.tk-date{font-variant-numeric:tabular-nums;color:#9a9a95}
.tk-date.due-late{color:#e0564a}
.tk-date.due-today{color:#4a7fd9}
.tk-meta{color:#9a9a95}
.done-fold ul.task-list.plain li.tk{border-bottom:1px solid var(--line)}

/* 标签（R14 2026-10-06）：列表行里的小标签、编辑弹窗里的多选标签 */
.tk-tag{color:#5a7fb8;font-variant-numeric:tabular-nums}
.tk-img .tk-tag{color:rgba(255,255,255,.9);text-shadow:0 1px 2px rgba(0,0,0,.35)}
.etags{display:flex;flex-wrap:wrap;gap:7px;padding:4px 0 2px}
.etag{border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 12px;
  font-size:13.5px;font-family:inherit;color:#5a7fb8}
.etag.on{background:#5a7fb8;border-color:#5a7fb8;color:#fff;font-weight:600}
.etag-empty{font-size:12.5px;color:var(--muted)}
.etag-in{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:10px;
  font-size:14px;font-family:inherit;margin-top:6px}

/* 垃圾桶（R15 2026-10-06）*/
.dr-sep{height:1px;background:var(--line);margin:8px 10px}
.tr-panel{width:340px;max-width:92vw}
.tr-row{display:flex;align-items:center;gap:8px;padding:11px 10px;border-bottom:1px solid var(--line)}
.tr-main{flex:1;min-width:0}
.tr-t{font-size:14.5px;color:var(--text);overflow:hidden;display:-webkit-box;
  -webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}
.tr-s{font-size:11.5px;color:var(--muted);margin-top:3px;font-variant-numeric:tabular-nums}
.tr-b{flex:0 0 auto;border:1px solid var(--line);background:#fff;border-radius:8px;
  padding:6px 10px;font-size:12.5px;font-family:inherit;color:#4a7fd9}
.tr-b.danger{color:#c0392b;border-color:#f0d3d0;background:#fdecea}

/* 左栏目录（R12 2026-10-06）*/
.dr-cap{font-size:11.5px;color:var(--muted);padding:9px 10px 2px;letter-spacing:.4px}
.tr-acts{display:flex;gap:6px;align-items:center;margin-left:8px;flex:0 0 auto}
.tk-in-trash .tk-t{color:#8b8b8b}
.tk-in-trash .tk-ring{display:none}

/* ================= R11 三栏骨架（≥1024px；手机上仍是单栏＋抽屉）2026-10-06 ================= */
.td3{display:block}
.dir-rail,.detail-pane{display:none}
@media (min-width:860px){
  body{padding-left:0;padding-right:0}
  .td3{display:grid;grid-template-columns:200px minmax(0,1fr) 288px;gap:12px;
    max-width:1400px;margin:0 auto;padding:14px 16px 20px;align-items:start}
  .dir-rail{display:block;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);
    padding:12px 8px;position:sticky;top:14px;max-height:calc(100vh - 150px);overflow-y:auto}
  .rail-cap{font-size:14px;font-weight:600;padding:4px 10px 8px}
  .detail-pane{display:block;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);
    padding:16px;position:sticky;top:14px;min-height:180px}
  .td3-mid .card{margin-bottom:0}
  /* ★ 反馈 #289（2026-10-20）：「中栏要把滚动条放在中栏里一个；要中栏固定住输入框的位置」
     —— 三栏各自成块：中栏卡片撑满可视高度，只有列表区 .td-scroll 滚，
     表头/清单页签/添加框/今天的事项卡都固定在上面不跟着滚。 */
  .td3{align-items:stretch;height:calc(100vh - 98px - env(safe-area-inset-bottom))}
  .td3-mid{display:flex;min-height:0}
  .td3-mid .card{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}
  .td-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;
    scrollbar-width:thin;padding-right:2px;margin-right:-2px}
  .td-scroll::-webkit-scrollbar{width:8px}
  .td-scroll::-webkit-scrollbar-thumb{background:#d8ded9;border-radius:6px}
  .td-scroll::-webkit-scrollbar-thumb:hover{background:#c3cbc4}
  .td3 .head-right [data-drawer]{display:none}
  .task-list.plain li.tk.sel{background:#f4f7fd;border-radius:8px}
  .dp-empty{color:var(--muted);font-size:13.5px;padding:22px 4px;text-align:center}
  .dp-head{font-size:17px;font-weight:600;line-height:1.35;word-break:break-word;margin:0 0 10px}
  .dp-row{display:flex;gap:10px;padding:9px 0;border-top:1px solid var(--line);font-size:13.5px}
  .dp-k{flex:0 0 56px;color:var(--muted)}
  .dp-v{flex:1;color:var(--text);word-break:break-word}
  .dp-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
  .dp-b{border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 12px;
    font-size:13px;font-family:inherit;color:var(--text)}
  .dp-b:active{background:#f4f3f0}
  .dp-b.danger{color:#c0392b;border-color:#f0d3d0;background:#fdecea}
  body.has-tabbar{padding-bottom:calc(70px + env(safe-area-inset-bottom))}
}

/* ================= R16 筛选面板（2026-10-06）================= */
.dr.fl-panel{width:min(430px,94vw);height:auto;max-height:86vh;align-self:center;margin:auto;
  border-radius:14px;box-shadow:0 18px 50px rgba(0,0,0,.22)}
.fl-body{padding:2px 14px 12px;overflow:auto;flex:1}
.fl-g{margin:12px 0 2px}
.fl-g .achip{margin:0 6px 6px 0;padding:6px 13px;font-size:13px}
.fl-cap{font-size:12px;color:var(--muted);margin-bottom:7px}
.dr-foot{display:flex;gap:8px;padding:10px 12px;border-top:1px solid var(--line)}
.fl-b{flex:1;padding:11px;border-radius:9px;border:1px solid var(--line);background:#fff;
  font-family:inherit;font-size:14px;color:var(--text);cursor:pointer}
.fl-b.primary{background:var(--focus);border-color:var(--focus);color:#fff;font-weight:600}

/* 空目录出口按钮 + 条数为 0 的弱化显示（2026-10-06 Lisa 反馈）*/
.dr-row i.zero{color:var(--muted);opacity:.55;font-weight:400}
.empty-bs{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;justify-content:center}
.empty-b{border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 14px;
  font-family:inherit;font-size:13.5px;color:var(--text);cursor:pointer}
.empty-b:hover{border-color:var(--focus);color:var(--focus)}

/* ============ 右栏顶部工具栏（照滴答清单 · 2026-10-06 Lisa 反馈）============ */
.dp-bar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding-bottom:10px;
  border-bottom:1px solid var(--line);margin-bottom:12px}
.dp-cb{width:19px;height:19px;border:1.6px solid #c9ccd4;border-radius:50%;background:#fff;
  font-size:12px;line-height:1;color:#fff;cursor:pointer;padding:0;flex:0 0 auto;font-family:inherit}
.dp-cb.on{background:var(--focus);border-color:var(--focus)}
.dp-chip{border:1px solid var(--line);background:#fff;border-radius:8px;padding:4px 9px;font-size:12.5px;
  font-family:inherit;color:var(--text);cursor:pointer;max-width:160px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.dp-chip:hover{border-color:var(--focus);color:var(--focus)}
.dp-chip.late{color:#c0392b;border-color:#f0d3d0;background:#fdf3f2}
.dp-menu{position:absolute;z-index:120;background:#fff;border:1px solid var(--line);border-radius:10px;
  box-shadow:0 10px 26px rgba(0,0,0,.14);padding:5px;min-width:136px;max-height:280px;overflow:auto}
.dp-mi{display:block;width:100%;text-align:left;border:none;background:none;font-family:inherit;
  font-size:13.5px;color:var(--text);padding:7px 10px;border-radius:7px;cursor:pointer;white-space:nowrap}
.dp-mi:hover{background:#f1f5fc}
.dp-mi.on{color:var(--focus);font-weight:600}

.dp-flag{font-style:normal;font-weight:700;margin-right:3px}
.dp-flag.p1{color:#e74c3c}.dp-flag.p2{color:#e6a700}.dp-flag.p3{color:#3b82f6}.dp-flag.p0{color:#b8bcc4}


/* ================= 中栏「照滴答清单」重做（2026-10-06 Lisa 拿两家截图对比后要求）=================
   对比结论（逐条对着她的截图量的）：
     滴答：一行一条（行距 ~40px）／勾选框是**圆角方形** ~14px 浅灰细边／标题左、灰色元信息在**同一行**／
           行内没有任何按钮／分隔线极浅（#f1f1f1）／没有拖拽把手
     拾光（改前）：一行两栏高 67px／勾选框是**圆** 20px／元信息在标题**下面一行**／
           每行右侧挂着「移到今天·改日期·置顶·删除」4 个色块按钮／分隔线 #e9e7e2／有 ⋮⋮ 把手
   本次改：① 勾选框 圆→方 ② 元信息挪到标题同一行右侧 ③ 行高收紧 ④ 行内 4 个按钮块平时不显示
           ⑤ 分隔线变浅 ⑥ 拖拽把手改成鼠标悬停才淡淡出现 */

/* ① 勾选框：圆 → 方（待办中栏、专注页卡片、右栏工具栏一律统一）*/
.tk-ring{border-radius:6px}
.task-list.plain .tk-ring{width:17px;height:17px;flex:0 0 17px;border-radius:4.5px;
  border:1.5px solid #cfcdc8;background:#fff;color:#fff;font-size:11px;font-weight:700}
.task-list.plain .tk-ring.on{background:var(--brk);border-color:var(--brk);color:#fff}
.dp-cb{border-radius:5px}

/* ② 一行式：标题在左、灰色元信息在同一行右侧（照滴答）*/
.task-list.plain li.tk{border-bottom:1px solid #f0eeea}
.task-list.plain li.tk .sw-wrap{padding:11px 2px;gap:10px;align-items:center}
.task-list.plain .tk-main{display:flex;align-items:center;gap:10px;min-width:0;width:100%}
.task-list.plain .tk-t{flex:1 1 auto;min-width:0;display:block;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;-webkit-line-clamp:1;-webkit-box-orient:horizontal;font-size:15px;line-height:1.3}
.task-list.plain .tk-s{flex:0 0 auto;max-width:58%;min-width:0;margin-top:0;font-size:12.5px;color:#9a9a95;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;text-align:right}
/* 行高压到滴答那种密度：拖拽把手别撑高 */
.task-list.plain .drag-handle{height:20px}

/* ③ 每行那 4 个色块按钮：平时不显示（手机上左滑时才滑出来，桌面用右栏操作）*/
.task-list.plain li.tk .sw-actions{display:none}
.task-list.plain li.tk.sw-open .sw-actions{display:flex}
.task-list.plain li.tk.sw-open .sw-wrap{transform:translateX(-248px)}

/* ④ 拖拽把手：滴答清单没有这个把手，改成鼠标悬停时才淡淡出现（手机仍常显，否则没法排序）*/
@media (min-width:860px){
  .task-list.plain .drag-handle{opacity:0;transition:opacity .15s;width:16px;flex:0 0 16px}
  .task-list.plain li.tk:hover .drag-handle{opacity:1}
}

/* ⑤ 手机屏窄：元信息落回标题下面一行（一行塞不下，照滴答手机端也是两行）*/
@media (max-width:640px){
  .task-list.plain .tk-main{flex-wrap:wrap;row-gap:0}
  .task-list.plain .tk-t{flex:1 1 100%}
  .task-list.plain .tk-s{flex:1 1 100%;text-align:left;margin-top:2px}
  .task-list.plain li.tk .sw-wrap{padding:9px 2px}
}

/* ============ 详情页照片（2026-10-06 Lisa：详情页里能加照片）============
   右栏详情 和 手机上那个编辑弹窗 共用同一套样式 */
.dp-photos{margin:12px 0 4px;padding-top:10px;border-top:1px solid #f0eeea}
.dp-ph-title{font-size:12px;color:#8a8f98;margin-bottom:6px}
.dp-ph-cnt{color:#b6b3ad}
.dp-ph-img{display:flex;flex-wrap:wrap;gap:6px}
.dp-ph-cell{position:relative;width:72px;height:72px;border-radius:8px;overflow:hidden;background:#f2f1ee;flex:0 0 auto}
.dp-ph-cell img{width:100%;height:100%;object-fit:cover;display:block;cursor:zoom-in}
.dp-ph-x{position:absolute;top:3px;right:3px;width:18px;height:18px;padding:0;border:0;border-radius:50%;
  background:rgba(0,0,0,.55);color:#fff;font-size:11px;line-height:1;cursor:pointer;opacity:0;transition:opacity .15s}
.dp-ph-cell:hover .dp-ph-x{opacity:1}
@media (max-width:640px){ .dp-ph-x{opacity:1} .dp-ph-cell{width:78px;height:78px} }
.dp-ph-empty{color:#b6b3ad;font-size:12px;line-height:1.6}
.dp-ph-foot{margin-top:8px}
.dp-ph-add{border:1px dashed #cfcdc8;background:#fff;color:#5b9bd5;border-radius:8px;
  padding:6px 12px;font-size:13px;cursor:pointer}
.dp-ph-add:hover{background:#f7fbff;border-color:#9cc4e8}
/* 点开看大图 */
.ph-mask{position:fixed;inset:0;background:rgba(0,0,0,.82);z-index:9999;display:flex;
  align-items:center;justify-content:center;padding:14px;cursor:zoom-out}
.ph-mask img{max-width:100%;max-height:100%;border-radius:6px;box-shadow:0 8px 30px rgba(0,0,0,.5)}
/* 拖图片进来时整块高亮 + 「Ctrl+V 也能加」的提示（2026-10-06 晚，照滴答清单的加图体验）*/
.dp-photos.drop{outline:2px dashed #5b9bd5;outline-offset:3px;border-radius:8px;background:#f7fbff}
.dp-ph-hint{font-size:11px;color:#b6b3ad;margin-top:6px;line-height:1.5}
/* 「详细内容」整块：照片在上、文字在下（2026-10-06 晚，照滴答清单）*/
.dp-note{margin:12px 0 4px;padding-top:10px;border-top:1px solid #f0eeea}
.dp-note-head{font-size:12px;color:#8a8f98;margin-bottom:6px}
.dp-note-hint{color:#c6c3bd;margin-left:4px}
.dp-note .dp-photos{margin:0;padding-top:0;border-top:0}
.dp-note .dp-ph-title{display:none}
/* 内容区（可编辑）：文字和照片混排，照片贴在她光标的位置（2026-10-06 晚） */
.dp-note-ed{width:100%;box-sizing:border-box;margin-top:6px;border:1px solid #e6e4e0;border-radius:8px;
  padding:8px 10px;font-size:14px;line-height:1.7;font-family:inherit;color:#333;background:#fff;
  min-height:72px;white-space:pre-wrap;word-break:break-word}
.dp-note-ed:focus{outline:none;border-color:#9cc4e8;box-shadow:0 0 0 3px rgba(91,155,213,.12)}
.dp-note-ed:empty:before{content:"在这儿写内容，照片可以直接 Ctrl+V 贴在光标这儿";color:#c6c3bd}
.dp-note-img{max-width:100%;max-height:180px;border-radius:8px;vertical-align:top;margin:4px 0;
  cursor:zoom-in;display:block}
.dp-note-saved{float:right;font-size:11px;color:#4a9d6b}

/* 「我的」页页脚的版本号（Lisa 2026-10-07：要知道自己刷新到最新版没有） */
.ver-line{margin:14px 0 26px;text-align:center;font-size:12px;color:#9aa0a6;line-height:1.7;}
.ver-line b{color:#5A8AE9;font-weight:600;letter-spacing:.5px;}

/* 首页（专注清单）顶栏右上角的版本号（Lisa 2026-10-07：打开首页就要能看见，
   不用再点进「我的」——数字变了就说明刷新到最新版了） */
.ts-ver{font-size:11.5px;color:#9aa0a6;letter-spacing:.3px;line-height:1;text-align:right;white-space:nowrap;}
.ts-ver b{color:#5A8AE9;font-weight:600;letter-spacing:.5px;}
@media (max-width:640px){ .ts-ver{text-align:left;font-size:11px} }

/* ===== 标题「就地改」（Lisa 2026-10-06 晚，A 方案）=====
   中栏列表的标题（.tk-t）和右栏详情的标题（.dp-head）点一下，原地变成输入框，
   回车/点别处保存、Esc 取消 —— 不用再开「编辑」弹窗。只在宽屏三栏布局生效。*/
.tk-t,.dp-head{cursor:text;}
.tk-t:hover,.dp-head:hover{background:rgba(90,138,233,.10);box-shadow:0 0 0 2px rgba(90,138,233,.10);border-radius:6px;}
.rn-on,.rn-on:hover{background:transparent!important;box-shadow:none!important;}
.rn-input{font:inherit;font-size:inherit;font-weight:inherit;color:#191919;background:#fff;
  border:1.5px solid #5A8AE9;border-radius:6px;padding:1px 6px;outline:none;
  box-sizing:border-box;max-width:100%;line-height:1.35;}

/* 首页（手机端那个「首页」）顶栏的版本号 —— 她 2026-10-06 说手机浏览器上看不到 */
.topbar .hm-ver{margin-left:auto;flex:0 0 auto;font-size:11.5px;color:#9aa0a6;white-space:nowrap;
  letter-spacing:.3px;margin-right:12px}   /* 2026-10-10 反馈 #133①：版本号往左让出位置，右边留给账号名 */
.topbar .hm-ver b{color:#5A8AE9;font-weight:600;letter-spacing:.5px;}
/* 首页最右上角＝当前账号名（Lisa 2026-10-10 反馈 #133 第①条） */
.hm-user{flex:0 0 auto;font-size:13px;font-weight:600;color:#4a4a4a;max-width:42vw;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:640px){ .topbar .hm-ver{font-size:11px;margin-right:9px} .hm-user{font-size:12.5px;max-width:38vw} }

/* ================= 工作日志（2026-10-06 新增：替掉她 Excel 里的「今天做了什么」） ================= */
/* 顶部：今天的自动摘要（完成待办 / 专注时长，不用手填） */
.lg-hero{background:linear-gradient(135deg,#fff 60%,var(--focus-soft));}
.lg-auto-line{font-size:15px;color:#3a3a38}
.lg-auto-line b{font-size:18px;color:var(--focus);font-variant-numeric:tabular-nums;margin:0 2px}
.lg-auto-sub{font-size:13px;color:var(--muted);margin-top:5px;line-height:1.5}

/* 分类胶囊（点选，再点取消） */
.lg-cats{gap:6px}
.lg-chip{border:1px solid var(--line);background:#fff;color:#5c5c5a;border-radius:999px;
  padding:5px 11px;font-size:13px;font-family:inherit;cursor:pointer}
.lg-chip.on{background:var(--c,#e0564a);border-color:var(--c,#e0564a);color:#fff;font-weight:600}
.lg-cats .lg-chip:active{transform:scale(.97)}

/* 时间花在哪：一条堆叠条 + 图例 */
.lg-sum{margin:4px 0 12px}
.lg-sum-t{font-size:12.5px;color:var(--muted);margin-bottom:6px}
.lg-bar{display:flex;height:10px;border-radius:6px;overflow:hidden;background:#f1efec}
.lg-bar i{display:block;height:100%}
.lg-legend{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:8px}
.lg-lg{font-size:12.5px;color:#5c5c5a;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.lg-lg em{width:9px;height:9px;border-radius:3px;display:inline-block;flex:0 0 9px}

/* 按天分组 */
.lg-day{margin-top:14px}
.lg-dh{display:flex;align-items:baseline;gap:10px;padding:0 2px 6px;border-bottom:1px solid var(--line)}
.lg-dh b{font-size:14.5px;font-weight:600;color:#2b2b2b}
.lg-dh span{font-size:12.5px;color:var(--muted)}
.lg-list{list-style:none;margin:0;padding:0}
.lg-row{display:flex;align-items:flex-start;gap:10px;padding:11px 2px;border-bottom:1px solid #f0eeea}
.lg-row:last-child{border-bottom:none}
.lg-time{flex:0 0 46px;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums;
  padding-top:1px;text-align:right}
.lg-main{flex:1 1 auto;min-width:0}
.lg-c{font-size:15.5px;color:#20201f;line-height:1.45;word-break:break-word}
.lg-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px;align-items:center}
.lg-cat{font-size:11.5px;border-radius:6px;padding:1px 7px;color:#fff;background:var(--c,#8b8b8b);white-space:nowrap}
.lg-min{font-size:12px;color:#a06a11;background:#fff3d6;border-radius:6px;padding:1px 7px;white-space:nowrap}
.lg-place{font-size:12px;color:#6b7f9e;background:#eef3fa;border-radius:6px;padding:1px 7px;white-space:nowrap}
.lg-src{font-size:11.5px;color:#8b8b8b;background:#f1efec;border-radius:6px;padding:1px 6px;white-space:nowrap}
.lg-acts{flex:0 0 auto;display:flex;gap:4px;opacity:0;transition:opacity .15s}
.lg-row:hover .lg-acts{opacity:1}
.lg-b{border:none;background:#f4f2ef;color:#6b6b68;border-radius:8px;width:28px;height:28px;
  font-size:13px;font-family:inherit;cursor:pointer;line-height:1}
.lg-b.lg-del:hover{background:#fdecea;color:var(--focus)}
.lg-b:hover{background:#eae7e2}
.lg-addbox-hint{font-size:12.5px;color:var(--muted)}

/* 手机端：更紧凑；操作按钮常显（手机没有 hover） */
@media (max-width:640px){
  .lg-time{flex:0 0 40px;font-size:12.5px}
  .lg-c{font-size:15px}
  .lg-acts{opacity:1}
  .lg-b{width:26px;height:26px}
  .lg-row{padding:10px 0;gap:8px}
  .lg-legend{gap:3px 12px}
  .lg-auto-line b{font-size:16px}
}

/* —— 「记一条」表单重做（2026-10-06 Lisa 反馈「这个页面加得太随意」＋「日子应该叫日期」）——
   口径：标签在上、输入在下，和「设置」页 .form-grid 同一套写法；手机上两列，不再挤成一行。 */
.lg-addbox{padding:14px;background:#fbfaf8}
.lg-field{margin-bottom:13px}
.lg-lb{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}
.lg-addbox .lg-field>input{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:10px;
  font-size:16px;background:#fff;font-family:inherit;color:var(--text)}
.lg-addbox .lg-field>input:focus{border-color:var(--focus);outline:none;
  box-shadow:0 0 0 3px rgba(224,86,74,.12)}
.lg-grid{gap:13px 14px;margin-bottom:2px}
.lg-grid label{font-size:13px;color:var(--muted);gap:7px}
.lg-grid input{padding:10px 11px;border:1px solid var(--line);border-radius:10px;font-size:16px;
  width:100%;min-width:0;background:#fff;font-family:inherit;color:var(--text)}
.lg-grid input:focus{border-color:var(--focus);outline:none;box-shadow:0 0 0 3px rgba(224,86,74,.12)}
.lg-acts{justify-content:flex-end;gap:10px;margin-top:15px}
.lg-acts .btn-primary,.lg-acts .btn-ghost{margin-top:0;min-width:92px;padding:9px 0;font-size:15px}
@media (max-width:520px){
  .lg-addbox{padding:12px}
  .lg-grid{gap:11px 10px}
  .lg-grid label{font-size:12.5px}
  .lg-acts .btn-primary,.lg-acts .btn-ghost{min-width:0;flex:1 1 0}
}

/* ================= 工作日志 v2（2026-10-06 晚她要求重做：大类输入框＋下拉、大文本框、时间段） ================= */
.lg-addbox{padding:14px;background:#fbfaf8}
.lg-field{margin-bottom:14px}
.lg-lb{display:block;font-size:13px;color:var(--muted);margin-bottom:7px}
.lg-lb-tip{font-size:12px;color:#b3b0aa;margin-left:6px}

/* 大类：输入框 + ▾ 下拉 */
.lg-combo{position:relative;display:flex;align-items:center}
.lg-combo>input{flex:1 1 auto;width:100%;padding:11px 44px 11px 12px;border:1px solid var(--line);
  border-radius:10px;font-size:16px;background:#fff;font-family:inherit;color:var(--text)}
.lg-combo>input:focus{border-color:var(--focus);outline:none;box-shadow:0 0 0 3px rgba(224,86,74,.12)}
.lg-caret{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:32px;height:30px;
  border:none;background:#f4f2ef;border-radius:8px;color:#6b6b68;font-size:13px;cursor:pointer;font-family:inherit}
.lg-caret:hover{background:#eae7e2}
.lg-menu{display:none;position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:30;background:#fff;
  border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 26px rgba(0,0,0,.13);
  max-height:242px;overflow:auto;padding:5px}
.lg-menu.open{display:block}
.lg-mi{display:flex;align-items:center;gap:8px;width:100%;border:none;background:none;cursor:pointer;
  font-family:inherit;font-size:15px;color:var(--text);text-align:left;padding:9px 10px;border-radius:8px}
.lg-mi:hover{background:#f6f4f0}
.lg-mi em{width:9px;height:9px;border-radius:3px;flex:0 0 9px}
.lg-mi i{margin-left:auto;font-style:normal;font-size:12px;color:#b3b0aa}
.lg-menu-empty{padding:10px;font-size:13px;color:var(--muted)}

/* 内容：大文本框 */
.lg-addbox textarea{width:100%;padding:12px;border:1px solid var(--line);border-radius:10px;
  font-size:16px;background:#fff;font-family:inherit;color:var(--text);line-height:1.6;
  resize:vertical;min-height:132px}
.lg-addbox textarea:focus{border-color:var(--focus);outline:none;box-shadow:0 0 0 3px rgba(224,86,74,.12)}

/* 花了多久 */
.lg-time-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.lg-time-row input[type=time]{padding:9px 8px;border:1px solid var(--line);border-radius:9px;
  font-size:15px;background:#fff;font-family:inherit;color:var(--text)}
.lg-time-row input[type=number]{width:76px;padding:9px 8px;border:1px solid var(--line);border-radius:9px;
  font-size:15px;background:#fff;font-family:inherit;color:var(--text)}
.lg-time-row input:focus{border-color:var(--focus);outline:none}
.lg-dash,.lg-or{color:#b3b0aa;font-size:13px}
.lg-dur{font-size:13px;color:var(--brk);font-weight:600}

/* 日期 / 关联房源：两列 */
.lg-grid{gap:13px 14px}
.lg-grid label{font-size:13px;color:var(--muted);gap:7px}
.lg-grid input{padding:10px 11px;border:1px solid var(--line);border-radius:10px;font-size:16px;
  width:100%;min-width:0;background:#fff;font-family:inherit;color:var(--text)}
.lg-grid input:focus{border-color:var(--focus);outline:none;box-shadow:0 0 0 3px rgba(224,86,74,.12)}
.lg-acts{justify-content:flex-end;gap:10px;margin-top:15px}
.lg-acts .btn-primary,.lg-acts .btn-ghost{margin-top:0;min-width:92px;padding:9px 0;font-size:15px}

/* 列表：一行分两段（时间＋操作 / 内容＋元信息），多行内容默认收起来 */
.lg-row{display:block;padding:12px 2px}
.lg-head{display:flex;align-items:center;gap:8px}
.lg-head .lg-time{flex:1 1 auto;text-align:left;font-size:13px;color:#7d7b76;
  font-variant-numeric:tabular-nums}
.lg-main{margin-top:3px}
.lg-c{font-size:15.5px;color:#20201f;line-height:1.55;word-break:break-word;white-space:pre-wrap;cursor:pointer}
.lg-c.clamped{display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}
.lg-meta{margin-top:6px}

@media (max-width:640px){
  .lg-addbox{padding:12px}
  .lg-addbox textarea{min-height:120px}
  .lg-time-row{gap:6px}
  .lg-time-row input[type=time]{flex:1 1 0;min-width:0}
  .lg-time-row input[type=number]{width:64px}
  .lg-grid{gap:11px 10px}
  .lg-acts .btn-primary,.lg-acts .btn-ghost{min-width:0;flex:1 1 0}
}
.lg-ver{margin-left:auto;font-size:11px;color:var(--muted);flex:0 0 auto}

/* —— 🪄 智能分列（纯规则；Lisa 2026-10-06：实现需求的前提下花钱越少越好）—— */
.lg-lb-row{display:flex;align-items:center;gap:8px;margin-bottom:7px;flex-wrap:wrap}
.lg-lb-row .lg-lb{margin-bottom:0}
.lg-magic{margin-left:auto;border:1px solid var(--line);background:#fff;color:#4a7fd9;
  border-radius:999px;padding:5px 12px;font-size:13px;font-family:inherit;cursor:pointer;white-space:nowrap}
.lg-magic:hover{background:#f2f6fd;border-color:#c7d9f6}
.lg-magic:active{transform:scale(.98)}
.lg-hit{margin-top:8px;font-size:12.5px;color:#3d7a52;background:#edf7f0;border-radius:9px;
  padding:8px 10px;line-height:1.7;display:none}
.lg-hit:not(:empty){display:block}
.lg-hit-tip{color:#8b8b8b;margin-left:6px}
.lg-preview{margin-top:9px}
.lg-preview:not(:empty){display:block}
.lg-pv-head{font-size:13px;color:#4a7fd9;margin-bottom:7px}
.lg-pv-head b{font-size:15px}
.lg-pv-list{list-style:none;margin:0 0 10px;padding:0;max-height:214px;overflow:auto;
  border:1px solid var(--line);border-radius:10px;background:#fff}
.lg-pv-list li{display:flex;flex-direction:column;gap:3px;padding:8px 10px;border-bottom:1px solid #f1efec}
.lg-pv-list li:last-child{border-bottom:none}
.lg-pv-list li b{color:var(--muted);font-weight:600;font-size:12px}
.lg-pv-list li span{font-size:14.5px;color:var(--text);word-break:break-word}
.lg-pv-meta{font-style:normal;font-size:12px;color:#a06a11}
.lg-pv-acts{display:flex;gap:10px;justify-content:flex-end}
.lg-pv-acts .btn-primary,.lg-pv-acts .btn-ghost{margin-top:0;min-width:0;padding:9px 16px;font-size:14.5px}
@media (max-width:640px){
  .lg-magic{margin-left:0}
  .lg-lb-row{gap:6px}
  .lg-pv-acts .btn-primary,.lg-pv-acts .btn-ghost{flex:1 1 0}
}

/* —— 识别按钮按 Lisa 给的「顺丰」摆法重摆（2026-10-06 晚）：上面是输入框，右下角一个小红「识别」—— */
.lg-tools{display:flex;align-items:center;gap:10px;margin-top:7px}
.lg-tools .lg-lb-tip{flex:1 1 auto;margin-left:0}
.lg-magic{margin-left:auto;border:none;background:var(--focus);color:#fff;border-radius:9px;
  padding:6px 14px;font-size:13.5px;font-family:inherit;font-weight:600;cursor:pointer;white-space:nowrap;
  box-shadow:0 2px 8px rgba(224,86,74,.28)}
.lg-magic:hover{filter:brightness(.95)}
.lg-magic:active{transform:scale(.97)}
@media (max-width:640px){
  .lg-tools{margin-top:8px}
  .lg-magic{padding:8px 16px;font-size:14px}
  .lg-tools .lg-lb-tip{font-size:12px}
}

/* —— 工作日志顶栏照 App 的做法（Lisa 2026-10-06）：左上角一个返回符号、标题居中、不写版本号、不加标注 —— */
.lg-top{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:0;padding:6px 2px 12px}
.lg-back{width:36px;height:36px;display:flex;align-items:center;justify-content:center;
  border-radius:10px;background:#fff;border:1px solid var(--line);color:var(--text);
  font-size:18px;line-height:1;text-decoration:none}
.lg-back:active{background:#f0eeea}
.lg-head{text-align:center;font-size:16.5px;font-weight:600;color:var(--text);white-space:nowrap}
.lg-spacer{display:block}
@media (max-width:640px){
  .lg-top{grid-template-columns:40px 1fr 40px;padding:4px 0 10px}
  .lg-back{width:34px;height:34px;font-size:17px}
  .lg-head{font-size:16px}
}

/* 手机上一弹键盘，下面的大类/保存就被挡住了 → 内容框压矮一点，让「识别」和大类还在屏幕里（她 2026-10-06 提） */
@media (max-width:640px){
  .lg-addbox textarea{min-height:118px;max-height:34vh}
}

/* —— 又一轮按她说的收（2026-10-06 晚）：去掉自动摘要那行字、＋ 挪到右上角、只留输入框不要外壳标签 —— */
.lg-top{grid-template-columns:40px 1fr 40px}
.lg-plus{margin-left:auto;width:36px;height:36px;border-radius:10px;border:none;background:var(--focus);
  color:#fff;font-size:20px;line-height:1;cursor:pointer;font-family:inherit;
  box-shadow:0 2px 8px rgba(224,86,74,.28)}
.lg-plus:active{transform:scale(.97)}
.lg-bar{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.lg-bar h2{margin:0;font-size:17px;flex:1 1 auto;min-width:0}
/* 输入框：矮一点、内容多了自己出滚动条（不做外层标签） */
.lg-addbox textarea{min-height:104px;max-height:34vh;overflow-y:auto;
  -webkit-overflow-scrolling:touch}
@media (max-width:640px){
  .lg-plus{width:34px;height:34px;font-size:19px}
  .lg-addbox textarea{min-height:104px}
}

/* —— 第三轮：日期那行去掉、大类两个字去掉、识别按钮塞进输入框里（她 2026-10-06 晚批注）—— */
.lg-bar{justify-content:flex-end;margin-bottom:8px}
.lg-bar .seg{margin-left:auto}
.lg-box{position:relative}
.lg-box textarea{padding:12px 12px 46px 12px !important}
.lg-magic{position:absolute;right:9px;bottom:9px;margin:0;
  border:none;background:var(--focus);color:#fff;border-radius:9px;padding:6px 14px;
  font-size:13.5px;font-family:inherit;font-weight:600;cursor:pointer;line-height:1.2;
  box-shadow:0 2px 8px rgba(224,86,74,.28)}
.lg-magic:active{transform:scale(.97)}
.lg-addbox .lg-field:first-of-type{margin-top:12px}
@media (max-width:640px){
  .lg-magic{padding:7px 15px;font-size:14px}
  .lg-box textarea{padding-bottom:48px !important}
}

/* 快速添加页左上角也换成返回箭头（她 2026-10-06 要求跟工作日志一致） */
button.lg-back{border:1px solid var(--line);background:#fff;cursor:pointer;font-family:inherit;
  padding:0;color:var(--text)}
button.lg-back:active{background:#f0eeea}
.ad-back{flex:0 0 36px}
@media (max-width:640px){ .ad-back{flex:0 0 34px} }

/* ---------------- 快速添加：6 种类型（2026-10-06 方案B） ---------------- */
.ad-pane[hidden]{display:none !important}
.tcards{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px 0 2px}
.tcard{display:flex;align-items:center;gap:8px;text-align:left;
  border:1px solid var(--line);background:#fff;border-radius:12px;padding:10px 12px;
  font-family:inherit;color:var(--text);cursor:pointer}
.tcard:active{background:#faf9f7}
.tcard.on{border-color:var(--focus);background:var(--focus-soft)}
.tcard .ti{font-size:17px;line-height:1}
.tcard b{font-size:14px;font-weight:600}
.tcard i{font-style:normal;font-size:11px;color:var(--muted);margin-left:auto;white-space:nowrap}
@media (max-width:420px){ .tcard i{display:none} }
.pstat{margin:12px 2px 0;font-size:13px;color:var(--muted);line-height:1.6}
.pbtns{display:flex;gap:10px;margin-top:12px}
.pbtn{flex:1;border:1px solid var(--focus);background:var(--focus);color:#fff;
  border-radius:12px;padding:13px 8px;font-size:15px;font-weight:600;font-family:inherit}
.pbtn:active{filter:brightness(.94)}
.pbtn.ghost{background:#fff;color:var(--focus)}

/* ---------------- 生理期：状态行的撤回按钮 ＋ 通用确认弹层（2026-10-06 R24，照大姨妈）
   Lisa 的要求：不小心点了「开始」必须能在同一处取消，弹层要像大姨妈那样一句话讲清后果、按钮用动词。 */
.pd-row2 .pd-sw{margin-left:auto;flex:0 0 auto;width:46px;height:27px;border-radius:999px;
  border:none;background:#e3e1dd;position:relative;padding:0;cursor:pointer;
  transition:background .18s ease}
.pd-row2 .pd-sw::after{content:"";position:absolute;top:2px;left:2px;width:23px;height:23px;
  border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.18);
  transition:left .18s ease}
.pd-row2 .pd-sw.on{background:var(--focus)}
.pd-row2 .pd-sw.on::after{left:21px}
.pd-row2 .pd-sw[disabled]{opacity:.35;cursor:default}
.cf-msg{margin:0;font-size:14.5px;line-height:1.65;color:var(--text)}
.lg-foot.cf-foot{display:flex;gap:10px}
.lg-foot.cf-foot .btn-ghost,.lg-foot.cf-foot .btn-primary{flex:1 1 0;width:auto}
.lg-foot.cf-foot .btn-primary{background:#c0392b}

/* ---------------- 生理期 R25：顶栏一行 ＋ 每日记录（2026-10-06 深夜，照华为/大姨妈） ---------------- */
/* 顶栏：只有一行两个信息（状态 · 周期共X天），不放返回键 */
.pd-top{display:flex;align-items:baseline;padding:0 2px 10px;line-height:1.25}
.pd-top-s{font-size:16px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.pd-top-c{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.pd-top-c::before{content:"·";margin:0 7px;color:#ccc;font-weight:400}
/* 日历卡里的预计信息 */
.pd-factsline{margin:6px 0 0;font-size:12.5px;color:#8b8b8b;line-height:1.5}
/* 图例必须一行放下（她 2026-10-06 明确「一定确保一行内展示」）：手机端缩字号和点 */
@media (max-width:640px){
  .pd-legend{gap:6px;font-size:10.5px}
  .pd-legend span{gap:3px}
  .pd-legend .pd-dot{width:10px;height:10px;flex:0 0 10px}
  .pd-legend .pd-dot.ovulation,.pd-legend .pd-dot.haslog{width:7px;height:7px;flex:0 0 7px;margin:0 1.5px}
  .pd-cell.m-period::before,.pd-cell.m-predict::before,
  .pd-cell.m-fertile::before,.pd-cell.m-ovulation::before{width:25px;height:25px}
  .pd-cell .pd-d{font-size:14px}
}
/* 记录卡里那行小提示（读取中／这天在经期内／还没到的日子先不记） */
.pd-dayhint{margin:8px 0 0;font-size:12px;color:#a3a19c;line-height:1.5}
/* 每日记录的四行：整行可点 */
.pd-row2.logrow{cursor:pointer}
/* 备注长了就让它在右边折两行，别把整句铺开 */
.pd-row2 .pd-v.note{white-space:normal;text-align:right;line-height:1.35;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ===== R28 编辑页照滴答清单（2026-10-06 深夜）=====
   顶栏「← 清单名」/ 一行「勾选框 ＋ 日期」/ 大字标题（多行完整显示）
   点日期弹「日历 ＋ 时间 ＋ 提醒 ＋ 重复」，点「重复」再弹一层 */
.modal.tf-modal{max-width:440px;text-align:left;padding:0;overflow:hidden}
.tf-top{display:flex;align-items:center;gap:6px;padding:12px 14px 10px;border-bottom:1px solid var(--line)}
.tf-back{border:0;background:none;font-size:20px;line-height:1;color:#8a8a8a;cursor:pointer;padding:2px 6px;font-family:inherit}
.tf-back:hover{color:var(--focus)}
.tf-list{font-size:15px;color:#6b6b6b}
.tf-line{display:flex;align-items:center;gap:9px;padding:12px 14px 2px}
.tf-line .dp-cb{flex:0 0 auto}
.tf-date{border:0;background:none;display:flex;align-items:center;gap:8px;font-size:15px;color:var(--text);
  cursor:pointer;padding:3px 0;font-family:inherit;text-align:left}
.tf-date .tf-dt{font-weight:600}
.tf-date .tf-tm{color:var(--focus);font-weight:600}
.tf-date:hover .tf-dt{color:var(--focus)}
.tf-title{display:block;width:100%;border:0;outline:none;font-size:20px;font-weight:600;line-height:1.35;
  padding:6px 14px 10px;resize:none;font-family:inherit;box-sizing:border-box;overflow:hidden;color:var(--text)}
.modal.tf-modal .modal-form{padding:0 14px}
.modal.tf-modal .modal-form label{margin:10px 0 4px}
.modal.tf-modal .mrow{padding:0 14px 14px;justify-content:flex-end}
/* —— 日期弹层 —— */
.tf-popwrap{display:none;position:fixed;inset:0;z-index:70;background:rgba(0,0,0,.3);
  align-items:center;justify-content:center;padding:16px}
.tf-popwrap.open{display:flex}
.tf-pop{display:none;background:#fff;border-radius:14px;width:min(360px,100%);max-height:88vh;
  overflow:auto;padding:14px;box-sizing:border-box}
.tf-pop.open{display:block}
.tf-pop-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.tf-pop-h b{font-size:15px}
.tf-pop-x{border:0;background:none;font-size:16px;color:#a8a8a8;cursor:pointer;padding:2px 6px;font-family:inherit}
.tf-cal-h{display:flex;align-items:center;justify-content:space-between;margin:6px 0}
.tf-cal-h b{font-size:14px;font-variant-numeric:tabular-nums}
.tf-cal-h button{border:0;background:none;font-size:20px;line-height:1;color:#9a9a9a;cursor:pointer;
  padding:0 12px;font-family:inherit}
.tf-cal-w,.tf-cal-g{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.tf-cal-w i{font-style:normal;text-align:center;font-size:11px;color:var(--muted);padding-bottom:2px}
.tf-cal-c{height:34px;border:0;background:none;border-radius:50%;font-size:13.5px;color:var(--text);
  cursor:pointer;font-family:inherit;font-variant-numeric:tabular-nums}
.tf-cal-c.out{pointer-events:none}
.tf-cal-c.now{color:var(--focus);font-weight:700}
.tf-cal-c.sel{background:var(--focus);color:#fff;font-weight:700}
.tf-cal-q{display:flex;gap:6px;margin:9px 0 2px}
.tf-cal-q button{flex:1;border:1px solid var(--line);background:#fff;border-radius:8px;padding:7px 0;
  font-size:12.5px;cursor:pointer;font-family:inherit;color:#555}
.tf-cal-q button:hover{border-color:var(--focus);color:var(--focus)}
.tf-fblk{margin-top:10px;border-top:1px solid var(--line);padding-top:10px}
.tf-fk{font-size:12.5px;color:var(--muted)}
.tf-tline{display:flex;align-items:center;gap:8px;margin-top:7px}
.tf-tk{font-size:13px;color:#6b6b6b;width:30px;flex:0 0 auto}
.tf-tline input[type=time]{flex:1 1 auto;min-width:0;padding:8px 10px;border:1px solid var(--line);
  border-radius:8px;font-size:14px;font-family:inherit}
.tf-mini{border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 11px;font-size:12.5px;
  cursor:pointer;font-family:inherit;color:#6b6b6b;flex:0 0 auto}
.tf-mini:hover{border-color:var(--focus);color:var(--focus)}
.tf-mini.on{background:#eef3fb;border-color:var(--focus);color:var(--focus);font-weight:600}
.tf-frow{display:flex;align-items:flex-start;gap:8px;margin-top:10px;border-top:1px solid var(--line);padding-top:10px}
.tf-frow .tf-fk{flex:0 0 34px;padding-top:7px}
.tf-chips{display:flex;flex-wrap:wrap;gap:6px;flex:1 1 auto}
.tf-chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 11px;font-size:12.5px;
  cursor:pointer;font-family:inherit;color:#555}
.tf-chip.on{background:var(--focus);border-color:var(--focus);color:#fff;font-weight:600}
.tf-go{flex:1 1 auto;display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);
  background:#fff;border-radius:8px;padding:9px 12px;font-size:13.5px;cursor:pointer;font-family:inherit;color:var(--text)}
.tf-go:hover{border-color:var(--focus)}
.tf-go i{font-style:normal;color:#c2c2c2;font-size:16px}
.tf-pop-acts{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
.tf-ok{padding:9px 18px;border-radius:8px}
.tf-reps{display:flex;flex-direction:column;gap:6px}
.tf-rep{border:1px solid var(--line);background:#fff;border-radius:8px;padding:11px 12px;font-size:13.5px;
  text-align:left;cursor:pointer;font-family:inherit;color:var(--text)}
.tf-rep.on{border-color:var(--focus);background:#eef3fb;color:var(--focus);font-weight:600}
.tf-subs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:10px}
.tf-subs-t{font-size:13px;color:#6b6b6b}
.tf-subs input[type=number]{width:66px;padding:8px 9px;border:1px solid var(--line);border-radius:8px;
  font-size:14px;font-family:inherit}
@media (max-width:640px){
  .tf-popwrap{align-items:flex-end;padding:0}
  .tf-pop{width:100%;border-radius:16px 16px 0 0;max-height:90vh}
  .modal.tf-modal{max-width:100%}
  .tf-cal-c{height:36px;font-size:14px}
}

/* 「我的」页：手机日历同步 / 手机实时提醒（2026-10-07）*/
.cal-btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.cal-btns .btn-ghost{flex:0 0 auto}
.set-panel .mono{font-size:12.5px;line-height:1.55;word-break:break-all;background:#f6f7f9;
  border:1px solid var(--line);border-radius:8px;padding:8px 10px;color:#3a3a3a;user-select:all}

/* ===== ★ 2026-10-07 R31-1 专注清单页顶栏：菜单标签 + 快速开始 ===== */
.focus-top{display:flex;align-items:center;gap:8px;padding:10px 12px 8px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:6}
.focus-top .cats{flex:1;display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0;padding:0}
.focus-top .btn-primary.sm{flex:0 0 auto;white-space:nowrap}
.qs-modes{display:flex;gap:8px;margin:10px 0}
.qs-mode{flex:1;padding:9px 0;border:1px solid var(--line);border-radius:10px;background:#fff;font-size:14px;font-family:inherit;cursor:pointer}
.qs-mode.on{border-color:var(--brand);color:var(--brand-dark);background:var(--brand-soft);font-weight:600}
.qs-list{max-height:40vh;overflow:auto;margin:6px 0 10px;display:flex;flex-direction:column;gap:6px}
.qs-item{text-align:left;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:#fff;font-size:14px;font-family:inherit;cursor:pointer}
.qs-item.on{border-color:var(--brand);background:var(--brand-soft);font-weight:600}

/* ================= R32（2026-10-07）：首页拖拽排序 + 【今天】页 ================= */

/* —— 首页：长按拖拽 —— */
.hm-tip{font-size:12px;color:#b0aea9;text-align:center;margin:-4px 0 14px}
.hm-cell{-webkit-touch-callout:none;user-select:none;-webkit-user-select:none;cursor:pointer}
.hm-grid.sorting .hm-cell{transition:transform .12s ease}
.hm-grid{touch-action:pan-y}
.hm-ph{border:2px dashed #ded9d2;border-radius:14px;background:#f4f3f0}
.hm-float{position:fixed;z-index:200;pointer-events:none;
  box-shadow:0 12px 28px rgba(0,0,0,.18);border:1px solid var(--focus);
  transform:rotate(-1.5deg) scale(1.03)}

/* —— 【今天】页 —— */
.topbar .td-lunar{flex:0 0 auto;font-size:12px;color:var(--muted);white-space:nowrap}
.td-sum{background:linear-gradient(135deg,#fff 55%,var(--focus-soft))}
.td-big{font-size:15px;color:#3a3a38}
/* ★ 反馈 #255（2026-10-19）：今天总时间＝专注＋没算进专注的工作日志 */
.td-total{font-size:14px;color:#5c5c5a;margin-top:4px}
.td-total b{font-size:17px;font-weight:700;color:var(--text);margin:0 2px}
.td-total span{font-size:12px;color:var(--muted)}
.td-big b{font-size:23px;font-weight:700;color:var(--focus);margin-left:5px;
  font-variant-numeric:tabular-nums}
.td-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}
.td-chip{font-size:12.5px;color:#5c5c5a;background:#fff;border:1px solid var(--line);
  border-radius:999px;padding:4px 11px;white-space:nowrap}
.td-none{font-size:12.5px;color:var(--muted);margin-top:10px}
.td-note{font-size:12.5px;color:var(--muted);flex:0 0 auto;white-space:nowrap}
.td-add{flex:0 0 auto;font-size:12.5px;color:#1c7d54;text-decoration:none;border:1px solid #cfe6d9;
  background:#f2faf5;border-radius:999px;padding:3px 10px;white-space:nowrap}
.td-add:active{background:#e3f4ea}

.td-list{display:flex;flex-direction:column;gap:9px}
.td-item,.td-rec{display:block;background:#faf9f7;border:1px solid var(--line);
  border-radius:13px;padding:11px 13px}
.td-item:active{background:#f2f0ed}
.td-l1{display:flex;align-items:center;gap:8px}
.td-nm{flex:1 1 auto;min-width:0;font-size:14.5px;font-weight:600;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.td-du{flex:0 0 auto;font-size:14.5px;font-weight:700;color:var(--focus);
  font-variant-numeric:tabular-nums;white-space:nowrap}
/* 2026-10-12 反馈 #208①：时间段也挪到右侧（挨着「番茄用时」），心得留在最下面一行 */
.td-tm{flex:0 0 auto;font-size:12.5px;color:var(--muted);white-space:nowrap;
  font-variant-numeric:tabular-nums}
.td-l2{font-size:12.5px;color:var(--muted);margin-top:4px;line-height:1.45}
.td-body{font-size:14px;color:#3a3a38;margin-top:6px;line-height:1.5;
  white-space:pre-wrap;word-break:break-word}
.td-kind{flex:0 0 auto;font-size:11.5px;font-weight:600;border-radius:7px;
  padding:2px 8px;background:#f1efec;color:#666;white-space:nowrap}
.td-kind.pomo{background:#fdecea;color:#c0392b}
.td-kind.open{background:#eef3fb;color:#4a7fd9}
.td-kind.log{background:#fff3d6;color:#a06a11}
.td-kind.ok{background:#e9f5ee;color:#2f6f4f}

@media (max-width:640px){
  .td-big b{font-size:21px}
  .td-item,.td-rec{padding:10px 12px}
  .td-nm{font-size:14px}
}
.td-kind.manual{background:#f1efec;color:#8a6d3b}
/* 2026-10-13 反馈 #218/#219：每条记录右侧的「修改」笔（图标不带外框）＋ 整张卡可点开修改 */
#rec-card .td-rec{cursor:pointer}
.td-edit{flex:0 0 auto;border:none;background:none;margin:0;padding:3px 1px 3px 7px;
  font-size:15px;line-height:1;color:#bdb9b3;font-family:inherit;cursor:pointer;
  -webkit-tap-highlight-color:transparent}
.td-edit:active{color:var(--focus)}
.td-edit:focus{outline:none;color:var(--focus)}

/* ================= 日记（R34，2026-10-07）：积极日记 / 心得与感触 ================= */
.dtab{display:flex;gap:8px;margin:0 2px 12px}
.dtab-i{flex:1 1 0;text-align:center;padding:11px 6px;border-radius:12px;background:#fff;
  border:1px solid var(--line);font-size:15px;color:var(--muted);font-weight:600}
.dtab-i.on{color:#fff;border-color:transparent;background:linear-gradient(135deg,#e0564a,#e0744a)}
.dtab-i:nth-child(2).on{background:linear-gradient(135deg,#5a8ae9,#4a76e0)}
.dstat{background:#faf9f7;border:1px solid var(--line);border-radius:12px;padding:10px 12px;
  font-size:14px;color:var(--muted);margin-bottom:10px;line-height:1.9}
.dstat b{color:var(--text);font-size:16px}
.dstat .dsep{margin:0 7px;color:#cfcdc8}
.dstat .dtodo{display:inline-block;margin-left:8px;background:#fdecea;color:var(--focus);
  border-radius:8px;padding:2px 8px;font-size:12.5px}
.dcats{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.dcat{background:#eef2fd;color:#4a76e0;border-radius:8px;padding:3px 9px;font-size:12.5px}
.dsearch{margin:2px 0 10px}
.dsearch input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:11px;
  font-size:15px;font-family:inherit;background:#faf9f7}
.dsearch input:focus{outline:none;border-color:var(--focus);background:#fff;
  box-shadow:0 0 0 3px rgba(224,86,74,.12)}
.d-dayno{font-size:13px;color:var(--muted);font-weight:600}
.addbox textarea{width:100%;margin-top:8px;padding:11px 12px;border:1px solid var(--line);
  border-radius:10px;font-family:inherit;font-size:15px;line-height:1.6;resize:vertical;background:#fff}
.addbox textarea:focus{outline:none;border-color:var(--focus);box-shadow:0 0 0 3px rgba(224,86,74,.12)}
.dcard{background:#faf9f7;border:1px solid var(--line);border-left:4px solid var(--brk);
  border-radius:13px;padding:12px 13px;margin-bottom:10px}
.dcard.is-in{border-left-color:#5a8ae9}
.dhead{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.dno{background:var(--brk-soft);color:#2f7d52;border-radius:8px;padding:2px 9px;
  font-size:12.5px;font-weight:700}
.dtag{background:#eef2fd;color:#4a76e0;border-radius:8px;padding:2px 9px;font-size:12.5px;font-weight:700}
.ddate{font-size:12.5px;color:var(--muted);flex:1 1 auto}
.dops{display:flex;gap:6px;flex:0 0 auto}
.dop{border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:8px;
  padding:5px 11px;font-size:12.5px;min-height:30px}
.dop:active{background:#f2f1ee}
.drow{margin-top:7px}
.drow b{display:block;font-size:13px;color:var(--muted);font-weight:600}
.drow p{margin:2px 0 0;font-size:15px;line-height:1.65;word-break:break-word}
.din-title{display:block;font-size:16px;margin:2px 0 4px}
.din-body{margin:0;font-size:15px;line-height:1.75;white-space:pre-wrap;word-break:break-word}
@media (max-width:420px){
  .dtab-i{font-size:14px;padding:10px 4px}
  .drow p,.din-body{font-size:15px}
}
/* 心得正文：md 渲染出来的排版（搬进来的老心得原样保留格式） */
.din-body{font-size:15px;line-height:1.75;word-break:break-word;margin-top:2px}
.din-body p{margin:0 0 8px}
.din-body .dmd-h{margin:12px 0 6px;font-size:14.5px;color:#4a76e0;font-weight:700}
.din-body .dmd-hr{border:none;border-top:1px dashed var(--line);margin:12px 0}
.din-body .dmd-ul,.din-body .dmd-ol{margin:4px 0 8px;padding-left:20px}
.din-body .dmd-ul li,.din-body .dmd-ol li{margin:3px 0}
.din-body .dmd-q{margin:6px 0;padding:6px 10px;border-left:3px solid #cfd8f5;
  background:#f7f9ff;color:#555;border-radius:0 8px 8px 0}
.din-body code{background:#f1f0ed;border-radius:5px;padding:1px 5px;font-size:13.5px}
.dtab-md{width:100%;border-collapse:collapse;margin:6px 0 10px;font-size:13.5px}
.dtab-md th,.dtab-md td{border:1px solid var(--line);padding:5px 7px;text-align:left;
  vertical-align:top}
.dtab-md th{background:#f4f6fd;color:#3d5c9e;font-weight:700}

/* ================= 体重（R35，2026-10-07） ================= */
.wt-now .wt-main{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.wt-num{font-size:40px;font-weight:800;color:var(--focus);font-variant-numeric:tabular-nums;line-height:1.1}
.wt-unit{font-size:15px;color:var(--muted);font-weight:600}
.wt-down{color:var(--brk);font-weight:700;font-size:14px}
.wt-up{color:#d9534f;font-weight:700;font-size:14px}
.wt-flat{color:var(--muted);font-size:13px}
.wt-meta{margin-top:6px;font-size:13.5px;color:var(--muted);line-height:1.9}
.wt-meta b{color:var(--text)}
.wt-empty-tip{color:var(--muted);font-size:14px;padding:6px 0}
.wt-bar{height:9px;background:#f0efec;border-radius:6px;margin:12px 0 6px;overflow:hidden}
.wt-bar i{display:block;height:100%;width:0;border-radius:6px;
  background:linear-gradient(90deg,#e0564a,#f0a04a);transition:width .4s}
.wt-chart{margin-top:6px}
/* ★ 2026-10-09 需求池：体重折线图早/晚两条线 + 图例 */
.wt-legend{display:flex;gap:14px;justify-content:flex-end;margin:2px 2px 0}
.wt-legend span{display:inline-flex;align-items:center;font-size:12px;color:var(--muted)}
.wt-legend i{display:inline-block;width:16px;height:3px;border-radius:2px;margin-right:5px}
.wt-units{display:flex;gap:8px;justify-content:center;margin-top:10px}
.wt-u{border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 18px;
  font-size:14px;color:var(--muted);min-height:36px}
.wt-u.on{background:var(--focus);border-color:var(--focus);color:#fff;font-weight:700}
.wt-row{display:flex;align-items:center;gap:10px;padding:10px 2px;border-bottom:1px solid var(--line)}
.wt-row:last-child{border-bottom:none}
.wt-rd{color:var(--muted);font-size:13px;flex:1 1 auto}
.wt-rk{font-size:17px;font-variant-numeric:tabular-nums}
.wt-rk i{font-size:11.5px;color:var(--muted);font-style:normal;margin-left:2px}
.wt-del{border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:8px;
  padding:5px 11px;font-size:12.5px;min-height:30px}
.wt-swap{border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 12px;
  font-size:13.5px;color:var(--muted)}
.wt-unit-label{font-size:14px;color:var(--muted);font-weight:600}
.wt-hint{font-size:12.5px;color:var(--muted);margin-top:8px;line-height:1.6}

/* 首页金刚区：只留图标 + 名称（Lisa 2026-10-07：卡片调矮，一屏多放几个） */
.hm-cell .hm-s{display:none}
.hm-grid{gap:9px;margin-bottom:12px}
.hm-cell{padding:10px 8px;min-height:66px;display:flex;flex-direction:column;
  align-items:center;justify-content:center;text-align:center}
.hm-cell .hm-ic{font-size:22px;line-height:1.1}
.hm-cell .hm-t{margin-top:4px;font-size:14px;line-height:1.25;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;max-width:100%}
@media (max-width:640px){
  .hm-cell{padding:9px 6px;min-height:62px;border-radius:12px}
  .hm-cell .hm-ic{font-size:21px}
  .hm-cell .hm-t{font-size:13.5px}
}

/* ========== 首页卡片：图标 + 名称放一行（Lisa 2026-10-07：再矮一点） ========== */
.hm-cell{flex-direction:row;align-items:center;justify-content:flex-start;gap:7px;
  text-align:left;min-height:44px;padding:9px 10px}
.hm-cell .hm-ic{font-size:18px}
.hm-cell .hm-t{margin-top:0;font-size:13.5px;line-height:1.15}
@media (max-width:640px){
  .hm-cell{min-height:42px;padding:8px 9px;gap:6px;border-radius:11px}
  .hm-cell .hm-ic{font-size:17px}
  .hm-cell .hm-t{font-size:13px}
}

/* ========== 日记列表（R36）：搜索置顶 + 卡片流 ========== */
.dg-top{display:flex;gap:8px;align-items:center;padding:4px 2px 10px}
.dg-search{flex:1 1 auto;min-width:0;padding:10px 13px;border:1px solid var(--line);
  border-radius:11px;font-size:15px;font-family:inherit;background:#fff}
.dg-search:focus{outline:none;border-color:var(--focus);box-shadow:0 0 0 3px rgba(224,86,74,.12)}
.dg-filter{position:relative;flex:0 0 auto;border:1px solid var(--line);background:#fff;
  border-radius:11px;padding:10px 14px;font-size:14.5px;color:var(--muted);min-height:42px}
.dg-dot{position:absolute;top:7px;right:8px;width:7px;height:7px;border-radius:50%;background:var(--focus)}
.dg-fpanel{background:#fff;border:1px solid var(--line);border-radius:13px;padding:11px 12px;
  margin-bottom:11px;box-shadow:var(--shadow)}
.dg-frow{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.dg-frow + .dg-frow{margin-top:9px}
.dg-flabel{font-size:12.5px;color:var(--muted);flex:0 0 auto}
.dg-chip{border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 12px;
  font-size:13.5px;color:var(--muted);min-height:34px}
.dg-chip.on{background:var(--focus);border-color:var(--focus);color:#fff;font-weight:600}
.dg-list{display:block}
.dg-card{position:relative;display:block;background:#fff;border-radius:14px;padding:13px 14px 14px;
  margin-bottom:10px;box-shadow:var(--shadow);color:var(--text)}
.dg-card:active{background:#fbfaf8}
.dg-t{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  font-size:16px;line-height:1.4;font-weight:700}
.dg-tag{position:absolute;top:12px;right:12px;background:#eef2fd;color:#4a76e0;border-radius:8px;
  padding:2px 8px;font-size:11.5px;font-weight:600}
.dg-b{margin-top:5px;color:var(--muted);font-size:14px;line-height:1.6;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
  white-space:pre-line}
.dg-fab{position:fixed;right:16px;bottom:calc(66px + env(safe-area-inset-bottom));width:54px;
  height:54px;border-radius:50%;background:var(--focus);color:#fff;font-size:27px;font-weight:300;
  display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(224,86,74,.38);z-index:40}
.dg-addbox{position:relative;z-index:41}
.dg-form textarea,.dg-form input,.dg-form select{width:100%;margin-top:8px;padding:11px 12px;
  border:1px solid var(--line);border-radius:10px;font-family:inherit;font-size:15px;
  line-height:1.6;background:#fff;resize:vertical}
.dg-form select{width:auto;min-width:120px}

/* ========== 日记详情（R36）：阅读模式 + ⋮ 菜单 + 悬浮编辑 ========== */
.di-bar{justify-content:space-between}
.di-menu-wrap{position:relative}
.di-menu-btn{border:none;background:transparent;font-size:22px;color:var(--text);
  padding:2px 10px;line-height:1;min-height:40px}
.di-menu-pop{position:absolute;right:0;top:42px;background:#fff;border:1px solid var(--line);
  border-radius:12px;box-shadow:var(--shadow);overflow:hidden;z-index:60;min-width:140px}
.di-menu-pop button{display:block;width:100%;text-align:left;border:none;background:#fff;
  padding:12px 16px;font-size:15px;color:#d9534f}
.di-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 16px 22px;
  margin-bottom:80px}
.di-title{margin:0 0 8px;font-size:21px;line-height:1.4;font-weight:800;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.di-tags{margin-bottom:10px}
.di-fab{position:fixed;right:16px;bottom:calc(66px + env(safe-area-inset-bottom));width:54px;
  height:54px;border-radius:50%;background:#fff;color:var(--focus);font-size:22px;border:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(0,0,0,.16);z-index:40}
.di-editbox{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 14px 16px;
  margin-bottom:80px}
.di-editbox textarea,.di-editbox input,.di-editbox select{width:100%;margin-top:8px;padding:11px 12px;
  border:1px solid var(--line);border-radius:10px;font-family:inherit;font-size:15px;line-height:1.6;background:#fff}
.di-editbox textarea{resize:vertical}

/* 体重页的右下角悬浮 ＋（Lisa 2026-10-07：新增一律用悬浮＋，不要卡片里的按钮） */
.wt-fab{position:fixed;right:16px;bottom:calc(66px + env(safe-area-inset-bottom));width:54px;
  height:54px;border-radius:50%;background:var(--focus);color:#fff;font-size:27px;font-weight:300;
  display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(224,86,74,.38);
  z-index:40;border:none}
.wt-addbox{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;
  margin-top:-6px;margin-bottom:14px}

/* 体重主卡：目标 + 还差多少 + 更改目标入口（Lisa 2026-10-07） */
.wt-goalrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px;
  padding-top:10px;border-top:1px dashed var(--line)}
.wt-goal{font-size:14px;color:var(--text);font-weight:600}
.wt-left{font-size:13.5px;color:var(--muted);flex:1 1 auto}
.wt-left b{color:var(--focus);font-size:15px}
.wt-change{border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 12px;
  font-size:13px;color:var(--muted);min-height:34px;display:inline-flex;align-items:center}

/* 首页头：拾光 + 日期 + 星期 + 今日专注，全部挤在一行，红色醒目（Lisa 2026-10-07） */
.hm-head{padding:2px 4px 10px;gap:8px}
.hm-line{flex:1 1 auto;min-width:0;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;
  color:var(--focus)}
.hm-line .hm-brand{font-size:19px;font-weight:800;color:var(--focus);letter-spacing:.5px}
.hm-line .hm-day{font-size:15px;font-weight:700;color:var(--focus)}
.hm-line .hm-day .num{font-size:17px}
.hm-line .hm-t{font-size:14px;font-weight:600;color:var(--focus);opacity:.92}
.hm-ver{font-size:11.5px;color:var(--muted);flex:0 0 auto;align-self:flex-start}
.hm-helprow{text-align:right;margin:-6px 4px 8px}
.hm-helprow .hm-help{font-size:12.5px;color:var(--muted)}

/* ===== 首页卡片 = C 方案（Lisa 2026-10-07 选定）：三列小方卡，图标在上、名字在下 ===== */
.hm-grid{gap:9px;margin-bottom:12px}
.hm-cell{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:none;
  flex-direction:column;align-items:center;justify-content:center;text-align:center;
  padding:13px 8px;min-height:78px}
.hm-cell .hm-ic{font-size:24px;line-height:1;display:block}
.hm-cell .hm-t{margin-top:6px;font-size:13.5px;font-weight:600;line-height:1.2;
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:640px){
  .hm-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
  .hm-cell{min-height:76px;padding:12px 6px;border-radius:14px}
  .hm-cell .hm-ic{font-size:23px}
  .hm-cell .hm-t{font-size:13px;margin-top:6px}
}

/* 首页顶部（E 版，Lisa 2026-10-07 选定）：左日期+星期，右版本号，其余不留 */
.hm-head{align-items:center}
.hm-line{color:#4a4a4a}
.hm-line .hm-day{font-size:14.5px;font-weight:600;color:#4a4a4a}
.hm-line .hm-day .num{font-size:15.5px}
.hm-ver{font-size:11.5px;color:#b9b7b2;align-self:center}

/* 首页卡片上的计数角标一律不显示（Lisa 2026-10-07：这种计数她不喜欢） */
.hm-cell .hm-badge{display:none !important}

/* ===== 专注清单页（2026-10-07 按已定规矩反推后重排） ===== */
/* 顶部只留一行：分类横向滑动 + ☰ + 排序 + 快速开始，永远不换行 */
.focus-top{display:flex;align-items:center;gap:7px;padding:2px 2px 10px;flex-wrap:nowrap}
.focus-top .cats{flex:1 1 auto;min-width:0;display:flex;gap:6px;overflow-x:auto;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:2px 0}
.focus-top .cats::-webkit-scrollbar{display:none}
.focus-top .cats > *{flex:0 0 auto}
.focus-top .icon-btn{flex:0 0 auto}
.focus-top .sort-btn{flex:0 0 auto;border:1px solid var(--line);background:#fff;color:var(--muted);
  border-radius:10px;padding:8px 10px;font-size:13px;min-height:38px}
.focus-top .btn-primary.sm{padding:9px 14px;font-size:14px;border-radius:10px;min-height:38px}
/* 新增＝右下角悬浮＋（她定的规矩；原来在卡片右上角） */
.foc-fab{position:fixed;right:16px;bottom:calc(66px + env(safe-area-inset-bottom));width:54px;height:54px;
  border-radius:50%;background:var(--focus);color:#fff;font-size:27px;font-weight:300;border:none;
  display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(224,86,74,.38);z-index:40}


/* ========== 反馈（R38，Lisa 2026-10-07）：在程序里提反馈、看我的回复 ========== */
.fb-thumbs{display:flex;gap:6px;margin-top:8px}
.fb-thumbs img{width:54px;height:54px;object-fit:cover;border-radius:9px;border:1px solid var(--line)}
.fb-replycard{margin-top:9px;background:var(--focus-soft);border-radius:11px;padding:8px 10px}
.fb-replycard-hd{font-size:11.5px;font-weight:700;color:var(--focus)}
.fb-replycard-tx{font-size:12.5px;color:#4a4a4a;margin-top:2px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.fb-replybox{background:var(--focus-soft);border-radius:14px;padding:13px 14px;margin:0 0 80px}
.fb-reply-hd{font-size:13.5px;font-weight:700;color:var(--focus);margin-bottom:6px}
.fb-md-img{display:block;max-width:64%;max-height:170px;width:auto;border-radius:10px;margin:8px 0;border:1px solid var(--line);background:#eef2ef}
.fb-md-pic{margin:0}
.dmd-todo{display:flex;gap:6px;align-items:flex-start;margin:4px 0;font-size:15.5px}
.dmd-todo i{font-style:normal;color:#3fa66b;font-weight:700}
/* 写反馈：整页编辑（取消/保存 在顶栏，工具栏固定在屏幕下方）
   —— 用 flex 整页三段（顶栏 / 正文 / 工具栏），不写死高度，免得手机高度不一样时工具栏压住文字 */
body.fb-editing{background:#fff;display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden}
body.fb-editing .tabbar{display:none}
.fb-nbar{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;
  padding:6px 14px;background:#fff;border-bottom:1px solid var(--line);z-index:20}
.fb-nact{border:none;background:transparent;font-size:15.5px;color:var(--muted);
  padding:8px 12px;min-height:40px;font-family:inherit;border-radius:10px}
.fb-nact.save{background:transparent;padding:8px 10px;min-width:38px;
  display:inline-flex;align-items:center;justify-content:center;line-height:1}
.fb-nact.save svg{display:block}
.fb-wrap{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;background:#fff;
  overflow-y:auto;-webkit-overflow-scrolling:touch}
.fb-title{flex:0 0 auto;border:none;outline:none;background:transparent;padding:12px 16px 10px;
  font-size:18px;font-weight:700;font-family:inherit;color:var(--text);border-bottom:1px solid var(--line);
  border-radius:0}
.fb-editor{flex:0 0 auto;min-height:56vh;overflow:visible;
  padding:12px 16px 20px;font-size:15.5px;line-height:1.85;white-space:pre-wrap;
  word-break:break-word;outline:none}
.fb-editor:empty:before{content:attr(data-ph);color:#b9b7b2}
.fb-editor .fb-inline-img{display:block;max-width:80%;max-height:240px;width:auto;
  border-radius:10px;margin:10px auto;border:1px solid var(--line)}
.fb-tool{flex:0 0 auto;display:flex;align-items:center;gap:3px;
  padding:2px 10px calc(2px + env(safe-area-inset-bottom));background:#fff;
  border-top:1px solid var(--line);z-index:20}
.fb-tbtn{display:inline-flex;align-items:center;justify-content:center;min-width:34px;
  border:none;background:transparent;border-radius:8px;padding:1px 6px;margin-right:1px;
  color:#5c5c5c;font-family:inherit;min-height:30px}
.fb-tbtn b{font-size:19px;line-height:1;font-weight:400}
.fb-tbtn:active{background:var(--focus-soft);border-color:var(--focus);color:var(--focus)}
.fb-hint{margin-left:auto;text-align:right;font-size:10.5px;color:var(--muted);line-height:1.4}

/* 点照片放大（全屏遮罩，再点关闭） */
.fb-lightbox{position:fixed;inset:0;background:rgba(0,0,0,.88);display:flex;align-items:center;
  justify-content:center;z-index:999;padding:10px}
.fb-lightbox img{max-width:100%;max-height:94%;border-radius:8px;box-shadow:0 8px 30px rgba(0,0,0,.5)}

/* ===== 加号面板（R39，Lisa 2026-10-07 拍板 A）：一行 4 个、图标在上名字在下，顺序跟首页一致 ===== */
.tcards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:10px 0 2px}
.tcard{flex-direction:column;align-items:center;justify-content:center;gap:5px;text-align:center;
  border:1px solid var(--line);background:#fff;border-radius:13px;padding:11px 4px;min-height:76px}
.tcard .ti{font-size:23px;line-height:1}
.tcard b{font-size:12.5px;font-weight:600;line-height:1.2;max-width:100%;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
@media (max-width:360px){ .tcard b{font-size:11.5px} .tcard .ti{font-size:21px} }

/* 反馈详情页右下角：列表 / 新增 / 继续编辑，三个竖着排（Lisa 2026-10-07 要的） */
.fb-fabs{position:fixed;right:16px;bottom:calc(66px + env(safe-area-inset-bottom));
  display:flex;flex-direction:column;gap:10px;align-items:center;z-index:40}
.fb-fabs .di-fab{position:static;right:auto;bottom:auto}
.fb-fabs .di-fab.sm{width:46px;height:46px;font-size:18px;background:#fff;color:var(--focus)}

/* ===== 2026-10-07 晚（R39）：搜索关键字高亮 / 反馈详情顶栏固定 / 详情页左上角返回 ===== */
mark{background:#ffe9a8;color:inherit;border-radius:3px;padding:0 1px}
/* 反馈详情：左上 ←（回列表）+ 右上 ⋮ 固定住一行，标题栏不固定 */
.fb-dbar{position:sticky;top:0;z-index:30;background:var(--bg);padding-top:4px;padding-bottom:4px}
.fb-back{font-size:22px;line-height:1;color:var(--text);padding:6px 12px 6px 2px;min-height:40px;
  display:inline-flex;align-items:center;text-decoration:none}
.fb-dbar .di-menu-btn{padding:2px 6px;font-size:20px;min-height:36px}

/* ===== 生理期：把「开始 / 结束」两个大按钮换成一行开关（Lisa 2026-10-07 定） ===== */
.psw{display:flex;align-items:center;gap:12px;margin-top:10px;padding:12px 2px 2px;
  border-top:1px dashed var(--line)}
.psw-k{flex:1 1 auto;font-size:15px;color:var(--text)}
.psw-btn{position:relative;flex:0 0 auto;width:54px;height:31px;border:none;border-radius:16px;
  background:#e2e0db;transition:background .18s;padding:0}
.psw-btn i{position:absolute;top:3px;left:3px;width:25px;height:25px;border-radius:50%;
  background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.22);transition:left .18s}
.psw-btn.on{background:#3fa66b}
.psw-btn.on i{left:26px}

/* ===== R40（Lisa 2026-10-08）：反馈列表顶部图标 / 收藏夹 / 标签 / 批量移出收藏 ===== */
.fb-ico{flex:0 0 auto;width:42px;height:42px;border:1px solid var(--line);background:#fff;
  border-radius:11px;font-size:19px;line-height:1;display:inline-flex;align-items:center;
  justify-content:center;text-decoration:none;color:#666;padding:0}
.fb-ico:active{background:var(--focus-soft);border-color:var(--focus);color:var(--focus)}
.dg-top .dg-search{flex:1 1 auto;min-width:0}
.dg-top .dg-filter{padding:10px 12px;font-size:14px}
.fb-tagrow{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}
.fb-tag{background:#f1efec;color:#666;border-radius:7px;padding:1px 7px;font-size:11px}
.fb-star{position:absolute;top:12px;right:13px;color:#efa72b;font-size:15px}
.dg-card.starred{border:1px solid #f2e2bd}
/* 收藏夹 */
.fb-editbtn{border:none;background:transparent;font-size:15px;color:var(--focus);font-weight:600;
  padding:8px 6px;min-height:40px;font-family:inherit}
.fb-pickrow.editing{position:relative;padding-left:44px}
.fb-pickrow .fb-checkbox{position:absolute;left:14px;top:15px;width:22px;height:22px;
  border:1.8px solid #c9c7c2;border-radius:50%;display:inline-flex;align-items:center;
  justify-content:center;font-size:13px;color:#fff;background:#fff}
.fb-pickrow .fb-checkbox.on{background:var(--focus);border-color:var(--focus)}
.fb-bulkbar{position:fixed;left:0;right:0;bottom:calc(56px + env(safe-area-inset-bottom));z-index:41;
  display:flex;align-items:center;gap:10px;padding:9px 14px;background:#fff;
  border-top:1px solid var(--line);box-shadow:0 -2px 10px rgba(0,0,0,.06)}
.fb-bulk-n{flex:1 1 auto;font-size:13.5px;color:var(--muted)}
.fb-bulk-btn{background:var(--focus);color:#fff;border:none;border-radius:10px;padding:9px 16px;
  font-size:14.5px;font-weight:600;font-family:inherit}
/* 详情页：加标签的小面板 */
.fb-tagbox{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:13px 14px;
  margin:0 0 12px}
.fb-tagbox-hd{font-size:13.5px;font-weight:700;margin-bottom:8px}
.fb-tagbox input{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:10px;
  font-size:15px;font-family:inherit;margin-top:6px}

/* ===== 笔记库（R41，2026-10-08）：反馈 / 积极日记 / 心得 / 笔记 合成一个列表 ===== */
/* 筛选面板里「类型多选」前面的小方框 */
.nt-box{display:inline-block;width:13px;height:13px;border:1.5px solid #cfcdc8;border-radius:3px;
  margin-right:5px;vertical-align:-2px;position:relative;background:#fff}
.dg-chip.on .nt-box{background:#fff;border-color:#fff}
.dg-chip.on .nt-box::after{content:"";position:absolute;left:3px;top:0;width:4px;height:8px;
  border:solid var(--focus);border-width:0 1.8px 1.8px 0;transform:rotate(45deg)}
/* 卡片上/详情里的类型小标签（灰的，跟蓝色 .fb-tag 区分开） */
.nt-kind,.nt-kindb{display:inline-block;font-size:11.5px;line-height:1.5;color:#8a8880;
  background:#f2f1ee;border-radius:8px;padding:1px 8px}
.nt-kindb{margin-bottom:8px}
/* 写笔记页顶部的类型切换 */
.nt-kinds{flex:0 0 auto;display:flex;gap:8px;flex-wrap:wrap;padding:8px 16px 0}
.nt-kinds .kchip{border:1px solid var(--line);background:#fff;border-radius:999px;
  padding:6px 13px;font-size:13.5px;color:var(--text);font-family:inherit}
.nt-kinds .kchip.on{background:var(--focus);border-color:var(--focus);color:#fff;font-weight:600}
.nt-cat{flex:0 0 auto;margin:10px 16px 0;padding:10px 12px;border:1px solid var(--line);
  border-radius:10px;font-size:15px;font-family:inherit;background:#fff;color:var(--text)}
/* 积极日记的四栏 */
.nt-journal{flex:0 0 auto;padding:0 16px 18px}
.nt-journal textarea{width:100%;margin-top:9px;padding:11px 12px;border:1px solid var(--line);
  border-radius:11px;font-size:15px;font-family:inherit;line-height:1.6;resize:vertical;
  box-sizing:border-box}

/* ===== 笔记列表「顶栏固定 + 只留卡片滚动」＋ 编辑页顶栏/工具栏去掉横线（Lisa 2026-10-08 反馈 #13，她反复要求过） ===== */
.nt-top{position:sticky;top:0;z-index:30;background:var(--bg);padding:1px 0 8px;gap:6px}
.nt-top .dg-search{flex:1 1 auto;min-width:0;padding:6px 11px;font-size:14px;border-radius:10px}
.nt-top .fb-ico{border:none;background:transparent;width:auto;height:auto;min-width:0;
  padding:7px 5px;font-size:19px;line-height:1}
.nt-top .fb-ico:active{background:transparent;border-color:transparent;color:var(--focus)}
.nt-top .dg-filter{border:none;background:transparent;padding:7px 5px;font-size:14.5px;
  color:var(--text);box-shadow:none}
.nt-top .dg-dot{top:3px;right:2px}
/* 编辑页：顶栏压到最小、上下横线都不要 */
.fb-nbar{border-bottom:none;padding:2px 14px}
.fb-nact{min-height:34px;padding:5px 10px;font-size:15px}
.fb-nact.save{min-width:34px;padding:5px 8px}
.fb-title{border-bottom:none;padding:10px 16px 4px;font-size:17.5px}
.fb-wrap .fb-editor{padding:8px 16px 18px}
.fb-tool{border-top:none;padding:0 10px calc(1px + env(safe-area-inset-bottom))}

/* ===== R42（Lisa 2026-10-08 拍板方案 C）：点 ＋ 进来先看板块清单；字段少的走底部弹面板（样式 1） ===== */
/* ⚠️ 这一套类名全部带 bs- 前缀：style.css 上面已经有一整套 .sh / .sh-mask（下半屏弹层），
   2026-10-08 重名把 /add 整页盖住（遮罩永远显示 + 吃掉点击），她报「点进去就弹出空白」。
   以后新加弹层先 grep 一下类名有没有被占。 */
/* 1) 清单页本身：白底太素，跟首页一样用米白底，卡片才立得起来 */
body.ad-page{background:var(--bg)}
#c-type{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:2px 0 6px}
#c-type[hidden]{display:none !important}
.ad-body .ad-pane{margin-top:4px}

/* 2) 弹面板（样式 1：大圆角卡 + 大数字 + 圆形 ✓） */
body.bs-open{overflow:hidden}
.bs-mask[hidden],.bs[hidden]{display:none !important}   /* display 会盖掉 hidden，必须显式写 */
.bs-mask{position:fixed;inset:0;background:rgba(0,0,0,.34);z-index:60}
.bs{position:fixed;left:8px;right:8px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:61;
  background:#fff;border-radius:22px;box-shadow:0 -2px 26px rgba(0,0,0,.18);
  padding:12px 16px 14px;max-height:84vh;display:flex;flex-direction:column;
  animation:bsUp .2s ease}
@keyframes bsUp{from{transform:translateY(16px);opacity:.5}to{transform:none;opacity:1}}
.bs-grip{width:36px;height:4px;border-radius:2px;background:#e6e4df;margin:0 auto 10px;flex:0 0 auto}
.bs-hd{margin:0 0 6px;font-size:14.5px;font-weight:700;display:flex;align-items:center;gap:6px;flex:0 0 auto}
.bs-body{overflow-y:auto;-webkit-overflow-scrolling:touch;flex:1 1 auto;min-height:0}
.bs-body .ad-pane{margin:0}
.bs-body .ad-rows .arow:first-child{border-top:none}
.bs-body .ad-text{font-size:16px}
.bs-foot{display:flex;align-items:center;gap:10px;padding-top:10px;flex:0 0 auto}
.bs-when{flex:1 1 auto;min-width:0;font-size:11.5px;color:var(--muted);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bs-ok{flex:0 0 auto;width:44px;height:44px;border:none;border-radius:50%;background:var(--focus);
  display:flex;align-items:center;justify-content:center;padding:0;
  box-shadow:0 5px 14px rgba(224,86,74,.35)}
.bs-ok:active{filter:brightness(.94)}
.bs-ok svg{display:block}
/* 体重在面板里＝大数字（照样式 1 的样张） */
.bs-body #wt2-kg{font-size:34px;font-weight:800;text-align:center;min-height:74px;padding:8px 0}

/* 笔记详情页的两个小面板（🏷 标签 / 🔀 类型）：它们长在页面最顶上，
   往下滑着看长笔记时点开必须滚进视野，且别被吸顶的顶栏盖住（2026-10-08 她报「点了没反应」） */
.fb-tagbox{scroll-margin-top:64px}
/* ★ 反馈 #57-③：列表页的「筛选」面板和「标签」面板也要滚进视野（配 notes.js 的 openPanel） */
.dg-fpanel{scroll-margin-top:64px}
.di-card{scroll-margin-top:64px}

/* 游客演示模式的小字提示条（Lisa 2026-10-08）：别人从免登录链接进来时，
   每页最上面一条小字，明确说明「下面是示例数据」。只在 demo 会话里出现。 */
.demo-bar{background:#fff7e6;color:#a8761a;border-bottom:1px solid #f0e0bd;
  font-size:11.5px;line-height:1.5;padding:4px 10px;text-align:center;letter-spacing:.2px}

/* ============ 2026-10-08 反馈 #6-1：专注页顶部的「正在专注」条 ============
   电脑悬浮窗（或另一台设备）在跑专注时，网页版打开专注页也要看得见同一段。 */
.run-bar{display:flex;align-items:center;gap:8px;margin:0 0 8px;padding:8px 12px;
  background:var(--focus-soft,#eef7f0);border:1px solid #d7e9dc;border-radius:12px;
  font-size:13.5px;color:#2f6b45}
.run-bar[hidden]{display:none !important}      /* display 会盖掉 hidden 属性，必须显式兜住 */
.run-bar .rb-dot{width:8px;height:8px;border-radius:50%;background:#3fa66b;flex:0 0 auto;
  animation:rbdot 1.6s ease-in-out infinite}
@keyframes rbdot{0%,100%{opacity:1}50%{opacity:.35}}
.run-bar .rb-txt{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.run-bar .rb-time{font-variant-numeric:tabular-nums;font-weight:700;color:#2f6b45}
.run-bar .rb-open{flex:0 0 auto;font-size:12.5px;color:#3fa66b;border:1px solid #bcdcc6;
  border-radius:8px;padding:3px 9px;text-decoration:none;background:#fff}

/* ============ 2026-10-08 反馈 #6-5：待办页中栏的「＋ 添加任务」一行（照滴答清单）============ */
.td-quick{display:flex;align-items:center;gap:6px;padding:6px 2px 8px}
.td-quick .tdq-ic{color:#b9b7b2;font-size:16px;line-height:1;flex:0 0 auto}
.td-quick input{flex:1 1 auto;min-width:0;border:none;background:transparent;outline:none;
  font-family:inherit;font-size:15px;color:var(--text);padding:4px 0}
.td-quick input::placeholder{color:#bdbab4}
/* ★ #363①（2026-10-25）：待办「清单」页 —— 搜索框与添加框并排，两个独立的框；
   搜索时不跳页、原地过滤，命中的字用黄色标出来（照笔记板块的搜索）。 */
.td-two{display:flex;align-items:center;gap:9px;margin:2px 0 6px}
.td-two .td-quick{flex:1 1 0;min-width:0;padding:6px 10px;border:1px solid #E4EBE6;
  border-radius:10px;background:#F7FAF8}
.td-two .td-quick:focus-within{background:#fff;border-color:#BBDCC9;box-shadow:0 0 0 2px rgba(76,175,125,.10)}
.td-two .td-quick-q{flex:0 1 260px;background:#fff}
.td-two .td-quick-q .tdq-ic{color:#9DB3A6}
mark.tdq-hit{background:#FFEE9A;color:inherit;border-radius:3px;padding:0 1px}
@media (max-width:640px){
  .td-two{gap:7px}
  /* ★ #385①（2026-10-25）：手机端搜索框与添框等宽 —— 原来搜索框 flex-basis 42%，
     比右边的添框宽一截，她要两个一样大 */
  .td-two .td-quick-q{flex:1 1 0}
  .td-two .td-quick{padding:5px 8px}
  .td-two .td-quick input{font-size:15px}
  .td-two .td-quick .tdq-ic{font-size:14px}
}
/* ★ 反馈 #338①（2026-10-23）：输入框下面那条「识别到：今天 11:00」的提示（点一下＝这次不识别） */
.tdq-when{display:inline-flex;align-items:center;gap:5px;margin:-4px 0 8px 22px;padding:2px 9px;
  border-radius:11px;background:#eaf5ee;color:#2f7d4f;font-size:12px;line-height:17px;cursor:pointer;
  user-select:none;max-width:calc(100% - 30px)}
.tdq-when b{font-weight:600}
.tdq-when::before{content:"🕘";font-size:11px}
.tdq-when[hidden]{display:none !important}

/* 2026-10-08 反馈 #6-8：笔记编辑页的照片靠左（电脑端写字在左、照片居中看着别扭） */
#nt-body .fb-inline-img{margin:10px 0}

/* ===== R86（Lisa 2026-10-08 反馈 #85，拍板方案 A）：笔记列表的「笔记本」抽屉 =====
   左上角 ☰ 打开；里面是「全部笔记 + 各笔记本」；拖一条笔记进去＝移到那个笔记本。
   规矩照她的：顶栏固定、图标不要外框、不显示计数、卡片上不放按钮。 */
.nt-dwm{position:fixed;inset:0;background:rgba(0,0,0,.30);z-index:55}
.nt-dwm[hidden]{display:none !important}
.nt-dw{position:fixed;left:0;top:0;bottom:0;width:74%;max-width:272px;background:#fff;z-index:60;
  display:flex;flex-direction:column;box-shadow:3px 0 16px rgba(0,0,0,.18);
  padding-top:env(safe-area-inset-top);border-radius:0 16px 16px 0}
.nt-dw[hidden]{display:none !important}
.nt-dw-hd{display:flex;align-items:center;justify-content:space-between;
  padding:13px 14px 8px;font-size:13px;color:var(--muted)}
.nt-dw-hd b{color:#4a4f57;font-size:14.5px;font-weight:700}
.nt-dw-x{border:none;background:transparent;color:#b6bac1;font-size:15px;padding:2px 6px}
.nt-dw-list{flex:1 1 auto;overflow-y:auto;padding:2px 0 12px}
.nt-nb{display:flex;align-items:center;gap:9px;padding:10px 14px;font-size:14.5px;color:#41464e}
.nt-nb:active{background:#f7f8f9}
.nt-nb.on{background:#e8f5ee;color:var(--focus);font-weight:700}
.nt-nb .dot{width:6px;height:6px;border-radius:50%;background:#cfd4db;flex:0 0 auto}
.nt-nb.on .dot{background:var(--focus)}
.nt-nb .nm{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nt-nb.drag{background:#e8f5ee;color:var(--focus)}
.nt-nb .ed{border:none;background:transparent;color:#bfc3ca;font-size:13.5px;
  padding:2px 5px;line-height:1;flex:0 0 auto}
.nt-nb .ed:active{color:var(--focus)}
.nt-edit{width:100%;border:1px solid var(--focus);border-radius:8px;padding:5px 8px;
  font-size:14.5px;font-family:inherit;outline:none}
.nt-dw-foot{border-top:1px solid #f0f1f3;padding:9px 14px calc(11px + env(safe-area-inset-bottom))}
#nt-nbadd{border:none;background:transparent;color:var(--focus);font-size:14.5px;font-weight:700;
  padding:4px 0;font-family:inherit}
/* 卡片改成 div（手机长按链接会弹浏览器菜单，长按拖拽就起不来）——补上指针/长按的样式 */
.nt-list .dg-card, .dg-list .dg-card{cursor:pointer;-webkit-touch-callout:none;
  -webkit-user-select:none;user-select:none}
/* 编辑页「笔记本」那一行 */
.nt-nbrow{display:flex;align-items:center;gap:8px;padding:6px 16px 2px;font-size:14px;color:var(--muted)}
.nt-nbrow button{border:1px solid var(--line);background:#fff;border-radius:9px;
  padding:5px 10px;font-size:13.5px;color:var(--text);font-family:inherit;max-width:70%;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nt-nbsheet{background:#fff;border:1px solid var(--line);border-radius:13px;
  margin:4px 16px 0;padding:9px 10px;box-shadow:var(--shadow)}
.nt-nbsheet[hidden]{display:none !important}
.nt-nbsheet .dg-chip{margin:0 6px 6px 0}
/* 电脑端的返回键（只在鼠标设备由 base.html 插入；手机端没有这个元素）2026-10-08 反馈 #88 */
.pc-back{flex:0 0 auto;color:#5A8AE9;text-decoration:none;font-size:15px;line-height:1;
  padding:5px 7px;border-radius:8px}
.pc-back:hover{background:#eef3ff}

/* ---------- 待办搜索页（2026-10-08 反馈 #92） ---------- */
.sc-top{position:sticky;top:0;z-index:30;background:var(--bg,#f5f6f7);
  padding:6px 10px 6px;gap:8px;border-bottom:none}
.sc-input{flex:1 1 auto;min-width:0;border:1px solid var(--line,#e6e6e6);background:#fff;
  border-radius:9px;padding:7px 11px;font-size:15px;font-family:inherit;color:var(--text);
  -webkit-appearance:none;appearance:none}
.sc-input:focus{outline:none;border-color:var(--focus,#3fa66b)}
.sc-fbtn{flex:0 0 auto;border:1px solid var(--line,#e6e6e6);background:#fff;border-radius:9px;
  padding:7px 11px;font-size:14px;font-family:inherit;color:#555}
.sc-fbtn.on{border-color:var(--focus,#3fa66b);color:var(--focus,#3fa66b);font-weight:700}
.sc-fbtn.open{background:#eef6f1}
.sc-fpanel{background:#fff;margin:0 10px 8px;padding:8px 10px 4px;border-radius:12px;
  border:1px solid #eee;scroll-margin-top:60px}
.sc-fpanel[hidden]{display:none !important}
.sc-fclear{text-align:right;padding:2px 0 4px}
.sc-fclear button{border:none;background:transparent;color:var(--focus,#3fa66b);
  font-size:13.5px;font-family:inherit;font-weight:700}
.sc-list{list-style:none;margin:0;padding:0 10px calc(84px + env(safe-area-inset-bottom))}
.sc-row{background:#fff;border:1px solid #eee;border-radius:12px;padding:10px 12px;margin-bottom:9px;
  cursor:pointer;overflow:hidden}
.sc-row:active{background:#fafafa}
.sc-t{font-size:15px;color:var(--text);line-height:1.35;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}
.sc-m{font-size:12.5px;color:var(--muted,#9aa0a6);margin-top:4px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sc-why{display:inline-block;font-size:11.5px;color:#7a8b80;background:#f1f5f2;
  border-radius:6px;padding:1px 6px;margin-top:6px}
.sc-snip{font-size:13px;color:#6b6b6b;margin-top:4px;line-height:1.4;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sc-empty{margin-top:40px}
mark{background:#ffe9a8;color:inherit;border-radius:3px;padding:0 1px}
/* 待办页顶栏那个 🔍（手机上也能进搜索页） */
.sc-ico{flex:0 0 auto;border:none;background:transparent;text-decoration:none;
  font-size:15px;line-height:1;padding:3px 6px}

/* ---------------- 💬 「接着问」输入框（2026-10-09 反馈 #118） ----------------
   她说：笔记在编辑状态时看不到我的回复；我的回复里有表格，她没法在表格里写。
   所以给她一个独立输入框，跟正文分开，写完落库。 */
.fb-askbox{background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:13px 14px;margin:12px 0 80px}
.fb-ask-hd{font-size:14.5px;font-weight:600;margin:0 0 9px;display:flex;align-items:center;gap:6px;cursor:pointer;user-select:none}
/* ★ 反馈 #478①：收起态 —— 只留一行标题，输入框和记录都藏起来（手机上不再是一大块空框） */
.fb-ask-caret{margin-left:auto;font-size:12px;font-weight:400;color:var(--muted)}
.fb-askbox.collapsed{padding-top:10px;padding-bottom:10px}
.fb-askbox.collapsed .fb-ask-hd{margin:0}
.fb-askbox.collapsed .fb-ask-list,
.fb-askbox.collapsed textarea,
.fb-askbox.collapsed .addbox-row{display:none}
.fb-askbox textarea{width:100%;border:1px solid var(--line);border-radius:11px;
  padding:10px 11px;font-size:15px;line-height:1.65;font-family:inherit;
  color:var(--text);background:#fff;resize:vertical}
.fb-askbox textarea:focus{outline:none;border-color:var(--focus);
  box-shadow:0 0 0 3px var(--focus-soft)}
.fb-ask-tip{font-size:12px;color:var(--muted);line-height:1.5}
.fb-ask{margin:0 0 11px}
.fb-ask:last-child{margin-bottom:2px}
.fb-ask-q{background:#f4f3f0;border-radius:11px;padding:9px 11px;
  font-size:14.5px;line-height:1.7;word-break:break-word}
.fb-ask-t{display:block;font-size:11.5px;color:var(--muted);margin-top:3px}
.fb-ask-a{background:var(--focus-soft);border-radius:11px;padding:9px 11px;margin-top:6px;
  font-size:14.5px;line-height:1.75}
.fb-ask-a>b{display:block;font-size:12px;color:var(--muted);margin-bottom:3px}
.fb-ask-a .di-body,.fb-ask-a .fb-ask-md{font-size:14.5px}
.fb-ask-wait{font-size:12.5px;color:#c08a12;margin-top:5px}

/* ================= 笔记库·电脑端三栏（2026-10-09，反馈 #118 她拍的「电脑B + 手机M1」） =================
   左栏＝笔记本树 ｜ 中栏＝列表（更新时间·标题·位置）｜ 右栏＝阅读
   规矩：顶栏/工具栏的横线一律不要（用底色分层）、图标不要外框、计数照她 #1 显示、
        表头文字留着但没有下划线（她 #6 只说去横线）。配色沿用全站的 --focus，跟别的页面一致。 */
body.nk-body{padding:0;overflow:hidden;background:#fff}
.nk{display:flex;align-items:stretch;height:calc(100vh - 62px - env(safe-area-inset-bottom));
  background:#fff;min-height:420px}
.nk-c1{width:200px;flex:0 0 auto;border-right:1px solid var(--line);display:flex;flex-direction:column;
  background:#fbfbfa;min-width:0}
.nk-c2{width:330px;flex:0 0 auto;border-right:1px solid var(--line);display:flex;flex-direction:column;
  background:#fff;min-width:0;position:relative}
.nk-c3{flex:1 1 auto;min-width:320px;display:flex;flex-direction:column;background:#fff;overflow:hidden}
/* 分隔条：默认看不见，鼠标上去才亮（不要满屏跑的横线） */
.nk-grip{flex:0 0 5px;margin:0 -2.5px;cursor:col-resize;background:transparent;position:relative;z-index:4}
.nk-grip:hover,.nk-grip.on{background:var(--focus-soft)}
body.nk-dragging{cursor:col-resize}
body.nk-dragging *{user-select:none!important}
/* --- 左栏 --- */
.nk-c1top{padding:10px 10px 6px}
.nk-new{display:block;text-align:center;background:var(--focus);color:#fff;border-radius:9px;
  padding:8px 0;font-size:13.5px;font-weight:600}
.nk-c1top .nk-new{width:100%;border:none;font-family:inherit;cursor:pointer}
.nk-c1top .nk-impbtn{margin-top:6px;background:#eef4ef;color:var(--focus);font-weight:500}
.nk-new:hover{filter:brightness(.95)}
.nk-tree{flex:1;overflow-y:auto;padding:2px 6px 8px}
.nk-lrow{display:flex;align-items:center;gap:6px;padding:7px 8px;border-radius:8px;font-size:13px;
  cursor:pointer;white-space:nowrap;overflow:hidden}
.nk-lrow:hover{background:#f1f0ee}
.nk-lrow.on{background:var(--focus-soft);color:var(--focus);font-weight:600}
.nk-lrow .n{margin-left:auto;color:var(--muted);font-size:11.5px;font-weight:400}
.nk-lrow .nm{overflow:hidden;text-overflow:ellipsis}
.nk-grow{padding:10px 8px 3px;font-size:11.5px;color:var(--muted)}
.nk-nbrow{padding-left:16px}
.nk-nbrow.drop{background:var(--focus-soft);box-shadow:inset 0 0 0 1px var(--focus)}
/* ★ #321③：拖动换位置时的落位线（插到这一行上面/下面） */
.nk-nbrow.drop-b{box-shadow:inset 0 3px 0 0 #2e9e6b}
.nk-nbrow.drop-a{box-shadow:inset 0 -3px 0 0 #2e9e6b}
.wk2-row.drop-b{box-shadow:inset 0 3px 0 0 #2e9e6b}
.wk2-row.drop-a{box-shadow:inset 0 -3px 0 0 #2e9e6b}
.wk2-row.dragging{opacity:.45}
/* ★ 需求 #111（2026-10-20）：左栏笔记本 3 级树 —— 折叠箭头 / 缩进 / 拖拽落点 */
.nk-ghead{display:flex;align-items:center;gap:4px;cursor:pointer;user-select:none}
.nk-ghead.drop{background:var(--focus-soft)}
.nk-cart{display:inline-block;width:12px;text-align:center;font-size:10px;color:var(--muted);transform:none;transition:transform .12s}
.nk-cart.c{transform:rotate(-90deg)}
.nk-cart.ph{visibility:hidden}
.nk-nbrow.d1{padding-left:16px}
.nk-nbrow.d2{padding-left:31px}
.nk-nbrow.d3{padding-left:46px}
.nk-nbrow.dragging{opacity:.45}
.nk-nbempty{padding:5px 10px 8px;font-size:11.5px;color:var(--muted)}
.nk-nbform{display:flex;flex-direction:column;gap:8px;min-width:230px}
.nk-nbin{width:100%;box-sizing:border-box;border:1px solid #ddd;border-radius:8px;padding:7px 9px;font-size:13px;background:#fff;color:inherit}
.nk-nblab{font-size:12px;color:var(--muted);display:flex;flex-direction:column;gap:4px}
.nk-pop-row{display:flex;gap:8px;justify-content:flex-end;margin-top:2px}
.nk-nbok{background:var(--focus);color:#fff;border:none;border-radius:8px;padding:7px 16px;font-size:13px;cursor:pointer}
.nk-nbmore{margin-left:4px;border:none;background:transparent;color:#c2c2c2;font-size:14px;
  cursor:pointer;padding:0 2px;visibility:hidden;line-height:1}
.nk-nbrow:hover .nk-nbmore{visibility:visible}
.nk-taglist{padding:4px 8px 8px;display:flex;flex-wrap:wrap;gap:5px}
.nk-tagchip{border:none;background:#f1f0ee;color:#666;border-radius:20px;padding:3px 9px;font-size:11.5px;
  cursor:pointer;font-family:inherit}
.nk-tagchip.on{background:var(--focus);color:#fff}
.nk-c1foot{padding:8px 10px;border-top:1px solid var(--line)}
.nk-c1foot button{width:100%;border:1px dashed #d6d4d0;background:#fff;color:#777;border-radius:9px;
  padding:7px 0;font-size:12.5px;cursor:pointer;font-family:inherit}
/* --- 中栏 --- */
.nk-c2top{padding:10px 10px 4px}
.nk-searchwrap{display:flex;align-items:center;gap:6px}
.nk-qbox{position:relative;flex:1;min-width:0}
.nk-searchwrap input{width:100%;box-sizing:border-box;padding:7px 28px 7px 11px;border:none;background:#f2f1ef;border-radius:9px;
  font-size:13px;font-family:inherit;color:var(--text)}
/* ★ 反馈 #488③（2026-10-28）：搜索框收窄 + 后面跟一个「✕ 清空」一键清空 */
.nk-qclear{flex:0 0 auto;height:31px;padding:0 9px;border:1px solid #e2e0dc;background:#fff;color:#777;
  border-radius:9px;font-size:12px;font-family:inherit;cursor:pointer;white-space:nowrap;line-height:1}
.nk-qclear:hover{background:#f2f1ef;color:var(--focus);border-color:var(--focus)}
.nk-searchwrap input:focus{outline:none;box-shadow:0 0 0 2px var(--focus-soft)}
.nk-sico{position:absolute;right:9px;top:6px;font-size:12.5px;opacity:.5}
.nk-bar2{display:flex;align-items:center;gap:8px;padding:7px 2px 4px;font-size:12.5px;color:#5c6066}
.nk-scope{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:52%}
.nk-cnt{color:var(--muted);font-size:11.5px}
.nk-thead{display:flex;gap:8px;padding:2px 12px 4px;font-size:11.5px;color:#a3a8ad}
.nk-thead .t1{width:56px;flex:0 0 auto}
.nk-thead .t2{flex:1;min-width:0}
.nk-thead .t3{width:66px;flex:0 0 auto;text-align:right}
.nk-list{flex:1;overflow-y:auto}
.nk-row{display:flex;gap:8px;align-items:center;padding:8px 12px;font-size:13px;cursor:pointer}
.nk-row:hover{background:#f7f6f4}
.nk-row.on{background:var(--focus-soft)}
.nk-row .t1{width:56px;flex:0 0 auto;color:var(--muted);font-size:11.5px}
.nk-row .t2{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nk-row .t2 .nt{color:#b3b3b3;font-style:normal}
.nk-row .t2 .nt-hit{color:#8a8a86;margin-left:6px;font-size:11.5px}
.nk-row .t3{width:66px;flex:0 0 auto;text-align:right;color:var(--muted);font-size:11.5px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nk-row mark{background:#ffe9a8;color:inherit;border-radius:3px}
.nk-empty2{padding:26px 0;text-align:center;color:var(--muted);font-size:13px}
/* --- 右栏 --- */
.nk-blank{flex:1;display:flex;align-items:center;justify-content:center;color:#c0c0c0;font-size:14px}
.nk-read{flex:1;display:flex;flex-direction:column;min-height:0}
.nk-ibar{display:flex;align-items:center;gap:10px;padding:9px 16px 7px;background:#fbfbfa}
.nk-nbchip{background:var(--focus-soft);color:var(--focus);border-radius:7px;padding:3px 9px;
  font-size:12px;font-weight:600;white-space:nowrap;max-width:190px;overflow:hidden;text-overflow:ellipsis;
  cursor:pointer;user-select:none}
.nk-nbchip:hover{background:#e6efe6;box-shadow:inset 0 0 0 1px var(--focus)}
.nk-rtime{color:var(--muted);font-size:11.5px;white-space:nowrap}
.nk-ibar-r{margin-left:auto;display:flex;align-items:center;gap:10px}
.nk-ico{border:none;background:transparent;color:#5f5f5f;font-size:15px;cursor:pointer;padding:2px 3px;
  line-height:1;font-family:inherit}
.nk-ico:hover{color:var(--text)}
.nk-ico.on{color:#e8a33d}
.nk-editbtn{font-size:12.5px;color:var(--focus);white-space:nowrap}
.nk-menuwrap{position:relative}
.nk-menu{position:absolute;right:0;top:22px;z-index:30;background:#fff;border-radius:10px;
  box-shadow:0 6px 20px rgba(0,0,0,.14);padding:5px;min-width:150px}
.nk-menu button{display:block;width:100%;text-align:left;border:none;background:transparent;padding:7px 10px;
  font-size:13px;border-radius:7px;cursor:pointer;font-family:inherit;color:var(--text);white-space:nowrap}
.nk-menu button:hover{background:#f4f3f1}
.nk-menu button.danger{color:#d64541}
.nk-paper{flex:1;overflow-y:auto;padding:18px 30px 30px}
.nk-title{font-size:21px;line-height:1.4;margin:0 0 8px}
.nk-tags{margin:0 0 12px;display:flex;flex-wrap:wrap;gap:5px}
.nk-body{font-size:14.5px;line-height:1.85;word-break:break-word}
.nk-body img{max-width:100%;border-radius:8px;cursor:zoom-in}
.nk-reply{margin:20px 0 0;background:var(--focus-soft);border-radius:12px;padding:12px 14px}
.nk-reply>b{display:block;font-size:12.5px;color:#8a8f95;margin-bottom:6px}
.nk-replyb{font-size:14px;line-height:1.8}
.nk-tagbar{display:flex;align-items:center;gap:6px;padding:9px 16px;background:#fbfbfa;flex-wrap:wrap}
.nk-tagbar>button{border:none;background:transparent;color:#8a8f95;font-size:12.5px;cursor:pointer;
  font-family:inherit;padding:2px 0}
.nk-tagbar .dtag{background:#f1f0ee;border-radius:20px;padding:2px 9px;font-size:11.5px;color:#666}
/* --- 浮层 --- */
.nk-pop{position:fixed;z-index:60;background:#fff;border-radius:12px;box-shadow:0 10px 34px rgba(0,0,0,.18);
  padding:12px;width:320px;max-width:86vw}
.nk-pop-hd{font-size:14px;font-weight:600;margin:0 0 9px}
.nk-pop-list button{display:block;width:100%;text-align:left;border:none;background:transparent;
  padding:8px 9px;font-size:13.5px;border-radius:8px;cursor:pointer;font-family:inherit;color:var(--text)}
.nk-pop-list button:hover{background:#f4f3f1}
.nk-pop-list button.on{color:var(--focus);font-weight:600}
.nk-pop-chips{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:9px;max-height:170px;overflow-y:auto}
.nk-pop input{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:9px;font-size:13px;
  font-family:inherit;box-sizing:border-box}
.nk-pop-row{display:flex;gap:8px;margin-top:10px}
.nk-pop-row button{flex:1}

/* ================= 电脑版三栏·笔记：2026-10-09 反馈 #119 的一批改动 ================= */
/* ① 三栏高度用 JS 量出来的顶栏高度算 —— 演示条/窄屏时页面不再被顶到屏幕外面去 */
/* ★ 反馈 #138②（2026-10-10）：三栏高度必须把「底部导航栏」也扣掉。
   原来只扣了顶栏（--topbar-h），底栏那 63px 一直在中栏/左栏/右栏的下面压着 ——
   中栏最后一条笔记就再也滚不出来了（她这次又撞上，5 号那天也撞过一次同样的）。
   --tabbar-h 由 notes_desk.js 量出来写上去（含手机安全区），没量到就当 0。
   ★★ 2026-10-22 复核补：#172 加了「过期提醒横幅」后，横幅显示时给 body 加了 padding-top:--rb-h
   （整页下移，免得横幅盖住第一屏），可是这里的 .nk 高度没扣 --rb-h → 三栏又被顶出屏幕，
   中栏最后一条又落到底栏下面（#138② 复发）。所以 --rb-h 也要一起扣。 */
.nk{height:calc(100vh - var(--topbar-h,0px) - var(--tabbar-h,0px) - var(--rb-h,0px))}
@supports (height:100dvh){
  .nk{height:calc(100dvh - var(--topbar-h,0px) - var(--tabbar-h,0px) - var(--rb-h,0px))}
}
/* ② 中栏三列（更新时间 / 标题 / 位置）列宽可拖；宽度记在 --t1w / --t3w 上
   ⚠️ 默认值只能挂在 .nk-c2 上（不能挂在 .nk-row 上）—— 挂在行上会覆盖 JS 写在
   .nk-c2 内联样式里的值，拖了也不生效（2026-10-09 实测踩到） */
.nk-c2{--t1w:56px;--t3w:66px}
.nk-thead{position:relative}
.nk-thead .t1,.nk-row .t1{width:var(--t1w);flex:0 0 auto}
.nk-thead .t3,.nk-row .t3{width:var(--t3w);flex:0 0 auto}
.nk-hgrip{position:absolute;top:0;bottom:0;width:7px;cursor:col-resize;z-index:3;background:transparent}
.nk-hgrip:hover{background:var(--focus-soft)}
/* ③ 中栏行距收紧（她说「行和行空间太大了」）*/
.nk-thead{padding:1px 12px 2px;font-size:11px}
.nk-row{padding:3px 12px;font-size:12.5px;line-height:1.35}
.nk-row .t1,.nk-row .t3{font-size:11px}
.nk-lrow{padding:5px 8px}                     /* 左栏也稍紧一点，跟中栏配 */
/* ④ 右栏顶部那条永远钉在最上面（正文再长也不动），滚动时给条细阴影 */
.nk-ibar{position:sticky;top:0;z-index:6}
.nk-c3.scrolled .nk-ibar{box-shadow:0 2px 6px rgba(0,0,0,.06)}
/* ⑤ 在这条笔记里查找（Ctrl+F） */
.nk-findbar{display:flex;align-items:center;gap:6px;padding:5px 12px;background:#f7f6f4;
  border-bottom:1px solid var(--line)}
.nk-findbar input{flex:1;min-width:0;padding:5px 9px;border:1px solid var(--line);border-radius:8px;
  font-size:12.5px;font-family:inherit;box-sizing:border-box}
.nk-findbar input:focus{outline:none;box-shadow:0 0 0 2px var(--focus-soft);border-color:var(--focus)}
.nk-findcnt{color:var(--muted);font-size:11.5px;white-space:nowrap}
.nk-findcnt.none{color:#d64541}
.nk-findbar button{border:none;background:transparent;color:#6b6b6b;font-size:13px;cursor:pointer;
  padding:3px 6px;border-radius:6px}
.nk-findbar button:hover{background:#ececea;color:var(--text)}
mark.nf-hit{background:#ffe9a8;color:inherit;border-radius:2px;padding:0 1px}
mark.nf-hit.on{background:#ffb020;color:#231a00}
/* ⑥ 右栏就地编辑（双击正文 / 点「✏️ 编辑」）＋ Ctrl+S 保存 */
.nk-editbar{display:flex;align-items:center;gap:8px;padding:5px 12px;background:#eef7f0;
  border-bottom:1px solid #d8e9dc}
.nk-edittip{flex:1;color:#4b7a58;font-size:12px}
.nk-ebtn{border:none;border-radius:8px;padding:5px 12px;font-size:12.5px;cursor:pointer;font-family:inherit}
.nk-ebtn.ghost{background:#fff;color:#666;border:1px solid var(--line)}
.nk-ebtn.main{background:var(--focus);color:#fff}
.nk-paper.nk-editing{padding:14px 30px 30px}
.nk-edit-title{width:100%;border:none;border-bottom:1px solid var(--line);font-size:19px;font-weight:600;
  font-family:inherit;padding:2px 0 8px;margin:0 0 10px;box-sizing:border-box}
.nk-edit-title:focus{outline:none;border-color:var(--focus)}
.nk-edit-body{width:100%;min-height:52vh;border:none;font-size:14.5px;line-height:1.85;
  font-family:inherit;resize:vertical;box-sizing:border-box}
.nk-edit-body:focus{outline:none}
.nk-edithint{margin-top:10px;color:#a3a8ad;font-size:11.5px;line-height:1.6}
/* ⑦ 📌 置顶那条笔记（钉在中栏最上面） */
.nk-ico.pin-on{color:#e8a33d}
/* 反馈 #138⑤：右栏那排能拖的按钮 + ⋮ 菜单底下的提示 */
.nk-rbar{display:inline-flex;align-items:center;gap:10px}
.nk-rbar .nk-ico{cursor:pointer}
.nk-rbar .nk-ico.nk-bar-wide{font-size:12.5px;color:var(--focus);white-space:nowrap}
.nk-rbar .nk-ico.nk-bar-danger{color:#d64541}
.nk-menu-tip{color:#a3a8ad;font-size:11px;padding:5px 10px 3px;border-top:1px solid var(--line);margin-top:3px}
.nk-row .nk-pinmark{color:#e8a33d;flex:0 0 auto;margin-right:-2px}
/* ⑧ 演示模式那条提示上的「退出演示」 */
.demo-bar .demo-exit{margin-left:10px;color:#a8761a;font-weight:600;text-decoration:underline}
/* 🔍 笔记详情页（手机端）的「在这条里查找」条 */
.ni-findico{border:none;background:transparent;width:auto;height:auto;min-width:0;
  font-size:17px;color:#5f5f5f;padding:4px 8px}
.ni-findbar{position:sticky;top:52px;z-index:29;display:flex;align-items:center;gap:6px;
  padding:6px 12px;background:#f7f6f4;border-bottom:1px solid var(--line)}
.ni-findbar input{flex:1;min-width:0;padding:6px 9px;border:1px solid var(--line);border-radius:8px;
  font-size:14px;font-family:inherit;box-sizing:border-box}
.ni-findbar input:focus{outline:none;box-shadow:0 0 0 2px var(--focus-soft);border-color:var(--focus)}
.ni-findcnt{color:var(--muted);font-size:12px;white-space:nowrap}
.ni-findcnt.none{color:#d64541}
.ni-findbar button{border:none;background:transparent;color:#6b6b6b;font-size:15px;cursor:pointer;
  padding:4px 7px;border-radius:6px}
.ni-findbar button:active{background:#ececea}
/* ★★ 2026-10-09 反馈 #119 真因：「右栏没有置顶」——
   .nk-blank / .nk-read 的 CSS 里写了 display:flex，**把 [hidden] 自带的 display:none 顶掉了**，
   于是右栏被那个看不见的空占位块（blank）挤掉一半，笔记显示在右栏中段而不是最上面。
   凡是「CSS 里指定了 display 又要用 hidden 隐藏」的元素，都得在这里补一刀。 */
.nk-blank[hidden],.nk-read[hidden],.nk-findbar[hidden],.nk-editbar[hidden],
.nk-dw[hidden],.nk-dwm[hidden],.ni-findbar[hidden]{display:none!important}


/* ============================================================================
   R51（2026-10-09 反馈 #122）「专注」页完善
   她的标准：顶栏固定（sticky）、能压多小压多小、图标不要外框、顶栏/工具栏下面不要横线、
             筛选条件收进「筛选」按钮（默认只留关键词搜索）
   ============================================================================ */
.fx-head{position:sticky;top:0;z-index:6;background:var(--bg);
  margin:0 -14px;padding:4px 14px 8px}
.focus-top{border-bottom:none;background:transparent;padding:2px 0 6px}
.focus-top .icon-btn{border:none;background:transparent;box-shadow:none;font-size:19px;color:#6d6b66;
  width:auto;min-width:0;padding:4px 6px}
.focus-top .btn-primary.sm{padding:8px 13px;font-size:14px;border-radius:999px}

.fx-tools{display:flex;align-items:center;gap:8px}
.fx-search{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:7px;background:#fff;
  border:1px solid var(--line);border-radius:11px;padding:7px 11px;color:#b3b0ab}
.fx-search input{flex:1 1 auto;min-width:0;border:none;outline:none;background:transparent;
  font-family:inherit;font-size:15px;color:var(--text);padding:0}
.fx-search input::-webkit-search-cancel-button{display:none}
.fx-clear{flex:0 0 auto;border:none;background:transparent;color:#b9b7b2;font-size:13px;padding:0 0 0 4px;cursor:pointer}
.fx-fbtn{position:relative;flex:0 0 auto;background:#fff;border:1px solid var(--line);border-radius:11px;
  padding:8px 13px;font-size:14px;font-family:inherit;color:var(--text);font-weight:600;cursor:pointer}
.fx-fbtn.on{border-color:var(--focus);color:var(--focus);background:var(--focus-soft)}
.fx-dot{position:absolute;top:-3px;right:-3px;width:8px;height:8px;border-radius:50%;background:var(--focus)}

/* 筛选面板（底部弹出，和快速开始一个壳） */
.modal-mask.sheet{align-items:flex-end;padding:0}
.modal-mask.sheet .modal{border-radius:20px 20px 0 0;max-width:520px;width:100%;text-align:left;
  padding:14px 16px calc(16px + env(safe-area-inset-bottom));max-height:86vh;overflow:auto}
/* ★ 反馈 #255③（2026-10-19）：快速开始改屏幕居中、按住标题栏可拖（.qs-center 只给快速开始，筛选面板仍是底部） */
.modal-mask.sheet.qs-center{align-items:center;padding:16px}
.modal-mask.sheet.qs-center .modal{border-radius:18px;max-height:82vh;
  padding:14px 16px 16px;box-shadow:0 18px 50px rgba(0,0,0,.18)}
.modal-mask.sheet.qs-center .ms-hd{padding-bottom:6px;user-select:none}
.ms-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:2px}
.ms-hd h3{margin:0;font-size:17px}
.ms-x{border:none;background:transparent;font-size:17px;color:var(--muted);cursor:pointer;padding:2px 4px}
.ms-row{margin-top:14px}
.ms-lab{font-size:12.5px;font-weight:700;color:#8b8b8b;margin-bottom:7px}
.ms-chips{display:flex;gap:7px;flex-wrap:wrap}
.ms-chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 14px;
  font-size:14px;font-family:inherit;color:var(--text);cursor:pointer}
.ms-chip.on{border-color:var(--focus);background:var(--focus-soft);color:var(--focus);font-weight:600}
.ms-foot{display:flex;gap:8px;margin-top:18px}
.ms-reset{flex:0 0 auto;border:none;background:#f4f3f0;color:#5c5c5a;border-radius:12px;
  padding:12px 16px;font-size:15px;font-family:inherit;cursor:pointer}
.ms-ok{flex:1 1 auto;border:none;background:var(--focus);color:#fff;border-radius:12px;
  padding:12px 16px;font-size:15.5px;font-weight:700;font-family:inherit;cursor:pointer}

/* 快速开始：底部面板（参考专注悬浮窗的样子） */
.qs-tiles{display:flex;gap:10px;margin:14px 0 4px}
.qs-tile{flex:1 1 0;min-width:0;text-align:left;border:1.6px solid var(--line);background:#fff;
  border-radius:15px;padding:12px;font-family:inherit;cursor:pointer}
.qs-tile.on{border-color:var(--focus);background:var(--focus-soft)}
.qs-tile .qi{font-size:19px;line-height:1}
.qs-tile .qt{font-size:15px;font-weight:700;margin-top:6px;color:var(--text)}
.qs-tile .qd{font-size:12.5px;color:var(--muted);margin-top:3px;line-height:1.4}
.qs-hd2{display:flex;align-items:center;justify-content:space-between;margin:16px 0 7px}
.qs-hd2 b{font-size:12.5px;color:#8b8b8b}
.qs-cur{font-size:12.5px;color:var(--focus);font-weight:600;max-width:60%;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.qs-search{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:11px;
  padding:9px 12px;font-size:15px;font-family:inherit;margin-bottom:8px}
.qs-pick{max-height:32vh;overflow:auto;display:flex;flex-direction:column;gap:6px}
.qs-go{width:100%;margin-top:16px;padding:13px;border:none;border-radius:13px;background:var(--focus);
  color:#fff;font-size:16px;font-weight:700;font-family:inherit;cursor:pointer}
.qs-go:disabled{background:#dcd9d4}
.qs-none{font-size:13.5px;color:var(--muted);padding:10px 2px}
/* ★ 2026-10-12（反馈 #208⑥）：快速开始的「事项」输入框 ＋ 联想下拉（专注清单/待办/工作日志/计划） */
.qs-sug{display:flex;flex-direction:column;gap:2px;margin:0 0 8px;max-height:34vh;overflow:auto;
  border:1px solid var(--line);border-radius:11px;background:#fff;padding:4px}
.qs-sg{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;
  text-align:left;border:none;background:transparent;border-radius:8px;padding:8px 9px;
  font-family:inherit;font-size:14.5px;color:var(--ink);cursor:pointer}
.qs-sg:active{background:var(--brand-soft)}
.qs-sgt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qs-sgs{flex:0 0 auto;font-size:11.5px;color:#a9a6a1}
/* 搜索没有匹配时列表里的提示 */
.tk-nomatch{font-size:13.5px;color:var(--muted);padding:14px 2px;text-align:center;list-style:none}

/* ============================================================================
   2026-10-10 反馈 #126：账号管理页「邀请注册链接」后面的复制按钮
   ============================================================================ */
.copy-mini{display:inline-block;margin-left:8px;padding:3px 11px;font-size:12.5px;
  border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--focus);
  cursor:pointer;font-family:inherit;vertical-align:middle;line-height:1.5}
.copy-mini:active{background:#f2f7f4}

/* ============================================================================
   记账 / 应收应付（R55，2026-10-10 反馈 #126）
   她挑的方案 C：白底概览卡只留一个大数字 ＋ 一行小字 ＋ 一行一条的紧凑列表
   删除＝左滑露出「编辑 / 删除」＋ 可撤销
   ============================================================================ */
.mg-top{position:sticky;top:0;z-index:6;background:var(--bg);display:flex;align-items:center;
  padding:6px 14px 4px;margin:0 -14px}
.mg-title{font-size:16px;font-weight:700}
.mg-seg{display:flex;gap:6px;margin:4px 0 10px}
.mg-seg-a{flex:1 1 0;text-align:center;padding:8px 0;border:1px solid var(--line);border-radius:10px;
  background:#fff;color:var(--text);font-size:14.5px;font-weight:600;text-decoration:none;position:relative}
.mg-seg-a.on{border-color:var(--focus);color:var(--focus);background:var(--focus-soft)}
.mg-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#e05252;
  margin-left:5px;vertical-align:middle}
.mg-dot[hidden]{display:none!important}

.mg-ov{padding:14px 16px}
.mg-ov-lb{font-size:12.5px;color:var(--muted)}
.mg-ov-n{font-size:30px;font-weight:800;letter-spacing:-.5px;margin-top:2px}
.mg-ov-sub{font-size:12.5px;color:var(--muted);margin-top:6px}

.mg-mhead{display:flex;align-items:center;justify-content:center;gap:12px}
.mg-mbtn{border:none;background:transparent;font-size:20px;color:#6d6b66;cursor:pointer;padding:0 10px}
.mg-mbtn:disabled{opacity:.28}
.mg-list{list-style:none;margin:0;padding:0}
.mg-ghead{display:flex;align-items:center;gap:8px;padding:11px 2px 6px;font-size:12.5px;
  color:var(--muted);border-bottom:1px solid var(--line)}
.mg-ghead b{font-size:13px;color:var(--text)}
.mg-sum{margin-left:auto;display:flex;gap:10px}
.mg-sum i{font-style:normal;color:#2f8f5b}
.mg-sum u{text-decoration:none;color:#c0392b}

.mg-row{list-style:none;border-bottom:1px solid var(--line)}
.mg-row:last-child{border-bottom:none}
.mg-swipe{position:relative;overflow:hidden}
.mg-body{display:flex;align-items:center;gap:10px;padding:11px 2px;background:#fff;
  transition:transform .18s ease;position:relative;z-index:1}
.mg-row.open .mg-body{transform:translateX(-132px)}
.mg-ico{width:34px;height:34px;flex:0 0 auto;border-radius:10px;background:var(--focus-soft);
  display:flex;align-items:center;justify-content:center;font-size:17px}
.mg-mid{flex:1 1 auto;min-width:0}
.mg-t{font-size:14.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mg-note{font-weight:400;color:var(--muted)}
.mg-s{font-size:12px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mg-amt{font-size:15.5px;font-weight:700;white-space:nowrap}
.mg-amt.expense,.mg-amt.pay{color:#c0392b}
.mg-amt.income,.mg-amt.recv{color:#2f8f5b}
.mg-more{border:none;background:transparent;color:#c9c7c2;font-size:17px;padding:0 2px 0 6px;cursor:pointer}
.mg-ops{position:absolute;right:0;top:0;bottom:0;display:flex}
.mg-ops button{border:none;width:66px;font-size:14px;font-family:inherit;cursor:pointer;
  background:#eef0f2;color:#444}
.mg-ops button.danger{background:#e8615c;color:#fff}
.mg-drow.isdone .mg-t,.mg-drow.isdone .mg-amt{opacity:.55}
.mg-tag{display:inline-block;margin-left:6px;font-size:11px;font-weight:600;padding:1px 6px;
  border-radius:999px;border:1px solid var(--line);color:var(--muted);vertical-align:middle}
.mg-tag.recv{color:#2f8f5b;border-color:#bfe3cd;background:#eefaf2}
.mg-tag.pay{color:#c0392b;border-color:#f0c9c6;background:#fdf1f0}
.mg-undo{position:fixed;left:12px;right:12px;bottom:calc(82px + env(safe-area-inset-bottom));z-index:70;
  display:flex;align-items:center;gap:10px;background:#32302c;color:#fff;border-radius:12px;
  padding:11px 14px;font-size:14px;box-shadow:0 8px 22px rgba(0,0,0,.22)}
.mg-undo[hidden]{display:none!important}
.mg-undo button{margin-left:auto;border:none;background:transparent;color:#8ee0ae;font-size:14.5px;
  font-weight:700;font-family:inherit;cursor:pointer}

/* 录入页 */
.mn-seg{display:flex;gap:6px;margin-bottom:10px}
.mn-seg-b{flex:1 1 0;padding:9px 0;border:1px solid var(--line);border-radius:10px;background:#fff;
  font-family:inherit;font-size:15px;font-weight:600;color:var(--text);cursor:pointer}
.mn-seg-b.on{border-color:var(--focus);background:var(--focus-soft);color:var(--focus)}
.mn-edit{display:block;margin-top:8px;font-size:12.5px;color:var(--muted)}
.mn-amount{display:flex;align-items:baseline;gap:10px;background:#fff;border:1px solid var(--line);
  border-radius:14px;padding:12px 14px}
.mn-k{font-size:12.5px;color:var(--muted)}
.mn-n{font-size:30px;font-weight:800;margin-left:auto;letter-spacing:-.5px}
.mn-n.neg{color:#c0392b}
.mn-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0}
.mn-c{border:1px solid var(--line);background:#fff;border-radius:12px;padding:9px 2px;cursor:pointer;
  font-family:inherit;display:flex;flex-direction:column;align-items:center;gap:4px}
.mn-c span{font-size:18px;line-height:1}
.mn-c i{font-style:normal;font-size:11.5px;color:var(--text)}
.mn-c.on{border-color:var(--focus);background:var(--focus-soft)}
.mn-fields{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.mn-field{width:100%;display:flex;align-items:center;gap:10px;border:none;background:transparent;
  padding:12px 14px;font-family:inherit;font-size:14.5px;border-bottom:1px solid var(--line);
  cursor:pointer;text-align:left}
.mn-field:last-child{border-bottom:none}
.mn-field .k{color:var(--muted);font-size:13.5px;flex:0 0 auto}
.mn-field .v{margin-left:auto;color:#b3b0ab;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:62%}
.mn-field .v.on{color:var(--text)}
.mn-kb{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:12px 0 6px}
.mn-kb button{border:none;background:#fff;border-radius:10px;height:46px;font-size:19px;font-weight:700;
  font-family:inherit;cursor:pointer;box-shadow:0 1px 0 rgba(0,0,0,.05)}
.mn-kb button.fn{background:#eef0f2;font-size:16px;color:#555}
.mn-kb button.ok{background:var(--focus);color:#fff;font-size:15.5px}
.mn-kb button.again{background:#e8f5ee;color:var(--focus);font-size:14px}
.mn-tip{font-size:12px;color:var(--muted);text-align:center;margin:2px 0 20px}
/* 反馈 #406：录入页「选了银行卡」的小提示 */
.mn-banktip{margin-top:8px;padding:9px 12px;border-radius:11px;background:var(--focus-soft);
  color:var(--focus);font-size:12.5px;line-height:1.5}
.mn-banktip b{font-weight:700}

/* ★ 反馈 #408：记账录入页按「一木记账」重排 —— 一屏放下（顶栏 / 分类 / 账户备注日期一行 / 数字键盘） */
.mn2{display:flex;flex-direction:column;min-height:calc(100vh - 84px);min-height:calc(100dvh - 92px);padding:0 10px 2px}
.mn2-top{display:flex;align-items:center;gap:8px;padding:8px 2px 6px}
.mn2-seg{display:flex;gap:4px;flex:0 0 auto}
.mn2-sb{border:1px solid var(--line);background:#fff;border-radius:9px;padding:6px 10px;
  font-size:14px;font-family:inherit;color:var(--muted);cursor:pointer}
.mn2-sb.on{border-color:var(--focus);background:var(--focus-soft);color:var(--focus);font-weight:700}
.mn2-num{flex:1 1 auto;min-width:0;max-width:116px;margin-left:auto;text-align:right;border:none;background:transparent;
  font-size:21px;font-weight:800;letter-spacing:-.5px;color:var(--text);font-family:inherit;padding:2px 0}
.mn2-num:focus{outline:none}
.mn2-save{flex:0 0 auto;border:none;background:var(--focus);color:#fff;border-radius:10px;
  padding:8px 14px;font-size:14.5px;font-weight:700;font-family:inherit;cursor:pointer}
.mn2-edit{font-size:12.5px;color:var(--muted);padding:0 2px 6px}
.mn2-body{flex:1 1 auto;min-height:0}
.mn-cats{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin:2px 0 8px}
.mn2 .mn-c{padding:7px 1px;border-radius:10px}
.mn2 .mn-c span{font-size:17px}
.mn2 .mn-c i{font-size:11px;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.mn-c.dragging{opacity:.55;border-style:dashed;border-color:var(--focus);transform:scale(.96)}
.mn-more span{color:var(--muted);font-weight:700}
.mn2-fields{display:flex;gap:6px;margin:0 0 8px}
.mn2-f{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:1px;
  border:1px solid var(--line);background:#fff;border-radius:10px;padding:6px 8px;font-family:inherit;cursor:pointer}
.mn2-f .k{font-size:10.5px;color:var(--muted);line-height:1.2}
.mn2-f .v{font-size:13px;color:#b3b0ab;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;line-height:1.3}
.mn2-f .v.on{color:var(--text)}
.mn2-keys{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-top:auto;padding:2px 0 calc(2px + env(safe-area-inset-bottom))}
.mn2-keys button{height:42px;border:1px solid var(--line);background:#fff;border-radius:11px;
  font-size:19px;font-weight:600;font-family:inherit;cursor:pointer}
/* ★ #410②：矮屏（手机浏览器工具条占地方时）再压一格，保证 12 个数字键整体在底栏之上 */
@media (max-height:740px){.mn2-keys button{height:38px;font-size:18px}}
.mn2-keys button:active{background:var(--focus-soft)}
.mn2-keys button.fn{font-size:17px;color:var(--muted)}

/* 弹层里的小控件（记账在用） */
.sh-input{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:11px;
  padding:10px 12px;font-size:15px;font-family:inherit;margin-top:6px}
.sh-chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 13px;
  font-size:13.5px;font-family:inherit;color:var(--text);cursor:pointer;margin:0 6px 6px 0}
.sh-chip.on{border-color:var(--focus);background:var(--focus-soft);color:var(--focus);font-weight:600}

/* 记账统计页（R56）—— 纯 CSS 横条，不引图表库 */
.mg-bud{display:flex;align-items:center;gap:8px;margin-top:10px;padding-top:10px;
  border-top:1px solid var(--line)}
.mg-bud-lb{font-size:12.5px;color:var(--muted)}
.mg-bud-btn{border:1px solid var(--line);background:#fff;border-radius:999px;padding:3px 11px;
  font-size:12.5px;font-family:inherit;color:var(--focus);cursor:pointer}
.mg-bud-left{margin-left:auto;font-size:12.5px;color:#2f8f5b;font-weight:600}
.mg-bud-left.over{color:#c0392b}
.st-crow{padding:9px 2px;border-bottom:1px solid var(--line)}
.st-crow:last-child{border-bottom:none}
.st-ctop{display:flex;align-items:center;gap:8px;font-size:14px}
.st-cic{font-size:16px}
.st-cnm{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.st-cn{font-size:12px;color:var(--muted)}
.st-camt{margin-left:auto;font-size:14.5px;font-weight:700;color:#c0392b;white-space:nowrap}
.st-cbar{height:7px;background:#f0efec;border-radius:999px;margin-top:6px;overflow:hidden}
.st-cbar i{display:block;height:100%;background:var(--focus);border-radius:999px;opacity:.75}


/* ============================================================================
   右栏标签页（2026-10-10 反馈 #133⑤）—— 同时开很多条笔记
   单击中栏＝当前标签里打开；右键＝在新标签打开；双击＝独立窗口（印象笔记）
   ============================================================================ */
.nk-tabs{flex:0 0 auto;display:flex;align-items:center;gap:5px;overflow-x:auto;overflow-y:hidden;
  padding:7px 8px 0;background:#fbfaf8;scrollbar-width:thin}
.nk-tabs[hidden]{display:none!important}
.nk-tab{display:flex;align-items:center;gap:5px;flex:0 0 auto;max-width:200px;
  border:1px solid var(--line);border-bottom:none;background:#f2f1ee;border-radius:8px 8px 0 0;
  padding:5px 7px 5px 9px;font-size:12.5px;color:#6d6b66;cursor:pointer;white-space:nowrap}
.nk-tab:hover{background:#fff}
.nk-tab.on{background:#fff;color:var(--text);font-weight:600;box-shadow:0 -2px 0 var(--focus) inset}
.nk-tab .tt{overflow:hidden;text-overflow:ellipsis;max-width:150px}
.nk-tab .x{border:none;background:transparent;color:#c2c0bb;font-size:13px;line-height:1;
  padding:0 1px;cursor:pointer;font-family:inherit}
.nk-tab .x:hover{color:#c0392b}
/* 中栏右键菜单 */
.nk-ctxmenu{position:fixed;z-index:90;background:#fff;border:1px solid var(--line);border-radius:10px;
  box-shadow:0 8px 22px rgba(0,0,0,.16);padding:4px;min-width:156px}
.nk-ctxmenu[hidden]{display:none!important}
.nk-ctxmenu button{display:block;width:100%;text-align:left;border:none;background:transparent;
  padding:8px 10px;font-size:13.5px;font-family:inherit;cursor:pointer;border-radius:7px;color:var(--text)}
.nk-ctxmenu button:hover{background:var(--focus-soft)}

/* 右键「在新窗口打开」的小菜单（反馈 #138③，全站通用，见 static/ctxwin.js） */
.ctxwin{position:fixed;z-index:95;background:#fff;border:1px solid var(--line);border-radius:10px;
  box-shadow:0 8px 22px rgba(0,0,0,.16);padding:4px;min-width:150px}
.ctxwin[hidden]{display:none!important}
.ctxwin button{display:block;width:100%;text-align:left;border:none;background:transparent;
  padding:8px 10px;font-size:13.5px;font-family:inherit;cursor:pointer;border-radius:7px;color:var(--text)}
.ctxwin button:hover{background:var(--focus-soft)}

/* 使用记录页里的账号操作按钮（反馈 #127） */
.us-ops{display:flex;gap:8px;margin-top:7px}
.us-ops button{border:1px solid var(--line);background:#fff;border-radius:9px;padding:5px 11px;
  font-size:12.5px;font-family:inherit;color:var(--text);cursor:pointer}
.us-ops button:first-child{color:var(--focus);border-color:var(--focus-soft)}
.us-ops button:active{background:#f4f3f0}

/* ================= 2026-10-10 反馈 #154 / #155 ================= */
/* ① 到点提醒横幅：多提醒「竖着铺开」＋「全部忽略」＋每条自己的 ✕（她要求点进去看过再回来还在） */
.remind-banner .rb-head{display:flex;align-items:center;gap:8px;padding:0 2px 8px;
  border-bottom:1px solid var(--line);margin-bottom:2px}
.remind-banner .rb-head b{font-size:13px;color:var(--text);flex:1;min-width:0;text-align:left}
.remind-banner .rb-all{border:1px solid var(--line);background:#fff;border-radius:8px;
  padding:4px 9px;font-size:12px;font-family:inherit;color:var(--muted);cursor:pointer;flex:0 0 auto}
.remind-banner .rb-all:hover{color:#c0392b;border-color:#f0d3d0;background:#fdecea}
.remind-banner .rb-row{position:relative}
.remind-banner .rb-x{position:absolute;right:2px;top:6px;width:24px;height:24px;border:none;
  background:transparent;color:#c3c1bd;font-size:13px;line-height:1;cursor:pointer;border-radius:6px}
.remind-banner .rb-x:hover{background:#f2f1ee;color:#c0392b}
/* ② 提醒时间选择器（底部弹层：日期快捷 + 时/分滚轮 + 快捷方式） */
.modal.rm-sheet{max-width:420px;max-height:88vh;overflow-y:auto;text-align:center;
  padding:16px 16px calc(16px + env(safe-area-inset-bottom))}
.modal.rm-sheet h3{margin:0 0 10px}
.rm-days{display:flex;gap:8px;justify-content:center;margin-bottom:12px}
.rm-day{flex:0 0 auto;border:1px solid var(--line);background:#fff;border-radius:10px;
  padding:7px 16px;font-size:14px;font-family:inherit;color:var(--text);cursor:pointer}
.rm-day.on{border-color:var(--focus);color:var(--focus);background:var(--focus-soft);font-weight:600}
.rm-clock{display:flex;align-items:center;justify-content:center;gap:6px;margin:2px 0 12px}
.rm-clock select{font-size:26px;font-family:inherit;padding:8px 10px;border:1px solid var(--line);
  border-radius:12px;background:#fff;color:var(--text);font-variant-numeric:tabular-nums}
.rm-clock b{font-size:24px;color:var(--muted)}
.rm-quick{display:flex;flex-wrap:wrap;gap:7px;justify-content:center;margin-bottom:10px}
.rm-q{border:1px solid var(--line);background:#fff;border-radius:9px;padding:6px 11px;
  font-size:13px;font-family:inherit;color:var(--text);cursor:pointer}
.rm-q:hover{border-color:var(--focus);color:var(--focus)}
.rm-q.plus{color:var(--focus);border-color:var(--focus-soft);background:var(--focus-soft)}
.rm-note{font-size:13.5px;color:var(--focus);background:var(--focus-soft);border-radius:10px;
  padding:8px 10px;margin-bottom:6px}
/* ③ 事项表单里的「时间」：时/分两个滚轮 select（原来 type=time 在她浏览器里是键盘输入样式） */
.tf-wheel{display:inline-flex;align-items:center;gap:3px}
.tf-wheel select{font-size:14px;font-family:inherit;padding:5px 4px;border:1px solid var(--line);
  border-radius:9px;background:#fff;color:var(--text);font-variant-numeric:tabular-nums}
.tf-wheel b{color:var(--muted);font-size:13px}

/* ===== 使用记录 · 某账号的页面浏览（反馈 #158①，2026-10-10）=====
   外面只给「账号情况」：每条账号右边一个「今天浏览 N 次 ›」；点进去才看每一次。 */
.us-go{cursor:pointer}
.us-pv-n{flex:0 0 auto;font-size:12px;color:var(--muted);white-space:nowrap;padding-left:8px}
.us-pv-n b{color:var(--focus);font-size:14px;font-variant-numeric:tabular-nums}
.us-days{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 12px;-webkit-overflow-scrolling:touch}
.us-day{flex:0 0 auto;display:inline-flex;align-items:center;padding:5px 12px;border:1px solid var(--line);
  border-radius:999px;font-size:13px;color:var(--muted);background:#fff;text-decoration:none}
.us-day.on{background:var(--focus-soft);border-color:var(--focus);color:var(--focus);font-weight:600}
.us-day b{margin-left:5px;font-weight:600;font-variant-numeric:tabular-nums}
@media (max-width:560px){.us-pv-n{font-size:11px}.us-pv-n b{font-size:13px}}


/* ================================================================
   ★ 2026-10-10 反馈 #159：「过期提醒」横幅重做 ＋【今天】页「到期未处理」块
   ================================================================ */
/* ---- ① 横幅（原来文字被右边「查看 ›」压住、样式旧） ---- */
.remind-banner{position:fixed;left:10px;right:10px;top:calc(10px + env(safe-area-inset-top));
  z-index:60;display:none;background:#fff;border:1px solid var(--line);border-radius:14px;
  box-shadow:0 12px 30px rgba(0,0,0,.16);padding:0;max-height:52vh;overflow:hidden}
.remind-banner.show{display:block}
.remind-banner.rb-folded{max-height:none}
.remind-banner.rb-folded .rb-list{display:none}
.remind-banner .rb-head{display:flex;align-items:center;gap:8px;padding:9px 12px;
  background:#fff7f5;border-bottom:1px solid var(--line);cursor:pointer}
.remind-banner.rb-folded .rb-head{border-bottom:none}
.remind-banner .rb-ic{flex:0 0 auto;font-size:15px;line-height:1}
.remind-banner .rb-head b{flex:1 1 auto;min-width:0;text-align:left;font-size:13.5px;font-weight:600;
  color:#c0392b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.remind-banner .rb-n{flex:0 0 auto;font-size:11.5px;color:#c0392b;background:var(--focus-soft);
  border-radius:999px;padding:1px 7px;font-variant-numeric:tabular-nums}
.remind-banner .rb-all{flex:0 0 auto;border:1px solid var(--line);background:#fff;border-radius:8px;
  padding:3px 9px;font-size:12px;font-family:inherit;color:var(--muted);cursor:pointer;white-space:nowrap}
.remind-banner .rb-all:hover{color:#c0392b;border-color:#f0d3d0;background:#fdecea}
.remind-banner .rb-fold{flex:0 0 auto;width:24px;height:24px;border:none;background:transparent;
  color:var(--muted);font-size:12px;line-height:1;cursor:pointer;padding:0}
.remind-banner .rb-list{max-height:calc(52vh - 42px);overflow-y:auto;-webkit-overflow-scrolling:touch}
.remind-banner .rb-row{display:flex;align-items:center;gap:8px;padding:8px 12px;
  border-bottom:1px solid #f4f2ee;position:static;border-radius:0}
.remind-banner .rb-row:last-child{border-bottom:none}
.remind-banner .rb-row.rb-link:after{content:none}
.remind-banner .rb-tx{flex:1 1 auto;min-width:0}
.remind-banner .rb-row .rb-tx b{display:block;font-size:13.5px;font-weight:600;color:var(--text);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.remind-banner .rb-row .rb-tx span{display:block;font-size:12px;color:var(--muted);margin-top:1px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.remind-banner .rb-go{flex:0 0 auto;border:1px solid var(--focus-soft);background:var(--focus-soft);
  color:var(--focus);border-radius:8px;padding:4px 10px;font-size:12.5px;font-family:inherit;
  cursor:pointer;white-space:nowrap}
.remind-banner .rb-go:hover{background:#fbdcd8}
.remind-banner .rb-x{flex:0 0 auto;width:26px;height:26px;border:none;background:transparent;
  color:var(--muted);font-size:14px;line-height:1;cursor:pointer;border-radius:8px;padding:0;position:static}
.remind-banner .rb-x:hover{background:#f2f1ee;color:#c0392b}
@media (max-width:560px){.remind-banner{left:8px;right:8px;max-height:46vh}}
@media (max-width:560px){.remind-banner .rb-list{max-height:calc(46vh - 40px)}}

/* ---- ② 【今天】页「到期未处理」块（就地勾完成 / 改日期 / 改时间） ---- */
.od-card{border-left:3px solid var(--focus)}
.od-list{display:flex;flex-direction:column}
.od-row{padding:8px 2px;border-bottom:1px solid #f4f2ee}
.od-row:last-child{border-bottom:none}
.od-l1{display:flex;align-items:center;gap:8px}
.od-ck{flex:0 0 auto;width:24px;height:24px;border-radius:50%;border:1.5px solid var(--line);
  background:#fff;color:transparent;font-size:13px;line-height:1;cursor:pointer;padding:0}
.od-ck:hover{border-color:var(--ok,#2f8f5b);color:var(--ok,#2f8f5b)}
.od-t{flex:1 1 auto;min-width:0;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.od-late{flex:0 0 auto;font-size:11px;color:#c0392b;background:var(--focus-soft);
  border-radius:999px;padding:1px 7px;white-space:nowrap}
.od-l2{display:flex;align-items:center;gap:8px;margin:5px 0 0 32px}
.od-l2 input{font-family:inherit;font-size:13px;color:var(--text);background:#fff;
  border:1px solid var(--line);border-radius:8px;padding:3px 7px;font-variant-numeric:tabular-nums}
.od-l2 input:focus{outline:none;border-color:var(--focus);box-shadow:0 0 0 2px var(--focus-soft)}
.od-l2 .od-d{flex:1 1 auto;min-width:0}
.od-l2 .od-h{flex:0 0 auto;width:104px}
@media (max-width:560px){.od-l2{margin-left:0}}

/* 反馈 #159：右栏就地编辑的正文区改成 contenteditable（照片直接显示在正文里） */
.nk-edit-body{white-space:pre-wrap;word-break:break-word;outline:none}
.nk-edit-body:focus{outline:none}
.nk-edit-body .nk-ed-img{display:block;max-width:100%;margin:6px 0;border-radius:8px;
  border:1px solid var(--line);cursor:zoom-in}

/* ─────────────────────────────────────────────────────────────
   ★ 反馈 #161③④⑤（2026-10-10）：笔记中栏 —— 列头点击排序 / 右键勾选显示哪几列 / 新增「回复」列
   · 列的开关走 #nk-c2 上的 hide-t1 / hide-t3 / hide-t4 / hide-t5（表头和行一起藏）
   · 宽度走 --t1w / --t3w / --t4w / --t5w（JS 写，拖分隔条时改的就是它）
   · 排序方向用 .nk-th.act::after 读 data-ar（▼ / ▲），不额外塞 DOM
   ───────────────────────────────────────────────────────────── */
.nk-thead .t4,.nk-row .t4{width:var(--t4w,54px);flex:0 0 auto;text-align:right}
.nk-thead .t5,.nk-row .t5{width:var(--t5w,62px);flex:0 0 auto;text-align:right}
.nk-row .t4,.nk-row .t5{color:var(--muted);font-size:11px}
.nk-c2.hide-t1 .t1,.nk-c2.hide-t3 .t3,.nk-c2.hide-t4 .t4,.nk-c2.hide-t5 .t5{display:none}

.nk-th{cursor:pointer;user-select:none;white-space:nowrap;overflow:hidden}
.nk-th:hover{color:#6b7076}
.nk-th.act{color:var(--text);font-weight:600}
.nk-th.act::after{content:attr(data-ar);margin-left:2px;font-size:9.5px;color:var(--focus)}

/* 「回复」列：反馈这条我回过没有 */
.nk-row .rp{font-style:normal;font-size:10.5px;white-space:nowrap}
.nk-row .rp.ok{color:var(--focus)}
.nk-row .rp.no{color:#c9803a}

/* 右键列头弹出来的「显示哪几列」（照印象笔记那套勾选） */
.nk-colmenu{position:fixed;z-index:34;background:#fff;border-radius:10px;
  box-shadow:0 6px 20px rgba(0,0,0,.16);padding:5px;min-width:148px}
.nk-colmenu[hidden]{display:none}
.nk-colmenu .cm-t{padding:6px 10px 4px;font-size:11.5px;color:var(--muted)}
.nk-colmenu button{display:flex;align-items:center;gap:6px;width:100%;text-align:left;border:none;
  background:transparent;padding:7px 10px;font-size:13px;border-radius:7px;cursor:pointer;
  font-family:inherit;color:var(--text)}
.nk-colmenu button:hover{background:#f4f3f1}
.nk-colmenu button.off{color:#b6babf;cursor:default;background:transparent}
.nk-colmenu .bx{width:13px;display:inline-block;color:var(--focus);font-size:12px;text-align:center}
.nk-colmenu .cm-hint{padding:5px 10px 3px;font-size:10.5px;color:#b6babf;border-top:1px solid var(--line);
  margin-top:4px}


/* ================= 2026-10-10 反馈 #165①：过期提醒横幅「最窄的一行一条」 =================
   她的原话：「这个弹出来的页面，标题都显示不全，我的建议：你就用最窄的一行一行的放，
   把【查看】放到这行的最右侧，左边顶格开始显示标题，不用显示全，因为用户可以点进去查看。」
   ⇒ 一行一条：标题（左顶格、放不下截断）＋ ✕ ＋ 最右【查看】；第二行那行日期不占位了。 */
/* ★ 2026-10-10 反馈 #165①：必须显式写 flex-direction:row —— 上面 #154/#159 那两版把
   .rb-row 留在 flex-direction:column（每条竖着堆成 3 行、高 99px），看着就是「标题显示不全」。 */
.remind-banner .rb-row{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;flex-wrap:nowrap;padding:7px 10px;gap:6px}
.remind-banner .rb-row .rb-tx{flex:1 1 auto;min-width:0}
.remind-banner .rb-row .rb-tx b{font-size:13.5px;font-weight:600;color:var(--text)}
.remind-banner .rb-row .rb-tx span{display:none}      /* 日期不占位（鼠标停在上面能看全） */
.remind-banner .rb-go{padding:4px 12px;font-size:12.5px}
.remind-banner .rb-x{color:#c9c6c1}


/* ================= 需求进度表（2026-10-10 反馈 #162 / #164）=================
   类名一律 rq- 前缀（R42 血案：别用 .sh/.overlay 这种通用短名）。
   电脑＝宽表、手机＝卡片（reqs.js 按屏宽切换）；顶栏吸顶、能压多小压多小。 */
.rq{padding:0 0 92px}
.rq-top{position:sticky;top:0;z-index:30;background:#fff;display:flex;gap:8px;align-items:center;padding:8px 10px}
.rq-swrap{flex:1 1 auto;min-width:0}
#rq-q{width:100%;border:1px solid var(--line);border-radius:9px;padding:7px 10px;font:inherit;
  font-size:15px;background:#f7f8f7;color:var(--text)}
.rq-ico{flex:0 0 auto;width:34px;height:34px;border:none;background:transparent;font-size:19px;
  color:#5b6470;cursor:pointer;padding:0}
.rq-panel{position:sticky;top:50px;z-index:29;background:#fff;border-bottom:1px solid var(--line);
  padding:4px 10px 10px;scroll-margin-top:56px}
.rq-prow{display:flex;gap:8px;align-items:flex-start;padding:5px 0}
.rq-pk{flex:0 0 34px;font-size:13px;color:var(--muted);padding-top:4px;text-align:left}
.rq-chips{display:flex;flex-wrap:wrap;gap:6px;flex:1 1 auto;min-width:0}
.rq-chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:4px 11px;
  font-size:13px;font-family:inherit;color:#4b5563;cursor:pointer}
.rq-chip.on{background:#e8f6ef;border-color:#2e9e6b;color:#1c7d54;font-weight:600}
.rq-note{font-size:12.5px;color:var(--muted);padding-top:4px}
/* ---- 电脑：一屏 6 列的宽表 ---- */
.rq-tab{width:100%;border-collapse:collapse;background:#fff;font-size:14px;table-layout:fixed}
.rq-tab th{background:#f4f5f3;color:#5b6470;font-weight:600;text-align:left;padding:7px 8px;
  font-size:12.5px;white-space:nowrap}
.rq-tab td{padding:8px;border-top:1px solid #f0f1f3;vertical-align:top;color:var(--text);
  overflow-wrap:anywhere}
.rq-tab .c1{width:90px;white-space:nowrap;color:var(--muted);font-size:12.5px}
.rq-tab .c2{width:104px;white-space:nowrap}
.rq-tab .c3{width:auto}
.rq-tab .c4{width:76px;white-space:nowrap}
.rq-tab .c5{width:230px}
.rq-tab .c6{width:66px;white-space:nowrap;color:var(--muted);font-size:12.5px}
.rq-tr{cursor:pointer}
.rq-tr:hover td{background:#fafbfa}
.rq-d{display:block;color:var(--muted);font-size:12.5px;margin-top:2px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
/* ---- 手机：一行一张卡 ---- */
.rq-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;
  margin:8px 10px;cursor:pointer}
.rq-c1{display:flex;gap:8px;align-items:flex-start}
.rq-c1 b{flex:1 1 auto;min-width:0;font-size:15px;line-height:1.4;font-weight:600}
.rq-c2{font-size:12.5px;color:var(--muted);margin-top:3px}
.rq-c3{font-size:13px;color:#1c7d54;margin-top:4px}
.rq-c4{font-size:13px;color:var(--muted);margin-top:3px;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden}
.rq-st{flex:0 0 auto;border-radius:6px;padding:2px 8px;font-size:12px;font-weight:600;white-space:nowrap}
.rq-st.todo{background:#eef2ff;color:#4f46e5}
.rq-st.doing{background:#fff7e6;color:#b45309}
.rq-st.done{background:#e8f6ef;color:#1c7d54}
.rq-st.hold{background:#f3f4f6;color:#6b7280}
.rq-hit{display:inline-block;margin-top:4px;font-size:11.5px;color:#7c5c11;background:#fff8e6;
  border-radius:6px;padding:1px 7px}
.rq-empty{text-align:center;color:var(--muted);font-size:13.5px;padding:36px 0}
.rq-fab{position:fixed;right:16px;bottom:calc(66px + env(safe-area-inset-bottom));width:52px;height:52px;
  border:none;border-radius:50%;background:#2e9e6b;color:#fff;font-size:26px;line-height:52px;
  text-align:center;cursor:pointer;box-shadow:0 6px 16px rgba(0,0,0,.22);z-index:40;padding:0;
  touch-action:none;user-select:none;-webkit-user-select:none}
/* ★ 反馈 #174②：她能把这个「＋」拖着换地方（挡住哪一行就挪开），位置记在这台浏览器里；
   拖过之后用 left/top 定位，双击回到默认位置。 */
.rq-fab-moved{right:auto;bottom:auto;opacity:.94}
.rq-fab-drag{cursor:grabbing;transform:scale(1.06)}
/* ★ 反馈 #167/#169：应收应付表格页 —— 合计条（跟着筛选走）+ 面板里的两列一行 + 信用卡列表 */
.mgd-sum{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;padding:8px 12px;
  background:#f6faf8;border-bottom:1px solid var(--line);font-size:12.5px;color:#4b5563}
.mgd-sum b{font-size:13.5px;color:#1c7d54;font-variant-numeric:tabular-nums}
.mgd-sum .mgd-s1 b{color:#2f5fa8}
.mgd-sum .mgd-s2 b{color:#c0392b}
.mgd-sum .mgd-s0{color:#111;font-weight:600}
.mgd-sum .mgd-s0 b{color:#111}
.mgd-sum .mgd-s0 b.mgd-neg{color:#c0392b}
.mgd-sum .mgd-s3{color:#a35a12}
.mgd-sum .mgd-s3 b,.mgd-sum .mgd-s4 b{color:#a35a12}
.mgd-sum .mgd-s4{color:#6b7280}
/* ★ 反馈 #236（2026-10-19）：电脑端返回键 + 勾选统计 + 结清按钮 + 列头筛选小三角 */
.mgd-top{display:none}
@media (min-width:900px){
  .mgd-top{display:block;padding:6px 2px 2px}
  .mgd-back{border:1px solid var(--line);background:#fff;border-radius:9px;padding:5px 12px;
    font:inherit;font-size:13px;color:#4b5563;cursor:pointer}
  .mgd-back:hover{background:#f7f7f5}
}
.mgd-sum .mgd-sel{color:#1c7d54;font-weight:600}
.mgd-sum .mgd-sel b{color:#1c7d54}
.ut-fd{font-style:normal;font-size:10px;color:#9aa3ab;cursor:pointer;padding:0 2px;margin-left:2px;border-radius:4px}
.ut-fd:hover{background:#eef2f0;color:#2e9e6b}
.ut-fd.on{color:#2e9e6b}
.mgd-donebtn{background:#1c7d54}
.mgd-donebtn:hover{background:#166a45}
/* ★ 反馈 #406（2026-10-26）：汇总条的金额都能点开「明细详情页」；银行卡账单单独一块 */
.mgd-sum a{color:inherit;text-decoration:none;border-radius:6px;padding:1px 4px;margin:-1px -2px}
.mgd-sum a:hover{background:#e8f3ec}
.mgd-sum a:active{background:#d8ebe1}
.mgd-sum .mgd-s6{color:#7a5a12;font-weight:600;background:#fdf6e3;border-radius:6px;padding:1px 6px}
.mgd-sum .mgd-s5{color:#111;background:#fff6e5;border:1px solid #f3e0b8;border-radius:999px;
  padding:2px 9px;font-size:12px;white-space:nowrap}
.mgd-sum .mgd-s5 b{color:#a35a12}
.mgd-sum .mgd-s5 i{font-style:normal;color:#9a8b6b;font-size:11px;margin-left:3px}
/* 明细详情页（/money/detail） */
.md-head{padding:2px 2px 8px}
.md-head h2{font-size:17px;margin:0 0 3px}
.md-sub{font-size:12px;color:#6b7280;line-height:1.5}
.md-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 10px}
.md-chips{display:flex;flex-wrap:wrap;gap:6px}
.md-c{border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 11px;font:inherit;
  font-size:12.5px;color:#374151;cursor:pointer}
.md-c i{font-style:normal;color:#1c7d54;font-variant-numeric:tabular-nums;margin-left:3px}
.md-c.on{background:#1c7d54;border-color:#1c7d54;color:#fff}
.md-c.on i{color:#d7f0e2}
.md-range{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12.5px;color:#6b7280}
.md-r{border:1px solid var(--line);background:#fff;border-radius:8px;padding:4px 9px;font:inherit;
  font-size:12.5px;color:#4b5563;cursor:pointer}
.md-r.on{background:#eaf5ef;border-color:#9ecdb4;color:#1c7d54;font-weight:600}
.md-d{display:flex;gap:4px;align-items:center}
.md-d input{font:inherit;font-size:12.5px;border:1px solid var(--line);border-radius:7px;padding:3px 5px;background:#fff}
.md-card{padding:0;overflow:hidden}
.md-sum{display:flex;flex-wrap:wrap;gap:6px 14px;padding:9px 12px;background:#f6faf8;
  border-bottom:1px solid var(--line);font-size:12.5px;color:#4b5563}
.md-sum b{font-size:13.5px;font-variant-numeric:tabular-nums}
.md-sum .pos{color:#1c7d54}
.md-sum .neg{color:#c0392b}
.md-wrap{overflow:auto;max-height:calc(100vh - 320px)}
.md-tab{width:100%;border-collapse:collapse;font-size:13px}
.md-tab th{position:sticky;top:0;background:#fbfcfb;border-bottom:1px solid var(--line);text-align:left;
  font-weight:600;color:#4b5563;padding:8px 10px;white-space:nowrap;font-size:12.5px;z-index:1}
.md-tab td{border-bottom:1px solid #f0f2f0;padding:8px 10px;color:#1f2937}
.md-tab .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.md-tab .neg{color:#c0392b}
.md-tab .pos{color:#1c7d54}
.md-tab tbody tr:hover{background:#fafcfb;cursor:pointer}
.md-tab .md-note,.md-tab .md-cat{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.md-tab tfoot td{border-top:2px solid #e5e9e6;background:#fbfcfb;font-weight:600;padding:9px 10px}
.md-tag{font-size:11px;color:#6b7280;background:#f1f3f2;border-radius:4px;padding:1px 5px}
.md-empty{text-align:center;color:#9aa3ab;padding:26px 10px;font-size:13px}
.md-cards{padding:6px 12px 12px}
.md-list{list-style:none;margin:0;padding:0}
.md-li{border-bottom:1px solid #f1f3f2;padding:9px 0}
.md-li .md-l1{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:15px}
.md-li .md-l1 b{font-variant-numeric:tabular-nums}
.md-li .md-l1 span{font-size:12px;color:#8b939b}
.md-li .md-l2{font-size:12.5px;color:#6b7280;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.md-li .neg{color:#c0392b}
.md-li .pos{color:#1c7d54}
.md-mfoot{display:flex;flex-wrap:wrap;gap:6px 14px;padding:10px 2px 0;font-size:13px;
  color:#4b5563;border-top:2px solid #e5e9e6;margin-top:6px}
.md-mfoot b{font-variant-numeric:tabular-nums}
@media (min-width:900px){.md-cards{display:none!important}}
@media (max-width:899px){.md-wrap{display:none!important}}
/* 记账首页：本月银行卡账单一行（反馈 #406） */
.mg-bank{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;padding:10px 12px;margin-top:10px;
  text-decoration:none;color:#374151;font-size:12.5px;border:1px solid #f3e0b8;background:#fffaf0}
.mg-bank .mg-bank-k{font-weight:600;color:#7a5a12}
.mg-bank .mg-bank-c{background:#fff;border:1px solid #f0e2c4;border-radius:999px;padding:2px 9px;white-space:nowrap}
.mg-bank .mg-bank-c b{color:#a35a12;font-variant-numeric:tabular-nums}
.mg-bank .mg-bank-all{margin-left:auto;color:#1c7d54;font-weight:600;white-space:nowrap}
/* 应收应付 · 统计页（#236） */
.mgd-statbtn{margin-left:8px}
.mgs-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:2px 2px 8px}
.mgs-sum{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:#6b7280}
.mgs-sum b{font-size:15px;font-variant-numeric:tabular-nums;margin-left:4px}
.mgs-sum .pos{color:#1c7d54}
.mgs-sum .neg{color:#c0392b}
.mgs-year{font-size:12.5px;color:#6b7280;margin-left:auto;display:flex;align-items:center;gap:6px}
.mgs-tools{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-left:auto}
.mgs-tools .mgs-year{margin-left:8px}
.mgs-sortlab{font-size:12.5px;color:#9aa0a6}
.mgs-sort{font:inherit;font-size:12.5px;padding:4px 10px;border:1px solid var(--line);background:#fff;
  border-radius:999px;color:#555;cursor:pointer}
.mgs-sort.on{background:#eaf6ef;border-color:#1c7d54;color:#1c7d54;font-weight:600}
.mgs-year select{font:inherit;font-size:13.5px;padding:3px 8px;border:1px solid var(--line);
  border-radius:8px;background:#fff;color:var(--text)}
.mgs-card .card-head{display:flex;align-items:center;gap:8px}
.mgs-note{font-size:11.5px;color:#9aa3ab}
.mgs-wrap{overflow-x:auto;display:block}
/* ★ 2026-10-19 反馈 #243：列宽按内容（字数）撑开，不再 width:100% 拉满整页 ——
   金额列只留够放下「-45,850.00」的宽度，事项列按多数文字长度定宽（特别长的省略号+悬停看全），
   整张表靠左显示。 */
.mgs-tab{width:max-content;border-collapse:collapse;font-size:13.5px}
.mgs-tab .num{white-space:nowrap}
.mgs-tab .mgs-it{max-width:320px;overflow:hidden;text-overflow:ellipsis}
.mgs-tab th,.mgs-tab td{padding:7px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.mgs-tab th{font-size:12px;color:#6b7280;font-weight:600;background:#fafaf8;position:sticky;top:0}
.mgs-tab .num{text-align:right;font-variant-numeric:tabular-nums}
.mgs-tab tbody tr:hover td{background:#f8fbf9}
.mgs-tab .mgs-empty td{color:#b9b9b4}
.mgs-tab .mgs-it{max-width:320px;overflow:hidden;text-overflow:ellipsis}
.mgs-tab tr.mgs-total td{font-weight:700;background:#f3f8f5;border-top:2px solid #d9e8df}
.mgs-zero{color:#c9c9c4}
@media (max-width:640px){
  .mgs-tab th,.mgs-tab td{padding:6px 7px;font-size:12.5px}
  .mgs-sum{font-size:12px;gap:10px}
}
/* 交叉表（Excel 样式）：首列（事项）固定，横向可滑 */
.mgs-cross{font-size:12.5px;min-width:0;width:max-content}
.mgs-cross th,.mgs-cross td{padding:6px 8px}
.mgs-cross .mgs-it{position:sticky;left:0;background:#fff;max-width:230px;
  overflow:hidden;text-overflow:ellipsis;text-align:left;z-index:2}
.mgs-cross thead .mgs-it{background:#fafaf8;z-index:3}
.mgs-cross tbody tr:hover .mgs-it{background:#f8fbf9}
.mgs-cross td.neg{color:#c0392b}
.mgs-cross td.pos{color:#1f2328}
.mgs-cross .mgs-sumcol{font-weight:700;background:#fafaf8}
.mgs-cross tr.mgs-total .mgs-it{background:#f3f8f5}
.rq-row{display:flex;gap:8px}
.rq-row>div{flex:1 1 0;min-width:0}
.rq-row input{width:100%}
.rq-hint{font-size:11.5px;color:#8a8a8a;line-height:1.6;margin-top:4px}
.mgd-cc{display:flex;align-items:center;gap:8px;padding:9px 2px;border-bottom:1px solid var(--line)}
.mgd-cc-n{font-weight:600;font-size:14px}
.mgd-cc-d{flex:1 1 auto;font-size:12px;color:#6b7280}
.mgd-cc-a{display:flex;gap:6px}
.mgd-cc-a button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:3px 9px;
  font:inherit;font-size:12px;color:#4b5563;cursor:pointer}
.mgd-cc-a button:hover{background:#eef4f1;border-color:#bcd9cb;color:#1c7d54}
/* ---- 底部弹面板（新增 / 修改）---- */
.rq-mask{position:fixed;inset:0;background:rgba(0,0,0,.34);z-index:60}
.rq-sheet{position:fixed;left:8px;right:8px;bottom:10px;z-index:61;background:#fff;border-radius:20px;
  max-height:86vh;display:flex;flex-direction:column;overflow:hidden}
.rq-shead{display:flex;align-items:center;gap:8px;padding:12px 14px 6px}
.rq-shead b{flex:1 1 auto;font-size:15px;text-align:left}
.rq-shead button{border:none;background:transparent;font-size:16px;color:var(--muted);cursor:pointer}
.rq-sbody{overflow-y:auto;padding:0 14px 6px}
.rq-f{margin:10px 0}
.rq-f label{display:block;font-size:12.5px;color:var(--muted);margin-bottom:5px;text-align:left}
.rq-f input,.rq-f textarea{width:100%;border:1px solid var(--line);border-radius:10px;padding:8px 10px;
  font:inherit;font-size:14.5px;background:#fafbfa;color:var(--text)}
.rq-sfoot{display:flex;gap:8px;padding:8px 14px calc(12px + env(safe-area-inset-bottom))}
.rq-ok{flex:1 1 auto;border:none;background:#2e9e6b;color:#fff;border-radius:11px;padding:11px;
  font:inherit;font-size:15px;font-weight:600;cursor:pointer}
.rq-del{flex:0 0 auto;border:1px solid #f0d3d0;background:#fdecea;color:#c0392b;border-radius:11px;
  padding:11px 14px;font:inherit;font-size:14px;cursor:pointer}
/* 面板底部的次要按钮（📄 笔记 / 复制）：中性色，别跟「删除」抢注意力 */
.rq-del.rq-ghost{border-color:var(--line);background:#fff;color:#4b5563}
.rq-del.rq-ghost:active{background:#eef4f1;border-color:#bcd9cb}
/* 手机卡片右上角要给铅笔留出位置（.ut-pen 是绝对定位） */
.ut-card .rq-card{padding-right:42px}
/* ★ 写了 display 的组件必须补 [hidden]（R42 遮罩事故的规矩） */
.rq-mask[hidden],.rq-sheet[hidden],.rq-panel[hidden]{display:none !important}

/* ---------------- 白噪音（2026-10-10 反馈 #167） ---------------- */
.fx-mini.on{color:#ffd9a0;border-color:rgba(255,217,160,.75);background:rgba(255,255,255,.14)}
#fx-noise.on{font-weight:700}
.nz-mask{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.45);display:none;
  align-items:flex-end;justify-content:center}
.nz-mask.open{display:flex}
.nz-sheet{width:100%;max-width:520px;background:#fff;color:#2b2b2b;border-radius:18px 18px 0 0;
  padding:14px 16px calc(16px + env(safe-area-inset-bottom));box-shadow:0 -8px 30px rgba(0,0,0,.25);
  max-height:82vh;overflow:auto}
.nz-top{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.nz-top b{font-size:16px}
.nz-now{flex:1 1 auto;font-size:12.5px;color:#8a8a8a;text-align:right}
.nz-x{flex:0 0 auto;border:none;background:transparent;font-size:18px;color:#9a9a9a;line-height:1;padding:2px 4px;cursor:pointer}
.nz-g{font-size:12.5px;color:#9a9a9a;margin:12px 0 7px}
.nz-row{display:flex;flex-wrap:wrap;gap:8px}
.nz-i{flex:0 0 auto;border:1px solid #e6e4e0;background:#faf9f7;color:#3c3c3c;border-radius:12px;
  padding:9px 13px;font:inherit;font-size:14px;display:inline-flex;align-items:center;gap:6px;cursor:pointer}
.nz-i .nz-e{font-size:15px;line-height:1}
.nz-i.on{border-color:#c86a4e;background:#fdefe9;color:#a34a3d;font-weight:600}
.nz-vol{display:flex;align-items:center;gap:10px;margin-top:16px}
.nz-vol span{font-size:13px;color:#8a8a8a;flex:0 0 auto}
.nz-range{flex:1 1 auto;min-width:0;accent-color:#c86a4e}
.nz-stop{flex:0 0 auto;border:1px solid #f0d3d0;background:#fdecea;color:#c0392b;border-radius:11px;
  padding:8px 14px;font:inherit;font-size:13.5px;cursor:pointer}
.nz-tip{margin-top:12px;font-size:12px;color:#a3a09b;line-height:1.6}

/* ================= 通用表格组件 UTable（2026-10-10 反馈 #169《表格页面整改与通用设计规范》）
   ★ 以后所有列表/表格页都复用这一套（utasble.js）；类名一律 ut- 前缀（R42 血案：别用通用短名）。
   配色全部走 :root 变量（规范 4.4 不许硬编码颜色）；这里只定义表格自己的派生变量，
   将来全站上暗色主题时，只改这几个变量即可，不必动组件。 */
.ut{
  --ut-head:#f4f5f3; --ut-headtx:#5b6470; --ut-line:#f0f1f3; --ut-hover:#f7f9f8; --ut-sel:#e9f5ee;
  --ut-zh:#fff6c9; --ut-rowh:44px; --ut-cellpad:8px;
  position:relative; text-align:left; font-size:13.5px;
}
.ut[data-utden="c"]{--ut-rowh:30px;--ut-cellpad:4px}
.ut[data-utden="std"]{--ut-rowh:42px;--ut-cellpad:8px}
.ut[data-utden="l"]{--ut-rowh:56px;--ut-cellpad:12px}

/* ---- ① 工具栏（吸顶）---- */
.ut-bar{position:sticky;top:0;z-index:30;background:#fff;display:flex;gap:6px;align-items:center;
  padding:8px 10px;border-bottom:1px solid var(--ut-line)}
.ut-swrap{flex:1 1 auto;min-width:0;position:relative;display:flex;align-items:center}
/* ★ 反馈 #338②：搜索 + 新增两个框并排（各占一半），别一个长条吃掉整条工具栏 */
.ut-bar .ut-swrap.ut-half{flex:1 1 0;min-width:0}
/* ★ #465①（2026-10-28）：电脑端两个框给固定尺寸，别铺满整条工具栏（她：太宽浪费空间、太长也没必要）
   搜索框 200×32、新增框 240×32、两框间距 6px ⇒ 左侧合计 446px；手机端仍各占一半铺满 */
@media (min-width:521px){
  .ut-bar .ut-swrap.ut-half{flex:0 0 200px;max-width:200px}
  .ut-bar .ut-awrap.ut-half{flex:0 0 240px;max-width:240px}
  .ut-bar .ut-q,.ut-bar .ut-aq{height:32px;padding-top:0;padding-bottom:0;font-size:13.5px}
}
@media (max-width:520px){
  .ut-bar .ut-swrap.ut-half{flex:1 1 0}
  .ut-bar .ut-half .ut-q,.ut-bar .ut-half .ut-aq{font-size:13.5px;padding-left:8px;padding-right:8px}
}
.ut-q{width:100%;border:1px solid var(--line);border-radius:9px;padding:7px 28px 7px 10px;font:inherit;
  font-size:14.5px;background:#f7f8f7;color:var(--text)}
.ut-q::-webkit-search-cancel-button{display:none}
/* ★ #313③ 新增输入框（事项库：这个框不再搜索，回车直接新增） */
.ut-aq{width:100%;border:1px solid var(--line);border-radius:9px;padding:7px 10px;font:inherit;
  font-size:14.5px;background:#fff;color:var(--text);outline:none}
.ut-aq::placeholder{color:#9aa3a0}
.ut-aq:focus{border-color:#2e9e6b;box-shadow:0 0 0 3px rgba(46,158,107,.12);background:#fff}
.ut-clear{position:absolute;right:4px;top:50%;transform:translateY(-50%);border:none;background:transparent;
  font-size:13px;color:var(--muted);cursor:pointer;padding:4px 6px;line-height:1}
.ut-clear[hidden]{display:none}
.ut-btn{flex:0 0 auto;border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 10px;
  font:inherit;font-size:13.5px;color:#4b5563;cursor:pointer;display:inline-flex;align-items:center;gap:3px}
.ut-btn:hover{background:#f7f8f7}
.ut-fn{font-style:normal;background:#2e9e6b;color:#fff;border-radius:8px;font-size:11px;
  padding:0 5px;line-height:16px;min-width:16px;text-align:center}
.ut-fn[hidden]{display:none}

/* ---- ② 已选筛选条件条 ---- */
.ut-conds{position:sticky;top:47px;z-index:29;background:#fff;display:flex;flex-wrap:wrap;gap:6px;
  align-items:center;padding:6px 10px;border-bottom:1px solid var(--ut-line)}
.ut-conds[hidden]{display:none}
.ut-chip{display:inline-flex;align-items:center;gap:5px;background:#eef4f1;color:#276e52;border-radius:999px;
  padding:3px 9px;font-size:12.5px;cursor:pointer}
.ut-chip .ut-x{font-style:normal;font-size:11px;opacity:.7}
.ut-clr-all{border:none;background:transparent;color:var(--muted);font:inherit;font-size:12.5px;
  cursor:pointer;text-decoration:underline;padding:3px 2px}

/* ---- 弹出面板（筛选 / 列配置 / 密度）---- */
.ut-pop{position:absolute;z-index:40;left:8px;right:8px;top:46px;background:#fff;border:1px solid var(--line);
  border-radius:12px;box-shadow:0 8px 26px rgba(0,0,0,.14);padding:10px 12px;max-height:64vh;overflow:auto}
.ut-pop[hidden]{display:none}
.ut-pop-hd{display:flex;align-items:center;justify-content:space-between;font-size:13px;color:var(--muted);
  margin-bottom:8px}
.ut-pop-hd .ut-x{font-style:normal;cursor:pointer;font-size:13px}
.ut-pop-row{display:flex;gap:8px;align-items:flex-start;padding:5px 0}
/* ★ 反馈 #489③（2026-10-28）：字段名一律单行，宽度按内容、最小 44px —— 原来写死 44px，
   4 个字的「完成情况」被挤成两行（她：「明明可以有空间为什么要显示成2行」）。 */
.ut-pop-k{flex:0 0 auto;min-width:44px;white-space:nowrap;font-size:12.5px;color:var(--muted);padding-top:5px}
.ut-pop-c{display:flex;flex-wrap:wrap;gap:6px;flex:1 1 auto;min-width:0}
.ut-pop-c input[type=date]{border:1px solid var(--line);border-radius:8px;padding:5px 7px;font:inherit;
  font-size:12.5px;background:#fafbfa;color:var(--text)}
.ut-fc{border:1px solid var(--line);background:#fff;border-radius:999px;padding:4px 11px;font:inherit;
  font-size:12.5px;color:#4b5563;cursor:pointer}
.ut-fc.on{background:#e8f6ef;border-color:#2e9e6b;color:#1c7d54;font-weight:600}
.ut-pop-ft{display:flex;justify-content:flex-end;padding-top:8px}
.ut-pop-ok{border:none;background:#2e9e6b;color:#fff;border-radius:9px;padding:7px 18px;font:inherit;
  font-size:13.5px;font-weight:600;cursor:pointer}
.ut-col-list{display:flex;flex-direction:column;gap:2px}
.ut-col-i{display:flex;align-items:center;gap:8px;padding:6px 4px;font-size:13.5px;border-radius:8px;cursor:pointer}
.ut-col-i:hover{background:#f7f8f7}
.ut-col-i input{accent-color:#2e9e6b}
.ut-col-g{color:#c9c7c2;font-size:11px;cursor:grab}
.ut-col-lk{font-style:normal;font-size:11px;color:var(--muted);margin-left:auto}
.ut-col-i.ut-dragging{opacity:.45;background:#eef4f1}

/* ---- ④ 表格主体（可滚动区；横向滚动时第一列固定）---- */
.ut-scroll{overflow:auto;background:#fff;-webkit-overflow-scrolling:touch}
.ut-tab{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%}
.ut-tab th{position:sticky;top:0;z-index:12;background:var(--ut-head);color:var(--ut-headtx);
  font-weight:600;text-align:left;font-size:12.5px;padding:8px var(--ut-cellpad);white-space:nowrap;
  border-bottom:1px solid var(--line);user-select:none}
.ut-tab th.is-stuck,.ut-tab thead.is-stuck th{box-shadow:0 4px 10px -6px rgba(0,0,0,.28)}
.ut-tab th.ut-sticky{position:sticky;left:0;z-index:14}
.ut-tab thead.is-stuck th.ut-sticky,.ut-tab th.ut-sticky{z-index:15}
.ut-tab th .ut-th-l{cursor:pointer;display:inline-flex;align-items:center;gap:3px}
.ut-tab th .ut-si{font-style:normal;font-size:10px;color:#b9c0c7}
.ut-tab th .ut-si.on{color:#2e9e6b}
.ut-tab th.ut-num .ut-th-l{justify-content:flex-end;width:100%}
/* ★ 反馈 #174①：grip 必须**完全留在自己这一列里面**。原来 right:-3px，右边 3px 伸到下一列，
   被下一列 th（也是 position:sticky、z-index:12）盖住 → module / status 等列的抓手经常点不中、拖不动。
   现在 right:0（整条都在本列内），并把提示线画在贴着右边缘处。 */
.ut-grip{position:absolute;top:0;right:0;width:9px;height:100%;cursor:col-resize;z-index:2}
.ut-tab th{position:sticky}
.ut-grip::after{content:"";position:absolute;top:4px;bottom:4px;right:0;width:2px;background:transparent}
.ut-tab th:hover .ut-grip::after{background:#d6ddd9}
.ut-grip:hover::after,.ut-grip:active::after{background:#2e9e6b}
body.ut-colres,body.ut-colres *{cursor:col-resize !important;user-select:none !important}
.ut-tab td{padding:var(--ut-cellpad);border-bottom:1px solid var(--ut-line);vertical-align:middle;
  color:var(--text);font-size:13.5px;height:var(--ut-rowh)}
.ut-tab td.ut-sticky{position:sticky;left:0;background:#fff;z-index:11}
.ut-tr{cursor:pointer}
.ut-tr:hover > td{background:var(--ut-hover)}
.ut-tr.is-sel > td{background:var(--ut-sel)}
/* ★ 反馈 #236（2026-10-19）：列表勾选框（应收应付用）；勾中的行淡绿底 */
.ut-tab.ut-has-sel th.ut-selh,.ut-tab.ut-has-sel td.ut-seld{position:sticky;left:0;width:34px;min-width:34px;
  text-align:center;background:#fff;z-index:12;padding-left:6px;padding-right:2px}
.ut-tab.ut-has-sel th.ut-selh{background:var(--ut-head);z-index:16}
.ut-tab.ut-has-sel th.ut-sticky,.ut-tab.ut-has-sel td.ut-sticky{left:34px}
.ut-rowck{width:16px;height:16px;accent-color:#2e9e6b;cursor:pointer;margin:0}
.ut-tr.is-ck > td{background:#eef8f2}
.ut-tr.is-ck > td.ut-sticky,.ut-tr.is-ck > td.ut-actd{background:#eef8f2}
.ut-card.is-ck{box-shadow:0 0 0 1.5px #2e9e6b inset;background:#f5fbf8}
.ut-card{position:relative}
.ut-card .ut-cardck{position:absolute;top:10px;right:10px;z-index:3}
.mgd-neg{color:#c0392b}
/* 长文本：一律单行省略 + 悬停 Tooltip，保证每行高度一致 */
.ut-c{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.ut-c.ut-wrap{white-space:normal;overflow-wrap:anywhere}
/* ★ 需求 #109（2026-10-20）：组件级统一「主体列单行」——
   type:"html"/"tag"/"date" 这些格子不走 .ut-c（没有省略号包装），原来会按内容换行、把行高撑开。
   现在整格默认 nowrap，想换行的那一列自己声明 ellipsis:0（.ut-c.ut-wrap 已覆盖回 normal）。 */
.ut-tab td{white-space:nowrap}
.ut-tab td .ut-c.ut-wrap{white-space:normal}
.ut-num,.ut-tab td.ut-num{text-align:right;font-variant-numeric:tabular-nums}
.ut-tab th.ut-acth,.ut-tab td.ut-actd{width:96px;text-align:right;white-space:nowrap;
  position:sticky;right:0;background:#fff;z-index:11}
.ut-tab th.ut-acth{background:var(--ut-head);z-index:16}
.ut-tr:hover > td.ut-actd{background:var(--ut-hover)}
.ut-tr.is-sel > td.ut-actd{background:var(--ut-sel)}
.ut-ab{border:1px solid var(--line);background:#fff;border-radius:8px;padding:3px 9px;font:inherit;
  font-size:12.5px;color:#4b5563;cursor:pointer;margin-left:4px;opacity:0;transition:opacity .12s}
.ut-ab.ut-ab-more{opacity:.55}
.ut-tr:hover .ut-ab,.ut-tr.is-sel .ut-ab{opacity:1}
.ut-ab:hover{background:#eef4f1;border-color:#bcd9cb;color:#1c7d54}
/* ★ 2026-10-10 反馈 #172⑧：铅笔固定在操作列、**一直显示**（不用悬停才浮出来）；
   操作列固定在最右侧，横向滚动时它不跟着跑，左侧加一道淡影跟正文分开。 */
.ut-ab.ut-ab-pin{opacity:1}
.ut-ab.ut-ab-ico{padding:2px 6px;font-size:14px;line-height:1.35}
.ut-tab th.ut-acth,.ut-tab td.ut-actd{box-shadow:-7px 0 8px -8px rgba(0,0,0,.28)}
/* 手机卡片上的 ✏️（data-op）——右上角，不抢卡片的正文 */
.ut-pen{position:absolute;top:6px;right:8px;border:1px solid var(--line);background:#fff;
  border-radius:8px;padding:2px 7px;font-size:14px;line-height:1.35;cursor:pointer;color:#4b5563;
  box-shadow:0 1px 2px rgba(0,0,0,.05)}
.ut-pen:active{background:#eef4f1;border-color:#bcd9cb}
.ut-card{position:relative}
.ut-rmenu{position:fixed;z-index:90;background:#fff;border:1px solid var(--line);border-radius:11px;
  box-shadow:0 8px 26px rgba(0,0,0,.16);padding:5px;min-width:132px}
.ut-rm{display:block;width:100%;text-align:left;border:none;background:transparent;font:inherit;
  font-size:13.5px;padding:8px 10px;border-radius:8px;cursor:pointer;color:var(--text)}
.ut-rm:hover{background:#f2f6f4}

/* ---- 状态标签（规范 4.3：圆角胶囊，浅底深字，语义色全站统一）---- */
.ut-tag{display:inline-block;border-radius:6px;padding:2px 8px;font-size:12px;font-weight:600;white-space:nowrap}
.ut-tag.done,.ut-tag.ok{background:#e8f6ef;color:#1c7d54}
/* ★ 2026-10-10 两级确认：H＝Hermes 核过（中绿），L＝Lisa 验收过（深绿反白，一眼看出已终验） */
.ut-tag.hdone{background:#d6efe2;color:#14724b}
.ut-tag.ldone{background:#1c7d54;color:#fff}
.ut-tag.doing,.ut-tag.info{background:#eaf1fd;color:#2f5fa8}
.ut-tag.todo{background:#eef2ff;color:#4f46e5}
.ut-tag.warn{background:#fdf1e5;color:#a35a12}
.ut-tag.bad{background:#fdecea;color:#c0392b}
.ut-tag.hold,.ut-tag.mute{background:#f3f4f6;color:#6b7280}
mark.kw{background:var(--ut-zh);color:inherit;padding:0 1px;border-radius:3px}

/* ★ #377②（2026-10-25）：需求表「详细描述」＝分项展示，每条独立一行（单行截断，悬停看全文） */
.ut-dl{display:flex;flex-direction:column;gap:1px;max-height:200px;overflow:auto;padding:1px 0}
.ut-dli{display:flex;gap:5px;align-items:baseline;font-size:12.5px;line-height:1.45;color:#3f4f45}
.ut-dli>span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ut-dln{font-style:normal;font-size:10.5px;color:#9aa3ab;min-width:13px;text-align:right;flex:0 0 auto}
.ut-dim{color:#B9C2BC}

/* ---- 手机端：一行一张卡（沿用她定的口径：手机卡片、电脑宽表）---- */
.ut-cards{padding:8px 10px}
.ut-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:8px;
  cursor:pointer}
.ut-card.is-sel{border-color:#9fd0b8;background:var(--ut-sel)}

/* ---- ⑤ 底部信息栏 ---- */
.ut-foot{display:flex;align-items:center;gap:10px;padding:8px 10px;border-top:1px solid var(--ut-line);
  background:#fff;font-size:12.5px;color:var(--muted);flex-wrap:wrap}
.ut-total{flex:1 1 auto;min-width:0}
.ut-sel{border:1px solid var(--line);border-radius:8px;padding:3px 6px;font:inherit;font-size:12.5px;
  background:#fff;color:var(--muted)}
.ut-pager{display:inline-flex;align-items:center;gap:6px}
.ut-pg{border:1px solid var(--line);background:#fff;border-radius:8px;padding:2px 9px;font:inherit;
  font-size:13px;color:#4b5563;cursor:pointer}
.ut-pg:disabled{color:#c9c7c2;cursor:default}
.ut-pgn{font-variant-numeric:tabular-nums}

/* ---- 空状态 / 骨架屏 / 回到顶部 ---- */
.ut-empty{text-align:center;color:var(--muted);font-size:13.5px;padding:44px 16px}
.ut-ei{font-size:30px;margin-bottom:8px}
.ut-ebtn{margin-top:12px;border:none;background:#2e9e6b;color:#fff;border-radius:9px;padding:7px 16px;
  font:inherit;font-size:13.5px;cursor:pointer}
.ut-skel{padding:10px}
.ut-skel[hidden]{display:none}
.ut-srow{height:34px;border-radius:8px;margin-bottom:8px;
  background:linear-gradient(90deg,#f2f2f0 25%,#e9e9e6 37%,#f2f2f0 63%);background-size:400% 100%;
  animation:utShim 1.2s ease-in-out infinite}
@keyframes utShim{0%{background-position:100% 0}100%{background-position:0 0}}
.ut-top{position:fixed;right:16px;bottom:calc(78px + env(safe-area-inset-bottom));width:40px;height:40px;
  border-radius:50%;border:1px solid var(--line);background:#fff;color:#5b6470;font-size:16px;
  cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.14);z-index:35}
.ut-top[hidden]{display:none}

/* ================= ★ 反馈 #172①：过期提醒横幅不再盖住页面顶部 =================
   横幅 .remind-banner 是 position:fixed + z-index:60，会压在页面第一屏上：
   表格的「列宽拖拽手柄」正好在表头那一行，被它压着 → 鼠标拖列头没反应（2026-10-10 实测）。
   做法：横幅显示时由 remind.js 把它的高度写进 --rb-h、并给 body 加 .rb-open，
         整页往下让出这么多，吸顶条（top:0/47px/50px/52px）也一起下移。 */
body.rb-open{padding-top:var(--rb-h,0px)}
body.rb-open .topbar,body.rb-open .ut-bar,body.rb-open .rq-top,body.rb-open .nt-top,
body.rb-open .sc-top,body.rb-open .fb-dbar,body.rb-open .mg-top,body.rb-open .focus-top,
body.rb-open .cal-top,body.rb-open .nk-ibar,body.rb-open .fx-head,body.rb-open .ad-bar{
  top:var(--rb-h,0px)}
body.rb-open .ut-conds{top:calc(var(--rb-h,0px) + 47px)}
body.rb-open .rq-panel{top:calc(var(--rb-h,0px) + 50px)}
body.rb-open .ni-findbar{top:calc(var(--rb-h,0px) + 52px)}

/* ================= ★ 反馈 #206①：右下角「＋」都能拖着换地方（通用件 static/fab.js） =================
   她在需求页试过（#174②）之后要求全站都这样。拖过之后用 left/top 定位、双击回默认位置；
   类名统一 sg-fab-，和老的 rq-fab-* 共存（需求页/应收应付页那两处已改走这一份）。 */
.sg-fab-moved{right:auto !important;bottom:auto !important;opacity:.94}
.sg-fab-drag{cursor:grabbing;transform:scale(1.06)}

/* ================= ★ 需求 #86：【今天】页「到期未处理」可折叠（默认收起） ================= */
.od-head{cursor:pointer;-webkit-user-select:none;user-select:none}
.od-arrow{flex:0 0 auto;color:#b9b7b2;font-size:12px;transition:transform .18s;margin-left:2px}
.od-card.folded .od-arrow{transform:rotate(-90deg)}
.od-card.folded .od-list{display:none}

/* ================= ★ 需求 #89 A：笔记回收站 ================= */
.ntr-when{background:transparent;color:#b9b7b2;border:0;padding:1px 0}
#ntr-clear{color:#c0392b}
#ntr-clear[style*="none"]{display:none !important}

/* ================= ★ 需求 #89 B/C：每日回顾 ＋ 标签管理 ================= */
.ntr-title{font-size:15px;font-weight:600}
.tg-ops{display:flex;align-items:center;gap:8px;margin-top:8px}
.tg-del{color:#c0392b}
.tg-in{border:1px solid var(--line);border-radius:9px;padding:7px 10px;font-size:15px;width:100%}
.rv-top{flex-wrap:wrap;gap:6px 10px}
.rv-top span{display:flex;flex-wrap:wrap;gap:6px}

/* ================= ★ 需求 #88-B：待办「四象限」视图（/quad，2026-10-13） =================
   priority 1~4 的数据早就有，但只有「标签」没有「视图」—— 四类混在一条列表里看不出结构。 */
.qd-top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:8px;padding:6px 12px;border-bottom:0}
.qd-title{font-size:15px;font-weight:600}
.qd-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:10px 12px 0}
.qd-q{background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px 12px;min-height:92px}
.qd-h{border-left:3px solid #ddd;padding-left:8px;margin-bottom:2px}
.qd-ht{font-size:13.5px;font-weight:600}
.qd-list{list-style:none;margin:0;padding:0}
.qd-it{padding:6px 0}
.qd-it+.qd-it{border-top:1px dashed var(--line)}
.qd-a{display:flex;justify-content:space-between;align-items:baseline;gap:8px;text-decoration:none;color:inherit}
.qd-name{font-size:14px;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all}
.qd-due{font-size:11.5px;color:#b9b7b2;flex:0 0 auto}
.qd-due.late{color:#c0392b}
.qd-none{font-size:12.5px;color:#c9c7c3;padding:6px 0 2px}
.qd-rest{margin:10px 12px 0;background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px 12px}
.qd-rest[hidden]{display:none !important}
.qd-rest.folded .qd-list{display:none}
.qd-rh{display:flex;justify-content:space-between;align-items:center;font-size:13.5px;font-weight:600;cursor:pointer}
.qd-arrow{color:#b9b7b2;font-size:12px}
@media (max-width:600px){.qd-grid{grid-template-columns:1fr;gap:8px}}

/* ================= ★ 需求 #88-C：子任务（列表里缩进一行 + 右栏「子任务」区块，2026-10-13） ================= */
li.tk.is-sub{margin-left:26px}
li.tk.is-sub .tk-t{font-size:14px;font-weight:400;color:#5f5d59}
li.tk.is-sub .drag-handle{display:none}
.tk-subn{display:inline-block;font-size:11.5px;line-height:16px;color:#8a8880;background:#f2f1ee;
  border-radius:8px;padding:0 6px;margin-left:6px}
.tk-subn.all{color:#3fa66b;background:#e8f5ee}
.dp-subs{margin-top:10px}
.dp-subh{font-size:12.5px;color:#8a8880;margin-bottom:4px}
.dp-subh i{font-style:normal;color:#3fa66b;margin-left:4px}
.dp-subl{list-style:none;margin:0 0 6px;padding:0}
.dp-subl li{display:flex;align-items:center;gap:8px;padding:5px 0}
.dp-subl li+li{border-top:1px dashed var(--line)}
.dp-subring{flex:0 0 auto;width:20px;height:20px;border-radius:50%;border:1.5px solid #d8d6d1;
  background:#fff;color:#fff;font-size:12px;line-height:1;padding:0;cursor:pointer}
.dp-subring.on{background:#3fa66b;border-color:#3fa66b}
.dp-subt{flex:1 1 auto;font-size:14px;line-height:1.4;word-break:break-all}
.dp-subl li.on .dp-subt{color:#a9a7a2;text-decoration:line-through}
.dp-subx{flex:0 0 auto;border:0;background:transparent;color:#c9c7c3;font-size:13px;padding:2px 4px;cursor:pointer}
.dp-subin{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:10px;
  padding:8px 10px;font-size:14px}
.dp-subin:focus{outline:none;border-color:#3fa66b}

/* ===== 🔤 图片文字识别（需求 #89，2026-10-13）=====
   笔记详情里每张照片下面显示认出来的字（可复制）；没认过的给一个「识别」按钮。
   照片是左对齐单张小图，这里跟着照片块居中、字号小一档，不抢正文。 */
.md-ocr{margin:6px 0 12px;max-width:64%}
.md-ocr-hd{display:flex;align-items:center;gap:8px;font-size:12px;color:#8a8880;margin-bottom:3px}
.md-ocr-cp{margin-left:auto;border:1px solid var(--line);background:#fff;color:#5b5a55;
  font-size:11.5px;line-height:1;padding:4px 8px;border-radius:8px;cursor:pointer}
.md-ocr-cp:active{background:#f2f1ee}
.md-ocr-tx{font-size:13px;line-height:1.55;color:#5b5a55;white-space:pre-wrap;word-break:break-word;
  background:#f7f6f3;border:1px solid var(--line);border-radius:8px;padding:7px 9px}
.md-ocr-btn{border:1px dashed var(--line);background:#fff;color:#6b6a65;font-size:12.5px;
  padding:5px 10px;border-radius:8px;cursor:pointer}
.md-ocr-btn:disabled{opacity:.6;cursor:default}
@media (max-width:860px){ .md-ocr{max-width:100%} }

/* ---------------- 🔗 只读分享（需求 #89，2026-10-13）---------------- */
/* 详情页 ⋮「🔗 分享」面板里显示链接的那一行（长链接自己折行，别撑破面板） */
.ni-share-row{margin:8px 0 2px;padding:9px 11px;background:#f6f7f9;border:1px solid var(--line);
  border-radius:9px;font-size:12.5px;line-height:1.5;color:#4a4a4a;
  word-break:break-all;user-select:all;-webkit-user-select:all}
/* 公开的只读分享页 /s/<token>（不挂底部导航，所以底部留白小一点） */
.sh-page{background:var(--bg,#f5f5f3)}
.sh-hd{font-size:12.5px;color:#9aa0a6;padding:6px 2px 10px;text-align:center}
.sh-card{margin-bottom:18px}
.sh-foot{font-size:12px;color:#b3b1ac;text-align:center;padding:2px 0 26px}
.sh-gone{text-align:center;padding:34px 18px 40px}
.sh-gone-p{font-size:14px;color:#8a8a8a;margin:6px 0 0}

/* ★ #240（2026-10-19）：待办的右栏只留「日期时间」，其它设置收进 ⋮ 菜单 */
.dp-bar{position:relative}
.dp-morebtn{width:34px;height:34px;flex:0 0 auto;border:1px solid var(--line);background:#fff;border-radius:10px;
  font-size:18px;line-height:1;color:#5b6b62;cursor:pointer}
.dp-more{position:absolute;right:0;top:44px;z-index:6;background:#fff;border:1px solid var(--line);
  border-radius:14px;box-shadow:0 12px 30px rgba(0,0,0,.14);padding:8px;display:flex;flex-direction:column;
  gap:6px;min-width:170px}
.dp-more[hidden]{display:none !important}
.dp-more .dp-chip{width:100%;justify-content:flex-start}
/* ★ #240：待办里的番茄弹层 —— 照专注页「快速开始」的方块，文字图标都居中 */
.ts-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:16px 14px 8px}
.ts-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  border:1.6px solid var(--line);background:#fff;border-radius:16px;padding:16px 8px;cursor:pointer;
  font-family:inherit;transition:border-color .15s,background .15s}
.ts-tile:active,.ts-tile.on{border-color:var(--focus);background:var(--focus-soft)}
.ts-tile .ti{font-size:26px;line-height:1}
.ts-tile .tt{font-size:16px;font-weight:700;color:var(--text);text-align:center}
.ts-tile .td{font-size:12px;color:var(--muted);text-align:center}
.ts-tip{padding:2px 16px 16px;text-align:center;font-size:12.5px;color:#9aa3ab;line-height:1.6}

/* ===================== 工作台（反馈 #236 / #255，2026-10-19） =====================
   三个 Tab：今日双轨 / 本周泳道＋甘特 / 汇报驾驶舱。
   她定的：顶栏固定且尽量小、图标不带外框、顶栏不要横线、底栏不动。 */
.wb-top{display:flex;align-items:center;gap:8px;position:sticky;top:0;z-index:20;
  background:#fff;padding:6px 10px;border-bottom:none;box-shadow:0 1px 0 rgba(0,0,0,.03)}
.wb-seg{flex:1 1 auto;display:flex;gap:4px;min-width:0}
.wb-sb{border:none;background:transparent;font-family:inherit;font-size:15px;color:#7d7d78;
  padding:6px 12px;border-radius:999px;cursor:pointer}
.wb-sb.on{background:var(--focus-soft);color:var(--focus);font-weight:700}
.wb-today-btn{flex:0 0 auto;border:none;background:#f4f3f0;color:#5c5c5a;font-family:inherit;
  font-size:13px;padding:6px 12px;border-radius:999px;cursor:pointer}
.wb-main{padding:8px 12px calc(18px + env(safe-area-inset-bottom));max-width:960px;margin:0 auto}
.wb-line{font-size:13px;color:#6d6d68;padding:6px 2px 10px;line-height:1.9}
.wb-line b{color:var(--text);font-variant-numeric:tabular-nums}
.wb-line b.neg,.neg{color:#d9534f}
.wb-two{display:flex;gap:10px;align-items:flex-start}
.wb-col{flex:1 1 0;min-width:0}
@media (max-width:720px){.wb-two{display:block}.wb-col+.wb-col{margin-top:10px}}
.wb-ch{display:flex;align-items:center;justify-content:space-between;gap:8px;
  font-size:12.5px;font-weight:700;color:#8a8a86;margin:0 0 4px}
.wb-ch b{color:var(--text);font-size:14px}
.wb-chnote{font-weight:400;color:#a9a9a4;font-size:11.5px}
.wb-row{display:flex;align-items:baseline;gap:8px;padding:8px 2px;text-decoration:none;color:inherit;
  border-bottom:1px solid #f3f2ef;min-width:0}
.wb-row:last-child{border-bottom:none}
.wb-tm{flex:0 0 76px;font-size:11.5px;color:#9a9a95;font-variant-numeric:tabular-nums}
.wb-tt{flex:1 1 auto;min-width:0;font-size:14.5px;line-height:1.45;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.wb-tt.done{color:#a9a9a4;text-decoration:line-through}
.wb-sub{display:block;font-style:normal;font-size:11.5px;color:#a9a9a4;margin-top:2px}
.wb-du{flex:0 0 auto;font-size:12.5px;color:#6d6d68;font-variant-numeric:tabular-nums}
.wb-st{flex:0 0 auto;font-size:11px;padding:1px 6px;border-radius:6px;background:#f2f1ee;color:#8a8a86}
.wb-st.ok{background:#e8f5ec;color:#3fa66b}
.wb-st.late{background:#fdecea;color:#d9534f}
.wb-foot{padding:12px 2px 0;font-size:11.5px;color:#b0b0aa;text-align:center}
/* 项目泳道 */
.wb-lanes{padding-bottom:6px}
.wb-lanescroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.wb-lane{display:grid;grid-template-columns:96px repeat(7,minmax(30px,1fr));align-items:center;gap:2px;
  padding:3px 0;min-width:320px}
.wb-lane-hd .wb-ld{font-size:11px;color:#a0a09b}
.wb-ln{font-size:12.5px;color:#5c5c5a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:4px}
.wb-lc{font-style:normal;font-size:10.5px;color:#b0b0aa;margin-left:4px}
.wb-ld{display:flex;align-items:center;justify-content:center;min-height:26px}
.wb-ld.on{background:#fbfaf8;border-radius:8px}
.wb-dot{font-style:normal;font-size:11px;padding:1px 6px;border-radius:7px;
  background:var(--focus-soft);color:var(--focus)}
.wb-dot.all{background:#e8f5ec;color:#3fa66b}
/* 甘特 */
.wb-gday{margin-top:10px}
.wb-gdh{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:#8a8a86;
  font-weight:700;margin-bottom:2px}
.wb-gdh span{font-weight:400;color:#a9a9a4}
.wb-grow{display:flex;align-items:center;gap:8px;padding:3px 0}
.wb-gts{flex:0 0 44%;min-width:0;font-size:12.5px;color:#5c5c5a;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.wb-track{position:relative;flex:1 1 auto;height:10px;background:#f4f3f0;border-radius:5px;min-width:60px}
.wb-bar{position:absolute;top:0;height:10px;border-radius:5px;background:var(--focus);opacity:.85}
.wb-bar.ok{background:#3fa66b}
.wb-bar.none{background:#eceae6;color:#8a8a86;font-size:9px;line-height:10px;text-align:center;font-style:normal}
/* 汇报 */
.wb-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}
@media (max-width:720px){.wb-tiles{grid-template-columns:repeat(2,1fr)}}
.wb-tile{background:#fff;border-radius:14px;padding:12px;text-align:center;box-shadow:0 1px 3px rgba(0,0,0,.05)}
.wb-tile b{display:block;font-size:19px;color:var(--text);font-variant-numeric:tabular-nums}
.wb-tile span{display:block;font-size:11.5px;color:#9a9a95;margin-top:3px}
.wb-txt{white-space:pre-wrap;word-break:break-word;font-family:inherit;font-size:14px;
  line-height:1.75;margin:0;color:var(--text)}
.wb-copy{border:none;background:var(--focus-soft);color:var(--focus);font-family:inherit;
  font-size:12px;padding:3px 10px;border-radius:999px;cursor:pointer;font-weight:600}

/* ================= 工作台 v2（反馈 #267，2026-10-19 照 mock 稿重做） ================= */
.wk2-body{padding-left:0;padding-right:0;background:#F5F7F5}
.wk2{display:flex;align-items:flex-start;min-height:100vh;background:#F5F7F5;color:#1F2937}
.wk2-sb{width:200px;flex:0 0 200px;background:#1E3A32;color:#fff;padding:20px 14px;
  display:flex;flex-direction:column;gap:6px;position:sticky;top:0;height:100vh;z-index:20}
.wk2-logo{font-size:16px;font-weight:700;letter-spacing:.5px;margin:0 6px 18px}
.wk2-logo i{display:inline-block;width:8px;height:18px;background:#4ADE80;border-radius:3px;margin-right:8px;vertical-align:-2px}
.wk2-nav{display:flex;flex-direction:column;gap:4px}
.wk2-nav button{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:8px;font-size:13px;
  color:rgba(255,255,255,.72);background:none;border:0;text-align:left;cursor:pointer;font-family:inherit}
.wk2-nav button b{font-weight:400;font-size:13px}
.wk2-nav button.on{background:rgba(255,255,255,.1);color:#fff;font-weight:600;box-shadow:inset 3px 0 0 #4ADE80}
.wk2-nav button.on b{font-weight:600}
.wk2-foot{margin-top:auto;color:rgba(255,255,255,.45);font-size:11.5px;line-height:1.9;padding:0 8px}
.wk2-main{flex:1;min-width:0;padding:18px 22px 26px}
.wk2-top{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.wk2-title h1{font-size:21px;margin:0;font-weight:700}
.wk2-title p{margin:3px 0 0;font-size:12.5px;color:#8A948D}
/* ★ 2026-10-20 反馈 #283⑥：搜索框改小（原来撑到 460px，太占地方），日历上方加「全部/待办/事项库/重要日」筛选 */
.wk2-search{flex:0 1 220px;max-width:220px;margin-left:auto;background:#fff;border:1px solid #E7ECE8;border-radius:999px;
  padding:6px 12px;font-size:12px;color:#374151;outline:none;font-family:inherit}
.wk2-search:focus{border-color:#BBE3C9;box-shadow:0 0 0 3px rgba(22,163,74,.1)}
.wk2-who{display:flex;align-items:center;gap:8px;font-size:12px;color:#6B7280;flex:0 0 auto}
.wk2-av{width:30px;height:30px;border-radius:50%;background:#E8F5EE;color:#16A34A;display:flex;
  align-items:center;justify-content:center;font-weight:700;font-size:12px;overflow:hidden}
.wk2-card{background:#fff;border:1px solid #E7ECE8;border-radius:12px;padding:14px;box-shadow:0 1px 2px rgba(0,0,0,.03);margin-bottom:14px}
.wk2-stats{display:grid;grid-template-columns:repeat(4,1fr) 1.45fr;gap:12px;margin-bottom:14px}
.wk2-stats4{grid-template-columns:repeat(4,1fr)}
.wk2-stat{position:relative;overflow:hidden;margin:0}
.wk2-stat .k{font-size:12px;color:#6B7280}
.wk2-stat .n{font-size:28px;font-weight:700;margin:6px 0 2px;font-variant-numeric:tabular-nums;line-height:1.15}
.wk2-stat .s{font-size:11.5px;color:#8A948D}
.wk2-stat .ic{position:absolute;right:12px;top:12px;font-size:17px;opacity:.75;font-style:normal}
.wk2-stat.g{background:#E8F5EE}.wk2-stat.b{background:#E8F0FB}.wk2-stat.p{background:#F1EDFB}.wk2-stat.r{background:#FDEEEC}
.wk2-stat.g .n{color:#16A34A}.wk2-stat.b .n{color:#2F6FED}.wk2-stat.p .n{color:#7C66DC}.wk2-stat.r .n{color:#E5484D}
.wk2-mini .hd{display:flex;justify-content:space-between;font-size:12px;color:#6B7280;margin-bottom:8px}
.wk2-mini .wk{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;font-size:10px;text-align:center;color:#9CA3AF}
.wk2-mini .dd{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-top:5px;font-size:10.5px;text-align:center;color:#4B5563}
.wk2-mini .dd span{padding:4px 0;border-radius:6px;position:relative;cursor:pointer}
.wk2-mini .dd .t{background:#16A34A;color:#fff;font-weight:700}
.wk2-mini .dd .sel{outline:1px solid #16A34A}
.wk2-mini .dd .has:after{content:"";position:absolute;left:50%;bottom:1px;transform:translateX(-50%);width:4px;height:4px;border-radius:50%;background:#16A34A}
.wk2-mini .dd .t.has:after{background:#fff}
.wk2-g2{display:grid;grid-template-columns:1.6fr 1fr;gap:14px}
.wk2-g2b{display:grid;grid-template-columns:1.6fr 1fr;gap:14px}
.wk2-card h3{margin:0 0 8px;font-size:14px;font-weight:700;display:flex;align-items:center;gap:8px}
.wk2-card h3 .r{margin-left:auto;font-size:11.5px;color:#8A948D;font-weight:400}
.wk2-card h4{margin:0 0 4px;font-size:14px;display:flex;align-items:center;gap:7px}
.wk2-week{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:4px}
.wk2-week .day{background:#FAFBFA;border-radius:8px;padding:6px 5px;min-height:150px;font-size:10.5px;color:#9CA3AF}
.wk2-week .day b{display:block;font-size:11px;color:#4B5563;margin-bottom:5px}
.wk2-week .day.today{background:#EDF8F1;outline:1px solid #BBE3C9}
.wk2-week .day.today b{color:#16A34A}
.wk2-ev{display:block;background:#E8F0FB;border-left:3px solid #2F6FED;border-radius:5px;padding:3px 5px;
  margin-bottom:4px;font-size:10px;color:#26406B;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wk2-ev.g{background:#E8F5EE;border-color:#16A34A;color:#186B3D}
.wk2-tl{position:relative;padding-left:18px;margin-top:8px;max-height:330px;overflow:auto}
.wk2-tl:before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:2px;background:#E7ECE8}
.wk2-tli{position:relative;margin-bottom:13px;font-size:12.5px}
.wk2-tli:before{content:"";position:absolute;left:-17px;top:3px;width:10px;height:10px;border-radius:50%;background:#C9D1CB}
.wk2-tli.b:before{background:#2F6FED;box-shadow:0 0 0 4px rgba(47,111,237,.14)}
.wk2-tli.g:before{background:#16A34A;box-shadow:0 0 0 4px rgba(22,163,74,.16)}
.wk2-tli .h{color:#8A948D;font-size:11px}
.wk2-tli .t{font-weight:600;margin:2px 0}
.wk2-tli .d{font-size:11px;color:#8A948D}
.wk2-tbl{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:4px}
.wk2-tbl th{font-size:11.5px;color:#6B7280;background:#FAFBFA;text-align:left;padding:8px;font-weight:600;border-bottom:1px solid #EFF2EF}
.wk2-tbl td{padding:9px 8px;border-top:1px solid #F0F2F0;color:#374151}
.wk2-tbl a{color:#1F2937}
.wk2-pill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11px;line-height:1.6}
.wk2-pill.g{background:#E8F5EE;color:#16A34A}.wk2-pill.b{background:#E8F0FB;color:#2F6FED}
.wk2-pill.gy{background:#F1F2F4;color:#6B7280}.wk2-pill.o{background:#FDEEEC;color:#C0392B}
.wk2-pri{font-size:10.5px;padding:1px 6px;border-radius:5px;background:#F1F2F4;color:#6B7280;flex:0 0 auto}
.wk2-pri.p1{background:#FDEEEC;color:#C0392B}.wk2-pri.p2{background:#FFF3D6;color:#A36A00}
.wk2-pri.p3{background:#F1EDFB;color:#7C66DC}.wk2-pri.p4{background:#F1F2F4;color:#6B7280}
.wk2-row{display:flex;align-items:center;gap:10px;padding:8px 2px;border-top:1px solid #F3F5F3;font-size:13px;color:#374151;text-decoration:none;cursor:default;user-select:text;-webkit-user-select:text}
.wk2-row:first-of-type{border-top:0}
.wk2-tm{flex:0 0 52px;color:#8A948D;font-size:11.5px;font-variant-numeric:tabular-nums}
.wk2-tt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;user-select:text;-webkit-user-select:text;cursor:text}
.wk2-tt.done{color:#9CA3AF;text-decoration:line-through}
.wk2-tt .sub{font-style:normal;color:#9CA3AF;font-size:11px;margin-left:7px}
.wk2-ck{flex:0 0 auto;width:17px;height:17px;border:1.6px solid #C9D1CB;border-radius:5px;line-height:15px;
  text-align:center;font-size:11px;color:#fff;cursor:pointer}
.wk2-ck.on{background:#16A34A;border-color:#16A34A}
.wk2-acts{display:flex;gap:6px;flex:0 0 auto}
.wk2-acts button{border:1px solid #E7ECE8;background:#fff;border-radius:7px;font-size:11.5px;padding:3px 8px;
  color:#4B5563;cursor:pointer;font-family:inherit}
.wk2-acts button:hover{border-color:#16A34A;color:#16A34A}
.wk2-line{font-size:13px;color:#4B5563;margin-bottom:12px}
.wk2-line b{color:#16A34A}
.wk2-wrow{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:7px 0;border-top:1px dashed #F0F2F0;color:#374151}
.wk2-wrow:first-of-type{border-top:0}
.wk2-wrow i{margin-left:auto;color:#8A948D;font-size:11px;font-style:normal}
.wk2-wrow a{color:#374151}
.wk2-wrow .dot{width:7px;height:7px;border-radius:50%;background:#E5484D;flex:0 0 auto}
.wk2-tagbox{display:flex;flex-wrap:wrap;gap:6px}
.wk2-tag{font-size:11px;padding:3px 9px;border-radius:999px;background:#F1F5F2;color:#4B5563}
.wk2-muted{color:#9CA3AF;font-size:12px}
.wk2-empty{padding:40px;text-align:center;color:#9CA3AF}
.wk2-quad{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.wk2-q{min-height:190px;border-top:3px solid #8B8D98;margin:0}
.wk2-q.q1{border-top-color:#E5484D}.wk2-q.q2{border-top-color:#F5A524}
.wk2-q.q3{border-top-color:#7C66DC}.wk2-q.q4{border-top-color:#8B8D98}
.wk2-q.over{box-shadow:0 0 0 3px rgba(22,163,74,.18)}
.wk2-q .cnt{margin-left:auto;font-size:11.5px;color:#8A948D;font-weight:400}
.wk2-q ul{margin:8px 0 0;padding:0;list-style:none;font-size:12.5px}
.wk2-q li{padding:6px 0;border-top:1px solid #F3F5F3;display:flex;gap:8px;align-items:center;cursor:grab}
.wk2-q li:first-child{border-top:0}
.wk2-q li a{color:#374151;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wk2-q li i{color:#9CA3AF;font-size:11px;font-style:normal}
.wk2-q .dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto;background:#C9D1CB}
.wk2-q .dot.p1{background:#E5484D}.wk2-q .dot.p2{background:#F5A524}
.wk2-q .dot.p3{background:#7C66DC}.wk2-q .dot.p4{background:#8B8D98}
.wk2-foot2{font-size:11.5px;color:#9CA3AF;margin:10px 2px}
.wk2-calbar{display:flex;align-items:center;gap:10px;margin-bottom:10px;font-size:13px}
.wk2-calbar button{width:28px;height:28px;border-radius:8px;border:1px solid #E7ECE8;background:#fff;cursor:pointer;font-size:15px;line-height:1}
.wk2-calbar .lg{margin-left:auto;font-size:11px;color:#8A948D;display:flex;align-items:center;gap:4px}
.wk2-calbar .lg i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-left:8px}
.wk2-calbar .lg i.l{background:#BBE3C9}.wk2-calbar .lg i.m{background:#F5A524}.wk2-calbar .lg i.h{background:#E5484D}
.wk2-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.wk2-cal>span{font-size:11px;color:#9CA3AF;text-align:center;padding:4px 0}
.wk2-cell{background:#fff;border:1px solid #EFF2EF;border-radius:8px;min-height:86px;padding:5px;font-size:10px;color:#9CA3AF;cursor:pointer;position:relative}
.wk2-cell.blank{background:transparent;border-color:transparent;cursor:default}
.wk2-cell b{color:#4B5563;font-size:11px;display:block;margin-bottom:3px}
.wk2-cell.t{border-color:#16A34A;background:#F3FBF6}
.wk2-cell.t b{color:#16A34A}
.wk2-cell.sel{box-shadow:0 0 0 2px rgba(22,163,74,.28)}
.wk2-cell .n{font-style:normal;display:block;font-size:10px;color:#6B7280}
/* ★ 反馈 #283⑥：格子里直接写事项名 */
.wk2-cell .ci{display:block;font-size:9.5px;line-height:1.45;color:#3F4A44;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;padding-left:6px;position:relative}
.wk2-cell .ci:before{content:"";position:absolute;left:0;top:.55em;width:3px;height:3px;border-radius:50%;background:#9CC7AC}
.wk2-cell .ci.done{color:#9CA3AF;text-decoration:line-through}
.wk2-cell .ci.lib{color:#1F6FB2}
.wk2-cell .ci.lib:before{background:#8FBEE4}
.wk2-cell .ci.day{color:#B4690E;font-weight:600}
.wk2-cell .ci.day:before{background:#E8A33D}
.wk2-cell .ci.more{color:#8A948D}
.wk2-cell .ci.more:before{display:none}
/* 日历上方的分类筛选（全部 / 待办 / 事项库 / 重要日） */
.wk2-calbar .calf{display:inline-flex;gap:4px;margin-left:8px}
.wk2-calbar .calf button{width:auto;min-width:0;padding:0 9px;height:26px;border-radius:999px;font-size:12px;color:#4B5563}
.wk2-calbar .calf button.on{background:#E8F5EE;border-color:#BBE3C9;color:#16A34A;font-weight:600}
.wk2-cell .bar{height:4px;border:0;border-radius:2px;margin:4px 0 0;background:#EEF1EE}
.wk2-cell .bar.l{background:#BBE3C9}.wk2-cell .bar.m{background:#F5A524}.wk2-cell .bar.h{background:#E5484D}
.wk2-lanes{overflow-x:auto}
.wk2-lane{display:grid;grid-template-columns:110px repeat(7,1fr);gap:4px;align-items:center;font-size:12px;padding:5px 0;border-top:1px solid #F3F5F3}
.wk2-lane.hd{border-top:0;color:#8A948D;font-size:11px}
.wk2-lane>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wk2-lane i{font-style:normal;text-align:center;color:#9CA3AF;font-size:11px}
.wk2-lane i.on{color:#16A34A;font-weight:700}
.wk2-lane b.n{display:inline-block;min-width:18px;padding:1px 4px;border-radius:6px;background:#E8F5EE;color:#16A34A;font-size:10.5px}
.wk2-pre{white-space:pre-wrap;font-size:12.5px;color:#374151;margin:0;font-family:inherit;line-height:1.75}
.wk2-card h3 .wk2-copy{margin-left:auto;border:1px solid #E7ECE8;background:#fff;border-radius:7px;
  font-size:11.5px;padding:2px 9px;color:#4B5563;cursor:pointer;font-family:inherit}
@media (max-width:900px){
  .wk2{display:block}
  .wk2-sb{width:auto;height:auto;position:sticky;top:0;flex-direction:row;align-items:center;
    padding:7px 8px;gap:4px;box-shadow:0 2px 8px rgba(0,0,0,.08)}
  .wk2-logo,.wk2-foot{display:none}
  .wk2-nav{flex-direction:row;overflow-x:auto;width:100%;gap:4px;-webkit-overflow-scrolling:touch}
  .wk2-nav::-webkit-scrollbar{display:none}
  .wk2-nav button{flex:0 0 auto;padding:7px 10px;font-size:12.5px;white-space:nowrap}
  .wk2-nav button.on{box-shadow:inset 0 -3px 0 #4ADE80}
  .wk2-nav button span{display:none}
  .wk2-main{padding:12px 12px 22px}
  .wk2-top{flex-wrap:wrap;gap:8px;margin-bottom:10px}
  .wk2-title h1{font-size:18px}
  .wk2-title p{font-size:11.5px}
  .wk2-search{order:3;flex:1 1 100%;max-width:none;padding:8px 13px}
  .wk2-who{margin-left:auto}
  .wk2-stats,.wk2-stats4{grid-template-columns:1fr 1fr;gap:9px}
  .wk2-stats>div:last-child{grid-column:1/-1}
  .wk2-g2,.wk2-g2b{grid-template-columns:1fr}
  .wk2-quad{grid-template-columns:1fr}
  .wk2-week{overflow-x:auto;grid-template-columns:repeat(7,88px);padding-bottom:4px}
  .wk2-cal{gap:3px}
  .wk2-cell{min-height:62px;padding:3px}
  .wk2-cell b{font-size:10px}
  .wk2-calbar .lg{display:none}
  .wk2-tbl{display:block;overflow-x:auto;white-space:nowrap}
  .wk2-stat .n{font-size:24px}
}

/* ===== 事项库（反馈 #275，2026-10-19）：表格容器 + 新增 FAB + 底部弹面板 ===== */
.wk2-libcard{padding:0;background:transparent;box-shadow:none;border:none}
.wk2-libhost{min-height:200px}
.wk2-fab{position:fixed;right:16px;bottom:calc(74px + env(safe-area-inset-bottom));width:54px;height:54px;
  border:none;border-radius:50%;background:var(--focus,#2f7a4f);color:#fff;font-size:28px;line-height:1;
  box-shadow:0 6px 18px rgba(47,122,79,.34);cursor:pointer;z-index:60}
.wk2-fab:active{transform:scale(.95)}
.wk2-libc1{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.wk2-libc1 b{font-size:15px}
.wk2-libc2{font-size:12.5px;color:var(--muted);margin-top:4px}
.wk2-libc3{display:flex;gap:8px;margin-top:8px}
.wk2-libc3 button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 10px;
  font-size:12.5px;font-family:inherit;color:var(--text);cursor:pointer}
.wk2-libc3 button:active{background:#f2f7f3}
.li-mask{position:fixed;inset:0;background:rgba(0,0,0,.32);z-index:8000}
.li-sheet{position:fixed;left:0;right:0;bottom:0;z-index:8001;background:#fff;border-radius:16px 16px 0 0;
  max-height:88vh;display:flex;flex-direction:column;box-shadow:0 -8px 28px rgba(0,0,0,.16)}
/* ★ 2026-10-20 反馈 #277①：这里写了 display:flex，UA 的 [hidden]{display:none} 打不过它
   ⇒ 面板没被打开时也一直挂在页面底部（她报「新增事项一直展示着」）。每个写了 display 的组件都要补这条。 */
.li-sheet[hidden]{display:none !important}
.li-mask[hidden]{display:none !important}

.li-shead{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 8px;font-size:16px}
.li-shead button{border:none;background:none;font-size:18px;color:var(--muted);cursor:pointer}
.li-sbody{overflow:auto;padding:4px 16px 8px}
.li-f{margin-bottom:11px;flex:1;min-width:0}
.li-f label{display:block;font-size:12.5px;color:var(--muted);margin-bottom:5px}
.li-f input,.li-f textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:10px;
  padding:10px 11px;font-size:15px;font-family:inherit;color:var(--text);background:#fff;outline:none}
.li-f input:focus,.li-f textarea:focus{border-color:var(--focus);box-shadow:0 0 0 3px rgba(63,166,107,.13)}
.li-f textarea{resize:vertical;line-height:1.5}
.li-row{display:flex;gap:10px}
/* ★ 反馈 #315①（2026-10-21）：`display:flex` 会盖掉 [hidden]（UA 的 [hidden]{display:none} 打不过作者写的 display）
   ⇒ 「一次性 / 时间段」两行以前永远露着：她直接往里填了时间、但「时间」那排 chip 还停在「不适用」，
   保存时被判定成「不用时间」→ 时间丢了、她还以为存上了。这条必须留着。 */
.li-row[hidden]{display:none !important}
.li-chips{display:flex;flex-wrap:wrap;gap:7px}
.wk2-chip{border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 12px;font-size:13.5px;
  font-family:inherit;color:var(--text);cursor:pointer}
.wk2-chip.on{background:var(--focus,#2f7a4f);border-color:var(--focus,#2f7a4f);color:#fff;font-weight:600}
.li-sfoot{display:flex;gap:10px;padding:10px 16px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--line)}
.li-sfoot button{flex:1;border:none;border-radius:11px;padding:12px;font-size:15.5px;font-family:inherit;cursor:pointer}
.li-ok{background:var(--focus,#2f7a4f);color:#fff;font-weight:600}
.li-del{flex:0 0 88px !important;background:#fff;color:#c0392b;border:1px solid #f0c9c4 !important}
@media(min-width:760px){
  .li-sheet{left:50%;right:auto;bottom:auto;top:50%;transform:translate(-50%,-50%);width:min(560px,92vw);
    border-radius:16px;max-height:86vh}
}

/* ===== 工作台 · 本周（反馈 #276，2026-10-19） ===== */
.wk2-wk-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}
.wk2-wk-col{display:flex;flex-direction:column;min-height:130px;border:1px solid var(--line);
  border-radius:12px;background:#fff;overflow:hidden}
.wk2-wk-col.today{border-color:var(--focus);box-shadow:0 0 0 2px rgba(63,166,107,.13)}
.wk2-wk-ch{display:flex;align-items:center;gap:6px;padding:7px 9px;background:#f5f9f6;
  border-bottom:1px solid var(--line);font-size:12.5px;color:var(--text)}
.wk2-wk-ch b{font-size:13px}
.wk2-wk-ch i{font-style:normal;color:var(--muted);font-size:11.5px}
.wk2-wk-ch span{margin-left:auto;font-size:11.5px;color:var(--muted)}
.wk2-wk-col.today .wk2-wk-ch{background:#eef8f1}
.wk2-wk-body{padding:6px;display:flex;flex-direction:column;gap:4px;overflow:auto;max-height:340px}
.wk2-wk-body .wk2-row{flex-wrap:wrap;gap:2px 6px;padding:6px 7px}
.wk2-wk-body .wk2-tm{width:38px}
.wk2-wk-body .wk2-tt{flex:1 1 100%;font-size:12.5px;line-height:1.35}
.wk2-wk-body .wk2-pri,.wk2-wk-body .wk2-pill{font-size:10.5px;padding:1px 5px}
.wk2-wk-mute{color:#c7cbc8;font-size:12px;text-align:center;padding:8px 0}
.wk2-wk-tblwrap{overflow:auto}
.wk2-wk-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.wk2-wk-tbl th,.wk2-wk-tbl td{border-top:1px solid var(--line);padding:6px 7px;vertical-align:top;text-align:left}
.wk2-wk-tbl thead th{color:var(--muted);font-weight:600;font-size:12px;border-top:none}
.wk2-wk-tbl thead th.today{color:var(--focus)}
.wk2-wk-tbl tbody th{white-space:nowrap;font-weight:600;min-width:92px}
.wk2-wk-tbl tbody th i{font-style:normal;color:var(--muted);font-weight:400;margin-left:6px;font-size:11.5px}
.wk2-wk-chip{display:block;margin:0 0 3px;padding:3px 7px;border-radius:7px;background:#f2f7f3;
  color:var(--text);text-decoration:none;font-size:12px;line-height:1.35;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:190px}
.wk2-wk-chip:hover{background:#e6f2e9}
.wk2-wk-chip.done{background:#f6f7f6;color:#9aa39d;text-decoration:line-through}
@media(max-width:900px){
  .wk2-wk-grid{grid-template-columns:1fr;gap:8px}
  .wk2-wk-col{min-height:0}
  .wk2-wk-body{max-height:none}
  .wk2-wk-body .wk2-tt{flex:1 1 auto}
  .wk2-wk-chip{max-width:none}
}

/* ===== 今日待做 ·「今天的事项」（反馈 #283②③，2026-10-20）===== */
.itemday{margin:8px 0 4px;border:1px solid #e3ecE5;border-radius:12px;background:#fbfffc;overflow:hidden}
.itemday-hd{display:flex;align-items:baseline;gap:8px;padding:8px 12px;background:#f2f8f3;border-bottom:1px solid #e8f0ea}
.itemday-hd b{font-size:14px;color:#1f7a3d}
.itemday-hd i{font-size:11.5px;color:#8aa192;font-style:normal}
.itd-list{list-style:none;margin:0;padding:0}
.itd{display:flex;gap:9px;padding:9px 12px;border-bottom:1px solid #eef4ef}
.itd:last-child{border-bottom:0}
.itd.done{background:#fafcfa}
.itd-ck{flex:0 0 20px;position:relative;top:2px}
.itd-ck input{position:absolute;opacity:0;width:20px;height:20px;margin:0;cursor:pointer}
.itd-ck i{display:block;width:20px;height:20px;border:1.6px solid #b9c9be;border-radius:6px;cursor:pointer}
.itd-ck input:checked + i{background:#16a34a;border-color:#16a34a}
.itd-ck input:checked + i::after{content:"✓";display:block;color:#fff;font-size:13px;line-height:18px;text-align:center}
.itd-main{flex:1 1 auto;min-width:0}
.itd-t{font-size:14.5px;color:var(--text);line-height:1.35}
.itd.done .itd-t{color:#9aa39d;text-decoration:line-through}
.itd-m{font-size:12px;color:#8aa192;margin-top:2px}
.itd-sum{font-size:12px;color:#1f7a3d;margin-top:3px}
/* ★ #321⑧：今天已完成的事项不在列表里显示，只留一行提示（它们进了今日时间线） */
.itd-doneline{list-style:none;font-size:12px;color:#9AA8A0;padding:8px 12px;background:#FAFBFA}
.itd-req{display:flex;flex-wrap:wrap;gap:6px 10px;margin-top:7px;padding:7px 8px;background:#f4f9f5;border-radius:9px}
.itd-req[hidden]{display:none}
.itd-req label{display:flex;align-items:center;gap:4px;font-size:12.5px;color:#5d7566}
.itd-req label.wide{flex:1 1 100%}
.itd-req input{font-size:13px;padding:4px 6px;border:1px solid #d9e6dc;border-radius:7px;background:#fff;min-width:0}
.itd-req input[type=number]{width:66px}
.itd-req label.wide input{flex:1 1 auto;width:100%}
@media(max-width:560px){
  .itd{padding:8px 10px}
  .itd-t{font-size:14px}
}

/* ===== 笔记标签：固定 + 拖动排序（反馈 #283⑦，2026-10-20）===== */
.nk-tab .pin{border:none;background:transparent;font-size:11px;line-height:1;padding:0 2px;
  color:#c2c0bb;cursor:pointer;opacity:0;transition:opacity .12s}
.nk-tab:hover .pin,.nk-tab.pin .pin{opacity:1}
.nk-tab.pin{background:#fff7e6;box-shadow:0 -2px 0 #e2a300 inset}
.nk-tab.pin.on{box-shadow:0 -2px 0 #e2a300 inset;font-weight:600}
.nk-tab.pin .tt{max-width:132px}
.nk-tab.dragging{opacity:.45}
.nk-tab.dragover{outline:2px dashed #16a34a;outline-offset:-2px}

/* ===== 右键菜单 + 右栏图标排（反馈 #284，2026-10-20）===== */
.row-ctx{position:fixed;z-index:9999;min-width:132px;background:#fff;border:1px solid #e3e8e5;
  border-radius:10px;box-shadow:0 10px 28px rgba(20,40,30,.16);padding:5px;display:flex;flex-direction:column}
.row-ctx button{border:none;background:transparent;text-align:left;padding:8px 12px;border-radius:7px;
  font:inherit;font-size:13px;color:#2b3a31;cursor:pointer;white-space:nowrap}
.row-ctx button:hover{background:#f2f7f3}
.row-ctx button.danger{color:#c0392b}
.row-ctx button.danger:hover{background:#fdeceb}
.dp-ico{border:1px solid var(--line,#e3e8e5);background:#fff;border-radius:8px;line-height:1;
  padding:5px 7px;font-size:14px;cursor:pointer}
.dp-ico:hover{background:#f4f9f5}
.dp-ico.on{background:#fff7e6;border-color:#e2a300}
.dp-delchip{color:#c0392b!important;border-color:#f0cfcc!important}
.dp-row-ed{cursor:pointer;border-radius:6px}
.dp-row-ed:hover{background:#f4f9f5}

/* ===== 工作台「今日待办」＝嵌入待办清单整页（反馈 #284，2026-10-20）===== */
.wk2-istoday .wk2-top{display:none}
.wk2-istoday .wk2-main{padding:8px 10px}
.wk2-embed{width:100%;height:calc(100vh - 18px);border:0;display:block;border-radius:12px;
  background:#fff;box-shadow:0 2px 12px rgba(20,40,30,.06)}
body.embed-mode{padding-bottom:0}
body.embed-mode .tabbar{display:none}
body.embed-mode.has-tabbar{padding-bottom:0}
body.embed-mode .td3{min-height:calc(100vh - 72px);height:calc(100vh - 34px)}
@media(max-width:900px){
  .wk2-istoday .wk2-main{padding:0}
  .wk2-embed{height:calc(100vh - 8px);border-radius:0;box-shadow:none}
}
.nk-ctxmenu button.danger{color:#c0392b}
.nk-ctxmenu button.danger:hover{background:#fdeceb}

/* ===== 笔记 · 实时渲染编辑器（需求 #112，2026-10-20）=====
   块级渲染：标题/列表/引用/表格/代码块/照片直接显示效果；正在写的那一块才显源码。
   正文仍然以 markdown 为真源，存库格式不变。 */
.lm-root{white-space:normal;min-height:56vh;padding-bottom:80px}
.lm-root .lm-blk{position:relative;border-radius:6px;padding:1px 4px;cursor:text}
.lm-root .lm-blk+.lm-blk{margin-top:2px}
.lm-root .lm-blk:hover{background:#fafcfa}
.lm-root .lm-active{background:#f4faf6;box-shadow:inset 2px 0 0 var(--focus,#3fa66b);padding-left:8px}
.lm-ta{display:block;width:100%;border:0;outline:0;background:transparent;resize:none;
  overflow:hidden;font:inherit;font-size:15.5px;line-height:1.85;color:var(--text,#2b3a31);
  padding:0;margin:0;white-space:pre-wrap;word-break:break-word}
.lm-empty{min-height:1.85em}
.lm-empty:before{content:"点一下，开始写…";color:#b9b7b2}
.lm-root .dmd-h{margin:2px 0}
.lm-root .fb-md-pic{margin:2px 0}
.lm-root .fb-md-img{max-width:80%;max-height:240px;border-radius:10px;border:1px solid var(--line,#e3e8e5)}
.nt-mode{opacity:.72}
.nt-mode.on{opacity:1;color:var(--focus,#3fa66b)}

/* ===== 笔记 · 「＋」插入菜单（需求 #113）===== */
.lm-imenu{position:fixed;z-index:9999;background:#fff;border:1px solid var(--line,#e3e8e5);
  border-radius:12px;box-shadow:0 12px 30px rgba(20,40,30,.16);padding:5px;
  min-width:184px;max-height:min(58vh,340px);overflow:auto}
.lm-imenu[hidden]{display:none!important}
.lm-imenu-list{display:flex;flex-direction:column}
.lm-imenu-it{display:flex;align-items:center;gap:9px;border:0;background:transparent;
  text-align:left;padding:8px 10px;border-radius:8px;font:inherit;font-size:13.5px;
  color:#2b3a31;cursor:pointer;white-space:nowrap}
.lm-imenu-it .ic{width:20px;text-align:center;color:#4a7a5f;font-size:14px}
.lm-imenu-it.on,.lm-imenu-it:hover{background:#f0f7f2}
.lm-imenu-none{padding:10px 12px;color:#9a9a9a;font-size:13px}
.lm-marginplus{position:fixed;z-index:9990;width:26px;height:26px;display:none;
  align-items:center;justify-content:center;border-radius:50%;border:1px solid var(--line,#e3e8e5);
  background:#fff;color:#4a7a5f;font-size:16px;line-height:1;padding:0;cursor:pointer;
  box-shadow:0 4px 12px rgba(20,40,30,.10)}
.lm-marginplus.on{display:flex}
.lm-marginplus:hover{background:#f2f8f4}
@media(max-width:900px){ .lm-marginplus{display:none!important} }
/* 电脑端给实时渲染正文留一条「页边距」，那个悬浮＋就停在这条带子里（手机端不留） */
@media(min-width:901px){
  body.fb-editing .lm-root{padding-left:36px}
}

/* ★ 需求 #111 收尾（2026-10-20 第37轮）：三栏页右栏「就地编辑」也走实时渲染（live_md.js），
   避免 .nk-edit-body 的 white-space:pre-wrap 把块级渲染弄回一行行源码。 */
.nk-edit-body.lm-root{white-space:normal;word-break:break-word;min-height:46vh;padding-bottom:40px}
.nk-edit-body.lm-root .lm-ta{font-size:14.5px;line-height:1.85}
.nk-edit-body.lm-root .lm-blk{padding-left:2px}

/* ★ 反馈 #302（2026-10-21）：记账录入页金额改成真输入框（电脑能打、手机弹系统数字键盘，
   自绘数字键整块下线）；动作只留「再记 / 完成」两个大按钮。 */
.mn-numin{font-size:30px;font-weight:800;margin-left:auto;letter-spacing:-.5px;
  border:none;outline:none;background:transparent;text-align:right;width:58%;min-width:120px;
  font-family:inherit;color:var(--text);padding:2px 0}
.mn-numin::placeholder{color:#c9ced6;font-weight:700}
.mn-numin:focus{background:var(--focus-soft);border-radius:8px}
.mn-actions{display:grid;grid-template-columns:1fr 1.4fr;gap:8px;margin:12px 0 6px}
.mn-actions button{border:none;border-radius:12px;height:48px;font-size:16px;font-weight:700;
  font-family:inherit;cursor:pointer}
.mn-actions .mn-again{background:#e8f5ee;color:var(--focus)}
.mn-actions .mn-ok{background:var(--focus);color:#fff}

/* 还款 / 收款登记弹层（#302）：上面一条应还/已还/还差，中间填这一次，下面列已登记的 */
.mgp-sum{background:var(--focus-soft);border-radius:12px;padding:10px 12px;font-size:14px;
  line-height:1.6;color:var(--text);margin-bottom:10px}
.mgp-list{max-height:180px;overflow:auto}
.mgp-li{display:flex;align-items:center;gap:8px;padding:8px 2px;border-bottom:1px dashed var(--line);
  font-size:13.5px;color:var(--muted)}
.mgp-li:last-child{border-bottom:none}
.mgp-li b{color:var(--text);font-size:14px}
.mgp-li i{font-style:normal;color:var(--muted)}
.mgp-li em{font-style:normal;color:var(--muted);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mgp-li span{min-width:76px}
.mgp-del{margin-left:auto;border:1px solid var(--line);background:#fff;color:#c0392b;border-radius:8px;
  padding:3px 9px;font-size:12.5px;font-family:inherit;cursor:pointer}
.mgd-part{font-size:12.5px;line-height:1.35;color:var(--muted)}

/* ===== 2026-10-21 反馈 #306：行级实时渲染（Obsidian Live Preview）=====
   一行一个 .lp-line；光标不在的行显示效果，光标所在行显示源码。
   ★ 不要在这里加「框」类样式（边框/阴影），她说看着像文本框就是那个感觉。 */
.lm-root{white-space:normal}
.lm-root .lp-line{white-space:pre-wrap;word-break:break-word;min-height:1.85em;padding:0 2px}
.lm-root .lp-h{font-weight:700;line-height:1.5;margin:.28em 0 .1em;color:#1b2a22}
.lm-root .lp-h1{font-size:1.68em}
.lm-root .lp-h2{font-size:1.42em}
.lm-root .lp-h3{font-size:1.22em}
.lm-root .lp-h4{font-size:1.1em}
.lm-root .lp-h5,.lm-root .lp-h6{font-size:1em;color:#3d5b4a}
.lm-root .lp-quote{border-left:3px solid #cfe3d7;padding-left:10px;color:#5b6f64}
.lm-root .lp-li{padding-left:2px}
.lm-root .lp-dot{color:#3fa66b;font-weight:700}
.lm-root .lp-num{color:#3fa66b;font-weight:700}
.lm-root .lp-chk{color:#3fa66b;font-weight:700;margin-right:2px}
.lm-root .lp-done{color:#9aa8a0;text-decoration:line-through}
.lm-root .lp-code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.94em;
  background:#f4f7f5;border-radius:4px;padding:0 6px;white-space:pre-wrap}
.lm-root .lp-fence-line{color:#8fa89a;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.9em}
.lm-root .lp-hrline{min-height:auto;padding:6px 0}
.lm-root .lp-hrline hr{border:0;border-top:1px solid var(--line,#e3e8e5);margin:4px 0}
.lm-root .lp-line img.fb-inline-img{max-width:80%;max-height:240px;border-radius:10px;
  border:1px solid var(--line,#e3e8e5);display:block;margin:6px 0}
.nk-edit-body.lm-root .lp-line{min-height:1.8em}

/* ★ 反馈 #308①（2026-10-21）：今日待办/逾期＝表格 —— 表头 + 最右【番茄】列 */
.wk2-thead{display:flex;align-items:center;gap:10px;padding:2px 2px 4px;border-bottom:1px solid #EEF2EF;
  font-size:11px;color:#94A29A}
.wk2-thead>span:nth-child(1){flex:0 0 17px;width:17px}
.wk2-thead>span:nth-child(2){flex:0 0 52px;width:52px}
.wk2-thead>span:nth-child(3){flex:1 1 auto;min-width:0}
.wk2-thead>span:nth-child(4){flex:0 0 auto;text-align:right}
.wk2-thead>span:nth-child(5){flex:0 0 64px;width:64px;text-align:right}
.wk2-fq{display:flex;gap:4px;flex:0 0 64px;justify-content:flex-end;margin-left:2px}
.wk2-fqb{border:1px solid #E7ECE8;background:#fff;border-radius:8px;font-size:13px;line-height:1;
  padding:4px 6px;cursor:pointer}
.wk2-fqb:hover,.wk2-fqb:active{border-color:#16A34A;background:#F3FAF5}
.wk2-orow{cursor:pointer}
/* ★ 反馈 #460：完成汇总（事项 / 总用时 / 数量）
   ★ 反馈 #463②（2026-10-28 二改）：她说「靠左，不要分开这么多；按大多数字符宽度」。
   改成 <table> 自适应布局：整表宽度＝实际内容宽度（不再固定 260px 留白），三列靠左，
   列间 26px；事项列最长 320px，超出省略号。 */
.wk2-dsumcard h3{margin-bottom:2px}
.wk2-dswrap{margin-top:4px;overflow-x:auto}
table.wk2-ds-tbl{border-collapse:collapse;width:auto;table-layout:auto;font-size:13px}
.wk2-ds-tbl th{font-size:11px;font-weight:400;color:#94A29A;text-align:left;
  padding:2px 26px 3px 2px;border-bottom:1px solid #F3F5F3;white-space:nowrap}
.wk2-ds-tbl td{padding:6px 26px 6px 2px;border-top:1px solid #F3F5F3;white-space:nowrap;
  vertical-align:middle}
.wk2-ds-tbl tbody tr:first-child td{border-top:0}
.wk2-ds-tbl td.t .tx{display:block;max-width:320px;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;color:#374151}
.wk2-ds-tbl td.m{color:#137a37;font-weight:600;font-variant-numeric:tabular-nums}
.wk2-ds-tbl td.q{color:#5f6b64;font-variant-numeric:tabular-nums}
.wk2-ds-tbl th:last-child,.wk2-ds-tbl td:last-child{padding-right:2px}
@media (max-width:620px){
  .wk2-ds-tbl{font-size:12.5px}
  .wk2-ds-tbl th{padding-right:16px}
  .wk2-ds-tbl td{padding:5px 16px 5px 2px}
  .wk2-ds-tbl td.t .tx{max-width:190px}
}
/* ★ 反馈 #457①：事项库上面那排辅助链接（默认排序 / 清空筛选 / 按创建顺序） */
.wk2-liblnk{color:#137a37;text-decoration:none;white-space:nowrap}
.wk2-liblnk:hover{text-decoration:underline}
.wk2-liblnk.dim{color:#9aa8a0}
.wk2-libhint{color:#9aa8a0}
@media (max-width:620px){.wk2-libhint{display:none}}
/* ★ 反馈 #458（2026-10-28）：手机端逾期行只留一个「⋯」，其余操作收进底部菜单 */
.wk2-only-desk{display:inline-flex;align-items:center}
.wk2-morebtn{display:none;flex:0 0 auto;border:1px solid #E7ECE8;background:#fff;border-radius:8px;
  font-size:15px;line-height:1;padding:5px 9px;color:#5f6b64;cursor:pointer;font-family:inherit}
.wk2-morebtn:hover,.wk2-morebtn:active{border-color:#16A34A;color:#16A34A}
.wk-more-body{padding-bottom:calc(8px + env(safe-area-inset-bottom))}
.wk-more-list{display:flex;flex-direction:column;margin-top:2px}
.wk-more-list button{border:0;background:transparent;text-align:left;padding:13px 8px;font-size:15px;
  color:#1B2A22;border-radius:10px;cursor:pointer;font-family:inherit}
.wk-more-list button+button{border-top:1px solid #F0F3F1}
.wk-more-list button:active{background:#F3FAF5}
@media (max-width:620px){
  .wk2-only-desk{display:none!important}
  .wk2-morebtn{display:inline-flex}
}
@media (max-width:620px){
  .wk2-thead>span:nth-child(2){flex:0 0 44px;width:44px}
  .wk2-fq{flex:0 0 58px}
  .wk2-orow .wk2-acts button{padding:3px 6px;font-size:11px}
  /* ★ #315②：手机上卡片再收紧一点，一屏能多看两条 */
  .wc-card{padding:10px 11px 9px;border-radius:12px}
  .wc-t{font-size:14.5px}
  .wc-fq{width:31px;height:31px;font-size:14px}
  .wc-chip{font-size:11px;padding:4px 8px}
}

/* 双击一条 → 改这条待办（底部弹层） */
.wk-sheet{position:fixed;inset:0;z-index:70;display:none}
.wk-sheet.open{display:block}
.wk-sheet-mask{position:absolute;inset:0;background:rgba(17,24,20,.35)}
.wk-sheet-body{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:min(560px,100%);
  background:#fff;border-radius:16px 16px 0 0;padding:14px 16px calc(16px + env(safe-area-inset-bottom,0px));
  box-shadow:0 -8px 30px rgba(0,0,0,.14)}
.wk-sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.wk-sheet-head b{font-size:15px;color:#1B2A22}
.wk-sheet-x{border:0;background:transparent;font-size:16px;color:#8A948D;cursor:pointer;padding:2px 6px}
.wk-te-f{display:flex;align-items:center;gap:8px;margin:7px 0}
.wk-te-f>span{flex:0 0 58px;color:#6B7A72;font-size:12.5px}
.wk-te-f input{flex:1;min-width:0;border:1px solid #E3E8E5;border-radius:9px;padding:8px 10px;font-size:15px;background:#fff}
.wk-te-f input:focus{outline:none;border-color:#16A34A;box-shadow:0 0 0 3px rgba(22,163,74,.12)}
.wk-te-row3{display:flex;gap:10px;flex-wrap:wrap}
.wk-te-row3 .wk-te-f{flex:1 1 150px;margin:4px 0}
.wk-te-row3 .wk-te-f>span{flex:0 0 auto}
.wk-te-btns{display:flex;gap:10px;margin-top:12px}
.wk-te-save{flex:1;border:0;border-radius:10px;background:#16A34A;color:#fff;padding:11px;font-size:15px;cursor:pointer}
.wk-te-cancel{flex:0 0 96px;border:1px solid #E3E8E5;border-radius:10px;background:#fff;color:#4B5A52;
  padding:11px;font-size:15px;cursor:pointer}
@media (min-width:621px){
  .wk-sheet-body{bottom:auto;top:50%;transform:translate(-50%,-50%);border-radius:16px}
}

/* ★ 反馈 #308②（2026-10-21）：事项库表格——短字段单行不换行，事项列单行截断（她要「按字符设宽度」） */
.wk2-libcard .ut-td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wk2-libcard .ut-td .ut-tag{white-space:nowrap}
@media (max-width:760px){
  .wk2-libcard .ut-td{white-space:normal}
}

/* ★ 反馈 #308②（2026-10-21）：今日事项（事项库生成）——勾选后展开记时长/数量/心得 */
.wk2-itd{padding:0 0 2px}
.wk2-itd .wk2-row{padding:7px 2px 4px}
.wk2-itd.done .wk2-tt{color:#9AA8A0}
/* ★ 反馈 #315②（2026-10-21）「今日事项」改卡片：一张事项一张卡
   —— 左侧勾选框、中间事项名 + 小胶囊（时间/频次/大项）、右侧两个圆形按钮；做完的卡片整张变淡。 */
.wc-list{display:flex;flex-direction:column;gap:9px;padding-top:4px}
.wc-card{background:#fff;border:1px solid #E6ECE8;border-radius:13px;padding:11px 12px 10px;
  box-shadow:0 1px 2px rgba(16,40,28,.04);transition:box-shadow .15s,border-color .15s}
.wc-card:hover{border-color:#CFE3D6;box-shadow:0 3px 10px rgba(16,40,28,.07)}
.wc-card.done{background:#FAFCFA;border-color:#EDF1EE}
.wc-card.done .wc-t{color:#9AA8A0;text-decoration:line-through}
.wc-card.done .wc-chip,.wc-card.done .wc-fq{opacity:.55}
.wc-top{display:flex;align-items:flex-start;gap:10px}
.wc-top .wk2-ck{flex:0 0 auto;margin-top:1px}
.wc-main{flex:1 1 auto;min-width:0}
.wc-t{font-size:15px;line-height:1.35;font-weight:600;color:#1E2A24;word-break:break-word}
.wc-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.wc-chip{display:inline-flex;align-items:center;gap:3px;font-size:11.5px;line-height:1;
  padding:5px 9px;border-radius:999px;background:#F3F6F4;color:#6B7A72;border:1px solid #E9EFEB}
.wc-chip.on{background:#EAF6EF;color:#177A45;border-color:#CDE9D8;font-weight:600}
.wc-acts{flex:0 0 auto;display:flex;align-items:center;gap:6px}
.wc-fq{width:34px;height:34px;border-radius:50%;border:1px solid #E1EAE4;background:#F7FBF8;
  font-size:15px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;
  transition:background .15s,border-color .15s,transform .1s}
.wc-fq:hover{background:#EAF6EF;border-color:#BFE0CC}
.wc-fq:active{transform:scale(.94)}
.wk2-itdsum{font-size:11.5px;color:#5B7A66;margin-top:2px}
.wk2-itdreq{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:0 2px 8px 27px}
/* ★ 同上：`display:flex` 会吃掉 [hidden] —— 以前「时长/数量/心得」那行永远露着，勾了才该出现的 */
.wk2-itdreq[hidden]{display:none !important}
.wk2-itdreq label{display:flex;align-items:center;gap:4px;font-size:12px;color:#6B7A72}
.wk2-itdreq label.wide{flex:1 1 200px}
.wk2-itdreq input[type=number]{width:62px}
.wk2-itdreq input{border:1px solid #E3E8E5;border-radius:8px;padding:5px 7px;font-size:13px;background:#fff}
.wk2-itdreq input:focus{outline:none;border-color:#16A34A;box-shadow:0 0 0 3px rgba(22,163,74,.12)}
.wk2-itdreq label.wide input{flex:1;min-width:0;width:100%}

/* ★ 反馈 #311（2026-10-21）：今日时间线＝卡片式列表 ＋ 两处「快速增加」一步到位 ＋ 双击改记录 */
.wk2-qbtn{margin-left:8px;border:1px solid #DDE6E1;background:#fff;color:#16A34A;border-radius:8px;
  padding:2px 9px;font-size:11.5px;font-weight:600;line-height:1.6;cursor:pointer;white-space:nowrap}
.wk2-qbtn:hover{background:#F2FBF5;border-color:#BFE3CC}
.wk2-qadd{display:flex;align-items:center;gap:6px;padding:7px 8px;margin:0 0 10px;background:#F7FAF8;
  border:1px solid #E3EDE6;border-radius:10px}
.wk2-qadd[hidden]{display:none!important}
.wk2-qadd.tk{margin:6px 2px 8px}
.wk2-qadd .t{width:86px;flex:0 0 auto;border:1px solid #E3E8E5;border-radius:8px;padding:5px 6px;font-size:12.5px;background:#fff}
.wk2-qadd .to{color:#9AA79F;font-size:12px;flex:0 0 auto}
.wk2-qadd .x{flex:1 1 auto;min-width:0;border:1px solid #E3E8E5;border-radius:8px;padding:6px 8px;font-size:13px;background:#fff}
.wk2-qadd .x:focus,.wk2-qadd .t:focus{outline:none;border-color:#16A34A;box-shadow:0 0 0 3px rgba(22,163,74,.12)}
.wk2-qadd .ok{flex:0 0 auto;border:none;background:#16A34A;color:#fff;border-radius:8px;padding:6px 12px;
  font-size:12.5px;font-weight:600;cursor:pointer}
/* ★ #370（2026-10-25）：今日流水「记一笔」的内容联想 —— 输入框+下拉包一层定位容器 */
.wk2-qadd .wk2-sugw{position:relative;flex:1 1 auto;min-width:0;display:block}
.wk2-qadd .wk2-sugw input{width:100%;box-sizing:border-box;flex:none}
.wk2-qadd .wk2-as-sug{z-index:60;max-height:250px;overflow:auto}
.wk2-tlc{display:flex;flex-direction:column;gap:8px;margin-top:8px;max-height:340px;overflow:auto}
.wk2-tl2{display:flex;align-items:flex-start;gap:10px;padding:9px 10px;background:#fff;
  border:1px solid #E9EEEA;border-left:3px solid #C9D1CB;border-radius:10px;cursor:default}
.wk2-tl2:hover{box-shadow:0 2px 8px rgba(20,40,30,.07)}
.wk2-tl2.f{border-left-color:#2F6FED}
.wk2-tl2.l{border-left-color:#16A34A}
.wk2-tl2.g{border-left-color:#9DBFA9;opacity:.84}
.wk2-tl2.t{border-left-color:#E0A21A}
.wk2-tl2 .tm{flex:0 0 118px;font-size:11.5px;color:#6F7C74;font-variant-numeric:tabular-nums;line-height:1.5}
.wk2-tl2 .bd{flex:1 1 auto;min-width:0}
.wk2-tl2 .tt{font-size:13px;font-weight:600;color:#233029;line-height:1.45;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.wk2-tl2 .mt{display:flex;flex-wrap:wrap;gap:4px 8px;margin-top:3px;font-size:11px;color:#8A948D}
.wk2-tl2 .mt .tp{font-style:normal;color:#5C6B62;background:#F1F5F2;border-radius:5px;padding:0 5px}
.wk2-tl2 .mt .nt{color:#6F7C74;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}
.wk2-tl2 .ed{flex:0 0 auto;font-size:12px;opacity:.3}
.wk2-tl2:hover .ed{opacity:.8}
@media (max-width:640px){
  .wk2-tl2{gap:8px;padding:8px}
  .wk2-tl2 .tm{flex:0 0 82px}
  .wk2-tl2 .mt .nt{max-width:120px}
  .wk2-qbtn{padding:2px 7px;font-size:11px}
}
.wk2-amask{position:fixed;inset:0;background:rgba(18,28,22,.34);z-index:120}
.wk2-amask[hidden]{display:none!important}
.wk2-asheet{position:fixed;left:8px;right:8px;bottom:10px;z-index:121;background:#fff;border-radius:18px;
  box-shadow:0 12px 40px rgba(15,35,25,.22);max-width:520px;margin:0 auto}
.wk2-asheet[hidden]{display:none!important}
.wk2-asheet .hd{display:flex;align-items:center;padding:12px 14px 6px}
.wk2-asheet .hd b{font-size:14px}
.wk2-asheet .hd .x{margin-left:auto;border:none;background:transparent;font-size:16px;color:#8A948D;cursor:pointer}
.wk2-asheet .bd{padding:4px 14px 8px}
.wk2-asheet .row{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.wk2-asheet .row label{flex:0 0 34px;font-size:12px;color:#6F7C74}
.wk2-asheet .row input{flex:1 1 auto;min-width:0;border:1px solid #E3E8E5;border-radius:8px;padding:7px 9px;font-size:13px}
.wk2-asheet .row input:focus{outline:none;border-color:#16A34A;box-shadow:0 0 0 3px rgba(22,163,74,.12)}
/* ★ 反馈 #343①（2026-10-23）：开始/结束旁的「现在」、内容联想下拉、数量单位 */
.wk2-asheet .wk2-tw{flex:1 1 0;min-width:0;display:flex;align-items:center;gap:4px}
.wk2-asheet .wk2-tw input{flex:1 1 auto;min-width:0}
.wk2-asheet .wk2-now{flex:0 0 auto;border:1px solid #CFE7D8;background:#F4FBF7;color:#137a37;
  border-radius:8px;padding:6px 7px;font:inherit;font-size:11.5px;cursor:pointer;white-space:nowrap}
.wk2-asheet .wk2-now:active{background:#DCF3E5}
.wk2-asheet .wk2-sugw{position:relative;flex:1 1 auto;min-width:0;display:block}
.wk2-asheet .wk2-sugw input{width:100%;box-sizing:border-box}
.wk2-as-sug{position:absolute;left:0;right:0;top:calc(100% + 4px);background:#fff;border:1px solid #E3E8E5;
  border-radius:11px;box-shadow:0 10px 26px rgba(20,40,30,.16);max-height:240px;overflow:auto;z-index:130;padding:4px}
.wk2-as-sug[hidden]{display:none!important}
.wk2-as-sug button{display:block;width:100%;text-align:left;border:0;background:none;font:inherit;font-size:13px;
  padding:8px 9px;border-radius:8px;cursor:pointer;color:#374151;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wk2-as-sug button em{font-style:normal;font-size:10.5px;color:#8A948D;background:#F1F5F2;border-radius:5px;
  padding:1px 5px;margin-right:6px}
.wk2-as-sug button.hl,.wk2-as-sug button:hover{background:#F0F8F3;color:#137a37}
.wk2-asheet .wk2-unit{flex:0 0 64px!important;max-width:64px}
.wk2-asheet .ft{display:flex;gap:10px;padding:6px 14px calc(14px + env(safe-area-inset-bottom))}
.wk2-asheet .ft .del{border:1px solid #F0D6D6;background:#fff;color:#C0392B;border-radius:10px;padding:9px 14px;font-size:13px}
.wk2-asheet .ft .ok{flex:1;border:none;background:#16A34A;color:#fff;border-radius:10px;padding:9px;font-size:14px;font-weight:600}
/* ★ #308②尾巴：本周板块里列出「每周」事项（预计时长跟在后面） */
.wk2-wk-wi{display:block;font-size:11.5px;line-height:1.5;color:#2C4A3B;background:#F0F7F2;
  border:1px solid #DCEBE1;border-radius:8px;padding:4px 7px;margin-bottom:6px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wk2-wk-wi b{font-weight:600;color:#16A34A;margin-right:2px}
.wk2-wk-wi i{font-style:normal;color:#8A948D;margin-left:4px;font-size:10.5px}
.wk2-wk-wi.done{opacity:.6;text-decoration:line-through}

/* ============================ #313④ 共用日期时间弹层（dtsheet.js） ============================ */
/* ★ 2026-10-21 她实测：事项库那个面板 z-index 是 8000/8001，共用弹层原来只有 70 →
   弹层跑到面板后面，手机上看不见/点不动。这里的层级必须压过 li-sheet。 */
.dts-mask{z-index:9000}
.dts-sh{max-width:520px;max-height:88vh}
@media (max-width:560px){.dts-sh{max-height:92vh}}
.dts-range{display:flex;align-items:center;gap:8px;margin:10px 14px 2px;padding:9px 11px;
  border:1px solid var(--line);background:#fbfaf8;border-radius:11px;flex-wrap:wrap}
.dts-range.is-range{border-color:#8fd3b2;background:#f4fbf7}
.dts-rlab{font-size:12px;color:var(--muted);flex:0 0 auto}
.dts-din{border:1px solid var(--line);border-radius:8px;padding:5px 7px;font:inherit;font-size:13.5px;
  background:#fff;color:var(--text);font-variant-numeric:tabular-nums;flex:1 1 118px;min-width:0}
.dts-arrow{color:#9aa3a0;font-size:13px}
.dts-tip{margin-left:auto;font-size:11px;color:#b6bdb9}
.dts-rows{border-top:1px solid var(--line);margin-top:8px}
.dts-row{display:flex;align-items:center;gap:10px;width:100%;padding:12px 14px;border:0;
  border-bottom:1px solid var(--line);background:#fff;font:inherit;text-align:left;cursor:pointer}
.dts-row:active{background:#f7f8f7}
.dts-row .dts-k{font-size:13px;color:var(--muted);flex:0 0 42px}
.dts-row .dts-v{font-size:14px;font-weight:600;color:var(--text);overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto}
.dts-row i{font-style:normal;color:#c9c7c2;font-size:16px}
.dts-list{padding:10px 14px 14px;max-height:74vh;overflow:auto}
.dts-cd{display:flex;align-items:center;gap:10px;width:100%;border:1px solid var(--line);border-radius:12px;
  padding:11px 13px;margin-bottom:8px;background:#fff;font:inherit;text-align:left;cursor:pointer}
.dts-cd .nm{font-size:14px;color:var(--text)}
.dts-cd.on{border-color:#8fd3b2;background:#f6fbf8}
.dts-cd .rd{margin-left:auto;width:17px;height:17px;border-radius:50%;border:1.5px solid #d3dad6;flex:0 0 17px}
.dts-cd.on .rd{border-color:var(--focus);background:var(--focus);box-shadow:inset 0 0 0 3px #fff}
.dts-cd .dts-din,.dts-cd .dts-nin{margin-left:auto}
.dts-nin{width:64px;border:1px solid var(--line);border-radius:8px;padding:5px 7px;font:inherit;font-size:13.5px}
.dts-week{display:flex;gap:6px;padding:2px 0 10px}
.dts-wd{width:36px;height:32px;border-radius:9px;border:1px solid var(--line);background:#fff;
  font:inherit;font-size:13px;color:#4b5563;cursor:pointer}
.dts-wd.on{background:var(--focus);border-color:var(--focus);color:#fff;font-weight:600}
.dts-custom{font-size:13px;color:#4b5563;padding:4px 2px 10px;display:flex;align-items:center;gap:6px}
.dts-custom input[type=number]{width:64px;border:1px solid var(--line);border-radius:8px;padding:5px 7px;font:inherit}
.dts-custom select{border:1px solid var(--line);border-radius:8px;padding:5px 7px;font:inherit;background:#fff}
.dts-sect{font-size:12px;color:var(--muted);padding:8px 2px 6px}

/* #313④ 日历里「日期范围」的标记 */
.ci.rng{border-left:2px solid #8fd3b2;padding-left:4px}
.wk2-rngbox{margin-top:10px;border-top:1px dashed #eef1ef;padding-top:8px}
.wk2-rngbox h4{margin:0 0 6px;font-size:12.5px;color:#8a938f;font-weight:600}

/* #313④ 日历 月/周/日 视图 */
.calvbox{display:inline-flex;gap:4px;margin-left:6px}
.calv{border:1px solid var(--line);background:#fff;border-radius:8px;padding:4px 10px;font-size:13px;color:#4b5563;cursor:pointer}
.calv.on{background:#e8f5ee;border-color:#8fd3b2;color:#1d7a52;font-weight:600}
.caltoday{border:1px solid var(--line);background:#fff;border-radius:8px;padding:4px 10px;font-size:13px;margin-left:6px;cursor:pointer}
.wk2-week{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.wk2-wcol{border:1px solid #eef1ef;border-radius:10px;padding:6px;min-height:170px;background:#fff}
.wk2-wcol.t{border-color:#2e9e6b;box-shadow:0 0 0 2px rgba(46,158,107,.10)}
.wk2-wcol.sel{background:#eef8f2}
.wk2-wcolh{font-size:12px;color:#8a938f;margin-bottom:6px;white-space:nowrap}
.wk2-dayview{display:flex;flex-direction:column;gap:2px;background:#fff;border:1px solid #eef1ef;border-radius:12px;padding:8px 10px}
.wk2-drow{display:flex;align-items:center;gap:8px;padding:9px 4px;border-bottom:1px dashed #eef1ef}
.wk2-drow:last-child{border-bottom:0}
.wk2-drow .r{margin-left:auto;font-size:12px;color:#8a938f}
.wk2-drow.done b{text-decoration:line-through;color:#9aa3a0}
.wk2-drow .dot.k-lib{background:#2f5fbe}
@media (max-width:760px){
  .wk2-week{grid-template-columns:1fr 1fr}
  .wk2-wcol{min-height:auto}
}

/* ===== #360①（2026-10-25）工作日志：开始/结束「现在」按钮 + 内容联想下拉 ===== */
.lg-now{border:1px solid #E3E8E5;background:#fff;border-radius:999px;padding:2px 10px;margin-left:4px;
  font:inherit;font-size:12px;color:#137a37;cursor:pointer;white-space:nowrap}
.lg-now:active{background:#F0F8F3}
.lg-sug{margin:-2px 0 8px;max-height:32vh;overflow:auto;border:1px solid #E7ECE8;border-radius:11px;
  background:#fff;padding:4px;display:flex;flex-direction:column;gap:2px;
  box-shadow:0 6px 16px rgba(20,40,30,.08)}
.lg-sug[hidden]{display:none}
.lg-sg{display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:0;background:transparent;
  border-radius:8px;padding:8px 9px;font:inherit;font-size:14px;color:#25322b;cursor:pointer}
.lg-sg.hl,.lg-sg:hover{background:#F0F8F3;color:#137a37}
.lg-sgt{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lg-sgs{flex:0 0 auto;font-style:normal;font-size:11.5px;color:#9aa7a0}

/* ===== #360③④（2026-10-25）投资分红：左栏拖动 + 表格横向滚动固定列 ===== */
body.dv-navdnd,body.dv-navdnd *{user-select:none !important;cursor:grabbing !important}
body.dv-navdnd .dv-item{pointer-events:auto}
.dv-tbl th.idx,.dv-tbl td.idx{position:sticky;left:0;z-index:6;background:#fff}
.dv-tbl th.idx{background:#F2F6F3;z-index:7}
.dv-tbl th.ckc,.dv-tbl td.ckc{position:sticky;left:0;z-index:7;background:#fff}
.dv-tbl th.ckc{background:#F2F6F3}
.dv-tbl th[data-sk="prop_name"],.dv-tbl th.pnstick,.dv-tbl th[data-ff="prop"],
.dv-tbl td.pn{position:sticky;left:36px;z-index:6;background:#fff;box-shadow:1px 0 0 #DFE8E2}
.dv-tbl th[data-sk="prop_name"],.dv-tbl th.pnstick,.dv-tbl th[data-ff="prop"]{background:#F2F6F3;z-index:7}
.dv-tbl.dv-settle th.idx,.dv-tbl.dv-settle td.idx{left:34px}
.dv-tbl.dv-settle th[data-sk="prop_name"],.dv-tbl.dv-settle td.pn{left:70px}
.dv-tbl tfoot td.idx,.dv-tbl tfoot td.pn{position:sticky;z-index:6;background:#fff}

/* ★ 反馈 #482⑥（2026-10-28）她报：冻结的房源列「会跑到表头上面、还压住下面的合计行」。
   真因：只有部分表头单元格带 .pnstick 类，别的情况下表头是普通 th（没定位、没层级），
   而正文里的 td.pn 是 sticky＋z-index:6 —— 一滚就在表头/合计行上面画。
   现在按「层」统一管死：表头 9/10 ＞ 合计行 7/8 ＞ 正文冻结列 5，谁也不会盖谁。 */
.dv-tbl thead th{position:sticky;top:0;z-index:9;background:#F2F6F3}
.dv-tbl thead th.idx,.dv-tbl thead th.ckc,.dv-tbl thead th.pnstick,
.dv-tbl thead th[data-sk="prop_name"],.dv-tbl thead th[data-ff="prop"]{z-index:10}
.dv-tbl tbody td.idx,.dv-tbl tbody td.ckc,.dv-tbl tbody td.pn{z-index:5}
.dv-tbl tfoot td{position:relative !important;z-index:7 !important;background:#fff}
.dv-tbl tfoot td.idx,.dv-tbl tfoot td.pn,.dv-tbl tfoot td.ckc{z-index:8 !important}
/* ★ #179（2026-10-28）：整行 hover 要高亮得**一致** —— 冻结列（#／房源）原来用 #FBFAF7 米色，
   跟其它列的 #E8F4EC 对不上，看着像「只有部分列变色」。统一成同一个绿，并给冻结列补上下描边。 */
.dv-tbl tr:hover>td.pn,.dv-tbl tr:hover>td.idx{background:#E8F4EC;
  border-top:1px solid #D7EADE;border-bottom:1px solid #D7EADE}

/* ★ 反馈 #480①B（2026-10-28）：月度分红表「实际 / 预估」两列并排 ——
   月份是两行表头（上：2026年10月；下：实际 | 预估），预估一律灰字，一眼分得清哪个是真到账。 */
.dv-montbl thead .mo-h1 th{border-bottom:1px solid #E6EDE8;font-weight:600}
.dv-montbl thead .mo-h2 th.mo-a{color:#2c3a31}
.dv-montbl thead .mo-h2 th.mo-e{color:#9aa39d;font-weight:500}
.dv-montbl thead .mo-h2 th.mo-a,.dv-montbl thead .mo-h2 th.mo-e{
  border-left:1px dashed #EDF1EE;font-size:11.5px;padding-top:2px;padding-bottom:2px}
.dv-montbl tbody td.estv,.dv-montbl tfoot td.estv{color:#98a29c}
.dv-montbl tbody td{white-space:nowrap}

/* ================= ★ #366②（2026-10-25 Lisa）：列表整行高亮＝全站标准 =================
   她原话：「鼠标所在行整行浅绿底 + 左侧一条绿色标识线…这个功能非常好，
   加入列表页面的标准要求里；并且把所有列表页面都做出这个效果。」
   做法：用 background-image 半透明覆盖层叠在原有底色上 —— 不覆盖她手工标的色块/状态色，
   只加一层浅绿；首列加 3px 内阴影当左侧标识线。所有 <table> 列表统一生效。 */
@media (hover:hover) and (pointer:fine){
  table tbody tr:hover > td{
    background-image:linear-gradient(rgba(76,175,125,.13),rgba(76,175,125,.13));
  }
  table tbody tr:hover > td:first-child{
    box-shadow:inset 3px 0 0 #4CAF7D;
  }
  /* 首列本来就是 sticky 的表（分红、需求…）也保持标识线在最左可见 */
  table tbody tr:hover > th:first-child{background-image:linear-gradient(rgba(76,175,125,.13),rgba(76,175,125,.13))}
}

/* ============================================================================
   预估分红「收支明细」独立页 + 一套房源「应收/应付」页 —— Lisa 反馈 #411（2026-10-26）
   业主支出＝负数（红）、租客收入＝正数（绿），全部记在一张表里
   ============================================================================ */
.dvx-top{display:flex;align-items:center;gap:8px;padding:8px 2px 2px}
.dvx-back{border:1px solid var(--line);background:#fff;border-radius:9px;padding:5px 11px;
  font-size:13px;font-family:inherit;color:var(--text);cursor:pointer}
.dvx-head{padding:2px 2px 8px}
.dvx-head h2{margin:0;font-size:16.5px;font-weight:700;line-height:1.35}
.dvx-head h2 a{color:#137a37;text-decoration:none;border-bottom:1px dashed #9fc9b0}
.dvx-sub{font-size:12px;color:#7e8d84;margin-top:4px;display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.dvx-mini{border:1px solid #cfe6d8;background:#EAF5EE;color:#137a37;border-radius:8px;
  padding:2px 8px;font-size:11.5px;font-family:inherit;cursor:pointer}
.dvx-sum{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 10px}
.dvx-s{background:#fff;border:1px solid #E1EDE6;border-radius:12px;padding:9px 11px}
.dvx-s i{display:block;font-style:normal;font-size:11.5px;color:#7e8d84;margin-bottom:2px}
.dvx-s b{font-size:16px;font-variant-numeric:tabular-nums;font-weight:700}
.dvx-s u{display:block;text-decoration:none;font-size:10.5px;color:#a3aea7;margin-top:2px}
.dvx-sec{background:#fff;border-radius:13px;box-shadow:0 1px 3px rgba(20,40,30,.06);
  padding:10px 10px 6px;margin-bottom:10px}
.dvx-hd{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}
.dvx-hd h5{margin:0;font-size:13px;color:#3f4f45}
.dvx-note{margin-left:auto;font-size:11px;color:#8a9690}
.dvx-note .neg{color:#c0392b}
.dvx-note .pos{color:#137a37}
.dvx-wrap{overflow:auto;max-height:calc(100vh - 120px)}
.dvx-tbl{width:100%;border-collapse:collapse;font-size:12px}
.dvx-tbl th{position:sticky;top:0;z-index:2;background:#F2F6F3;text-align:left;padding:7px 7px;
  font-weight:600;color:#4a5a51;white-space:nowrap}
.dvx-tbl td{padding:6px 7px;border-bottom:1px solid #f0f2f0;white-space:nowrap}
.dvx-tbl th.n,.dvx-tbl td.n{text-align:right;font-variant-numeric:tabular-nums}
.dvx-tbl td.i,.dvx-tbl th.i{width:36px;color:#98a49c}
.dvx-tbl td.neg{color:#c0392b}
.dvx-tbl td.pos{color:#137a37}
.dvx-tbl td.note{white-space:normal;max-width:220px;color:#7b8a81}
.dvx-tbl td.k-in{color:#137a37}
.dvx-tbl td.k-out{color:#c0392b}
.dvx-tbl td.dim{color:#C2CCC6;text-align:center}
.dvx-tbl tfoot td{font-weight:700;background:#F7FAF8;border-top:1px solid #e6ece8}
@media(max-width:900px){
  .dvx-sum{grid-template-columns:repeat(2,1fr)}
  .dvx-tbl td,.dvx-tbl th{padding:6px 6px}
  .dvx-wrap{max-height:none}
}

/* ── 键盘焦点可见（2026-10-28 可用性体检 P0 · #469）──────────────
   之前全站 52 处 outline:none 却没一条 :focus-visible，Tab 走一圈看不见焦点。
   鼠标点击不出圈，只有键盘/读屏导航才显示描边。 */
/* ★ 反馈 #480②（2026-10-28）：下面这条全局焦点绿框很有用（按钮/输入框键盘走位能看到在哪），
   但它也套到了**笔记正文编辑区**上 —— 电脑端一进编辑，整块正文被一个绿色方框框住，
   她说「出来一个很大的框，我不喜欢」。可编辑区一律不画这个框（有光标在，不缺指示）。 */
.fb-editor:focus-visible,
.nk-edit-body:focus-visible,
[contenteditable="true"]:focus-visible{outline:none !important;outline-offset:0 !important}
:focus-visible{outline:2px solid #16A34A !important;outline-offset:2px}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,
textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid #16A34A !important;outline-offset:2px;border-radius:3px}
:focus:not(:focus-visible){outline:none}

/* ============================ ★ #206（2026-10-28）日期弹层里的「时间」行 ============================ */
/* 她的原话：「点日历下面的【时间】这里能直接点击设置时间，把时间段的设置也放在这行，点击能直接修改」。
   原来这一行是 <input type="time">，手机上是「请输入时间」的键盘样式、也改不了时间段。 */
.dts-sh{position:relative}
.dts-row.is-on .dts-v{color:var(--focus)}
.dts-timepop{position:absolute;left:8px;right:8px;bottom:8px;background:#fff;border-radius:14px;
  box-shadow:0 10px 30px rgba(0,0,0,.18);border:1px solid var(--line);padding:10px 12px 12px;z-index:5}
.dts-timepop[hidden]{display:none !important}
.dts-tp-hd{display:flex;align-items:center;justify-content:space-between;padding:2px 2px 8px}
.dts-tp-hd b{font-size:14px}
.dts-tp-x{border:0;background:none;font-size:15px;color:var(--muted);cursor:pointer;padding:0 4px}
.dts-tp-modes{display:flex;gap:6px;margin-bottom:8px}
.dts-tp-m{flex:1 1 auto;border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 4px;
  font:inherit;font-size:12.5px;color:var(--muted);cursor:pointer}
.dts-tp-m.on{border-color:#16A34A;background:#F0F8F3;color:#137A37;font-weight:600}
.dts-tp-line{display:flex;align-items:center;gap:8px;padding:4px 0}
.dts-tp-k{font-size:12.5px;color:var(--muted);flex:0 0 34px}
.dts-tp-sel{border:1px solid var(--line);border-radius:8px;padding:5px 4px;font:inherit;font-size:14px;
  background:#fff;font-variant-numeric:tabular-nums;min-width:58px}
.dts-tp-col{color:#9aa3a0}
.dts-tp-now{margin-left:auto;border:1px solid var(--line);background:#fff;border-radius:8px;
  padding:5px 10px;font:inherit;font-size:12.5px;color:var(--muted);cursor:pointer}
.dts-tp-acts{display:flex;gap:8px;justify-content:flex-end;margin-top:10px}
.dts-tp-c,.dts-tp-ok{border-radius:10px;padding:8px 16px;font:inherit;font-size:13.5px;cursor:pointer}
.dts-tp-c{border:1px solid var(--line);background:#fff;color:var(--muted)}
.dts-tp-ok{border:0;background:#16A34A;color:#fff;font-weight:600}

/* ===== #480②（2026-10-28 Lisa）：「笔记编辑页在电脑端会有框，不喜欢」=====
   ① 顶上「笔记本」那个按钮：去掉 1px 边框和圆角，改成文字链接样式（点一下还是能换本）
   ② 三栏页正在编辑的那一行：原来有淡绿底 + 左侧 2px 绿条（就是她说的「框」），去掉，只留光标 */
.nt-nbrow button{border:none;background:transparent;border-radius:0;padding:2px 0;
  color:#2e9e6b;font-weight:600;text-decoration:underline;text-decoration-style:dotted;
  text-underline-offset:3px;text-decoration-thickness:1px}
.lm-root .lm-active{background:transparent;box-shadow:none;padding-left:2px}
/* 手机端需求卡片左侧的固定编号（#480③） */
.rq-no{color:#9aa0a6;font-size:12px;margin-right:6px;font-variant-numeric:tabular-nums}

/* ================= ★ 反馈 #482③：笔记内 [[ 引用（Obsidian 式） ================= */
.wk-panel{position:fixed;z-index:9999;background:#fff;border:1px solid #E3E8E5;border-radius:12px;
  box-shadow:0 10px 30px rgba(20,40,30,.14);overflow:hidden}
.wk-it{padding:7px 10px;cursor:pointer;display:flex;align-items:baseline;gap:6px;font-size:13px}
.wk-it+.wk-it{border-top:1px solid #F2F5F3}
.wk-it.on,.wk-it:hover{background:#EEF7F0}
.wk-it b{font-weight:600;color:#1f2d26;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wk-sub{margin-left:auto;flex:0 0 auto;font-size:11px;color:#9aa7a0}
a.wk-link{color:#137a37;border-bottom:1px dashed #9fd0ae;text-decoration:none}
a.wk-link:hover{background:#EEF7F0}
span.wk-miss{color:#b06a3b;border-bottom:1px dotted #d9b8a0}
.wk-back{margin:14px 0 0;padding:10px 12px;background:#FAFBFA;border:1px solid #EDF1EE;border-radius:12px}
.wk-back-hd{font-size:13px;font-weight:600;color:#3c4a42;margin-bottom:6px}
.wk-back-it{display:flex;gap:8px;align-items:baseline;padding:3px 0;font-size:13px;color:#1f2d26;text-decoration:none}
.wk-back-it span{margin-left:auto;font-size:11.5px;color:#9aa7a0}

/* ================= ★ 反馈 #489②（2026-10-28）：全站搜索框后面挂「一键清空」✕ ================= */
.qclr-box{position:relative;display:inline-flex;align-items:center;min-width:0;max-width:100%}
.qclr-box>input{flex:1 1 auto;min-width:0;padding-right:26px !important;box-sizing:border-box}
.qclr-x{position:absolute;right:3px;top:50%;transform:translateY(-50%);width:19px;height:19px;border:none;
  border-radius:50%;background:#e9e9e6;color:#5f6469;font-size:10.5px;line-height:1;cursor:pointer;padding:0;
  display:flex;align-items:center;justify-content:center;font-family:inherit}
.qclr-x:hover{background:#2e9e6b;color:#fff}
.qclr-x[hidden]{display:none}
/* ================= ★ 反馈 #489③：筛选弹层「明明有空间却折成两行」 =================
   手机端（≤640px）整组筛选项一律不换行、横向滑动 —— 永远一行，不再出现 2 行。 */
@media (max-width:640px){
  .ut-pop{padding:8px 8px}
  .ut-pop-row{padding:4px 0;gap:6px}
  .ut-pop-k{flex:0 0 40px;font-size:12px;padding-top:4px}
  .ut-pop-c{gap:5px;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;
    -webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px}
  .ut-pop-c::-webkit-scrollbar{display:none}
  .ut-fc{padding:3px 7px;font-size:11.5px;white-space:nowrap;flex:0 0 auto}
}

/* ================= ★ 需求 #223（反馈 #482②）：记账单据照片 =================
   录入页第 4 个字段「照片」→ 底部弹层里多选/删除/点开大图；首页列表带 📷N 徽标。
   复用 .fb-lightbox 看大图，不另造一套。 */
.mn2-phstrip{display:flex;gap:6px;overflow-x:auto;padding:2px 0 6px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.mn2-phstrip[hidden]{display:none !important}
.mn2-phstrip::-webkit-scrollbar{display:none}
.mn2-ph{flex:0 0 auto;width:44px;height:44px;padding:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff}
.mn2-ph img{width:100%;height:100%;object-fit:cover;display:block}
.mps-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:2px 0 8px;max-height:44vh;overflow:auto}
.mps-i{position:relative;aspect-ratio:1/1;border-radius:10px;overflow:hidden;background:#f3f2ee}
.mps-im{width:100%;height:100%;padding:0;border:0;background:transparent}
.mps-im img{width:100%;height:100%;object-fit:cover;display:block}
.mps-x{position:absolute;top:3px;right:3px;width:20px;height:20px;border-radius:50%;border:0;
  background:rgba(0,0,0,.55);color:#fff;font-size:11px;line-height:20px;padding:0;text-align:center}
.mps-empty{grid-column:1/-1;padding:16px 0;text-align:center;color:var(--muted);font-size:12.5px}
.ms-add{flex:1 1 auto;height:36px;border:1px dashed var(--line);border-radius:10px;background:#fff;font-size:13px;color:var(--text)}
/* 首页列表：📷N 徽标（只在有照片时出现） */
.mg-ph{flex:0 0 auto;margin-left:4px;padding:2px 5px;border:0;border-radius:8px;background:transparent;
  font-size:11.5px;color:var(--muted);line-height:1.2}
.mg-photon{max-width:100%}
/* 照片查看层：缩略图网格，点一张看大图 */
.mg-phbox{position:fixed;inset:0;z-index:1200;background:rgba(0,0,0,.72);display:flex;align-items:center;justify-content:center;padding:18px}
.mg-phgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;width:100%;max-width:520px;
  max-height:78vh;overflow:auto;background:#fff;border-radius:14px;padding:10px}
.mg-phit{aspect-ratio:1/1;padding:0;border:0;border-radius:9px;overflow:hidden;background:#f3f2ee}
.mg-phit img{width:100%;height:100%;object-fit:cover;display:block}

/* ★ 反馈 #225（2026-10-29）：笔记正文「选中文字 → 浮动格式条」（WPS 式）
   B 加粗 / A 字体颜色 / ▨ 底色 / ✕ 清除格式。深色小条，悬浮在选区上方（放不下就放下方）。 */
.lpfmt{position:fixed;z-index:9000;flex-direction:column;background:#2f2f2d;border-radius:10px;
  padding:3px;box-shadow:0 6px 18px rgba(0,0,0,.30);font-size:13px;line-height:1;
  -webkit-user-select:none;user-select:none}
.lpfmt-row{display:flex;align-items:center;gap:2px}
.lpfmt-row button{display:flex;align-items:center;justify-content:center;width:34px;height:28px;
  border:0;background:transparent;color:#f4f3f0;border-radius:6px;font-size:14px;cursor:pointer;padding:0}
.lpfmt-row button i{font-style:normal;font-size:8px;opacity:.6;margin-left:1px}
.lpfmt-row button em{font-style:normal;font-size:13px}
.lpfmt-row button:hover{background:rgba(255,255,255,.15)}
.lpfmt-sub{gap:4px;padding:5px 4px 3px}
.lpfmt-sw{width:22px;height:20px;border:1px solid rgba(255,255,255,.5);border-radius:5px;cursor:pointer;padding:0}
