/*    ============================================================
   潜龙八字 · UI 备选方案 F · 未来（数据终端）· 组件补丁层
   皮肤 id：nova     全文件作用域在 [data-skin="nova"] 下（切走皮肤即全量失效）

   定位：把 readability.css（可读性机制层）与 xy3.css（运岁三列）当**骨架**，
         在它们之上做一次「仪表化重绘」——只改渲染，不动判定，不碰 JS。
   本文件**不得**破坏机制层的两条硬约束：
     ① 五行色不落文字（.gz / .zg-item / .ssf-gz 的 color 一律仍为 --ink 系）；
     ② 运岁三列并列（.xy-pane 仍是三列，不得改回四页签并列）。
   骨架差异一律用 #viewportStage[data-shell=...]，本文件**零断点型 @media**
   （只有 prefers-reduced-motion 一条降级）。

   形：直角（--r-* 收到 2 至 6px）＋ 切角（clip-path 只用在小组件上，不用在卡片上，
       以免 clip-path 吃掉卡片的外层微光）；1px 精密网格线；多层 inset 微光。
   数：等宽数字（tabular-nums）＋ 分段刻度尺 ＋ 数据槽 + 热力带。
   色：唯一强调色 = 荧光青；暖色只有印章一处；主视觉无紫到粉渐变。
   ============================================================ */

/* ============================================================
   1 · 全局底与坐标系（覆盖 app.css 的宣纸金褐点阵）
   ============================================================ */
[data-skin="nova"] body{
  background:var(--bg);
  letter-spacing:.01em;
}
[data-skin="nova"] #app{
  background:var(--bg);
  background-image:
    radial-gradient(rgba(77,227,208,.062) 1px, transparent 1.3px),
    linear-gradient(180deg, rgba(77,227,208,.055), rgba(77,227,208,0) 300px);
  background-size:22px 22px, 100% 300px;
  background-repeat:repeat, no-repeat;
}
[data-skin="nova"] .page{padding-top:var(--sp-4)}

/* 选区与焦点环：深底上必须够亮（WCAG 2.4.7） */
[data-skin="nova"] ::selection{background:var(--brand-soft); color:var(--ink)}
[data-skin="nova"] :focus-visible{
  outline:2px solid var(--brand);
  outline-offset:2px;
  box-shadow:0 0 0 5px var(--brand-glow);
}
[data-skin="nova"] .tab:focus-visible,
[data-skin="nova"] .quick:focus-visible,
[data-skin="nova"] .record-card:focus-visible,
[data-skin="nova"] .mine-row:focus-visible,
[data-skin="nova"] .tl-item:focus-visible,
[data-skin="nova"] .seg:focus-visible{outline-offset:-2px; box-shadow:none}
[data-skin="nova"] .field input:focus,
[data-skin="nova"] .field select:focus,
[data-skin="nova"] .cfg-field input:focus,
[data-skin="nova"] .cfg-field select:focus,
[data-skin="nova"] .ai-input input:focus,
[data-skin="nova"] .ql-modal-input:focus,
[data-skin="nova"] .skin-pick:focus,
[data-skin="nova"] .ai-mini:focus{
  outline:none;
  border-color:var(--brand);
  box-shadow:inset 0 0 0 1px var(--brand), 0 0 0 4px var(--brand-soft);
}

/* 滚动条：细导轨 + 游标（track 有底，thumb 有品牌色） */
[data-skin="nova"] .tl-scroll,
[data-skin="nova"] .detail-scroll,
[data-skin="nova"] .ai-msgs,
[data-skin="nova"] .rp-tablewrap,
[data-skin="nova"] .rp-toc-side,
[data-skin="nova"] .basis-body,
[data-skin="nova"] .dr-body,
[data-skin="nova"] .ql-modal{
  scrollbar-width:thin;
  scrollbar-color:var(--brand) var(--surface-2);
}
[data-skin="nova"] .tl-scroll::-webkit-scrollbar,
[data-skin="nova"] .detail-scroll::-webkit-scrollbar,
[data-skin="nova"] .ai-msgs::-webkit-scrollbar,
[data-skin="nova"] .rp-tablewrap::-webkit-scrollbar,
[data-skin="nova"] .rp-toc-side::-webkit-scrollbar,
[data-skin="nova"] .basis-body::-webkit-scrollbar,
[data-skin="nova"] .dr-body::-webkit-scrollbar{width:7px; height:7px}
[data-skin="nova"] .tl-scroll::-webkit-scrollbar-track,
[data-skin="nova"] .detail-scroll::-webkit-scrollbar-track,
[data-skin="nova"] .ai-msgs::-webkit-scrollbar-track,
[data-skin="nova"] .rp-tablewrap::-webkit-scrollbar-track,
[data-skin="nova"] .rp-toc-side::-webkit-scrollbar-track,
[data-skin="nova"] .basis-body::-webkit-scrollbar-track,
[data-skin="nova"] .dr-body::-webkit-scrollbar-track{background:var(--surface-2); border-radius:0}
[data-skin="nova"] .tl-scroll::-webkit-scrollbar-thumb,
[data-skin="nova"] .detail-scroll::-webkit-scrollbar-thumb,
[data-skin="nova"] .ai-msgs::-webkit-scrollbar-thumb,
[data-skin="nova"] .rp-tablewrap::-webkit-scrollbar-thumb,
[data-skin="nova"] .rp-toc-side::-webkit-scrollbar-thumb,
[data-skin="nova"] .basis-body::-webkit-scrollbar-thumb,
[data-skin="nova"] .dr-body::-webkit-scrollbar-thumb{
  background:var(--brand); border-radius:0; border:1px solid var(--bg);
}
/* 已剔除（260922 实测）：原方案在此给 `.ql-watermark`（旧手机水印·繁体潛龍）调过色，
   但该元件已整体退役（由版式层 `.watermark` 取代，见 web/css/app.css 水印段）。
   ⇒ 引用失效，整条删除。留痕原因：避免后续误以为「皮肤要管水印颜色」——
   新版水印的颜色是**版式层统一消费 --line-strong**，皮肤不需要、也不应该各写一遍。 */

/* ============================================================
   2 · 顶栏 / 导航（三套骨架同源）
   ============================================================ */
[data-skin="nova"] .apphead{border-bottom:1px solid var(--line); padding-bottom:var(--sp-3)}
[data-skin="nova"] .seal{
  width:40px; height:40px;
  background:var(--gold);
  color:var(--bg);
  border-radius:2px;
  transform:none;
  font-family:var(--font-sans);
  font-weight:800;
  letter-spacing:0;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.28);
  clip-path:polygon(0 0, calc(100% - 9px) 0, 100% 9px, 100% 100%, 9px 100%, 0 calc(100% - 9px));
}
[data-skin="nova"] .sb-seal{
  background:var(--gold); color:var(--bg); border-radius:2px; font-family:var(--font-sans);
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.28);
}
[data-skin="nova"] .seal-mini{
  background:var(--gold); color:var(--bg); border-radius:2px; font-family:var(--font-sans);
  transform:none; box-shadow:inset 0 0 0 1px rgba(0,0,0,.28);
}
[data-skin="nova"] .brand-name{letter-spacing:.06em; font-family:var(--font-sans)}
[data-skin="nova"] .brand-sub{
  font-size:var(--fs-sm);
  color:var(--ink-3);
  letter-spacing:.14em;
}
[data-skin="nova"] .iconbtn{
  width:38px; height:38px; border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface-2);
  color:var(--ink-2);
}
[data-skin="nova"] .iconbtn:hover{border-color:var(--brand); color:var(--brand); background:var(--surface-3)}

/* 侧栏（平板 / 桌面 / 宽屏）：通道条式导航 */
[data-skin="nova"] #viewportStage[data-shell="tab"] .tabbar,
[data-skin="nova"] #viewportStage[data-shell="desk"] .tabbar,
[data-skin="nova"] #viewportStage[data-shell="wide"] .tabbar{
  background:var(--surface);
  border-right:1px solid var(--line-strong);
  box-shadow:none;
}
[data-skin="nova"] .side-brand .sb-name{font-family:var(--font-sans); letter-spacing:.06em}
[data-skin="nova"] .side-brand .sb-sub{font-size:var(--fs-sm); letter-spacing:.1em}
[data-skin="nova"] .sb-toggle{
  height:36px; border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface-2);
  color:var(--ink-2);
  font-size:var(--fs-sm);
}
[data-skin="nova"] .sf-k{font-size:var(--fs-min,12px); letter-spacing:.16em; color:var(--ink-3)}
[data-skin="nova"] .skin-pick{
  border-radius:2px; border:1px solid var(--line-strong);
  background:var(--surface-2); color:var(--ink); font-size:var(--fs-sm);
}
[data-skin="nova"] .side-foot .sf-note{font-size:var(--fs-min,12px); color:var(--ink-3)}

/* 底栏（手机骨架）：游标 + 顶部发光条 */
[data-skin="nova"] #viewportStage[data-shell="phone"] .tabbar{
  background:var(--surface);
  border-top:1px solid var(--line-strong);
}
[data-skin="nova"] #viewportStage[data-shell="phone"] .tab{font-size:var(--fs-sm); letter-spacing:.06em}
[data-skin="nova"] .tab.active{color:var(--brand)}
[data-skin="nova"] .tab.active::before{
  width:26px; height:2px; border-radius:0;
  background:var(--brand);
  box-shadow:0 0 10px var(--brand-glow);
}
[data-skin="nova"] #viewportStage[data-shell="tab"] .tab.active,
[data-skin="nova"] #viewportStage[data-shell="desk"] .tab.active,
[data-skin="nova"] #viewportStage[data-shell="wide"] .tab.active{
  background:var(--brand-soft);
  color:var(--brand);
  border-radius:2px;
}
[data-skin="nova"] #viewportStage[data-shell="tab"] .tab.active::before,
[data-skin="nova"] #viewportStage[data-shell="desk"] .tab.active::before,
[data-skin="nova"] #viewportStage[data-shell="wide"] .tab.active::before{
  width:3px; height:20px; border-radius:0;
  background:var(--brand);
  box-shadow:0 0 10px var(--brand-glow);
}
[data-skin="nova"] .hamburger{
  border-radius:2px; border:1px solid var(--line-strong);
  background:var(--surface-2); color:var(--ink-2);
}
[data-skin="nova"] #sbDrawer{
  background:var(--surface);
  border-right:1px solid var(--line-strong);
  box-shadow:12px 0 40px rgba(0,0,0,.6);
}
[data-skin="nova"] #sbDrawer .dr-close{border-radius:2px; border:1px solid var(--line-strong)}
[data-skin="nova"] #sbDrawer .dr-note{font-size:var(--fs-min,12px)}

/* ============================================================
   3 · 卡片 / 折叠（四角定位角标 + 顶部刻度）
   ============================================================ */
[data-skin="nova"] .card{
  position:relative;
  border:1px solid var(--line-strong);
  border-radius:var(--r-lg);
  background:var(--surface);
  box-shadow:var(--shadow-sm), inset 0 1px 0 rgba(77,227,208,.05);
}
/* 原「宣纸描金内双线」改为：四角定位角标（8 段 1.5px 线段，两两成 L 角） */
[data-skin="nova"] .card::after{
  content:"";
  position:absolute; inset:-1px;
  border:0;
  border-radius:inherit;
  opacity:1;
  pointer-events:none;
  background-image:
    linear-gradient(var(--brand) 0 0), linear-gradient(var(--brand) 0 0),
    linear-gradient(var(--brand) 0 0), linear-gradient(var(--brand) 0 0),
    linear-gradient(var(--brand) 0 0), linear-gradient(var(--brand) 0 0),
    linear-gradient(var(--brand) 0 0), linear-gradient(var(--brand) 0 0);
  background-repeat:no-repeat;
  background-size:10px 1.5px, 1.5px 10px, 10px 1.5px, 1.5px 10px,
                  10px 1.5px, 1.5px 10px, 10px 1.5px, 1.5px 10px;
  background-position:left top, left top, right top, right top,
                      left bottom, left bottom, right bottom, right bottom;
}
[data-skin="nova"] .card-title{
  position:relative;
  font-size:var(--fs-md);
  font-weight:800;
  letter-spacing:.1em;
  border-bottom:1px solid var(--line-strong);
  padding-bottom:8px;
  margin-bottom:var(--sp-3);
}
[data-skin="nova"] .card-title .tick{
  width:3px; height:16px; border-radius:0;
  background:linear-gradient(180deg, var(--brand) 0 55%, var(--line-strong) 55%);
  box-shadow:none;
}
[data-skin="nova"] .card-title .sub{font-size:var(--fs-min,12px); letter-spacing:.06em; font-weight:500}
[data-skin="nova"] .form-title .tick{
  width:3px; height:16px; border-radius:0;
  background:linear-gradient(180deg, var(--brand) 0 55%, var(--line-strong) 55%);
}
[data-skin="nova"] .form-title{font-size:var(--fs-base)}
[data-skin="nova"] .ft-sub{font-size:var(--fs-min,12px); letter-spacing:.16em}
[data-skin="nova"] .cf>.cf-head{font-size:var(--fs-md); letter-spacing:.08em}
[data-skin="nova"] .cf>.cf-head .tick{
  width:3px; height:16px; border-radius:0;
  background:linear-gradient(180deg, var(--brand) 0 55%, var(--line-strong) 55%);
}
[data-skin="nova"] .cf>.cf-head .sub{font-size:var(--fs-min,12px)}
[data-skin="nova"] .cf>.cf-head .cf-arrow{color:var(--brand)}
[data-skin="nova"] .cf>.cf-body{border-top:1px solid var(--line-strong)}
[data-skin="nova"] .basis{margin-top:var(--sp-3); border-top:1px solid var(--line)}
[data-skin="nova"] .basis>summary{
  font-size:var(--fs-min,12px);
  color:var(--gold-text);
  letter-spacing:.08em;
}
[data-skin="nova"] .basis-body{
  background:var(--surface-2);
  border:1px solid var(--line);
  border-radius:var(--r-sm);
  font-size:var(--fs-min,12px);
}
[data-skin="nova"] .basis-calc code.ref,
[data-skin="nova"] .basis-src code.ref{
  background:var(--surface-3);
  border:1px solid var(--line);
  border-radius:2px;
  color:var(--ink);
}
[data-skin="nova"] .basis-src{font-size:var(--fs-min,12px); color:var(--ink-2)}
[data-skin="nova"] .kv{font-size:var(--fs-base); border-bottom:1px dashed var(--line)}
[data-skin="nova"] .kv .k{color:var(--ink-3); width:88px; letter-spacing:.06em}
[data-skin="nova"] .kv .v{font-variant-numeric:tabular-nums}
[data-skin="nova"] .muted{font-size:var(--fs-min,12px); color:var(--ink-3)}

/* ============================================================
   4 · 分段控制器 / 按钮 / 表单（浅色硬编码集中修补区之一）
   ============================================================ */
[data-skin="nova"] .segmented{
  background:var(--surface-2);
  border:1px solid var(--line-strong);
  border-radius:var(--r-md);
  padding:3px; gap:3px;
}
[data-skin="nova"] .mode-toggle{padding:var(--sp-2) var(--sp-3)}
[data-skin="nova"] .mt-label{font-size:var(--fs-sm); letter-spacing:.1em}
[data-skin="nova"] .segmented .seg{
  border-radius:2px;
  color:var(--ink-2);
  font-size:var(--fs-sm);
  letter-spacing:.08em;
}
[data-skin="nova"] .segmented .seg:hover{color:var(--ink); background:var(--surface-3)}
[data-skin="nova"] .segmented .seg.active{
  background:var(--brand);
  color:var(--bg);
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.22);
}
[data-skin="nova"] .segmented .seg:disabled{opacity:.4; cursor:not-allowed}
[data-skin="nova"] .primary-btn{
  background:var(--brand);
  background-image:linear-gradient(180deg, rgba(255,255,255,.16), rgba(0,0,0,.12));
  color:var(--bg);
  border-radius:2px;
  letter-spacing:.2em;
  font-size:var(--fs-md);
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.2);
  clip-path:polygon(0 0, calc(100% - 12px) 0, 100% 12px, 100% 100%, 12px 100%, 0 calc(100% - 12px));
}
[data-skin="nova"] .primary-btn:hover{
  filter:none;
  background-image:linear-gradient(180deg, rgba(255,255,255,.30), rgba(0,0,0,.10));
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.2), inset 0 0 22px var(--brand-glow);
}
[data-skin="nova"] .primary-btn:disabled{opacity:.42; cursor:not-allowed}
[data-skin="nova"] .mini-btn{
  background:var(--surface-2);
  color:var(--ink);
  border:1px solid var(--line-strong);
  border-radius:2px;
  font-size:var(--fs-sm);
  letter-spacing:.06em;
}
[data-skin="nova"] .mini-btn:hover{background:var(--surface-3); border-color:var(--brand); color:var(--brand)}
[data-skin="nova"] .err{
  background:var(--danger);
  color:var(--bg);
  border-radius:var(--r-sm);
  font-size:var(--fs-base);
  font-weight:700;
}
[data-skin="nova"] .field{font-size:var(--fs-min,12px); letter-spacing:.04em}
[data-skin="nova"] .field input,
[data-skin="nova"] .field select{
  background:var(--surface-2);
  color:var(--ink);
  border:1px solid var(--line-strong);
  border-radius:2px;
  font-size:var(--fs-base);
  font-variant-numeric:tabular-nums;
  box-shadow:inset 0 1px 2px rgba(0,0,0,.45);
}
[data-skin="nova"] .field input::placeholder{color:var(--ink-3)}
[data-skin="nova"] .field input[type=checkbox]{accent-color:var(--brand); border-radius:2px}
[data-skin="nova"] .form-hint{font-size:var(--fs-min,12px); color:var(--ink-3); line-height:1.7}
[data-skin="nova"] .cfg-field>span{font-size:var(--fs-min,12px); letter-spacing:.06em}
[data-skin="nova"] .cfg-field input,
[data-skin="nova"] .cfg-field select{
  background:var(--surface-2); color:var(--ink);
  border:1px solid var(--line-strong); border-radius:2px;
  font-variant-numeric:tabular-nums;
}
[data-skin="nova"] .sample-gtag{font-size:var(--fs-min,12px); letter-spacing:.16em}
[data-skin="nova"] .sample-chip{
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface-2);
}
[data-skin="nova"] .sample-chip:hover{
  border-color:var(--brand);
  background:var(--surface-3);
  transform:none;
}
[data-skin="nova"] .sample-chip .sc-name{font-size:var(--fs-base)}
[data-skin="nova"] .sample-chip .sc-meta{font-size:var(--fs-min,12px); color:var(--ink-3); font-variant-numeric:tabular-nums}
[data-skin="nova"] .sample-note{font-size:var(--fs-min,12px)}
[data-skin="nova"] .sample-empty{font-size:var(--fs-min,12px)}
[data-skin="nova"] .quick{
  border-radius:2px; border:1px solid var(--line-strong); background:var(--surface);
}
[data-skin="nova"] .quick:hover{border-color:var(--brand); box-shadow:var(--shadow-md)}
[data-skin="nova"] .quick .q-t{font-size:var(--fs-base); letter-spacing:.06em}
[data-skin="nova"] .quick .q-d{font-size:var(--fs-min,12px); color:var(--ink-2)}
[data-skin="nova"] .quick .q-r{font-size:var(--fs-min,12px); color:var(--gold-text); letter-spacing:.1em}

/* ============================================================
   5 · 命主铭牌（hero 组首次真消费）
   ============================================================ */
[data-skin="nova"] .user-card{
  position:relative;
  background:var(--hero-surface);
  background-image:
    linear-gradient(180deg, rgba(77,227,208,.07), rgba(77,227,208,0) 62%),
    repeating-linear-gradient(90deg, rgba(255,255,255,.026) 0 1px, transparent 1px 12px);
  color:var(--hero-text);
  border:1px solid var(--hero-line);
  border-radius:var(--r-lg);
  box-shadow:var(--shadow-md);
}
[data-skin="nova"] .user-card::after{
  content:"";
  position:absolute; inset:0;
  pointer-events:none;
  border-radius:inherit;
  background-image:
    linear-gradient(var(--brand) 0 0), linear-gradient(var(--brand) 0 0),
    linear-gradient(var(--brand) 0 0), linear-gradient(var(--brand) 0 0),
    linear-gradient(var(--brand) 0 0), linear-gradient(var(--brand) 0 0),
    linear-gradient(var(--brand) 0 0), linear-gradient(var(--brand) 0 0);
  background-repeat:no-repeat;
  background-size:12px 1.5px, 1.5px 12px, 12px 1.5px, 1.5px 12px,
                  12px 1.5px, 1.5px 12px, 12px 1.5px, 1.5px 12px;
  background-position:left top, left top, right top, right top,
                      left bottom, left bottom, right bottom, right bottom;
}
[data-skin="nova"] .user-avatar{
  border-radius:var(--r-sm);
  background:var(--brand);
  color:var(--bg);
  font-weight:800;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.22);
}
[data-skin="nova"] .user-info .u-name{letter-spacing:.06em}
[data-skin="nova"] .user-info .u-line{
  font-size:var(--fs-min,12px);
  color:var(--hero-dim);
  letter-spacing:.03em;
  font-variant-numeric:tabular-nums;
}
[data-skin="nova"] .user-info .u-line b{color:var(--gold-text)}
[data-skin="nova"] .user-card .mini-btn{
  background:rgba(255,255,255,.06);
  color:var(--hero-text);
  border:1px solid var(--hero-line);
}
[data-skin="nova"] .user-card .mini-btn:hover{
  background:rgba(255,255,255,.12);
  border-color:var(--brand);
  color:var(--brand);
}

/* ============================================================
   6 · 干支「数据槽」与五行色条（要点：文字一律 --ink，色相只走条/纹）
   ============================================================ */
[data-skin="nova"] .gz{
  font-family:var(--font-sans);
  font-weight:800;
  letter-spacing:.02em;
  position:relative;
}
[data-skin="nova"] .gz[data-wx]{
  display:inline-block;
  background:var(--surface-2);
  border:1px solid var(--line-thin);
  border-radius:2px;
  padding:0 .2em .04em;
  box-shadow:inset 0 1px 3px rgba(0,0,0,.55);
}
/* 槽底指示灯：把 readability 的短色条改成整宽 2px（读起来像仪表格） */
[data-skin="nova"] .gz[data-wx]::after{
  left:0; transform:none;
  width:100%; height:2px;
  border-radius:0 0 1px 1px;
  bottom:0;
}
/* 藏干小字：墨色文字 + 五行淡底纹 + 1px 细线（改圆角为直角） */
[data-skin="nova"] .zg-item[data-wx]{
  border-radius:2px;
  border:1px solid var(--line-thin);
  padding:0 4px;
  font-variant-numeric:tabular-nums;
}
[data-skin="nova"] .ssf-gz{
  font-family:var(--font-sans);
  letter-spacing:.04em;
  font-variant-numeric:tabular-nums;
}
[data-skin="nova"] .ssf-var{font-size:var(--fs-min-2,10.5px); color:var(--warn)}
[data-skin="nova"] .ssf-item{font-size:var(--fs-min,12px); border-bottom:1px solid var(--line-thin); padding:3px 0}
[data-skin="nova"] .ssf-item:last-child{border-bottom:0}

/* ============================================================
   7 · 四柱总览表（表头刻度尺 + 行标签列 + 手机骨架）
   ============================================================ */
[data-skin="nova"] .pillars-table{font-size:var(--fs-min,12px); font-variant-numeric:tabular-nums}
[data-skin="nova"] .pillars-table th,
[data-skin="nova"] .pillars-table td{border:1px solid var(--line); padding:8px 5px}
[data-skin="nova"] .pillars-table th{
  position:relative;
  background:var(--surface-3);
  color:var(--ink-2);
  font-weight:800;
  letter-spacing:.12em;
  padding-bottom:10px;
}
/* 表头刻度尺：currentColor 小刻度，随表头前景自动换色（不必写死色值） */
[data-skin="nova"] .pillars-table th::after{
  content:"";
  position:absolute; left:0; right:0; bottom:0; height:4px;
  background-image:repeating-linear-gradient(90deg, currentColor 0 1px, transparent 1px 9px);
  opacity:.42;
  pointer-events:none;
}
[data-skin="nova"] .pillars-table th.col-day{
  background:var(--brand);
  color:var(--bg);
  letter-spacing:.18em;
}
[data-skin="nova"] .pillars-table th .col-year-tag{color:var(--bg); font-size:var(--fs-min,12px); font-weight:700}
[data-skin="nova"] .pillars-table .row-name{
  background:var(--surface-3);
  color:var(--ink-2);
  letter-spacing:.1em;
  box-shadow:1px 0 0 var(--line-strong);
}
[data-skin="nova"] .pillars-table .col-day{background:var(--brand-soft)}
[data-skin="nova"] .pillars-table .gz-sub{font-size:var(--fs-min,12px); color:var(--ink-3)}
[data-skin="nova"] .qz-table .sub-cell{font-size:var(--fs-min,12px); color:var(--ink-2)}
[data-skin="nova"] .qz-table .shishen-cell{color:var(--ink)}
[data-skin="nova"] .pillars-table .relation-row{background:var(--surface-2)}
[data-skin="nova"] .pillars-table .relation-row td{
  border-color:var(--line);
  color:var(--ink-2);
  font-size:var(--fs-min,12px);
}
[data-skin="nova"] .pillars-table .relation-row td .rel-tag{
  border-radius:2px;
  border:1px solid var(--accent);
  background:transparent;
  color:var(--accent);
  font-size:var(--fs-min,12px);
  font-weight:700;
}
/* 手机骨架：行标签列收窄后仍要「看得出是通道标识」 */
[data-skin="nova"] #viewportStage[data-shell="phone"] .pillars-table .row-name{
  background:var(--surface-3);
  color:var(--ink-2);
  font-size:var(--fs-min,12px);
  box-shadow:1px 0 0 var(--line-strong);
}
[data-skin="nova"] .detail-scroll{scrollbar-color:var(--brand) var(--surface-2)}
[data-skin="nova"] .detail-line{font-size:var(--fs-min,12px); color:var(--ink-3); line-height:1.7}

/* ============================================================
   8 · 五行力量（带刻度的百分比条）与旺衰读数
   ============================================================ */
[data-skin="nova"] .wx-bar{
  position:relative;
  height:18px;
  border:1px solid var(--line-strong);
  background:var(--surface-2);
  box-shadow:inset 0 1px 3px rgba(0,0,0,.5);
}
/* 10% 分格刻度：绝对定位伪元素（不进 flex 流，不挤占各段宽度） */
[data-skin="nova"] .wx-bar::after{
  content:"";
  position:absolute; inset:0;
  pointer-events:none;
  background-image:repeating-linear-gradient(90deg, var(--bg) 0 1px, transparent 1px 10%);
  opacity:.55;
}
[data-skin="nova"] .wx-bar .seg{box-shadow:inset 0 0 0 1px rgba(0,0,0,.18)}
[data-skin="nova"] .wx-legend .wx-item{font-size:var(--fs-min,12px); letter-spacing:.04em}
[data-skin="nova"] .wx-legend .wx-item b{
  color:var(--ink);
  font-variant-numeric:tabular-nums;
  background:var(--surface-2);
  border:1px solid var(--line);
  border-radius:2px;
  padding:0 5px;
  margin-left:2px;
}
[data-skin="nova"] .wx-legend .wx-dot{
  width:9px; height:9px; border-radius:1px;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.45);
}
[data-skin="nova"] .wx-season{
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface-2);
  font-size:var(--fs-min,12px);
  line-height:1.7;
}
[data-skin="nova"] .duo-bar{border-radius:0; border:1px solid var(--line-strong); height:12px}
[data-skin="nova"] .duo-txt{font-size:var(--fs-min,12px); font-variant-numeric:tabular-nums}
[data-skin="nova"] .three-stat{gap:var(--sp-2)}

/* 状态读数（stat-pill）：大数字 + 三格信号条 */
[data-skin="nova"] .stat-pill{
  background:var(--surface-2);
  border:1px solid var(--line-strong);
  border-radius:2px;
  padding:9px 4px 7px;
}
[data-skin="nova"] .stat-pill .v{
  font-size:var(--fs-lg);
  line-height:1.1;
  font-variant-numeric:tabular-nums;
}
[data-skin="nova"] .stat-pill .k{font-size:var(--fs-min,12px); color:var(--ink-3); margin-top:4px; letter-spacing:.04em}
[data-skin="nova"] .stat-pill::after{
  content:"";
  display:block;
  height:3px; margin:6px auto 0; width:60%;
  background-image:repeating-linear-gradient(90deg, var(--line-strong) 0 4px, transparent 4px 6px);
}
[data-skin="nova"] .stat-pill.ok::after{background-image:repeating-linear-gradient(90deg, var(--ok) 0 4px, transparent 4px 6px)}
[data-skin="nova"] .stat-pill.no::after{background-image:repeating-linear-gradient(90deg, var(--danger) 0 4px, transparent 4px 6px)}
[data-skin="nova"] .stat-pill.mid::after{background-image:repeating-linear-gradient(90deg, var(--warn) 0 4px, transparent 4px 6px)}

/* ============================================================
   9 · 格局 / 用神 / 神煞（浅色硬编码修补区之二）
   ============================================================ */
[data-skin="nova"] .pattern-head{gap:var(--sp-3)}
[data-skin="nova"] .pattern-name{
  font-family:var(--font-sans);
  font-size:var(--fs-2xl);
  letter-spacing:.14em;
}
[data-skin="nova"] .pattern-src{font-size:var(--fs-min,12px); color:var(--ink-3); letter-spacing:.04em}
[data-skin="nova"] .band-pill{
  border-radius:2px;
  color:var(--bg);
  letter-spacing:.12em;
  padding:5px 14px;
}
[data-skin="nova"] .band-pill.weak{background:var(--accent); color:var(--bg)}
[data-skin="nova"] .band-pill.strong{background:var(--brand); color:var(--bg)}
/* 特殊变式 chip：原为浅黄渐变灯箱，改为「琥珀标记灯 + 直角细框」 */
[data-skin="nova"] .pattern-special-row{gap:var(--sp-2)}
[data-skin="nova"] .pattern-special-chip{
  background:var(--surface-2);
  color:var(--ink);
  border:1px solid var(--gold);
  border-radius:2px;
  padding:4px 10px;
  box-shadow:none;
  font-size:var(--fs-min,12px);
  font-weight:700;
}
[data-skin="nova"] .pattern-special-chip::before{
  content:"";
  width:6px; height:6px; border-radius:1px;
  background:var(--gold);
  box-shadow:0 0 7px var(--gold);
}
/* 成 / 破 / 平 / 胜任：状态信号灯（灯 + 文字，二者同时在位） */
[data-skin="nova"] .pattern-chg-pill{
  position:relative;
  padding:4px 10px 4px 22px;
  border-radius:2px;
  background:var(--surface-2);
  border:1px solid var(--line-strong);
  color:var(--ink);
  font-size:var(--fs-min,12px);
  font-weight:700;
}
[data-skin="nova"] .pattern-chg-pill::before{
  content:"";
  position:absolute; left:8px; top:50%;
  width:7px; height:7px; margin-top:-3.5px;
  border-radius:50%;
  background:var(--line-strong);
}
[data-skin="nova"] .pattern-chg-pill.good{border-color:var(--ok); color:var(--ok)}
[data-skin="nova"] .pattern-chg-pill.good::before{background:var(--ok); box-shadow:0 0 8px var(--ok)}
[data-skin="nova"] .pattern-chg-pill.bad{border-color:var(--danger); color:var(--danger)}
[data-skin="nova"] .pattern-chg-pill.bad::before{background:var(--danger); box-shadow:0 0 8px var(--danger)}
[data-skin="nova"] .pattern-chg-pill.mid{border-color:var(--warn); color:var(--warn)}
[data-skin="nova"] .pattern-chg-pill.mid::before{background:var(--warn); box-shadow:0 0 8px var(--warn)}
[data-skin="nova"] .pattern-chg-pill.ok{border-color:var(--info); color:var(--info)}
[data-skin="nova"] .pattern-chg-pill.ok::before{background:var(--info); box-shadow:0 0 8px var(--info)}
[data-skin="nova"] .pattern-chg-reason{font-size:var(--fs-min,12px); color:var(--ink-3)}
[data-skin="nova"] .pattern-yan-row{
  font-size:var(--fs-min,12px);
  border-bottom:1px solid var(--line-thin);
  padding:6px 0;
}
[data-skin="nova"] .pattern-yan-row .yan-k{
  border-radius:2px;
  background:var(--surface-2);
  border:1px solid var(--line-strong);
  color:var(--brand);
  font-size:var(--fs-min,12px);
  letter-spacing:.06em;
}
[data-skin="nova"] .pattern-yan-row .yan-v{color:var(--ink-2)}

/* 用神三派 */
[data-skin="nova"] .ys-card{
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface-2);
}
[data-skin="nova"] .ys-card.main{
  border-color:var(--brand);
  background:var(--surface-2);
  box-shadow:inset 2px 0 0 var(--brand);
}
[data-skin="nova"] .ys-head{font-size:var(--fs-min,12px); letter-spacing:.08em}
[data-skin="nova"] .ys-tag{
  border-radius:2px;
  background:var(--surface-3);
  color:var(--ink-2);
  font-size:var(--fs-min-2,10.5px);
  border:1px solid var(--line-strong);
  letter-spacing:.1em;
}
[data-skin="nova"] .ys-tag.main{background:var(--brand); color:var(--bg); border-color:var(--brand)}
[data-skin="nova"] .ys-body{font-size:var(--fs-min,12px); color:var(--ink-2); line-height:1.8}
[data-skin="nova"] .ys-body b{color:var(--ink)}
[data-skin="nova"] .ys-final{
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface-2);
  box-shadow:inset 2px 0 0 var(--accent-soft);
}
[data-skin="nova"] .ys-final-row{font-size:var(--fs-min,12px)}
[data-skin="nova"] .ys-final-row .v{font-variant-numeric:tabular-nums}
[data-skin="nova"] .ys-conflicts{border:1px dashed var(--warn); border-radius:2px; background:var(--surface-2)}
[data-skin="nova"] .ys-conflict-item{font-size:var(--fs-min,12px); border-bottom:1px dotted var(--line)}

/* 免责声明 / 病源卡 / 子时口径卡：一律 1px 全框（不用 3px 侧条纹），档位靠标题文字 */
[data-skin="nova"] .disclaimer{
  position:relative;
  border:1px solid var(--line-strong);
  border-radius:2px;
  background:var(--surface-2);
  color:var(--ink-2);
  font-size:var(--fs-min,12px);
  padding:10px 12px;
  line-height:1.75;
  box-shadow:inset 0 2px 0 var(--gold-soft);
}
[data-skin="nova"] .disclaimer b{color:var(--gold-text)}
[data-skin="nova"] .disease-card{
  border:1px solid var(--gold);
  border-radius:2px;
  background:var(--surface-2);
  font-size:var(--fs-min,12px);
  line-height:1.7;
}
[data-skin="nova"] .disease-card .disease-pill{
  background:var(--gold);
  color:var(--bg);
  border-radius:2px;
  font-size:var(--fs-min-2,10.5px);
}
[data-skin="nova"] .disease-card .disease-type{color:var(--gold-text); font-size:var(--fs-min,12px)}
[data-skin="nova"] .disease-card .disease-label{font-size:var(--fs-min,12px); color:var(--ink-3)}
[data-skin="nova"] .disease-card .disease-note{font-size:var(--fs-min,12px); color:var(--ink-2)}
[data-skin="nova"] .disease-card .disease-note b{color:var(--ink)}
[data-skin="nova"] .zi-note{
  border:1px solid var(--line-strong);
  border-radius:2px;
  background:var(--surface-2);
  font-size:var(--fs-min,12px);
  box-shadow:inset 0 2px 0 var(--info);
}
[data-skin="nova"] .zi-note .zi-other b{color:var(--brand)}
[data-skin="nova"] .zi-note .zi-tip{border-top:1px solid var(--line); font-size:var(--fs-min,12px)}

/* 神煞 chip + S/A/B/C 信号强度格 */
[data-skin="nova"] .ss-head{font-size:var(--fs-min,12px); letter-spacing:.14em}
[data-skin="nova"] .ss-chip{
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface-2);
  font-size:var(--fs-min,12px);
  padding:5px 11px;
}
[data-skin="nova"] .grade{
  position:relative;
  flex-direction:column;
  gap:2px;
  min-width:22px;
  height:auto;
  min-height:21px;
  padding:2px 5px 4px;
  border-radius:2px;
  font-size:var(--fs-min,12px);
  font-variant-numeric:tabular-nums;
}
[data-skin="nova"] .grade::after{
  content:"";
  display:block;
  width:100%; height:3px;
  background-image:repeating-linear-gradient(90deg, currentColor 0 2px, transparent 2px 3.5px);
  background-repeat:no-repeat;
}
[data-skin="nova"] .grade-s{background:var(--grade-s); color:var(--bg)}
[data-skin="nova"] .grade-a{background:var(--grade-a); color:var(--bg)}
[data-skin="nova"] .grade-b{background:var(--grade-b); color:var(--bg)}
[data-skin="nova"] .grade-c{background:var(--grade-c); color:var(--bg)}
[data-skin="nova"] .grade-s::after{width:100%}
[data-skin="nova"] .grade-a::after{width:75%}
[data-skin="nova"] .grade-b::after{width:50%}
[data-skin="nova"] .grade-c::after{width:25%}
[data-skin="nova"] .mine-grade .grade{font-size:var(--fs-min,12px); min-width:26px}

/* 十神力量：五格频谱条（覆盖 readability 的三段宽度写法）
   ⚠ 260921 收口修正（主代理复核时发现并补）：轨道在 `::after`、填充在 `::before`，
     而 `::after` 是**最后一个**伪元素、绘制在 `::before` 之上 ⇒ 填充被轨道盖住，
     频谱条会整条显示为灰色轨道（档位信息全丢）。补 `z-index` 让填充浮上来。
     —— 与 `readability.css` §1.5 的修法同源（那里是直接对调两个伪元素）。 */
[data-skin="nova"] .sh-card{
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface);
  padding-bottom:18px;
}
[data-skin="nova"] .sh-name{font-size:var(--fs-base); letter-spacing:.06em}
[data-skin="nova"] .sh-lvl{
  font-size:var(--fs-min,12px);
  font-weight:700;
  color:var(--ink-2);
  background:transparent;
  border-radius:0;
  margin:3px 0 0;
}
[data-skin="nova"] .sh-raw{
  font-family:ui-monospace, "Cascadia Mono", Consolas, "Liberation Mono", Menlo, monospace;
  font-size:var(--fs-min,12px);
  color:var(--ink-3);
  font-variant-numeric:tabular-nums;
}
[data-skin="nova"] .sh-card::after{        /* 轨道（下层） */
  z-index:0;
  left:9px; right:9px; bottom:7px;
  height:5px; border-radius:0;
  background-color:var(--line-strong);
  background-image:repeating-linear-gradient(90deg, transparent 0 calc(20% - 1.5px), var(--surface) calc(20% - 1.5px) 20%);
}
[data-skin="nova"] .sh-card::before{       /* 填充（上层） */
  z-index:1;
  left:9px; bottom:7px;
  height:5px; border-radius:0;
  background-color:var(--brand);
  background-image:repeating-linear-gradient(90deg, transparent 0 calc(20% - 1.5px), var(--surface) calc(20% - 1.5px) 20%);
}
[data-skin="nova"] .sh-card:has(.lv-weak)::before{width:38%}
[data-skin="nova"] .sh-card:has(.lv-mid)::before{width:58%}
[data-skin="nova"] .sh-card:has(.lv-strong)::before{width:calc(100% - 18px)}

/* ============================================================
   10 · 运岁三列（在 xy3.css 骨架上重绘：列头 ／ 单元 ／ 密度 ／ 色带）
   ============================================================ */
[data-skin="nova"] #viewportStage{
  --xy-gap:4px;
  --xy-pad:6px;
}
[data-skin="nova"] #viewportStage[data-shell="tab"]{
  --xy-pad:5px;
  --xy-gap:4px;
}
/* ★ 260923 死变量清退（`EL-5` 收束 · 门禁 `tests/gate/test_skin_patch_contract.py`）：
   原三块另有多条 —— `#viewportStage{ --xy-h:530px; --xy-rowgap:2px; --xy-c1/c2/c3 }`、
   `[data-shell="tab"]{ --xy-h:450px; --xy-c1/c2/c3 }`、
   `[data-shell="wide"]{ --xy-h:600px; --xy-c1/c2/c3 }`（该块**全部**为死变量 ⇒ 整块移除）。
   全仓实测：`--xy-h`、`--xy-c1/c2/c3`、`--xy-rowgap`（本套那份）**均零 `var()` 引用** ——
   `--xy-h`／`--xy-c1..c3` 是**上一版三列布局**的变量名（现版式层 `xy3.css` 用的是
   `--xy-strip-h` 与 `--xy-c1-a`／`--xy-c1-b`）⇒ 声明了却无人消费，**静默失效**。
   本节**保留**的 `--xy-gap`／`--xy-pad` 均有引用（版式层 `xy3.css` 消费）。 */
[data-skin="nova"] .tl-card{
  border:1px solid var(--line-strong);
  border-radius:var(--r-lg);
  background:var(--surface);
  box-shadow:var(--shadow-sm);
}
[data-skin="nova"] .tl-card[data-stack="xingyun"] > .xy-pane{
  position:relative;
  border:1px solid var(--line-strong);
  border-radius:2px;
  background:var(--surface-2);
  box-shadow:inset 0 1px 0 rgba(77,227,208,.05);
}
/* 通道顶条：细刻度 + 青辉（不是大面积发光雾） */
[data-skin="nova"] .tl-card[data-stack="xingyun"] > .xy-pane::before{
  content:"";
  position:absolute; left:0; right:0; top:0; height:2px;
  background:linear-gradient(90deg, var(--brand) 0, var(--brand-soft) 55%, transparent 100%);
  pointer-events:none;
}
[data-skin="nova"] .tl-card[data-stack="xingyun"] > .xy-pane > .tl-head{
  position:relative;
  background:var(--surface-3);
  border-bottom:1px solid var(--line-strong);
  padding:8px 10px;
  gap:8px;
  box-shadow:inset 0 2px 0 rgba(0,0,0,.28);
}
[data-skin="nova"] .tl-card[data-stack="xingyun"] > .xy-pane > .tl-head .r-info{
  font-size:var(--fs-min,12px);
  color:var(--ink-3);
  letter-spacing:.04em;
  font-variant-numeric:tabular-nums;
}
/* 列头刻度尺 */
[data-skin="nova"] .tl-card[data-stack="xingyun"] > .xy-pane > .tl-head::after{
  content:"";
  position:absolute; left:0; right:0; bottom:-1px; height:4px;
  background-image:repeating-linear-gradient(90deg, var(--line-strong) 0 1px, transparent 1px 8px);
  opacity:.85;
  pointer-events:none;
}
[data-skin="nova"] #viewportStage:not([data-shell="phone"]) .tl-card[data-stack="xingyun"] > .xy-pane > .tl-head::before{
  font-family:ui-monospace, "Cascadia Mono", Consolas, "Liberation Mono", Menlo, monospace;
  font-size:var(--fs-min,12px);
  font-weight:800;
  letter-spacing:.1em;
  color:var(--brand);
  background:var(--surface);
  border:1px solid var(--line-strong);
  border-radius:2px;
  padding:2px 6px;
  flex:none;
}
[data-skin="nova"] #viewportStage:not([data-shell="phone"]) .tl-card[data-stack="xingyun"] > [data-pane="xiaoyun"] > .tl-head::before{content:"01 小运"}
[data-skin="nova"] #viewportStage:not([data-shell="phone"]) .tl-card[data-stack="xingyun"] > [data-pane="dayun"] > .tl-head::before{content:"01 大运"}
[data-skin="nova"] #viewportStage:not([data-shell="phone"]) .tl-card[data-stack="xingyun"] > [data-pane="liunian"] > .tl-head::before{content:"02 流年"}
[data-skin="nova"] #viewportStage:not([data-shell="phone"]) .tl-card[data-stack="xingyun"] > [data-pane="liuyue"] > .tl-head::before{content:"03 流月"}
[data-skin="nova"] #viewportStage:not([data-shell="phone"]) .tl-card[data-stack="xingyun"] > .xy-pane > .tl-scroll{
  scrollbar-color:var(--brand) var(--surface-3);
}
[data-skin="nova"] #viewportStage:not([data-shell="phone"]) .tl-card[data-stack="xingyun"] > .xy-pane > .tl-scroll::-webkit-scrollbar{width:6px}
[data-skin="nova"] #viewportStage:not([data-shell="phone"]) .tl-card[data-stack="xingyun"] > .xy-pane > .tl-scroll::-webkit-scrollbar-track{background:var(--surface-3)}
[data-skin="nova"] #viewportStage:not([data-shell="phone"]) .tl-card[data-stack="xingyun"] > .xy-pane > .tl-scroll::-webkit-scrollbar-thumb{
  background:var(--brand);
  border:0;
  border-radius:0;
}
/* 单元：一行一记录（直角细框），去掉 3px 侧条纹，改「底部热力带」 */
[data-skin="nova"] #viewportStage:not([data-shell="phone"]) .tl-card[data-stack="xingyun"] > .xy-pane > .tl-scroll > .tl-item{
  position:relative;
  overflow:hidden;
  padding:6px 8px 7px;
  border:1px solid var(--line);
  border-left:1px solid var(--line);
  border-radius:2px;
  background:var(--surface);
  box-shadow:inset 0 1px 0 rgba(0,0,0,.3);
}
[data-skin="nova"] #viewportStage:not([data-shell="phone"]) .tl-card[data-stack="xingyun"] > .xy-pane > .tl-scroll > .tl-item:hover{
  background:var(--surface-2);
  border-color:var(--line-strong);
}
[data-skin="nova"] #viewportStage:not([data-shell="phone"]) .tl-card[data-stack="xingyun"] > .xy-pane > .tl-scroll > .tl-item.now{
  background:var(--surface-2);
  border-color:var(--brand);
  box-shadow:inset 0 0 0 1px var(--brand-soft), inset 0 1px 0 rgba(0,0,0,.3);
}
/* 岁运吉凶热力带：沿三列时间轴、每单元底边一段（吉 / 平 / 凶 / 中性） */
[data-skin="nova"] .tl-item::after{
  content:"";
  position:absolute; left:0; right:0; bottom:0; height:2px;
  background:var(--line-strong);
  pointer-events:none;
}
[data-skin="nova"] .tl-item:has(.ly-sig.sig-strong)::after,
[data-skin="nova"] .tl-item:has(.dayun-align.align-xi)::after{background:var(--ok); box-shadow:0 0 7px var(--ok)}
[data-skin="nova"] .tl-item:has(.ly-sig.sig-weak)::after,
[data-skin="nova"] .tl-item:has(.dayun-align.align-ji)::after{background:var(--danger); box-shadow:0 0 7px var(--danger)}
[data-skin="nova"] .tl-item:has(.ly-sig.sig-mid)::after,
[data-skin="nova"] .tl-item:has(.dayun-align.align-mid)::after{background:var(--info)}
/* 当前段：扫描线（reduced-motion 下静止为一道定格光） */
[data-skin="nova"] .tl-item.now::before{
  content:"";
  position:absolute; top:0; bottom:0; left:0; width:42%;
  pointer-events:none;
  background:linear-gradient(90deg, transparent, var(--brand-glow), transparent);
  animation:nova-scan 3.4s linear infinite;
}
@keyframes nova-scan{
  from{transform:translateX(-105%)}
  to{transform:translateX(240%)}
}
/* 今：LIVE 式角标（移入卡内，避免与 overflow:hidden 冲突） */
[data-skin="nova"] .tl-item .now-badge{
  top:3px; right:3px;
  background:var(--brand);
  color:var(--bg);
  border-radius:2px;
  font-size:var(--fs-min-2,10.5px);
  padding:1px 5px;
  letter-spacing:.06em;
  font-variant-numeric:tabular-nums;
}
[data-skin="nova"] .tl-item .now-badge::before{
  content:"";
  display:inline-block;
  width:5px; height:5px; margin-right:4px;
  border-radius:50%;
  background:var(--bg);
}
[data-skin="nova"] .tl-item .y{font-size:var(--fs-min,12px); color:var(--ink-3); font-variant-numeric:tabular-nums}
[data-skin="nova"] .tl-item .y b{color:var(--brand); font-variant-numeric:tabular-nums}
[data-skin="nova"] .tl-item .ss{font-size:var(--fs-min,12px); color:var(--ink-2)}
[data-skin="nova"] .tl-item .age{font-size:var(--fs-min,12px); color:var(--ink-3)}
/* .gz（干支）：本行原为 `font-size:18px` 的**重述声明** —— 与 app.css 的
   `.tl-item .gz{font-size:18px}` 同值。但它并非冗余：本区块里 `.y`/`.ss`/`.age`
   三行都走 `--fs-min`(12px)，唯有 `.gz` 刻意大一号（干支是命盘主角）⇒ 是**有意的强调**。
   令牌化处置（owner 裁决）：**删除本行**，让 `.gz` 回落 app.css 的 18px ——
   视觉零变化，且消掉一处与基线同值的重复声明。 */

/* 吉 / 平 / 凶 与 喜 / 忌：三格信号条 + 直角标（文字标记同时保留） */
[data-skin="nova"] .ly-sig,
[data-skin="nova"] .dayun-align{
  position:relative;
  display:inline-block;
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface-2);
  color:var(--ink);
  padding:1px 7px 1px 19px;
  font-size:var(--fs-min,12px);
  font-weight:700;
  letter-spacing:.04em;
}
[data-skin="nova"] .ly-sig::before,
[data-skin="nova"] .dayun-align::before{
  content:"";
  position:absolute; left:6px; top:50%; margin-top:-4px;
  width:8px; height:8px;
  border-radius:1px;
  background-color:var(--line-strong);
  background-image:repeating-linear-gradient(90deg, var(--bg) 0 1px, transparent 1px 2.5px);
}
[data-skin="nova"] .ly-sig.sig-strong,
[data-skin="nova"] .dayun-align.align-xi{color:var(--ok); border-color:var(--ok)}
[data-skin="nova"] .ly-sig.sig-strong::before,
[data-skin="nova"] .dayun-align.align-xi::before{background-color:var(--ok)}
[data-skin="nova"] .ly-sig.sig-weak,
[data-skin="nova"] .dayun-align.align-ji{color:var(--danger); border-color:var(--danger)}
[data-skin="nova"] .ly-sig.sig-weak::before,
[data-skin="nova"] .dayun-align.align-ji::before{background-color:var(--danger)}
[data-skin="nova"] .ly-sig.sig-mid,
[data-skin="nova"] .dayun-align.align-mid{color:var(--info); border-color:var(--info)}
[data-skin="nova"] .ly-sig.sig-mid::before,
[data-skin="nova"] .dayun-align.align-mid::before{background-color:var(--info)}
[data-skin="nova"] .dayun-act{font-size:var(--fs-min,12px); color:var(--ink-3)}
[data-skin="nova"] .tl-foot{
  font-size:var(--fs-min,12px);
  color:var(--ink-2);
  line-height:1.75;
  background:var(--surface-3);
  border-top:1px solid var(--line-strong);
}
[data-skin="nova"] .tl-head .lt::before{background:var(--brand)}
[data-skin="nova"] .tl-head .lt{font-size:var(--fs-sm); letter-spacing:.08em}
[data-skin="nova"] .tl-head .r-info{font-size:var(--fs-min,12px); font-variant-numeric:tabular-nums}
[data-skin="nova"] .xy-tabs{background:var(--surface-3); border-bottom:1px solid var(--line-strong)}
[data-skin="nova"] .xy-tab{font-size:var(--fs-min,12px); letter-spacing:.1em}
[data-skin="nova"] .xy-tab.active{color:var(--brand)}
[data-skin="nova"] .xy-tab.active::after{background:var(--brand); border-radius:0; box-shadow:0 0 8px var(--brand-glow)}

/* ============================================================
   11 · 细盘其余（六亲 / 脏腑 / 流通链 / 刑冲 / 白话解读）
   ============================================================ */
[data-skin="nova"] .six-grid{gap:var(--sp-2)}
[data-skin="nova"] .six-item{
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface-2);
}
[data-skin="nova"] .six-role{font-size:var(--fs-base); letter-spacing:.06em}
[data-skin="nova"] .six-star{font-size:var(--fs-min,12px); color:var(--ink-2)}
[data-skin="nova"] .six-trend{font-size:var(--fs-min,12px); color:var(--ink-3); line-height:1.7}
[data-skin="nova"] .six-chip{
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface-3);
  color:var(--ink-2);
  font-size:var(--fs-min-2,10.5px);
  padding:0 6px 1px;
}
[data-skin="nova"] .six-chip.intensity{border-color:var(--accent); color:var(--accent); background:var(--accent-soft)}
[data-skin="nova"] .six-timing{font-size:var(--fs-min,12px); border-top:1px solid var(--line)}
[data-skin="nova"] .pref{border-radius:2px; font-size:var(--fs-min-2,10.5px); padding:0 6px 1px}
[data-skin="nova"] .pref-用神{background:var(--ok); color:var(--bg)}
[data-skin="nova"] .pref-喜神{background:var(--accent); color:var(--bg)}
[data-skin="nova"] .pref-忌神{background:var(--danger); color:var(--bg)}
[data-skin="nova"] .pref-闲神{background:var(--surface-3); color:var(--ink-2)}
[data-skin="nova"] .hb-item{font-size:var(--fs-min,12px); border-bottom:1px solid var(--line-thin); padding:7px 2px}
[data-skin="nova"] .hb-wx{color:var(--gold-text); font-variant-numeric:tabular-nums}
[data-skin="nova"] .hb-level{color:var(--warn)}
[data-skin="nova"] .hb-organ{color:var(--accent)}
[data-skin="nova"] .hb-part{color:var(--ink-2)}
[data-skin="nova"] .hb-note{color:var(--ink-3); font-size:var(--fs-min,12px)}
[data-skin="nova"] .hb-regimen,
[data-skin="nova"] .hb-timing{
  background:var(--surface-3);
  border:1px solid var(--line);
  border-radius:2px;
  color:var(--ink-2);
}
[data-skin="nova"] .flow-chain{font-size:var(--fs-min,12px); gap:var(--sp-2)}
[data-skin="nova"] .flow-node{
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface-2);
  color:var(--ink);
  font-weight:700;
  letter-spacing:.08em;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.3);
}
[data-skin="nova"] .flow-arrow{color:var(--brand)}
[data-skin="nova"] .flow-block{font-size:var(--fs-min,12px); color:var(--ink-2); line-height:1.75}
[data-skin="nova"] .xing-item{
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface-2);
}
[data-skin="nova"] .xing-tag{border-radius:2px; color:var(--bg); font-size:var(--fs-min-2,10.5px)}
[data-skin="nova"] .xing-tag.s{background:var(--gold); color:var(--bg)}
[data-skin="nova"] .xing-txt{font-size:var(--fs-min,12px); color:var(--ink-2); line-height:1.75}
[data-skin="nova"] .xing-txt .sub{font-size:var(--fs-min,12px); color:var(--ink-3)}
[data-skin="nova"] .reading-box{font-size:var(--fs-base); line-height:1.85; max-width:34em}
[data-skin="nova"] .reading-box b{color:var(--brand)}
[data-skin="nova"] .season-bar{background:var(--surface-3); border-top:1px solid var(--line-strong)}
[data-skin="nova"] .season-bar .seg{font-size:var(--fs-min,12px); color:var(--ink-3); letter-spacing:.06em}
[data-skin="nova"] .season-bar .seg.on{background:var(--brand); color:var(--bg)}
[data-skin="nova"] .season-bar .seg.on b{color:var(--bg)}

/* ★ 已剔除（260922 实测）：原方案在此给 `ql-tip-cat / -cid / -judge / -lv / -note / -row`
   写了样式，但这 6 个类**引擎侧 `js/concept-tip.js` 从不生成**（真实弹框 DOM 只有
   head / alias / x / body / gloss / xiang / mobile 七个类）⇒ 纯死码，已删。
   留痕原因：避免后续皮肤作者误以为弹框里存在这些元素。 */
[data-skin="nova"] .ql-term{border-bottom-color:var(--brand)}

/* ============================================================
   12 · 报告面（#page-report 全族）
   硬规矩遵守：字号一律走 --fs-*（≥12px）；正文 serif；零 @media；
   提示块无 3px 侧条纹；--brand 可见用法仍只有 2 处（章序号 / 警示级告警边框）。
   ============================================================ */
[data-skin="nova"] #page-report{font-family:var(--font-serif); line-height:1.85}
[data-skin="nova"] #page-report .rp-shell{gap:var(--sp-5)}
[data-skin="nova"] #page-report .rp-meta{
  font-family:ui-monospace, "Cascadia Mono", Consolas, "Liberation Mono", Menlo, monospace;
  font-size:var(--fs-sm);
  color:var(--ink-2);
  letter-spacing:.02em;
  border-bottom:1px solid var(--line-strong);
}
[data-skin="nova"] #page-report .rp-status{font-size:var(--fs-sm)}
[data-skin="nova"] #page-report .rp-status-md{
  border:1px solid var(--accent);
  border-radius:2px;
  background:var(--surface-2);
  box-shadow:inset 2px 0 0 var(--accent);
}
[data-skin="nova"] #page-report .rp-status-md b{font-size:var(--fs-md); color:var(--ink)}
[data-skin="nova"] #page-report .rp-status-md span{font-size:var(--fs-sm); color:var(--ink-2)}
[data-skin="nova"] #page-report .rp-degrade{
  border:1px solid var(--danger);
  border-radius:2px;
  background:var(--surface-2);
  font-size:var(--fs-md);
}
[data-skin="nova"] #page-report .rp-h2{
  position:relative;
  font-family:var(--font-serif);
  font-size:var(--fs-xl);
  font-weight:800;
  letter-spacing:.04em;
  border-bottom:1px solid var(--line-strong);
  padding-bottom:var(--sp-2);
}
[data-skin="nova"] #page-report .rp-chapno{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:30px;
  height:30px;
  padding:0 6px;
  border:1px solid var(--line-strong);
  border-radius:2px;
  background:var(--surface-2);
  color:var(--brand);
  font-family:var(--font-sans);
  font-size:var(--fs-sm);
  font-weight:800;
  letter-spacing:0;
}
[data-skin="nova"] #page-report .rp-sub{letter-spacing:.04em}
[data-skin="nova"] #page-report .rp-sub2{border-top:1px solid var(--line); padding-top:var(--sp-3)}
[data-skin="nova"] #page-report .rp-sub3{color:var(--ink-2)}
[data-skin="nova"] #page-report .rp-sub4{color:var(--ink-3); letter-spacing:.1em}
[data-skin="nova"] #page-report .rp-dl dt{
  font-family:ui-monospace, "Cascadia Mono", Consolas, "Liberation Mono", Menlo, monospace;
  font-size:var(--fs-sm);
  color:var(--ink-2);
  letter-spacing:.02em;
}
[data-skin="nova"] #page-report .rp-note{
  border:1px solid var(--line);
  border-radius:2px;
  background:var(--surface-2);
  font-size:var(--fs-md);
}
[data-skin="nova"] #page-report .rq-grade{
  border:1px solid var(--line-strong);
  border-radius:2px;
  background:var(--surface-3);
  color:var(--ink-2);
  font-size:var(--fs-sm);
  font-family:var(--font-sans);
  letter-spacing:.06em;
}
[data-skin="nova"] #page-report .rp-hr{border-top:1px solid var(--line-strong)}
[data-skin="nova"] #page-report .rp-tablewrap{border:1px solid var(--line); border-radius:2px}
[data-skin="nova"] #page-report .rp-table{
  font-size:var(--fs-sm);
  font-variant-numeric:tabular-nums;
}
[data-skin="nova"] #page-report .rp-table th,
[data-skin="nova"] #page-report .rp-table td{border:1px solid var(--line); padding:7px 9px}
[data-skin="nova"] #page-report .rp-table th{
  position:relative;
  background:var(--surface-3);
  color:var(--ink);
  letter-spacing:.08em;
}
[data-skin="nova"] #page-report .rp-table th::after{
  content:"";
  position:absolute; left:0; right:0; bottom:0; height:3px;
  background-image:repeating-linear-gradient(90deg, currentColor 0 1px, transparent 1px 8px);
  opacity:.32;
  pointer-events:none;
}
[data-skin="nova"] #page-report .rp-table caption{
  font-family:var(--font-sans);
  font-size:var(--fs-sm);
  color:var(--ink-3);
  letter-spacing:.04em;
}
[data-skin="nova"] #page-report .rp-unknown{
  border:1px solid var(--danger);
  border-radius:2px;
  background:var(--surface-2);
}
[data-skin="nova"] #page-report .rp-fold{
  border:1px solid var(--line-strong);
  border-radius:2px;
  background:var(--surface-2);
}
[data-skin="nova"] #page-report .rp-fold>summary{font-size:var(--fs-sm); letter-spacing:.06em}
[data-skin="nova"] #page-report .rp-fold>summary::before{content:"+"; color:var(--accent); font-weight:800}
[data-skin="nova"] #page-report .rp-fold[open]>summary::before{content:"-"}
[data-skin="nova"] #page-report .rp-fold-n{font-size:var(--fs-sm); color:var(--ink-3)}
[data-skin="nova"] #page-report .rp-fold-body{border-top:1px solid var(--line)}
[data-skin="nova"] #page-report .rq{
  position:relative;
  border:1px solid var(--line-strong);
  border-radius:2px;
  background:var(--surface-2);
}
[data-skin="nova"] #page-report .rq-head{font-size:var(--fs-sm); letter-spacing:.06em; color:var(--ink)}
[data-skin="nova"] #page-report .rq p{font-size:var(--fs-sm)}
[data-skin="nova"] #page-report .rq-detail{color:var(--ink-2)}
[data-skin="nova"] #page-report .rq-caveat{border-color:var(--accent); background:var(--surface-2)}
[data-skin="nova"] #page-report .rq-caveat .rq-head{color:var(--accent)}
[data-skin="nova"] #page-report .rq-warn{border-color:var(--brand); background:var(--surface-2)}
[data-skin="nova"] #page-report .rq-warn .rq-head{color:var(--ink)}
[data-skin="nova"] #page-report .rq-source .rq-head{color:var(--ink-2)}
/* 目录：轨道 + 刻度（静态刻度，不伪称「进度」） */
[data-skin="nova"] #page-report .rp-toc-side{
  border:1px solid var(--line-strong);
  border-radius:2px;
  background:var(--surface-2);
}
[data-skin="nova"] #page-report .rp-toc-list{padding-left:var(--sp-3); border-left:1px solid var(--line-strong)}
[data-skin="nova"] #page-report .rp-toc-li>a{
  position:relative;
  border-radius:2px;
  color:var(--ink-2);
  font-size:var(--fs-sm);
}
[data-skin="nova"] #page-report .rp-toc-li>a::before{
  content:"";
  position:absolute; left:-13px; top:50%; margin-top:-3px;
  width:7px; height:1px;
  background:var(--line-strong);
}
[data-skin="nova"] #page-report .rp-toc-li>a:hover{background:var(--surface-3); color:var(--ink)}
[data-skin="nova"] #page-report .rp-toc-li>a:hover::before{background:var(--accent); box-shadow:0 0 6px var(--accent-soft)}
[data-skin="nova"] #page-report .rp-toc-no{
  font-family:ui-monospace, "Cascadia Mono", Consolas, "Liberation Mono", Menlo, monospace;
  color:var(--ink-3);
}
[data-skin="nova"] #page-report .rp-toc-fold{
  border:1px solid var(--line-strong);
  border-radius:2px;
  background:var(--surface-2);
}

/* ============================================================
   13 · 记录 / 我的 / 浮层 / AI 抽屉
   ============================================================ */
[data-skin="nova"] .record-card{
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface);
}
[data-skin="nova"] .record-card:hover{border-color:var(--brand); box-shadow:var(--shadow-md)}
[data-skin="nova"] .record-card .rc-name{font-size:var(--fs-md); letter-spacing:.06em}
[data-skin="nova"] .record-card .rc-gz{
  font-family:var(--font-sans);
  letter-spacing:.1em;
  color:var(--ink);
}
[data-skin="nova"] .record-card .rc-meta{font-size:var(--fs-min,12px); font-variant-numeric:tabular-nums}
[data-skin="nova"] .record-empty{font-size:var(--fs-base); color:var(--ink-3)}
[data-skin="nova"] .record-actions .mini-btn{
  background:var(--surface-2);
  color:var(--ink-2);
  border-color:var(--line-strong);
}
[data-skin="nova"] .mine-group{
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface);
}
[data-skin="nova"] .mine-group .mg-title{
  background:var(--surface-3);
  font-size:var(--fs-sm);
  letter-spacing:.1em;
  border-bottom:1px solid var(--line-strong);
}
[data-skin="nova"] .mine-row{font-size:var(--fs-base); border-bottom:1px solid var(--line-thin)}
[data-skin="nova"] .mine-row:hover{background:var(--surface-2)}
[data-skin="nova"] .mine-row .mr-v{
  font-size:var(--fs-min,12px);
  color:var(--ink-3);
  font-variant-numeric:tabular-nums;
}
[data-skin="nova"] .mine-row .mr-arrow{color:var(--brand)}
[data-skin="nova"] .about-text{font-size:var(--fs-base); color:var(--ink-2)}
[data-skin="nova"] .cali-c-v{font-size:var(--fs-min,12px); line-height:1.7}
[data-skin="nova"] .cali-c-k{font-variant-numeric:tabular-nums}
[data-skin="nova"] .cali-docs-t{font-size:var(--fs-min,12px); letter-spacing:.1em}
[data-skin="nova"] .cali-doc{font-size:var(--fs-min,12px); border-bottom:1px dotted var(--line)}
[data-skin="nova"] .dot.ok{box-shadow:0 0 6px var(--ok)}
[data-skin="nova"] .dot.bad{box-shadow:0 0 6px var(--danger)}
[data-skin="nova"] .dot.mid{box-shadow:0 0 6px var(--warn)}

/* HUD 式提示条：原为「月白实心板」（深色下是全屏最亮元素），改深底 + 青细边 */
[data-skin="nova"] .ql-toast{
  background:var(--surface-3);
  color:var(--ink);
  border:1px solid var(--brand);
  border-radius:2px;
  font-size:var(--fs-sm);
  letter-spacing:.04em;
  box-shadow:var(--shadow-lg), inset 0 0 14px var(--brand-soft);
}
[data-skin="nova"] .ql-modal-overlay{background:rgba(0,0,0,.66)}
[data-skin="nova"] .ql-modal{
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface);
}
[data-skin="nova"] .ql-modal-title{font-family:var(--font-sans); letter-spacing:.08em}
[data-skin="nova"] .ql-modal-sub{font-size:var(--fs-sm); color:var(--ink-3)}
[data-skin="nova"] .ql-modal-input{
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface-2);
  color:var(--ink);
}
[data-skin="nova"] .ql-modal-actions .mini-btn{
  background:var(--surface-2); color:var(--ink-2); border:1px solid var(--line-strong);
}
[data-skin="nova"] .scrim{background:rgba(0,0,0,.66)}

[data-skin="nova"] .ai-drawer{
  background:var(--surface);
  border-left:1px solid var(--line-strong);
  box-shadow:-16px 0 48px rgba(0,0,0,.66);
}
[data-skin="nova"] .ai-head{background:var(--surface-3); border-bottom:1px solid var(--line-strong)}
[data-skin="nova"] .ai-title{font-size:var(--fs-md); letter-spacing:.08em}
[data-skin="nova"] .ai-close{
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface-2);
  color:var(--ink-2);
}
[data-skin="nova"] .ai-close:hover{border-color:var(--brand); color:var(--brand)}
[data-skin="nova"] .ai-cfgbar .ai-mini{
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface-2);
  color:var(--ink-2);
}
[data-skin="nova"] .ai-msgs{background:var(--bg-soft)}
[data-skin="nova"] .ai-msg{font-size:var(--fs-base); border-radius:3px}
[data-skin="nova"] .ai-msg.user{
  background:var(--brand);
  color:var(--bg);
  border-bottom-right-radius:0;
}
[data-skin="nova"] .ai-msg.bot{
  background:var(--surface-2);
  border:1px solid var(--line-strong);
  border-bottom-left-radius:0;
  color:var(--ink);
}
[data-skin="nova"] .ai-msg.bot .ai-h{font-family:var(--font-sans); font-size:var(--fs-md); letter-spacing:.06em}
[data-skin="nova"] .ai-input{border-top:1px solid var(--line-strong); background:var(--surface)}
[data-skin="nova"] .ai-input input{
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface-2);
  color:var(--ink);
}
[data-skin="nova"] .ai-send{
  background:var(--brand);
  background-image:linear-gradient(180deg, rgba(255,255,255,.16), rgba(0,0,0,.12));
  color:var(--bg);
  border-radius:2px;
  letter-spacing:.1em;
}
[data-skin="nova"] .ai-send:hover{filter:none; box-shadow:inset 0 0 18px var(--brand-glow)}
[data-skin="nova"] .ai-foot{
  font-size:var(--fs-min,12px);
  color:var(--ink-3);
  border-top:1px solid var(--line);
  background:var(--surface-3);
}
[data-skin="nova"] .ai-clear{
  border-radius:2px;
  border:1px solid var(--line-strong);
  background:var(--surface-2);
  color:var(--ink-2);
  font-size:var(--fs-sm);
}
[data-skin="nova"] .ai-clear:hover{border-color:var(--brand); color:var(--brand)}

/* ============================================================
   14 · 设备调试器与手机机身（暖褐色值回归冷调）
   ============================================================ */
[data-skin="nova"] .dev-tools{
  background:var(--surface-3);
  color:var(--ink);
  border:1px solid var(--line-strong);
  border-radius:2px;
  box-shadow:var(--shadow-lg);
  backdrop-filter:none;
}
[data-skin="nova"] .dev-tools .dt-label{color:var(--ink-2); font-size:var(--fs-min,12px); letter-spacing:.06em}
[data-skin="nova"] .dev-tools .dt-label::before{background:var(--brand); box-shadow:0 0 7px var(--brand-glow)}
[data-skin="nova"] .dev-tools .dt-btn{
  background:var(--surface-2);
  color:var(--ink-2);
  border:1px solid var(--line-strong);
  border-radius:2px;
  font-size:var(--fs-min,12px);
}
[data-skin="nova"] .dev-tools .dt-btn:hover{border-color:var(--brand); color:var(--brand)}
[data-skin="nova"] .dev-tools .dt-btn.active{background:var(--brand); color:var(--bg); border-color:var(--brand)}
[data-skin="nova"] .dev-tools .dt-btn.dt-ai{border-color:var(--gold); color:var(--gold-text)}
[data-skin="nova"] .dev-tools .dt-btn.dt-ai:hover{background:var(--gold); color:var(--bg)}
[data-skin="nova"] .dev-tools .dt-port{color:var(--ink-2)}
[data-skin="nova"] .viewportStage.is-phone{
  border:11px solid var(--dark-bg);
  border-radius:22px;
  box-shadow:0 22px 64px rgba(0,0,0,.72);
}
[data-skin="nova"] .viewportStage.is-phone::before{background:var(--dark-bg); border-radius:0 0 10px 10px}
[data-skin="nova"] .viewportStage.is-tablet{border-radius:12px; border:1px solid var(--line-strong)}

/* ============================================================
   15 · 动效降级（本文件唯一的 @media，且属偏好查询而非断点）
   ============================================================ */
@media (prefers-reduced-motion: reduce){
  [data-skin="nova"] .tl-item.now::before{animation:none; transform:translateX(0); opacity:.55}
  [data-skin="nova"] .tl-item,
  [data-skin="nova"] .card,
  [data-skin="nova"] .quick,
  [data-skin="nova"] .record-card,
  [data-skin="nova"] .segmented .seg,
  [data-skin="nova"] .primary-btn,
  [data-skin="nova"] .mini-btn,
  [data-skin="nova"] .tab{transition:none}
}
