/* ============================================================
   皮肤质感层 · 宣纸墨印 / 蓝图工程（2026-10-31 第 20 轮）
   ------------------------------------------------------------
   为什么单独一份文件、而不是写进 tokens.css 或 app.css：
     · tokens.css 只管「颜色/圆角/阴影/字体」这类**令牌**，
       纸纹与方格是背景图案，不是令牌；
     · app.css 是 1400 行的组件总表，往里塞两款皮肤的专属纹理会让它更长；
     · 这两款的辨识度主要来自纹理，而纹理又最容易误伤别的皮肤 ——
       所有选择器一律锚在 [data-skin="xuanzhi"] / [data-skin="blueprint"] 下，
       不命中的皮肤一个字都吃不到。
   ★ 这两款与登录页 D「宣纸墨印」/ F「蓝图工程」是同一套语汇：
     从登录门面到工作台，用户看到的是同一个东西，不是"门面一套、里面一套"。
   ============================================================ */

/* ============================================================
   ⑦ 宣纸墨印
   ------------------------------------------------------------
   米黄纸底 + 极细的交叉纤维纹。纹路必须"远看是纸、近看才见纹"，
   一旦看得清就是脏 —— 所以透明度压在 .04 上下，间距取 5px / 7px 的质数，
   避免与表格行高（整数倍）形成摩尔纹。
   ============================================================ */
[data-skin="xuanzhi"] body{
  background-image:
    repeating-linear-gradient(45deg,rgba(120,100,70,.045) 0 1px,transparent 1px 5px),
    repeating-linear-gradient(-45deg,rgba(120,100,70,.035) 0 1px,transparent 1px 7px);
}

/* 标题走衬线：纸感的一半来自字形。正文不走衬线 —— 台账是数字活，
   宋体在 12px 下笔画太细，看久了费眼。 */
[data-skin="xuanzhi"] .brand b,
[data-skin="xuanzhi"] .hd h2,
[data-skin="xuanzhi"] .hd > b{
  font-family:var(--raw-font-serif);
  letter-spacing:.06em;
}

/* 品牌印记：一枚方章，不是圆角图标 */
[data-skin="xuanzhi"] .rail .brand .mark{
  background:linear-gradient(145deg,#C0463A,#8D2A20);
  border-radius:2px;
  box-shadow:0 2px 0 rgba(0,0,0,.2);
  font-family:var(--raw-font-serif);
}

/* 纸面上的卡片：不靠阴影浮起来，靠一道米色描边「压」出来 */
[data-skin="xuanzhi"] .card,
[data-skin="xuanzhi"] .kpi,
[data-skin="xuanzhi"] .base-card{
  border-color:var(--border);
}
[data-skin="xuanzhi"] .card .hd{
  border-bottom:1px solid var(--border-soft);
  padding-bottom:9px;
  margin-bottom:12px;
}

/* 主按钮：印泥红，方角，按下去像盖章 */
[data-skin="xuanzhi"] .btn.primary{
  background:var(--brand);
  border-color:var(--brand);
  color:#FFF7EF;
  border-radius:2px;
  letter-spacing:.06em;
}
[data-skin="xuanzhi"] .btn.primary:hover{background:var(--brand-hover);border-color:var(--brand-hover)}

/* ============================================================
   ⑧ 蓝图工程
   ------------------------------------------------------------
   浅蓝底 + 10px 细格 / 50px 粗格（标准方格纸比例）。方格压在内容下面，
   不抢字；卡片是"图纸"：直角、白纸、一道蓝描边、左上角一个对位角标。
   ============================================================ */
[data-skin="blueprint"] body{
  background-image:
    linear-gradient(rgba(90,140,190,.16) 1px,transparent 1px),
    linear-gradient(90deg,rgba(90,140,190,.16) 1px,transparent 1px),
    linear-gradient(rgba(90,140,190,.09) 1px,transparent 1px),
    linear-gradient(90deg,rgba(90,140,190,.09) 1px,transparent 1px);
  background-size:50px 50px,50px 50px,10px 10px,10px 10px;
}

/* 图纸卡：左上角对位角标（与登录页 F 款那张图纸卡同一个记号） */
[data-skin="blueprint"] .card{
  position:relative;
  border-radius:3px;
}
[data-skin="blueprint"] .card::before{
  content:"";
  position:absolute;left:-1px;top:-1px;width:9px;height:9px;
  border-left:1px solid #8FB3D2;border-top:1px solid #8FB3D2;
  pointer-events:none;
}
[data-skin="blueprint"] .card .hd{
  border-bottom:1px dashed var(--border-soft);
  padding-bottom:9px;
  margin-bottom:12px;
}

/* 顶栏：图纸标题栏的"双线"——一条细实线压一条更淡的线 */
[data-skin="blueprint"] .cmdbar{
  box-shadow:0 3px 0 -2px #FFFFFF, 0 4px 0 -2px var(--border-soft);
}

/* 品牌与侧栏：等宽小字 + 字距，像图纸上的栏位标注 */
[data-skin="blueprint"] .brand b{letter-spacing:.05em}
[data-skin="blueprint"] .nav .grp{
  font-family:var(--mono);
  letter-spacing:.18em;
  text-transform:uppercase;
}
[data-skin="blueprint"] .rail .brand .mark{
  background:linear-gradient(145deg,#2B6CB0,#1B4A72);
  border-radius:2px;
  box-shadow:0 0 0 1px rgba(127,179,224,.5) inset;
}

/* 标签与按钮：图纸上没有圆角 */
[data-skin="blueprint"] .tag,
[data-skin="blueprint"] .btn,
[data-skin="blueprint"] .iconbtn,
[data-skin="blueprint"] .skbtn{
  border-radius:2px;
}

/* ============================================================
   极简 · 补充（用户 2026-10-31：「切皮肤丢失左侧导航」）
   ------------------------------------------------------------
   令牌层已把 --rail-line 加深、--rail-ink2/--rail-dim 提对比，
   app.css 给 .rail 补了右边框。这里再加一条：白侧栏上的分组标题
   （看 / 配）加一点点字重，让它在 12px 下站得住。
   ============================================================ */
[data-skin="minimal"] .nav .grp{font-weight:700}

/* ============================================================
   ⑨ 松山绿 · 渐变层（2026-10-31 第 29 轮，用户：「与V01同款的松山绿（渐变色）」）
   ------------------------------------------------------------
   色值 1:1 抄 V01 data-theme="f"：
     · 主按钮  v342⑦  linear-gradient(135deg,#2F6B4F,#275C44)
     · 品牌记  同上 tr-mark  140deg #2F6B4F → #1E4A37
     · 概览带  v343⑤  150deg #5E9478 → #2F6B4F 54% → #1E4A37，白字
   渐变只挂在 [data-skin="songshan"] 下，别的皮肤一个字节都吃不到。
   档位色是 V01 q-band 的原配色（浅色玻璃感 tints）：
     r=#FFD9D6  w=#FFE9C7  c=#CDEFEA  g=#CFF3DD  零值=白 60%。
   ============================================================ */
[data-skin="songshan"] .btn.primary{
  background:linear-gradient(135deg,#2F6B4F,#275C44);
  border-color:#275C44;
  color:#FFFFFF;
}
[data-skin="songshan"] .btn.primary:hover{
  background:linear-gradient(135deg,#35795A,#275C44);
  border-color:#275C44;
}
/* ★ 第 30 轮（用户验收 29 轮）：「松山绿：左侧导航栏未实行渐变」——
   V01 v345② 一级导航栏铺的就是松绿渐变，这里补上：
   顶部中绿 → 底部深绿（180°），导航文字用浅色令牌，两端的对比度都过线。 */
[data-skin="songshan"] .rail{
  background:linear-gradient(180deg,#2A5E47 0%,#1E4A37 46%,#16382B 100%);
}
[data-skin="songshan"] .rail .brand .mark{
  background:linear-gradient(140deg,#2F6B4F 0%,#1E4A37 100%);
}
/* 顶栏 cmdbar 不铺渐变：那一行里塞着面包屑/按钮/皮肤键，
   逐个翻白工作量不值，V01 的渐变记忆点由 概览带 + 主按钮 + 侧栏 承担。 */
[data-skin="songshan"] .qband{
  background:linear-gradient(150deg,#5E9478 0%,#2F6B4F 54%,#1E4A37 100%);
  border-color:transparent;
  box-shadow:var(--shadow-2);
}
[data-skin="songshan"] .qband .q-gr .v{color:#FFFFFF}
[data-skin="songshan"] .qband .q-gr .v.zero{color:rgba(255,255,255,.60)}
[data-skin="songshan"] .qband .q-gr .l{color:rgba(255,255,255,.78)}
[data-skin="songshan"] .qband .q-gr:hover{background:rgba(255,255,255,.12)}
[data-skin="songshan"] .qband .vr{background:rgba(255,255,255,.28)}
[data-skin="songshan"] .qband .q-gr.r .v{color:#FFD9D6}
[data-skin="songshan"] .qband .q-gr.w .v{color:#FFE9C7}
[data-skin="songshan"] .qband .q-gr.c .v{color:#CDEFEA}
[data-skin="songshan"] .qband .q-gr.g .v{color:#CFF3DD}
