/* ============================================================
   《惊蛰》预览站 style.css v3.0
   —— 全站观感切换：依据 ChatGPT 全站设计稿《design/惊蛰宗村预览站-全站完整版.html》
   施工差异清单：design/v3.0施工差异清单-2026-09-01.md
   骨架：rail 238px + topbar 104px 双层；夜间 body.night（body 级类，防闪白脚本 body 顶即加）；
        噪点纹理 body:before；数字专用 --num:Georgia；三档断点 1080/820/580
   兼容：旧变量（--ink/--card/--line/--accent/--thunder/--pass/--gold/--danger 及 *-bg/-line）
        在 :root 与 .night 给别名映射，lineage/timeline/mindmap/gualu_stats/admin_codes
        等页内嵌样式与 JS 渲染类不崩
   纪律：设计稿 token 之外的功能色走别名；移动三铁律保留（输入16px/触达44px/表格降卡）
   ============================================================ */
:root {
  /* —— 新稿令牌 —— */
  --bg: #eee9dc; --surface: #f7f2e7; --paper: #fffaf0; --text: #29271f;
  --soft: #746e61; --faint: #a29a89; --edge: rgba(78, 70, 56, .17);
  --red: #9c362e; --red-dark: #7c2924; --jade: #53685a; --rail: #252921;
  --serif: "Songti SC", "STSong", "SimSun", "Noto Serif SC", serif;
  --kai: "STKaiti", "KaiTi", serif;
  --sans: "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
  --num: Georgia, "Times New Roman", serif;
  --shadow: 0 14px 40px rgba(61, 52, 36, .08);
  /* —— 旧变量别名（页内嵌样式与 JS 渲染类兜底） —— */
  --ink: var(--text); --ink-soft: var(--soft);
  --card: var(--surface); --line: var(--edge);
  --mute: var(--faint); --mute-2: #c5bdab;
  --accent: var(--red);
  --thunder: #5a6b7a;            /* 雷青 → 蓝灰（人名/次强调） */
  --pass: var(--jade); --pass-bg: rgba(83, 104, 90, .12);
  --gold: #8a6d2f; --gold-bg: rgba(138, 109, 47, .1); --gold-line: rgba(138, 109, 47, .35);
  --danger: var(--red); --danger-bg: rgba(156, 54, 46, .1); --danger-line: rgba(156, 54, 46, .4);
  --rail-bg: var(--rail); --rail-ink: #9ea398; --rail-hover: #f7efe1; --rail-on: #f6f1e7;
  --seal: var(--red);
}
body.night {
  --bg: #1c1d19; --surface: #25261f; --paper: #2b2c25; --text: #e8e0cf;
  --soft: #bbb2a2; --faint: #918a7d; --edge: rgba(232, 224, 207, .14);
  --rail: #141712; --shadow: 0 18px 45px rgba(0, 0, 0, .22);
  --ink: var(--text); --ink-soft: var(--soft); --card: var(--surface);
  --line: var(--edge); --mute: var(--faint); --mute-2: #565248;
  --thunder: #8fa3b5; --pass: #7d967f; --pass-bg: rgba(125, 150, 127, .14);
  --gold: #c2a862; --gold-bg: rgba(194, 168, 98, .12); --gold-line: rgba(194, 168, 98, .4);
  --danger: #c96a5c; --danger-bg: rgba(201, 106, 92, .12); --danger-line: rgba(201, 106, 92, .4);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--bg); color: var(--text); font-family: var(--sans); font-size: 14px; }
body:before {
  content: ""; position: fixed; inset: 0; pointer-events: none; opacity: .34;
  background-image: radial-gradient(rgba(68, 59, 43, .25) .7px, transparent .8px);
  background-size: 6px 6px; mix-blend-mode: multiply;
}
body.night:before { opacity: .18; background-image: radial-gradient(rgba(232, 224, 207, .12) .7px, transparent .8px); mix-blend-mode: normal; }
button, input, textarea, select { font: inherit; color: inherit; }
button { cursor: pointer; }
button:focus-visible, input:focus-visible, textarea:focus-visible, summary:focus-visible { outline: 2px solid var(--red); outline-offset: 3px; }
a { color: inherit; }
.app { min-height: 100vh; position: relative; }
.eyebrow { display: block; color: var(--faint); font: 600 11px/1.4 var(--sans); letter-spacing: .22em; text-transform: uppercase; }
.num { font-family: var(--num); }

/* ============================================================
   骨架：rail / stage / topbar / mobile-head / mobile-nav
   ============================================================ */
.rail { position: fixed; inset: 0 auto 0 0; z-index: 30; width: 238px; padding: 30px 24px 24px; background: var(--rail); color: #eee7d8; display: flex; flex-direction: column; }
.rail::after { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .28; background-image: radial-gradient(rgba(255, 255, 255, .08) .5px, transparent .5px); background-size: 6px 6px; }
.rail > * { position: relative; z-index: 1; }
.brand { border: 0; background: none; color: inherit; display: flex; align-items: center; gap: 13px; padding: 0; text-align: left; text-decoration: none; }
.seal { width: 42px; height: 46px; border: 1px solid #d76b5d; border-radius: 4px; display: grid; place-items: center; color: #f2d6cc; font: 27px/1 var(--kai); transform: rotate(-1.5deg); box-shadow: inset 0 0 0 3px rgba(215, 107, 93, .08); flex: none; }
.brand strong, .brand small { display: block; }
.brand strong { font: 22px/1.2 var(--kai); letter-spacing: .16em; }
.brand small { margin-top: 4px; color: #969b91; font-size: 11px; letter-spacing: .13em; }
.rail-nav { margin-top: 46px; display: grid; gap: 5px; }
.nav-btn { position: relative; width: 100%; min-height: 49px; border: 0; border-radius: 5px; padding: 0 13px; display: flex; align-items: center; gap: 13px; background: transparent; color: #9ea398; text-align: left; text-decoration: none; transition: .2s; font-size: 14px; }
.nav-btn:hover, .nav-btn.active { background: rgba(255, 255, 255, .065); color: #f7efe1; }
.nav-btn.active:before { content: ""; position: absolute; left: -24px; width: 3px; height: 23px; background: var(--red); }
.nav-icon { width: 24px; height: 24px; border: 1px solid rgba(255, 255, 255, .14); border-radius: 50%; display: grid; place-items: center; font: 13px/1 var(--kai); flex: none; }
.nav-btn i { margin-left: auto; min-width: 19px; height: 19px; border-radius: 9px; background: var(--red); color: #fff; display: grid; place-items: center; font: 10px/1 var(--num); font-style: normal; }
/* v3.6 引荐角标（"我的"按钮旁的提示——待批/新码/未递话） */
.nav-badge { margin-left: auto; padding: 2px 7px; border-radius: 9px; background: var(--gold); color: #1d2620; font: 11px/1.4 var(--num); white-space: nowrap; }
.nav-badge:empty { display: none; }
/* v3.7 日课 banner：横贯右侧主区顶部，金底红印章，点「领」入账 */
.daily-banner {
  display: flex; align-items: center; gap: 12px;
  /* v3.16 修复：banner 挂在 .app 下，须让开 238px 固定 rail，否则左半截被压住 */
  margin: 16px 42px -4px 262px; padding: 12px 18px;
  border: 1px solid var(--gold-line); border-radius: 8px;
  background: var(--gold-bg); color: var(--text);
  font: 14px/1.5 var(--kai);
  box-shadow: 0 4px 18px rgba(138, 109, 47, .08);
  transition: opacity .45s ease, transform .45s ease;
}
.daily-banner-icon {
  width: 28px; height: 28px; flex: none;
  display: grid; place-items: center;
  border-radius: 4px; background: var(--red); color: #f7efe1;
  font: 600 14px/1 var(--kai); letter-spacing: 0;
}
.daily-banner-msg { flex: 1; min-width: 0; }
.daily-banner-msg strong { font: 600 15px/1 var(--num); color: var(--red); margin: 0 2px; }
.daily-banner-btn {
  flex: none; min-width: 56px; padding: 6px 14px;
  border: 1px solid var(--red); border-radius: 6px;
  background: var(--red); color: #f7efe1;
  font: 600 14px/1.2 var(--kai); letter-spacing: .12em;
  cursor: pointer; transition: background .2s, opacity .2s;
}
.daily-banner-btn:hover { background: #a13830; }
.daily-banner-btn:disabled { opacity: .65; }
.daily-banner-done { background: var(--pass-bg); border-color: var(--pass); }
.daily-banner-done .daily-banner-icon { background: var(--pass); }
.daily-banner-fade { opacity: 0; transform: translateY(-6px); pointer-events: none; }

/* v3.20 卦摊告示：半仙挂画 + 题字「卦可预警，不可决断」+ 警示前移 */
.gua-notice {
  display: flex; gap: 16px; align-items: stretch;
  margin: 0 0 18px; padding: 14px 16px 12px;
  border: 1px solid var(--gold-line); border-radius: 8px;
  background: var(--gold-bg);
  box-shadow: 0 4px 18px rgba(138, 109, 47, .08);
}
.gua-notice-img {
  width: 118px; flex: none; align-self: center;
  border-radius: 6px; border: 1px solid var(--gold-line);
}
.gua-notice-body { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.gua-notice-title {
  font: 600 21px/1.3 var(--kai); color: var(--red);
  letter-spacing: .14em; margin: 0 0 8px;
}
.gua-notice-body ul {
  margin: 0 0 8px; padding-left: 1.15em;
  font: 13.5px/1.9 var(--kai); color: var(--text);
}
.gua-notice-body a { font-size: 12.5px; color: var(--accent); }
@media (max-width: 820px) {
  .gua-notice { gap: 12px; padding: 12px 12px 10px; }
  .gua-notice-img { width: 84px; }
  .gua-notice-title { font-size: 17px; letter-spacing: .1em; }
  .gua-notice-body ul { font-size: 12.5px; line-height: 1.8; }
}
@media (max-width: 580px) {
  .gua-notice-img { width: 64px; }
  .gua-notice-title { font-size: 15.5px; }
}
@media (max-width: 820px) {
  .daily-banner { margin: 12px 14px -4px; padding: 10px 14px; font-size: 13px; }
  .daily-banner-msg strong { font-size: 14px; }
}
.rail-bottom { margin-top: auto; display: grid; gap: 17px; }
.balance { padding: 15px 16px; border: 1px solid rgba(255, 255, 255, .1); border-radius: 6px; background: rgba(255, 255, 255, .035); }
.balance > span, .balance em { display: block; color: #969b91; font-size: 11px; font-style: normal; }
.balance strong { display: block; margin: 5px 0; color: #f2e9da; font: 31px/1 var(--num); }
.balance strong small { font: 12px var(--serif); }
.balance.is-owe strong, .balance.is-owe em { color: #e0a08e; }
.account { display: flex; align-items: center; gap: 11px; }
.avatar, .large-avatar, .mini { border-radius: 50%; display: grid; place-items: center; background: var(--jade); color: #fff; font-family: var(--kai); }
.avatar { width: 36px; height: 36px; }
.account strong, .account small { display: block; }
.account strong { font: 14px var(--kai); }
.account small { margin-top: 3px; color: #8d9288; font-size: 11px; }
.out-link { margin-left: auto; font-size: 12px; color: #9ea398; text-decoration: none; }
.out-link:hover { color: #f7efe1; }
/* rail 里的月日切换（复用 .switch 观感） */
.rail-tg { display: flex; align-items: center; justify-content: space-between; color: #9ea398; font-size: 12px; letter-spacing: .08em; }
.rail-tg .switch { background: rgba(255, 255, 255, .18); }
.stage { min-height: 100vh; margin-left: 238px; padding: 0 42px 80px; }
.topbar { height: 104px; max-width: 1240px; margin: auto; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--edge); }
.topbar h1 { margin: 6px 0 0; font: 32px/1.2 var(--kai); letter-spacing: .08em; }
.top-tools { display: flex; gap: 10px; }
.circle-btn { width: 44px; height: 44px; border: 1px solid var(--edge); border-radius: 50%; background: var(--surface); font: 17px/1 var(--kai); text-decoration: none; display: grid; place-items: center; color: var(--text); }
.circle-btn:hover { border-color: var(--red); color: var(--red); }
.mobile-head, .mobile-nav { display: none; }
/* 沉浸模式（开卷页）：rail/topbar 全退 */
body.immersive .rail, body.immersive .mobile-head, body.immersive .mobile-nav, body.immersive .topbar { display: none !important; }
body.immersive .stage { margin: 0; padding: 0; max-width: none; }
body.immersive .view-wrap { max-width: none; }
/* 页面内容容器（topbar 之下） */
.view-wrap { max-width: 1240px; margin: 0 auto; }

/* ============================================================
   通用件：卡片 / 按钮 / 徽标 / 进度条 / 分节头 / 双栏
   ============================================================ */
.card, .side-card, .panel, .study-card, .statement, .table-card { border: 1px solid var(--edge); border-radius: 7px; background: var(--surface); box-shadow: var(--shadow); }
.red-btn, .plain-btn, .ink-btn { min-height: 42px; border-radius: 4px; padding: 0 18px; font-weight: 600; font-size: 12px; letter-spacing: .05em; display: inline-flex; align-items: center; justify-content: center; text-decoration: none; }
.red-btn { border: 1px solid var(--red); background: var(--red); color: #fff; }
.red-btn:hover { background: var(--red-dark); }
.plain-btn { border: 1px solid var(--edge); background: transparent; color: var(--text); }
.plain-btn:hover { border-color: var(--red); color: var(--red); }
.ink-btn { border: 1px solid rgba(255, 255, 255, .22); background: rgba(255, 255, 255, .04); color: #f5ead9; }
.ink-btn:hover { border-color: #fff; }
.badge { display: inline-flex; align-items: center; min-height: 24px; padding: 0 9px; border-radius: 12px; background: rgba(83, 104, 90, .12); color: var(--jade); font-size: 11px; white-space: nowrap; }
.badge.red { background: rgba(156, 54, 46, .11); color: var(--red); }
.badge.gray { background: rgba(116, 110, 97, .12); color: var(--soft); }
.bar { height: 4px; margin-top: 9px; border-radius: 2px; background: rgba(127, 118, 98, .17); overflow: hidden; }
.bar i { display: block; height: 100%; width: 14%; background: var(--red); }
.section-head { min-height: 90px; display: flex; align-items: end; justify-content: space-between; padding: 25px 0 17px; border-bottom: 1px solid var(--edge); }
.section-head h2 { margin: 5px 0 0; font: 26px/1.2 var(--kai); }
.section-head button { border: 0; background: none; color: var(--soft); font-size: 12px; }
.page-grid { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 30px; margin-top: 34px; }
.secondary { display: grid; align-content: start; gap: 18px; }
/* switch 开关（全站复用：rail 月日 / 问卦匿名上坛 / 账房章节开关） */
.switch { width: 45px; height: 25px; border: 0; border-radius: 13px; background: var(--jade); position: relative; transition: .2s; flex: none; }
.switch::after { content: ""; position: absolute; left: 3px; top: 3px; width: 19px; height: 19px; border-radius: 50%; background: #fff; transition: .2s; }
.switch.off { background: rgba(127, 118, 98, .35); }
.switch.off::after { left: 23px; }

/* ============================================================
   开卷页（splash / cover.html）
   ============================================================ */
.splash { min-height: 100svh; position: relative; overflow: hidden; background: #1c211d; color: #efe7d8; display: grid; place-items: center; padding: 45px 22px; }
.splash:before, .splash:after { content: ""; position: absolute; inset: -20%; pointer-events: none; }
.splash:before { background: radial-gradient(ellipse at 22% 25%, rgba(221, 216, 194, .2), transparent 28%), radial-gradient(ellipse at 72% 77%, rgba(176, 184, 166, .13), transparent 26%), linear-gradient(125deg, rgba(255, 255, 255, .03), transparent 40%); }
.splash:after { opacity: .12; background-image: radial-gradient(#fff .7px, transparent .8px); background-size: 7px 7px; }
.splash-bg { position: absolute; inset: 0; background-size: cover; background-position: center 28%; background-repeat: no-repeat; opacity: .24; filter: contrast(1.05) saturate(.9); }
body.night .splash-bg { opacity: .13; }
.splash-night { position: absolute; right: 25px; top: 24px; }
.splash-content { position: relative; z-index: 1; max-width: 790px; text-align: center; }
.splash .seal { margin: 0 auto 20px; }
.splash .eyebrow { color: #a8aca2; }
.splash h1 { margin: 25px 0 3px; font: 92px/.95 var(--kai); letter-spacing: .28em; text-indent: .28em; text-shadow: 0 9px 30px rgba(0, 0, 0, .35); }
.pinyin { color: #b8b9af; font: 13px var(--num); letter-spacing: .19em; }
.subtitle { margin: 20px 0; color: #d4cdbc; font: 16px var(--serif); letter-spacing: .12em; }
.opening-question { margin: 38px auto 35px; padding: 22px 0; max-width: 500px; border-top: 1px solid rgba(255, 255, 255, .15); border-bottom: 1px solid rgba(255, 255, 255, .15); font: 19px/1.9 var(--kai); }
.splash-actions { display: flex; justify-content: center; flex-wrap: wrap; gap: 10px; }
.splash-foot { margin-top: 37px; color: #898e85; font-size: 11px; letter-spacing: .12em; }
.splash-cover-switch { margin-top: 16px; font-size: 12px; color: #898e85; letter-spacing: 1px; }
.splash-cover-switch .csw { color: #b8b9af; text-decoration: none; margin: 0 5px; cursor: pointer; }
.splash-cover-switch .csw.on { color: #f2d6cc; font-weight: 700; }
.splash-cover-switch .csw-sep { color: #565a52; }
.welcome-card { max-width: 470px; margin: 22px auto 0; padding: 13px 18px; border: 1px solid rgba(255, 255, 255, .13); border-radius: 5px; color: #bbbcae; font-size: 12px; line-height: 1.9; }
.welcome-card b { color: #f2e9da; }
.welcome-card a { color: #e8b9ac; }

/* ============================================================
   目录页（toc）
   ============================================================ */
.stats-strip { display: grid; grid-template-columns: repeat(3, 1fr); margin-bottom: 18px; border: 1px solid var(--edge); border-radius: 6px; background: var(--surface); }
.stats-strip div { padding: 15px 20px; border-right: 1px solid var(--edge); }
.stats-strip div:last-child { border: 0; }
.stats-strip strong { display: block; font: 24px var(--num); }
.stats-strip small { color: var(--faint); font-size: 11px; }
/* 续读大卡 */
.continue { position: relative; min-height: 324px; padding: 44px 48px; border-radius: 8px; overflow: hidden; color: #eee6d6; background: #30362e; box-shadow: 0 20px 50px rgba(40, 39, 31, .16); text-decoration: none; display: block; }
body.night .continue { background: #262b24; }
.continue:before { content: ""; position: absolute; inset: 0; background: radial-gradient(circle at 75% 30%, rgba(255, 255, 255, .08), transparent 25%), linear-gradient(120deg, transparent 55%, rgba(0, 0, 0, .18)); pointer-events: none; }
.continue-copy { position: relative; z-index: 2; max-width: 490px; }
.kicker { color: #b2b5aa; font-size: 11px; letter-spacing: .2em; }
.continue h2 { margin: 13px 0 12px; font: 22px/1.4 var(--serif); }
.continue h2 em { font: 48px/1.2 var(--kai); font-style: normal; letter-spacing: .18em; }
.continue p { color: #c8c8be; font: 14px/1.9 var(--serif); }
.progress-meta { max-width: 310px; margin: 22px 0; color: #aeb2a7; font-size: 11px; }
.progress-meta b { float: right; color: #e8dfcf; font-family: var(--num); }
.continue .bar { background: rgba(255, 255, 255, .13); }
.chapter-mark { position: absolute; right: 48px; top: 39px; width: 120px; min-height: 235px; padding: 24px 16px; border: 1px solid rgba(255, 255, 255, .16); display: flex; flex-direction: column; align-items: center; color: #d9d3c7; background: rgba(255, 255, 255, .025); }
.chapter-mark strong { margin: auto; font: 36px/1.15 var(--kai); letter-spacing: .14em; }
.chapter-mark span, .chapter-mark small { font-size: 11px; color: #aaaFA4; }
/* 章节行 */
.chapters { border-top: 1px solid var(--edge); }
.chapter-row { width: 100%; min-height: 76px; border: 0; border-bottom: 1px solid var(--edge); display: grid; grid-template-columns: 48px 1fr auto 20px; gap: 13px; align-items: center; background: transparent; text-align: left; text-decoration: none; color: var(--text); }
.chapter-row:hover, .chapter-row.current { background: rgba(255, 255, 255, .28); }
body.night .chapter-row:hover, body.night .chapter-row.current { background: rgba(255, 255, 255, .05); }
.chapter-row.current { box-shadow: inset 3px 0 var(--red); }
.chapter-row.locked { opacity: .45; }
.chapter-no { font: 21px var(--kai); color: var(--faint); text-align: center; }
.chapter-name strong, .chapter-name small { display: block; }
.chapter-name strong { font: 18px var(--kai); }
.chapter-name small { margin-top: 5px; color: var(--faint); font-size: 11px; }
.state { color: var(--jade); font-size: 11px; white-space: nowrap; }
.chbd { margin-left: 8px; font-size: 11px; font-weight: normal; }
.bd-read { color: var(--jade); }
.bd-here { color: var(--red); font-weight: 700; }
.toc-off { display: inline-block; margin-left: 8px; font-size: 11px; font-weight: normal; color: var(--danger); border: 1px dashed var(--danger); border-radius: 4px; padding: 0 7px; vertical-align: 2px; }
/* 章节行内挂钩文案（原 toc-hook 摘要行） */
.chapter-name .hook-line { margin-top: 4px; color: var(--faint); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 520px; }
/* 侧栏卡 */
.side-card { padding: 25px; }
.side-card h3 { margin: 7px 0; font: 22px var(--kai); }
.side-card > p { color: var(--soft); font: 13px/1.7 var(--serif); margin: 0 0 8px; }
.wall { margin: 18px 0; }
.post { padding: 14px 0; border-top: 1px solid var(--edge); }
.post-head { display: grid; grid-template-columns: 28px auto 1fr; gap: 8px; align-items: center; }
.post-head small { text-align: right; color: var(--faint); font-size: 11px; }
.post p { margin: 8px 0; color: var(--soft); font: 13px/1.7 var(--serif); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.post a { color: var(--red); font-size: 11px; text-decoration: none; }
.gua-symbol { font: 52px/1 var(--serif); color: var(--text); }
.side-stats { display: flex; gap: 25px; padding: 14px 0; border-top: 1px solid var(--edge); }
.side-stats span { color: var(--faint); font-size: 11px; }
.side-stats b { display: block; color: var(--text); font: 22px var(--num); }
.g-note { font-size: 12px; color: var(--faint); margin: 8px 0; }
.side-wall { text-align: left; }

/* ============================================================
   阅读页（chapter）
   ============================================================ */
.reader { display: grid; grid-template-columns: 190px minmax(0, 760px); justify-content: center; gap: 44px; margin-top: 34px; }
.outline { position: sticky; top: 30px; align-self: start; padding-top: 10px; }
.outline > button, .outline > a.back-link { border: 0; background: none; padding: 0; color: var(--soft); text-decoration: none; font-size: 13px; display: inline-block; margin-bottom: 6px; }
.outline > a.back-link:hover { color: var(--red); }
.outline .eyebrow { margin: 35px 0 14px; }
.outline ol { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--edge); }
.outline li { padding: 11px 5px; border-bottom: 1px solid var(--edge); color: var(--soft); font: 13px var(--serif); }
.outline li span { display: inline-block; width: 25px; color: var(--faint); font-family: var(--kai); }
.outline li b { float: right; color: var(--jade); font-weight: 400; }
.outline li.now { color: var(--red); font-weight: 700; }
.outline li a { color: inherit; text-decoration: none; }
.sheet { padding: 64px 78px; border: 1px solid var(--edge); border-radius: 5px; background: var(--paper); box-shadow: 0 18px 45px rgba(64, 54, 37, .09); }
.chapter-title { text-align: center; padding-bottom: 37px; border-bottom: 1px solid var(--edge); }
.chapter-title > span { color: var(--red); font-size: 11px; letter-spacing: .19em; }
.chapter-title h2 { margin: 17px 0 10px; font: 48px/1 var(--kai); letter-spacing: .2em; text-indent: .2em; }
.chapter-title p { color: var(--faint); font-size: 11px; letter-spacing: .14em; }
/* 正文 */
.reading-body { position: relative; }
.reading-body p { position: relative; margin: 1.55em 0; color: var(--text); font: 17px/2.05 var(--serif); letter-spacing: .055em; text-align: justify; text-indent: 2em; }
.reading-body p.para { border-radius: 4px; cursor: pointer; transition: background .15s; }
.reading-body p.para:hover { background: rgba(127, 118, 98, .08); }
.reading-body p.para-on { background: rgba(156, 54, 46, .08); box-shadow: inset 3px 0 var(--red); }
.reading-body p.dropcap:first-letter, .reading-body > p:first-of-type::first-letter { float: left; margin: 10px 8px 0 0; color: var(--red); font: 54px/.75 var(--kai); }
.reading-body > p:first-of-type { text-indent: 0; }
.reading-body blockquote { margin: 28px 0; padding: 8px 0 8px 22px; text-indent: 0; border-left: 3px solid var(--red); color: var(--soft); font: 15px/1.9 var(--kai); background: none; }
.reading-body h2, .reading-body h3 { margin: 26px 0 10px; font-family: var(--kai); }
/* 逐段评论（现站交互：点段开框；设计稿观感） */
.para-hint { text-align: center; font-size: 12px; color: var(--faint); margin: 0 0 18px; }
.para-hint b { color: var(--red); font-weight: 400; }
/* 段落赞踩（v3.11）：平时压到几乎不见，鼠标划过整段才浮出来——
   正文是主体，不能让满屏按钮抢戏；触屏没有 hover，靠 hover:none 兜底常显，
   否则手机上这个功能等于不存在。 */
.pv { display: inline-block; margin-left: .45em; white-space: nowrap; opacity: .2;
  font-family: var(--sans); transition: opacity .15s; }
.reading-body p.para:hover .pv, .pv:focus-within { opacity: 1; }
@media (hover: none) { .pv { opacity: .8; } }
.pv-btn { margin-left: 4px; padding: 3px 7px; border: 1px solid var(--edge); border-radius: 3px;
  background: var(--surface); color: var(--soft); font: 11px/1.5 var(--sans);
  cursor: pointer; transition: background .15s, color .15s, border-color .15s; }
.pv-btn b { font-family: var(--num); font-size: 11px; margin-left: 3px; font-weight: 400; }
.pv-up:hover, .pv-up.on { color: var(--red); border-color: var(--danger-line); background: var(--danger-bg); }
.pv-dn:hover, .pv-dn.on { color: var(--thunder); border-color: rgba(90, 107, 122, .4); background: rgba(90, 107, 122, .1); }
.pv-btn.on { font-weight: 600; }
@media print { .pv { display: none; } }
/* v3.0 访读模式：进村横幅（游客试读态） */
.guest-banner { max-width: 760px; margin: 4px auto 18px; padding: 11px 16px; text-align: center;
  font-size: 13px; line-height: 1.8; color: var(--soft); border: 1px dashed var(--edge);
  border-radius: 5px; background: var(--surface); }
.guest-banner a { color: var(--red); font-weight: 500; }
/* 引荐条（目录页）：给递话一个固定席位，不再让读者去「我的卦帖」里翻 */
.invite-strip { max-width: 760px; margin: 4px auto 18px; padding: 13px 16px;
  display: flex; align-items: center; gap: 16px;
  border: 1px solid var(--edge); border-left: 3px solid var(--gold);
  border-radius: 5px; background: var(--surface); }
.invite-copy { flex: 1; min-width: 0; }
.invite-copy p { margin-top: 6px; font-size: 13px; line-height: 1.8; color: var(--soft); }
.invite-copy b { color: var(--red); font-weight: 500; }
.invite-state { margin-top: 7px !important; font-size: 12px !important; color: var(--gold) !important; }
.invite-btn { flex: none; padding: 9px 16px; border-radius: 3px;
  background: var(--red); color: #fff; font-size: 13px; white-space: nowrap; }
.invite-btn:hover { opacity: .88; }
@media (max-width: 640px) {
  .invite-strip { flex-direction: column; align-items: stretch; gap: 10px; }
  .invite-btn { text-align: center; }
}
.pbadge { display: inline-block; vertical-align: 2px; margin-left: 8px; font-size: 11px; line-height: 1.5; color: #fff; background: var(--red); border-radius: 9px; padding: 0 7px; text-indent: 0; }
.para-form { display: none; margin: 12px 0 6px; padding: 14px; text-indent: 0; border: 1px solid var(--edge); border-radius: 5px; background: var(--surface); }
.para-form.open { display: block; }
.para-quote { font-size: 12px; color: var(--soft); border-left: 2px solid var(--edge); padding-left: 10px; margin-bottom: 8px; }
.para-form textarea { width: 100%; min-height: 64px; resize: vertical; text-indent: 0; font: 14px/1.7 var(--serif); border: 1px solid var(--edge); border-radius: 4px; padding: 9px 11px; background: var(--paper); color: var(--text); }
.para-form .form-row { display: flex; gap: 8px; margin-top: 8px; flex-wrap: wrap; }
.para-form .form-row input { flex: 1; min-width: 120px; text-indent: 0; font-size: 13px; border: 1px solid var(--edge); border-radius: 4px; padding: 8px 10px; background: var(--paper); color: var(--text); }
.para-form .form-row .para-send { flex: none; border: 0; border-radius: 3px; background: var(--red); color: #fff; padding: 0 13px; }
.para-list { margin-top: 10px; }
.para-list:empty { display: none; }
.ptag { font-size: 11px; color: var(--red); border: 1px solid var(--red); border-radius: 4px; padding: 0 5px; margin-right: 8px; }
/* 音频条（原生 audio 包新观感） */
.audio-player { margin: 35px 0; padding: 16px; border: 1px solid var(--edge); border-radius: 5px; display: grid; grid-template-columns: 46px 1fr auto; gap: 13px; align-items: center; background: var(--surface); }
.audio-label { font: 15px var(--kai); color: var(--text); }
.audio-meta small { display: block; margin-top: 4px; color: var(--faint); font-size: 11px; }
.audio-player audio { width: 100%; min-width: 200px; height: 36px; }
.audio-tip { font-size: 11px; color: var(--faint); }
/* 章底动作行 */
.reader-actions { display: flex; align-items: center; justify-content: space-between; gap: 13px; padding: 25px 0; border-top: 1px solid var(--edge); }
.reader-actions span { color: var(--jade); font-size: 11px; text-align: center; }
.reader-actions a, .reader-actions button { min-height: 42px; border-radius: 4px; padding: 0 18px; font-weight: 600; font-size: 12px; letter-spacing: .05em; display: inline-flex; align-items: center; text-decoration: none; }
.reader-actions .prev, .reader-actions .toc-link { border: 1px solid var(--edge); background: transparent; color: var(--text); }
.reader-actions .prev:hover, .reader-actions .toc-link:hover { border-color: var(--red); color: var(--red); }
.reader-actions .next { border: 1px solid var(--red); background: var(--red); color: #fff; }
.reader-actions .next:hover { background: var(--red-dark); }

/* ============================================================
   评论区（章下 / 总评 · app.js 渲染 + 表单）
   ============================================================ */
.comments { margin: 26px 0 10px; }
.comments-title { display: flex; align-items: end; justify-content: space-between; padding: 18px 0 14px; border-bottom: 1px solid var(--edge); }
.comments-title h2 { margin: 5px 0 0; font: 24px/1.2 var(--kai); }
.comments-title .hint { color: var(--faint); font-size: 11px; }
.comment-box { padding: 18px; border: 1px solid var(--edge); border-radius: 5px; background: var(--surface); margin-top: 16px; }
.comment-box textarea { width: 100%; min-height: 100px; border: 0; resize: vertical; outline: 0; background: transparent; font: 14px/1.7 var(--serif); color: var(--text); }
.comment-box .nick-line { width: 100%; border: 0; border-bottom: 1px dashed var(--edge); outline: 0; background: transparent; font: 13px var(--serif); color: var(--text); padding: 6px 2px; margin-bottom: 4px; }
.comment-foot { display: flex; align-items: center; justify-content: space-between; border-top: 1px solid var(--edge); padding-top: 12px; gap: 10px; flex-wrap: wrap; }
.comment-foot span { color: var(--faint); font-size: 11px; }
.cf-actions { display: flex; align-items: center; gap: 10px; margin-left: auto; }
.btn-voice { width: 44px; height: 44px; border: 0; border-radius: 50%; background: var(--rail); color: #fff; font-size: 15px; flex: none; }
.btn-voice.recording { background: var(--red); animation: pulse 1s infinite; }
@keyframes pulse { 50% { opacity: .65; } }
.voice-tip { font-size: 11px; color: var(--faint); max-width: 180px; }
.btn-send { border: 1px solid var(--red); background: var(--red); color: #fff; border-radius: 4px; min-height: 38px; padding: 0 16px; font-weight: 600; font-size: 12px; }
.btn-send:hover { background: var(--red-dark); }
.comment-list { margin-top: 16px; }
.comment-item { display: grid; grid-template-columns: 38px 1fr; gap: 12px; padding: 16px 0; border-bottom: 1px solid var(--edge); }
.comment-item .avatar { width: 38px; height: 38px; font-size: 15px; }
.comment-body { min-width: 0; }
.comment-body header { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; font-size: 13px; }
.comment-body header strong { font-family: var(--kai); }
.comment-body header small { color: var(--faint); font-size: 11px; }
.comment-body .cbody { margin: 6px 0 0; font: 13px/1.8 var(--serif); white-space: pre-wrap; }
.comment-body .reply, .quote-block { margin-top: 8px; padding: 10px 12px; border-left: 2px solid var(--edge); background: rgba(127, 118, 98, .05); color: var(--soft); font-size: 12px; border-radius: 0 4px 4px 0; }
.quote-block { cursor: pointer; margin: 6px 0; }
.quote-block:hover { border-left-color: var(--red); }
.floor-no { color: var(--red); font-weight: 700; cursor: pointer; font-size: 12px; }
.floor-no:hover { text-decoration: underline; }
.via { font-size: 11px; color: var(--faint); border: 1px solid var(--edge); border-radius: 4px; padding: 0 5px; }
.adopt-badge { display: inline-flex; align-items: center; min-height: 20px; padding: 0 8px; border-radius: 10px; background: rgba(83, 104, 90, .12); color: var(--jade); font-size: 11px; }
.c-actions { display: flex; gap: 8px; margin-top: 8px; }
.act-btn { border: 0; background: none; color: var(--soft); font-size: 12px; padding: 4px 6px; }
.act-btn:hover { color: var(--red); }
.btn-up { border: 1px solid var(--edge); background: none; border-radius: 12px; padding: 3px 10px; font-size: 11px; color: var(--soft); }
.btn-up:hover { border-color: var(--red); color: var(--red); }
.btn-up.on { background: var(--red); border-color: var(--red); color: #fff; cursor: default; }
.btn-up[disabled] { cursor: default; opacity: .85; }
.act-static { font-size: 12px; color: var(--faint); }
.comment-item.flash { animation: floorflash .8s; }
@keyframes floorflash { from { background: var(--gold-bg); } }
.comment-deleted { grid-column: 1/-1; text-align: center; color: var(--faint); padding: 10px 0; font-size: 12px; }
.reply-tag { display: inline-flex; gap: 6px; align-items: center; font-size: 12px; color: var(--thunder); background: var(--surface); border: 1px dashed var(--edge); border-radius: 4px; padding: 3px 9px; margin: 8px 0 2px; }
.empty { color: var(--faint); font-size: 13px; padding: 14px 0; }
.points-bar { max-width: 640px; margin: 12px auto 0; background: var(--gold-bg); border: 1px dashed var(--gold-line); border-radius: 5px; padding: 9px 14px; font-size: 12.5px; color: var(--soft); line-height: 1.9; }
.points-bar b { color: var(--gold); }
.points-bar a { color: var(--gold); }

/* ============================================================
   书房（study）
   ============================================================ */
.study-intro { margin: 34px 0 22px; padding: 28px 32px; background: #30362e; color: #eee6d6; border-radius: 7px; }
body.night .study-intro { background: #262b24; }
.study-intro h2 { margin: 5px 0 8px; font: 30px var(--kai); }
.study-intro p { max-width: 720px; color: #c5c5bb; font: 14px/1.8 var(--serif); }
.study-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.study-card { min-height: 210px; padding: 27px; display: flex; flex-direction: column; text-align: left; transition: .2s; text-decoration: none; color: var(--text); }
.study-card:hover { transform: translateY(-3px); border-color: rgba(156, 54, 46, .45); }
.study-card .glyph { color: var(--red); font: 32px var(--kai); }
.study-card h3 { margin: 18px 0 6px; font: 25px var(--kai); }
.study-card .sc-sub { color: var(--thunder); font-size: 12px; letter-spacing: 1px; margin: 0 0 6px; }
.study-card p { margin: 0; color: var(--soft); font: 13px/1.8 var(--serif); }
.study-card b { margin-top: auto; color: var(--red); font-size: 12px; font-weight: 600; }
.study-rule { margin-top: 20px; padding: 23px 27px; border-left: 3px solid var(--jade); background: rgba(83, 104, 90, .08); border-radius: 0 5px 5px 0; }
.study-rule h3 { margin: 0 0 7px; font: 20px var(--kai); }
.study-rule p { margin: 0 0 6px; color: var(--soft); font: 13px/1.8 var(--serif); }

/* ============================================================
   doc 系（summary / lineage / timeline / mindmap / about）
   ============================================================ */
.doc-layout { display: grid; grid-template-columns: 210px minmax(0, 760px); gap: 34px; justify-content: center; margin-top: 34px; }
.doc-nav { position: sticky; top: 25px; align-self: start; border-top: 1px solid var(--edge); }
.doc-nav a { display: block; min-height: 49px; border-bottom: 1px solid var(--edge); color: var(--soft); text-decoration: none; line-height: 49px; padding: 0 12px; font-size: 14px; }
.doc-nav a:hover { color: var(--red); }
.doc-nav a.active { color: var(--red); box-shadow: inset 3px 0 var(--red); }
.doc-paper { padding: 48px 56px; background: var(--paper); border: 1px solid var(--edge); border-radius: 5px; }
.doc-paper > header { margin-bottom: 35px; padding-bottom: 23px; border-bottom: 1px solid var(--edge); }
.doc-paper h2 { margin: 6px 0; font: 36px var(--kai); }
.doc-paper > header p { color: var(--soft); font: 14px/1.7 var(--serif); }
.doc-section { padding: 20px 0; border-bottom: 1px solid var(--edge); }
.doc-section h3 { margin: 0 0 10px; color: var(--red); font: 23px var(--kai); }
.doc-section p { margin: 0 0 8px; color: var(--soft); font: 15px/1.95 var(--serif); }
.doc-section p.vol-eye { color: var(--red); font-weight: 600; }
.doc-section .vol-era { font-size: 12px; color: var(--faint); letter-spacing: 1px; margin-bottom: 6px; }
.doc-section ol, .disc-card ol { padding-left: 1.5em; color: var(--soft); font: 14px/1.95 var(--serif); }
.doc-axis { margin-top: 22px; padding: 16px 18px; border-left: 3px solid var(--jade); background: rgba(83, 104, 90, .08); color: var(--soft); font-size: 13px; line-height: 2; border-radius: 0 5px 5px 0; }
.doc-progress { margin: 0 0 8px; padding: 12px 16px; border: 1px dashed var(--gold-line); border-radius: 5px; font-size: 13px; color: var(--soft); background: var(--gold-bg); line-height: 1.9; }
.doc-progress a { color: var(--gold); }
.info-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 22px 0 8px; }
.info-card { background: var(--surface); border: 1px solid var(--edge); border-radius: 6px; padding: 14px 16px; text-align: center; }
.info-h { font-size: 11px; color: var(--thunder); letter-spacing: 3px; }
.info-b { font-size: 16px; font-weight: 700; margin: 4px 0 2px; }
.info-s { font-size: 12px; color: var(--soft); }
.skeleton { margin: 18px 0; }
.tree details { margin: 8px 0; border: 1px solid var(--edge); border-radius: 5px; background: var(--surface); }
.tree summary { padding: 13px 16px; cursor: pointer; font: 16px var(--kai); }
.tree details div { padding: 0 18px 15px 34px; color: var(--soft); font: 13px/1.8 var(--serif); }

/* ============================================================
   问卦页（divination）—— ask-page 双栏
   ============================================================ */
.ask-page { display: grid; grid-template-columns: 300px minmax(0, 690px); justify-content: center; gap: 54px; margin-top: 40px; }
.ask-intro { position: sticky; top: 30px; align-self: start; padding-top: 35px; }
.ask-intro h2 { margin: 12px 0 18px; font: 34px/1.45 var(--kai); }
.ask-intro > p { color: var(--soft); font: 14px/1.9 var(--serif); }
.privacy-note { margin-top: 30px; padding: 16px; border-left: 3px solid var(--jade); background: rgba(83, 104, 90, .08); color: var(--soft); font-size: 12px; border-radius: 0 4px 4px 0; }
.privacy-note strong { display: block; margin-bottom: 6px; color: var(--jade); }
.history-cases { margin-top: 22px; font-size: 12px; color: var(--soft); }
.history-cases summary { cursor: pointer; color: var(--soft); }
.history-cases article { margin-top: 10px; padding: 10px 12px; border: 1px solid var(--edge); border-radius: 5px; background: var(--surface); line-height: 1.8; }
.history-cases b { color: var(--red); font-family: var(--kai); }
.cast-card, .result { padding: 38px; border: 1px solid var(--edge); border-radius: 7px; background: var(--paper); box-shadow: var(--shadow); margin-bottom: 16px; }
.step { display: flex; gap: 12px; align-items: center; }
.step > span { width: 31px; height: 31px; border-radius: 50%; display: grid; place-items: center; background: var(--rail); color: #fff; font-family: var(--kai); flex: none; }
.step strong, .step small { display: block; }
.step small { margin-top: 3px; color: var(--faint); font-size: 11px; }
/* 三法卡（原 .div-tabs 行为保留：data-m 切换） */
.methods { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 19px; }
.method { min-height: 106px; border: 1px solid var(--edge); border-radius: 5px; background: var(--surface); padding: 15px; text-align: left; cursor: pointer; color: var(--text); }
.method b, .method strong, .method small { display: block; }
.method b { color: var(--red); font: 17px var(--kai); }
.method strong { margin: 9px 0 4px; }
.method small { color: var(--faint); font-size: 11px; }
.method.on { border-color: var(--red); box-shadow: inset 0 0 0 1px var(--red); }
.method-field { display: none; grid-template-columns: 1fr 1fr; gap: 10px; margin: 12px 0 0; }
.method-field.on { display: grid; }
.method-field input, .method-field textarea, .method-field .num-row input { min-height: 43px; border: 1px solid var(--edge); border-radius: 4px; background: var(--surface); padding: 9px 12px; color: var(--text); width: 100%; }
.method-field.single { grid-template-columns: 1fr; }
.num-row { display: flex; gap: 10px; }
.num-row div { flex: 1; }
.method-field label { display: block; font-size: 13px; color: var(--soft); margin: 12px 0 5px; }
.method-field textarea { min-height: 58px; resize: vertical; font: 14px/1.7 var(--serif); }
.divider { height: 1px; margin: 28px 0; background: var(--edge); border: 0; }
.char-count { font-size: 11px; color: var(--faint); text-align: right; margin-top: 3px; }
.char-count.over { color: var(--danger); }
/* 匿名上坛 / 私卦开关行（复用 .switch） */
.tg-row-l { display: grid; grid-template-columns: 40px 1fr auto; gap: 12px; align-items: center; margin-top: 20px; padding: 14px; border: 1px solid var(--edge); border-radius: 5px; background: var(--surface); font-size: 12px; color: var(--soft); line-height: 1.7; }
.tg-row-l .privacy-icon { width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; background: var(--jade); color: #fff; font: 14px var(--kai); }
.div-go, .cast-submit { width: 100%; min-height: 48px; border: 0; border-radius: 4px; background: var(--red); color: #fff; font-weight: 600; font-size: 15px; letter-spacing: .18em; margin-top: 20px; cursor: pointer; }
.div-go:hover, .cast-submit:hover { background: var(--red-dark); }
.div-go:disabled, .cast-submit:disabled { opacity: .5; cursor: wait; }
.div-go.small, .cast-submit.small { width: auto; padding: 0 26px; font-size: 14px; letter-spacing: .1em; }
.loading { text-align: center; color: var(--soft); letter-spacing: 3px; padding: 10px 0; display: none; font-size: 13px; }
.div-tip { text-align: center; font-size: 11px; color: var(--faint); margin-top: 16px; }
/* 结果卡（div-result 升级观感，钩子 id 全保留） */
.div-result { display: none; }
.div-result.show { display: block; }
.r-method { font-size: 12px; color: var(--faint); letter-spacing: 2px; margin-bottom: 14px; }
.r-redline { background: var(--danger-bg); border: 1px solid var(--danger-line); border-radius: 5px; padding: 14px 16px; margin: 12px 0; font-size: 14px; color: var(--danger); }
.r-engine { font-size: 11.5px; color: var(--faint); margin-bottom: 8px; }
.r-engine .eg-badge { display: inline-block; border: 1px solid var(--red); color: var(--red); border-radius: 4px; padding: 0 6px; margin-right: 5px; font-size: 11px; letter-spacing: 1px; }
.r-verdict { border-left: 3px solid var(--red); padding: 12px 16px; margin: 14px 0; background: var(--surface); border-radius: 0 5px 5px 0; }
.r-verdict .vd { font: 15px/1.95 var(--serif); }
.r-advice { margin-top: 8px; color: var(--soft); font-size: 13.5px; }
.gua-trio { display: flex; justify-content: space-around; align-items: flex-start; gap: 8px; padding: 14px 4px 10px; border-bottom: 1px solid var(--edge); margin-bottom: 8px; }
.gua-col { text-align: center; }
.gua-col .g-cap { font-size: 12px; color: var(--soft); margin-bottom: 6px; letter-spacing: 1px; }
.gua-col .g-name { font: 17px var(--kai); font-weight: 700; margin-top: 6px; }
.gua-col .g-sub { font-size: 11px; color: var(--faint); }
.gua-svg { display: block; margin: 0 auto; }
.guaci-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 14px 0; }
.guaci-card { border: 1px solid var(--edge); border-radius: 5px; padding: 12px 14px; background: var(--surface); }
.guaci-card h4 { margin: 0 0 6px; font: 15px var(--kai); }
.guaci-card h4 .seq { font-size: 12px; color: var(--faint); font-weight: normal; margin-left: 6px; }
.guaci-card .ci-o { font-size: 14px; color: var(--text); font-weight: 600; line-height: 1.8; }
.guaci-card .ci-b { font-size: 13.5px; line-height: 1.9; margin-top: 6px; }
.guaci-card .ci-y { font-size: 12.5px; color: var(--thunder); line-height: 1.8; margin-top: 6px; }
.guaci-card .ci-j { font-size: 12px; color: var(--soft); line-height: 1.7; margin-top: 4px; border-top: 1px dashed var(--edge); padding-top: 5px; }
/* 爻辞卡：动爻点题（卦定势·爻点题·变定向） */
.yaoci-card { border: 1px solid var(--thunder); border-left: 4px solid var(--thunder); border-radius: 5px; padding: 14px 16px; margin: 14px 0; background: var(--surface); }
.yaoci-card h4 { margin: 0 0 8px; font: 15px var(--kai); color: var(--thunder); }
.yaoci-head { font: 16px var(--kai); line-height: 1.7; }
.yaoci-head .yaoci-ci { color: var(--thunder); font-weight: 700; }
.yaoci-head .yaoci-kw { display: block; font-size: 12.5px; color: var(--soft); margin-top: 2px; }
.yaoci-bh { font-size: 13.5px; line-height: 1.95; margin-top: 8px; color: var(--text); }
.yaoci-fx { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.yaoci-fx .fx-item { font-size: 12px; line-height: 1.6; color: var(--soft); background: var(--paper); border: 1px solid var(--edge); border-radius: 4px; padding: 4px 8px; max-width: 100%; }
.yaoci-fx .fx-item b { color: var(--thunder); margin-right: 4px; }
.yaoci-adv { font-size: 13.5px; line-height: 1.8; margin-top: 10px; padding: 8px 12px; border-left: 3px solid var(--danger); background: var(--paper); color: var(--text); }
.cases-card { border: 1px solid var(--edge); border-radius: 5px; padding: 14px 16px; margin: 12px 0; background: var(--surface); }
.cases-card h4 { margin: 0 0 8px; font: 14px var(--kai); }
.case-item { font-size: 13px; line-height: 1.8; margin-bottom: 10px; }
.case-item .c-src { color: var(--thunder); font-size: 12px; margin-right: 6px; }
.case-item .c-title { font-weight: 700; }
.case-item .c-text { color: var(--soft); font-size: 12.5px; margin-top: 3px; line-height: 1.7; }
.case-item .c-baihua { font-size: 13px; line-height: 1.75; margin-top: 5px; padding: 5px 8px; border-left: 2px solid var(--gold); background: var(--gold-bg); color: var(--text); }
.case-item .c-explain { font-size: 12px; line-height: 1.7; margin-top: 4px; padding: 4px 8px; border-left: 2px solid var(--thunder); color: var(--soft); }
.case-item .c-baihua i, .case-item .c-explain i { font-style: normal; font: 12px var(--kai); color: var(--gold); margin-right: 6px; }
.pred-block { border-top: 1px solid var(--edge); margin-top: 14px; padding-top: 12px; }
.pred-block h4 { margin: 0 0 6px; font: 15px var(--kai); }
.ticket-line { font-size: 13px; color: var(--soft); margin-bottom: 10px; }
.ticket-line b { color: var(--red); font: 16px var(--num); letter-spacing: 2px; cursor: pointer; }
.ticket-line b:hover { text-decoration: underline; }
.pred-item { display: flex; align-items: flex-start; gap: 8px; padding: 8px 0; border-bottom: 1px dashed var(--edge); font-size: 13.5px; line-height: 1.7; }
.pred-item .p-txt { flex: 1; }
.pred-item .p-dl { color: var(--faint); font-size: 11.5px; white-space: nowrap; }
.fb-done { font-size: 12px; color: var(--thunder); }
.r-note { font-size: 12px; color: var(--soft); margin-top: 14px; border-top: 1px dashed var(--edge); padding-top: 10px; }
/* 我的卦史（问卦页第四签） */
.his-card { border: 1px solid var(--edge); border-radius: 6px; background: var(--surface); padding: 12px 15px; margin-bottom: 12px; }
.his-head { font-size: 12.5px; color: var(--soft); display: flex; justify-content: space-between; gap: 8px; margin-bottom: 6px; flex-wrap: wrap; }
.his-head .h-gua { color: var(--text); font-weight: 700; font-size: 14px; }
.his-q { font-size: 12.5px; color: var(--soft); margin-bottom: 6px; }
.his-verdict { font-size: 13px; line-height: 1.8; color: var(--text); border-left: 3px solid var(--red); padding: 6px 10px; background: var(--paper); margin: 8px 0; white-space: pre-line; border-radius: 0 4px 4px 0; }
.his-verdict.his-red { border-left-color: var(--danger); color: var(--soft); }
.his-eng { font-size: 11px; color: var(--faint); margin-bottom: 6px; }
.his-pred { border-top: 1px dashed var(--edge); padding-top: 8px; margin-top: 8px; }
.his-pred .hp-row { display: flex; align-items: flex-start; gap: 8px; padding: 5px 0; font-size: 12.5px; line-height: 1.7; border-bottom: 1px dashed var(--edge); }
.his-pred .hp-txt { flex: 1; }
.his-pred .hp-dl { color: var(--faint); font-size: 11px; white-space: nowrap; }
.his-none { text-align: center; color: var(--soft); font-size: 13.5px; padding: 30px 0; line-height: 2; }
.fb-view { padding: 26px 30px; border: 1px solid var(--edge); border-radius: 7px; background: var(--paper); box-shadow: var(--shadow); display: none; }
.fb-view.show { display: block; }
.fb-view .fv-head { font-size: 13px; color: var(--soft); margin-bottom: 10px; }
/* 反馈三键（全站统一） */
.fb-btns { display: flex; gap: 5px; flex-wrap: wrap; }
.fb-btn { border: 1px solid var(--edge); background: var(--paper); border-radius: 13px; padding: 5px 11px; font-size: 11px; cursor: pointer; color: var(--soft); }
.fb-btn.on-pass { background: var(--pass-bg); color: var(--pass); border-color: var(--pass); }
.fb-btn.on-partial { background: var(--gold-bg); color: var(--gold); border-color: var(--gold); }
.fb-btn.on-fail { background: var(--danger-bg); color: var(--danger); border-color: var(--danger); }
.evidence-row input, .evidence { border: 1px dashed var(--edge); background: none; width: 100%; padding: 7px 10px; font-size: 12.5px; color: var(--soft); border-radius: 4px; outline: none; }
.evidence-row input:focus, .evidence:focus { border-color: var(--red); }

/* ============================================================
   卦坛（gualu）
   ============================================================ */
.forum, .my-page, .stats-page, .admin-page { margin-top: 34px; }
.forum-hero { display: flex; justify-content: space-between; gap: 30px; padding: 37px 40px; border-radius: 7px; background: #30362e; color: #eee6d6; }
body.night .forum-hero { background: #262b24; }
.forum-hero h2 { margin: 8px 0; font: 31px var(--kai); }
.forum-hero p { color: #c4c5bc; font: 13px/1.8 var(--serif); margin: 0; }
.accuracy { min-width: 210px; padding-left: 35px; border-left: 1px solid rgba(255, 255, 255, .15); }
.accuracy span, .accuracy small { display: block; color: #aeb2a7; font-size: 11px; }
.accuracy strong { display: block; margin: 5px 0; color: #f1dbd1; font: 50px/1.1 var(--num); }
.tabs { display: flex; gap: 30px; margin: 25px 0 0; border-bottom: 1px solid var(--edge); }
.tabs a, .tabs button { min-height: 46px; border: 0; border-bottom: 2px solid transparent; background: none; color: var(--soft); text-decoration: none; font-size: 14px; padding: 0 2px; }
.tabs a.on, .tabs a:hover, .tabs button.on { border-color: var(--red); color: var(--red); }
.gua-post { display: grid; grid-template-columns: 100px 1fr; margin-top: 15px; border: 1px solid var(--edge); border-radius: 6px; background: var(--surface); overflow: hidden; }
.post-gua { display: grid; place-items: center; border-right: 1px solid var(--edge); font: 43px var(--serif); color: var(--text); }
.gua-content { padding: 20px 25px; }
.gua-content header { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }
.gua-content h3 { margin: 9px 0; font: 21px var(--kai); }
.gua-name { color: var(--red); font-family: var(--kai); font-size: 14px; }
.gua-content footer { display: flex; flex-wrap: wrap; gap: 18px; color: var(--faint); font-size: 11px; }
.gl-pred { display: flex; gap: 8px; align-items: baseline; padding: 6px 0; font-size: 13.5px; line-height: 1.7; border-bottom: 1px dashed var(--edge); }
.gl-pred:last-child { border-bottom: none; }
.gl-pred .gp-txt { flex: 1; }
.gl-tag { font-size: 11px; border-radius: 11px; padding: 1px 8px; border: 1px solid var(--edge); color: var(--soft); white-space: nowrap; }
.gl-tag.pass { color: var(--pass); border-color: var(--pass); background: var(--pass-bg); }
.gl-tag.partial { color: var(--gold); border-color: var(--gold); background: var(--gold-bg); }
.gl-tag.fail { color: var(--danger); border-color: var(--danger); background: var(--danger-bg); }
.gl-empty { text-align: center; color: var(--soft); padding: 50px 0; line-height: 2; }
.gl-tip { max-width: 860px; margin: 18px auto 0; font-size: 12px; color: var(--faint); text-align: center; line-height: 1.8; }

/* ============================================================
   我的卦帖（gualu_my）
   ============================================================ */
.profile { display: grid; grid-template-columns: 72px 1fr auto; gap: 18px; align-items: center; padding: 27px 30px; border-radius: 7px; background: #30362e; color: #eee6d6; }
body.night .profile { background: #262b24; }
.large-avatar { width: 66px; height: 66px; font-size: 25px; }
.profile h2 { margin: 6px 0; font: 28px var(--kai); }
.profile p { margin: 0; color: #b8bbb0; font-size: 12px; }
.stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin: 18px 0; }
.stats article { padding: 21px 23px; border: 1px solid var(--edge); border-radius: 6px; background: var(--surface); }
.stats article > span { color: var(--faint); font-size: 11px; }
.stats article > strong { display: block; margin: 7px 0; font: 34px var(--num); }
.stats article strong small { font: 12px var(--serif); }
.stats article p { margin: 0; color: var(--soft); font-size: 11px; }
.panel { padding: 27px; margin-top: 17px; }
.panel-head { display: flex; justify-content: space-between; gap: 20px; align-items: center; padding-bottom: 16px; border-bottom: 1px solid var(--edge); }
.panel-head h3 { margin: 5px 0 0; font: 22px var(--kai); }
/* 到期判断行 */
.due { display: grid; grid-template-columns: 54px 1fr auto; gap: 15px; align-items: center; padding: 15px 0; border-bottom: 1px solid var(--edge); }
.due .gua-symbol { font-size: 34px; }
.due strong, .due small { display: block; }
.due small { margin-top: 4px; color: var(--faint); font-size: 11px; }
/* 卦帖卡（gm-* 保留钩子，观感并新稿） */
.gm-card { border: 1px solid var(--edge); border-radius: 7px; background: var(--paper); box-shadow: var(--shadow); padding: 24px 28px; margin: 16px 0; }
.gm-top { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 6px; border-bottom: 1px solid var(--edge); padding-bottom: 12px; margin-bottom: 12px; }
.gm-gua { font: 20px var(--kai); font-weight: 700; }
.gm-gua .arrow { color: var(--soft); font-weight: normal; margin: 0 3px; }
.gm-meta { font-size: 12px; color: var(--soft); }
.gm-ticket { font-family: var(--num); color: var(--red); cursor: pointer; letter-spacing: 1px; }
.gm-q { font-size: 14px; line-height: 1.8; margin: 6px 0; }
.gm-q .lbl { color: var(--faint); font-size: 12px; margin-right: 6px; }
.gm-parent { font-size: 12px; color: var(--thunder); margin: 4px 0; }
.gm-red { background: var(--danger-bg); border: 1px solid var(--danger-line); border-radius: 5px; padding: 10px 14px; font-size: 13px; color: var(--danger); margin: 8px 0; }
.gm-preds { margin: 10px 0; }
.gm-pred { display: flex; align-items: flex-start; gap: 8px; padding: 10px 12px; border: 1px solid var(--edge); border-radius: 5px; margin: 6px 0; background: var(--surface); }
.gm-pred .pt { flex: 1; font-size: 13px; line-height: 1.7; }
.gm-pred .dl { font-size: 11px; color: var(--thunder); white-space: nowrap; margin-top: 2px; }
.gm-pred .due-hint { flex-basis: 100%; font-size: 11px; color: var(--faint); margin-top: 3px; }
.gm-pred.locked .fb-btn { opacity: .45; cursor: not-allowed; }
.gm-pred.ripe { position: relative; }
.gm-pred.ripe::before { content: ""; position: absolute; left: -3px; top: 12px; width: 6px; height: 6px; border-radius: 50%; background: var(--red); }
.gm-pred .evidence-row { flex-basis: 100%; }
.gm-fu { margin-top: 10px; border-top: 1px dashed var(--edge); padding-top: 10px; }
.gm-fu-row { display: flex; gap: 8px; }
.gm-fu input { flex: 1; border: 1px solid var(--edge); background: var(--paper); padding: 9px 12px; font-size: 14px; border-radius: 4px; color: var(--text); min-width: 0; }
.gm-fu input:focus { outline: none; border-color: var(--red); }
.gm-fu button { background: var(--red); color: #fff; border: none; padding: 9px 18px; font-size: 13px; border-radius: 4px; cursor: pointer; white-space: nowrap; }
.gm-fu button:disabled { opacity: .5; cursor: wait; }
.gm-fu-result { margin-top: 10px; display: none; border-left: 3px solid var(--red); background: var(--surface); padding: 10px 14px; font-size: 14px; line-height: 1.9; border-radius: 0 4px 4px 0; }
.gm-fu-result.show { display: block; }
.gm-fu-result .fv { font-weight: 600; }
.gm-fu-result .fa { color: var(--soft); margin-top: 4px; }
.gm-fu-result .ft { font-size: 12px; margin-top: 6px; }
.gm-empty { text-align: center; color: var(--soft); padding: 50px 0; }
.gm-back { text-align: center; margin: 18px 0; font-size: 13px; }
.gm-back a { color: var(--red); }
.owe-banner { background: var(--danger-bg); border: 1px solid var(--danger-line); border-radius: 5px; padding: 10px 14px; font-size: 13px; color: var(--danger); margin: 12px 0; }
.badge-private { font-size: 11px; color: var(--danger); border: 1px solid var(--danger); border-radius: 10px; padding: 0 7px; margin-left: 6px; }
/* 引荐卡 */
.referral { display: grid; grid-template-columns: 1fr auto; gap: 18px; align-items: end; }
.referral h3 { margin: 5px 0 8px; font: 22px var(--kai); }
.referral p { margin: 0 0 10px; color: var(--soft); font-size: 12.5px; line-height: 1.8; }
.referral input { width: 100%; min-height: 43px; border: 1px solid var(--edge); border-radius: 4px; background: var(--paper); padding: 9px 12px; color: var(--text); }
#ref-list { margin-top: 12px; }
#ref-list .ref-row { border-top: 1px dashed var(--edge); padding: 8px 2px; font-size: 13px; line-height: 1.9; color: var(--soft); }

/* ============================================================
   准头台账（gualu_stats）
   ============================================================ */
.accuracy-big { text-align: center; padding: 36px; }
.accuracy-big strong { display: block; color: var(--red); font: 72px/1 var(--num); }
.accuracy-big span { color: var(--soft); font-size: 13px; }
.accuracy-big small { display: block; color: var(--faint); font-size: 11px; margin-top: 6px; }
.bar-list { display: grid; gap: 14px; }
.bar-row { display: grid; grid-template-columns: 70px 1fr 45px; gap: 13px; align-items: center; }
.bar-row .bar { margin: 0; height: 7px; }
.bar-row b { font-family: var(--num); text-align: right; }
.data-table, .gs-table, .adm-table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.data-table th, .data-table td, .gs-table th, .gs-table td, .adm-table th, .adm-table td { padding: 13px 12px; border-bottom: 1px solid var(--edge); text-align: left; vertical-align: top; }
.data-table th, .gs-table th, .adm-table th { color: var(--faint); font-size: 11px; font-weight: 600; white-space: nowrap; }
.table-card { padding: 25px; margin-top: 18px; overflow: auto; }
.table-card h3 { margin: 0 0 16px; font: 22px var(--kai); }
.gs-bar-bg { display: inline-block; width: 110px; height: 8px; border-radius: 4px; background: rgba(127, 118, 98, .17); overflow: hidden; vertical-align: middle; }
.gs-bar { display: block; height: 100%; border-radius: 4px; background: var(--red); }
.gs-rate { font-size: 12px; margin-left: 6px; color: var(--soft); }
.gs-ticket { font-family: var(--num); font-size: 11px; color: var(--red); }
.gs-vd { font-size: 12px; border-radius: 10px; padding: 1px 8px; white-space: nowrap; }
.gs-vd.pass { background: var(--pass-bg); color: var(--pass); }
.gs-vd.fail { background: var(--danger-bg); color: var(--danger); }
.gs-vd.partial { background: var(--gold-bg); color: var(--gold); }
.gs-dl { font-size: 11px; color: var(--thunder); }
.gs-none { color: var(--faint); font-size: 13px; }
.gs-gua-chip { display: inline-block; border: 1px solid var(--edge); background: var(--paper); border-radius: 4px; padding: 3px 9px; margin: 2px 3px; font-size: 13px; }
.gs-gua-chip b { color: var(--red); margin-left: 4px; }
.gs-note { font-size: 12px; color: var(--faint); line-height: 1.8; margin: 8px 0 16px; }
td.num, .data-table td.num { text-align: right; font-variant-numeric: tabular-nums; font-family: var(--num); }

/* ============================================================
   账房（admin_account / admin_codes）
   ============================================================ */
.admin-shell { display: grid; grid-template-columns: 210px 1fr; gap: 20px; }
.admin-tabs { align-self: start; padding: 10px; border: 1px solid var(--edge); border-radius: 6px; background: var(--surface); position: sticky; top: 20px; }
.admin-tabs button { width: 100%; min-height: 43px; border: 0; border-radius: 4px; background: transparent; text-align: left; padding: 0 12px; color: var(--soft); font-size: 13px; }
.admin-tabs button.on { background: var(--rail); color: #fff; }
.admin-panel { display: none; }
.admin-panel.on { display: block; }
.admin-panel > .panel, .admin-panel > .table-card { margin-top: 0; }
.upload-zone { min-height: 170px; border: 1px dashed var(--faint); border-radius: 6px; display: grid; place-items: center; text-align: center; background: rgba(127, 118, 98, .04); margin-top: 18px; padding: 18px; }
.upload-zone strong, .upload-zone small { display: block; }
.upload-zone small { margin-top: 7px; color: var(--faint); }
.toggle-row { display: flex; align-items: center; justify-content: space-between; padding: 13px 0; border-bottom: 1px solid var(--edge); gap: 14px; }
.admin-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.aa-sub { font-size: 12px; color: var(--soft); margin: 0 0 12px; line-height: 1.8; }
.aa-ref { border: 1px solid var(--edge); border-radius: 6px; padding: 12px 14px; margin: 8px 0; background: var(--paper); }
.aa-ref .top { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 4px; }
.aa-ref .who { font-size: 14px; }
.aa-ref .who .to { color: var(--red); margin: 0 4px; }
.aa-ref .when { font-size: 12px; color: var(--faint); }
.aa-ref .note { font-size: 13px; color: var(--soft); margin: 6px 0 0; line-height: 1.7; }
.aa-ref .warn { font-size: 12px; color: var(--danger); margin: 4px 0 0; }
.aa-ref .ops { margin-top: 10px; display: flex; gap: 8px; }
.aa-empty { color: var(--soft); font-size: 13px; text-align: center; padding: 18px 0; }
.aa-hist { font-size: 12.5px; line-height: 1.9; color: var(--soft); border-bottom: 1px dashed var(--edge); padding: 6px 2px; }
.aa-hist .st-ok { color: var(--pass); }
.aa-hist .st-no { color: var(--danger); }
.aa-hist .code { font-family: var(--num); color: var(--red); letter-spacing: 1px; cursor: pointer; }
.aa-soft { color: var(--soft); font-size: 12px; }
.aa-body { max-width: 320px; }
.aa-target { color: var(--red); font-size: 12px; white-space: nowrap; }
.aa-num { font-family: var(--num); font-weight: 700; white-space: nowrap; }
/* v3.0 D11 账房原文遮蔽 + D2 一键关问卦 */
.q-mask { color: var(--faint); font-style: normal; }
.q-reveal { border: 1px solid var(--edge); background: none; color: var(--red);
  border-radius: 3px; padding: 1px 8px; font-size: 11px; cursor: pointer; }
.q-toggle { border: 1px solid var(--red); background: none; color: var(--red);
  border-radius: 3px; padding: 4px 12px; font-size: 12px; cursor: pointer; }
.div-switch-row { display: flex; align-items: center; gap: 8px; margin: 6px 0 14px;
  padding: 8px 10px; border: 1px dashed var(--edge); border-radius: 4px; flex-wrap: wrap; }
.aa-num.up { color: var(--pass); }
.aa-num.down { color: var(--danger); }
.aa-tip { font-size: 12px; color: var(--soft); text-align: center; margin: 14px 0 20px; line-height: 1.9; }
.up-row { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-bottom: 10px; }
.up-row input[type=file] { font-size: 13px; max-width: 260px; }
.up-row input[type=text] { flex: 1; min-width: 160px; border: 1px solid var(--edge); border-radius: 4px; padding: 9px 10px; font-size: 14px; background: var(--paper); color: var(--text); }
.up-paste { width: 100%; min-height: 90px; resize: vertical; border: 1px solid var(--edge); border-radius: 4px; padding: 9px 10px; font-size: 14px; background: var(--paper); color: var(--text); }
.btn-pull { border: 1px solid var(--danger); color: var(--danger); background: none; border-radius: 4px; padding: 4px 10px; font-size: 12px; cursor: pointer; white-space: nowrap; }
.btn-restore { border: 1px solid var(--thunder); color: var(--thunder); background: none; border-radius: 4px; padding: 4px 10px; font-size: 12px; cursor: pointer; white-space: nowrap; }
.adopt-btn { border: 1px solid var(--pass); background: var(--paper); color: var(--pass); font-size: 12px; padding: 4px 10px; border-radius: 4px; cursor: pointer; }
.adopt-btn:hover { background: var(--pass-bg); }
.pulled-row .body { color: var(--faint); text-decoration: line-through; }
.pulled-box summary { cursor: pointer; font-size: 13px; color: var(--soft); padding: 8px 0; }
.panel .adm-table { background: transparent; }
.aa-head { display: none; }   /* 旧页头隐藏（topbar 承担） */

/* ============================================================
   进门（login）/ 入村（onboard）
   ============================================================ */
.auth-page { min-height: 100svh; padding: 35px 18px; background: radial-gradient(circle at 50% 20%, #3a4036, #1f241f 60%); display: grid; place-items: center; }
.auth-card { width: min(520px, 100%); padding: 42px 46px; border: 1px solid rgba(255, 255, 255, .1); border-radius: 8px; background: var(--paper); box-shadow: 0 30px 80px rgba(0, 0, 0, .28); }
.auth-brand { text-align: center; }
.auth-brand .seal-mark { margin: auto; background: var(--red); color: #fff; border-color: rgba(255, 255, 255, .35); }
.auth-brand h1 { font: 24px var(--kai); letter-spacing: 2px; margin: 14px 0 4px; }
.auth-brand p { color: var(--soft); font-size: 12px; margin: 0 0 10px; }
.seal-mark { width: 74px; height: 74px; border: 1px solid var(--red); border-radius: 6px; display: grid; place-items: center; color: var(--red); font: 26px/1.2 var(--kai); font-weight: 700; letter-spacing: 2px; writing-mode: vertical-rl; transform: rotate(-1.5deg); box-shadow: inset 0 0 0 3px rgba(215, 107, 93, .08); }
.field { margin-top: 15px; text-align: left; }
.field label { display: block; margin-bottom: 7px; color: var(--soft); font-size: 12px; letter-spacing: 1px; }
.field input, .field textarea, .login-input { width: 100%; min-height: 45px; border: 1px solid var(--edge); border-radius: 4px; background: var(--surface); padding: 10px 12px; color: var(--text); font-size: 15px; letter-spacing: 1px; }
.field input:focus, .login-input:focus { outline: none; border-color: var(--red); }
.auth-card .red-btn, .login-btn { width: 100%; margin-top: 18px; min-height: 46px; border-radius: 5px; border: 0; background: var(--red); color: #fff; font: 600 15px var(--sans); letter-spacing: .3em; cursor: pointer; }
.login-btn:hover, .auth-card .red-btn:hover { background: var(--red-dark); }
.login-btn-sub, .auth-card .plain-btn { width: 100%; margin-top: 14px; min-height: 44px; background: none; border: 1px solid var(--edge); color: var(--text); font-size: 14px; letter-spacing: .2em; }
.login-btn-sub:hover, .auth-card .plain-btn:hover { border-color: var(--red); color: var(--red); background: none; }
.or { display: flex; align-items: center; gap: 10px; margin: 27px 0 4px; color: var(--faint); font-size: 11px; }
.or:before, .or:after { content: ""; height: 1px; flex: 1; background: var(--edge); }
.login-divider { display: flex; align-items: center; gap: 10px; margin: 27px 0 4px; color: var(--faint); font-size: 11px; }
.login-divider:before, .login-divider:after { content: ""; height: 1px; flex: 1; background: var(--edge); }
/* v3.23 门序反转（2026-09-09 站长令）：双标签——新村民凭码打头，老村民花名进门 */
.auth-tabs { display: flex; margin: 18px 0 4px; border: 1px solid var(--edge); border-radius: 5px; overflow: hidden; }
.auth-tab { flex: 1; min-height: 42px; border: 0; background: none; color: var(--soft); font: 13px var(--sans); letter-spacing: .12em; cursor: pointer; padding: 0 6px; }
.auth-tab.on { background: var(--red); color: #fff; font-weight: 600; }
.auth-pane[hidden] { display: none; }
.auth-pane { padding-top: 10px; }
/* 老样式保留（gualu 等处仍在用） */
.auth-foot { margin-top: 22px; text-align: center; color: var(--faint); font-size: 11px; line-height: 1.9; }
.auth-foot a, .login-tip a { color: var(--red); }
/* v3.0 访读入口：未进村可先看今日研习/试读章 */
.login-visitor { margin-top: 18px; padding-top: 14px; border-top: 1px dashed var(--edge);
  text-align: center; color: var(--soft); font-size: 12px; line-height: 1.9; }
.login-visitor a { color: var(--red); }
.login-error { color: var(--danger); font-size: 13px; margin: 0 0 10px; text-align: center; }
.login-sub { font-size: 12px; color: var(--soft); letter-spacing: 3px; margin: 10px 0 4px; text-align: center; }
.login-tip { font-size: 11px; color: var(--faint); margin: 14px 0 0; line-height: 1.8; text-align: center; }
.onboard-label { display: block; font-size: 12px; color: var(--soft); margin: 14px 0 6px; letter-spacing: 1px; }
/* ===== v3.25 摆摊版（2026-09-09 站长令：卦摊出摊 + 看相看手相 + 扫码取件） ===== */
.booth-wrap { max-width: 620px; margin: 0 auto; padding: 4px 14px 60px; }
.booth-card { background: var(--paper); border: 1px solid rgba(255, 255, 255, .1); border-radius: 8px; padding: 20px 18px; box-shadow: 0 18px 50px rgba(0, 0, 0, .22); }
.booth-card + .booth-card { margin-top: 14px; }
.booth-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.booth-head h2 { font: 26px var(--kai); margin: 0; color: var(--text); }
.booth-head small { color: var(--faint); font-size: 11px; }
.booth-methods { display: flex; gap: 8px; flex-wrap: wrap; margin: 15px 0 6px; }
.booth-method { flex: 1 1 17%; min-width: 88px; min-height: 50px; border: 1px solid var(--edge); background: var(--surface); border-radius: 6px; cursor: pointer; font: 15px var(--sans); color: var(--soft); letter-spacing: .06em; padding: 4px; }
.booth-method:hover { border-color: var(--red); color: var(--red); }
.booth-method.on { border-color: var(--red); color: var(--red); background: rgba(138, 43, 34, .07); font-weight: 600; }
.booth-field { margin-top: 13px; }
.booth-field label { display: block; font-size: 12px; color: var(--soft); margin-bottom: 6px; letter-spacing: 1px; }
.booth-input { width: 100%; box-sizing: border-box; min-height: 44px; border: 1px solid var(--edge); border-radius: 5px; background: var(--surface); padding: 9px 12px; font-size: 15px; color: var(--text); }
.booth-input:focus { outline: none; border-color: var(--red); }
textarea.booth-input { min-height: 66px; resize: vertical; }
.booth-btn { width: 100%; margin-top: 16px; min-height: 46px; border: 0; border-radius: 6px; background: var(--red); color: #fff; font: 600 15px var(--sans); letter-spacing: .18em; cursor: pointer; }
.booth-btn:disabled { opacity: .5; cursor: wait; }
.booth-btn.booth-sub { border: 1px solid var(--edge); background: none; color: var(--text); }
.booth-hint { font-size: 11px; color: var(--faint); margin-top: 10px; line-height: 1.8; }
.booth-err { color: var(--danger); font-size: 13px; margin-top: 12px; line-height: 1.7; white-space: pre-line; }
.booth-ok { color: #2e5d34; font-size: 13px; margin-top: 12px; line-height: 1.7; }
.booth-result-title { font: 21px var(--kai); color: var(--red); margin: 4px 0 2px; }
.booth-section-t { font: 15px var(--kai); color: var(--red); margin: 14px 0 5px; letter-spacing: 1px; }
.booth-text { font: 14px/1.95 var(--serif); color: var(--soft); margin: 0; }
.booth-qr { text-align: center; margin: 16px 0 4px; }
.booth-qr img { width: 210px; height: 210px; border-radius: 6px; border: 1px solid var(--edge); background: #fff; }
.booth-qr-url { font-size: 11px; color: var(--faint); word-break: break-all; margin-top: 6px; }
.booth-pick { max-width: 640px; margin: 0 auto; padding: 16px 0 60px; }
.booth-pick .booth-card { border: 1px solid var(--edge); box-shadow: var(--shadow); }
.booth-meta { font-size: 12px; color: var(--faint); line-height: 1.9; margin: 12px 0 0; }

/* —— v3.28 摊位升级：卦图 / 摄像头 / 今日台账 —— */
.booth-kicker { font-size: 11px; letter-spacing: .35em; color: var(--faint); text-align: center; margin: 2px 0 0; }
.booth-gua { display: flex; gap: 10px; justify-content: center; align-items: flex-start; margin: 12px 0 2px; }
.booth-gua-fig { flex: 1 1 0; max-width: 120px; text-align: center; }
.booth-gua-arrow { align-self: center; color: var(--faint); font-size: 16px; flex: none; }
.booth-gua-lines { display: flex; flex-direction: column; gap: 5px; width: 84px; margin: 0 auto; }
.booth-gline { display: flex; gap: 7px; justify-content: center; height: 6px; }
.booth-gline i { display: block; flex: 1; background: var(--thunder); border-radius: 2px; }
/* 阳爻渲染 1 段 <i>（通体实线），阴爻渲染 2 段 <i>（flex gap 自成断口）——JS 侧按 0/1 出段 */
.booth-gline.dong i { background: var(--red); box-shadow: 0 0 0 1px var(--red); }
.booth-gua-name { font: 14px var(--kai); color: var(--text); margin-top: 7px; }
.booth-gua-cap { font-size: 10px; color: var(--faint); margin-top: 1px; letter-spacing: .15em; }
.booth-gua-ci { font-size: 12.5px; color: var(--soft); line-height: 1.9; margin: 8px 0 0; }
.booth-gua-ci b { color: var(--red); font-family: var(--kai); font-weight: 600; }
.booth-cam { position: relative; margin-top: 10px; border: 1px solid var(--edge); border-radius: 8px; overflow: hidden; background: #111; }
.booth-cam video { display: block; width: 100%; max-height: 340px; object-fit: cover; }
.booth-cam-off { padding: 26px 12px; text-align: center; color: var(--faint); font-size: 12px; }
.booth-cam-ops { display: flex; gap: 10px; margin-top: 10px; }
.booth-cam-ops .booth-btn { margin-top: 0; flex: 1; }
.booth-shot { width: 100%; border-radius: 8px; border: 1px solid var(--edge); display: block; }
.booth-today { margin: 6px 0 0; padding: 0; list-style: none; }
.booth-today li { display: flex; gap: 10px; align-items: baseline; padding: 8px 2px; border-bottom: 1px dashed var(--edge); cursor: pointer; }
.booth-today li:hover .bt-q { color: var(--red); }
.booth-today li:last-child { border-bottom: 0; }
.booth-today .bt-t { font-family: var(--num); font-size: 12px; color: var(--faint); flex: none; }
.booth-today .bt-k { font-size: 11px; color: var(--red); border: 1px solid var(--red); border-radius: 3px; padding: 0 5px; flex: none; }
.booth-today .bt-q { font-size: 13px; color: var(--soft); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; }
.booth-count-chip { display: inline-block; font-family: var(--num); font-size: 12px; color: var(--red); border: 1px solid var(--red); border-radius: 20px; padding: 1px 10px; }
.onboard-hint { font-size: 11px; color: var(--faint); margin: 5px 0 2px; line-height: 1.7; text-align: left; }
.onboard-agree { display: flex; gap: 8px; align-items: flex-start; margin: 18px 0 4px; font-size: 12px; color: var(--soft); line-height: 1.8; cursor: pointer; }
.onboard-agree input { margin-top: 4px; flex: none; }
/* v3.13 村规下方的全文链接：隐私承诺不能只在免责页躺着，
   进门那一刻就得让人看见、点得到。 */
.onboard-note { margin: 6px 0 0; font-size: 11px; color: var(--faint); text-align: center; }
.onboard-note a { color: var(--red); }

/* ============================================================
   免责与村规（disclaimer）
   ============================================================ */
.disclaimer-page { max-width: 850px; margin: 34px auto; }
.disclaimer-head { text-align: center; padding: 20px; }
.disclaimer-head h2 { font: 37px var(--kai); margin: 6px 0; }
.disclaimer-head p { color: var(--soft); font-size: 12.5px; margin: 0; letter-spacing: 2px; }
.statement { padding: 28px 32px; margin-top: 15px; }
.statement h3 { margin: 0 0 13px; font: 23px var(--kai); }
.statement h3 .disc-no { color: var(--red); font-size: 12px; letter-spacing: 3px; display: block; margin-bottom: 4px; }
.statement p, .statement li { color: var(--soft); font: 14px/1.9 var(--serif); }
.statement p { margin: 0 0 10px; text-indent: 2em; }
.statement li { margin-bottom: 10px; text-align: justify; }
.statement b { color: var(--text); }
.signature { text-align: right; margin-top: 30px; font-family: var(--kai); }
.disc-signoff { text-align: center; padding: 10px 0 34px; color: var(--soft); font-size: 13px; }
.disc-signoff .disc-meta { color: var(--faint); font-size: 12px; margin-top: 6px; }
.disc-back { text-align: center; margin-top: 24px; }

/* ============================================================
   弹层 / 轻提示（族谱小传等）
   ============================================================ */
.lineage-modal { position: fixed; inset: 0; background: rgba(20, 22, 19, .66); display: flex; align-items: center; justify-content: center; z-index: 90; }
.lineage-modal[hidden] { display: none; }
.lm-card { position: relative; max-width: 560px; width: 92%; background: var(--paper); border: 1px solid var(--edge); border-radius: 7px; padding: 28px 30px 24px; box-shadow: 0 25px 80px rgba(0, 0, 0, .3); }
.lm-close { position: absolute; top: 6px; right: 10px; background: none; border: none; font-size: 26px; color: var(--soft); cursor: pointer; min-width: 44px; min-height: 44px; }
.lm-card h2 { margin: 0 0 4px; font: 26px var(--kai); }
.lm-meta { font-size: 13px; color: var(--thunder); margin-bottom: 10px; }
.lm-bio { font-size: 15px; line-height: 1.8; margin: 8px 0; }
.lm-gen { font-size: 13px; color: var(--red); background: rgba(156, 54, 46, .07); padding: 6px 10px; border-radius: 4px; margin: 8px 0; }
.lm-appear { font-size: 13.5px; color: var(--soft); line-height: 1.7; }
.lm-appear a { color: var(--red); }
.lm-tip { font-size: 11px; color: var(--faint); margin-top: 14px; padding-top: 10px; border-top: 1px dashed var(--edge); }

/* ============================================================
   族谱（lineage 渲染区） / 年表 / 导图（doc-paper 内）
   ============================================================ */
.lineage-motto { font-size: 17px; letter-spacing: 8px; margin: 0 0 12px; line-height: 1.7; }
.lgc { color: var(--red); font-weight: 700; }
.lgc-broken { color: var(--danger); text-decoration: line-through; }
.lgc-future { color: var(--mute-2); }
.lineage-bang { color: var(--mute-2); letter-spacing: 0; }
.lineage-note { font-size: 13px; color: var(--soft); line-height: 1.8; max-width: 660px; margin: 0 auto; }
.lineage-note b { color: var(--red); }
.lineage-vol-tabs { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; margin: 18px 0 12px; }
.lvt { font-family: var(--serif); font-size: 13px; cursor: pointer; background: var(--surface); color: var(--soft); border: 1px solid var(--edge); border-radius: 4px; padding: 6px 16px; letter-spacing: 1px; }
.lvt.on { color: var(--red); border-color: var(--red); font-weight: 700; }
.lineage-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 8px 0 24px; }
.lg-card { background: var(--surface); border: 1px solid var(--edge); border-radius: 6px; padding: 14px 16px; cursor: pointer; transition: border-color .15s; }
.lg-card:hover { border-color: var(--red); }
.lg-name { font-size: 17px; font-weight: 700; font-family: var(--kai); }
.lg-role { font-size: 12px; color: var(--thunder); letter-spacing: 1px; margin: 2px 0 6px; }
.lg-small { font-size: 13.5px; color: var(--soft); line-height: 1.7; }
.lg-chips { margin-top: 8px; display: flex; gap: 6px; flex-wrap: wrap; }
.lg-chip { font-size: 11px; color: var(--soft); border: 1px solid var(--edge); border-radius: 4px; padding: 2px 6px; }
.lg-chip a { color: var(--red); text-decoration: none; }
/* 年表（timeline 模板内嵌样式已含，这里只保底排版） */
.tl-head { text-align: center; margin: 10px 0 8px; }
/* 导图 */
.mm-toolbar { display: flex; gap: 10px; align-items: center; margin: 6px 0 14px; flex-wrap: wrap; }
.mm-btn { font-size: 13px; cursor: pointer; background: var(--surface); color: var(--text); border: 1px solid var(--edge); border-radius: 4px; padding: 8px 16px; }
.mm-btn:hover { border-color: var(--red); color: var(--red); }
.mm-tip { font-size: 12px; color: var(--faint); }
.mindmap { overflow: auto; padding: 10px 4px 40px; background: var(--surface); border: 1px solid var(--edge); border-radius: 7px; }
.mm-tree, .mm-tree ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; justify-content: center; }
.mm-tree { align-items: flex-start; padding: 16px; }
.mm-tree ul { margin-left: 34px; padding-left: 22px; position: relative; }
.mm-tree ul::before { content: ""; position: absolute; left: 0; top: 14px; bottom: 14px; width: 1px; background: var(--edge); }
.mm-node { position: relative; padding: 3px 0; }
.mm-node:not(:last-child)::after { content: ""; position: absolute; left: -22px; top: 20px; width: 22px; height: 1px; background: var(--edge); }
.mm-node:last-child::after { content: ""; position: absolute; left: -22px; top: 20px; width: 22px; height: 1px; background: var(--edge); }
.mm-box { position: relative; display: inline-block; min-width: 120px; max-width: 420px; background: var(--paper); border: 1px solid var(--edge); border-radius: 7px; padding: 7px 14px; }
.mm-box:hover { border-color: var(--red); }
.mm-root { background: var(--rail); color: #eee7d8; font-size: 19px; padding: 12px 26px; letter-spacing: 4px; border: none; }
.mm-name { font-size: 15px; font-weight: 700; }
.mm-tag { display: inline-block; font-size: 11px; color: var(--thunder); background: rgba(90, 107, 122, .1); border-radius: 4px; padding: 0 6px; margin-top: 2px; }
.mm-desc { font-size: 12.5px; color: var(--soft); margin-top: 2px; max-width: 400px; }
.mm-toggle { position: absolute; right: -13px; top: 50%; transform: translateY(-50%); width: 22px; height: 22px; line-height: 20px; text-align: center; background: var(--surface); border: 1px solid var(--edge); border-radius: 50%; font-size: 14px; color: var(--soft); z-index: 2; }
.mm-toggle::before { content: "−"; }
.collapsed > ul { display: none; }
.collapsed > .mm-box .mm-toggle::before { content: "＋"; }

/* ============================================================
   响应式：1080 / 820 / 580 三档 + 移动铁律
   ============================================================ */
@media (max-width: 1080px) {
  .rail { width: 205px; }
  .stage { margin-left: 205px; padding-inline: 30px; }
  /* v3.19：banner 桌面边距只给平板区间——此块在文件后部、晚于 820 块，
     若不限下限会把手机上的全宽边距反杀，横幅被挤成竖排窄条（9-06 实机截图） */
  .page-grid { grid-template-columns: minmax(0, 1fr) 285px; gap: 22px; }
  .reader { grid-template-columns: 150px minmax(0, 1fr); gap: 28px; }
  .ask-page { grid-template-columns: 250px minmax(0, 1fr); gap: 34px; }
  .doc-layout { grid-template-columns: 180px minmax(0, 720px); }
}
@media (max-width: 820px) {
  .rail { display: none; }
  .stage { margin-left: 0; padding: 0 18px calc(94px + env(safe-area-inset-bottom)); }
  .mobile-head { min-height: calc(68px + env(safe-area-inset-top)); display: flex; align-items: center; justify-content: space-between; padding: env(safe-area-inset-top) 18px 0; color: #f0e8da; background: var(--rail); margin: 0 -18px; }
  .mobile-head .seal { width: 34px; height: 38px; font-size: 18px; }
  .mobile-head .brand strong { font-size: 18px; }
  .mobile-balance { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: #e8dcc0; font-weight: 600; letter-spacing: .03em; }
  .mobile-balance.is-guest { color: #a9aa9f; font-weight: 400; }
  .dot-state { width: 7px; height: 7px; border-radius: 50%; background: transparent; border: 1.5px solid #8d9288; flex: none; }
  .dot-state.on { background: #d8b45a; border-color: #d8b45a; box-shadow: 0 0 4px rgba(216,180,90,.6); }
  .m-head-right { display: flex; align-items: center; gap: 10px; }
  .m-logout { font-size: 12.5px; color: #c9c4b4; text-decoration: none; padding: 4px 10px; border: 1px solid rgba(255,255,255,.22); border-radius: 4px; }
  .m-logout:hover { color: #fff; border-color: rgba(255,255,255,.5); }
  .m-login { color: #e8dcc0; border-color: rgba(216,180,90,.5); }
  .m-login:hover { color: #fff; border-color: #d8b45a; background: rgba(216,180,90,.12); }
  .topbar { height: 66px; }
  .topbar .eyebrow { display: none; }
  .topbar h1 { margin: 0; font-size: 21px; }
  .page-grid { grid-template-columns: 1fr; margin-top: 22px; }
  .secondary { grid-template-columns: 1fr 1fr; }
  .reader { display: block; margin-top: 22px; }
  .outline { display: none; }
  .sheet { padding: 45px 50px; }
  .ask-page { display: block; margin-top: 24px; }
  .ask-intro { position: static; padding: 0 0 25px; }
  .forum, .my-page, .stats-page, .admin-page { margin-top: 22px; }
  .study-grid { grid-template-columns: 1fr 1fr; }
  .doc-layout { display: block; margin-top: 22px; }
  .doc-nav { position: static; display: flex; overflow: auto; margin-bottom: 15px; border: 1px solid var(--edge); border-radius: 5px; }
  .doc-nav a { flex: 0 0 90px; border: 0; border-right: 1px solid var(--edge); text-align: center; }
  .doc-nav a.active { box-shadow: inset 0 -3px var(--red); }
  .admin-shell { display: block; }
  .admin-tabs { display: flex; overflow: auto; margin-bottom: 15px; position: static; }
  .admin-tabs button { flex: 0 0 118px; }
  .mobile-nav { position: fixed; inset: auto 0 0; z-index: 40; height: calc(66px + env(safe-area-inset-bottom)); display: grid; grid-template-columns: repeat(5, 1fr); padding-bottom: env(safe-area-inset-bottom); border-top: 1px solid rgba(255, 255, 255, .08); background: rgba(37, 41, 33, .97); backdrop-filter: blur(12px); }
  .mobile-nav .nav-btn { min-width: 0; min-height: 56px; height: auto; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; padding: 0; border-radius: 0; box-shadow: none; color: #8f938a; background: none; font-size: 11px; }
  .mobile-nav .nav-btn.active { color: #fff; }
  .mobile-nav .nav-btn.active:before { display: none; }
  .mobile-nav .nav-icon { font-size: 13px; }
  .mobile-nav .nav-btn span:last-child { font-size: 11px; }
  body.immersive .stage { padding: 0; }
}
@media (max-width: 580px) {
  .stage { padding-inline: 13px; }
  .circle-btn { width: 42px; height: 42px; }
  .stats-strip { grid-template-columns: 1fr; }
  .stats-strip div { border-right: 0; border-bottom: 1px solid var(--edge); }
  .stats-strip div:last-child { border-bottom: 0; }
  .continue { min-height: 390px; display: block; padding: 30px 25px; }
  .continue h2 em { font-size: 43px; }
  .continue p { max-width: 265px; }
  .chapter-mark { width: 88px; min-height: 178px; right: 23px; top: 29px; padding: 18px 10px; opacity: .24; }
  .chapter-mark strong { font-size: 29px; }
  .chapter-row { grid-template-columns: 39px 1fr auto 17px; gap: 8px; }
  .chapter-row .state { display: none; }
  .secondary { grid-template-columns: 1fr; }
  .sheet { padding: 36px 22px; }
  .reading-body p { font-size: 17px; line-height: 2; letter-spacing: .035em; }
  .reader-actions { display: grid; grid-template-columns: 1fr 1fr; }
  .reader-actions span { grid-column: 1 / -1; grid-row: 1; text-align: center; }
  .reader-actions .toc-link { grid-column: 1 / -1; grid-row: 3; }
  .comment-foot { align-items: flex-end; gap: 10px; }
  .study-grid { grid-template-columns: 1fr; }
  .doc-paper { padding: 32px 21px; }
  .info-grid { grid-template-columns: 1fr 1fr; }
  .methods { grid-template-columns: 1fr; }
  .method { min-height: 88px; }
  .method-field { grid-template-columns: 1fr; }
  .cast-card, .result, .gm-card { padding: 28px 20px; }
  .tg-row-l { grid-template-columns: 1fr auto; }
  .tg-row-l .privacy-icon { display: none; }
  .forum-hero { display: block; padding: 28px 25px; }
  .accuracy { margin-top: 25px; padding: 20px 0 0; border-left: 0; border-top: 1px solid rgba(255, 255, 255, .13); }
  .gua-post { grid-template-columns: 66px 1fr; }
  .gua-content { padding-inline: 16px; }
  .profile { grid-template-columns: 57px 1fr; padding: 22px 19px; }
  .profile > .plain-btn { display: none; }
  .large-avatar { width: 54px; height: 54px; }
  .stats { grid-template-columns: 1fr; }
  .panel { padding: 22px 18px; }
  .due { grid-template-columns: 40px 1fr; }
  .due .red-btn, .due button { grid-column: 2; justify-self: start; }
  .tabs { gap: 18px; overflow-x: auto; }
  .tabs a, .tabs button { flex: none; }
  .gm-pred { flex-wrap: wrap; }
  .gm-pred .pt { flex-basis: 100%; }
  .referral { grid-template-columns: 1fr; }
  .auth-card { padding: 34px 26px; }
  /* 移动铁律：输入 16px（iOS 不放大） */
  .comment-box textarea, .comment-box .nick-line,
  .method-field input, .method-field textarea, .num-row input,
  .para-form textarea, .para-form input, .gm-fu input,
  .evidence-row input, .evidence, .field input, .login-input,
  .up-row input[type=text], .up-paste { font-size: 16px; }
  /* 移动铁律：触达 ≥44px */
  .act-btn { padding: 10px; font-size: 13px; }
  .btn-up { padding: 8px 12px; min-height: 34px; }
  .fb-btn { padding: 8px 14px; }
  .btn-pull, .btn-restore, .adopt-btn { padding: 8px 12px; }
  .voice-tip { display: none; }
  /* 表格降卡（adm/gs 系，依赖 td data-label） */
  .adm-table, .adm-table tbody, .adm-table tr, .adm-table td,
  .gs-table, .gs-table tbody, .gs-table tr, .gs-table td,
  .data-table, .data-table tbody, .data-table tr, .data-table td { display: block; width: 100%; }
  .adm-table thead, .gs-table thead, .data-table thead { display: none; }
  .adm-table tr, .gs-table tr, .data-table tr { border: 1px solid var(--edge); border-radius: 7px; margin: 8px 0; background: var(--paper); }
  .adm-table td, .gs-table td, .data-table td { border: none; border-bottom: 1px dashed var(--edge); padding: 8px 12px; }
  .adm-table td:last-child, .gs-table td:last-child, .data-table td:last-child { border-bottom: none; }
  .adm-table td[data-label]::before, .gs-table td[data-label]::before, .data-table td[data-label]::before { content: attr(data-label); display: block; font-size: 11px; color: var(--faint); letter-spacing: 1px; }
  .mm-box { max-width: 280px; }
  .lineage-grid { grid-template-columns: 1fr; }
  .lineage-motto { letter-spacing: 4px; }
}
@media (hover: none) and (pointer: coarse) {
  button { -webkit-tap-highlight-color: transparent; }
  .chapter-row:hover, .circle-btn:hover { background: inherit; }
}
/* ============================================================
   v3.0 补丁批次（2026-09-01）：模板重写期引入的功能类
   —— 设计稿没有、本站功能所需（四法卡/卷头/匿名开关/卦史回看/账房按钮等），
      按设计稿令牌补观感；与 JS 联动的 display 行为已核对（div-panel 不设 display，
      JS 置 style.display='' 即恢复块级；toggle 靠 .on 类切换）
   ============================================================ */
/* 目录卷头行 */
.vol-head { display: flex; align-items: baseline; gap: 12px; padding: 26px 2px 10px; }
.vol-head::before { content: ""; width: 18px; height: 1px; background: var(--red); align-self: center; }
.vol-head b { font: 15px var(--kai); letter-spacing: 2px; }
.vol-head span { color: var(--faint); font-size: 11px; letter-spacing: 1px; }
/* 留言墙 / 音频条里的头像（适配所在列宽） */
.post-head .avatar { width: 28px; height: 28px; font-size: 12px; }
.audio-player .avatar { width: 44px; height: 44px; font-size: 16px; }
/* 问卦：四法卡（设计稿三卡，本站四式：报数/时辰/测字/卦史） */
.methods.four { grid-template-columns: repeat(4, 1fr); }
/* 问卦：面板容器（JS 置 style.display='' 恢复默认——此处不设 display） */
.div-panel { margin-top: 14px; }
.div-panel label { display: block; font-size: 13px; color: var(--soft); margin: 12px 0 5px; }
.div-panel input, .div-panel textarea { min-height: 43px; border: 1px solid var(--edge); border-radius: 4px; background: var(--surface); padding: 9px 12px; color: var(--text); width: 100%; }
.div-panel textarea { min-height: 58px; resize: vertical; font: 14px/1.7 var(--serif); }
.panel-p { margin: 8px 0; color: var(--soft); font-size: 12.5px; line-height: 1.8; }
.div-panel input.cezi-input { font: 26px var(--kai); text-align: center; letter-spacing: 8px; }
/* 匿名上坛开关（.switch 同款观感：默认灰=关·圆点右，.on=开·圆点左） */
.toggle { width: 45px; height: 25px; border-radius: 13px; background: rgba(127, 118, 98, .35); position: relative; transition: .2s; flex: none; cursor: pointer; }
.toggle::after { content: ""; position: absolute; left: 23px; top: 3px; width: 19px; height: 19px; border-radius: 50%; background: #fff; transition: .2s; }
.toggle.on { background: var(--jade); }
.toggle.on::after { left: 3px; }
/* 卦史：备用回看折叠 + 票号行 */
.ticket-details { margin-top: 12px; border-top: 1px dashed var(--edge); padding-top: 10px; }
.ticket-details summary { cursor: pointer; font-size: 12px; color: var(--faint); }
.ticket-details[open] summary { margin-bottom: 8px; }
.ticket-row { display: flex; gap: 8px; margin-top: 8px; }
.ticket-row input { flex: 1; min-width: 0; min-height: 40px; border: 1px solid var(--edge); border-radius: 4px; background: var(--surface); padding: 8px 12px; color: var(--text); font-family: var(--num); letter-spacing: 1px; }
/* 结果卡：画押区 */
.pred-sub { font-size: 11.5px; color: var(--faint); font-weight: normal; }
.pred-submit { display: flex; align-items: center; gap: 12px; margin-top: 12px; flex-wrap: wrap; }
/* 卦坛：本卦→变卦 双卦符列 */
.post-gua .arrow { font-size: 14px; color: var(--faint); margin: 0 1px; }
.post-gua.duo { font-size: 30px; }
/* 免责页：声明列表缩进 */
.statement ol { margin: 0; padding-left: 1.5em; }
/* 关于本书：骨架折叠 */
.skeleton { border: 1px solid var(--edge); border-radius: 5px; background: var(--surface); }
.skeleton > summary { padding: 15px 18px; cursor: pointer; font: 16px var(--kai); }
.skeleton > summary:hover { color: var(--red); }
.skeleton[open] > summary { border-bottom: 1px solid var(--edge); }
.skeleton > div { padding: 2px 18px 10px; }
/* 账房：侧导航链接 + 批准/婉拒/传章提交 */
.adm-link { display: block; min-height: 43px; line-height: 43px; border-radius: 4px; padding: 0 12px; color: var(--soft); font-size: 13px; text-decoration: none; }
.adm-link:hover { background: rgba(127, 118, 98, .1); color: var(--red); }
.aa-btn-ok { border: 0; border-radius: 4px; background: var(--red); color: #fff; min-height: 38px; padding: 0 20px; font-weight: 600; font-size: 13px; cursor: pointer; letter-spacing: .1em; }
.aa-btn-ok:hover { background: var(--red-dark); }
.aa-btn-no { border: 1px solid var(--edge); border-radius: 4px; background: none; color: var(--soft); min-height: 38px; padding: 0 20px; font-size: 13px; cursor: pointer; letter-spacing: .1em; }
.aa-btn-no:hover { border-color: var(--danger); color: var(--danger); }

/* —— 补丁批次响应式（追加块；同断点内后写规则胜出） —— */
@media (max-width: 820px) {
  .methods.four { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 580px) {
  .methods.four { grid-template-columns: 1fr; }
  .post-gua.duo { font-size: 21px; }
  .post-gua.duo .arrow { font-size: 11px; }
  .div-panel input, .div-panel textarea, .ticket-row input { font-size: 16px; }
  .aa-btn-ok, .aa-btn-no { min-height: 44px; }
}

/* ============================================================
   v3.1 断语引擎升级（2026-09-01 晚）：仅本地断卦开关 / 用量账 / 账房卦例总账与知识库体检
   ============================================================ */
/* 问卦页：仅本地断卦开关行（默认 display 由 JS 按模型状态控制） */
.engine-opt { display: flex; align-items: center; gap: 9px; padding: 2px 14px 10px; margin-top: -4px; }
.engine-opt .eo-label { font-size: 12.5px; color: var(--soft); line-height: 1.5; }
.engine-opt .eo-label small { display: block; font-size: 11px; color: var(--faint); }
/* 结果卡：用量行 */
.r-usage { margin: 10px 0 0; padding: 9px 12px; border-left: 2px solid var(--jade); background: rgba(83, 104, 90, .07); font-size: 12.5px; color: var(--soft); line-height: 1.7; }
.r-usage .kb-gap { margin-top: 4px; color: #8a5a2b; font-size: 11.5px; }
/* 账房：卦例总账的引擎徽标与用量标记 */
.kb-mode { display: inline-block; padding: 1px 7px; border-radius: 3px; font-size: 11px; letter-spacing: .05em; }
.kb-mode[data-m="模"] { background: rgba(156, 54, 46, .12); color: var(--red); }
.kb-mode[data-m="本"] { background: rgba(83, 104, 90, .16); color: var(--jade); }
.kb-mode[data-m="拒"] { background: rgba(127, 118, 98, .18); color: var(--soft); }
.kb-u { color: var(--jade); font-size: 12px; white-space: nowrap; }
.kb-m { color: var(--red); font-size: 12px; white-space: nowrap; }
.kb-gap { font-size: 11px; color: #8a5a2b; margin-top: 2px; }
.kb-private { display: inline-block; padding: 0 6px; border: 1px solid var(--danger); border-radius: 3px; color: var(--danger); font-size: 11px; line-height: 1.6; }
/* 账房：知识库体检四格 + 缺口区 */
.kb-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 14px 0; }
.kb-cell { border: 1px solid var(--edge); border-radius: 5px; background: var(--surface); padding: 12px 14px; }
.kb-cell b { font: 14px var(--kai); display: block; margin-bottom: 6px; }
.kb-cover { font: 700 20px var(--num); letter-spacing: .02em; display: block; }
.kb-cover.ok { color: var(--jade); }
.kb-cover.bad { color: var(--red); }
.kb-cell small { display: block; margin-top: 5px; color: var(--faint); font-size: 11px; line-height: 1.5; }
.kb-miss { border: 1px dashed rgba(156, 54, 46, .4); border-radius: 5px; padding: 12px 16px; margin: 6px 0 12px; }
.kb-miss h4, .kb-how h4 { font: 14px var(--kai); margin: 0 0 8px; }
.kb-rank { margin: 4px 0 10px; }
.kb-rank-item { display: inline-block; background: rgba(156, 54, 46, .1); color: var(--red); border-radius: 3px; padding: 1px 8px; margin: 0 6px 6px 0; font-size: 12.5px; font-family: var(--num); }
.kb-names span { display: inline-block; border: 1px solid var(--edge); border-radius: 3px; padding: 0 8px; margin: 0 5px 5px 0; font: 13px var(--kai); color: var(--soft); }
.kb-how { border-top: 1px solid var(--edge); padding-top: 12px; }
.kb-how p { margin: 4px 0; font-size: 12.5px; color: var(--soft); line-height: 1.8; }
/* 体检四格移动端降两列 */
@media (max-width: 820px) {
  .kb-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ============================================================
   v3.2 深读此卦（2026-09-02）：卦理静态区 + 学习对话 + 学习笔记
   —— 起卦即学：断语卡下折叠区，问答落库，一键生成学习笔记；
      好点子用✨金标肯定；本地话术卦问答带「未出村」标注
   ============================================================ */
.learn-block { margin-top: 14px; border-top: 1px dashed var(--edge); padding-top: 12px; }
.learn-toggle {
  width: 100%; border: 1px solid rgba(83, 104, 90, .35); border-radius: 4px;
  background: rgba(83, 104, 90, .08); color: var(--jade); text-align: left;
  padding: 10px 14px; font: 600 14.5px var(--kai); letter-spacing: .08em; cursor: pointer;
}
.learn-toggle:hover { background: rgba(83, 104, 90, .14); }
.learn-toggle .learn-sub { display: block; font: 400 11.5px var(--sans); color: var(--soft); letter-spacing: .04em; margin-top: 2px; }
.learn-panel { margin-top: 10px; }

/* 卦理静态区 */
.learn-gua { display: grid; gap: 8px; margin-bottom: 10px; }
.lg-head { font: 600 14px var(--kai); color: var(--text); letter-spacing: .06em; padding-bottom: 4px; border-bottom: 1px solid var(--edge); }
.lg-line { font-size: 12.5px; color: var(--soft); line-height: 1.7; }
.lg-line b { color: var(--jade); font-weight: 600; }
.lg-card { border: 1px solid var(--edge); border-radius: 5px; background: var(--paper); padding: 10px 13px; }
.lg-t { font: 600 13px var(--kai); color: var(--jade); letter-spacing: .1em; margin-bottom: 6px; }
.lg-ori { font: 400 15.5px/1.9 var(--kai); color: var(--text); letter-spacing: .05em; text-align: center; }
.lg-bai { font-size: 12.5px; color: var(--soft); line-height: 1.8; margin-top: 5px; }
.lg-yy { font-size: 11.5px; color: var(--faint); line-height: 1.7; margin-top: 5px; border-top: 1px dashed var(--edge); padding-top: 5px; }
.lg-case { font-size: 12.5px; color: var(--soft); line-height: 1.7; margin-top: 7px; padding-top: 6px; border-top: 1px dashed var(--edge); }
.lg-case:first-child { border-top: 0; margin-top: 0; padding-top: 0; }
.lg-case-t { font-size: 12px; color: var(--faint); margin-top: 3px; line-height: 1.7; }
.lg-warn { border-color: rgba(138, 109, 47, .4); background: rgba(138, 109, 47, .06); color: #8a5a2b; font-size: 12.5px; line-height: 1.7; }

/* 学习对话 */
.learn-chat { max-height: 300px; overflow-y: auto; display: grid; gap: 8px; padding: 4px 0 8px; }
.lc-empty { font-size: 12.5px; color: var(--faint); line-height: 1.8; text-align: center; padding: 12px 8px; border: 1px dashed var(--edge); border-radius: 5px; }
.lc-msg { display: flex; }
.lc-me { justify-content: flex-end; }
.lc-gua { justify-content: flex-start; }
.lc-b {
  max-width: 86%; padding: 8px 12px; border-radius: 8px;
  font-size: 13px; line-height: 1.75; white-space: pre-wrap; word-break: break-word;
}
.lc-me .lc-b { background: rgba(83, 104, 90, .12); color: var(--text); border-top-right-radius: 2px; }
.lc-gua .lc-b { background: var(--paper); border: 1px solid var(--edge); color: var(--text); border-top-left-radius: 2px; }
.lc-at { font-size: 10.5px; color: var(--faint); margin-top: 3px; }
.lc-praise { color: var(--gold); font-weight: 700; }

/* 输入行 + 计数提示 */
.learn-input-row { display: flex; gap: 8px; margin-top: 6px; }
.learn-input-row input {
  flex: 1; min-height: 44px; padding: 8px 12px;
  border: 1px solid var(--edge); border-radius: 4px;
  background: var(--paper); color: var(--text); font-size: 14px;
}
.learn-input-row .div-go { margin-top: 0; min-height: 44px; }
.learn-hint { font-size: 11px; color: var(--faint); margin-top: 6px; line-height: 1.6; }

/* 学习笔记 */
.learn-note { margin-top: 12px; border: 1px solid rgba(138, 109, 47, .4); border-radius: 5px; background: rgba(138, 109, 47, .06); padding: 12px 14px; }
.ln-head { font: 600 14px var(--kai); color: var(--gold); letter-spacing: .08em; margin-bottom: 8px; }
.ln-head small { font: 400 11px var(--sans); color: var(--faint); letter-spacing: .02em; margin-left: 6px; }
.ln-body { font-size: 13px; line-height: 1.9; color: var(--text); white-space: pre-wrap; }
.learn-note-btn {
  display: block; width: 100%; min-height: 44px; margin-top: 12px;
  border: 1px solid rgba(138, 109, 47, .5); border-radius: 4px;
  background: rgba(138, 109, 47, .1); color: var(--gold);
  font: 600 14px var(--kai); letter-spacing: .12em; cursor: pointer;
}
.learn-note-btn:hover { background: rgba(138, 109, 47, .18); }
.learn-note-btn:disabled { opacity: .5; cursor: wait; }

/* 移动端：输入 16px 防 iOS 缩放；竖排输入行 */
@media (max-width: 580px) {
  .learn-input-row { flex-direction: column; }
  .learn-input-row input { font-size: 16px; }
  .learn-input-row .div-go { width: 100%; }
}

/* ============ 研习社·P1 前端联动（入口收敛：顶级导航零新增）2026-09-02 ============ */
/* 问卦页顶·今日共修横条 */
.daily-today-strip {
  display: flex; align-items: center; gap: 12px; padding: 11px 15px; margin-bottom: 12px;
  border: 1px solid var(--edge); border-radius: 7px; background: var(--surface);
  box-shadow: var(--shadow); text-decoration: none; color: var(--text); transition: .2s;
}
.daily-today-strip:hover { border-color: rgba(156, 54, 46, .4); transform: translateY(-1px); }
.dts-yao { display: grid; gap: 2px; flex: none; }
.dts-yao i { display: block; width: 22px; height: 3px; border-radius: 2px; background: var(--red); }
.dts-yao i.yin { background: transparent; box-shadow: inset 0 0 0 2px var(--red); }
.dts-txt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.dts-txt strong { font: 600 14.5px var(--kai); letter-spacing: .05em; color: var(--red); }
.dts-txt small { font-size: 12px; color: var(--ink-soft); line-height: 1.6; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.dts-go { flex: none; font: 500 12.5px var(--kai); color: var(--gold); border: 1px solid var(--gold-line); border-radius: 4px; padding: 4px 10px; white-space: nowrap; }
.daily-today-strip:hover .dts-go { background: var(--gold-bg); }

/* 我的卦帖页·研习档案横条 */
.my-daily-strip {
  display: flex; align-items: center; gap: 12px; padding: 12px 15px; margin: 2px 0 18px;
  border: 1px solid var(--edge); border-radius: 7px; background: var(--surface);
  box-shadow: var(--shadow); text-decoration: none; color: var(--text); transition: .2s;
}
.my-daily-strip:hover { border-color: rgba(138, 109, 47, .5); transform: translateY(-1px); }
.mds-mark { flex: none; width: 34px; height: 34px; border: 1px solid rgba(138, 109, 47, .5); border-radius: 4px; display: grid; place-items: center; color: var(--gold); font: 600 19px var(--kai); transform: rotate(-1.5deg); }
.mds-txt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.mds-txt strong { font: 600 14.5px var(--kai); letter-spacing: .06em; color: var(--gold); }
.mds-txt small { font-size: 12px; color: var(--ink-soft); line-height: 1.6; }
.mds-txt b { color: var(--red); font-weight: 600; }
.mds-go { flex: none; font: 500 12.5px var(--kai); color: var(--red); border: 1px solid rgba(156, 54, 46, .4); border-radius: 4px; padding: 4px 10px; white-space: nowrap; }
.my-daily-strip:hover .mds-go { background: var(--danger-bg); }

@media (max-width: 580px) {
  .daily-today-strip, .my-daily-strip { align-items: flex-start; }
  .dts-txt small { -webkit-line-clamp: 3; }
  .dts-go, .mds-go { display: none; }
}

/* ============ 研习社·P1 日历（每日一爻打卡分布） ============ */
.cal-week {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
  margin-bottom: 6px;
}
.cal-week span {
  text-align: center;
  font-size: 12px;
  color: var(--ink-soft);
  padding: 4px 0;
}
.cal-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
}
.cd {
  aspect-ratio: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  font-size: 13px;
  color: var(--text);
  background: var(--surface);
  border: 1px solid var(--edge);
  min-height: 38px;
  transition: .15s;
}
.cd:hover { background: var(--hover); }
.cd b { font-weight: 600; }
.cd i {
  font-size: 10px;
  color: var(--gold);
  font-style: normal;
  margin-top: 1px;
}
.cd.blank { background: transparent; border-color: transparent; }
.cd.hit { background: rgba(138, 109, 47, .10); border-color: var(--gold-line); }
.cd.today { border-color: var(--red); box-shadow: inset 0 0 0 2px rgba(156, 54, 46, .15); }

@media (max-width: 580px) {
  .cal-week span { font-size: 11px; padding: 3px 0; }
  .cd { font-size: 12px; min-height: 32px; border-radius: 5px; }
  .cd i { font-size: 9px; }
}

/* ============ 研习社·P2 易心纬线（2026-09-02） ============ */
/* 研习社总览页 */
.yanshe-page { max-width: 980px; margin: 0 auto; }
.ys-hero { display: flex; gap: 18px; align-items: center; padding: 24px 26px; margin-bottom: 16px; }
.ys-hero-main h2 { font: 28px var(--kai); color: var(--red); margin: 2px 0 6px; }
.ys-hero-main p { margin: 0; color: var(--soft); font: 14px/1.9 var(--serif); }
.ys-grid { margin-bottom: 16px; }
.ys-entry { display: block; text-decoration: none; color: var(--text); padding: 20px 22px; transition: .2s; }
.ys-entry:hover { transform: translateY(-2px); border-color: rgba(156, 54, 46, .4); }
.ys-entry-head { display: flex; gap: 14px; align-items: center; margin-bottom: 12px; }
.ys-entry-head .eyebrow { color: var(--thunder); }
.ys-entry-head h3 { margin: 2px 0 4px; font: 21px var(--kai); color: var(--text); }
.ys-entry-head small { color: var(--faint); font-size: 12px; }
.ys-yao { display: grid; gap: 2px; flex: none; }
.ys-yao i { display: block; width: 26px; height: 3px; border-radius: 2px; background: var(--red); }
.ys-yao i.yin { background: transparent; box-shadow: inset 0 0 0 2px var(--red); }
.ys-glyph { flex: none; width: 38px; height: 38px; border: 1px solid rgba(138, 109, 47, .5); border-radius: 4px; display: grid; place-items: center; color: var(--gold); font: 600 20px var(--kai); transform: rotate(-1.5deg); }
.ys-ci { margin: 0 0 14px; color: var(--ink-soft); font: 13.5px/1.8 var(--serif); }
.ys-go { font: 500 13px var(--kai); color: var(--red); }
.ys-note { border-top: 1px dashed var(--edge); padding-top: 14px; color: var(--faint); font-size: 12.5px; line-height: 1.9; }
.ys-note b { color: var(--thunder); font-weight: 500; }

/* 易心纬线落地页 */
.yixin-page { max-width: 860px; margin: 0 auto; }
.yx-banner { display: flex; gap: 16px; align-items: center; padding: 22px 24px; border-radius: 8px; color: #fff; margin-bottom: 20px; background: linear-gradient(120deg, #2f5d50 0%, #3a7d6e 60%, #4a9482 100%); }
.yx-seal { flex: none; width: 44px; height: 48px; border: 1px solid rgba(255, 255, 255, .7); border-radius: 4px; display: grid; place-items: center; background: #1d9e75; color: #fff; font: 28px/1 var(--kai); transform: rotate(-1.5deg); box-shadow: inset 0 0 0 3px rgba(255, 255, 255, .12); }
.yx-banner h2 { font: 24px var(--kai); margin: 0 0 6px; }
.yx-banner p { margin: 0; font-size: 13px; line-height: 1.8; opacity: .95; }
.yx-sec { margin-bottom: 18px; }
.yx-sec-h { display: flex; align-items: baseline; gap: 10px; margin-bottom: 12px; }
.yx-sec-h .t { font: 600 17px var(--kai); color: var(--text); letter-spacing: .05em; }
.yx-sec-h .s { font-size: 12px; color: var(--faint); }
.yx-list { display: flex; flex-direction: column; gap: 10px; }
.yx-art { display: flex; gap: 12px; align-items: center; padding: 15px 18px; border: 1px solid var(--edge); border-radius: 7px; background: var(--surface); text-decoration: none; color: var(--text); transition: .2s; }
.yx-art:hover { border-color: rgba(29, 158, 117, .5); transform: translateY(-1px); }
.yx-art-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.yx-art-main strong { font: 600 15.5px var(--kai); color: var(--text); }
.yx-art-main small { font-size: 11.5px; color: var(--jade); }
.yx-art-main p { margin: 3px 0 0; font-size: 12.5px; color: var(--ink-soft); line-height: 1.7; }
.yx-art.soon .yx-art-main { opacity: .55; }
.yx-go { flex: none; font-size: 18px; color: var(--jade); }
.yx-boundary { border: 1px dashed rgba(156, 54, 46, .35); border-radius: 7px; padding: 14px 18px; background: var(--danger-bg); color: var(--ink-soft); font-size: 12.5px; line-height: 1.9; }
.yx-boundary strong { color: var(--red); font-weight: 600; }
.yx-boundary b { color: var(--red); font-weight: 500; }

/* 易心导读正文页 */
.yixin-art-page { max-width: 780px; margin: 0 auto; }
.reader-slim { border: 1px solid var(--edge); border-radius: 7px; background: var(--paper); padding: 34px 40px; box-shadow: var(--shadow); }
.yx-reading h2 { font: 24px var(--kai); color: var(--jade); margin: 26px 0 8px; }
.yx-reading p { font: 15.5px/2.1 var(--serif); color: var(--text); margin: 0 0 16px; }
.yx-reading blockquote { margin: 18px 0; padding: 12px 18px; border-left: 3px solid var(--gold); background: var(--gold-bg); border-radius: 0 5px 5px 0; color: var(--text); font: 15.5px/2 var(--kai); }
.yx-reading blockquote p { margin: 0; }
.yx-reading strong { color: var(--jade); }
.yx-actions { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 24px; padding-top: 16px; border-top: 1px dashed var(--edge); font-size: 13px; }
.yx-actions a { color: var(--red); text-decoration: none; }
.yx-actions a:hover { text-decoration: underline; }
.yx-deep { margin: 16px 0; }
.yx-deep-in { display: flex; gap: 14px; align-items: flex-start; padding: 16px 20px; border: 1px solid rgba(90, 107, 122, .4); border-radius: 7px; background: rgba(90, 107, 122, .07); }
.yx-deep-mark { flex: none; font-size: 22px; color: var(--thunder); }
.yx-deep-in strong { font: 600 15px var(--kai); color: var(--thunder); }
.yx-deep-in p { margin: 4px 0 12px; color: var(--ink-soft); font-size: 13px; line-height: 1.8; }
.yx-deep-actions { display: flex; gap: 10px; flex-wrap: wrap; }

@media (max-width: 580px) {
  .reader-slim { padding: 20px 18px; }
  .yx-actions { flex-wrap: wrap; }
  .yx-banner { flex-direction: column; align-items: flex-start; }
}

/* 打印：只留正文 */
@media print {
  .rail, .topbar, .mobile-head, .mobile-nav, .comments, .audio-player, .reader-actions { display: none !important; }
  .stage { margin: 0; padding: 0; }
  body:before { display: none; }
}

/* ============================================================
   账房·看客统计（v3.6）——此刻在村 / 今日来客 / 三业分档
   ============================================================ */
.ls-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.ls-chip { display: inline-flex; align-items: baseline; gap: 9px;
  border: 1px solid var(--edge); background: var(--paper); color: var(--text);
  border-radius: 20px; padding: 6px 14px; font: 600 13.5px var(--kai); }
.ls-chip i { font: normal 11px var(--sans); color: var(--faint); }
.ls-chip-adm { border-color: var(--gold-line); background: var(--gold-bg); }
.ls-chip-adm i { color: var(--gold); }

.ls-guests { display: grid; grid-template-columns: repeat(auto-fill, minmax(215px, 1fr)); gap: 9px; }
.ls-guest { display: flex; align-items: center; justify-content: space-between; gap: 8px;
  border: 1px solid var(--edge); border-radius: 6px; background: var(--paper);
  padding: 8px 12px; }
.ls-guest .who { display: inline-flex; align-items: baseline; gap: 6px;
  font: 600 15px var(--kai); color: var(--text); }
.ls-guest .to { font: 10px var(--sans); color: var(--gold);
  border: 1px solid var(--gold-line); border-radius: 9px; padding: 0 6px; }
.ls-guest .tags { display: inline-flex; gap: 5px; flex-wrap: wrap; }
.ls-tag { display: inline-block; font: 11px var(--sans); border-radius: 9px; padding: 1px 8px;
  background: rgba(83, 104, 90, .12); color: var(--jade); }
.ls-tag-read { background: var(--danger-bg); color: var(--danger); }
.ls-tag-div  { background: rgba(90, 107, 122, .12); color: var(--thunder); }
.ls-tag-yi   { background: var(--pass-bg); color: var(--pass); }
.ls-tag-com  { background: var(--gold-bg); color: var(--gold); }
.ls-tag-adm  { background: var(--gold-bg); color: var(--gold); }
.ls-num { font: 600 17px var(--num); color: var(--danger); }
