:root{
  --bg:#0e1018; --card:#161a27; --card2:#1c2133; --line:#2a3147; --line2:#3a4260;
  --gold:#d4af37; --gold2:#d3c193; --txt:#e2e6f2; --sub:#aab2cc; --dim:#7d85a2;
  --lu:#4cc38a; --quan:#e07850; --ke:#5b9bd5; --ji:#d45d79;
  --red:#c0392b;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--txt);font:15px/1.65 -apple-system,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  background-image:radial-gradient(ellipse 80% 50% at 50% -10%,rgba(212,175,55,.10),transparent);}
.wrap{max-width:520px;margin:0 auto;padding:0 12px 40px}
header{text-align:center;padding:26px 0 6px}
header .logo{font-size:34px;line-height:1}
header h1{font:700 21px/1.4 "Noto Serif SC","Songti SC","STSong",serif;
  background:linear-gradient(180deg,#e9dcb3,#c9a63a 70%,#9c7a26);-webkit-background-clip:text;background-clip:text;color:transparent;
  letter-spacing:1px;margin-top:8px}
header .sub{color:var(--sub);font-size:12px;letter-spacing:2px;margin-top:4px}
header .badge{display:inline-block;margin-top:8px;font-size:11px;color:var(--gold);border:1px solid rgba(212,175,55,.35);
  border-radius:99px;padding:2px 12px;background:rgba(212,175,55,.07)}
/* 标签栏 */
.tabs{display:flex;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:5px;margin:16px 0 14px;position:relative;gap:5px}
.tab{flex:1;border:none;background:transparent;color:var(--sub);font-size:15px;font-weight:600;padding:9px 0;border-radius:10px;cursor:pointer;transition:.25s;letter-spacing:1px}
.tab.active{background:linear-gradient(135deg,#3a3116,#2a2410);color:var(--gold2);box-shadow:0 0 0 1px rgba(212,175,55,.4),0 4px 14px rgba(212,175,55,.12)}
.tab:not(.active):active{background:var(--card2)}
/* 卡片 */
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:14px}
.card h3{font-size:14px;color:var(--gold2);letter-spacing:1px;margin-bottom:10px;display:flex;align-items:center;gap:7px}
.card h3::before{content:"◆";font-size:9px;color:var(--gold)}
.card h3 small{color:var(--dim);font-weight:400;font-size:11px;margin-left:auto}
/* 表单 */
.frow{display:flex;gap:10px;margin-bottom:11px;flex-wrap:wrap}
.seg{display:flex;background:var(--card2);border:1px solid var(--line);border-radius:10px;padding:3px;gap:3px}
.seg label{flex:1;text-align:center;padding:7px 4px;border-radius:8px;cursor:pointer;font-size:13px;color:var(--sub);transition:.2s;white-space:nowrap}
.seg input{display:none}
.seg input:checked+span{color:#0e1018;font-weight:700}
.seg label:has(input:checked){background:linear-gradient(135deg,#e8d48b,#d4af37);color:#0e1018;font-weight:700}
/* ★ 未上线选项（.seg-soon）：中州派下架后的置灰样式。
   ------------------------------------------------------------
   背景：此前中州派是一个可点但无效果的按钮，用户会当成 bug。
   现状：星表无可靠依据，按红线不做假差异，改为下架 + 显式标注。

   要点：
     · 只降透明度与去手型光标，**不改字号/内边距/圆角**——
       与同排「钦天」「三合南派」保持完全一致的占位尺寸，
       避免三段控件宽度不等导致排版跳变；
     · `cursor:not-allowed` + 保留 title，鼠标悬停给出「暂未上线」原因；
     · <em> 是行内小标（即将上线），字更小更淡，不抢主文案；
     · 必须覆盖 :has() 高亮：本元素内无 input，天然不会命中选中态。 */
.seg label.seg-soon{cursor:not-allowed;opacity:.5;justify-content:center}
.seg label.seg-soon:hover{border:none}
.seg label.seg-soon span{display:inline-flex;align-items:center;gap:5px}
.seg label.seg-soon em{font-style:normal;font-size:10px;font-weight:400;
  color:var(--warn);border:1px solid rgba(224,176,80,.45);border-radius:99px;padding:0 6px;
  letter-spacing:.3px;white-space:nowrap}
html[data-theme="light"] .seg label.seg-soon em{color:#8a6b1e;border-color:rgba(138,107,30,.45)}
.fitem{display:flex;flex-direction:column;gap:4px;flex:1;min-width:70px}
.fitem label{font-size:11px;color:var(--dim);letter-spacing:1px;padding-left:2px}
.georow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
.georow select{padding:9px 16px 9px 6px;font-size:13px}
/* R29：三框列头（省份/城市/区县）——与 georow 同列宽对齐，一眼知道每框选什么 */
.geocolhead{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;padding:0 2px;margin-bottom:-1px}
.geocolhead span{font-size:10.5px;color:var(--dim);letter-spacing:1px}
.georow #inTown{grid-column:1/-1;padding:9px 8px;margin-top:5px}
/* ============================================================
   ★ 排盘表单「出生地 / 四化流派」两列对齐（第卅九阶段）
   ------------------------------------------------------------
   问题（Playwright 实测，1440px / 820px / 390px 均复现）：
     左列结构 = 出生地标签 → 列头(省份/城市/区县) → 三个下拉框 → 提示
     右列结构 = 四化流派标签 → seg 按钮组
     两列**层级数不同**（左 3 层 / 右 2 层），标签自然落在不同高度：
       · 桌面端「四化流派」标签顶比左列列头高 25px（抢在列头上方）；
       · 移动端「出生地」标签会换行成 3 行（43.8px），右列标签仅 1 行，
         错位扩大到 47.8px —— 正是用户看到的「一高一低错开」。

   修法（试过 subgrid，实测**不采用**）：
     subgrid 要求父级显式声明 6 条行轨道，且每个子项还要逐个指定
     grid-row，否则全部压进第 1 条轨道（实测 rows 只剩 1 个值，
     所有元素挤成同一高度）。既依赖子元素顺序、又脆，放弃。

     最终采用「占位块 + 同一行高变量」：
     · 右列顶部加一个占位块 .fitem-cap，其高度 = 左列标签行高，
       使右列「四化流派」标签正好落到左列「省份/城市/区县」列头那一行；
     · seg 按钮组高度锁定为与左列下拉框一致（--ctrl-h），
       从而底边自然对齐。

   ★ 为什么占位块高度用 CSS 变量而不是写死：
     移动端「出生地」标签换行后行高从 21px 变成 43.8px。
     变量在两个断点分别取值，且与 .georow select / .seg label 的
     padding、font-size 同源 —— 字号若再调整，只需改一处变量。
     实测两个断点下差值均为 0.0px。

   ★ 作用域收窄到 .frow-geo：其他 .frow（年月日/时分/时辰等）完全不受影响。
   ============================================================ */

/* --ctrl-h：控件行统一高度。左列三个下拉框与右列 seg 共用，两边必然等高 */
.frow-geo{--ctrl-h:37px;--cap-h:21px}
/* 左列下拉框也锁定 --ctrl-h —— 与 seg 用同一个值，两边基准一致，
   否则「各自内容算高」仍会有 1~8px 差（实测 seg 比 select 高 6~8px）。 */
.frow-geo .georow select{height:var(--ctrl-h)}
/* 占位块：撑出与左列标签等高的空白，把右列标签推到列头那一行。
   visibility:hidden + pointer-events:none —— 纯占位，不显示、不参与点击与朗读。 */
.fitem-cap{height:var(--cap-h);pointer-events:none;visibility:hidden;flex:0 0 auto}
/* seg：锁定为与下拉框同高（--ctrl-h），底边自然对齐。
   margin-top:-2px 是为了抵消左列 .geocolhead 的 margin-bottom:-1px 与
   两侧 gap 差异 —— 实测不加时 seg 底边比下拉框低 1.9px（桌面）/3px（移动），
   加后各断点均为 0.0px。属视觉对齐的最后一档微调，不影响点击区域。 */
.frow-geo .seg{height:var(--ctrl-h);padding-top:0;padding-bottom:0;margin-top:-2px}
.frow-geo .seg label{height:100%;display:flex;align-items:center;justify-content:center;min-height:0}

/* 移动端（≤760px）：#formCard 内 select/seg label 有 min-height:44px 与
   16px 字号规则，控件行整体变高，--ctrl-h 同步上调保持与下拉框等高。
   ★ --cap-h 在本断点**仍取 21px**（不跟到 43.8）：
     实测 561~760px 区间左列「出生地」标签仍只占 21.9px（未换行），
     若此处把占位块也调成 43.8px，右列标签会被多推 21.9px 反而错开
     （全区间扫描实测标签顶差 21.9px）。标签真正换行到 43.8px 是
     ≤560px 区间，而那个断点已改为上下排布、占位块 display:none，
     两处不冲突。 */
@media (max-width:760px){
  .frow-geo{--ctrl-h:44px}
  .frow-geo .seg label{min-height:0}
}
/* 窄屏（≤560px）：两列并排时右列只剩 100~131px，而三个按钮最少需
   226px（钦天 38 + 三合南派 70 + 中州派 114），实测「中州派+即将上线」
   被压扁裁切。故此断点让右列**独占整行**，出生地同样整行，
   两块上下排布、各自内部对齐，横向对齐不再适用。 */
@media (max-width:560px){
  .frow-geo{flex-wrap:wrap}
  /* ★ 必须 !important：HTML 里两个 .fitem 带内联 style="flex:1" / "flex:1.3"，
     内联样式优先级高于任何选择器，不加则规则被内联值压掉
     （实测不加时宽度仍 100.9~131.3px，独占整行没生效）。 */
  .frow-geo > .fitem{flex:1 1 100% !important}
  /* 独占整行后不再需要为左列标签预留高度，占位块收起 */
  .frow-geo .fitem-cap{display:none}
}
.zitog{display:inline-block;margin-left:5px;font-size:10px;color:#d9c07a;background:rgba(212,175,55,.12);
  border:1px solid rgba(212,175,55,.35);border-radius:6px;padding:1px 6px;cursor:pointer;vertical-align:middle;white-space:nowrap}
.zitog i{font-style:normal;margin-left:4px;opacity:.75;text-decoration:underline}
/* R28：夜子时流派说明默认隐藏，点「流派」徽章展开（不点不占位，出生时刻卡恒为一行高） */
.zinfo .zinotedrop{display:block;width:100%;font-size:10.5px;color:var(--sub);line-height:1.6;text-align:left;margin-top:3px}
.zinfo .zinotedrop i{font-style:normal;color:#d9c07a;text-decoration:underline;cursor:pointer;display:inline-block}
.geohint{font-size:10px;color:var(--dim);padding-left:2px;line-height:1.5}
.geohint.okhint{color:#7fc08a}
.geohint.warnhint{color:#e0a45c}
.geoav{margin-top:5px}
.geoav span{font-size:10.5px;color:var(--dim);cursor:pointer;border-bottom:1px dashed var(--line);padding-bottom:1px}
.georow2.showit{margin-top:6px}
.lonclear{font-size:10.5px;color:var(--dim);cursor:pointer;margin-left:6px;align-self:center;border-bottom:1px dashed var(--line)}
/* R18：出生时刻（时辰+分钟）与手动经度 */
.georow2{display:flex;align-items:center;gap:6px;margin-top:5px}
.georow2 input{flex:1;text-align:left;padding:8px 9px;font-size:12px}
.lonunit{font-size:11px;color:var(--dim);flex:0 0 auto}
.tshint{margin-top:6px;font-size:10px;line-height:1.6;color:#a08c62;background:rgba(212,175,55,.07);
  border-left:2px solid var(--gold);border-radius:0 6px 6px 0;padding:5px 8px}
.tshint b{color:var(--gold);font-weight:700}
input[type=number],select{background:var(--card2);border:1px solid var(--line);color:var(--txt);border-radius:10px;
  padding:9px 8px;font-size:15px;width:100%;text-align:center;appearance:none;outline:none}
input[type=number]:focus,select:focus{border-color:var(--gold)}
select{background-image:linear-gradient(45deg,transparent 50%,var(--sub) 50%),linear-gradient(135deg,var(--sub) 50%,transparent 50%);
  background-position:calc(100% - 16px) 55%,calc(100% - 11px) 55%;background-size:5px 5px;background-repeat:no-repeat}
/* R23：时分合并模块 —— 一个标签下「时 + 分」两个下拉拼成同一模块框 */
.hmrow{display:flex;gap:5px}
/* R26b：标签各自独立——时框上方「时」、分框上方「分」（与「年/月/日」同款），
   框内只留纯数字，单位字不再出现在框里，零重复 */
.hwrap{position:relative;flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.hmrow select{flex:1;min-width:0;width:100%;padding:9px 30px 9px 12px;font-size:14px;text-align:center;text-align-last:center;background-position:calc(100% - 10px) 55%,calc(100% - 5px) 55%}
.gorow{display:flex;gap:8px;margin-top:4px}
#btnGo{flex:1;border:none;border-radius:12px;padding:13px;font-size:17px;font-weight:800;letter-spacing:6px;cursor:pointer;
  background:linear-gradient(135deg,#f0dd9a 0%,#d4af37 45%,#b8902c 100%);color:#201804;
  box-shadow:0 6px 20px rgba(212,175,55,.28);transition:.2s}
#btnGo:active{transform:scale(.98)}
.zkong{margin-top:4px;font-size:10.5px;color:#8a7a5c;letter-spacing:1px;border-top:1px dashed #d8cbae;padding-top:3px}
.gxcard{display:flex;flex-direction:column;gap:6px}
.gxrow{display:flex;gap:8px;font-size:13px;line-height:1.6}
/* R26：这三块原是浅色主题遗留色（#3a332a/#4a4032 深褐、#8a6d3b 暗褐），
   在深底上几乎不可读 —— 统一提亮为「标签金 · 正文白 · 注释灰」的全局口径 */
.gxrow b{flex:0 0 64px;color:var(--gold2);font-weight:700}
.gxrow span{flex:1;color:var(--txt)}
.gxnote{font-size:11px;color:var(--sub);line-height:1.6;border-top:1px dashed var(--line);padding-top:6px;margin-top:2px}
.sharow{display:flex;gap:8px;font-size:12.5px;line-height:1.7}
.sharow b{flex:0 0 44px;color:var(--gold2)}
.sharow span{flex:1;color:var(--txt)}
.thmain{display:flex;align-items:center;gap:8px;margin-bottom:2px}
.thmain b{color:var(--gold2);font-size:13px}
.thgan{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;background:#2b2b2b;color:#f5d9a8;border-radius:7px;font-size:16px;font-weight:800}
.toast{background:#3a1520;color:#ff9a9a;border:1px solid #6e2a3a;border-radius:10px;padding:10px 14px;font-size:13px;margin-bottom:11px;display:none}
.hint{font-size:11px;color:var(--dim);margin-top:9px;line-height:1.7}
/* 基本信息 */
.zinfo{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;font-size:12.5px}
.zinfo div{background:var(--card2);border-radius:9px;padding:7px 10px;display:flex;justify-content:space-between;gap:6px}
.zinfo b{color:var(--dim);font-weight:400;white-space:nowrap}
.zinfo span{color:var(--gold2);font-weight:600;text-align:right}
/* R24：信息卡分级与长条卡 —— 核心必看与拓展研究在视觉上分层，长内容整行横排不再竖堆 */
.zinfo div.wide{grid-column:1/-1}
.zinfo div.wide span{flex:1;text-align:left;white-space:normal;line-height:1.55}
/* R25：弱化卡与主卡同色系（原用 --txt 纯白，与上方金色字割裂像两套 UI），
   仅以「虚线框 + 极淡底 + 略降透明度」表达层级，不再换一套文字颜色 */
.zinfo div.dim{background:rgba(255,255,255,.025);border:1px dashed var(--line)}
.zinfo div.dim b{color:var(--sub)}
.zinfo div.dim span{color:var(--gold2);font-weight:600;opacity:.92}
.zinfo .zgroup{grid-column:1/-1;background:none;border:0;border-radius:0;padding:11px 2px 2px;color:var(--sub);font-size:11px;letter-spacing:2px;display:flex;align-items:center;gap:8px}
.zinfo .zgroup::after{content:'';flex:1;height:1px;background:var(--line)}
/* 盘面 */
.board{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;margin-top:4px}
.pcell{background:var(--card2);border:1px solid var(--line);border-radius:9px;padding:5px 4px 6px;min-height:112px;
  display:flex;flex-direction:column;overflow:hidden;position:relative;cursor:pointer;transition:box-shadow .18s,border-color .18s,background .18s}
.pcell:active{transform:scale(.985)}
/* 三方四正高亮 */
.pcell.hl{background:linear-gradient(160deg,#2b2412,#1d1a10);border-color:var(--gold);box-shadow:0 0 0 1px var(--gold),0 0 14px rgba(212,175,55,.28);z-index:2}
.pcell.hl-tri{background:linear-gradient(160deg,#231d33,#1a1725);border-color:#8b7bc4;box-shadow:0 0 0 1px #8b7bc4,0 0 10px rgba(139,123,196,.22)}
.pcell.hl-opp{background:linear-gradient(160deg,#1d2b33,#151d22);border-color:#5b9bd5;box-shadow:0 0 0 1px #5b9bd5,0 0 10px rgba(91,155,213,.2)}
.pcell.faded{opacity:.42}
.hlbadge{position:absolute;top:2px;left:3px;font-size:8px;font-weight:700;padding:0 3px;border-radius:3px;letter-spacing:0;z-index:3}
.hlbadge.self{background:var(--gold);color:#201804}
.hlbadge.tri{background:#8b7bc4;color:#fff}
.hlbadge.opp{background:#5b9bd5;color:#fff}
/* 辅星默认折叠 */
.paux{display:none}
.paux-more{position:absolute;right:3px;bottom:2px;font-size:8.5px;color:var(--dim);background:rgba(255,255,255,.05);
  border:1px solid var(--line);border-radius:7px;padding:0 4px;line-height:1.5;font-weight:600}
.paux-more b{color:var(--sub);font-weight:700}
/* 六煞：辅星可折叠，六煞必须露出（羊陀火铃空劫） */
.psha{position:absolute;right:3px;bottom:16px;display:flex;gap:2px;z-index:2}
.psha i{font-style:normal;font-size:9px;line-height:1.4;font-weight:700;padding:0 2px;border-radius:3px;
  background:rgba(255,90,90,.16);border:1px solid rgba(255,120,120,.5);color:#ffb0b0}
/* 无主星（空宫）醒目提示 */
.kgtip2{margin-top:auto;font-size:9px;line-height:1.45;color:#ecd3a4;background:rgba(212,175,55,.14);
  border:1px dashed rgba(212,175,55,.55);border-radius:5px;padding:2px 3px;text-align:center;font-weight:600}
.kgtip2 b{display:block;color:#eed9aa;font-weight:800}
.kgtip2 i{font-style:normal;color:#8a8fa4;font-weight:400}
.pdx{font-size:9px;color:var(--dim);align-self:flex-end}
.pname{font-size:12px;font-weight:700;color:var(--gold2);letter-spacing:1px}
.pname em{font-style:normal;font-size:9px;color:var(--ji);border:1px solid var(--ji);border-radius:3px;padding:0 2px;margin-left:3px}
/* 白话锚点：宫名旁的生活化对照小字（小白友好，纯展示层） */
.pname .pplain{font-style:normal;font-size:9.5px;color:var(--dim);font-weight:400;letter-spacing:0;margin-left:4px;opacity:.9}
/* 流派切换差异高亮：标出本次切换后四化落宫发生变化的宫格（大师核验用） */
.pcell.cs-sihua-diff{
  animation:csSihuaDiff 2.6s ease-out;
  border-radius:10px;
}
@keyframes csSihuaDiff{
  0%{box-shadow:0 0 0 0 rgba(232,200,106,.85);border:2px solid rgba(232,200,106,.95)}
  60%{box-shadow:0 0 0 6px rgba(232,200,106,.22);border:2px solid rgba(232,200,106,.9)}
  100%{box-shadow:0 0 0 0 rgba(232,200,106,0);border:2px solid rgba(232,200,106,0)}
}
@media (prefers-reduced-motion:reduce){
  .pcell.cs-sihua-diff{animation:none;outline:2px solid var(--gold2,#e8c86a)}
}
.pgz{font-size:10px;color:var(--sub);margin:1px 0 2px}
/* 纳音五行配色（界面通用） */
.wx{font-style:normal;display:inline-block;padding:0 4px;border-radius:3px;font-weight:700;line-height:1.55;white-space:nowrap}
.wx-jin{color:#e8c86a;background:rgba(232,200,106,.13)}
.wx-mu{color:#5fd39b;background:rgba(95,211,155,.13)}
.wx-shui{color:#6fb3e0;background:rgba(111,179,224,.13)}
.wx-huo{color:#f0895f;background:rgba(240,137,95,.13)}
.wx-tu{color:#dcb689;background:rgba(220,182,137,.13)}
.pny{font-size:8px;padding:0 3px;margin-left:2px;font-weight:600}
/* 空宫（宫无正曜）标记 */
.pcell.kong{background:repeating-linear-gradient(135deg,rgba(255,255,255,.028) 0 6px,transparent 6px 12px),var(--card2);
  border-style:dashed;border-color:rgba(212,175,55,.42)}
.pcell.kong .pname{color:#d0b978}
.kgTag{display:inline-block;font-size:8.5px;font-weight:700;color:#201804;background:linear-gradient(135deg,#f0dd9a,#d4af37);
  border-radius:3px;padding:0 3px;margin-left:3px;vertical-align:middle;letter-spacing:0}
.pstars .kgTip{font-size:9.5px;color:#d2b877;font-weight:600;letter-spacing:0}
.pstars .kgTip b{color:#fff5d6;font-weight:700}
.kgcard{display:block}
.kgitem{border:1px dashed rgba(212,175,55,.4);border-radius:10px;padding:9px 11px;margin-bottom:9px;background:var(--card2)}
.kgitem.k-bad{border-color:rgba(224,86,86,.45)}
.kgitem.k-good{border-color:rgba(95,211,155,.45)}
.kghd{font-size:13px;font-weight:700;color:var(--gold2);margin-bottom:4px;display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.kghd .lv{font-size:10.5px;font-weight:700;padding:1px 6px;border-radius:9px}
.kghd .lv.good{color:#5fd39b;background:rgba(95,211,155,.15)}
.kghd .lv.mid{color:#d8c9a8;background:rgba(216,201,168,.13)}
.kghd .lv.bad{color:#ff8b8b;background:rgba(224,86,86,.15)}
.kgline{font-size:12px;line-height:1.85;color:var(--sub)}
.kgline b{color:var(--gold2);font-weight:700}
.kgline .em{color:#e5d9bd}
.kgstep{font-size:11.5px;color:var(--dim);line-height:1.75;padding-left:2px}
.kgstep i{font-style:normal;color:var(--gold2);font-weight:700}
.kgwarn{font-size:11.5px;color:#ffb4b4;line-height:1.75;margin-top:4px}
.kgrule{font-size:11.5px;color:var(--dim);line-height:1.85;background:rgba(255,255,255,.03);border-left:2px solid rgba(212,175,55,.5);
  padding:7px 10px;border-radius:0 7px 7px 0;margin-bottom:10px}
.kgrule b{color:var(--gold2)}
/* 宫位详情弹窗 */
.mask{position:fixed;inset:0;background:rgba(6,8,14,.66);z-index:60;display:none;align-items:flex-end;justify-content:center;
  backdrop-filter:blur(2px)}
.mask.on{display:flex}
.modal{background:var(--card);border:1px solid var(--line2);border-radius:16px 16px 0 0;width:100%;max-width:520px;
  max-height:82vh;overflow-y:auto;padding:16px 15px 22px;box-shadow:0 -8px 40px rgba(0,0,0,.5);animation:up .22s ease}
@keyframes up{from{transform:translateY(30px);opacity:.4}to{transform:translateY(0);opacity:1}}
.mhd{display:flex;align-items:center;gap:8px;margin-bottom:10px;padding-bottom:9px;border-bottom:1px solid var(--line)}
.mhd h4{font-size:16px;color:var(--gold2);font-weight:700;letter-spacing:1px}
.mhd .mgz{font-size:11px;color:var(--sub)}
.mhd .mcls{margin-left:auto;border:1px solid var(--line2);background:var(--card2);color:var(--sub);border-radius:8px;
  width:28px;height:28px;font-size:16px;line-height:1;cursor:pointer;flex-shrink:0}
.msec{margin-bottom:11px}
.msec h5{font-size:12px;color:var(--gold2);margin-bottom:5px;letter-spacing:.5px;display:flex;align-items:center;gap:5px}
.msec h5::before{content:"▍";color:var(--gold);font-size:10px}
.mrow{font-size:12.5px;line-height:1.8;color:var(--sub)}
.mrow b{color:var(--txt);font-weight:700}
.mrow .em{color:#d3c193}
.mstars{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:3px}
.mstars i{font-style:normal;font-size:12px;background:var(--card2);border:1px solid var(--line);border-radius:6px;padding:1px 6px;color:var(--txt)}
.mstars i.mn{border-color:rgba(212,175,55,.5);color:#f0e2b4;font-weight:700;background:rgba(212,175,55,.1)}
.mnote{font-size:11.5px;color:var(--dim);line-height:1.75;background:rgba(255,255,255,.03);border-radius:8px;padding:7px 9px}
.mstars i.maux{font-weight:600}
.mstars i.maux.sha{border-color:rgba(255,120,120,.5);color:#ffb0b0;background:rgba(255,90,90,.1)}
.auxnote{font-size:11.5px;line-height:1.7;margin-bottom:2px}
.auxnote b{color:var(--gold2);margin-right:5px;font-weight:700}
.lnadd{display:flex;flex-wrap:wrap;gap:2px;margin-top:2px;align-items:center}
.lnh{font-style:normal;font-size:8px;font-weight:700;border-radius:3px;padding:0 3px;line-height:1.5}
/* ★ 2026-10-16 统一盘面字体（用户实机反馈「丙午流年」显示为斜体）
   这行「XX流年」原用 <em> 渲染，而 <em> 浏览器默认 italic，
   且盘面内**唯独漏了**针对它的 font-style 覆盖 —— 相邻的 .pname em 早已有
   font-style:normal（见下方），说明该问题在本项目被修过一处、漏了一处。
   现统一处理：
     · 渲染层改用 <i class="lngz">（与 .lnh 同族）；
     · 样式层显式 font-style:normal，**同时兼容仍在 DOM 里的旧 <em>**，
       即使用户浏览器缓存了旧版 HTML 也不会再看到斜体；
     · 字号 9px，与同行 .lnh（8px）属同一档，避免大小突兀。 */
/* ★ 全局兜底：盘面与弹层内一律正体。
   项目里<em> 被当作「弱强调标签」大量使用（约 20+ 处），且分散在 engine.css 的
   各个选择器里逐个声明 font-style:normal —— 已确认曾漏掉 .lnadd em 这一处，
   导致「XX流年」在盘面里显示为斜体、与全站字体不统一。
   为杜绝同类遗漏再次发生，这里加一条**兜底规则**：只影响引擎盘面区域
   （.zwpal / .pcell 等），把 em 的斜体压掉；具体字号、颜色仍由各自的类决定，
   不改变任何既有视觉设计。 */
.zwpall em,.pcell em,.modal em,.mrow em,.kgline em{font-style:normal}
.lngz,.lnadd em{font-style:normal;font-size:9px;font-weight:600;
  color:var(--dim);letter-spacing:0;line-height:1.5;margin-right:1px}
.lnh-禄{color:var(--lu);border:1px solid var(--lu);background:rgba(76,195,138,.1)}
.lnh-权{color:var(--quan);border:1px solid var(--quan);background:rgba(224,120,80,.1)}
.lnh-科{color:var(--ke);border:1px solid var(--ke);background:rgba(91,155,213,.1)}
.lnh-忌{color:var(--ji);border:1px solid var(--ji);background:rgba(212,93,121,.1)}
/* 术语释义 */
/* ★ 第一批 P1-1：术语标记改为「点击跳详情单页」+ 右侧 ? 角标。
   cursor 由 help 改为 pointer —— 行为已从"看悬浮说明"变为"整页跳转"，
   光标必须如实反映可点击性，否则用户会以为只是悬停提示。
   角标用 ::after 纯 CSS 生成，不进入 DOM 文本，不影响读屏与复制。 */
.term{
  position:relative;border-bottom:1px dotted var(--gold);cursor:pointer;color:inherit;
  padding-right:11px;                 /* 为角标留位，避免与后续文字贴合 */
}
.term::after{
  content:"?";
  position:absolute;right:0;top:-1px;
  font-size:9px;line-height:1;
  width:11px;height:11px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  color:var(--gold);background:rgba(212,175,55,.14);
  border:1px solid rgba(212,175,55,.4);
  pointer-events:none;                /* 角标不拦截点击，整块仍归 .term */
}
.term:active{background:rgba(212,175,55,.2)}
.term:hover{background:rgba(212,175,55,.1)}
/* 浅色主题下角标描边加深，保证可见 */
html[data-theme="light"] .term::after{border-color:rgba(138,107,30,.5)}
.tipcard{font-size:11.5px;color:var(--dim);line-height:1.8;background:rgba(255,255,255,.03);border-left:2px solid rgba(212,175,55,.45);
  padding:7px 10px;border-radius:0 7px 7px 0;margin-top:8px}
.tipcard b{color:var(--gold2)}
.tipcard em{font-style:normal;color:var(--sub)}
/* 解读深度切换 */
.modeseg{display:flex;gap:6px;margin-bottom:10px}
.modeseg button{flex:1;border:1px solid var(--line);background:var(--card2);color:var(--sub);border-radius:10px;
  padding:8px 4px;font-size:13px;cursor:pointer;transition:.2s;font-family:inherit;line-height:1.4}
.modeseg button i{font-style:normal;display:block;font-size:10px;color:var(--dim);font-weight:400;margin-top:1px}
.modeseg button.on{border-color:var(--gold);color:var(--gold2);background:rgba(212,175,55,.12);font-weight:700}
.modeseg button.on i{color:rgba(232,212,139,.7)}
/* 年度选择已激活 */
.ynlist span{cursor:pointer}
.ynlist span.selyear{border-color:var(--gold);color:var(--gold2);background:rgba(212,175,55,.12);font-weight:700}
/* 领域断事卡片留白优化 */
.domcard p{line-height:1.75;letter-spacing:.2px}
.domcard .dg{padding:4px 0}
.pgz{display:flex;align-items:center;gap:1px;flex-wrap:nowrap}
.dny{display:block;font-size:8.5px;padding:0 3px;margin-top:2px;font-weight:600}
.nybox{display:flex!important;flex-direction:column;align-items:flex-start;gap:1px}
.nybox .wx{font-size:11.5px}
.nybox em{font-style:normal;font-size:9.5px;color:var(--dim);font-weight:400}
.pstars{display:flex;flex-wrap:wrap;gap:1px 4px}
.pstars .st{font-size:13px;color:#ddd0a8;font-weight:700;line-height:1.3}
.paux{font-size:9.5px;color:var(--dim);line-height:1.5;margin-top:auto}
.paux span{margin-right:3px;white-space:nowrap}
.hz{font-style:normal;font-size:9px;border-radius:3px;padding:0 2px;margin-left:1px;vertical-align:2px}
.hz-禄{color:var(--lu);border:1px solid var(--lu)}
.hz-权{color:var(--quan);border:1px solid var(--quan)}
.hz-科{color:var(--ke);border:1px solid var(--ke)}
.hz-忌{color:var(--ji);border:1px solid var(--ji)}
/* 中宫（R15 重排）：两栏式文字布局，标签左 · 内容右，字号与行距统一 */
.pinfo{grid-column:span 2;grid-row:span 2;display:flex;align-items:center;justify-content:center;
  padding:7px 8px;overflow:hidden;background:linear-gradient(145deg,#20180a,#171208);border-color:#4d3f16}
.pmid{width:100%;display:flex;flex-direction:column;gap:5px}
.mi-t{display:flex;align-items:center;gap:5px;font-size:12.5px;font-weight:800;color:var(--gold2);letter-spacing:.6px;
  padding-bottom:4px;border-bottom:1px solid rgba(212,175,55,.3)}
.mi-t i{font-style:normal;font-size:10px;font-weight:600;color:var(--sub);background:rgba(255,255,255,.06);
  border:1px solid var(--line);border-radius:4px;padding:1px 4px}
.mi-g{display:flex;flex-direction:column;gap:1px}
.mi-r{display:flex;align-items:baseline;justify-content:space-between;gap:6px;line-height:1.55}
.mi-r em{font-style:normal;font-size:10.5px;color:var(--dim);font-weight:400;flex:0 0 auto}
.mi-r span{font-size:11px;color:var(--gold2);font-weight:700;text-align:right;letter-spacing:.3px}
.mi-b{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding-top:5px;
  border-top:1px dashed rgba(212,175,55,.24)}
.mi-b>em{font-style:normal;font-size:10.5px;color:var(--dim);font-weight:400;flex:0 0 auto;padding-top:1px}
.mi-shv{font-size:11.5px;color:#ecdcae;font-weight:700;line-height:1.45;text-align:right;letter-spacing:.3px}
.mi-ny .nybox{align-items:flex-end}
/* 四化卡 */
.shrow{display:flex;gap:10px;padding:9px 4px;border-bottom:1px dashed var(--line)}
.shrow:last-child{border-bottom:none}
.shtag{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:800;flex-shrink:0}
.sh-禄 .shtag{background:rgba(76,195,138,.12);color:var(--lu);border:1px solid var(--lu)}
.sh-权 .shtag{background:rgba(224,120,80,.12);color:var(--quan);border:1px solid var(--quan)}
.sh-科 .shtag{background:rgba(91,155,213,.12);color:var(--ke);border:1px solid var(--ke)}
.sh-忌 .shtag{background:rgba(212,93,121,.12);color:var(--ji);border:1px solid var(--ji)}
.shbody{flex:1}
.shbody b{color:var(--txt);font-size:13.5px}
.shbody p{font-size:12px;color:var(--sub);margin-top:2px}
/* 表格 */
.tbl{width:100%;border-collapse:collapse;font-size:11.5px}
.tbl th{color:var(--dim);font-weight:400;padding:5px 4px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:6px 4px;border-bottom:1px solid rgba(42,49,71,.5);text-align:center;vertical-align:middle}
.tbl td:first-child,.tbl th:first-child{text-align:left}
.tbl tr.cur td{background:rgba(212,175,55,.10);color:var(--gold2)}
/* 大运古法表：分运配色 */
.dytbl th i{display:block;font-style:normal;font-size:8.5px;color:var(--dim);font-weight:400}
.tbl td.good{color:#5fd39b}.tbl td.bad{color:#f0895f}.tbl td.mix{color:#e8c86a}.tbl td.mid{color:var(--sub)}
.tbl td.good .dny,.tbl td.bad .dny,.tbl td.mix .dny{color:inherit}
.dySplit{font-size:11.5px;color:var(--gold2);font-weight:700}
.tbl i{font-style:normal;color:var(--dim);font-size:10px}
.tbl .self td{background:rgba(76,195,138,.07)}
/* 选择器 */
.selrow{display:flex;gap:8px;align-items:center;margin-bottom:10px;flex-wrap:wrap}
.selrow label{font-size:12px;color:var(--sub);white-space:nowrap}
.selrow select{flex:1;min-width:100px;text-align:left;padding:7px 26px 7px 9px;font-size:13px}
.dx4h{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.dx4h span{background:var(--card2);border:1px solid var(--line);border-radius:8px;padding:4px 9px;font-size:12px;color:var(--sub)}
.dx4h b{color:var(--gold2)}
.lnbox{font-size:13.5px;background:var(--card2);border-radius:10px;padding:9px 12px;margin-bottom:8px}
.lnbox b{color:var(--gold2)}
.lnfh{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.lnfh span{background:var(--card2);border:1px solid var(--line);border-radius:8px;padding:4px 8px;font-size:11.5px;color:var(--sub)}
.lnfh b{color:var(--gold2)}
.ynlist{display:flex;flex-wrap:wrap;gap:5px}
.ynlist span{background:var(--card2);border:1px solid var(--line);border-radius:8px;padding:3px 8px;font-size:11px;color:var(--sub)}
.ynlist span.cur{border-color:var(--gold);color:var(--gold2)}
/* 立太极 */
.tjhead{font-size:13px;margin-bottom:9px}
.tjhead .gold{color:var(--gold2);font-weight:700}
.tjfh{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.tjfh b{font-size:12px;color:var(--gold2)}
.tjfh span{background:var(--card2);border:1px solid var(--line);border-radius:8px;padding:3px 8px;font-size:11.5px;color:var(--sub)}
.tjnote{font-size:11.5px;color:var(--dim);margin-top:8px}
/* 领域断事 */
.domgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.domcard{background:var(--card2);border:1px solid var(--line);border-radius:11px;padding:12px 11px}
.domtitle{font-size:13.5px;font-weight:700;color:var(--gold2);margin-bottom:8px;letter-spacing:.5px}
.dg{font-size:11.5px;color:var(--sub);margin:5px 0;display:flex;gap:6px;line-height:1.6}
.dg b{color:var(--gold2);font-weight:600;white-space:nowrap}
.dg i{font-style:normal;color:var(--ji);font-size:10.5px}
.domcard p{font-size:11.5px;color:var(--sub);margin-top:9px;border-top:1px dashed var(--line);padding-top:8px;line-height:1.8}
.domcard p b{color:var(--gold2)}
.domcard p em{font-style:normal;color:var(--dim);display:block;margin-top:3px;font-size:11px}
/* 四柱 */
.four{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}
.zcol{background:var(--card2);border:1px solid var(--line);border-radius:10px;padding:7px 3px;text-align:center}
.zsh{font-size:10px;color:var(--dim)}
.zgz{font-size:21px;font-weight:800;color:var(--gold2);margin:1px 0}
/* R25：地支与天干同色（原白色与金色天干割裂，四柱主体应一色到底）；
   藏干为辅助层，同金色降透明度，与地支拉开层级 */
.zzhi{font-size:21px;font-weight:800;color:var(--gold2);margin-bottom:3px}
.zcgbox{display:flex;justify-content:center;gap:4px;flex-wrap:wrap}
.zcg{display:flex;flex-direction:column;align-items:center}
.zcg i{font-style:normal;font-size:11px;color:var(--gold2);opacity:.72}
.zcg em{font-style:normal;font-size:8.5px;color:var(--dim)}
/* 藏干角标：与「纳音」角标同规格，明确该行为地支所藏之干 */
.zcg-hd{font-style:normal;font-size:9px;color:var(--dim);opacity:.85;letter-spacing:.5px;display:block;margin-bottom:1px}
.zny{font-size:11px;color:var(--sub);margin-top:6px;display:flex;align-items:center;justify-content:center;gap:3px}
.zny em{font-style:normal;font-size:9px;color:var(--dim);opacity:.85}
.zny .wx{font-size:11.5px;padding:1px 5px}
/* 六十甲子纳音专区 */
.nycard{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.nyitem{background:var(--card2);border:1px solid var(--line);border-left-width:3px;border-radius:8px;padding:8px 9px;display:flex;flex-direction:column;gap:4px}
.nyitem b{font-size:10px;color:var(--dim);font-weight:400}
.nyitem .nygz{font-size:16px;color:var(--gold2);font-weight:700;letter-spacing:1px}
.nyitem .wx{font-size:13px;padding:2px 7px;align-self:flex-start}
.nyitem em{font-style:normal;font-size:9.5px;color:var(--dim);line-height:1.5}
.nyitem.jin{border-left-color:#e8c86a}.nyitem.mu{border-left-color:#5fd39b}
.nyitem.shui{border-left-color:#6fb3e0}.nyitem.huo{border-left-color:#f0895f}.nyitem.tu{border-left-color:#dcb689}
/* 十二长生：补「长生」角标，避免用户看到「病/沐浴」不知为何物 */
.zcs{font-size:10px;color:#8da2c8;margin-top:4px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:3px}
.zcs i{font-style:normal;font-size:9px;color:var(--dim);opacity:.85;letter-spacing:.5px}
.zcol.daymaster .zgz,.zcol.daymaster .zzhi{color:#f2784f;text-shadow:0 0 14px rgba(242,120,79,.35)}
/* 五行条 */
.wxwrap{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:4px}
.wxr{display:flex;align-items:center;gap:6px;font-size:12px}
.wxr>span{width:14px;font-weight:700}
.wxr b{color:var(--gold2);font-size:11px;min-width:12px;text-align:right}
.wbar{flex:1;height:8px;background:var(--card2);border-radius:99px;overflow:hidden}
.wbar i{display:block;height:100%;border-radius:99px}
.wx-金 span,.wx-金{color:#d8d8d8}.wx-金 .wbar i{background:linear-gradient(90deg,#9aa2b5,#d8d8d8)}
.wx-木 span,.wx-木{color:#7ecb8f}.wx-木 .wbar i{background:linear-gradient(90deg,#3f8a55,#7ecb8f)}
.wx-水 span,.wx-水{color:#6fb3e8}.wx-水 .wbar i{background:linear-gradient(90deg,#2f6ea8,#6fb3e8)}
.wx-火 span,.wx-火{color:#f2784f}.wx-火 .wbar i{background:linear-gradient(90deg,#b5402a,#f2784f)}
.wx-土 span,.wx-土{color:#d9b25f}.wx-土 .wbar i{background:linear-gradient(90deg,#9a7a2a,#d9b25f)}
.kv{display:flex;justify-content:space-between;gap:8px;font-size:12.5px;padding:7px 2px;border-bottom:1px dashed var(--line)}
.kv:last-child{border-bottom:none}
.kv b{color:var(--dim);font-weight:400;white-space:nowrap}
/* R25：详情行主值与基本信息卡同用金色，整页「标签灰 · 值金」口径统一；强调项提亮区分 */
.kv span{color:var(--gold2);text-align:right}
.kv span em{font-style:normal;color:#ffe9b0;font-weight:800}
/* P0-3：八字「大运」板块底部指路提示 —— 引导用户切到【流年】看逐年推演。
   视觉沿用站点既有的金色细边 + 淡底语言，不引入新设计语言。 */
.bzln-tip{
  margin:12px 0 0;padding:7px 10px;
  font-size:12px;line-height:1.6;color:var(--sub);
  background:rgba(212,175,55,.07);
  border-left:3px solid var(--gold);
  border-radius:6px;
}
.bzln-tip b{color:var(--gold2);font-weight:700}
/* 浅色主题下淡金底更易辨识 */
html[data-theme="light"] .bzln-tip{background:rgba(168,132,42,.09)}
/* 流年分组 */
.lngrp{background:var(--card2);border:1px solid var(--line);border-radius:11px;margin-bottom:7px;overflow:hidden}
.lngrp summary{padding:9px 12px;font-size:12.5px;color:var(--gold2);cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center}
.lngrp summary::after{content:"▾";color:var(--dim);transition:.2s}
.lngrp[open] summary::after{transform:rotate(180deg)}
.lngrp summary b{color:var(--gold2)}
.lngrp .tbl{padding:0 8px 8px}
/* R20 顶部解读模式总开关（简易 / 深度） */
.modeswitch{margin:0 0 12px;border:1px solid var(--line);border-radius:13px;background:linear-gradient(135deg,rgba(212,175,55,.10),rgba(255,255,255,.02));overflow:hidden}
.ms-in{display:flex;align-items:center;gap:10px;padding:10px 12px}
.ms-txt{flex:1 1 auto;min-width:0}
.ms-txt b{display:block;font-size:12.5px;color:var(--gold2);letter-spacing:.6px}
.ms-txt span{display:block;font-size:11px;color:var(--dim);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ms-seg{flex:0 0 auto;display:flex;background:var(--card2);border:1px solid var(--line);border-radius:10px;padding:3px;gap:3px}
.msbtn{position:relative;border:0;background:transparent;color:var(--sub);border-radius:8px;padding:6px 9px;font-size:12px;cursor:pointer;font-family:inherit}
.msbtn.on{background:rgba(212,175,55,.16);color:var(--gold2);font-weight:700;box-shadow:inset 0 0 0 1px rgba(212,175,55,.45)}
.dptag{font-style:normal;font-size:9px;font-weight:700;margin-left:4px;padding:1px 4px;border-radius:5px;
  background:linear-gradient(135deg,#d4af37,#f0d97a);color:#2a2109;letter-spacing:.5px;vertical-align:1px}
.lock{font-style:normal;font-size:9px;margin-left:2px}
.msbtn.on .lock{display:none}
/* R20 共振点位标记：黄色吉性共振 / 红色凶性共振 */
.rz{background:rgba(212,175,55,.20);color:var(--gold2);border-radius:5px;padding:1px 4px;font-weight:700;
  box-shadow:inset 0 0 0 1px rgba(212,175,55,.45)}
.rzf{background:rgba(232,90,90,.20);color:#ff9a9a;border-radius:5px;padding:1px 4px;font-weight:700;
  box-shadow:inset 0 0 0 1px rgba(232,90,90,.55)}
/* R20 盘面联动：共振宫位点亮（黄=吉性共振 / 红=凶性共振） */
.pcell.rzhl{border-color:rgba(212,175,55,.85)!important;box-shadow:0 0 0 2px rgba(212,175,55,.35),0 0 14px rgba(212,175,55,.28) inset!important}
.pcell.rzhlf{border-color:rgba(232,90,90,.9)!important;box-shadow:0 0 0 2px rgba(232,90,90,.42),0 0 16px rgba(232,90,90,.32) inset!important}
.pcell.rzhl::after,.pcell.rzhlf::after{content:'';position:absolute;inset:0;border-radius:8px;pointer-events:none;z-index:2}
.rzhlnote{margin-top:8px;font-size:11px;color:var(--dim);line-height:1.7}
.rzhlnote b{color:var(--gold2)}
/* R20 深度模式说明弹窗 */
.dpcard{padding:4px 2px 2px}
.dpcard .dphd{text-align:center;padding:6px 0 12px}
.dpcard .dpic{font-size:34px;line-height:1;display:flex;justify-content:center}
.dpico{display:block;filter:drop-shadow(0 3px 6px rgba(166,122,34,.32))}
.dpcard .dpt{font-size:16px;font-weight:700;color:var(--gold2);margin-top:8px;letter-spacing:.5px}
.dpcard .dpsub{font-size:12px;color:var(--dim);margin-top:6px;line-height:1.7}
.dpfeat{list-style:none;margin:10px 0 0;padding:0}
.dpfeat li{display:flex;gap:8px;align-items:flex-start;padding:7px 0;border-top:1px dashed var(--line);font-size:12.5px;line-height:1.7}
.dpfeat li:first-child{border-top:0}
.dpfeat i{font-style:normal;color:var(--gold2);flex:0 0 auto;margin-top:2px}
.vfico{display:block;width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.dpfeat b{color:var(--txt);font-weight:700}
.dpfeat span{color:var(--sub)}
.dpbtn{display:block;width:100%;margin-top:14px;padding:11px;border:0;border-radius:11px;cursor:pointer;font-family:inherit;
  font-size:14px;font-weight:700;letter-spacing:1px;color:#2a2109;background:linear-gradient(135deg,#e6c659,#d4af37)}
.dpbtn2{display:block;width:100%;margin-top:8px;padding:9px;border:1px solid var(--line);border-radius:11px;cursor:pointer;
  font-family:inherit;font-size:12px;color:var(--sub);background:var(--card2)}
.dpnote{margin-top:10px;font-size:11px;color:var(--dim);text-align:center;line-height:1.7}
.depon{display:inline-block;margin-left:6px;font-size:10px;padding:1px 5px;border-radius:5px;background:rgba(212,175,55,.18);color:var(--gold2)}
/* 报告 */
.report{font-size:13px;line-height:1.85;color:var(--txt);
  background:var(--card2);border:1px solid var(--line);border-radius:11px;padding:13px;max-height:none}
/* R12 板块卡片分段：长报告分块 + 浅底色，缓解手机长屏滚动疲劳 */
.rsec{background:rgba(255,255,255,.028);border-left:3px solid var(--gold);border-radius:10px;padding:10px 12px;margin:12px 0}
.rsec-hd{font-weight:700;color:var(--gold2);font-size:14px;margin-bottom:6px;letter-spacing:.5px}
.rtxt{white-space:pre-wrap;font-size:13px;line-height:1.85;color:var(--txt)}
.rtxt:empty{display:none}
/* R12 古籍引文折叠：默认收起，想看考据再点开 */
.gjfold{margin:8px 0;border:1px dashed var(--line);border-radius:8px;background:rgba(255,255,255,.02)}
.gjfold summary{cursor:pointer;padding:7px 10px;font-size:12px;color:var(--sub);user-select:none;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gjfold summary::before{content:'▸ ';color:var(--gold2)}
.gjfold[open] summary::before{content:'▾ '}
.gjfold summary::-webkit-details-marker{display:none}
.gjbody{padding:4px 12px 9px;font-size:12px;color:var(--dim);line-height:1.8;border-top:1px dashed var(--line)}
/* R19 报告按需生成：未点模块时的引导占位（不生成任何文本） */
.repempty{padding:24px 14px;text-align:center;border:1px dashed var(--line2);border-radius:11px;background:rgba(255,255,255,.02)}
.repempty-ic{font-size:24px;opacity:.65;line-height:1}
.repempty-t{margin-top:9px;font-weight:700;color:var(--txt);font-size:14px;letter-spacing:.5px}
.repempty-s{margin-top:7px;font-size:12px;color:var(--dim);line-height:1.75}
/* 可信度问号悬浮 */
.kxq{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;
  border:1px solid rgba(212,175,55,.55);color:var(--gold2);font-size:10.5px;font-style:normal;cursor:pointer;
  font-weight:700;margin-left:3px;vertical-align:1px;background:rgba(212,175,55,.08)}
.kxq:active{transform:scale(.92)}
.repbar{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:10px}
.repbtn{flex:1;min-width:52px;border:1px solid var(--line);background:var(--card2);color:var(--sub);border-radius:9px;
  padding:7px 4px;font-size:12.5px;cursor:pointer;transition:.2s;font-family:inherit}
.repbtn:active{transform:scale(.97)}
.repbtn.on{border-color:var(--gold);color:var(--gold2);background:rgba(212,175,55,.12);font-weight:700}
/* ---- 板块分类导航（R14：按钮组 + 按需展示） ---- */
.secnav{display:flex;gap:6px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;
  scrollbar-width:none;padding:2px 0 4px;margin-bottom:10px;position:sticky;top:0;z-index:6}
.secnav::-webkit-scrollbar{display:none}
.secbtn{flex:0 0 auto;border:1px solid var(--line);background:var(--card2);color:var(--sub);border-radius:999px;
  padding:8px 15px;font-size:13px;cursor:pointer;transition:.22s;font-family:inherit;white-space:nowrap;
  display:inline-flex;align-items:center;gap:5px;letter-spacing:.5px}
.secbtn em{font-style:normal;font-size:13px;line-height:1}
.secbtn:active{transform:scale(.95)}
.secbtn.on{border-color:var(--gold);color:var(--gold2);background:linear-gradient(135deg,rgba(212,175,55,.20),rgba(212,175,55,.08));
  font-weight:700;box-shadow:0 2px 10px rgba(212,175,55,.14)}
.secfade{animation:secfade .26s ease}
@keyframes secfade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.kxbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:11.5px;color:var(--sub);
  background:linear-gradient(135deg,rgba(212,175,55,.10),rgba(212,175,55,.03));border:1px solid rgba(212,175,55,.28);
  border-radius:10px;padding:8px 11px;margin-bottom:10px;line-height:1.6}
.kxbar .kxscore{font-size:17px;font-weight:800;color:var(--gold2)}
.kxbar b{color:var(--gold2)}
.copybtn{margin-top:9px;width:100%;border:1px solid rgba(212,175,55,.4);background:rgba(212,175,55,.08);color:var(--gold2);
  border-radius:10px;padding:9px;font-size:13px;cursor:pointer;letter-spacing:2px}
.copybtn:active{background:rgba(212,175,55,.18)}
.placeholder{text-align:center;color:var(--dim);font-size:13px;padding:44px 0;border:1px dashed var(--line);border-radius:14px;margin-bottom:14px}
.placeholder .big{font-size:32px;margin-bottom:10px}
footer{text-align:center;color:var(--dim);font-size:10.5px;line-height:1.9;padding:8px 20px 0}
footer b{color:var(--sub)}
.hidden{display:none!important}
@media(max-width:480px){
  .secnav{gap:5px;padding:2px 0 3px;margin-bottom:9px}
  .secbtn{padding:7px 12px;font-size:12.5px;gap:4px}
  .secbtn em{font-size:12px}
  /* 中宫：小屏收紧字号与间距，保证 7 行信息不溢出 */
  .pinfo{padding:5px 6px}
  .pmid{gap:3px}
  .mi-t{font-size:11.5px;padding-bottom:3px}
  .mi-t i{font-size:9.5px;padding:0 3px}
  .mi-r{line-height:1.42}
  .mi-r em{font-size:9.8px}
  .mi-r span{font-size:10.2px}
  .mi-b{padding-top:3px;gap:6px}
  .mi-b>em{font-size:9.8px}
  .mi-shv{font-size:10.5px}
}
@media(max-width:360px){.pstars .st{font-size:11.5px}.domgrid{grid-template-columns:1fr}
  .mi-r em{font-size:9.2px}.mi-r span{font-size:9.6px}.mi-shv{font-size:9.8px}.mi-t{font-size:11px}}

/* 第一轮合规提示条 */
.cmpbar{margin:10px 0 0;padding:10px 12px;border:1px solid rgba(212,175,55,.28);border-left:3px solid var(--gold);
  border-radius:10px;background:rgba(212,175,55,.05);color:var(--sub);font-size:12px;line-height:1.7}
.cmpbar b{color:var(--gold2);font-weight:600}
.cmpfoot{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line);color:var(--dim);font-size:11.5px;line-height:1.8}
.cmpfoot b{color:var(--sub);font-weight:600}

/* 第三轮：报告页眉免责声明 / 空态提示 */
.repdisc{margin:0 0 10px;padding:8px 10px;border:1px solid rgba(212,175,55,.25);border-radius:8px;
  background:rgba(212,175,55,.045);color:var(--sub);font-size:11.5px;line-height:1.65}
.phins{margin-top:6px;color:var(--dim);font-size:11.5px}

/* ============================================================
   辰枢版覆盖层（不修改上述任何既有规则，仅做响应式与合规隐藏）
   ============================================================ */

/* 1) 响应式：手机端沿用 520px 版心；平板/PC 放宽到 760–880px */
@media (min-width: 900px) {
  .wrap { max-width: 820px; padding: 0 20px 56px; }
  header h1 { font-size: 24px; }
  .board { max-width: 100%; }
}
@media (min-width: 1280px) {
  .wrap { max-width: 900px; }
}

/* 2) 合规隐藏：不对外展示「推演报告 / 领域断事 / 空宫结论 / 解读模式开关」
      —— 相关 DOM 保留（引擎无空值保护），仅从界面移除。 */
#zwRep, #bzRep, #zwDOM, #zwKG,
#zwRepBar, #bzRepBar, #zwKx, #bzKx, #zwDepth, #bzDepth,
#zwRepMode, #bzRepMode, #modeSwitch,
section.card[data-sec="report"], section.card[data-sec="domain"] {
  display: none !important;
}
.copybtn { display: none !important; }

/* 3) 排盘台外层容器（站点外壳使用，避免与站点样式互相污染） */
.cs-workbench .wrap { margin: 0 auto; }
.cs-workbench { background: var(--bg); }

/* ============================================================
   4) 紫微排盘工作台：研习 6-Tab 骨架 + 昼夜双主题（辰枢版 U7，2026-10-02）
   ------------------------------------------------------------
   作用域：engine.css 只被 paipan.html 引入，本段不影响首页 / 古籍库 /
          命例 / 会员 / 登录 / 协议页；子平八字结果区在浅色主题下不可见
          （切到子平八字页签时主题回落为夜间），故八字侧外观与改造前一致。
   ============================================================ */

/* ---- 4.1 浅色主题变量覆盖 ----
   html[data-theme="light"] 特异性 (0,1,1) 高于 :root (0,1,0)，
   故无论与 site.css 的加载先后，均可稳定覆盖。 */
html[data-theme="light"] {
  --bg: #f6f2e7; --bg2: #efe9db; --card: #ffffff; --card2: #f7f3e9;
  --line: #e2d8c3; --line2: #cfc3a6;
  --gold: #8a6b1e; --gold2: #77590f;
  --txt: #26201a; --sub: #544a38; --dim: #6d6350;
  --lu: #0f6b32; --quan: #a83c14; --ke: #1a4fa0; --ji: #a01c38;
}
html[data-theme="light"] body {
  background-image: radial-gradient(ellipse 80% 50% at 50% -10%, rgba(168,132,42,.10), transparent);
}

/* ---- 4.2 主题切换按钮（仅紫微工作台页头，右上角） ---- */
.cs-workbench header { position: relative; }
.zwthemebtn {
  position: absolute; top: 12px; right: 2px; width: 40px; height: 40px; padding: 0;
  border-radius: 50%; border: 1px solid rgba(212,175,55,.45); background: rgba(212,175,55,.10);
  color: var(--gold2); font-size: 19px; line-height: 1; cursor: pointer;
  display: grid; place-items: center; transition: .2s; z-index: 5;
}
.zwthemebtn:active { transform: scale(.94); }
html[data-theme="light"] .zwthemebtn {
  border-color: rgba(138,107,30,.5); background: rgba(168,132,42,.14); color: #77590f;
}

/* ---- 4.3 口径说明折叠面板（默认收起） ---- */
.caliber { margin-top: 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--card2); overflow: hidden; }
.caliber > summary {
  list-style: none; cursor: pointer; padding: 9px 12px; font-size: 12px; font-weight: 600;
  color: var(--gold2); letter-spacing: .6px; display: flex; align-items: center; gap: 7px;
}
.caliber > summary::-webkit-details-marker { display: none; }
.caliber > summary::before { content: '▸'; color: var(--gold); font-size: 11px; transition: .2s; }
.caliber[open] > summary::before { transform: rotate(90deg); }
.caliber > summary::after { content: '（点击展开）'; margin-left: auto; font-size: 10.5px; color: var(--dim); font-weight: 400; }
.caliber[open] > summary::after { content: '（点击收起）'; }
.caliber .hint { margin: 0; padding: 3px 12px 11px; border-top: 1px dashed var(--line); }
#btnGo { box-shadow: 0 8px 26px rgba(212,175,55,.36); }

/* ---- 4.4 研习 6-Tab ---- */
.zwtabs { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 6px; margin: 4px 0 12px; }
@media (min-width: 640px) { .zwtabs { grid-template-columns: repeat(6, minmax(0,1fr)); } }
.zwtab {
  border: 1px solid var(--line); background: var(--card2); color: var(--sub); border-radius: 10px;
  padding: 9px 3px; font-family: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer;
  letter-spacing: .4px; line-height: 1.35; display: flex; align-items: center; justify-content: center;
  gap: 2px; white-space: nowrap; transition: .2s;
}
.zwtab i { font-style: normal; font-size: 11px; opacity: .85; }
.zwtab:active { transform: scale(.97); }
.zwtab.on {
  border-color: var(--gold); color: #201804; font-weight: 800;
  background: linear-gradient(135deg, #f0dd9a, #d4af37);
  box-shadow: 0 3px 12px rgba(212,175,55,.30);
}
.zwpanel { display: none; }
.zwpanel.on { display: block; animation: zwfade .18s ease; }
@keyframes zwfade { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }

/* ---- 4.5 各 Tab 控件 ---- */
.zwsub { font-size: 11.5px; color: var(--dim); letter-spacing: .6px; margin-bottom: 6px; }
.zwhint2 { font-size: 11.5px; color: var(--dim); margin: 0 0 8px; line-height: 1.7; }
.zwlegacy { display: none !important; }

.zwdxbtns { display: grid; grid-template-columns: repeat(5, minmax(0,1fr)); gap: 6px; margin-bottom: 10px; }
@media (max-width: 430px) { .zwdxbtns { grid-template-columns: repeat(3, minmax(0,1fr)); } }
.dxb {
  border: 1px solid var(--line); background: var(--card2); color: var(--sub); border-radius: 9px;
  padding: 7px 2px; font-family: inherit; font-size: 11.5px; cursor: pointer; line-height: 1.35; transition: .18s;
}
.dxb b { display: block; font-size: 12.5px; color: var(--gold2); font-weight: 700; }
.dxb span { display: block; font-size: 9.5px; color: var(--dim); }
.dxb.on { border-color: var(--gold); background: rgba(212,175,55,.16); box-shadow: inset 0 0 0 1px rgba(212,175,55,.45); }
html[data-theme="light"] .dxb.on { background: rgba(168,132,42,.16); }

.zwlnq { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 10px; }
.zwlnq label { font-size: 12px; color: var(--sub); white-space: nowrap; }
.zwlnq input { flex: 1 1 108px; min-width: 96px; max-width: 150px; padding: 8px; font-size: 14px; }
.zwlnq input.zwbad { border-color: var(--err); }
.zwbtn {
  border: 1px solid var(--gold); border-radius: 10px; padding: 8px 14px; font-family: inherit;
  font-size: 13px; font-weight: 700; cursor: pointer; transition: .2s;
  background: linear-gradient(135deg, #f0dd9a, #d4af37); color: #201804;
}
.zwbtn.ghost { background: var(--card2); color: var(--sub); border-color: var(--line); font-weight: 600; }
.zwbtn:active { transform: scale(.97); }
.zwmsg { font-size: 11.5px; color: var(--dim); flex: 1 1 100%; line-height: 1.6; }

.zwdomseg { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.dombtn {
  border: 1px solid var(--line); background: var(--card2); color: var(--sub); border-radius: 999px;
  padding: 6px 13px; font-family: inherit; font-size: 12.5px; cursor: pointer; transition: .18s;
}
.dombtn.on {
  border-color: var(--gold); color: var(--gold2); font-weight: 700;
  background: linear-gradient(135deg, rgba(212,175,55,.20), rgba(212,175,55,.08));
}
html[data-theme="light"] .dombtn.on { background: linear-gradient(135deg, rgba(168,132,42,.22), rgba(168,132,42,.10)); }

.zwrepbar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 10px; }
.zwrepbar .zwmsg { flex: 1 1 auto; }

.zwph {
  margin-top: 12px; padding: 14px 12px; text-align: center; border: 1px dashed var(--line2);
  border-radius: 10px; background: rgba(212,175,55,.05); color: var(--sub);
  font-size: 12.5px; line-height: 1.9; letter-spacing: .5px; word-break: break-all;
}
html[data-theme="light"] .zwph { background: rgba(168,132,42,.07); }

/* ---- 4.6 浅色主题下的硬编码色覆盖 ----
   源样式中有 119 处十六进制色，多为「深底上的浅金」写法，浅色底上会失去对比度，
   逐条给出等价可读替换；未列出的规则全部走 CSS 变量，自动跟随主题。 */
html[data-theme="light"] header h1 { background: linear-gradient(180deg, #8a6b1e, #6d5312 70%, #523f0c); }
html[data-theme="light"] header .badge { color: #6d5312; border-color: rgba(138,107,30,.42); background: rgba(168,132,42,.10); }
html[data-theme="light"] .tab.active { background: linear-gradient(135deg, #f6e9b8, #e8d48b); color: #4a3a10; box-shadow: 0 0 0 1px rgba(138,107,30,.5), 0 4px 14px rgba(138,107,30,.14); }
html[data-theme="light"] .zitog { color: #6d5312; background: rgba(168,132,42,.14); border-color: rgba(138,107,30,.40); }
html[data-theme="light"] .zinfo .zinotedrop i { color: #6d5312; }
html[data-theme="light"] .tshint { color: #5b4a22; background: rgba(168,132,42,.10); }
html[data-theme="light"] .tshint b { color: #6d5312; }
html[data-theme="light"] .geohint.okhint { color: #0f6b32; }
html[data-theme="light"] .geohint.warnhint { color: #8a4a10; }
html[data-theme="light"] .thgan { background: #f1e8d5; color: #6d5312; }
html[data-theme="light"] .toast { background: #fdecec; color: #8a1c1c; border-color: #e6b3b3; }
html[data-theme="light"] .zkong { color: #6d6350; border-top-color: #ddd2b8; }
html[data-theme="light"] .zinfo div.dim { background: rgba(0,0,0,.022); }
html[data-theme="light"] .mi-t i { background: rgba(0,0,0,.05); }
html[data-theme="light"] .modeswitch { background: linear-gradient(135deg, rgba(168,132,42,.12), rgba(0,0,0,.015)); }
html[data-theme="light"] .rsec { background: rgba(0,0,0,.028); }
html[data-theme="light"] .mnote, html[data-theme="light"] .tipcard { background: rgba(0,0,0,.03); }
html[data-theme="light"] .kgrule { background: rgba(0,0,0,.028); border-left-color: rgba(138,107,30,.5); }
html[data-theme="light"] .paux-more { background: rgba(0,0,0,.04); }

/* 十二宫盘面 */
html[data-theme="light"] .pcell.kong { background: repeating-linear-gradient(135deg, rgba(0,0,0,.03) 0 6px, transparent 6px 12px), var(--card2); border-color: rgba(138,107,30,.45); }
html[data-theme="light"] .pcell.kong .pname { color: #77590f; }
html[data-theme="light"] .pcell.hl { background: linear-gradient(160deg, #fbf3d8, #f6ebc9); border-color: #8a6b1e; box-shadow: 0 0 0 1px #8a6b1e, 0 0 14px rgba(138,107,30,.18); }
html[data-theme="light"] .pcell.hl-tri { background: linear-gradient(160deg, #f3f0fb, #e9e4f7); border-color: #5b4b96; box-shadow: 0 0 0 1px #5b4b96, 0 0 10px rgba(91,75,150,.16); }
html[data-theme="light"] .pcell.hl-opp { background: linear-gradient(160deg, #eef5fc, #e2eefa); border-color: #255d92; box-shadow: 0 0 0 1px #255d92, 0 0 10px rgba(37,93,146,.16); }
html[data-theme="light"] .hlbadge.self { background: #8a6b1e; color: #fff8e6; }
html[data-theme="light"] .hlbadge.tri { background: #5b4b96; color: #fff; }
html[data-theme="light"] .hlbadge.opp { background: #255d92; color: #fff; }
html[data-theme="light"] .pstars .st { color: #3a3126; }
html[data-theme="light"] .pstars .kgTip { color: #77590f; }
html[data-theme="light"] .pstars .kgTip b { color: #3a3126; }
html[data-theme="light"] .kgtip2 { color: #6d5312; background: rgba(168,132,42,.15); border-color: rgba(138,107,30,.50); }
html[data-theme="light"] .kgtip2 b { color: #5b4a22; }
html[data-theme="light"] .kgtip2 i { color: #6d6350; }
html[data-theme="light"] .psha i { background: rgba(200,40,40,.13); border-color: rgba(200,40,40,.45); color: #8a1c1c; }
html[data-theme="light"] .pinfo { background: linear-gradient(145deg, #fbf6e6, #f3ecd8); border-color: #ddcfa6; }
html[data-theme="light"] .mi-shv { color: #5b4a22; }
html[data-theme="light"] .wx-jin { color: #6b5a1e; background: rgba(168,132,42,.16); }
html[data-theme="light"] .wx-mu { color: #0f6b32; background: rgba(15,107,50,.12); }
html[data-theme="light"] .wx-shui { color: #1a4fa0; background: rgba(26,79,160,.12); }
html[data-theme="light"] .wx-huo { color: #a8390f; background: rgba(168,57,15,.12); }
html[data-theme="light"] .wx-tu { color: #7a5b1c; background: rgba(122,91,28,.14); }

/* 表格 / 弹窗 / 空宫卡 */
html[data-theme="light"] .tbl td { border-bottom-color: rgba(0,0,0,.07); }
html[data-theme="light"] .tbl tr.cur td { background: rgba(168,132,42,.14); }
html[data-theme="light"] .tbl td.good { color: #0f6b32; }
html[data-theme="light"] .tbl td.bad { color: #a8390f; }
html[data-theme="light"] .tbl td.mix { color: #6b5a1e; }
html[data-theme="light"] .tbl .self td { background: rgba(15,107,50,.07); }
html[data-theme="light"] .kgitem { background: var(--card2); }
html[data-theme="light"] .kghd .lv.good { color: #0f6b32; background: rgba(15,107,50,.12); }
html[data-theme="light"] .kghd .lv.mid { color: #544a38; background: rgba(0,0,0,.05); }
html[data-theme="light"] .kghd .lv.bad { color: #8a1c1c; background: rgba(200,40,40,.12); }
html[data-theme="light"] .kgline .em { color: #3a3126; }
html[data-theme="light"] .kgwarn { color: #8a1c1c; }
html[data-theme="light"] .mask { background: rgba(40,34,22,.42); }
html[data-theme="light"] .modal { box-shadow: 0 -8px 40px rgba(80,64,30,.22); }
html[data-theme="light"] .mrow .em { color: #6d5312; }
html[data-theme="light"] .mstars i.mn { border-color: rgba(138,107,30,.5); color: #5b4a22; background: rgba(168,132,42,.12); }
html[data-theme="light"] .mstars i.maux.sha { border-color: rgba(200,40,40,.45); color: #8a1c1c; background: rgba(200,40,40,.10); }
html[data-theme="light"] .rz { background: rgba(168,132,42,.20); color: #5b4a22; box-shadow: inset 0 0 0 1px rgba(138,107,30,.45); }
html[data-theme="light"] .rzf { background: rgba(200,40,40,.13); color: #8a1c1c; box-shadow: inset 0 0 0 1px rgba(200,40,40,.5); }
html[data-theme="light"] .rzhlnote { color: #6d6350; }
html[data-theme="light"] .pcell.rzhl { border-color: rgba(138,107,30,.85) !important; box-shadow: 0 0 0 2px rgba(138,107,30,.30), 0 0 14px rgba(138,107,30,.20) inset !important; }
html[data-theme="light"] .pcell.rzhlf { border-color: rgba(200,40,40,.85) !important; box-shadow: 0 0 0 2px rgba(200,40,40,.35), 0 0 16px rgba(200,40,40,.25) inset !important; }
html[data-theme="light"] .modeseg button.on { background: rgba(168,132,42,.14); }
html[data-theme="light"] .modeseg button.on i { color: rgba(90,72,24,.80); }
html[data-theme="light"] .msbtn.on { background: rgba(168,132,42,.18); }
html[data-theme="light"] .copybtn { background: rgba(168,132,42,.10); }
html[data-theme="light"] .repdisc { border-color: rgba(138,107,30,.30); }

/* 站点外壳（导航品牌 / 顶部免责条） */
html[data-theme="light"] .brand .txt { background: linear-gradient(180deg, #8a6b1e, #6d5312 75%, #523f0c); }
html[data-theme="light"] .disclaimer-bar { background: linear-gradient(90deg, rgba(168,132,42,.16), rgba(168,132,42,.06)); border-bottom-color: rgba(138,107,30,.28); }
html[data-theme="light"] .nav-links a:hover,
html[data-theme="light"] .nav-links a.active { background: rgba(168,132,42,.12); }
html[data-theme="light"] .cs-lock-card { background: rgba(255,255,255,.97); }
html[data-theme="light"] .zwthemebtn { box-shadow: 0 3px 12px rgba(138,107,30,.18); }

/* ============================================================
   4.7 会员分级研习内容（第二阶段）
   ------------------------------------------------------------
   作用域：只在紫微工作台结果区。挂载点 div.zwinterp 由运行期填充 ——
           非会员填服务端下发的遮罩片段、会员填服务端下发的完整解读。
           本段只负责样式，不含任何解读文案。
   ============================================================ */
.zwinterp { margin-top: 12px; }
.zwinterp:empty { display: none; }

/* 挂载点为空 / 加载中 / 加载失败的中性提示 */
.zwi-pending {
  padding: 14px 16px; border: 1px dashed var(--line2); border-radius: 12px;
  color: var(--dim); font-size: 13px; text-align: center;
}

/* 非会员遮罩 */
.zwilock {
  border: 1px solid var(--line2); border-radius: 14px; padding: 20px 18px;
  background: linear-gradient(180deg, rgba(168,132,42,.10), rgba(168,132,42,.03));
  text-align: center;
}
.zwilock-t { display: block; color: var(--gold2); font-size: 14.5px; margin-bottom: 10px; }
.zwilock-p { color: var(--sub); font-size: 13px; line-height: 1.85; margin: 6px auto 0; max-width: 560px; }
.zwibtn {
  display: inline-block; margin-top: 14px; padding: 9px 22px; border-radius: 10px;
  background: linear-gradient(180deg, var(--gold), var(--gold2)); color: #241b08;
  font-size: 13.5px; font-weight: 700; text-decoration: none;
}
.zwibtn:visited { color: #241b08; }

/* 通用文本块 */
.zwi-lead p { color: var(--sub); font-size: 13.5px; line-height: 1.9; margin: 0 0 4px; }
.zwi-items { display: grid; gap: 10px; margin-top: 12px; }
.zwi-item {
  border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px;
  background: var(--card2);
}
.zwi-item h4 { color: var(--gold2); font-size: 13.5px; margin: 0 0 6px; }
.zwi-item p { color: var(--sub); font-size: 13px; line-height: 1.9; margin: 0 0 6px; }
.zwi-item p:last-child { margin-bottom: 0; }
.zwi-item b { color: var(--txt); }

/* 生年四化：四张卡片 */
.zwi-cards { display: grid; grid-template-columns: 1fr; gap: 10px; margin-top: 12px; }
@media (min-width: 640px) { .zwi-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.zwi-card {
  border: 1px solid var(--line); border-left-width: 4px; border-radius: 12px;
  padding: 12px 14px; background: var(--card2);
}
.zwi-card h4 { font-size: 13.5px; margin: 0 0 6px; }
.zwi-card p { color: var(--sub); font-size: 12.8px; line-height: 1.88; margin: 0; }
.zwi-card.c-lu { border-left-color: var(--lu); }
.zwi-card.c-lu h4 { color: var(--lu); }
.zwi-card.c-quan { border-left-color: var(--quan); }
.zwi-card.c-quan h4 { color: var(--quan); }
.zwi-card.c-ke { border-left-color: var(--ke); }
.zwi-card.c-ke h4 { color: var(--ke); }
.zwi-card.c-ji { border-left-color: var(--ji); }
.zwi-card.c-ji h4 { color: var(--ji); }

/* 提示块 / 医疗提示 / 模块免责尾注 */
.zwi-note {
  margin-top: 12px; padding: 10px 14px; border-radius: 10px;
  border: 1px solid var(--line); background: var(--card2);
  color: var(--sub); font-size: 12.8px; line-height: 1.85;
}
.zwi-note b { color: var(--gold2); }
.zwi-warn {
  margin: 8px 0; padding: 10px 14px; border-radius: 10px;
  border: 1px solid var(--ji); background: rgba(160,28,56,.10);
  color: var(--ji); font-size: 12.8px; line-height: 1.8; font-weight: 600;
}
.zwi-tail {
  margin-top: 12px; padding-top: 10px; border-top: 1px dashed var(--line2);
  color: var(--dim); font-size: 12.3px; line-height: 1.8;
}

/* 完整研习报告：客观盘面参数（免费） */
.zwrep-h { color: var(--gold2); font-size: 13.5px; margin-bottom: 8px; }
.zwrep-h small { color: var(--dim); font-size: 11.5px; margin-left: 8px; font-weight: 400; }
.zwpre {
  margin: 0; padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px;
  background: var(--card2); color: var(--sub); font-size: 12.5px; line-height: 1.85;
  white-space: pre-wrap; word-break: break-word; font-family: inherit;
}

/* 浅色主题：遮罩与提示块换成浅底深字，保证对比度 */
html[data-theme="light"] .zwilock { background: linear-gradient(180deg, rgba(168,132,42,.12), rgba(168,132,42,.03)); }
html[data-theme="light"] .zwibtn { background: linear-gradient(180deg, #b98d24, #8a6b1e); color: #fffaf0; }
html[data-theme="light"] .zwibtn:visited { color: #fffaf0; }
html[data-theme="light"] .zwi-warn { background: rgba(160,28,56,.07); }

/* ============================================================
   4.8 大限研习单一入口 + 本盘拆解段（第三阶段）
   ------------------------------------------------------------
   作用域：只在紫微工作台结果区。
   · #dxTable：1–10 限总览表改为只读（不可点击、鼠标不显手型），
     由「查看大限」下拉选中哪一限，对应行加高亮底色；
     窄屏改为横向滚动，避免列被挤压变形。
   · .zwchart / .zwcrow：服务端下发的「本盘拆解段」排版容器。
   本段只负责样式，不含任何解读文案（文案由服务端分级下发）。
   ============================================================ */
#dxTable { overflow-x: auto; -webkit-overflow-scrolling: touch; }
#dxTable table.tbl { min-width: 480px; }
#dxTable table.zwro tbody tr.zwdxrow { cursor: default; }
#dxTable table.zwro tbody tr.zwdxrow:hover { background: transparent; }
#dxTable table.zwro tbody tr.zwsel,
#dxTable table.zwro tbody tr.cur {
  background: linear-gradient(90deg, rgba(212,175,55,.22), rgba(212,175,55,.06));
  box-shadow: inset 3px 0 0 var(--gold2);
}
#dxTable table.zwro tbody tr.zwsel td { color: var(--txt); font-weight: 600; }

/* 本盘拆解段（服务端下发） */
.zwchart {
  margin-top: 14px; padding: 14px 16px; border: 1px solid var(--line2); border-radius: 14px;
  background: linear-gradient(180deg, rgba(168,132,42,.07), rgba(168,132,42,.02));
}
.zwchart-h { color: var(--gold2); font-size: 14px; margin: 0 0 8px; }
.zwchart-lead { color: var(--sub); font-size: 13px; line-height: 1.9; margin: 0 0 10px; }
.zwcrows { display: grid; gap: 9px; margin-top: 10px; }
.zwcrow {
  border: 1px solid var(--line); border-radius: 11px; padding: 11px 13px; background: var(--card2);
}
.zwcrow > b {
  display: inline-block; min-width: 64px; margin-right: 8px;
  color: var(--gold2); font-size: 12.5px;
}
.zwcg { color: var(--txt); font-size: 12.5px; margin-right: 8px; }
.zwcs { color: var(--dim); font-size: 12px; }
.zwcrow p { color: var(--sub); font-size: 12.8px; line-height: 1.88; margin: 6px 0 0; }
.zwcrow p.zwcnote { color: var(--dim); font-size: 12px; }
.zwchart-sum {
  margin: 10px 0 0; padding: 10px 13px; border-radius: 10px;
  border: 1px dashed var(--line2); color: var(--sub); font-size: 12.5px; line-height: 1.85;
}
.zwcgroup { margin-top: 14px; }
.zwcgroup-h {
  color: var(--gold2); font-size: 13px; margin: 0 0 6px;
  padding-left: 8px; border-left: 3px solid var(--gold2);
}
html[data-theme="light"] .zwchart { background: linear-gradient(180deg, rgba(168,132,42,.09), rgba(168,132,42,.02)); }
html[data-theme="light"] #dxTable table.zwro tbody tr.zwsel,
html[data-theme="light"] #dxTable table.zwro tbody tr.cur {
  background: linear-gradient(90deg, rgba(168,132,42,.22), rgba(168,132,42,.05));
}

/* ============================================================
   5. 全站字号放大（第三十三阶段）
   ------------------------------------------------------------
   本节**只在本文件末尾追加**，§4.8 及上方所有规则逐行未动。

   与 site.css §10 同一口径：**只覆盖 font-size**，不碰任何盒模型属性，
   故排盘台版面结构、模块位置一律保持原样。

   ⚠⚠ 布局稳定性红线（本节最高优先级，压过「放大」本身）：
     以下定宽 / 定高 / overflow:hidden 的格子，其内部字号**一律不动**，
     放大必然撑破格子或造成文字裁切：
       ① .pcell  十二宫格（4 列 · min-height:112px · overflow:hidden）
          —— 内部 .pname / .pstars .st / .pgz / .paux / .pdx / .kgtip2
             / .psha i / .paux-more / .hlbadge / .pny / .kgTag 全部保持原值；
       ② .pinfo  中宫（grid 跨 2×2 · overflow:hidden）
          —— 内部 .pmid / .mi-t / .mi-r / .mi-b / .mi-shv 全部保持原值；
             且该模块已有 ≤480px / ≤360px 两档「防溢出收紧」媒体查询在生效，
             任何放大都会直接击穿这两档保护；
       ③ .four   四柱（4 列定宽）+ .zcol / .zgz / .zzhi / .zcg / .zny
       ④ .nycard 六十甲子双栏（2 列 grid）；
       ⑤ 圆形 / 方块定尺容器内的文字：.thgan(30px) / .shtag(34px) /
          .mcls(28px) / .kxq(15px) / .brand .mark / .csthemebtn。
     上述之外的**流式正文、说明文字、表格、弹窗、报告、研习解读**
     才纳入本节的放大范围。

   幅度：≤15px 的正文与辅助字统一 +1px；>15px 的大标题本身不偏小，不动。
   ============================================================ */

/* ---- 5.1 基础正文与页头 ---- */
body { font-size: 16px; }          /* 原 15px */
header .sub { font-size: 13px; }   /* 原 12px */
header .badge { font-size: 12px; } /* 原 11px */
.tab { font-size: 16px; }          /* 原 15px */

/* ---- 5.2 卡片标题与通用提示 ---- */
.card h3 { font-size: 15px; }      /* 原 14px */
.card h3 small { font-size: 12px; }/* 原 11px */
.hint { font-size: 12px; }         /* 原 11px */
.toast { font-size: 14px; }        /* 原 13px */

/* ---- 5.3 表单（输入框字号已属可读，仅放大标签与提示类） ---- */
.fitem label { font-size: 12px; }  /* 原 11px */
.geocolhead span { font-size: 11.5px; } /* 原 10.5px */
.zitog { font-size: 11px; }        /* 原 10px */
.geohint { font-size: 11px; }      /* 原 10px */
.geoav span { font-size: 11.5px; }/* 原 10.5px */
.lonclear { font-size: 11.5px; }   /* 原 10.5px */
.lonunit { font-size: 12px; }      /* 原 11px */
.tshint { font-size: 11px; }       /* 原 10px */
.zinfo .zinotedrop { font-size: 11.5px; } /* 原 10.5px */

/* ---- 5.4 基本信息卡 / 键值行（流式两栏，放大安全） ---- */
.zinfo { font-size: 13.5px; }      /* 原 12.5px */
.zinfo .zgroup { font-size: 12px; }/* 原 11px */
.kv { font-size: 13.5px; }         /* 原 12.5px */
.lngrp summary { font-size: 13.5px; } /* 原 12.5px */

/* ---- 5.5 解读正文（空宫结论 / 提示卡 / 断事） ---- */
.kghd { font-size: 14px; }         /* 原 13px */
.kgline { font-size: 13px; }       /* 原 12px */
.kgstep { font-size: 12.5px; }     /* 原 11.5px */
.kgwarn { font-size: 12.5px; }     /* 原 11.5px */
.kgrule { font-size: 12.5px; }     /* 原 11.5px */
.domtitle { font-size: 14.5px; }   /* 原 13.5px */
.domcard p { font-size: 12.5px; }  /* 原 11.5px */
.dg { font-size: 12.5px; }         /* 原 11.5px */

/* ---- 5.6 宫位详情弹窗（max-height:82vh 可滚动，放大安全） ---- */
.msec h5 { font-size: 13px; }      /* 原 12px */
.mrow { font-size: 13.5px; }       /* 原 12.5px */
.mnote { font-size: 12.5px; }      /* 原 11.5px */
.auxnote { font-size: 12.5px; }    /* 原 11.5px */
.tipcard { font-size: 12.5px; }    /* 原 11.5px */
.mhd .mgz { font-size: 12px; }     /* 原 11px */

/* ---- 5.7 表格（#dxTable 已有 overflow-x:auto + min-width，横向可滚，放大安全） ---- */
.tbl { font-size: 12.5px; }        /* 原 11.5px */
.tbl i { font-size: 11px; }        /* 原 10px */
.dySplit { font-size: 12.5px; }    /* 原 11.5px */

/* ---- 5.8 报告 / 解读输出（长文阅读区，放大收益最大） ---- */
.report { font-size: 14px; }       /* 原 13px */
.rtxt { font-size: 14px; }         /* 原 13px */
.rsec-hd { font-size: 15px; }      /* 原 14px */
.gjfold summary { font-size: 13px; } /* 原 12px */
.gjbody { font-size: 13px; }       /* 原 12px */
.repempty-t { font-size: 15px; }   /* 原 14px */
.repempty-s { font-size: 13px; }   /* 原 12px */
.placeholder { font-size: 14px; }  /* 原 13px */
.rzhlnote { font-size: 12px; }     /* 原 11px */
.kxbar { font-size: 12.5px; }      /* 原 11.5px */
.dpfeat li { font-size: 13.5px; }  /* 原 12.5px */
.dpsub { font-size: 13px; }        /* 原 12px */
.dpnote { font-size: 12px; }       /* 原 11px */
.dpbtn2 { font-size: 13px; }       /* 原 12px */

/* ---- 5.9 深度模式 / 流年折叠 / 其它流式控件 ---- */
.modeseg button { font-size: 14px; } /* 原 13px */
.modeseg button i { font-size: 11px; }/* 原 10px */
.repbtn { font-size: 13.5px; }     /* 原 12.5px */
.secbtn { font-size: 14px; }       /* 原 13px */
.secbtn em { font-size: 14px; }     /* 原 13px */
.selrow label { font-size: 13px; } /* 原 12px */
.dx4h span { font-size: 13px; }    /* 原 12px */
.lnbox { font-size: 14.5px; }      /* 原 13.5px */
.lnfh span { font-size: 12.5px; }  /* 原 11.5px */
.ynlist span { font-size: 12px; }  /* 原 11px */
.tjhead { font-size: 14px; }       /* 原 13px */
.tjnote { font-size: 12.5px; }     /* 原 11.5px */
.shbody b { font-size: 14.5px; }   /* 原 13.5px */
.shbody p { font-size: 13px; }     /* 原 12px */
.gxrow { font-size: 14px; }        /* 原 13px */
.gxnote { font-size: 12px; }       /* 原 11px */
.sharow { font-size: 13.5px; }     /* 原 12.5px */

/* ---- 5.10 合规条 / 页脚 ---- */
.cmpbar { font-size: 13px; }       /* 原 12px */
.cmpfoot { font-size: 12.5px; }    /* 原 11.5px */
.repdisc { font-size: 12.5px; }    /* 原 11.5px */
.zphins { font-size: 12.5px; }     /* 原 11.5px */
footer { font-size: 11.5px; }      /* 原 10.5px */

/* ---- 5.11 研习 6-Tab 与页签控件 ---- */
.zwtab { font-size: 13.5px; }      /* 原 12.5px */
.zwtab i { font-size: 12px; }      /* 原 11px */
.zwsub { font-size: 12.5px; }      /* 原 11.5px */
.zwhint2 { font-size: 12.5px; }    /* 原 11.5px */
.zwmsg { font-size: 12.5px; }      /* 原 11.5px */
.zwph { font-size: 13.5px; }       /* 原 12.5px */
.dombtn { font-size: 13.5px; }     /* 原 12.5px */
.zwlnq label { font-size: 13px; }  /* 原 12px */
.zwbtn { font-size: 14px; }        /* 原 13px */
/* ★ 2026-10-16 流年研习：新增左右箭头切换年份。
   箭头与「查询」视觉同级但更轻，窄屏下允许换行且不挤压输入框。 */
.zwlnq .zwbtn[aria-label] { padding: 8px 11px; min-width: 40px; }
/* 移动端：年份框独占一行，箭头+查询+取消并排一行，避免元素挤成一条细线 */
@media (max-width: 560px) {
  .zwlnq input { flex: 1 1 100%; max-width: none; }
}
.ms-txt b { font-size: 13.5px; }   /* 原 12.5px */
.ms-txt span { font-size: 12px; }  /* 原 11px */
.msbtn { font-size: 13px; }        /* 原 12px */
.caliber > summary { font-size: 13px; } /* 原 12px */
.caliber > summary::after { font-size: 11.5px; } /* 原 10.5px */

/* ---- 5.12 会员分级研习解读（长文，放大收益最大） ---- */
.zwi-pending { font-size: 14px; }  /* 原 13px */
.zwilock-t { font-size: 15.5px; }  /* 原 14.5px */
.zwilock-p { font-size: 14px; }    /* 原 13px */
.zwibtn { font-size: 14.5px; }     /* 原 13.5px */
.zwi-lead p { font-size: 14.5px; } /* 原 13.5px */
.zwi-item h4 { font-size: 14.5px; }/* 原 13.5px */
.zwi-item p { font-size: 14px; }   /* 原 13px */
.zwi-card h4 { font-size: 14.5px; }/* 原 13.5px */
.zwi-card p { font-size: 13.8px; } /* 原 12.8px */
.zwi-note { font-size: 13.8px; }   /* 原 12.8px */
.zwi-warn { font-size: 13.8px; }   /* 原 12.8px */
.zwi-tail { font-size: 13.3px; }   /* 原 12.3px */
.zwrep-h { font-size: 14.5px; }    /* 原 13.5px */
.zwrep-h small { font-size: 12.5px; } /* 原 11.5px */
.zwpre { font-size: 13.5px; }      /* 原 12.5px */

/* ---- 5.13 本盘拆解段（服务端下发） ---- */
.zwchart-h { font-size: 15px; }    /* 原 14px */
.zwchart-lead { font-size: 14px; } /* 原 13px */
.zwchart-sum { font-size: 13.5px; }/* 原 12.5px */
.zwcrow > b { font-size: 13.5px; } /* 原 12.5px */
.zwcg { font-size: 13.5px; }       /* 原 12.5px */
.zwcs { font-size: 13px; }         /* 原 12px */
.zwcrow p { font-size: 13.8px; }   /* 原 12.8px */
.zwcrow p.zwcnote { font-size: 13px; } /* 原 12px */
.zwcgroup-h { font-size: 14px; }   /* 原 13px */

/* ---- 5.14 窄屏同步放大 ----
   移动端基础字号本就偏小，本节在 §5.1–§5.13 之上再各 +0.5px。
   ⚠ 中宫 .pinfo 与十二宫格 .pcell 在窄屏下本就依赖既有「防溢出收紧」规则，
     本节刻意**不覆盖**其任何内部字号，以免击穿 §4 末尾那两档保护。 */
@media (max-width: 720px) {
  body { font-size: 16.5px; }
  .tab { font-size: 16.5px; }
  .card h3 { font-size: 15.5px; }
  .hint { font-size: 12.5px; }
  .fitem label { font-size: 12.5px; }
  .zinfo { font-size: 14px; }
  .kv { font-size: 14px; }
  .kgline { font-size: 13.5px; }
  .kgstep, .kgwarn, .kgrule { font-size: 13px; }
  .domcard p { font-size: 13px; }
  .dg { font-size: 13px; }
  .mrow { font-size: 14px; }
  .mnote, .auxnote, .tipcard { font-size: 13px; }
  .tbl { font-size: 13px; }
  .tbl i { font-size: 11.5px; }
  .report, .rtxt { font-size: 14.5px; }
  .rsec-hd { font-size: 15.5px; }
  .gjbody { font-size: 13.5px; }
  .secbtn { font-size: 14.5px; }
  .repbtn { font-size: 14px; }
  .zwtab { font-size: 14px; }
  .zwtab i { font-size: 12.5px; }
  .zwi-lead p, .zwi-item h4, .zwi-card h4, .zwrep-h { font-size: 15px; }
  .zwi-item p, .zwilock-p { font-size: 14.5px; }
  .zwi-card p, .zwi-note, .zwi-warn, .zwcrow p { font-size: 14.3px; }
  .zwpre { font-size: 14px; }
  .zwchart-lead { font-size: 14.5px; }
  footer { font-size: 12px; }
}
