/* ============================================================
   彩铅皮肤层 · styles_pencil.css（v1.29 样板）
   ------------------------------------------------------------
   定位：换肤不换骨 —— 只在 [data-theme="pencil"] 下覆写颜色 /
   纹理 / 描边，业务类名、布局、字号、交互逻辑一概不动。
   回退方式：外观设置里切回任意原主题即可（原 4 套主题原样保留）。

   风格数值唯一真相源：小院底图 yard.webp 实测 ——
     纸色 #FDFBE5 · 墨线 #392F17 · 纸纹颗粒 σ6.19。
   纹理全部预烘焙（img/pencil/），不依赖 CSS 滤镜，老 WebView 可用。
   ============================================================ */

[data-theme="pencil"]{
  --bg:#FDFBE5; --card:#FFFEF4;
  --line:#E3D9BC;                                   /* 铅笔淡线 */
  --txt:#392F17; --sub:#6E6046;                     /* 墨色文字，对纸底 ~11:1 */
  --hair:1px solid #E0D5B4;
  --honey:#E8912B; --honey2:#DE7F1F;                /* 主色保留暖橙系（彩铅填色） */
  --acc:#D97E1E; --acc-soft:#FBEFD3;
  --header-from:#FBF7E2; --header-to:#F6EFD6;       /* 头部从橙渐变改纸色 */
  --hero-bg1:#FCF6DF; --hero-bg2:#F8ECC8;
  --hero-txt:#4A3A20; --hero-sub:#93793D; --hero-go:#B47B25;
  --hero-glow:rgba(180,120,30,.25);
  --ok:#4E7A2E; --ok-soft:#EDF2D8;                  /* 语义色全部转彩铅调（降饱和） */
  --warn:#B47B25; --warn-soft:#FBEFD3;
  --info:#4A6B8A; --info-soft:#E9EEF0;
  --danger:#B4443C; --danger-soft:#F6E3DC;
  --shadow:0 1px 2px rgba(90,70,30,.06), 0 6px 18px rgba(90,70,30,.07);
  --shadow-sm:0 1px 2px rgba(90,70,30,.05);
  --ink-line:rgba(74,58,32,.85);                    /* 签字笔描边（半透明深棕） */
}

/* ---- 底妆：整页铺米白纸纹 ---- */
[data-theme="pencil"] body{
  background:#FDFBE5 url("img/pencil/paper.jpg") repeat;
}

/* ---- 顶栏：纸色 + 墨线底边，品牌字转墨色 ---- */
[data-theme="pencil"] header.appbar{
  background:#FBF7E2 url("img/pencil/paper.jpg");
  color:var(--txt);
  border-bottom:2px solid var(--ink-line);
  box-shadow:0 2px 0 rgba(74,58,32,.06);
}
[data-theme="pencil"] header.appbar .bTag{color:#8A7B5C;}
[data-theme="pencil"] header.appbar::after,
[data-theme="pencil"] header.appbar::before{background:rgba(74,58,32,.05);}
[data-theme="pencil"] .hdBtn{background:rgba(74,58,32,.08); color:#4A3A20;}
[data-theme="pencil"] .hdBtn:active{background:rgba(74,58,32,.16);}

/* ---- 底栏：纸色 + 墨线顶边，选中态 = 蜡笔圈选 ---- */
[data-theme="pencil"] .tabbar{
  background:#FBF7E2 url("img/pencil/paper.jpg");
  border-top:2px solid var(--ink-line);
  box-shadow:none;
}
[data-theme="pencil"] .tabbar .tab{color:#6E5E38;}
[data-theme="pencil"] .tabbar .tab.on{color:var(--acc);}
[data-theme="pencil"] .tabbar .tab.on .ti{
  background:var(--acc-soft);
  box-shadow:inset 0 0 0 1.5px var(--ink-line);
}

/* ---- 卡片族：纸底 + 手绘线框（border-image 九宫格，slice 与美术稿 20 对齐）----
   只套在大容器上（错题卡 / 通用盒 / 弹层面板），小控件用「抖动圆角」模拟手绘。 */
[data-theme="pencil"] .qcard,
[data-theme="pencil"] .box,
[data-theme="pencil"] .cfgPanel,
[data-theme="pencil"] .sheetPanel,
[data-theme="pencil"] .modalBack .modal{
  background-color:#FFFEF4;
  border:14px solid transparent;
  border-image:url("img/pencil/frame.png") 20 round;
  box-shadow:var(--shadow-sm);
}
[data-theme="pencil"] .sheetPanel{border-top-width:14px;}
[data-theme="pencil"] .subpage{background:#FDFBE5 url("img/pencil/paper.jpg") repeat;}
/* 🔴 v1.38.3：裁剪框绝不可以用上面卡片族的不透明纸底 —— 它必须让用户看见框住的错题内容。
   真实反馈「框选是不透明的就把错题挡住了」：彩铅改造时 .box 被顺手收进卡片族分组，
   #FFFEF4 实色纸底 + 14px 边框图把框里的题目糊得死死的（specificity (0,2,0) 压过基础规则）。
   这里用 (0,3,0) 摘出来：半透明淡彩底 + 2px 实色细边 + 无投影。
   判据：凡是「要透出底下内容」的层，永远不进卡片族纸底分组。 */
[data-theme="pencil"] .ovl .box{
  background-color:rgba(37,99,235,.10);
  border:2px solid var(--acc);
  border-image:none;
  box-shadow:none;
}

/* ---- 手绘圆角：不规则 border-radius = 抖动矩形（免图片，老 WebView 可用）---- */
[data-theme="pencil"] button.primary,
[data-theme="pencil"] button.ghost,
[data-theme="pencil"] button.danger,
[data-theme="pencil"] .ipt,
[data-theme="pencil"] .seg,
[data-theme="pencil"] .chip,
[data-theme="pencil"] .tagbtn,
[data-theme="pencil"] .petHouseBtn,
[data-theme="pencil"] .petClover{
  border:1.5px solid var(--ink-line);
  border-radius:255px 15px 225px 15px / 15px 225px 15px 255px;
}

/* ---- 主按钮 / FAB：蜜橙铅笔排线填充 + 墨描边 ---- */
[data-theme="pencil"] button.primary,
[data-theme="pencil"] .srcBtn.primary{
  background:#FCF3DC url("img/pencil/hatch_primary.jpg") repeat;
  background-size:96px 96px;
  color:#4A3A20;
  box-shadow:var(--shadow-sm);
}
[data-theme="pencil"] button.ghost{
  background:rgba(255,254,244,.7);
  color:#5A4A28;
}
[data-theme="pencil"] .modFab{
  background:#FCF3DC url("img/pencil/hatch_primary.jpg") repeat;
  background-size:96px 96px;
  color:#4A3A20;
  box-shadow:0 0 0 3px var(--ink-line), var(--shadow);
}
[data-theme="pencil"] .modFab.mini{
  background:#FFFEF4;
  color:#4A3A20;
  box-shadow:0 0 0 2px var(--ink-line), var(--shadow-sm);
}

/* ---- 输入框：纸底 + 墨线 ---- */
[data-theme="pencil"] .ipt{
  background:rgba(255,254,244,.8);
  color:var(--txt);
}
[data-theme="pencil"] .ipt::placeholder{color:#A69770;}
[data-theme="pencil"] .ipt:focus{border-color:var(--acc); background:#FFFEF4;}

/* ---- 图标手绘化（P2 批 4，v1.29.4）：滤镜方案已废弃，改真重绘 ----
   ★ 为什么不再用 feTurbulence：
       滤镜只是「整体抖一抖」，线骨子里还是笔直的；而且老 WebView 上
       有糊斑 / 失效风险（方案验收标准里点名要避免）。
   ★ 现在由 core/rough.js 在**路径层面**重画（起伏 / 超线 / 歪口），
     icons.js 用 Proxy 在彩铅主题下按需替换。两者不能叠加，
     所以这里显式关掉滤镜，防止线条被二次抖成糊团。 */
[data-theme="pencil"] .tabbar .ti svg,
[data-theme="pencil"] .hdBtn svg,
[data-theme="pencil"] button svg,
[data-theme="pencil"] .mItem .mi svg,
[data-theme="pencil"] .bee svg{
  filter:none;
}

/* ---- 弹层背景压暗调暖 ---- */
[data-theme="pencil"] .sheetBack,
[data-theme="pencil"] .modalBack{background:rgba(58,46,24,.45);}

/* ============================================================
   夜光纸（pencil-dark）：深棕纸底 + 淡彩铅笔触，暗色档的彩铅版
   ============================================================ */
[data-theme="pencil-dark"]{
  --bg:#221C10; --card:#2B2415;
  --line:#4A3F24; --txt:#F0E6C8; --sub:#B3A67E;
  --hair:1px solid #453A1F;
  --honey:#E8912B; --honey2:#DE7F1F;
  --acc:#E89B35; --acc-soft:#3A2F16;
  --header-from:#2B2415; --header-to:#241D10;
  --hero-bg1:#2E2614; --hero-bg2:#382D16;
  --hero-txt:#F3E3C4; --hero-sub:#B79A6A; --hero-go:#C79A4A;
  --hero-glow:rgba(0,0,0,.5);
  --ok:#8FBF5A; --ok-soft:#2C3318;
  --warn:#E0A83E; --warn-soft:#3A2F16;
  --info:#8FA8C0; --info-soft:#22303C;
  --danger:#E0736A; --danger-soft:#3C2420;
  --shadow:0 4px 16px rgba(0,0,0,.45);
  --shadow-sm:0 1px 2px rgba(0,0,0,.35);
  --ink-line:rgba(240,225,185,.4);
}
[data-theme="pencil-dark"] body{
  background:#221C10 url("img/pencil/paper_dark.jpg") repeat;
}
[data-theme="pencil-dark"] header.appbar,
[data-theme="pencil-dark"] .tabbar,
[data-theme="pencil-dark"] .subpage{
  background:#2B2415 url("img/pencil/paper_dark.jpg");
  color:var(--txt);
}
[data-theme="pencil-dark"] header.appbar{border-bottom:2px solid var(--ink-line); box-shadow:none;}
[data-theme="pencil-dark"] .tabbar{border-top:2px solid var(--ink-line); box-shadow:none;}
[data-theme="pencil-dark"] .qcard,
[data-theme="pencil-dark"] .box,
[data-theme="pencil-dark"] .cfgPanel,
[data-theme="pencil-dark"] .sheetPanel,
[data-theme="pencil-dark"] .modalBack .modal{
  background-color:#2B2415;
  border:14px solid transparent;
  border-image:url("img/pencil/frame_dark.png") 20 round;
  box-shadow:none;
}
/* 🔴 v1.38.3：同亮色主题 —— 裁剪框摘出卡片族不透明纸底（见上方注释），
   暗色下用半透明蓝底 + 亮边，保证框住的题目可见。 */
[data-theme="pencil-dark"] .ovl .box{
  background-color:rgba(120,170,255,.14);
  border:2px solid #8FB4EE;
  border-image:none;
  box-shadow:none;
}
[data-theme="pencil-dark"] button.primary,
[data-theme="pencil-dark"] .modFab{
  background-color:#3A2F16; color:#F3E3C4;
  box-shadow:0 0 0 2px var(--ink-line), 0 4px 14px rgba(0,0,0,.4);
}
[data-theme="pencil-dark"] button.ghost{background:rgba(240,230,200,.06); color:var(--txt);}
[data-theme="pencil-dark"] .ipt{background:rgba(240,230,200,.05); color:var(--txt); border-color:#5A4C28;}
[data-theme="pencil-dark"] .hdBtn{background:rgba(240,230,200,.1); color:#F0E6C8;}
[data-theme="pencil-dark"] .tabbar .tab{color:#B3A67E;}
[data-theme="pencil-dark"] .tabbar .tab.on{color:var(--acc);}
[data-theme="pencil-dark"] .tabbar .tab.on .ti{background:var(--acc-soft); box-shadow:inset 0 0 0 1.5px var(--ink-line);}
[data-theme="pencil-dark"] .sheetBack,
[data-theme="pencil-dark"] .modalBack{background:rgba(0,0,0,.6);}

/* ============================================================
   P1 批 1 · 全局控件补漏（v1.29.1）
   ------------------------------------------------------------
   怎么挑出来的：把代码里高频使用的 class 与皮肤层已覆盖的类做差集，
   再筛掉「本来就写 var(--*) 因而会自动适配」的，只留下 styles.css 里
   **硬编码颜色**的那些 —— 它们不跟着主题变量走，在纸背景上最刺眼。

   本批处理「每次操作都会看到」的全局件 + 掌握度语义色：
     · toast  深蓝黑 #1c2330 + 四个深色语义变体
     · qcard .x  半透明黑圆白叉（纸底上是个黑点）
     · 掌握度/答案标签  硬编码亮绿亮黄亮红亮紫
     · bCard 左边框  合成橙 / 亮绿
     · ic 调色板  8 色（含 #8B5CF6 紫、#EF4444 亮红）收成彩铅 5 色盘
   经查证排除：.dot 的白是相机快门（黑底取景界面，不属于全站皮肤）、
                .warn 系列是 var(--danger) 派生（自动适配）。
   ============================================================ */

/* ---- 吐司提示：纸底 + 墨线，语义变体改用淡彩软底 ---- */
[data-theme="pencil"] .toast{
  background:#FFFEF4; color:var(--txt);
  border:1.5px solid var(--ink-line); box-shadow:var(--shadow);
}
[data-theme="pencil"] .toast.k-ok  {background:var(--ok-soft);     color:#3A5A1E;}
[data-theme="pencil"] .toast.k-err {background:var(--danger-soft); color:#8A2F28;}
[data-theme="pencil"] .toast.k-warn{background:var(--warn-soft);   color:#7A5518;}
[data-theme="pencil"] .toast.k-load{background:#FFFEF4;}
[data-theme="pencil"] .toast .tSpin{border-color:var(--ink-line); border-top-color:var(--acc);}

/* ---- 题卡右上角删除钮：黑圆白叉 → 纸底墨线圈 ---- */
[data-theme="pencil"] .qcard .x{
  background:rgba(255,254,244,.94); color:var(--txt);
  box-shadow:inset 0 0 0 1.5px var(--ink-line);
}

/* ---- 掌握度 / 答案标签：亮色 → 已降饱和的语义变量 ---- */
[data-theme="pencil"] .qcard .tagbar .t.m-good{background:var(--ok-soft);     color:var(--ok);}
[data-theme="pencil"] .qcard .tagbar .t.m-half{background:var(--warn-soft);   color:var(--warn);}
[data-theme="pencil"] .qcard .tagbar .t.m-bad {background:var(--danger-soft); color:var(--danger);}
[data-theme="pencil"] .qcard .tagbar .t.ans   {background:var(--info-soft);   color:var(--info);}

/* ---- 错题列表左边框：合成橙 / 亮绿 → 语义色 ---- */
[data-theme="pencil"] .bCard.m-half{border-left-color:var(--warn);}
[data-theme="pencil"] .bCard.m-good{border-left-color:var(--ok);}

/* ---- 图标底盘 ic：纸底墨线圈；蓝/紫/青/青绿这些彩铅没有的颜色统一收到 info ---- */
[data-theme="pencil"] .ic.blue,
[data-theme="pencil"] .ic.purple,
[data-theme="pencil"] .ic.teal,
[data-theme="pencil"] .ic.cyan  {background:var(--info-soft); color:var(--info);}
[data-theme="pencil"] .ic.green {background:var(--ok-soft);   color:var(--ok);}
[data-theme="pencil"] .ic.orange{background:var(--acc-soft);  color:var(--acc);}
[data-theme="pencil"] .ic.red   {background:var(--danger-soft); color:var(--danger);}
[data-theme="pencil"] .ic.grey  {background:rgba(74,58,32,.08); color:var(--sub);}
[data-theme="pencil"] .dHero .ic,
[data-theme="pencil"] .dAlert .ic,
[data-theme="pencil"] .dCell .ic,
[data-theme="pencil"] .gsRow .ic{
  box-shadow:inset 0 0 0 1.5px var(--ink-line);
}

/* ---- 题卡图片区：冷白 #fafafa → 纸白（老纸背景上不再发青） ---- */
[data-theme="pencil"] .qcard img{background:#FFFEF4;}

/* ============================================================
   P1 批 1 · 夜光纸版
   ============================================================ */
[data-theme="pencil-dark"] .toast{
  background:#2B2415; color:var(--txt);
  border:1.5px solid var(--ink-line); box-shadow:0 4px 16px rgba(0,0,0,.45);
}
[data-theme="pencil-dark"] .toast.k-ok  {background:var(--ok-soft);     color:#C9E39A;}
[data-theme="pencil-dark"] .toast.k-err {background:var(--danger-soft); color:#F0A9A2;}
[data-theme="pencil-dark"] .toast.k-warn{background:var(--warn-soft);   color:#E7C078;}
[data-theme="pencil-dark"] .toast.k-load{background:#2B2415;}
[data-theme="pencil-dark"] .toast .tSpin{border-color:var(--ink-line); border-top-color:var(--acc);}
[data-theme="pencil-dark"] .qcard .x{
  background:rgba(43,36,21,.94); color:var(--txt);
  box-shadow:inset 0 0 0 1.5px var(--ink-line);
}
[data-theme="pencil-dark"] .qcard .tagbar .t.m-good{background:var(--ok-soft);     color:var(--ok);}
[data-theme="pencil-dark"] .qcard .tagbar .t.m-half{background:var(--warn-soft);   color:var(--warn);}
[data-theme="pencil-dark"] .qcard .tagbar .t.m-bad {background:var(--danger-soft); color:var(--danger);}
[data-theme="pencil-dark"] .qcard .tagbar .t.ans   {background:var(--info-soft);   color:var(--info);}
[data-theme="pencil-dark"] .bCard.m-half{border-left-color:var(--warn);}
[data-theme="pencil-dark"] .bCard.m-good{border-left-color:var(--ok);}
[data-theme="pencil-dark"] .ic.blue,
[data-theme="pencil-dark"] .ic.purple,
[data-theme="pencil-dark"] .ic.teal,
[data-theme="pencil-dark"] .ic.cyan  {background:var(--info-soft); color:var(--info);}
[data-theme="pencil-dark"] .ic.green {background:var(--ok-soft);   color:var(--ok);}
[data-theme="pencil-dark"] .ic.orange{background:var(--acc-soft);  color:var(--acc);}
[data-theme="pencil-dark"] .ic.red   {background:var(--danger-soft); color:var(--danger);}
[data-theme="pencil-dark"] .ic.grey  {background:rgba(240,230,200,.08); color:var(--sub);}
[data-theme="pencil-dark"] .qcard img{background:var(--card);}

/* ============================================================
   P1 批 2 · 复习 / 背诵（v1.29.2）
   ------------------------------------------------------------
   原样式把「会 / 半会 / 不会」三态写成硬编码亮色：
     good #bfe9cd / #16A34A · half #f6dcb4 / honey2 · bad #f6c9c9 / #DC2626
   在纸底上是一块块塑料荧光片。统一改引用变量套里已降饱和的
   --ok / --warn / --danger 派生态，不另取新色（铁律 2）。

   ★ 顺带修掉一个隐藏的可读性问题：四处「蜜橙渐变 + 纯白字」的主按钮
     （.rvB.done / .rcGoCk / .ckBtn.go / .ckCell.on）白字对浅底只有约 2.4:1，
     老人看不清 —— 改用排线底 + 墨色字（与 P0 主按钮同一手法）。
   ============================================================ */

/* ---- 复习 / 背诵三态判定钮 ---- */
[data-theme="pencil"] .rvB,
[data-theme="pencil"] .rcB{
  border-radius:255px 15px 225px 15px / 15px 225px 15px 255px;
  box-shadow:var(--shadow-sm);
}
[data-theme="pencil"] .rvB.good,
[data-theme="pencil"] .rcB.good{background:var(--ok-soft);     border-color:var(--ok);     color:var(--ok);}
[data-theme="pencil"] .rvB.half,
[data-theme="pencil"] .rcB.half{background:var(--warn-soft);   border-color:var(--warn);   color:var(--warn);}
[data-theme="pencil"] .rvB.bad,
[data-theme="pencil"] .rcB.bad {background:var(--danger-soft); border-color:var(--danger); color:var(--danger);}

/* ---- 四处白字渐变钮 → 排线底 + 墨字 ---- */
[data-theme="pencil"] .rvB.done,
[data-theme="pencil"] .rcGoCk,
[data-theme="pencil"] .ckBtn.go{
  background:#FCF3DC url("img/pencil/hatch_primary.jpg") repeat;
  background-size:96px 96px;
  color:#4A3A20;
  border-color:var(--ink-line);
  box-shadow:var(--shadow-sm);
}
[data-theme="pencil"] .ckCell.on{
  background:#FCF3DC url("img/pencil/hatch_primary.jpg") repeat;
  background-size:64px 64px;
  color:#4A3A20;
}

/* ---- 完成页：大勾 / 统计胶囊 ---- */
[data-theme="pencil"] .rvDone .big,
[data-theme="pencil"] .rcDone .big{
  background:var(--ok-soft); color:var(--ok);
  box-shadow:inset 0 0 0 1.5px var(--ok);
}
[data-theme="pencil"] .rvSum .s.good,
[data-theme="pencil"] .rcSum .s.good{background:var(--ok-soft);     color:var(--ok);}
[data-theme="pencil"] .rvSum .s.half,
[data-theme="pencil"] .rcSum .s.half{background:var(--warn-soft);   color:var(--warn);}
[data-theme="pencil"] .rvSum .s.bad,
[data-theme="pencil"] .rcSum .s.bad {background:var(--danger-soft); color:var(--danger);}

/* ---- 复习计划页：掌握度环 / 数字 / 进度条 ---- */
[data-theme="pencil"] .rvRing{background:conic-gradient(var(--ok) calc(var(--p,0)*1%), var(--line) 0);}
[data-theme="pencil"] .rvHead .k .n.ok{color:var(--ok);}
[data-theme="pencil"] .rvPlan .pr.fin .lb{color:var(--ok);}
[data-theme="pencil"] .rvPlan .pr.fin .tr i{background:linear-gradient(90deg,#6E9A44,var(--ok));}

/* ---- 滑动手势提示（绿左 / 红右 / 橙上 三色浮标）---- */
[data-theme="pencil"] .rvHint.left {color:var(--ok);     background:var(--ok-soft);     border-color:var(--ok);}
[data-theme="pencil"] .rvHint.right{color:var(--danger); background:var(--danger-soft); border-color:var(--danger);}
[data-theme="pencil"] .rvHint.up   {color:var(--warn);   background:var(--warn-soft);   border-color:var(--warn);}

/* ---- 首屏提醒卡：红边 / 复习卡橙态 / 已完成绿态 ---- */
[data-theme="pencil"] .dAlert{border-color:var(--danger-soft); border-left-color:var(--danger); box-shadow:var(--shadow-sm);}
[data-theme="pencil"] .dAlert.rv{border-color:var(--warn-soft); border-left-color:var(--warn);}
[data-theme="pencil"] .dAlert.rv.ok{border-color:var(--ok-soft); border-left-color:var(--ok);}
[data-theme="pencil"] .dAlert.rv.ok .lab{color:var(--ok);}

/* ---- 背诵完成态 / 危险次按钮 ---- */
[data-theme="pencil"] .ckBtn.done{background:var(--ok-soft); border-color:var(--ok); color:var(--ok);}
[data-theme="pencil"] .rvActs > button.danger{border-color:var(--danger); color:var(--danger);}

/* ---- 题卡角标补漏（批 1 只做了 m-* 三态，这里补齐剩下 4 个）---- */
[data-theme="pencil"] .qcard .tagbar .t.retry{background:var(--danger-soft); color:var(--danger);}
[data-theme="pencil"] .qcard .tagbar .t.cnt2 {background:rgba(74,58,32,.08); color:var(--sub);}
[data-theme="pencil"] .qcard .tagbtn.src,
[data-theme="pencil"] .qcard .tagbtn.fav{background:rgba(74,58,32,.55); color:#FFFEF4;}
[data-theme="pencil"] .qcard .tagbtn.fav.on{
  background:var(--honey); color:#3A2C00;
  box-shadow:0 0 0 2px var(--ink-line);
}

/* ============================================================
   P1 批 2 · 夜光纸版
   ============================================================ */
[data-theme="pencil-dark"] .rvB,
[data-theme="pencil-dark"] .rcB{border-radius:255px 15px 225px 15px / 15px 225px 15px 255px;}
[data-theme="pencil-dark"] .rvB.good,
[data-theme="pencil-dark"] .rcB.good{background:var(--ok-soft);     border-color:var(--ok);     color:var(--ok);}
[data-theme="pencil-dark"] .rvB.half,
[data-theme="pencil-dark"] .rcB.half{background:var(--warn-soft);   border-color:var(--warn);   color:var(--warn);}
[data-theme="pencil-dark"] .rvB.bad,
[data-theme="pencil-dark"] .rcB.bad {background:var(--danger-soft); border-color:var(--danger); color:var(--danger);}
[data-theme="pencil-dark"] .rvB.done,
[data-theme="pencil-dark"] .rcGoCk,
[data-theme="pencil-dark"] .ckBtn.go{
  background:#3A2F16; color:#F0E6C8;
  border-color:var(--ink-line); box-shadow:none;
}
[data-theme="pencil-dark"] .ckCell.on{background:#3A2F16; color:#F0E6C8;}
[data-theme="pencil-dark"] .rvDone .big,
[data-theme="pencil-dark"] .rcDone .big{
  background:var(--ok-soft); color:var(--ok);
  box-shadow:inset 0 0 0 1.5px var(--ok);
}
[data-theme="pencil-dark"] .rvSum .s.good,
[data-theme="pencil-dark"] .rcSum .s.good{background:var(--ok-soft);     color:var(--ok);}
[data-theme="pencil-dark"] .rvSum .s.half,
[data-theme="pencil-dark"] .rcSum .s.half{background:var(--warn-soft);   color:var(--warn);}
[data-theme="pencil-dark"] .rvSum .s.bad,
[data-theme="pencil-dark"] .rcSum .s.bad {background:var(--danger-soft); color:var(--danger);}
[data-theme="pencil-dark"] .rvRing{background:conic-gradient(var(--ok) calc(var(--p,0)*1%), var(--line) 0);}
[data-theme="pencil-dark"] .rvHead .k .n.ok{color:var(--ok);}
[data-theme="pencil-dark"] .rvPlan .pr.fin .lb{color:var(--ok);}
[data-theme="pencil-dark"] .rvPlan .pr.fin .tr i{background:linear-gradient(90deg,#6E9A44,var(--ok));}
[data-theme="pencil-dark"] .rvHint.left {color:var(--ok);     background:var(--ok-soft);     border-color:var(--ok);}
[data-theme="pencil-dark"] .rvHint.right{color:var(--danger); background:var(--danger-soft); border-color:var(--danger);}
[data-theme="pencil-dark"] .rvHint.up   {color:var(--warn);   background:var(--warn-soft);   border-color:var(--warn);}
[data-theme="pencil-dark"] .dAlert{border-color:var(--danger-soft); border-left-color:var(--danger); box-shadow:none;}
[data-theme="pencil-dark"] .dAlert.rv{border-color:var(--warn-soft); border-left-color:var(--warn);}
[data-theme="pencil-dark"] .dAlert.rv.ok{border-color:var(--ok-soft); border-left-color:var(--ok);}
[data-theme="pencil-dark"] .dAlert.rv.ok .lab{color:var(--ok);}
[data-theme="pencil-dark"] .ckBtn.done{background:var(--ok-soft); border-color:var(--ok); color:var(--ok);}
[data-theme="pencil-dark"] .rvActs > button.danger{border-color:var(--danger); color:var(--danger);}
[data-theme="pencil-dark"] .qcard .tagbar .t.retry{background:var(--danger-soft); color:var(--danger);}
[data-theme="pencil-dark"] .qcard .tagbar .t.cnt2 {background:rgba(240,230,200,.08); color:var(--sub);}
[data-theme="pencil-dark"] .qcard .tagbtn.src,
[data-theme="pencil-dark"] .qcard .tagbtn.fav{background:rgba(240,230,200,.14); color:var(--txt);}
[data-theme="pencil-dark"] .qcard .tagbtn.fav.on{
  background:var(--honey); color:#3A2C00;
  box-shadow:0 0 0 2px var(--ink-line);
}

/* ============================================================
   P1 批 3 · 小院 / 抽奖机 / 资料库（v1.29.3）
   ------------------------------------------------------------
   ★ 本批最大的问题不是配色不好看，是**读不清**：小院里有 12 处
     「主色底 + 纯白字」的按钮（petUpgBtn / petWaterBtn / petBuyMini /
     petDrawBtn …）。白字压在 #D97E1E 上对比度只有约 2.6:1 —— 老人看不清。
     统一改成排线底 + 墨色字（与 P0 主按钮同一手法），对比度升到 ~8:1。
   ★ 4 块半透明「冷白」面板（HUD / 苜蓿条 / 底部栏 / 转轴）改半透明纸色，
     在纸底插画上不再发青。
   ★ 金渐变奖章（抽奖结果 / 保底卡 / 日志）改淡彩纸底 + 墨线，
     等级差异靠「边框粗细 + 排线密度」表达，不靠塑料高光。
   ★ 资料库 frow/fname/fmeta 经复核**全走 var(--*)**，会自动适配，
     属扫描误报，本批不动。
   ============================================================ */

/* ---- 组 A：12 处白字主按钮 → 排线底 + 墨字 ---- */
[data-theme="pencil"] .petUpgBtn,
[data-theme="pencil"] .petWaterBtn,
[data-theme="pencil"] .petCastBtn,
[data-theme="pencil"] .petFriendBtn,
[data-theme="pencil"] .petBuyMini,
[data-theme="pencil"] .petArcadeBuy,
[data-theme="pencil"] .petDrawBtn,
[data-theme="pencil"] .petFocusBtn,
[data-theme="pencil"] .petMakeupBtn,
/* v1.36 新增：地块升级 / 开垦 / 捉虫 / 家具卡片按钮 —— 同组 A，排线底墨字，别再出现主色底白字 */
[data-theme="pencil"] .petPlotUpBtn,
[data-theme="pencil"] .petReclaimBtn,
[data-theme="pencil"] .petBugBtn,
[data-theme="pencil"] .petFurnCardBtn,
[data-theme="pencil"] .petKeyGo,
[data-theme="pencil"] .petScUpBtn{
  background:#FCF3DC url("img/pencil/hatch_primary.jpg") repeat;
  background-size:96px 96px;
  color:#4A3A20;
  border:1.5px solid var(--ink-line);
  box-shadow:var(--shadow-sm);
}
[data-theme="pencil"] .petPlotUpBtn.off,
[data-theme="pencil"] .petReclaimBtn.off,
[data-theme="pencil"] .petFurnCardBtn.ghost{background:rgba(74,58,32,.10); color:var(--sub); border:1.5px solid var(--ink-line); box-shadow:none;}
[data-theme="pencil"] .petFurnSlotI{background:#FCF3DC url("img/pencil/hatch_primary.jpg") repeat; background-size:48px 48px; color:#4A3A20; border:1.5px solid var(--ink-line);}
/* 三枚小徽标（胶囊 / 数字角标 / 保底 P）：排线要缩小，否则看不出纹理 */
[data-theme="pencil"] .petUpgLv,
[data-theme="pencil"] .petStampChipN,
[data-theme="pencil"] .petJackP{
  background:#FCF3DC url("img/pencil/hatch_primary.jpg") repeat;
  background-size:48px 48px;
  color:#4A3A20;
  border:1.5px solid var(--ink-line);
}
[data-theme="pencil"] .petBuyMini.off{background:rgba(74,58,32,.10); color:var(--sub); border:1.5px solid var(--ink-line);}
[data-theme="pencil"] .petBuyMini.ghost{background:rgba(255,254,244,.85); color:var(--sub); border:1.5px solid var(--ink-line);}

/* ---- 组 B：半透明冷白面板 → 半透明纸色 + 墨线 ---- */
[data-theme="pencil"] .petHudInfo,
[data-theme="pencil"] .petClover,
[data-theme="pencil"] .petHudBottom,
[data-theme="pencil"] .petReel{
  background:rgba(255,254,244,.9);
  border:1.5px solid var(--ink-line);
  box-shadow:var(--shadow-sm);
}

/* ---- 组 C：金渐变奖章 → 淡彩纸底 + 墨线（等级靠边粗与排线密度表达）---- */
[data-theme="pencil"] .petDrawResult.win,
[data-theme="pencil"] .petJackCard{
  background:var(--acc-soft); border:1.5px solid var(--ink-line); box-shadow:var(--shadow-sm);
}
[data-theme="pencil"] .petDrawResult.win.forced{
  background:#FCF3DC; border-color:var(--acc); box-shadow:0 0 0 1.5px var(--acc);
}
[data-theme="pencil"] .petDrawResult.win.big{
  background:#FCF3DC url("img/pencil/hatch_soft.jpg") repeat; background-size:64px 64px;
  border-color:var(--acc); box-shadow:0 0 0 2px var(--acc);
}
[data-theme="pencil"] .petDrawResult.win.jack{
  background:#FCF3DC url("img/pencil/hatch_primary.jpg") repeat; background-size:64px 64px;
  border-color:var(--honey2); box-shadow:0 0 0 3px var(--honey2);
}
[data-theme="pencil"] .petArcadeLogI.jack{
  background:#FCF3DC url("img/pencil/hatch_primary.jpg") repeat; background-size:48px 48px;
  border-color:var(--honey2); box-shadow:0 0 0 2px var(--honey2);
}
[data-theme="pencil"] .petPityBarI{background:linear-gradient(90deg,#F0C879,var(--honey2));}

/* ---- 组 D：零散小色块归位（亮绿 / 亮红 / 冷金属 / 稀有金）---- */
[data-theme="pencil"] .petPlotProgRingI,
[data-theme="pencil"] .petPlotProgI{background:linear-gradient(90deg,#6E9A44,var(--ok));}
[data-theme="pencil"] .petSeedCost.free{color:var(--ok);}
[data-theme="pencil"] .petLeverBall{background:var(--danger); box-shadow:0 2px 4px rgba(90,70,30,.25);}
[data-theme="pencil"] .petLeverRod,
[data-theme="pencil"] .petArcadeMiniLever{background:linear-gradient(180deg,#F3EAD4,#C9B892);}
[data-theme="pencil"] .petCatchFishRare{color:var(--honey2);}
[data-theme="pencil"] .petCatchTitle.t-jackpot{color:var(--danger); text-shadow:none;}

/* ---- 组 E：抽奖机机身（CSS 拟物深棕 → 彩铅暖木色，降饱和提亮）---- */
[data-theme="pencil"] .petArcadeMini,
[data-theme="pencil"] .petArcadeMachine{background:linear-gradient(180deg,#C69A6B,#A87C4F);}

/* ============================================================
   P1 批 3 · 夜光纸版
   ============================================================ */
[data-theme="pencil-dark"] .petUpgBtn,
[data-theme="pencil-dark"] .petWaterBtn,
[data-theme="pencil-dark"] .petCastBtn,
[data-theme="pencil-dark"] .petFriendBtn,
[data-theme="pencil-dark"] .petBuyMini,
[data-theme="pencil-dark"] .petArcadeBuy,
[data-theme="pencil-dark"] .petDrawBtn,
[data-theme="pencil-dark"] .petFocusBtn,
[data-theme="pencil-dark"] .petMakeupBtn,
[data-theme="pencil-dark"] .petUpgLv,
[data-theme="pencil-dark"] .petStampChipN,
[data-theme="pencil-dark"] .petJackP,
/* v1.36 新增按钮（与亮版同口径：夜里也是深纸底 + 浅墨字，绝不主色底白字） */
[data-theme="pencil-dark"] .petPlotUpBtn,
[data-theme="pencil-dark"] .petReclaimBtn,
[data-theme="pencil-dark"] .petBugBtn,
[data-theme="pencil-dark"] .petFurnCardBtn,
[data-theme="pencil-dark"] .petFurnSlotI,
[data-theme="pencil-dark"] .petKeyGo,
[data-theme="pencil-dark"] .petScUpBtn{
  background:#3A2F16; color:#F0E6C8;
  border:1.5px solid var(--ink-line); box-shadow:none;
}
[data-theme="pencil-dark"] .petPlotUpBtn.off,
[data-theme="pencil-dark"] .petReclaimBtn.off,
[data-theme="pencil-dark"] .petFurnCardBtn.ghost{background:rgba(240,230,200,.08); color:var(--sub);}
[data-theme="pencil-dark"] .petBuyMini.off,
[data-theme="pencil-dark"] .petBuyMini.ghost{background:rgba(240,230,200,.08); color:var(--sub);}
[data-theme="pencil-dark"] .petHudInfo,
[data-theme="pencil-dark"] .petClover,
[data-theme="pencil-dark"] .petHudBottom,
[data-theme="pencil-dark"] .petReel{
  background:rgba(43,36,21,.92); border:1.5px solid var(--ink-line);
}
[data-theme="pencil-dark"] .petDrawResult.win,
[data-theme="pencil-dark"] .petJackCard{
  background:var(--acc-soft); border:1.5px solid var(--ink-line); box-shadow:none;
}
[data-theme="pencil-dark"] .petDrawResult.win.forced{background:#3A2F16; border-color:var(--acc); box-shadow:0 0 0 1.5px var(--acc);}
[data-theme="pencil-dark"] .petDrawResult.win.big{background:#3A2F16; border-color:var(--acc); box-shadow:0 0 0 2px var(--acc);}
[data-theme="pencil-dark"] .petDrawResult.win.jack{background:#463718; border-color:var(--honey2); box-shadow:0 0 0 3px var(--honey2);}
[data-theme="pencil-dark"] .petArcadeLogI.jack{background:#463718; border-color:var(--honey2); box-shadow:0 0 0 2px var(--honey2);}
[data-theme="pencil-dark"] .petPityBarI{background:linear-gradient(90deg,#A9762C,var(--honey2));}
[data-theme="pencil-dark"] .petPlotProgRingI,
[data-theme="pencil-dark"] .petPlotProgI{background:linear-gradient(90deg,#6E9A44,var(--ok));}
[data-theme="pencil-dark"] .petSeedCost.free{color:var(--ok);}
[data-theme="pencil-dark"] .petLeverBall{background:var(--danger); box-shadow:0 2px 4px rgba(0,0,0,.4);}
[data-theme="pencil-dark"] .petLeverRod,
[data-theme="pencil-dark"] .petArcadeMiniLever{background:linear-gradient(180deg,#8A7A55,#5E5236);}
[data-theme="pencil-dark"] .petCatchFishRare{color:var(--honey);}
[data-theme="pencil-dark"] .petCatchTitle.t-jackpot{color:var(--danger); text-shadow:0 0 14px rgba(224,115,106,.3);}
[data-theme="pencil-dark"] .petArcadeMini,
[data-theme="pencil-dark"] .petArcadeMachine{background:linear-gradient(180deg,#5A4227,#3E2D19);}

/* ---- 主题选择器里的两块色板（对应 styles.css .swatch.honey 等） ---- */
.themeSw .swatch.pencil{background:#FDFBE5 url("img/pencil/paper.jpg"); background-size:96px;}
.themeSw .swatch.pencil::before{content:""; position:absolute; left:10px; top:14px; width:34px; height:26px;
  background:#FCF3DC url("img/pencil/hatch_primary.jpg"); background-size:64px;
  border:2px solid rgba(74,58,32,.8); border-radius:6px;}
.themeSw .swatch.pencil::after{background:rgba(74,58,32,.5);}
.themeSw .swatch.pencil-dark{background:#221C10 url("img/pencil/paper_dark.jpg"); background-size:96px;}
.themeSw .swatch.pencil-dark::before{content:""; position:absolute; left:10px; top:14px; width:34px; height:26px;
  background:#3A2F16; border:2px solid rgba(240,225,185,.5); border-radius:6px;}
.themeSw .swatch.pencil-dark::after{background:rgba(240,225,185,.3);}

/* ---- 顶栏 4 钮防挤压：副标题不再换行（全局小修，原主题同样受益） ---- */
.hbTop{gap:8px;}
.hbActions{gap:4px;}
.bTxt{min-width:0;}
.bName{white-space:nowrap;}
.bTag{white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
@media (max-width:430px){
  .hdBtn{width:40px; height:40px;}
  .hdBtn svg{width:18px; height:18px;}
  .bTag{font-size:11px;}
}
