/* ============================================================
   硕博工作台 · 浅绿渐变主题
   ============================================================ */
:root {
  --g1: #e8f5e9;
  --g2: #c8e6c9;
  --g3: #a5d6a7;
  --g4: #81c784;
  --g5: #66bb6a;
  --g6: #4caf50;
  --g7: #2e7d32;
  --ink: #1b3a24;
  --ink-soft: #3e5c49;
  --ink-faint: #7c9b88;
  --card: rgba(255, 255, 255, 0.86);
  --card-solid: #ffffff;
  --gold: #d4a017;
  --red: #e53935;
  --radius: 16px;
  --shadow: 0 4px 20px rgba(46, 125, 50, 0.12);
  --shadow-lg: 0 10px 32px rgba(46, 125, 50, 0.18);
}

/* ============ 主题配色切换（合并自「个人效率工作台」） ============ */
[data-theme="blue"] {
  --g1:#e8f1fb; --g2:#c7ddf7; --g3:#9ec6f3; --g4:#6faef0; --g5:#4a96ec; --g6:#2f7fe0; --g7:#1b5fc0;
  --ink:#16263f; --ink-soft:#36506e; --ink-faint:#7e93ad;
  --shadow: 0 4px 20px rgba(27, 95, 192, .12);
  --shadow-lg: 0 10px 32px rgba(27, 95, 192, .18);
}
[data-theme="teal"] {
  --g1:#e3f5f3; --g2:#bfeae6; --g3:#92dad4; --g4:#5fc4bc; --g5:#36aaa1; --g6:#1f8f87; --g7:#0e6f68;
  --ink:#0c3330; --ink-soft:#2f5551; --ink-faint:#729a95;
  --shadow: 0 4px 20px rgba(14, 111, 104, .12);
  --shadow-lg: 0 10px 32px rgba(14, 111, 104, .18);
}

/* 主题配色选择器 */
.theme-seg { display: flex; gap: 8px; flex-wrap: wrap; }
.theme-btn {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 9px 14px; border: 2px solid var(--g3); border-radius: 12px;
  background: #fff; color: var(--ink); font-size: 13px; cursor: pointer; transition: .15s;
}
.theme-btn.on { border-color: var(--g6); background: var(--g1); font-weight: 600; }
.theme-dot { width: 16px; height: 16px; border-radius: 50%; display: inline-block; }

* { margin: 0; padding: 0; box-sizing: border-box; -webkit-tap-highlight-color: transparent; }

html { font-size: 16px; }

body {
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, sans-serif;
  background: linear-gradient(160deg, var(--g1) 0%, var(--g2) 45%, var(--g3) 100%) fixed;
  color: var(--ink);
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
}

/* ============ 门禁页 ============ */
#gate-screen {
  position: fixed; inset: 0; z-index: 200;
  background: linear-gradient(160deg, var(--g1) 0%, var(--g2) 50%, var(--g3) 100%);
  display: flex; align-items: center; justify-content: center; padding: 24px;
}
.gate-box {
  width: 100%; max-width: 380px; background: var(--card);
  backdrop-filter: blur(10px);
  border-radius: 24px; padding: 36px 28px; box-shadow: var(--shadow-lg);
  text-align: center;
}
.gate-logo {
  width: 84px; height: 84px; margin: 0 auto 18px; border-radius: 26px;
  background: linear-gradient(135deg, var(--g4), var(--g7));
  display: flex; align-items: center; justify-content: center;
  font-size: 40px; color: #fff; box-shadow: var(--shadow);
}
.gate-box h1 { font-size: 22px; margin-bottom: 6px; }
.gate-box p { color: var(--ink-soft); font-size: 13px; margin-bottom: 22px; line-height: 1.6; }
.gate-input {
  width: 100%; padding: 14px 16px; font-size: 16px; border: 2px solid var(--g3);
  border-radius: 14px; outline: none; background: #fff; color: var(--ink);
  margin-bottom: 12px; transition: border-color .2s;
}
.gate-input:focus { border-color: var(--g6); }
.gate-btn {
  width: 100%; padding: 14px; font-size: 16px; font-weight: 600; color: #fff;
  background: linear-gradient(135deg, var(--g5), var(--g7));
  border: none; border-radius: 14px; cursor: pointer; transition: transform .15s, box-shadow .15s;
  box-shadow: 0 4px 14px rgba(76, 175, 80, .35);
}
.gate-btn:active { transform: scale(.97); }
.gate-hint { font-size: 12px; color: var(--ink-faint); margin-top: 14px; line-height: 1.7; }
.gate-err { color: var(--red); font-size: 13px; min-height: 20px; margin-bottom: 6px; }
.gate-remember { font-size: 12px; color: var(--ink-soft); margin-bottom: 14px; text-align: left; }
.gate-remember label { display: flex; align-items: center; gap: 7px; cursor: pointer; }
.gate-remember input { width: 16px; height: 16px; accent-color: var(--g6); }

/* ============ 顶部栏 ============ */
.topbar {
  position: sticky; top: 0; z-index: 100;
  background: linear-gradient(135deg, var(--g4), var(--g7));
  color: #fff; padding: 14px 18px 16px;
  border-radius: 0 0 24px 24px; box-shadow: var(--shadow);
}
.topbar-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.topbar-date { font-size: 13px; opacity: .92; }
.topbar-week { font-size: 11px; background: rgba(255,255,255,.22); padding: 3px 9px; border-radius: 20px; }
.topbar-pts { display: flex; gap: 14px; margin-top: 10px; }
.pt-item { flex: 1; background: rgba(255,255,255,.16); border-radius: 12px; padding: 8px 10px; text-align: center; }
.pt-item b { display: block; font-size: 17px; }
.pt-item span { font-size: 10.5px; opacity: .9; }
.topbar-level { font-size: 11px; background: rgba(255,255,255,.22); padding: 3px 9px; border-radius: 20px; }

/* ============ 主容器（桌面：左侧导航） ============ */
#app { display: none; }
.app-main { margin-left: 232px; max-width: 1080px; padding: 16px 24px 40px; }
.page { display: none; max-width: 780px; margin: 0 auto; animation: fadeIn .3s ease; }
.page.active { display: block; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

/* ============ 卡片 ============ */
.card {
  background: var(--card); backdrop-filter: blur(8px);
  border-radius: var(--radius); padding: 16px; margin-bottom: 14px;
  box-shadow: var(--shadow); border: 1px solid rgba(255,255,255,.6);
}
.card-title { font-size: 14px; font-weight: 700; color: var(--ink); margin-bottom: 10px; display: flex; align-items: center; gap: 7px; }
.card-title .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--g6); }
.card-title .more { margin-left: auto; font-size: 12px; color: var(--ink-faint); font-weight: 400; }

/* 进度条 */
.bar { height: 9px; border-radius: 20px; background: #e8f0e9; overflow: hidden; position: relative; }
.bar > i { display: block; height: 100%; border-radius: 20px; background: linear-gradient(90deg, var(--g5), var(--g7)); transition: width .5s ease; }
.bar.warn > i { background: linear-gradient(90deg, #ffb74d, #ff7043); }
.bar.gold > i { background: linear-gradient(90deg, #ffd54f, var(--gold)); }

/* ============ 学业进度 ============ */
.progress-block { display: flex; align-items: center; gap: 14px; }
.progress-ring { width: 72px; height: 72px; flex-shrink: 0; position: relative; }
.progress-ring svg { transform: rotate(-90deg); }
.progress-ring .ring-txt { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 16px; font-weight: 700; color: var(--g7); }
.progress-dims { flex: 1; display: flex; flex-direction: column; gap: 7px; }
.pdim { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--ink-soft); }
.pdim .bar { flex: 1; height: 7px; }
.pdim b { width: 34px; text-align: right; color: var(--ink); }

/* ============ 计时器 ============ */
.timer-big {
  text-align: center; font-size: 46px; font-weight: 800; letter-spacing: 2px;
  font-variant-numeric: tabular-nums; color: var(--g7); padding: 4px 0 2px;
}
.timer-status { text-align: center; font-size: 12px; color: var(--ink-soft); margin-bottom: 10px; }
.timer-status .st { display: inline-block; padding: 2px 10px; border-radius: 20px; background: #e0f2e1; color: var(--g7); font-weight: 600; }
.timer-modes { display: flex; gap: 6px; justify-content: center; margin-bottom: 12px; }
.tmode { padding: 6px 12px; font-size: 12px; border-radius: 20px; background: #fff; border: 1.5px solid var(--g3); color: var(--ink-soft); cursor: pointer; transition: all .15s; }
.tmode.active { background: var(--g6); border-color: var(--g6); color: #fff; font-weight: 600; }
.timer-ctrl { display: flex; gap: 10px; justify-content: center; }
.tbtn {
  padding: 11px 22px; border-radius: 14px; border: none; font-size: 14px; font-weight: 600; cursor: pointer;
  background: linear-gradient(135deg, var(--g5), var(--g7)); color: #fff; transition: transform .12s;
}
.tbtn:active { transform: scale(.95); }
.tbtn.ghost { background: #fff; color: var(--g7); border: 1.5px solid var(--g5); }
.tbtn.red { background: linear-gradient(135deg, #ef9a9a, var(--red)); }
.timer-stats { display: flex; gap: 8px; margin-top: 12px; }
.tstat { flex: 1; text-align: center; background: #f1f8f1; border-radius: 12px; padding: 8px 4px; }
.tstat b { display: block; font-size: 15px; color: var(--ink); }
.tstat span { font-size: 10px; color: var(--ink-faint); }

/* ============ 雷达图 ============ */
#radar-wrap { display: flex; justify-content: center; }
#radar-canvas { width: 100%; max-width: 300px; height: auto; }

/* ============ 任务 ============ */
.task-card {
  border: 1.5px solid transparent; background: #fff; border-radius: 14px;
  padding: 12px 14px; margin-bottom: 10px; box-shadow: 0 2px 8px rgba(46,125,50,.08);
  transition: transform .12s, box-shadow .2s;
}
.task-card:active { transform: scale(.985); }
.task-card.bet { border-color: var(--gold); box-shadow: 0 0 0 2px rgba(212,175,23,.25), 0 4px 14px rgba(212,175,23,.18); }
.task-card.overdue { border-color: var(--red); }
.task-head { display: flex; align-items: flex-start; gap: 9px; }
.task-check {
  width: 22px; height: 22px; border-radius: 7px; border: 2px solid var(--g4); flex-shrink: 0;
  display: flex; align-items: center; justify-content: center; font-size: 13px; color: #fff; cursor: pointer;
  background: #fff; transition: all .15s; margin-top: 1px;
}
.task-check.done { background: var(--g6); border-color: var(--g6); }
.task-body { flex: 1; min-width: 0; }
.task-title { font-size: 14px; font-weight: 600; line-height: 1.45; }
.task-card.done .task-title { text-decoration: line-through; color: var(--ink-faint); }
.task-meta { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 6px; align-items: center; }
.tag { font-size: 10px; padding: 2px 8px; border-radius: 20px; background: #e8f5e9; color: var(--g7); font-weight: 600; }
.tag.pri-high { background: #ffebee; color: var(--red); }
.tag.pri-mid { background: #fff3e0; color: #e65100; }
.tag.pri-low { background: #e8f5e9; color: var(--g7); }
.tag.due { background: #f3e5f5; color: #6a1b9a; }
.tag.bet-tag { background: linear-gradient(135deg, #fff8e1, #ffecb3); color: #8d6e00; font-weight: 700; }
.tag.overdue-tag { background: var(--red); color: #fff; }
.task-prog { margin-top: 8px; display: flex; align-items: center; gap: 8px; }
.task-prog .bar { flex: 1; height: 6px; }
.task-prog b { font-size: 11px; color: var(--ink-soft); width: 34px; text-align: right; }

/* ============ 等级卡 ============ */
.level-card {
  background: linear-gradient(135deg, #dcedc8 0%, #c8e6c9 60%, #a5d6a7 100%);
  border-radius: var(--radius); padding: 18px; box-shadow: var(--shadow);
  display: flex; align-items: center; gap: 16px; margin-bottom: 14px;
}
.level-icon { width: 58px; height: 58px; border-radius: 20px; background: #fff; display: flex; align-items: center; justify-content: center; font-size: 28px; box-shadow: var(--shadow); flex-shrink: 0; }
.level-info { flex: 1; }
.level-title { font-size: 15px; font-weight: 700; }
.level-title small { font-size: 11px; color: var(--ink-soft); font-weight: 400; margin-left: 4px; }
.level-bar { margin-top: 8px; }
.level-bar .bar { background: rgba(255,255,255,.55); }
.level-sub { display: flex; justify-content: space-between; margin-top: 6px; font-size: 11px; color: var(--ink-soft); }

/* ============ 网格（导航/工具墙） ============ */
.grid2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.grid3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.grid4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.sq {
  position: relative;
  background: #fff; border-radius: 14px; padding: 14px 8px; text-align: center;
  box-shadow: 0 2px 8px rgba(46,125,50,.08); cursor: pointer; transition: transform .12s;
}
.sq:active { transform: scale(.94); }
a.sq { display: block; text-decoration: none; color: inherit; }
.sq .ic { font-size: 26px; display: block; margin-bottom: 7px; }
.sq .nm { font-size: 11.5px; font-weight: 600; color: var(--ink); line-height: 1.35; }
.sq .sub { font-size: 9.5px; color: var(--ink-faint); margin-top: 2px; }
/* 官网跳转角标：点整张卡片即跳官方站点 */
.sq .ext {
  position: absolute; top: 6px; right: 7px;
  font-size: 11px; line-height: 1; font-weight: 700; color: #fff;
  background: var(--g7); padding: 2px 5px; border-radius: 8px;
}

/* ============ 左侧导航（桌面）/ 底部导航（手机） ============ */
.sidebar {
  position: fixed; top: 0; left: 0; z-index: 120;
  width: 232px; height: 100vh;
  background: linear-gradient(180deg, var(--g4), var(--g7));
  color: #fff; display: flex; flex-direction: column;
  padding: 18px 12px; box-shadow: var(--shadow-lg);
}
.side-brand { display: flex; align-items: center; gap: 11px; padding: 8px 8px 16px; }
.side-logo { width: 42px; height: 42px; border-radius: 13px; background: rgba(255,255,255,.96); display: flex; align-items: center; justify-content: center; font-size: 22px; flex-shrink: 0; }
.side-name { font-size: 17px; font-weight: 800; letter-spacing: .5px; }
.side-nav { flex: 1; display: flex; flex-direction: column; gap: 4px; overflow-y: auto; }
.nav-item {
  display: flex; align-items: center; gap: 13px;
  padding: 12px 14px; border-radius: 13px; cursor: pointer;
  color: rgba(255,255,255,.82); transition: background .15s, color .15s;
  font-size: 14px; font-weight: 600;
}
.nav-item .ic { font-size: 20px; width: 24px; text-align: center; flex-shrink: 0; }
.nav-item .nm { white-space: nowrap; }
.nav-item:hover { background: rgba(255,255,255,.12); color: #fff; }
.nav-item.active { background: rgba(255,255,255,.96); color: var(--g7); box-shadow: 0 4px 14px rgba(0,0,0,.12); }
.side-foot { font-size: 11px; color: rgba(255,255,255,.7); padding: 12px 8px 2px; text-align: center; }

/* ============ 表格/列表 ============ */
.list-item {
  display: flex; align-items: center; gap: 10px; padding: 11px 4px;
  border-bottom: 1px solid #eef4ee; font-size: 13px;
}
.list-item:last-child { border-bottom: none; }
.list-item .lb { flex: 1; min-width: 0; }
.list-item .lb b { display: block; font-size: 13.5px; }
.list-item .lb span { color: var(--ink-faint); font-size: 11px; }
.li-right { font-size: 12px; color: var(--ink-soft); white-space: nowrap; }

/* ============ 状态徽章 ============ */
.badge { display: inline-block; font-size: 10px; padding: 2px 8px; border-radius: 20px; font-weight: 600; }
.badge.s0 { background: #eceff1; color: #607d8b; }   /* 草稿 */
.badge.s1 { background: #fff3e0; color: #e65100; }   /* 修改中 */
.badge.s2 { background: #e3f2fd; color: #1565c0; }   /* 已投 */
.badge.s3 { background: #f3e5f5; color: #6a1b9a; }   /* 返修 */
.badge.s4 { background: #e0f7fa; color: #00838f; }   /* 校样 */
.badge.s5 { background: #e8f5e9; color: var(--g7); } /* 发表 */

/* ============ 时间轴 ============ */
.timeline { position: relative; padding-left: 22px; }
.timeline::before { content: ''; position: absolute; left: 7px; top: 6px; bottom: 6px; width: 2px; background: var(--g3); border-radius: 2px; }
.tl-item { position: relative; padding-bottom: 16px; }
.tl-item::before {
  content: ''; position: absolute; left: -20px; top: 4px; width: 12px; height: 12px;
  border-radius: 50%; background: #fff; border: 3px solid var(--g4);
}
.tl-item.done::before { background: var(--g6); border-color: var(--g6); }
.tl-item.now::before { background: var(--gold); border-color: var(--gold); box-shadow: 0 0 0 4px rgba(212,175,23,.2); }
.tl-item .tl-name { font-size: 13.5px; font-weight: 600; }
.tl-item .tl-date { font-size: 11px; color: var(--ink-faint); margin-top: 2px; }
.tl-item .tl-days { font-size: 11px; color: var(--red); font-weight: 700; }
/* 学术讲座计数块 */
.lecture-counter { margin-top: 8px; padding: 8px 10px; background: #f1f8f4; border: 1px solid rgba(46,125,50,.12); border-radius: 12px; }
.lc-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.lc-num { font-size: 19px; font-weight: 800; color: var(--g7); }
.lc-num small { font-size: 12px; color: var(--ink-faint); font-weight: 600; }
.lc-btns { display: flex; gap: 6px; }
.lecture-counter .btn.small { padding: 5px 10px; min-height: 32px; }
.lecture-counter .field { margin: 6px 0 0; }
.lecture-counter .field label { display: inline; }
@media (max-width: 768px) { .lc-num { font-size: 17px; } .lecture-counter .btn.small { flex: 1; } }

/* ============ 按钮 ============ */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  padding: 11px 18px; border-radius: 13px; border: none; font-size: 14px; font-weight: 600;
  background: linear-gradient(135deg, var(--g5), var(--g7)); color: #fff; cursor: pointer;
  transition: transform .12s; box-shadow: 0 3px 10px rgba(76,175,80,.3);
}
.btn:active { transform: scale(.96); }
.btn.block { width: 100%; }
.btn.ghost { background: #fff; color: var(--g7); border: 1.5px solid var(--g5); box-shadow: none; }
.btn.small { padding: 7px 13px; font-size: 12.5px; border-radius: 10px; }
.btn.gold { background: linear-gradient(135deg, #ffd54f, #ffa000); box-shadow: 0 3px 10px rgba(255,160,0,.3); }
.btn.gray { background: linear-gradient(135deg, #bdbdbd, #757575); box-shadow: none; }

/* ============ 输入控件 ============ */
.field { margin-bottom: 12px; }
.field label { display: block; font-size: 12px; font-weight: 600; color: var(--ink-soft); margin-bottom: 5px; }
.input, textarea.input, select.input {
  width: 100%; padding: 11px 13px; font-size: 14px; border: 1.5px solid var(--g3);
  border-radius: 12px; outline: none; background: #fff; color: var(--ink); font-family: inherit;
  transition: border-color .2s;
}
.input:focus { border-color: var(--g6); }
textarea.input { min-height: 70px; resize: vertical; }

/* ============ 弹窗 ============ */
.modal-mask {
  position: fixed; inset: 0; z-index: 150; background: rgba(20,40,25,.45);
  display: flex; align-items: flex-end; justify-content: center; animation: fadeIn .2s;
}
.modal-mask.center { align-items: center; }
.modal {
  width: 100%; max-width: 520px; max-height: 86vh; overflow-y: auto;
  background: linear-gradient(170deg, #f7fbf7, #eef7ee);
  border-radius: 22px 22px 0 0; padding: 22px 18px calc(26px + env(safe-area-inset-bottom));
  box-shadow: 0 -8px 40px rgba(0,0,0,.15); animation: slideUp .28s ease;
}
.modal-mask.center .modal { border-radius: 22px; animation: popIn .25s ease; }
@keyframes slideUp { from { transform: translateY(40px); opacity: .4; } to { transform: none; opacity: 1; } }
@keyframes popIn { from { transform: scale(.9); opacity: .4; } to { transform: none; opacity: 1; } }
.modal h3 { font-size: 17px; margin-bottom: 14px; display: flex; align-items: center; justify-content: space-between; }
.modal h3 .x { width: 30px; height: 30px; border-radius: 50%; background: #e8f0e9; display: flex; align-items: center; justify-content: center; font-size: 14px; cursor: pointer; color: var(--ink-soft); }

/* ============ 弹窗-晨间 ============ */
.morning-hero { text-align: center; padding: 8px 0 4px; }
.morning-hero .big { font-size: 30px; font-weight: 800; color: var(--g7); }
.morning-hero .sub { font-size: 13px; color: var(--ink-soft); margin-top: 4px; }
.stars { font-size: 22px; letter-spacing: 2px; }
.morning-row { display: flex; justify-content: space-between; padding: 10px 2px; border-bottom: 1px dashed #d5e5d6; font-size: 13px; }
.morning-row:last-child { border-bottom: none; }
.morning-row b { color: var(--g7); }

/* ============ 复盘 ============ */
.review-q { font-size: 14px; font-weight: 700; margin: 12px 0 6px; color: var(--ink); }
.review-q span { color: var(--g7); }

/* ============ 助手页 ============ */
.assistant-suggest { background: #f1f8f1; border-radius: 13px; padding: 12px; margin-bottom: 10px; border: 1px solid #dcedc8; }
.assistant-suggest .txt { font-size: 13.5px; line-height: 1.6; color: var(--ink); }
.assistant-suggest .act { margin-top: 8px; display: flex; justify-content: flex-end; }

/* ============ 日历 ============ */
.cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.cal-head .ym { font-size: 15px; font-weight: 700; cursor: pointer; }
.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.cal-dow { text-align: center; font-size: 10px; color: var(--ink-faint); font-weight: 600; padding: 4px 0; }
.cal-cell {
  aspect-ratio: 1; border-radius: 10px; display: flex; align-items: center; justify-content: center;
  font-size: 12.5px; color: var(--ink-soft); position: relative; cursor: pointer;
  background: #fff; transition: background .15s;
}
.cal-cell.empty { background: transparent; cursor: default; }
.cal-cell.today { background: var(--g6); color: #fff; font-weight: 700; }
.cal-cell.sel { background: var(--g4); color: #fff; font-weight: 700; box-shadow: 0 0 0 2px #fff inset; }
.cal-cell .cnt { position: absolute; bottom: 3px; display: flex; gap: 2px; }
.cal-cell .cnt i { width: 4px; height: 4px; border-radius: 50%; background: var(--gold); }
.cal-cell .cnt i.done { background: var(--g6); }
.cal-cell.has-class { background: linear-gradient(135deg, #fff, #fff5e6); box-shadow: inset 0 0 0 1.5px #ffb74d; }
.cal-cell.has-class.today { box-shadow: inset 0 0 0 1.5px #ffb74d; }
.cal-cell.class-done { background: linear-gradient(135deg, #fff, #f1f8f2); box-shadow: inset 0 0 0 1.5px #81c784; }
.cal-cell.class-done.today { box-shadow: inset 0 0 0 1.5px #81c784; }
.cal-cell .class-dot { position: absolute; top: 3px; right: 3px; font-size: 9px; line-height: 1; }
.cal-cell .class-dot.done { filter: none; }

/* MPA课程卡 */
.task-card.class-card { border-left: 3px solid #ffb74d; background: #fffaf2; }
.task-card.class-card.done { opacity: .7; }
.class-tag { background: #fff3e0 !important; color: #e65100 !important; }

/* 任务/论文 行内操作按钮 */
.task-actions { display: flex; gap: 8px; margin-top: 10px; }
.mini-btn {
  flex: 1; min-height: 36px; padding: 6px 10px; border-radius: 10px; border: 1.5px solid var(--g5);
  background: #fff; color: var(--g7); font-size: 12.5px; font-weight: 600; cursor: pointer; transition: all .15s;
}
.mini-btn:active { transform: scale(.97); }
.mini-btn.danger { border-color: #ffcdd2; color: var(--red); background: #fff5f5; }
.li-actions { display: flex; gap: 6px; margin-top: 8px; justify-content: flex-end; }
.li-actions .mini-btn { flex: 0 0 auto; min-width: 40px; padding: 5px 11px; }
@media (max-width: 768px) {
  .task-actions { margin-top: 10px; }
  .mini-btn { min-height: 40px; }
  .li-actions .mini-btn { min-width: 44px; min-height: 40px; }
}


/* ============ 今天要处理 置顶区 ============ */
.today-focus-card { border: 1.5px solid var(--g4); box-shadow: 0 6px 22px rgba(46,125,50,.16); }
.tf-item { display: flex; align-items: center; gap: 10px; padding: 10px 4px; border-bottom: 1px solid #eef4ee; }
.tf-item:last-child { border-bottom: none; }
.tf-main { flex: 1; min-width: 0; }
.tf-title { font-size: 13.5px; font-weight: 600; line-height: 1.4; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tf-tag { display: inline-block; font-size: 10.5px; padding: 2px 8px; border-radius: 20px; background: #e3f2fd; color: #1565c0; font-weight: 600; margin-top: 4px; }
.tf-tag.tf-over { background: var(--red); color: #fff; }
.tf-item.over { background: linear-gradient(90deg, rgba(229,57,53,.07), transparent); border-radius: 10px; }
.tf-item.today { background: linear-gradient(90deg, rgba(102,187,106,.10), transparent); border-radius: 10px; }
.tf-acts { display: flex; gap: 6px; flex-shrink: 0; }
.tf-acts .btn.small { padding: 6px 11px; min-height: 34px; }
@media (max-width: 768px) { .tf-acts .btn.small { min-height: 40px; } }

/* ============ 流水 ============ */
.log-row { display: flex; gap: 10px; align-items: center; padding: 8px 0; border-bottom: 1px dashed #e2ede3; font-size: 12.5px; }
.log-row:last-child { border-bottom: none; }
.log-row .time { color: var(--ink-faint); width: 84px; flex-shrink: 0; font-size: 11px; }
.log-row .why { flex: 1; color: var(--ink-soft); }
.log-row .pts { font-weight: 700; width: 52px; text-align: right; }
.log-row .pts.plus { color: var(--g7); }
.log-row .pts.minus { color: var(--red); }

/* ============ 商店 ============ */
.shop-item { display: flex; align-items: center; gap: 11px; padding: 11px 2px; border-bottom: 1px solid #eef4ee; }
.shop-item:last-child { border-bottom: none; }
.shop-item .ic { font-size: 24px; width: 42px; height: 42px; border-radius: 12px; background: #f1f8f1; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.shop-item .info { flex: 1; }
.shop-item .info b { font-size: 13.5px; display: block; }
.shop-item .info span { font-size: 11px; color: var(--ink-faint); }
.shop-item .cost { font-weight: 800; color: var(--gold); font-size: 14px; }

/* ============ 其他 ============ */
.section-tag { font-size: 12px; color: var(--g7); font-weight: 700; margin: 16px 0 8px; display: flex; align-items: center; gap: 6px; }
.section-tag::before { content: ''; width: 4px; height: 14px; border-radius: 4px; background: var(--g6); }
.empty-tip { text-align: center; color: var(--ink-faint); font-size: 12.5px; padding: 22px 0; line-height: 1.7; }
.row-flex { display: flex; gap: 10px; }
.row-flex > * { flex: 1; }
.text-center { text-align: center; }
.mt8 { margin-top: 8px; } .mt12 { margin-top: 12px; } .mt16 { margin-top: 16px; }
.mb8 { margin-bottom: 8px; }
.gold-text { color: var(--gold); font-weight: 700; }
.red-text { color: var(--red); font-weight: 600; }
.faint { color: var(--ink-faint); }
.toast {
  position: fixed; left: 50%; bottom: 90px; transform: translateX(-50%) translateY(20px);
  background: rgba(27,58,36,.92); color: #fff; padding: 11px 22px; border-radius: 24px;
  font-size: 13px; z-index: 300; opacity: 0; pointer-events: none; transition: all .3s;
  max-width: 86vw; text-align: center;
}
.toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }

/* 撒花 */
#confetti-layer { position: fixed; inset: 0; z-index: 250; pointer-events: none; overflow: hidden; }
.confetti { position: absolute; width: 9px; height: 14px; border-radius: 2px; animation: fall linear forwards; }
@keyframes fall { to { transform: translateY(110vh) rotate(720deg); opacity: .2; } }

@media (min-width: 560px) {
  .modal { border-radius: 22px; margin-bottom: 0; }
}

/* ============ 文献 / 学习 / 赛博算命 新增模块 ============ */
.chip { font-size: 12px; padding: 5px 13px; border-radius: 20px; border: 1px solid #e6ebe6; background: #fff; color: var(--ink-faint); cursor: pointer; }
.chip.on { background: var(--g6); color: #fff; border-color: var(--g6); }
.timer-modes { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.lit-card, .sentence-card, .skill-card { background: #fff; border-radius: 12px; padding: 12px; box-shadow: 0 2px 8px rgba(46,125,50,.07); margin-bottom: 10px; }
.lit-head { display: flex; align-items: flex-start; gap: 8px; justify-content: space-between; }
.lit-title { font-weight: 600; font-size: 13.5px; color: var(--ink); line-height: 1.4; }
.lit-meta { font-size: 11px; color: var(--ink-faint); margin: 4px 0 6px; }
.lit-notes { background: #f7faf7; border-radius: 8px; padding: 8px 10px; font-size: 12px; color: #435; line-height: 1.6; }
.lit-notes b { color: var(--g7); }
.tag.type-精读 { background: #e3f2fd; color: #1565c0; }
.tag.type-泛读 { background: #fff3e0; color: #e65100; }
.tag.type-收藏 { background: #ede7f6; color: #6a1b9a; }
.sentence-text { font-size: 13px; color: var(--ink); line-height: 1.55; font-style: italic; }
.sentence-foot { display: flex; align-items: center; gap: 8px; justify-content: space-between; margin-top: 8px; }
.skill-name { font-weight: 600; font-size: 13.5px; }
.skill-sub { font-size: 11px; color: var(--ink-faint); margin: 3px 0 7px; }
.skill-prog { display: flex; align-items: center; gap: 8px; }
.skill-prog .bar { flex: 1; }
.skill-prog b { font-size: 12px; color: var(--g7); min-width: 34px; text-align: right; }
.fortune-stars { font-size: 22px; color: var(--gold); text-align: center; margin-bottom: 8px; }
.fortune-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; font-size: 12.5px; }
.fortune-grid b { color: var(--g7); margin-right: 4px; }
.hex-box { background: #f7faf7; border-radius: 10px; padding: 12px; line-height: 1.6; }
.hex-name { font-weight: 700; font-size: 14px; color: var(--ink); margin-bottom: 6px; }
.hex-lines { display: flex; flex-direction: column; gap: 3px; align-items: center; margin: 6px 0; font-size: 13px; letter-spacing: 2px; }
.yao.yang { color: var(--g7); } .yao.yin { color: #888; }
.hex-d { font-size: 12.5px; color: #435; }
.hex-adv { font-size: 12.5px; color: var(--g7); margin-top: 4px; }
.log-item { font-size: 12px; padding: 7px 0; border-bottom: 1px dashed #e6ebe6; display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.disclaimer { background: #fff8e1; color: #8d6e00; font-size: 11.5px; border-radius: 10px; padding: 10px 12px; margin-top: 10px; line-height: 1.6; }

/* ============ 合并模块：笔记 / 归档 / 资讯 / 股市 / 文献检索 / 英语CET-6 ============ */
.note-card { padding: 12px 14px; }
.note-card .n-title { font-weight: 700; color: var(--ink); font-size: 14.5px; }
.note-card .n-body { font-size: 13px; color: var(--ink-soft); margin: 6px 0; white-space: pre-wrap; line-height: 1.55; }
.note-card .n-foot { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; font-size: 11.5px; color: var(--ink-faint); }
.n-tag { background: var(--g2); color: var(--g7); border-radius: 6px; padding: 1px 7px; font-size: 11px; }
.n-time { margin-left: auto; }
.note-card .x { background: none; border: none; color: #bbb; font-size: 16px; cursor: pointer; line-height: 1; padding: 0 2px; }
.note-card .x:hover { color: #e57373; }

.arc-card { padding: 12px 14px; }
.arc-card .a-title { font-weight: 700; color: var(--ink); font-size: 14px; }
.arc-card .a-meta { font-size: 12px; color: var(--ink-faint); margin-top: 4px; display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.arc-cat { background: var(--g3); color: #fff; border-radius: 6px; padding: 1px 8px; font-size: 11px; }
.arc-card a.link { font-size: 12px; }

.news-card { padding: 12px 14px; }
.news-card .nw-title { font-weight: 700; color: var(--ink); font-size: 14px; line-height: 1.45; }
.news-card .nw-en { font-size: 12px; color: var(--ink-faint); margin-top: 3px; font-style: italic; }
.news-card .nw-foot { display: flex; gap: 8px; font-size: 11.5px; color: var(--ink-faint); margin-top: 6px; align-items: center; }
.nw-tag { background: var(--g2); color: var(--g7); border-radius: 6px; padding: 1px 7px; font-size: 11px; }

.mkt-row { display: flex; align-items: center; gap: 10px; padding: 10px 4px; border-bottom: 1px dashed #e6ebe6; }
.mkt-name { font-weight: 600; font-size: 13.5px; color: var(--ink); }
.mkt-code { font-size: 11px; color: var(--ink-faint); }
.mkt-price { margin-left: auto; font-weight: 700; font-variant-numeric: tabular-nums; }
.mkt-chg { font-size: 12px; font-variant-numeric: tabular-nums; min-width: 64px; text-align: right; }
.up { color: #e53935; }      /* A股：红涨 */
.down { color: #2e7d32; }    /* A股：绿跌 */
.mkt-spark { display: flex; align-items: flex-end; gap: 2px; height: 22px; }
.mkt-spark i { width: 3px; border-radius: 1px; display: block; background: var(--g4); }

/* 文献检索 */
.paper { padding: 11px 14px; border: 1px solid #eef2ee; border-radius: 12px; margin-bottom: 10px; background: #fff; }
.paper.starred { border-color: var(--g4); background: #f4fbf7; }
.paper .p-top { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin-bottom: 4px; }
.paper .p-jr { font-size: 12px; font-weight: 700; color: var(--g7); }
.m-badge { font-size: 10.5px; background: var(--g2); color: var(--g7); border-radius: 5px; padding: 1px 6px; }
.paper .p-title { font-size: 13.5px; color: var(--ink); line-height: 1.45; }
.paper .p-auth { font-size: 11.5px; color: var(--ink-faint); margin: 3px 0; }
.paper .p-foot { display: flex; gap: 12px; margin-top: 6px; align-items: center; }
.link.star.on { color: #fbc02d; font-weight: 700; }

/* 英语 CET-6 */
.cet-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.cet-box { background: var(--g1); border-radius: 12px; padding: 12px; }
.cet-h { font-weight: 700; color: var(--ink); font-size: 13.5px; }
.cet-sub { font-size: 12.5px; color: var(--g7); margin-top: 4px; }
.reading-list, .writing-list { list-style: none; margin: 8px 0 0; padding: 0; }
.reading-list li { padding: 11px 12px; border: 1px solid #eef2ee; border-radius: 12px; margin-bottom: 10px; background: #fff; }
.read-head { display: flex; justify-content: space-between; gap: 10px; }
.read-title { font-weight: 700; color: var(--ink); font-size: 13.5px; }
.read-meta { font-size: 11.5px; color: var(--ink-faint); margin-top: 3px; }
.read-meta.tiny { color: #b9c2b9; }
.read-acts { display: flex; flex-direction: column; gap: 6px; align-items: flex-end; white-space: nowrap; }
.tag-done { font-size: 11px; color: var(--g7); background: var(--g2); border-radius: 6px; padding: 1px 7px; }
.writing-list li { padding: 9px 12px; background: var(--g1); border-radius: 10px; margin-bottom: 8px; font-size: 13px; color: var(--ink-soft); border-left: 3px solid var(--g4); }

/* 主题选择器 */
.theme-row { display: flex; gap: 12px; flex-wrap: wrap; }
.theme-chip { display: flex; flex-direction: column; align-items: center; gap: 6px; cursor: pointer; font-size: 12px; color: var(--ink-soft); }
.theme-swatch { width: 46px; height: 46px; border-radius: 12px; border: 3px solid transparent; box-shadow: 0 2px 8px rgba(0,0,0,.08); }
.theme-chip.on .theme-swatch { border-color: var(--g7); }
.theme-swatch.green { background: linear-gradient(135deg, #e8f5e9, #81c784); }
.theme-swatch.blue { background: linear-gradient(135deg, #e3f2fd, #64b5f6); }
.theme-swatch.teal { background: linear-gradient(135deg, #e3f5f3, #4db6ac); }

/* 复盘 AI 行为分析 */
.rv-analysis { background: var(--g1); border-radius: 12px; padding: 12px 14px; margin-top: 12px; font-size: 12.5px; color: var(--ink-soft); line-height: 1.6; }
.rv-analysis b { color: var(--g7); }
.review-item { padding: 10px 0; border-bottom: 1px dashed #e6ebe6; }
.review-item .rv-period { font-weight: 700; font-size: 12.5px; color: var(--g7); }

@media (max-width: 560px) {
  .cet-grid { grid-template-columns: 1fr; }
}

/* 个人速览（首页） */
.quick-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.qs { background: var(--g1); border-radius: 12px; padding: 10px 6px; text-align: center; cursor: pointer; transition: transform .12s; }
.qs:active { transform: scale(.97); }
.qs-ic { font-size: 18px; display: block; }
.qs-n { display: block; font-weight: 800; font-size: 16px; color: var(--g7); margin: 2px 0; }
.qs-l { font-size: 11px; color: var(--ink-faint); }
.home-nw { font-size: 12.5px; color: var(--ink-soft); padding: 5px 0; border-bottom: 1px dashed #e6ebe6; line-height: 1.5; }
.home-nw:last-child { border-bottom: none; }

/* ============ 手机端：自动切换为底部导航，避免溢出 ============ */
@media (max-width: 768px) {
  .sidebar {
    top: auto; bottom: 0; left: 0; right: 0; width: 100%; height: auto;
    flex-direction: row; align-items: stretch;
    padding: 5px 4px calc(6px + env(safe-area-inset-bottom));
    box-shadow: 0 -4px 20px rgba(46,125,50,.1);
  }
  .side-brand, .side-foot { display: none; }
  .side-nav { flex-direction: row; gap: 0; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .nav-item {
    flex: 1 1 0; min-width: 0; flex-direction: column; gap: 2px;
    padding: 6px 2px; justify-content: center; border-radius: 11px;
    color: rgba(255,255,255,.85);
  }
  .nav-item .ic { font-size: 19px; width: auto; }
  .nav-item .nm { font-size: 9.5px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
  .nav-item.active { background: rgba(255,255,255,.96); color: var(--g7); }
  .app-main { margin-left: 0; max-width: 100%; padding: 12px 12px 90px; }
  .page { max-width: 100%; }
  .topbar { border-radius: 0 0 20px 20px; }
}

/* ===== 阅读真题完整做题 + 写作句型（合并自个人效率工作台） ===== */
.reading-drill { background: #fff; border: 1px solid var(--g2); border-radius: 12px; padding: 14px; margin-bottom: 12px; }
.rd-h { font-size: 14.5px; font-weight: 650; margin-bottom: 4px; color: var(--ink); }
.rd-meta { font-size: 11.5px; color: var(--ink-faint); margin-bottom: 10px; }
.rd-passage { margin: 4px 0 10px; padding: 10px; background: var(--g1); border: 1px solid var(--g2); border-radius: 10px; }
.rd-text { margin-top: 8px; font-size: 13.5px; line-height: 1.75; color: var(--ink); white-space: pre-wrap; max-height: 340px; overflow: auto; }
.q { margin-bottom: 14px; }
.q-n { font-weight: 700; color: var(--g6); margin-right: 6px; }
.q-t { font-size: 14px; line-height: 1.55; margin-bottom: 2px; color: var(--ink); }
.opts { display: flex; flex-direction: column; gap: 7px; margin: 9px 0 4px; }
.opt { display: flex; align-items: flex-start; gap: 9px; width: 100%; text-align: left; font: inherit; font-size: 13.5px; font-weight: 500; line-height: 1.5; padding: 9px 11px; border-radius: 11px; border: 1px solid var(--g2); background: #f6fbf7; color: var(--ink-soft); cursor: pointer; transition: .16s; }
.opt .o-key { flex: 0 0 22px; height: 22px; border-radius: 6px; background: var(--g2); color: var(--g7); font-weight: 700; font-size: 12.5px; display: inline-flex; align-items: center; justify-content: center; margin-top: 1px; }
.opt .o-txt { flex: 1; }
.opt.on { border-color: var(--g5); background: var(--g1); }
.opt.on .o-key { background: linear-gradient(135deg, var(--g5), var(--g7)); color: #fff; }
.opt.correct { background: #e7f7ee; color: #1c7a45; border-color: #bfe6cd; }
.opt.correct .o-key { background: #2e9e63; color: #fff; }
.opt.wrong { background: #fdecec; color: #c0392b; border-color: #f3c9c9; }
.opt.wrong .o-key { background: #e07a7a; color: #fff; }
.q-ans { font-size: 12.5px; margin-top: 6px; color: var(--ink-soft); line-height: 1.6; display: none; }
.q-ans.show { display: block; }
.q-ans b { color: var(--g6); }
.rd-foot { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; }
.rd-rate { font-size: 14px; font-weight: 700; color: var(--g6); }
.rd-foot .fld { display: block; font-size: 12.5px; color: var(--ink-soft); font-weight: 600; margin: 10px 0 5px; }
.rd-foot .fld textarea { margin-top: 5px; font-weight: 400; }
.writing-item { display: flex; gap: 10px; align-items: flex-start; padding: 9px 11px; border: 1px solid var(--g2); border-radius: 10px; margin-bottom: 8px; background: #fff; }
.writing-item .wtext { flex: 1 1 auto; min-width: 0; }
.writing-item .wt { color: var(--ink); font-weight: 600; font-size: 13px; line-height: 1.5; }
.writing-item .wz { color: var(--ink-faint); font-size: 12.5px; margin-top: 4px; line-height: 1.5; }
.writing-item .x { border: none; background: none; color: #c0392b; font-size: 16px; cursor: pointer; padding: 2px 4px; }

/* ===== 阅读真题完整做题 + 写作句型（合并自个人效率工作台） ===== */
.reading-drill { background: #fff; border: 1px solid var(--g2); border-radius: 12px; padding: 14px; margin-bottom: 12px; }
.rd-h { font-size: 14.5px; font-weight: 650; margin-bottom: 4px; color: var(--ink); }
.rd-meta { font-size: 11.5px; color: var(--ink-faint); margin-bottom: 10px; }
.rd-passage { margin: 4px 0 10px; padding: 10px; background: var(--g1); border: 1px solid var(--g2); border-radius: 10px; }
.rd-text { margin-top: 8px; font-size: 13.5px; line-height: 1.75; color: var(--ink); white-space: pre-wrap; max-height: 340px; overflow: auto; }
.q { margin-bottom: 14px; }
.q-n { font-weight: 700; color: var(--g6); margin-right: 6px; }
.q-t { font-size: 14px; line-height: 1.55; margin-bottom: 2px; color: var(--ink); }
.opts { display: flex; flex-direction: column; gap: 7px; margin: 9px 0 4px; }
.opt { display: flex; align-items: flex-start; gap: 9px; width: 100%; text-align: left; font: inherit; font-size: 13.5px; font-weight: 500; line-height: 1.5; padding: 9px 11px; border-radius: 11px; border: 1px solid var(--g2); background: #f6fbf7; color: var(--ink-soft); cursor: pointer; transition: .16s; }
.opt .o-key { flex: 0 0 22px; height: 22px; border-radius: 6px; background: var(--g2); color: var(--g7); font-weight: 700; font-size: 12.5px; display: inline-flex; align-items: center; justify-content: center; margin-top: 1px; }
.opt .o-txt { flex: 1; }
.opt.on { border-color: var(--g5); background: var(--g1); }
.opt.on .o-key { background: linear-gradient(135deg, var(--g5), var(--g7)); color: #fff; }
.opt.correct { background: #e7f7ee; color: #1c7a45; border-color: #bfe6cd; }
.opt.correct .o-key { background: #2e9e63; color: #fff; }
.opt.wrong { background: #fdecec; color: #c0392b; border-color: #f3c9c9; }
.opt.wrong .o-key { background: #e07a7a; color: #fff; }
.q-ans { font-size: 12.5px; margin-top: 6px; color: var(--ink-soft); line-height: 1.6; display: none; }
.q-ans.show { display: block; }
.q-ans b { color: var(--g6); }
.rd-foot { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; }
.rd-rate { font-size: 14px; font-weight: 700; color: var(--g6); }
.rd-foot .fld { display: block; font-size: 12.5px; color: var(--ink-soft); font-weight: 600; margin: 10px 0 5px; }
.rd-foot .fld textarea { margin-top: 5px; font-weight: 400; }
.writing-item { display: flex; gap: 10px; align-items: flex-start; padding: 9px 11px; border: 1px solid var(--g2); border-radius: 10px; margin-bottom: 8px; background: #fff; }
.writing-item .wtext { flex: 1 1 auto; min-width: 0; }
.writing-item .wt { color: var(--ink); font-weight: 600; font-size: 13px; line-height: 1.5; }
.writing-item .wz { color: var(--ink-faint); font-size: 12.5px; margin-top: 4px; line-height: 1.5; }
.writing-item .x { border: none; background: none; color: #c0392b; font-size: 16px; cursor: pointer; padding: 2px 4px; }
/* ===== 股市简报（合并自个人效率工作台） ===== */
.mk{background:#fff;border:1px solid var(--g2);border-radius:12px;padding:14px;margin-bottom:12px}
.mk-h{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.mk-h h3{font-size:16px;color:var(--ink);margin:0;font-weight:650}
.mk-h .pill{font-size:11.5px;color:var(--ink-faint);background:var(--g1);border:1px solid var(--g2);border-radius:999px;padding:2px 9px}
.idx{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:11px}
.idx div{background:var(--g1);border:1px solid var(--g2);border-radius:11px;padding:9px 11px}
.idx .n{font-size:11.5px;color:var(--ink-faint)}
.idx .v{font-size:16px;font-weight:700;margin:2px 0 1px;color:var(--ink)}
.idx .c{font-size:12.5px;font-weight:700}
/* A 股习惯：红涨绿跌 */
.idx .v.up, .idx .c.up{color:#c0392b}
.idx .v.down, .idx .c.down{color:#27ae60}
.mk-txt{font-size:13.5px;color:var(--ink-soft);line-height:1.7;margin:10px 0}
.mk-note{font-size:12px;color:var(--ink-faint);margin-top:8px;padding-top:8px;border-top:1px dashed var(--g2);line-height:1.6}
.card.slim{background:#fff;border:1px solid var(--g2);border-radius:12px;padding:6px 10px}
.card.slim .sub{font-size:12px;color:var(--ink-faint);margin:0}