/* 就在这儿 · P3 原型样式（中医米纸风） */
:root {
  --paper: #faf6ef;
  --card: #ffffff;
  --ink: #3a3530;
  --ink-light: #6b655b;   /* 【V24.15】#7a736a 在浅卡上只有 ~4.2:1，加深到 ≥4.9:1 */
  --green: #2f5d50;
  --green-light: #e8f0ec;
  --ochre: #8f5620;       /* 【V24.15】#b0713a→#9a5f28→#8f5620：白底 5.6:1、米签底 4.7:1 */
  --red: #c0392b;
  --yellow: #b8860b;
  --line: #e5ddd0;
  --btn-face-a: #FBF7EE;   /* 纸感按钮渐变起（V24 夜版在 prefs.css 重定义） */
  --btn-face-b: #F3EDDF;   /* 纸感按钮渐变止 */
  --btn-line: #E0D8C4;     /* 纸感按钮描边 */
  --face-1: #f6f1e6;       /* 浅卡面族（V24 夜版在 prefs.css 重定义） */
  --face-2: #f7f2e6;
  --face-3: #FFFDF8;
  --face-4: #f2ece0;
  --face-5: #f2ecdd;
  --face-6: #FDF9F1;
  --face-green: #eaf1ec;
  --face-badge: #f6e8d8;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
  background: var(--paper);
  color: var(--ink);
  /* 【V24.54c】禁手机浏览器 Text Autosizing（font boosting）：按块独立放大字，短行小签被吹到两倍大
     （2026-10-23 晨创始人实测「解 释/依 据 不止差一倍」）。100% = 不缩不放，只禁自动放大，全站生效。 */
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  line-height: 1.6;
}
main { max-width: 680px; margin: 0 auto; padding: 14px 14px 40px; }

/* 顶栏 */
.top { padding: 20px 14px 6px; background: linear-gradient(180deg, #f4eee1, rgba(244,238,225,0)); }
.brand { font-family: "Kaiti SC", KaiTi, STKaiti, serif; font-size: 34px; letter-spacing: 10px; color: var(--green); text-align: center; }
.sub { color: var(--ink-light); font-size: 13px; margin-top: 4px; letter-spacing: 2px; text-align: center; }

/* 首页：品牌 + 用户区 */
.topbar { display: flex; align-items: center; justify-content: space-between; max-width: 680px; margin: 0 auto; gap: 10px; }
.topbar .brand { font-size: 21px; letter-spacing: 6px; text-align: left; }
.me { display: flex; align-items: center; gap: 10px; font-size: 12.5px; color: var(--ink-light); white-space: nowrap; }
.me-name { font-family: "Kaiti SC", KaiTi, serif; font-size: 15px; color: var(--green); }
.me a { color: var(--ink-light); text-decoration: none; border-bottom: 1px dotted #cbbfa9; }
.me a:hover { color: var(--green); border-color: var(--green); }

/* 表头：今日气运 */
.masthead {
  max-width: 680px; margin: 12px auto 14px; padding: 15px 16px 13px;
  background: linear-gradient(152deg, var(--green), #3d6b5b 58%, #48715f);
  border-radius: 14px; color: #f3efe6; box-shadow: 0 5px 16px rgba(47, 93, 80, 0.18);
}
.mh-date { display: flex; flex-wrap: wrap; align-items: baseline; gap: 10px; }
.mh-big { font-family: "Kaiti SC", KaiTi, serif; font-size: 20px; letter-spacing: 1px; }
.mh-week, .mh-lunar, .mh-jie { font-size: 12.5px; opacity: 0.82; }
.mh-lunar { font-family: "Kaiti SC", KaiTi, serif; letter-spacing: 1px; }
.mh-yun { margin-top: 9px; padding-top: 9px; border-top: 1px solid rgba(255, 255, 255, 0.16); font-size: 12.5px; line-height: 1.85; opacity: 0.94; }
.mh-yun b { color: #f7e2b8; font-weight: 600; }
.masthead .tag-first { color: #f7e2b8; border-color: rgba(247, 226, 184, 0.6); }
/* 表头 · 实时天气 */
.mh-weather {
  display: flex; flex-wrap: wrap; align-items: center; gap: 9px;
  margin-top: 9px; padding: 7px 10px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.11);
  border-radius: 10px; font-size: 12.5px; line-height: 1.7;
}
.mh-weather:empty { display: none; }
.wx-now { display: inline-flex; align-items: baseline; gap: 6px; }
.wx-icon { font-size: 16px; font-style: normal; }
.wx-temp { font-family: "Kaiti SC", KaiTi, serif; font-size: 18px; color: #fff; letter-spacing: 0.5px; }
.wx-text { opacity: 0.9; }
.mh-weather .wx-item { opacity: 0.84; }
.wx-dev { border-radius: 8px; padding: 1px 8px; font-weight: 600; }
.wx-dev.hot { background: rgba(206, 92, 72, 0.88); color: #fff; }
.wx-dev.cold { background: rgba(88, 134, 172, 0.88); color: #fff; }
.mh-weather .wx-time { opacity: 0.62; font-size: 11.5px; }
.wx-btn { color: #f7e2b8; text-decoration: none; padding: 0 6px; border: 1px solid rgba(247, 226, 184, 0.45); border-radius: 7px; font-size: 12px; margin-left: auto; }
.wx-btn:hover { background: rgba(247, 226, 184, 0.15); }
.wx-hint { opacity: 0.85; }
.mh-me { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 10px; font-size: 12.5px; }
.mh-hi { font-family: "Kaiti SC", KaiTi, serif; font-size: 15px; }
.mh-tag { background: rgba(255, 255, 255, 0.12); border-radius: 9px; padding: 1px 9px; }
.mh-lv { border-radius: 9px; padding: 1px 9px; font-weight: 600; }
.mh-lv.lv1 { background: #b23a2e; color: #fff; }
.mh-lv.lv2 { background: #c99a2e; color: #fff; }
.mh-lv.lv3 { background: rgba(255, 255, 255, 0.18); }
.mh-link { margin-left: auto; color: #f7e2b8; text-decoration: none; }
.mh-link:hover { text-decoration: underline; }

/* 卡片 */
.card {
  background: var(--card); border: 1px solid var(--line); border-radius: 12px;
  padding: 16px 16px 14px; margin-bottom: 14px;
  box-shadow: 0 1px 3px rgba(90, 70, 40, 0.06);
}
.card h2 { font-size: 15px; color: var(--green); margin-bottom: 10px; letter-spacing: 1px; font-weight: 600; }
.badge {
  display: inline-block; font-size: 12px; background: var(--green-light); color: var(--green);
  border-radius: 10px; padding: 1px 10px; margin-left: 6px; vertical-align: 1px;
}
.badge.innate { background:var(--face-badge); color: var(--ochre); }
.badge.jt-ms-hot { background: #4E6E52; color: #FFF8E0; animation: jbtMsPulse 1.6s ease-in-out infinite; }
@keyframes jbtMsPulse { 0%,100% { transform: scale(1); } 50% { transform: scale(1.08); } }

/* 输入 */
.row { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.row label { display: flex; flex-direction: column; font-size: 12px; color: var(--ink-light); min-width: 84px; }
.row label.grow { flex: 1; min-width: 120px; }
input, select {
  margin-top: 3px; padding: 7px 8px; border: 1px solid var(--line); border-radius: 8px;
  background:var(--card); font-size: 14px; color: var(--ink); width: 100%;
}
input:focus, select:focus { outline: 2px solid var(--green-light); border-color: var(--green); }
.hint { font-size: 12px; color: var(--ink-light); margin: 4px 0 10px; }
.btns { display: flex; gap: 10px; }
button {
  flex: 1; padding: 11px; border: none; border-radius: 10px; font-size: 15px; cursor: pointer;
  letter-spacing: 4px;
}
button.primary { background: var(--green); color: #fff; }
button.primary:hover { background: #275045; }
button:not(.primary) { background: #f0e9dc; color: var(--ink); }
button:not(.primary):hover { background: #e7ddc9; }

/* 横幅 */
.banner {
  background: linear-gradient(135deg, var(--green), #40705f); color: #fff;
  border-radius: 12px; padding: 14px 18px; margin-bottom: 14px;
}
.banner .date { font-family: "Kaiti SC", KaiTi, serif; font-size: 19px; letter-spacing: 1px; }
.banner .meta { font-size: 12.5px; opacity: 0.85; margin-top: 3px; }

/* 预警 */
.alert { border-radius: 8px; padding: 8px 12px; margin-bottom: 8px; font-size: 13.5px; }
.alert .alv {
  display: inline-block; font-size: 11px; color: #fff; border-radius: 4px;
  padding: 0 6px; margin-right: 6px; vertical-align: 1px;
}
.alert.l1 { background: #fdecea; border: 1.5px solid var(--red); }
.alert.l1 .alv { background: var(--red); }
.alert.l2 { background: #fdf6e3; border: 1.5px solid var(--yellow); }
.alert.l2 .alv { background: var(--yellow); }
.alert.l3 { background: #eef5ef; border: 1.5px solid #4a7c59; }
.alert.l3 .alv { background: #4a7c59; }

/* 结构行 */
.struct { font-size: 13.5px; color: var(--ink); margin-bottom: 10px; }
.struct div { margin-bottom: 2px; }
.struct b { color: var(--green); }
.tag-first { color: var(--ochre); font-size: 12px; border: 1px solid var(--ochre); border-radius: 4px; padding: 0 4px; }
.notes { font-size: 12.5px; color: var(--ochre); margin-top: 6px; }

/* 五行条形（-10 ~ +10 中轴） */
.bars { margin-top: 4px; }
.bar-row { display: flex; align-items: center; gap: 8px; margin-bottom: 5px; }
.bar-name { width: 18px; font-size: 14px; text-align: center; font-family: "Kaiti SC", KaiTi, serif; }
.bar-track {
  flex: 1; height: 14px; background: #f2ede3; border-radius: 7px; position: relative; overflow: hidden;
  display: flex; justify-content: flex-end;
}
.bar-fill { height: 100%; border-radius: 7px; }
.bar-fill.pos { background: linear-gradient(90deg, #9dbfae, var(--green)); }
.bar-fill.neg { background: linear-gradient(90deg, var(--ochre), #d3a06b); }
.bar-axis { position: absolute; left: 50%; top: 0; bottom: 0; width: 1px; background: #c9bfae; }
.bar-val { width: 46px; font-size: 12.5px; text-align: right; font-variant-numeric: tabular-nums; }
.bar-val.pos { color: var(--green); }
.bar-val.neg { color: var(--ochre); }
.bars.final .bar-track { height: 18px; }

/* 调性 */
.tiaoxing { background: var(--green-light); border-radius: 10px; padding: 12px 14px; margin-top: 10px; }
.tx-label { font-size: 12px; color: var(--ink-light); }
.tx-value { font-family: "Kaiti SC", KaiTi, serif; font-size: 22px; color: var(--green); letter-spacing: 2px; margin: 2px 0 4px; }
#txNotes { font-size: 12.5px; color: var(--ink); }
.foot-note { font-size: 11.5px; color: var(--ink-light); margin-top: 8px; }

/* 菜品 */
.recipe { display: flex; gap: 12px; padding: 10px 0; border-bottom: 1px dashed var(--line); }
.recipe:last-child { border-bottom: none; }
.r-img {
  width: 74px; height: 74px; border-radius: 10px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  font-family: "Kaiti SC", KaiTi, serif; font-size: 26px; color: rgba(255,255,255,0.85);
  overflow: hidden;
}
.r-img img {
  width: 100%; height: 100%; object-fit: cover; display: block; border-radius: 10px;
}
.r-body { flex: 1; min-width: 0; }
.r-name { font-size: 15px; font-weight: 600; color: var(--ink); }
.r-name .r-cat {
  font-style: normal; font-weight: normal; font-size: 11px; color: var(--green);
  background: var(--green-light); border-radius: 4px; padding: 0 6px; margin-left: 6px; vertical-align: 1px;
}
.r-ing { margin: 3px 0; }
.r-ing span {
  font-size: 12px; background:var(--face-1); border-radius: 5px; padding: 1px 7px; margin-right: 5px; color: #6b6155;
}
.r-steps { margin: 4px 0 0 18px; font-size: 12.5px; color: var(--ink); }
.r-steps li { margin-bottom: 1px; }
.r-tags i {
  font-style: normal; font-size: 11px; color: var(--green);
  border: 1px solid #c4d4ca; border-radius: 4px; padding: 0 5px; margin-right: 4px; display: inline-block; margin-top: 3px;
}

/* 合规声明 */
.disclaimer {
  text-align: center; font-size: 12px; color: var(--ink-light);
  padding: 14px 10px; border-top: 1px solid var(--line); line-height: 1.9;
}
footer { text-align: center; font-size: 11px; color: var(--ink-light); padding: 10px 0 30px; }

/* V11.0 全站对外版本号（ver.js 注入；内部构建号仍看 ?v= 日期戳） */
.ver-tag { letter-spacing: .5px; opacity: .85; }
.ver-line { text-align: center; font-size: 11px; color: var(--ink-light); padding: 8px 0 26px; letter-spacing: 1px; }
.disclaimer .ver-tag { display: block; margin-top: 4px; }
body.jbt-hasbar .ver-line { padding-bottom: 72px; }

/* ===== 模块导航（全站共享） ===== */
.mod-nav {
  display: flex; gap: 6px; margin-bottom: 14px; position: sticky; top: 0; z-index: 20;
  background: var(--paper); padding: 8px 0; border-bottom: 1px solid var(--line);
}
.mod-nav a {
  flex: 1; text-align: center; text-decoration: none; font-size: 13px;
  color: var(--ink-light); padding: 7px 0 6px; border-radius: 9px; letter-spacing: 2px;
  border: 1px solid transparent;
}
.mod-nav a .zh { display: block; font-family: "Kaiti SC", KaiTi, serif; font-size: 16px; color: var(--ink); }
.mod-nav a.active { background: var(--green-light); border-color: #c4d4ca; color: var(--green); }
.mod-nav a.active .zh { color: var(--green); font-weight: 600; }

/* ===== 站桩 ===== */
.zz-timer { text-align: center; padding: 18px 0 10px; }
.zz-time {
  font-family: "Kaiti SC", KaiTi, serif; font-size: 56px; letter-spacing: 6px;
  color: var(--green); font-variant-numeric: tabular-nums;
}
.zz-time.done { color: var(--ochre); }
.zz-state { font-size: 13px; color: var(--ink-light); margin: 4px 0 14px; letter-spacing: 2px; }
.zz-btns { display: flex; gap: 10px; justify-content: center; }
.zz-btns button { flex: 0 0 110px; letter-spacing: 2px; }
.zz-dur { display: flex; gap: 8px; justify-content: center; margin-bottom: 12px; }
.zz-dur button { flex: 0 0 64px; font-size: 14px; padding: 8px 0; }
.zz-dur button.on { background: var(--green); color: #fff; }
.zz-audio { margin: 10px 0 0; font-size: 12.5px; color: var(--ink-light); }
.zz-audio audio { width: 100%; margin-top: 6px; }

.zz-stats { display: flex; gap: 10px; text-align: center; margin-bottom: 12px; }
.zz-stat { flex: 1; background:var(--face-1); border-radius: 10px; padding: 10px 4px 8px; }
.zz-stat b { display: block; font-family: "Kaiti SC", KaiTi, serif; font-size: 26px; color: var(--green); }
.zz-stat span { font-size: 12px; color: var(--ink-light); }
.heat { display: flex; flex-wrap: wrap; gap: 4px; justify-content: center; }
.heat i {
  width: 16px; height: 16px; border-radius: 4px; background: #eee7d8;
  display: inline-block; font-style: normal;
}
.heat i.d1 { background: #cfe0d6; }
.heat i.d2 { background: #8fb8a4; }
.heat i.d3 { background: var(--green); }
.zz-fa { font-size: 13.5px; }
.zz-fa .warn { color: var(--ochre); }
.zz-stance { text-align: center; font-family: "Kaiti SC", KaiTi, serif; font-size: 44px; letter-spacing: 8px; color: var(--ochre); padding: 10px 0 4px; }

/* ===== 安眠 ===== */
.sleep-path { border-left: 4px solid var(--green); padding-left: 12px; margin-bottom: 14px; }
.sleep-path.ru { border-color: #8a7f6a; }
.sleep-path.shi { border-color: var(--ochre); }
.sleep-path.dao { border-color: var(--green); }
.sleep-path.yi { border-color: #4a6d8c; }
.sleep-path h3 { font-size: 15px; color: var(--ink); }
.sleep-path h3 small { font-size: 12px; color: var(--ink-light); font-weight: normal; margin-left: 6px; }
.sleep-path p, .sleep-path li { font-size: 13.5px; margin-bottom: 4px; }
.sleep-path li { margin-left: 18px; }
.sleep-flow li { margin: 0 0 8px 20px; font-size: 13.5px; }
.sleep-flow b { color: var(--green); }

/* ===== 经典 ===== */
.jd-item { padding: 12px 0; border-bottom: 1px dashed var(--line); }
.jd-item:last-child { border-bottom: none; }
.jd-src { font-size: 12px; color: var(--ink-light); margin-bottom: 4px; }
.jd-orig {
  font-family: "Kaiti SC", KaiTi, serif; font-size: 16.5px; color: var(--ink); letter-spacing: 1px; line-height: 1.9;
}
.jd-bai { font-size: 13.5px; margin-top: 8px; }
.jd-bai b { color: var(--green); }
.jd-me {
  margin-top: 8px; font-size: 12.5px; color: var(--ochre); background: #fdf8ef;
  border-radius: 8px; padding: 8px 10px;
}

/* V12.1.26 五脏苦欲补泻表 */
/* V12.1.26 的五脏苦欲补泻表样式已撤：.zang-table / .jd-sum 用户反馈「不需要讲道理，直接推荐音乐」，只留经典文库原样式 */

/* V12.1.27：五行乐按调性直推按钮（V12.1.28 撤，仅保留样式防遗留样式污染） */
.wxy-quick-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.wxy-qbtn { flex: 1 1 calc(50% - 4px); padding: 14px 10px; font-size: 14.5px; letter-spacing: 2px; border-radius: 10px; background:var(--face-4); color: var(--ink); border: 1px solid var(--line); }
.wxy-qbtn.on { background: var(--green); color: #fff; border-color: var(--green); }

/* V12.1.28 简化：换下一首按钮 */
.wx-skip { background: #ede4d2; color: var(--ink-light); border: 1px solid var(--line); padding: 10px 16px; border-radius: 999px; font-size: 13px; letter-spacing: 1px; margin-left: 8px; }

/* ===== 陪伴 ===== */
.pb-post { padding: 12px 0; border-bottom: 1px dashed var(--line); }
.pb-post:last-child { border-bottom: none; }
.pb-date { font-size: 12px; color: var(--ink-light); }
.pb-title { font-family: "Kaiti SC", KaiTi, serif; font-size: 17px; color: var(--green); margin: 3px 0 6px; }
.pb-body { font-size: 13.5px; white-space: pre-line; }


/* ============================================================
   v4：雅致化（宣纸纹理 / 卡片细节 / 登录页 / 配乐选择）
   ============================================================ */
body {
  background-color: var(--paper);
  background-image: radial-gradient(rgba(176, 113, 58, 0.05) 1px, transparent 1px);
  background-size: 18px 18px;
  -webkit-font-smoothing: antialiased;
}
.card {
  border-radius: 14px; border-color: #e7dfd1;
  box-shadow: 0 1px 2px rgba(90, 70, 40, 0.05), 0 10px 26px -20px rgba(90, 70, 40, 0.45);
}
.card h2 {
  display: flex; align-items: center; gap: 6px;
  font-family: "Kaiti SC", KaiTi, STKaiti, serif;
  font-size: 16.5px; letter-spacing: 2px; color: var(--green);
}
.card h2 .badge, .card h2 .card-fold { font-family: inherit; }
.card-fold {
  margin-left: auto; font-size: 12px; font-weight: normal; letter-spacing: 0;
  color: var(--ink-light); text-decoration: none; border-bottom: 1px dotted #cbbfa9;
}
.card-fold:hover { color: var(--green); border-color: var(--green); }
button.primary {
  background: linear-gradient(160deg, #33604f, #2a5044);
  box-shadow: 0 6px 16px -10px rgba(47, 93, 80, 0.8);
}
button.primary:disabled { opacity: 0.6; }
.banner { background: linear-gradient(150deg, var(--green), #48715f); border-radius: 14px; }
.tiaoxing { background: linear-gradient(160deg, #edf3ef, #e6efe9); border: 1px solid #d9e5dd; }
.disclaimer { border-top-color: #e7dfd1; }
footer { letter-spacing: 1px; }

/* ---- 登录页 ---- */
.login-body { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 24px 16px; }
/* ver.js 注入的 .ver-line 若留在 flex 流里，其 margin:auto 会吃光富余空间导致居中失效 → 绝对定位脱离流 */
.login-body { position: relative; }
.login-body .ver-line { position: absolute; left: 0; right: 0; bottom: 10px; margin: 0; }
.login-wrap { width: 100%; max-width: 380px; }
.login-brand {
  text-align: center; font-family: "Kaiti SC", KaiTi, STKaiti, serif;
  font-size: 32px; letter-spacing: 10px; color: var(--green);
}
.login-sub { text-align: center; font-size: 12.5px; color: var(--ink-light); letter-spacing: 3px; margin: 6px 0 20px; }
.login-card {
  background:var(--card); border: 1px solid #e7dfd1; border-radius: 16px; padding: 18px 18px 16px;
  box-shadow: 0 2px 4px rgba(90, 70, 40, 0.05), 0 18px 40px -28px rgba(90, 70, 40, 0.5);
}
.login-tabs { display: flex; gap: 6px; background: #f4eee2; border-radius: 10px; padding: 4px; margin-bottom: 16px; }
.login-tabs button {
  flex: 1; background: transparent; color: var(--ink-light); padding: 8px 0;
  letter-spacing: 3px; font-size: 14px; border-radius: 8px;
}
.login-tabs button.on { background:var(--card); color: var(--green); box-shadow: 0 1px 3px rgba(90, 70, 40, 0.12); }
.login-tabs button:not(.primary):hover { background: transparent; }
.login-field { margin-bottom: 12px; }
.login-field label { display: block; font-size: 12px; color: var(--ink-light); margin-bottom: 3px; letter-spacing: 1px; }
.login-submit { width: 100%; letter-spacing: 6px; margin-top: 4px; }
.login-msg { min-height: 18px; font-size: 12.5px; color: var(--red); margin-top: 8px; text-align: center; }
.login-tip { font-size: 12px; color: var(--ink-light); margin-top: 10px; line-height: 1.8; }
.login-foot { text-align: center; margin-top: 16px; font-size: 12.5px; }
.login-foot a { color: var(--ink-light); text-decoration: none; border-bottom: 1px dotted #cbbfa9; }
.login-foot a:hover { color: var(--green); }
.login-legal { font-size: 11px; color: var(--ink-light); margin-top: 12px; line-height: 1.8; }

/* ---- 站桩配乐选择（分组） ---- */
.zz-music-wrap { margin-top: 16px; padding-top: 14px; border-top: 1px dashed var(--line); }
.zz-music-title {
  text-align: center; font-family: "Kaiti SC", KaiTi, serif;
  font-size: 14px; letter-spacing: 8px; color: var(--green);
  margin-bottom: 12px; padding-left: 8px;
}
.zz-music { display: flex; flex-direction: column; gap: 8px; }
.zz-mgroup { display: flex; align-items: flex-start; gap: 8px; }
.zz-mgroup-label {
  flex: 0 0 46px; text-align: right; padding-top: 8px;
  font-size: 11.5px; color: var(--ink-light); letter-spacing: 1px;
}
.zz-mchips { flex: 1; display: flex; flex-wrap: wrap; gap: 6px; }
.zz-music button {
  flex: 0 0 auto; padding: 6px 12px; font-size: 12.5px; letter-spacing: 0.5px;
  border-radius: 999px; background:var(--face-4);
}
.zz-music button.on { background: var(--green); color: #fff; }
.zz-music-note { text-align: center; font-size: 12px; color: var(--ink-light); margin-top: 10px; }

/* ---- 站桩心法：分块 ---- */
.zz-fa-sec {
  background: #fbf8f2; border: 1px solid #f0e9dc; border-radius: 10px;
  padding: 11px 13px 8px; margin-bottom: 10px;
}
.zz-fa-sec.warn-sec { background: #fdf7ee; border-color: #f3e4cf; }
.zz-fa-sec h3 {
  display: flex; align-items: center; gap: 7px;
  font-size: 13.5px; color: var(--green); margin: 0 0 8px;
}
.zz-fa-tag {
  font-size: 11px; font-weight: 400; color: var(--ink-light);
  background: #efe9dd; border-radius: 999px; padding: 1px 8px; letter-spacing: 0;
}
.zz-fa-tag.warn { color: var(--ochre); background: #f7e9d6; }
.zz-fa-sec ul { padding: 0; }
.zz-fa-sec li {
  list-style: none; position: relative; padding-left: 14px;
  margin: 0 0 7px; font-size: 13px; line-height: 1.75;
}
.zz-fa-sec li:last-child { margin-bottom: 2px; }
.zz-fa-sec li::before {
  content: ""; position: absolute; left: 3px; top: 10px;
  width: 4px; height: 4px; border-radius: 50%; background: #cbbfa9;
}
.zz-fa-sec li.warn::before { background: var(--ochre); }
.zz-fa-sec li b { color: var(--green); }

/* ---- 站桩打卡：间距 ---- */
.zz-stats { gap: 8px; }
.heat { margin: 4px 0 2px; }

@media (max-width: 480px) {
  .mh-link { margin-left: 0; }
  .topbar .brand { font-size: 19px; letter-spacing: 4px; }
  .me { gap: 8px; font-size: 12px; }
  .zz-mgroup-label { flex-basis: 32px; font-size: 11px; }
  .zz-music button { padding: 6px 10px; font-size: 12px; }
  .zz-music-title { letter-spacing: 5px; }
  .zz-fa-sec { padding: 10px 11px 7px; }
}

/* ============================================================
   V7 阶段一：今日 / 睡前仪式 / 我的
   设计语言：纸色底 + 墨绿主色 + 朱砂只用于强调；宋体标题；无 emoji
   ============================================================ */

/* ---- 今日页 ---- */
.jt-date { max-width: 680px; margin: 4px auto 8px; padding: 0 2px; }
.jt-date-big { font-family: "Songti SC", STSong, SimSun, serif; font-size: 19px; color: var(--ink); letter-spacing: 1px; }
.jt-date-sub { font-size: 12.5px; color: var(--ink-light); margin-left: 10px; }

.jt-summary { border-left: 4px solid var(--green); }
.jt-summary.lv1 { border-left-color: var(--red); }
.jt-summary.lv2 { border-left-color: var(--yellow); }
.jt-sum-day { font-size: 12.5px; color: var(--ochre); letter-spacing: 1px; }
.jt-sum-text {
  font-family: "Songti SC", STSong, SimSun, serif;
  font-size: 18px; line-height: 1.75; color: var(--ink); margin: 6px 0 4px;
}
.jt-sum-more { font-size: 12.5px; color: var(--green); text-decoration: none; border-bottom: 1px dotted #c4d4ca; }

.jt-tasks { display: flex; flex-direction: column; }
.jt-task { display: flex; align-items: center; gap: 12px; padding: 12px 2px; border-bottom: 1px dashed var(--line); }
.jt-task:last-child { border-bottom: none; }
.jt-dot {
  flex: 0 0 26px; width: 26px; height: 26px; border-radius: 50%; padding: 0;
  background:var(--card); border: 2px solid #A8622B; cursor: pointer; letter-spacing: 0;
}
.jt-task.done .jt-dot { background: var(--green); border-color: var(--green); position: relative; }
.jt-task.done .jt-dot::after {
  content: ""; position: absolute; left: 8px; top: 4px; width: 5px; height: 10px;
  border-right: 2px solid #fff; border-bottom: 2px solid #fff; transform: rotate(42deg);
}
.jt-task-body { flex: 1; min-width: 0; }
.jt-task-name { font-size: 15px; color: var(--ink); }
.jt-task.done .jt-task-name { color: var(--green); }
.jt-task-sub { font-size: 12px; color: var(--ink-light); margin-top: 1px; }
.jt-go { font-size: 13px; color: var(--green); text-decoration: none; white-space: nowrap; }

/* 医生今日（深绿卡） */
.doc-card {
  background: linear-gradient(152deg, var(--green), #3d6b5b 60%, #48715f);
  border-radius: 14px; color: #f3efe6; padding: 15px 16px 13px; margin-bottom: 14px;
  box-shadow: 0 5px 16px rgba(47, 93, 80, 0.18);
}
.doc-head { display: flex; align-items: center; gap: 9px; margin-bottom: 10px; }
.doc-ava {
  width: 30px; height: 30px; border-radius: 50%; background: rgba(255,255,255,0.14);
  display: flex; align-items: center; justify-content: center;
  font-family: "Songti SC", STSong, SimSun, serif; font-size: 15px;
}
.doc-title { font-family: "Songti SC", STSong, SimSun, serif; font-size: 16px; letter-spacing: 3px; }
.doc-date { margin-left: auto; font-size: 11.5px; opacity: 0.6; }
.doc-row { display: flex; align-items: center; gap: 10px; font-size: 14px; padding: 4px 0; }
.doc-dot { flex: 0 0 9px; width: 9px; height: 9px; border-radius: 50%; border: 1.5px solid rgba(247,226,184,0.8); }
.doc-dot.done { background: #A8622B; border-color: #A8622B; }
.doc-note {
  margin-top: 9px; padding-top: 9px; border-top: 1px solid rgba(255,255,255,0.16);
  font-size: 13px; line-height: 1.75; opacity: 0.92;
}

/* 宜穿 / 一茶 双列 */
.jt-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.jt-grid .card { margin-bottom: 14px; }
@media (max-width: 480px) { .jt-grid { grid-template-columns: 1fr; gap: 0; } }
.jt-colors { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 6px; }
.jt-chip { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; color: var(--ink); }

/* V12.1.28 今日乐养按钮 */
.jt-music-row { display: flex; flex-direction: column; gap: 8px; margin: 10px 0 6px; }
.jt-music-btn { text-align: center; padding: 12px 10px; border-radius: 10px; background:var(--face-4); color: var(--ink); font-size: 14px; letter-spacing: 1px; text-decoration: none; border: 1px solid var(--line); }
.jt-music-btn.primary { background: var(--green); color: #fff; border-color: var(--green); }
.jt-music-btn.primary:hover { filter: brightness(0.95); }
#jtMusicBody a:nth-child(2) { background: var(--face-4); color: var(--ink); } /* 【V24.15】硬编码浅底夜版刺眼 → 变量 */
#jtMusicBody a:nth-child(3) { background: var(--face-5); color: var(--ink); } /* 【V24.15】同上 */
.jt-chip i { width: 14px; height: 14px; border-radius: 50%; display: inline-block; }
.jt-chip-plain { font-size: 13px; color: var(--ink); }
.jt-colors-bad { font-size: 12px; color: var(--ochre); }
.jt-tea b { font-family: "Songti SC", STSong, SimSun, serif; font-size: 17px; color: var(--green); font-weight: 600; }
.jt-tea-tags { display: block; font-size: 12px; color: var(--ink-light); margin-top: 3px; }
/* V14.0g 今日一茶配图：文左图右 */
.jt-tea-row { display: flex; align-items: center; gap: 12px; }
.jt-tea-main { flex: 1; min-width: 0; }
.jt-tea-img { flex: 0 0 60px; width: 60px; height: 60px; object-fit: cover; border-radius: 10px; border: 1px solid var(--line); background:var(--face-2); }

/* 今日一句 / 话题 */
.jt-quote-orig {
  font-family: "Songti SC", STSong, SimSun, serif; font-size: 17px; line-height: 1.9;
  color: var(--ink); letter-spacing: 1px;
}
.jt-quote-bai { font-size: 13px; color: var(--ink); margin-top: 8px; }
.jt-quote-src { display: block; font-size: 11.5px; color: var(--ink-light); margin-top: 4px; }
.jt-topic { font-size: 14px; line-height: 1.7; }
.jt-topic-tag {
  display: inline-block; font-size: 11.5px; color: var(--green); background: var(--green-light);
  border-radius: 9px; padding: 1px 9px; margin-right: 8px; vertical-align: 1px;
}
.jt-topic-hint { display: block; font-size: 11.5px; color: var(--ink-light); margin-top: 3px; }

/* 夜间横幅 */
.jt-night {
  display: flex; flex-direction: column; gap: 2px;
  background: linear-gradient(150deg, #2f3d3a, var(--green));
  color: #f3efe6; text-decoration: none;
  border-radius: 14px; padding: 13px 16px; margin-bottom: 14px;
  border-left: 4px solid #A8622B;
}
.jt-night-main { font-family: "Songti SC", STSong, SimSun, serif; font-size: 16px; letter-spacing: 2px; }
.jt-night-sub { font-size: 12px; opacity: 0.75; }

/* ---- 睡前仪式 ---- */
.am-stage { text-align: center; padding: 26px 0 18px; }
.am-clock {
  font-family: "Songti SC", STSong, SimSun, serif; font-size: 52px; letter-spacing: 4px;
  color: var(--green); font-variant-numeric: tabular-nums;
}
.am-phase { font-size: 14px; color: var(--ink-light); margin: 8px 0 20px; letter-spacing: 1px; min-height: 22px; }
.am-phase.breath { color: var(--ochre); }
.am-phase.done { color: var(--green); }
.am-start {
  display: block; width: 132px; height: 132px; margin: 0 auto; border-radius: 50%;
  background: linear-gradient(160deg, #33604f, #2a5044); color: #fff;
  font-family: "Songti SC", STSong, SimSun, serif; font-size: 22px; letter-spacing: 6px;
  border: none; cursor: pointer; box-shadow: 0 10px 30px -12px rgba(47, 93, 80, 0.9);
}
.am-start:active { transform: scale(0.97); }
.am-hint { font-size: 12px; color: var(--ink-light); margin-top: 14px; }
.am-flow li { margin: 0 0 8px 20px; font-size: 13.5px; }
.am-flow b { color: var(--green); }
/* 助眠声景（V12.1.23）：三个小胶囊，不与「开始」抢眼——睡前不该让人做选择题 */
.am-scene-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.am-scene-lab { font-size: 12px; color: var(--ink-light); letter-spacing: 1px; margin-right: 2px; }
.am-sc {
  width: auto; height: auto; background:var(--face-1); color: var(--ink);
  font-size: 12.5px; padding: 6px 13px; border-radius: 999px; letter-spacing: 1px;
}
.am-sc.on { background: var(--green); color: #fff; }
.am-sc:active { transform: scale(0.97); }
.am-q { font-size: 14.5px; color: var(--ink); margin-bottom: 10px; }
.am-dots { display: flex; gap: 10px; }
.am-dot {
  flex: 1; height: 40px; border-radius: 10px; background:var(--face-1); color: var(--ink);
  font-size: 15px; padding: 0; letter-spacing: 0;
}
.am-dot.on { background: var(--green); color: #fff; }
.am-more summary { font-size: 14px; color: var(--green); cursor: pointer; letter-spacing: 1px; }
.am-more[open] summary { margin-bottom: 12px; }
.am-chart { padding: 6px 0 2px; }
.am-svg { width: 100%; height: auto; display: block; }
.am-grid { stroke: var(--line); stroke-width: 1; }
.am-line { fill: none; stroke: var(--green); stroke-width: 2.5; stroke-linejoin: round; stroke-linecap: round; }
.am-pt { fill: #A8622B; }
.am-x { font-size: 11px; fill: var(--ink-light); }
.am-y { font-size: 11px; fill: #b0a899; }
.am-v { font-size: 11px; fill: var(--ochre); font-weight: 600; }
.am-empty { font-size: 13px; fill: var(--ink-light); }

/* ---- 我的 ---- */
.wd-profile { font-size: 14px; line-height: 2; }
.wd-profile b { color: var(--green); }
.wd-stats { display: flex; gap: 10px; text-align: center; }
.wd-stat { flex: 1; background:var(--face-1); border-radius: 10px; padding: 12px 4px 9px; }
.wd-stat b { display: block; font-family: "Songti SC", STSong, SimSun, serif; font-size: 25px; color: var(--green); }
.wd-stat span { font-size: 11.5px; color: var(--ink-light); }
.wd-line { font-size: 13.5px; margin-bottom: 8px; }
.wd-line b {
  display: inline-block; font-size: 12px; color: var(--ochre); background:var(--face-badge);
  border-radius: 9px; padding: 1px 9px; margin-right: 8px; font-weight: 400;
}
.wd-links { display: flex; flex-direction: column; }
.wd-links a {
  font-size: 14.5px; color: var(--ink); text-decoration: none;
  padding: 11px 2px; border-bottom: 1px dashed var(--line);
}
.wd-links a:last-child { border-bottom: none; }
.wd-links a::after { content: " ›"; color: var(--green); float: right; }

/* ---- 我的 · 江湖月报（V23.82 · D18 J6.3 §三）----
   三块自上而下：话（mo-text）→ 数（mo-nums）→ 道（mo-bar），末了换月。
   数字块刻意做得比话更"实"：先给证据，再给评语。 */
.mo-text {
  font-size: 14px; line-height: 2.05; color: var(--ink);
  background: var(--face-1); border-radius: 10px; padding: 13px 15px;
  white-space: pre-wrap; word-break: break-word;
}
.mo-text.mo-long { font-size: 13.5px; line-height: 2; }
.mo-nums { display: flex; gap: 8px; text-align: center; margin-top: 11px; }
.mo-num { flex: 1; background: var(--face-1); border-radius: 10px; padding: 10px 3px 8px; }
.mo-num b {
  display: block; font-family: "Songti SC", STSong, SimSun, serif;
  font-size: 21px; color: var(--green); line-height: 1.3;
}
.mo-num span { font-size: 11px; color: var(--ink-light); }
.mo-bar { margin-top: 11px; }
.mo-tier {
  font-size: 12.5px; color: var(--ink-light); line-height: 1.9;
  border-left: 3px solid var(--ochre); padding-left: 10px;
}
.mo-tier b { color: var(--ochre); font-weight: 400; display: block; }
.mo-nav { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 12px; }
.mo-m {
  padding: 3px 11px; border-radius: 13px; border: 1px solid var(--line);
  background: var(--card); font-size: 12px; color: var(--ink); text-decoration: none;
}
.mo-m.on { background: var(--green); color: var(--paper); border-color: var(--green); }

/* ---------- 今日页：档案/日期切换 + 医生问候 + 日签 ---------- */
.jt-switch { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 8px 16px 0; flex-wrap: wrap; }
.jt-mems { display: flex; gap: 6px; flex-wrap: wrap; }
.jt-mem {
  padding: 4px 12px; border-radius: 14px; border: 1px solid var(--line); background:var(--card);
  font-size: 12.5px; color: var(--ink); cursor: pointer; text-decoration: none;
}
.jt-mem.on { background: var(--green); color: var(--paper); border-color: var(--green); }
.jt-mem.add { border-style: dashed; color: var(--green); }
.jt-dates { display: flex; gap: 4px; }
.jt-date-chip {
  padding: 4px 9px; border-radius: 12px; border: 1px solid transparent; background: transparent;
  font-size: 12.5px; color: var(--ink-light); cursor: pointer;
}
.jt-date-chip.on { background: #efece0; color: var(--ink); border-color: var(--line); }
.jt-greet { border-left: 4px solid var(--green); }
.jt-greet-head { font-size: 13px; color: var(--green); margin-bottom: 6px; display: flex; align-items: center; gap: 8px; }
.jt-greet-text { font-size: 15px; color: var(--ink); margin-bottom: 10px; }
.jt-greet-ok { padding: 6px 18px; border: 1px solid var(--line); background:var(--card); border-radius: 16px; font-size: 13px; cursor: pointer; }
.jt-task.ro .jt-dot { pointer-events: none; opacity: 0.5; }
.jt-riqian {
  display: block; margin-top: 12px; padding-top: 10px; border-top: 1px dashed var(--line);
  font-size: 13.5px; color: var(--green); text-decoration: none;
}
.jt-riqian::after { content: " →"; }
/* ---------- 家人管理 ---------- */
.fm-list { display: flex; flex-direction: column; gap: 8px; margin: 10px 0; }
.fm-item { display: flex; justify-content: space-between; align-items: center; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; background:var(--card); font-size: 14px; }
.fm-item .fm-meta { font-size: 12.5px; color: var(--ink-light); margin-top: 2px; } /* 【V24.15】*/
.fm-form { border: 1px dashed var(--line); border-radius: 10px; padding: 12px; margin-top: 10px; }
.fm-form label { display: block; font-size: 12.5px; color: var(--ink-light); margin: 8px 0 3px; } /* 【V24.15】#6b6656 夜版 2.95:1 → 变量昼/夜双过 */
.fm-form input, .fm-form select {
  width: 100%; box-sizing: border-box; padding: 8px 10px; border: 1px solid var(--line);
  border-radius: 8px; font-size: 14px; font-family: inherit; background:var(--card);
}
.fm-row { display: flex; gap: 8px; }
.fm-row > div { flex: 1; }
/* ---------- 患者巡逻 ---------- */
.pt-item { border: 1px solid var(--line); border-radius: 10px; background:var(--card); padding: 12px; margin-bottom: 10px; }
.pt-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.pt-name { font-weight: bold; font-size: 15px; }
.pt-flags { display: flex; gap: 6px; flex-wrap: wrap; margin: 6px 0; }
.pt-flag { font-size: 12px; padding: 2px 10px; border-radius: 10px; background: #f3ead9; color: #a8622b; }
.pt-flag.good { background: #e4ede7; color: var(--green); }
.pt-meta { font-size: 12.5px; color: var(--ink-light); line-height: 1.7; }
.pt-greet { margin-top: 8px; display: none; border-top: 1px dashed var(--line); padding-top: 8px; }
.pt-greet.open { display: block; }
.pt-greet textarea { width: 100%; box-sizing: border-box; min-height: 50px; padding: 8px; border: 1px solid var(--line); border-radius: 8px; font-size: 13px; font-family: inherit; }
.pt-presets { display: flex; gap: 6px; flex-wrap: wrap; margin: 6px 0; }
.pt-presets button { font-size: 12px; padding: 4px 10px; border-radius: 12px; border: 1px solid var(--line); background:var(--card); cursor: pointer; }

/* ---------- 今日页头部 v2：今天/明天嵌入晨报行 ---------- */
.jt-date-line { max-width: 680px; margin: 6px auto 2px; padding: 0 16px; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.jt-seg { display: inline-flex; flex: none; background:var(--card); border: 1px solid var(--line); border-radius: 999px; padding: 2px; }
.jt-seg-btn { padding: 3px 14px; border-radius: 999px; border: none; background: transparent; font-size: 12.5px; color: var(--ink-light); cursor: pointer; font-family: inherit; line-height: 1.5; }
.jt-seg-btn.on { background: var(--green); color: var(--paper); }
.jt-date-line .jt-date { margin: 0; padding: 0; flex: 1; min-width: 200px; }
.jt-date-pre { display: inline-block; margin-right: 8px; padding: 1px 8px; border-radius: 10px; background: #A8622B; color: #fff; font-size: 11.5px; vertical-align: 2px; letter-spacing: 1px; }

/* ---------- 今日页底部：登录信息 ---------- */
.jt-foot { max-width: 680px; margin: 4px auto 0; padding: 0 16px; text-align: center; font-size: 12.5px; color: var(--ink-light); }
.jt-foot .me-name, .jt-foot #meName { font-family: "Kaiti SC", KaiTi, serif; font-size: 14px; color: var(--green); }
.jt-foot a { color: var(--ink-light); text-decoration: none; border-bottom: 1px dotted #cbbfa9; margin-left: 10px; }
.jt-foot a:hover { color: var(--green); border-color: var(--green); }

/* ---------- 今日页头部：日课金句 ---------- */
.jt-motto {
  max-width: 680px; margin: 2px auto 0; padding: 0 16px; text-align: center;
  font-family: "Kaiti SC", KaiTi, serif; font-size: 13.5px; color: var(--green);
  letter-spacing: 1.5px;
}
.jt-motto .jt-motto-src { font-size: 11.5px; color: var(--ink-light); letter-spacing: 0.5px; margin-left: 4px; }

/* ---------- 今日页 v3：修行日课风头部 + 晨报装日期 ---------- */
.jt-topbar { justify-content: center; }
.jt-topbar .brand { font-size: 22px; letter-spacing: 10px; text-indent: 10px; }
/* 品牌前「天时养元」篆印 logo */
.brand-seal { width: 26px; height: 26px; vertical-align: -6px; margin-right: 2px; }
@media (max-width: 480px) { .brand-seal { width: 24px; height: 24px; vertical-align: -5px; } }
.jt-motto { margin: 6px auto 2px; }
.jt-summary .jt-date { margin: 0; padding: 0; }
.jt-sum-date {
  text-align: center; padding-bottom: 10px; margin-bottom: 10px;
  border-bottom: 1px dashed var(--line);
}
.jt-sum-date .jt-date-big {
  display: block; font-family: "Songti SC", STSong, SimSun, serif;
  font-size: 20px; color: var(--ink); letter-spacing: 2px;
}
.jt-sum-date .jt-date-sub { display: block; margin: 4px 0 0; }
.jt-summary .jt-sum-day {
  display: block; text-align: center; font-family: "Kaiti SC", KaiTi, serif;
  font-size: 17px; color: var(--green); letter-spacing: 2px; margin: 0 0 8px;
}
.jt-summary .jt-sum-text { text-align: center; }
.jt-summary .jt-sum-more { display: block; text-align: center; margin-top: 10px; }

/* ============================================================
   V4 · 纸上修行（按 2026-09-12 样机定稿落地）
   纸色底 / 白卡发丝边 14px 圆角 / 宋体居中标题带发丝线 /
   三件事背景卡 / 朱砂点睛 / 医生卡落印
   ============================================================ */

/* 卡片：更润的发丝边与投影 */
.card {
  border-radius: 14px;
  border: 1px solid rgba(47, 93, 80, 0.10);
  box-shadow: 0 2px 12px rgba(90, 70, 40, 0.05);
}

/* 小节标题：宋体居中 + 两侧发丝线 */
.card h2 {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  text-align: center;
  font-family: "Noto Serif SC", "Songti SC", SimSun, serif;
  font-size: 14.5px; font-weight: 600;
  color: var(--green); letter-spacing: 5px;
  margin-bottom: 13px;
}
.card h2::before, .card h2::after {
  content: ""; flex: 1; height: 1px;
  background: linear-gradient(90deg, transparent, #D8D0BC 55%, #D8D0BC);
}
.card h2::after { background: linear-gradient(270deg, transparent, #D8D0BC 55%, #D8D0BC); }
.card h2 .badge { letter-spacing: 0; }

/* 连续天数小签：朱砂点睛 */
.card h2 .badge {
  background: #FBF5EA; color: var(--ochre, #A8622B);
  border: 1px solid rgba(168, 98, 43, 0.30);
}

/* ---------- 三件事：背景卡 ---------- */
.jt-tasks { gap: 10px; }
.jt-task {
  background: linear-gradient(180deg, #FDFCF7, #F8F5EC);
  border: 1px solid #E5DECB; border-radius: 12px;
  padding: 13px 13px;
  border-bottom: 1px solid #E5DECB;
  transition: background 0.25s ease, border-color 0.25s ease;
}
.jt-task:last-child { border-bottom: 1px solid #E5DECB; }
.jt-task-name {
  font-family: "Noto Serif SC", "Songti SC", SimSun, serif;
  font-size: 15px; letter-spacing: 1.5px;
}
.jt-task.done {
  background: linear-gradient(180deg, #F1F5EF, #EAF1EA);
  border-color: #CBDACB;
}
.jt-task.done .jt-task-name { letter-spacing: 1.5px; }

/* 日签按钮：胶囊 + 描边 */
.jt-riqian {
  text-align: center;
  border-top: none;
  border: 1px solid rgba(168, 98, 43, 0.35);
  background:var(--face-6);
  border-radius: 999px;
  padding: 9px 0;
  margin-top: 13px;
  color: #A8622B; font-size: 13.5px; letter-spacing: 1px;
}
.jt-riqian:hover { background: #FBF3E4; }

/* 减脂陪伴横幅（仅减重目标用户可见） */
.jt-meal-mot { margin-top: 10px;
  background: var(--face-green, #F1F3EC); border-radius: 12px; padding: 10px 14px; }
.jt-meal-mot span { display: block; text-align: center; font-size: 13px; line-height: 1.7; color: var(--green); font-family: "Kaiti SC", KaiTi, serif; }

/* 医生今日卡：右下落「天时养元」篆印（真小篆字渲染 PNG，传统右起竖读） */
.doc-card { position: relative; }
.doc-card::after {
  content: "";
  position: absolute; right: 12px; bottom: 12px;
  width: 44px; height: 44px;
  background: url("seal-ty.png") center/contain no-repeat;
  opacity: .95;
}

/* 晨报卡：调性楷体再放大一档，卡内留白更足 */
.jt-summary { padding: 20px 18px 16px; }
.jt-sum-day { font-family: "Kaiti SC", KaiTi, STKaiti, serif; }

/* 页脚与免责：更轻 */
.jt-foot { color: #A79E8C; }

/* ============================================================
   V5 · 睡前仪式夜页（全站唯一深色页 · 纸上修行对齐）
   整页墨绿夜底 / 纸色字 / 发丝半透卡 / 双环大圆钮 / 朱砂点睛
   ============================================================ */

/* 页底与报头 */
body.am-night {
  background: linear-gradient(180deg, #26423A 0%, #1F3831 100%);
  min-height: 100vh;
  color: #F3EFE6;
}
body.am-night .top .brand { color: #F3EFE6; }
body.am-night .sub { color: rgba(243, 239, 230, 0.55); }

/* 卡片：半透纸色发丝卡 */
body.am-night .card {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(243, 239, 230, 0.14);
  box-shadow: none;
}
body.am-night .card h2 { color: #D8E2D6; }
body.am-night .card h2::before {
  background: linear-gradient(90deg, transparent, rgba(243, 239, 230, 0.22) 55%, rgba(243, 239, 230, 0.22));
}
body.am-night .card h2::after {
  background: linear-gradient(270deg, transparent, rgba(243, 239, 230, 0.22) 55%, rgba(243, 239, 230, 0.22));
}
body.am-night .badge {
  background: rgba(168, 98, 43, 0.24); color: #DDA374;
  border-color: rgba(221, 163, 116, 0.42);
}
body.am-night .hint, body.am-night .foot-note { color: rgba(243, 239, 230, 0.58); }
body.am-night .foot-note a { color: #9FC3AF; }

/* 仪式主体：纸色大字 + 双环大圆钮 */
body.am-night .am-clock { color: #F3EFE6; text-shadow: 0 2px 18px rgba(0, 0, 0, 0.25); }
.am-zi {
  font-size: 13px; letter-spacing: 2px; color: #DDA374;
  margin-top: 2px; min-height: 20px;
}
body.am-night .am-phase { color: rgba(243, 239, 230, 0.62); }
body.am-night .am-phase.breath { color: #DDA374; }
body.am-night .am-phase.done { color: #9FC3AF; }
body.am-night .am-start {
  width: 148px; height: 148px;
  background: radial-gradient(circle at 50% 38%, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.03));
  border: 1.5px solid rgba(243, 239, 230, 0.78);
  box-shadow: 0 0 0 8px rgba(243, 239, 230, 0.10), 0 16px 36px -14px rgba(0, 0, 0, 0.6);
  color: #F3EFE6; font-size: 24px; letter-spacing: 8px; text-indent: 8px;
}
body.am-night .am-hint { color: rgba(243, 239, 230, 0.5); }
body.am-night .am-scene-lab { color: rgba(243, 239, 230, 0.45); }
body.am-night .am-sc { background: rgba(255, 255, 255, 0.08); color: rgba(243, 239, 230, 0.8); border: 1px solid rgba(243, 239, 230, 0.16); }
body.am-night .am-sc.on { background: #9FC3AF; border-color: #9FC3AF; color: #1B2A24; }

/* 流程与两问 */
body.am-night .am-flow li { color: rgba(243, 239, 230, 0.85); }
body.am-night .am-flow b { color: #9FC3AF; }
body.am-night .am-q { color: rgba(243, 239, 230, 0.9); }
body.am-night .am-dot {
  background: rgba(255, 255, 255, 0.08); color: rgba(243, 239, 230, 0.85);
  border: 1px solid rgba(243, 239, 230, 0.16);
}
body.am-night .am-dot.on { background: #A8622B; border-color: #A8622B; color: #FDF6EA; }

/* 安眠四路 */
body.am-night .am-more summary { color: #D8E2D6; }
body.am-night .sleep-path { border-left-color: rgba(159, 195, 175, 0.55); }
body.am-night .sleep-path h3 { color: rgba(243, 239, 230, 0.92); }
body.am-night .sleep-path h3 small { color: rgba(243, 239, 230, 0.5); }
body.am-night .sleep-path p { color: rgba(243, 239, 230, 0.75); }

/* 曲线 */
body.am-night .am-grid { stroke: rgba(243, 239, 230, 0.16); }
body.am-night .am-line { stroke: #9FC3AF; }
body.am-night .am-pt { fill: #DDA374; }
body.am-night .am-x { fill: rgba(243, 239, 230, 0.55); }
body.am-night .am-y { fill: rgba(243, 239, 230, 0.35); }
body.am-night .am-v { fill: #DDA374; }
body.am-night .am-empty { fill: rgba(243, 239, 230, 0.5); }

/* 页脚 / 免责 / 底部导航 */
body.am-night .disclaimer { color: rgba(243, 239, 230, 0.42); border-top-color: rgba(243, 239, 230, 0.12); }
body.am-night footer { color: rgba(243, 239, 230, 0.4); }
body.am-night .mod-nav { background: #1F3831; border-bottom-color: rgba(243, 239, 230, 0.12); }
body.am-night .mod-nav a { color: rgba(243, 239, 230, 0.6); }
body.am-night .mod-nav a .zh { color: rgba(243, 239, 230, 0.85); }
body.am-night .mod-nav a.active {
  background: rgba(255, 255, 255, 0.08); border-color: rgba(243, 239, 230, 0.28);
}
body.am-night .mod-nav a.active .zh { color: #D8E2D6; }

/* ============================================================
   V5.1 · 今日页陪伴瞬间（晨报回应 / 三件事全勾回声）
   ============================================================ */

/* 晨报卡内：昨晚回应一行 */
.jt-sum-note {
  margin-top: 8px; padding-top: 8px;
  border-top: 1px dashed #DDD4BE;
  font-size: 12.5px; color: #8A7B5E;
  letter-spacing: 0.5px; line-height: 1.8;
}
.jt-sum-note b { color: #A8622B; font-weight: 600; }

/* 三件事回声：全勾或断签回访的软回应 */
.jt-echo {
  display: none;
  margin-top: 11px;
  padding: 8px 12px;
  border: 1px dashed rgba(168, 98, 43, 0.30);
  border-radius: 10px;
  background:var(--face-6);
  font-family: "Kaiti SC", KaiTi, STKaiti, serif;
  font-size: 13.5px; color: #A8622B;
  text-align: center; letter-spacing: 1px; line-height: 1.7;
}
.jt-echo.show { display: block; }

/* ============================================================
   V5.2 · 全站小抛光
   ============================================================ */

/* 按钮：纸感渐变替代旧土黄平涂（排除 .on 选中态，否则渐变会压住各处选中样式） */
button:not(.primary):not(.on):not(.jt-seg-btn):not(.jt-dot):not(.am-dot):not(.jt-mem) {
  background: linear-gradient(180deg, var(--btn-face-a), var(--btn-face-b));
  border: 1px solid var(--btn-line);
  color: var(--ink);
}

/* 荐食菜名：宋体，与纸上修行一致 */
.r-name {
  font-family: "Noto Serif SC", "Songti SC", SimSun, serif;
  letter-spacing: 0.5px;
}

/* 荐食图：统一圆角发丝边 */
.recipe .r-img, .recipe img {
  border-radius: 10px;
  border: 1px solid #E5DECB;
}

/* ============================================================
   V5.2 · 晨报睡眠一问（先问后显，点击即存）
   ============================================================ */
.jt-sq-head {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
}
.jt-sq-dots { display: inline-flex; gap: 6px; margin-left: auto; }
.jt-sq-dot {
  width: 26px; height: 26px; border-radius: 50%;
  border: 1.5px solid #C9C2AC; background: transparent;
  color: #8A7B5E; font-size: 12px; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  transition: all .12s; padding: 0;
}
.jt-sq-dot.on {
  background: var(--green); border-color: var(--green); color: #F7F5EF;
}
.jt-sq-note {
  margin-top: 4px; color: #A8622B;
}



/* ===== V9.3 底部三 Tab（今日 / 日课 / 我的）===== */
/* 【2026-10-27】五 Tab（今天/日课/疗愈/江湖/设置）：格宽减半、字距收紧、强制单行横写 */
.jbt-tabs {
  position: fixed; bottom: 0; left: 0; right: 0; z-index: 90;
  background:var(--face-3); border-top: 1px solid #E2DDCC;
  display: flex;
  padding: 2px 0 calc(8px + env(safe-area-inset-bottom));
}
.jbt-tabs a {
  flex: 1; text-decoration: none; text-align: center; white-space: nowrap;
  padding: 6px 0 3px; border-top: 2.5px solid transparent;
  font-family: "Kaiti SC", KaiTi, serif; font-size: 14px; letter-spacing: 1px;
  color: var(--ink-light); /* 【V24.15】#8A887A→变量，浅底 3.5:1 → 4.9:1 */
}
@media (max-width: 380px) {
  .jbt-tabs a { padding: 6px 0 3px; font-size: 13px; letter-spacing: 0; }
}
.jbt-tabs a.on { color: var(--green); border-top-color: var(--green); font-weight: 600; }
body.jbt-hasbar main { padding-bottom: 96px; }

/* 深色页变体（站桩 zz-night / 睡前 am-night） */
body.am-night .jbt-tabs, body.zz-night .jbt-tabs {
  background: #16302A; border-top-color: var(--green);
}
body.am-night .jbt-tabs a, body.zz-night .jbt-tabs a { color: #7E9A8E; }
body.am-night .jbt-tabs a.on, body.zz-night .jbt-tabs a.on { color: #F3EFE6; border-top-color: #A8622B; }

/* ===== V9.3 五件事 ===== */
.jt-task.accent .jt-task-name { color: #A8622B; }
.jt-task.accent .jt-dot { border-color: #A8622B; }
.jt-task.accent.done .jt-dot { background: #A8622B; border-color: #A8622B; }
.jt-task.accent.done .jt-task-name { color: #A8622B; }
.jt-task .jt-go.hui { color: #B0AE9E; }

/* ===== V9.3 日课页 ===== */
.rk-pill { display: inline-block; font-size: 11px; padding: 2px 10px; border-radius: 10px; margin-left: 8px; vertical-align: 2px; }
.rk-pill.main { background: #FDF1EC; color: #A8622B; border: 1px solid #A8622B; }
.rk-pill.sub { background: #EFF3EE; color: var(--green); }
.rk-card { display: flex; align-items: center; gap: 12px; }
.rk-ava {
  width: 44px; height: 44px; border-radius: 22px; flex: none;
  background: var(--green); color: #F7F5EF; font-family: "Kaiti SC", KaiTi, serif;
  font-size: 20px; display: flex; align-items: center; justify-content: center;
}
.rk-ava.hollow { background:var(--face-3); color: var(--green); border: 1.6px solid var(--green); }
.rk-body { flex: 1; min-width: 0; }
.rk-name { font-size: 15.5px; color: var(--ink); }
.rk-desc { font-size: 12px; color: var(--ink-light); margin-top: 2px; }
.rk-warn { font-size: 11.5px; color: #A8622B; background: #FBF6EE; border-radius: 6px; padding: 6px 10px; margin-top: 10px; }
.rk-fit { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.rk-fit button {
  font-family: inherit; font-size: 12.5px; padding: 5px 12px; border-radius: 14px;
  border: 1px solid #C9C2AC; background: transparent; color: var(--ink); cursor: pointer;
}
.rk-fit button.on { background: var(--green); border-color: var(--green); color: #F7F5EF; }
.rk-bars { display: flex; align-items: flex-end; gap: 14px; height: 64px; padding: 6px 4px 0; }
.rk-bars i { width: 20px; background: var(--green); border-radius: 3px 3px 0 0; opacity: .45; }
.rk-bars i.today { background: #A8622B; opacity: 1; }
.rk-sleep { background: #24413A; border-radius: 10px; padding: 16px; color: #F3EFE6; }
.rk-sleep .rk-s-title { font-size: 15px; letter-spacing: 2px; }
.rk-sleep .rk-s-sub { font-size: 12px; color: #9DB8AD; margin-top: 6px; }
.rk-sleep .rk-s-go {
  float: right; background: #A8622B; color: #FFF; text-decoration: none;
  font-size: 12.5px; padding: 8px 18px; border-radius: 18px;
}

/* ===== V9.3 读经典文库 ===== */
.jd-menu { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.jd-menu button {
  font-family: inherit; font-size: 12.5px; padding: 6px 13px; border-radius: 15px;
  border: 1px solid #C9C2AC; background: transparent; color: var(--ink); cursor: pointer;
}
.jd-menu button.on { background: var(--green); border-color: var(--green); color: #F7F5EF; }
.jd-note { font-size: 12px; color: var(--ink-light); margin: 4px 0 10px; }

/* ===== V9.3 站桩页全深绿（与睡前同款夜色）===== */
body.zz-night {
  background: linear-gradient(180deg, #26423A 0%, #1F3831 100%);
  min-height: 100vh;
  color: #F3EFE6;
}
body.zz-night .top .brand, body.zz-night .top .brand a { color: #F3EFE6; }
body.zz-night .sub { color: rgba(243, 239, 230, 0.55); }
body.zz-night .card {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(243, 239, 230, 0.14);
  box-shadow: none;
}
body.zz-night .card h2 { color: #D8E2D6; }
body.zz-night .card h2::before {
  background: linear-gradient(90deg, transparent, rgba(243, 239, 230, 0.22) 55%, rgba(243, 239, 230, 0.22));
}
body.zz-night .card h2::after {
  background: linear-gradient(270deg, transparent, rgba(243, 239, 230, 0.22) 55%, rgba(243, 239, 230, 0.22));
}
body.zz-night .badge {
  background: rgba(168, 98, 43, 0.24); color: #DDA374;
  border-color: rgba(221, 163, 116, 0.42);
}
body.zz-night .hint, body.zz-night .foot-note { color: rgba(243, 239, 230, 0.58); }
body.zz-night .foot-note a { color: #9FC3AF; }
body.zz-night .card, body.zz-night .zz-timer, body.zz-night .zz-stance, body.zz-night .zz-fa, body.zz-night .zz-fa-sec { color: #E9E4D6; }
body.zz-night .zz-time { color: #F3EFE6; text-shadow: 0 2px 18px rgba(0,0,0,.25); }
body.zz-night .zz-dur button { background: transparent; border-color: rgba(243,239,230,.3); color: #C9D6CC; }
body.zz-night .zz-dur button.on { background: var(--green); border-color: #A8622B; color: #F3EFE6; }
body.zz-night .zz-state { color: #9DB8AD; }
body.zz-night .zz-btns button.primary { background: #A8622B; border-color: #A8622B; color: #FFF; }
body.zz-night .zz-btns button { background: transparent; border-color: rgba(243,239,230,.3); color: #C9D6CC; }
body.zz-night .zz-stats .zz-stat b { color: #F3EFE6; }
body.zz-night .zz-stats .zz-stat span { color: rgba(243,239,230,.55); }
body.zz-night .heat span { filter: brightness(.85); }
body.zz-night .zz-fa h3 { color: #D8E2D6; }
body.zz-night .zz-fa li { color: rgba(243,239,230,.82); }
body.zz-night .zz-fa li.warn { color: #DDA374; }
body.zz-night .zz-fa-tag { background: rgba(47,93,80,.6); color: #9FC3AF; }
body.zz-night .zz-fa-tag.warn { background: rgba(168,98,43,.3); color: #DDA374; }
body.zz-night .disclaimer { color: rgba(243,239,230,.45); }
body.zz-night footer { color: rgba(243,239,230,.45); }
/* 夜间模式补漏：心法小节/配乐chips等浅底深字全部换夜色 */
body.zz-night .zz-fa-sec { background: rgba(255,255,255,.06); border-color: rgba(243,239,230,.14); }
body.zz-night .zz-fa-sec.warn-sec { background: rgba(168,98,43,.12); border-color: rgba(221,163,116,.32); }
body.zz-night .zz-fa-sec li b { color: #9FC3AF; }
body.zz-night .zz-fa-sec li::before { background: rgba(243,239,230,.4); }
body.zz-night .zz-fa-sec li.warn::before { background: #DDA374; }
body.zz-night .zz-stance { color: #DDA374; }
body.zz-night .zz-music-title { color: #D8E2D6; }
body.zz-night .zz-mgroup-label { color: rgba(243,239,230,.6); }
body.zz-night .zz-music-note { color: rgba(243,239,230,.6); }
body.zz-night .zz-music button { background: rgba(243,239,230,.1); border-color: rgba(243,239,230,.26); color: #C9D6CC; }
body.zz-night .zz-music button.on { background: var(--green); border-color: #A8622B; color: #F3EFE6; }
/* 夜间通用按钮：同权位压过 V5.2 纸感渐变（含 .on 排除，选中态走各自规则） */
body.zz-night button:not(.primary):not(.on):not(.jt-seg-btn):not(.jt-dot):not(.am-dot):not(.jt-mem) {
  background: rgba(243,239,230,.08);
  border-color: rgba(243,239,230,.26);
  color: #C9D6CC;
}
body.zz-night button:not(.primary):not(.on):not(.jt-seg-btn):not(.jt-dot):not(.am-dot):not(.jt-mem):hover {
  background: rgba(243,239,230,.15);
}
/* 夜间打卡统计块：米白底换暗底 */
body.zz-night .zz-stat { background: rgba(255,255,255,.06); }
.zz-limit {
  margin-top: 10px; font-size: 12px; color: #DDA374;
  background: rgba(168, 98, 43, 0.14); border: 1px solid rgba(221, 163, 116, 0.35);
  border-radius: 6px; padding: 7px 10px; text-align: center;
}

/* ===== V9.3.1 经典文库：下拉 + 全文注音 ===== */
.jd-ctrl { display: flex; gap: 10px; align-items: center; margin-bottom: 8px; }
.jd-select {
  flex: 1; font-family: "Kaiti SC", KaiTi, serif; font-size: 15px; color: var(--ink);
  padding: 9px 12px; border: 1px solid #C9C2AC; border-radius: 8px; background:var(--face-3);
}
.jd-pybtn {
  font-family: inherit; font-size: 12.5px; padding: 8px 14px; border-radius: 16px; cursor: pointer;
  border: 1px solid #C9C2AC; background: transparent; color: var(--ink);
}
.jd-pybtn.on { background: var(--green); border-color: var(--green); color: #F7F5EF; }
.jd-full { margin-top: 6px; }
.jd-full p {
  font-family: "Kaiti SC", KaiTi, serif; font-size: 16.5px; line-height: 2.5;
  color: var(--ink); margin: 0 0 18px; text-align: justify;
}
.jd-full ruby { ruby-align: center; }
.jd-full ruby rt {
  font-size: 10.5px; color: #A8622B; opacity: .85; font-family: "Kaiti SC", KaiTi, serif;
  letter-spacing: 0; transform: translateY(2px);
}
.jd-full .jd-src { text-align: center; color: var(--ink-light); font-size: 13px; margin-bottom: 16px; }

/* ===== V9.3.1 晨报：运气结构 + 预警签 ===== */
.jt-yun {
  font-size: 11.5px; color: var(--ink-light); margin-top: 6px;
  letter-spacing: .5px; line-height: 1.7;
}
/* V13.0.6b 个人体质烙印行：调性名粗分档，同档人多；这行人人不同 */
.jt-tiaoxing-me {
  font-size: 12px; color: #C8A96A; margin-top: 4px; letter-spacing: .5px;
}
.jt-summary .ts-sky .jt-tiaoxing-me { color: #E4C98A; }
.jt-alert {
  margin-top: 8px; font-size: 13px; line-height: 1.7; font-weight: 600;
  border-radius: 8px; padding: 9px 12px;
  border: 1px solid transparent; border-left: 4px solid transparent;
}
.jt-alert.lv1 { background: #F3DEDE; color: #8A3B3B; border-color: rgba(163,61,61,.35); border-left-color: #A33D3D; }
.jt-alert.lv2 { background: #F6EEDA; color: #8A6A2F; border-color: rgba(184,134,11,.35); border-left-color: var(--yellow); }
.jt-alert.lv3 { background: #E8EFE9; color: var(--green); border-color: rgba(47,93,80,.25); border-left-color: var(--green); }

/* ===== V12.1 晨报双段卡：天（深绿）× 与你（白卡） ===== */
.jt-summary .ts-sky {
  background: var(--green); border-radius: 12px; padding: 12px 14px;
  color: #F7F5EF;
}
.jt-summary .ts-sky .jt-sum-date { color: rgba(247,245,239,.85); }
/* 【V24.15 对比度】日期字原吃 var(--ink)/var(--ink-light)（深墨）压在深绿天象卡上
 * 只有 1.6:1 —— 天象卡内一律米白，昼/夜同理（夜版卡底换 #24463C，见 prefs.css）。 */
.jt-summary .ts-sky .jt-date-big { color: #F7F5EF; }
.jt-summary .ts-sky .jt-date-sub { color: rgba(247,245,239,.82); }
.jt-summary .ts-sky .jt-sum-day { color: rgba(247,245,239,.85); }
.jt-summary .ts-sky .jt-yun { color: rgba(247,245,239,.7); }
/* 【V24.11 · D19】本步主客加临行：淡金小字，别抢「今日平安」的戏。
 * 🔴 显隐全靠 HTML inline style（初始 none，renderSummary 按需置空/置 none）——
 * CSS 不可再写 display:none，否则 JS 置 style.display="" 也翻不回来（踩过一次）。 */
.jt-jialin { font-size: 11px; margin-top: 3px; letter-spacing: .5px; color: #E4C98A; }
.jt-summary .ts-sky .jt-jialin { color: rgba(228,201,138,.92); }
/* 【V23.45 · 创始人 2026-10-16】「今日平安」下面的正文收小一号（18→15px）：
 * 标题四个大字是视觉主体，看见即安心；只动晨报深绿卡这条，他页解读正文不动。 */
.jt-summary .ts-sky .jt-sum-text { color: #F7F5EF; font-size: 15px; }
.jt-summary .ts-sky .jt-alert { color: #2F2C24; }
.ts-me { display: flex; align-items: stretch; margin-top: 8px; }
.ts-me-bar { width: 1px; background: rgba(47,93,80,.35); }
.ts-me-body {
  flex: 1; background: var(--card); border: 0.5px solid rgba(47,93,80,.25);
  border-radius: 0 12px 12px 0; padding: 10px 14px; margin-left: 10px;
}
.ts-me-tag { font-size: 12px; color: var(--ochre); margin-bottom: 3px; }
.ts-me-text { font-size: 13px; color: var(--ink); line-height: 1.65; }
.ts-me-hint { font-size: 10.5px; color: var(--ink-light); margin-top: 4px; letter-spacing: .3px; }
/* 【V12.9】给引擎名配一枚印。印要压得住 11px 的小字，
   所以 30px 起步（比字号大两倍多），并且和文字之间留 7px 让它不挤。
   字号小于 32px 时篆字会糊 —— 组件内部已把字收在 16~94 的网格里，
   就是为了保证这个尺寸下四字仍能读出来。

   【注意】.jt-sum-foot 是 justify-content:space-between，加了第三个元素后
   印会跑到最左、文字居中、链接最右，三者散开。所以这里改成
   「左侧一组（印+文字）、右侧链接」的两段式布局。*/
.jt-sum-foot {
  display: flex; justify-content: space-between; align-items: center; margin-top: 12px;
}
.jt-seal-group { display: inline-flex; align-items: center; flex: 0 1 auto; min-width: 0; }
.jt-seal { display: inline-flex; align-items: center; margin-right: 7px;
  vertical-align: -6px; flex: 0 0 auto; }
.jt-seal .seal-svg { display: block; filter: drop-shadow(0 1px 2px rgba(0,0,0,.22)); }
.jt-engine-mini { font-size: 11px; color: var(--ink-light); letter-spacing: .5px; } /* 【V24.15】#A8A496 2.5:1 → 变量 */
.jt-sum-foot .jt-sum-more { border-bottom: none; flex: 0 0 auto; }

/* ===== V12.1.4 六气比例仪表（晨报深绿段内）：中线为平，右=偏盛 / 左=不足 ===== */
.jt-liuyun { margin-top: 10px; }
.jt-ly-cap {
  font-size: 10.5px; color: rgba(247,245,239,.55); letter-spacing: 1px;
  margin-bottom: 4px; text-align: center;
}
.jt-ly-row { display: flex; align-items: center; gap: 8px; margin-top: 4px; }
.jt-ly-lab { width: 38px; flex: none; font-size: 12px; color: rgba(247,245,239,.85); letter-spacing: 1px; }
.jt-ly-track {
  flex: 1; height: 9px; border-radius: 5px; position: relative;
  background: rgba(247,245,239,.14); overflow: visible;
}
.jt-ly-zero { position: absolute; left: 50%; top: -2px; bottom: -2px; width: 1px; background: rgba(247,245,239,.35); }
.jt-ly-bar { position: absolute; top: 0; bottom: 0; border-radius: 4px; min-width: 0; }
.jt-ly-bar.pos { left: 50%; background: #E3B56A; }
.jt-ly-bar.neg { right: 50%; background: #9BC4B5; }
.jt-ly-val { width: 32px; flex: none; font-size: 10.5px; text-align: right; color: rgba(247,245,239,.6); font-variant-numeric: tabular-nums; }

/* ===== V12.1.5 六气圆盘 + 五脏柱状图 ===== */
.jt-ly-dial { display: block; margin: 0 auto; width: 92%; max-width: 300px; height: auto; }
.bz-cols { display: flex; align-items: flex-end; justify-content: space-around; gap: 6px; }
.bz-col { display: flex; flex-direction: column; align-items: center; gap: 4px; flex: 1; min-width: 0; }
.bz-col-val { font-size: 11px; color: var(--ink-light); font-variant-numeric: tabular-nums; }
.bz-col-val.yong { color: #1F6B54; font-weight: 700; }
.bz-col-val.ji { color: #A8352A; font-weight: 700; }
.bz-col-val.weak { color: #8a8574; font-weight: 600; }
.bz-col-bar { width: 55%; max-width: 34px; min-height: 6px; border-radius: 5px 5px 2px 2px; background: var(--green); opacity: .85; }
.bz-col-bar.yong { background: #1F6B54; opacity: 1; }
.bz-col-bar.ji { background: #A8352A; opacity: 1; }
.bz-col-bar.weak { background: transparent; border: 1.5px dashed #a8a290; opacity: 1; }
.bz-col-lab { font-size: 11.5px; color: var(--ink-light); letter-spacing: 1px; white-space: nowrap; }
.bz-col-lab.yong { color: #1F6B54; font-weight: 700; }
.bz-col-lab.ji { color: #A8352A; font-weight: 700; }
.bz-col-lab.weak { color: #8a8574; font-weight: 600; }
.bz-cols-cap { margin-top: 8px; font-size: 10.5px; color: var(--ink-light); text-align: center; letter-spacing: .5px; } /* 【V24.15】#9a957f 3.0:1 → 变量 */
.bz-cols-cap .lg-yong { display: inline-block; width: 9px; height: 9px; border-radius: 3px; background: #1F6B54; vertical-align: -1px; }
.bz-cols-cap .lg-ji { display: inline-block; width: 9px; height: 9px; border-radius: 3px; background: #A8352A; vertical-align: -1px; }
.bz-cols-cap .lg-weak { display: inline-block; width: 9px; height: 9px; border-radius: 3px; background: transparent; border: 1px dashed #a8a290; vertical-align: -1px; }
.bz-cols-xi { margin-top: 3px; font-size: 11px; color: var(--ink-light); text-align: center; letter-spacing: .5px; }
/* 晨报「与你」白卡里的迷你版 */
#jtZang .bz-col-bar { background: rgba(47,93,80,.75); }
#jtZang .bz-col-bar.yong { background: #1F6B54; }
#jtZang .bz-col-bar.ji { background: #A8352A; }
#jtZang .bz-col-bar.weak { background: transparent; border: 1.5px dashed #a8a290; }

/* ===== V12.1.4 八字页五脏强弱：最薄一块 = 朱砂虚线框（要补）≠ 朱砂实心（少碰） ===== */
.bz-bar.weak { background: rgba(168,98,43,.18); border: 1px dashed #A8622B; }
.bz-row .lab.weak { color: #A8622B; font-weight: 600; }

/* ===== V23.87 岁谷一条（E5.11.2）：一句话 + 展开全文 =====
   分寸：这是「今日一餐」卡里的一行提示，不是一张大卡 —— 绿边、极小字号、
   展开才出正文。用户不点，它只占一行，不抢三餐图的位置。 */
.jt-suigu { margin: 0 0 10px; }
.jt-sg-b {
  width: 100%; display: flex; align-items: center; gap: 8px; text-align: left;
  background: rgba(47,93,80,.05); border: 1px solid rgba(47,93,80,.16);
  border-radius: 10px; padding: 6px 10px; cursor: pointer; font-family: inherit;
}
.jt-sg-b i {
  flex: 0 0 auto; font-style: normal; font-size: 11px; letter-spacing: 1px;
  color: #2F5D50; border-right: 1px solid rgba(47,93,80,.22); padding-right: 8px;
}
.jt-sg-b span { flex: 1; min-width: 0; font-size: 12.5px; color: #3f3a2e; line-height: 1.6; }
.jt-sg-b em { flex: 0 0 auto; font-style: normal; font-size: 11px; color: var(--ink-light); }
.jt-sg-d {
  margin-top: 8px; padding: 10px 12px; border-radius: 10px;
  background: #FCFAF4; border: 1px solid rgba(47,93,80,.12);
}
.jt-sg-r { display: flex; gap: 10px; padding: 4px 0; border-bottom: 1px dashed rgba(47,93,80,.12); }
.jt-sg-r b { flex: 0 0 auto; width: 6.4em; font-size: 11.5px; color: var(--ink-light); font-weight: 500; }
.jt-sg-r span { flex: 1; font-size: 12.5px; color: #3f3a2e; }
.jt-sg-d p { margin: 8px 0 0; font-size: 12.8px; line-height: 1.95; color: #3f3a2e; text-align: justify; }
.jt-sg-f { margin-top: 9px; font-size: 10.5px; color: var(--ink-light); line-height: 1.7; } /* 【V24.15】#9a9382 2.9:1 → 变量 */

/* ===== E6.0.1 今日一脏一条（脏气法时论）：一句话 + 展开「今日 / 君之素体」两段 =====
   与岁谷条同族（绿边、一行高），但语义不同：
   岁谷是「今年吃什么谷」（年尺度），这条是「今天吃哪一味」（日尺度）。
   两段必须分开渲（各带小标题），不许揉成一句话——否则成了「你的脾病今天宜苦味」，踩合规线。 */
.jt-yican { margin: 0 0 10px; }
.jt-yc-b {
  width: 100%; display: flex; align-items: center; gap: 8px; text-align: left;
  background: rgba(47,93,80,.05); border: 1px solid rgba(47,93,80,.16);
  border-radius: 10px; padding: 6px 10px; cursor: pointer; font-family: inherit;
}
.jt-yc-b i {
  flex: 0 0 auto; font-style: normal; font-size: 11px; letter-spacing: 1px;
  color: #2F5D50; border-right: 1px solid rgba(47,93,80,.22); padding-right: 8px;
}
.jt-yc-b span { flex: 1; min-width: 0; font-size: 12.5px; color: #3f3a2e; line-height: 1.6; }
.jt-yc-b em { flex: 0 0 auto; font-style: normal; font-size: 11px; color: var(--ink-light); }
.jt-yc-d {
  margin-top: 8px; padding: 10px 12px; border-radius: 10px;
  background: #FCFAF4; border: 1px solid rgba(47,93,80,.12);
}
.jt-yc-h {
  display: flex; align-items: center; gap: 7px;
  font-size: 11px; letter-spacing: 1px; color: var(--green, #2F5D50); margin: 0 0 7px;
}
.jt-yc-h::after { content: ""; flex: 1; height: 1px; background: rgba(47,93,80,.14); }
.jt-yc-h.mine { color: var(--ochre, #8a6b3a); margin-top: 12px; }
.jt-yc-h.mine::after { background: rgba(138,107,58,.18); }
.jt-yc-r { display: flex; gap: 10px; padding: 4px 0; border-bottom: 1px dashed rgba(47,93,80,.12); }
.jt-yc-r:last-child { border-bottom: 0; }
.jt-yc-r b { flex: 0 0 auto; width: 5.6em; font-size: 11.5px; color: var(--ink-light); font-weight: 500; }
.jt-yc-r span { flex: 1; font-size: 12.5px; color: #3f3a2e; }
.jt-yc-d p { margin: 8px 0 0; font-size: 12.8px; line-height: 1.95; color: #3f3a2e; text-align: justify; }
.jt-yc-f { margin-top: 9px; font-size: 10.5px; color: var(--ink-light); line-height: 1.7; } /* 【V24.15】*/

/* ===== V9.7 时餐卡：早餐/午茶/晚餐 ===== */
.jt-meal { display: flex; gap: 12px; margin-top: 2px; }
.jt-meal-item { flex: 1; min-width: 0; }
.jt-meal-img {
  width: 100%; aspect-ratio: 1 / 1; border-radius: 14px;
  background-color: #F3EFE2; border: 1px solid rgba(47,93,80,.10);
}
.jt-meal-name { font-size: 14.5px; color: var(--ink, #3f3a2e); font-weight: 600; margin-top: 8px; }
.jt-meal-role { font-size: 11.5px; color: var(--ink-light); margin-top: 2px; } /* 【V24.15】var(--ink-light) 3.7:1 → 变量 */
.jt-meal-why { font-size: 12.5px; color: var(--ink-light); line-height: 1.7; margin-top: 10px; }

/* ===== V9.3.1 睡前两问：已答提示 ===== */
.am-ansed {
  margin-top: 8px; font-size: 11.5px; color: #9DB8AD;
  text-align: center; letter-spacing: 1px;
}

/* ===== V9.3.1 经典文库：下拉 + 全文注音 ===== */
.jd-ctrl { display: flex; gap: 10px; align-items: center; margin-bottom: 10px; }
.jd-select {
  flex: 1; font-family: "Kaiti SC", KaiTi, serif; font-size: 15px; color: var(--ink);
  padding: 9px 12px; border: 1px solid #D8D2C0; border-radius: 10px; background:var(--face-3);
}
.jd-pybtn {
  font-family: inherit; font-size: 12.5px; padding: 8px 14px; border-radius: 16px; cursor: pointer;
  border: 1px solid #D8D2C0; background:var(--face-3); color: var(--ink-light);
}
.jd-pybtn.on { background: var(--green); border-color: var(--green); color: #F7F5EF; }
.jd-body-src { text-align: center; color: var(--ink-light); font-size: 12.5px; margin-bottom: 14px; }
#jdBody p {
  font-family: "Kaiti SC", KaiTi, serif; font-size: 16.5px; line-height: 2.35;
  color: var(--ink); margin: 0 0 16px;
}
#jdBody ruby { ruby-align: center; }
#jdBody ruby rt {
  font-size: 10px; color: #A8622B; opacity: .8; letter-spacing: 0;
  font-family: "Kaiti SC", KaiTi, serif;
}

/* ===== V9.5/V9.4：等级徽章 · 测量卡 ===== */
.wd-badge-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.wd-badge { display:inline-block; padding:4px 14px; border-radius:999px; font-size:14px; background:#E4EDE7; color:var(--green); border:1px solid rgba(47,93,80,.3); }
.wd-badge.lv2 { background:#F6EEDA; color:#8A6A2F; border-color:rgba(184,134,11,.4); }
.wd-badge.lv3 { background:#F3DEDE; color:#8A3B3B; border-color:rgba(163,45,45,.35); }
.wd-badge-sub { font-size:13px; color:var(--ink-light); }
.jt-mj-vals b { color:var(--green); }

/* ---------- 传统功法跟练页 + 现代健身页（V11） ---------- */
.gf-mark {
  display: block; width: 100%; margin: 12px 0 0; padding: 10px 12px;
  background: transparent; border: 1px dashed rgba(243, 239, 230, 0.32);
  border-radius: 12px; color: #9FC3AF; font-size: 13px; font-family: inherit; cursor: pointer;
}
.gf-mark:active { background: rgba(47, 93, 80, 0.35); }
.fit-pick { flex-wrap: wrap; }
.fit-plus {
  display: block; width: 100%; margin: 14px 0 0; padding: 18px 0;
  font-size: 20px; letter-spacing: 2px; border-radius: 16px;
  border: 1px solid #A8622B; background: #A8622B; color: #FFF;
  font-family: inherit; cursor: pointer;
}
.fit-plus:active { transform: scale(0.99); }
.fit-today { margin-top: 6px; }
.fit-row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 10px 2px; font-size: 14px; border-bottom: 1px dashed rgba(243, 239, 230, 0.16);
}
.fit-row:last-child { border-bottom: none; }
.fit-row b { font-weight: 400; color: #D8E2D6; }
.fit-row span { color: #9FC3AF; }
body:not(.zz-night) .fit-row { border-bottom-color: #e5e0d1; }
body:not(.zz-night) .fit-row b { color: #3f3a2e; }
body:not(.zz-night) .fit-row span { color: var(--green); }
body:not(.zz-night) .gf-mark { border-color: #e5e0d1; color: var(--green); }

/* ---- wuxingyue 五行乐（V12.1.24） ---- */
.wxy-track { border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; margin: 12px 0; background:var(--face-3); }
.wxy-track.wxy-playing { border-color: var(--green); background: var(--green-light); }
.wxy-kind { font-size: 12px; color: var(--ink-light); letter-spacing: 2px; }
.wxy-tune { font-family: "Kaiti SC", KaiTi, STKaiti, serif; font-size: 22px; color: var(--green); margin: 4px 0 6px; }
.wxy-desc { font-size: 13px; color: var(--ink); line-height: 1.6; margin-bottom: 10px; }
.wxy-track .btns { justify-content: center; }
.wxy-track .btns button { flex: 0 0 170px; }

/* ---- V13.0.1 晨报·身体速记（看板：四项量化 0–5 分，只看不录） ---- */
/* ---- V18.0 语音小助手入口条 ----
 * 缘起（2026-10-05 用户报）：这条入口渲染成了带下划线的默认链接。
 * 根因：HTML 里 class="jt-voice" 这套类名从未写进 style.css，
 * <a> 元素完全裸奔 → 浏览器按默认链接样式渲染（蓝紫字 + 下划线）。
 * 处置：补齐整组类样式，并把 a 的默认下划线 / color 显式清零。
 * 设计取向：老人友好 —— 字号偏大、点击区够高、对比度足够。 */
.jt-voice {
  display: flex; align-items: center; gap: 10px;
  margin-top: 12px; padding: 12px 14px;
  background: var(--green-light);
  border: 1px solid #c9dcd4; border-radius: 12px;
  color: var(--ink); text-decoration: none;
  min-height: 56px;               /* 老人手指的点击区 */
}
.jt-voice:hover, .jt-voice:active { background: #ddeae4; border-color: var(--green); text-decoration: none; }
.jt-voice-ico { font-size: 22px; line-height: 1; flex: 0 0 auto; }
.jt-voice-t { flex: 1 1 auto; min-width: 0; display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px; }
.jt-voice-t b { font-size: 15px; color: var(--green); font-weight: 700; }
.jt-voice-badge {
  font-size: 11px; color: #8a5a20; background: #f6ead6;
  border: 1px solid #e2cfa8; border-radius: 8px; padding: 1px 6px; white-space: nowrap;
}
.jt-voice-d { font-size: 12px; color: var(--ink-light); white-space: nowrap; }
.jt-voice-go { font-size: 13px; color: var(--green); font-weight: 600; flex: 0 0 auto; white-space: nowrap; }

.jt-qk { border-top: 1px dashed var(--line); margin-top: 12px; padding: 12px 2px 4px; }
.jt-qk-head { font-size: 14px; font-weight: 600; color: var(--green); letter-spacing: 1px; margin-bottom: 6px; }
.jt-qk-src { font-weight: 400; font-size: 12px; color: var(--ink-light); margin-left: 8px; letter-spacing: 0; }
.jt-qk-pts { color: var(--green); font-weight: 700; }
.jt-qk-item { display: flex; align-items: center; gap: 10px; border-radius: 10px; padding: 9px 10px; margin: 4px 0; text-decoration: none; }
/* 【V23.4 修·速记摘要竖排一字一行】（开关规则在下方 .jt-qk-ans 兼容块之后） */
.jt-qk-item.done { background: var(--green-light); }
.jt-qk-zh { font-family: "Kaiti SC", KaiTi, serif; font-size: 15px; color: var(--ink); flex: 0 0 34px; }
.jt-qk-ans { flex: 1; font-size: 13px; color: var(--ink); min-width: 0; }
/* 【V23.4 修·速记摘要竖排一字一行】窄屏 / 系统大字 / 站内字号放大时，
 * 一行里固定占用（称名34 + 圆点151 + 详细约55 + 三道缝30 ≈ 270px）把
 * .jt-qk-ans 挤到不足一个字宽 → 汉字一字一行竖着排，卡片被撑老高。
 * 解法：允许整行换行——摘要挤不下就带着「详细」整体掉到第二行独占整行（圆点行保持完整可点）；
 * min-width:10em 是换行开关（也是防「详细」孤行：摘要与详细同进退）；
 * 宽屏一行仍装得下，外观不变。放在原 .jt-qk-ans 之后，min-width:0 让位。 */
.jt-qk-item { flex-wrap: wrap; }
.jt-qk-ans { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; min-width: 10em; }
.jt-qk-ans-t { flex: 1 1 0; min-width: 0; } /* basis 0：长文在自己份额内换行，详细不掉行 */
.jt-qk-ans i { font-style: normal; font-size: 12px; color: var(--ink-light); }
.jt-qk-item.done .jt-qk-ans { color: var(--green); font-weight: 600; }
.jt-qk-dots { flex: 1; display: flex; gap: 5px; justify-content: center; }
.jt-qk-dot { width: 21px; height: 21px; border-radius: 50%; border: 1px solid var(--line); background:var(--card); color: var(--ink-light); font-size: 11px; display: flex; align-items: center; justify-content: center; }
.jt-qk-dot.on { background: var(--green); border-color: var(--green); color: #F7F5EF; }
.jt-qk-score { flex: 0 0 auto; min-width: 34px; text-align: center; font-size: 12px; font-weight: 700; border-radius: 10px; padding: 3px 8px; }
.jt-qk-score.good { background: var(--green); color: #F7F5EF; }
.jt-qk-score.mid { background: #C8A84B; color: #fff; }
.jt-qk-score.low { background: #B85C38; color: #fff; }
.jt-qk-none { flex: 0 0 auto; min-width: 34px; text-align: center; font-size: 12px; color: var(--ink-light); border: 1px dashed var(--line); border-radius: 10px; padding: 2px 8px; }
.jt-qk-foot { display: flex; align-items: center; gap: 14px; margin-top: 10px; font-size: 13px; }
.jt-qk-foot a { color: var(--green); text-decoration: none; }
/* 【V22 速记·就地点分】圆点由"只能看"改成"能点"。
 * 视觉尺寸一个不改（改了会挤成一排扣子），只把点击热区往外扩 8px ——
 * 手指不准的老人点得中，版面还是老样子。 */
.jt-qk-dot { position: relative; cursor: pointer; }
.jt-qk-dot::after { content: ""; position: absolute; inset: -8px; }
.jt-qk-item.done .jt-qk-dot { cursor: pointer; }
.jt-qk-more { flex: 0 0 auto; font-size: 12px; color: var(--ink-light); text-decoration: none;
  border-left: 1px solid var(--line); padding-left: 9px; margin-left: auto; } /* V23.4 margin-left auto：详细贴摘要盒右缘 */
.jt-qk-more:hover { color: var(--green); }
.jt-qk-copy { margin-left: auto; padding: 6px 12px; border-radius: 8px; border: 1px solid var(--green); background: var(--green); color: #F7F5EF; font-size: 12.5px; cursor: pointer; }

/* ---- V23.2 首页「语音记录」弹层（按住诉说 → 松手 → AI 自动记） ----
 * 遮罩 z-index 300：必须压过底栏 .jbt-tabs(90) 与 toast(≥190)，
 * 否则手机上弹层下半截被底栏顶住、按钮点不中（江湖页同款教训）。 */
.vl-mask { position: fixed; inset: 0; background: rgba(30,40,36,.45); z-index: 300; display: flex; align-items: flex-end; justify-content: center; }
.vl-sheet { width: 100%; max-width: 560px; background: var(--card); border-radius: 18px 18px 0 0; padding: 16px 18px calc(18px + env(safe-area-inset-bottom)); box-sizing: border-box; }
.vl-head { display: flex; align-items: center; justify-content: space-between; }
.vl-head b { font-size: 16px; color: var(--green); }
.vl-close { font-size: 13px; color: var(--ink-light); padding: 6px 2px 6px 14px; cursor: pointer; }
.vl-hint { text-align: center; font-size: 15.5px; color: var(--ink); margin: 14px 0 6px; font-family: "Kaiti SC", KaiTi, serif; letter-spacing: 1px; }
.vl-stage { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 10px 0 4px; }
.vl-btn { width: 108px; height: 108px; border-radius: 50%; border: none; background: var(--green); color: #F7F5EF; cursor: pointer; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; touch-action: none; -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; transition: transform .12s; }
.vl-btn:active { transform: scale(.96); }
.vl-btn.rec { background: #B85C38; }
.vl-btn.busy { background: #C8A84B; cursor: wait; }
.vl-btn-ico { font-size: 26px; line-height: 1; }
.vl-btn-t { font-size: 14px; letter-spacing: 1px; }
.vl-count { min-height: 20px; font-size: 13px; color: var(--ink-light); font-variant-numeric: tabular-nums; }
.vl-count.rec { color: #B85C38; font-weight: 700; }
.vl-result { margin-top: 10px; border-top: 1px dashed var(--line); padding-top: 10px; }
.vl-row { display: flex; gap: 8px; font-size: 13.5px; color: var(--ink); padding: 4px 0; line-height: 1.5; }
.vl-row i { font-style: normal; color: var(--green); flex: 0 0 auto; }
.vl-ok { margin-top: 8px; font-size: 13px; color: var(--green); font-weight: 700; }
.vl-raw { margin-top: 6px; font-size: 12px; color: var(--ink-light); line-height: 1.6; }
.vl-acts { display: flex; gap: 10px; margin-top: 12px; }
.vl-acts button { flex: 1; padding: 10px 0; border-radius: 10px; border: 1px solid var(--green); background: var(--green); color: #F7F5EF; font-size: 14px; cursor: pointer; }
.vl-acts button.ghost { background: transparent; color: var(--green); }
.vl-err { margin-top: 10px; font-size: 13px; color: #B85C38; text-align: center; line-height: 1.6; }
.vl-foot { margin-top: 12px; text-align: center; font-size: 11.5px; color: var(--ink-light); }

/* ============ 测算页 · 即时排盘（V23.80 · D15 §7.5） ============
 * 目的是「让用户自己认得出四柱对不对」，所以字号要大、干支要立得住，
 * 不做成小字附注——那样等于白做。 */
.sizhu-box { margin: 10px 0 4px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--face-1); }
.sz-head { font-size: 13px; color: var(--green); font-weight: 700; letter-spacing: 1px; margin-bottom: 10px; }
.sz-tip { font-weight: 400; color: var(--ink-light); font-size: 12px; letter-spacing: 0; margin-left: 6px; }
.sz-pillars { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.sz-p { text-align: center; padding: 8px 4px; background: var(--card); border: 1px solid var(--line); border-radius: 8px; }
.sz-p .lb { font-size: 11.5px; color: var(--ink-light); letter-spacing: 1px; }
.sz-p .gz { font-size: 22px; color: var(--ink); font-family: "Kaiti SC", KaiTi, serif; letter-spacing: 2px; line-height: 1.35; }
.sz-p.miss { background: transparent; border-style: dashed; }
.sz-p.miss .gz { font-size: 13px; color: var(--ink-light); letter-spacing: 0; line-height: 2.3; }
.sz-wx { display: flex; gap: 6px; margin-top: 10px; flex-wrap: wrap; }
.sz-wx i { font-style: normal; font-size: 12px; color: var(--ink); padding: 3px 8px; background: var(--card); border: 1px solid var(--line); border-radius: 20px; }
.sz-note { margin-top: 9px; font-size: 12.5px; line-height: 1.6; color: var(--ochre); }
.sz-note.err { color: var(--red); }
.sz-loading { font-size: 12.5px; color: var(--ink-light); }
