*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{overflow-anchor:none;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;scrollbar-width:none}
html::-webkit-scrollbar{display:none}
/* 表单控件默认**不继承**字体：浏览器 UA 给 button/input/select/textarea 设了 Arial，
   中文再落到平台默认黑体 —— 站长一眼看出"连最基本的 tab 都没覆盖"（精选底栏那 3 个 button
   和里面的计数 span 全是 Arial）。原来的写法是零散地给个别控件加 font-family:inherit，
   漏一个就漏一片，所以这里统一收口。 */
button,input,select,textarea{font-family:inherit}
body{-webkit-text-size-adjust:100%;text-size-adjust:100%;background:radial-gradient(1200px 500px at 50% -120px,#1b1a16 0%,#101418 55%);color:var(--tx-body);font:14px/1.6 -apple-system,"Segoe UI","Microsoft YaHei",sans-serif;font-family:var(--ff)}
#app{max-width:560px;margin:0 auto;min-height:var(--vh0,100vh);min-height:var(--vh0,100vh);display:flex;flex-direction:column}
::-webkit-scrollbar{width:4px;height:4px}
::-webkit-scrollbar-thumb{background:#2c3642;border-radius:2px}
header{position:sticky;top:0;min-height:56px;height:auto;overflow:hidden;margin:0;border-radius:0;background:radial-gradient(120% 140% at 50% -40%,rgba(246,197,106,.04) 0%,rgba(246,197,106,0) 55%),rgba(35,29,15,.78);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border-bottom:1px solid rgba(246,197,106,.08);box-shadow:var(--sh-3);padding:8px 14px;display:flex;align-items:center;gap:10px;z-index:20;}
header .logo{width:40px;height:40px;border-radius:12px;overflow:hidden;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:none;transition:opacity .2s ease}
header .logo img{width:100%;height:100%;display:block;object-fit:cover}
header .logo svg{width:100%;height:100%;display:block}
header .brand{min-width:0;max-width:100%;flex:1}
header h1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
header h1{position:relative;font-size:19px;font-weight:800;letter-spacing:1px;font-family:var(--ff);color:#f6c56a;white-space:nowrap}
header h1::before{display:none}
@keyframes shine{to{background-position:-200% 0}}
header .tagline{font-size:10px;color:var(--tx-dim);letter-spacing:.6px;margin-top:1px;white-space:nowrap;max-height:20px;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease}
header .tagline span{display:inline-block;animation:tgwave 2.8s ease-in-out infinite}
@keyframes tgwave{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
header .note{color:var(--tx-faint);font-size:11px;background:#1a2027;border:1px solid #232b35;border-radius:12px;padding:2px 10px;white-space:nowrap;flex-shrink:0}
body.compact header{min-height:30px;padding:3px 14px}
body.compact header h1{font-size:15px;background:none;-webkit-text-fill-color:#f6c56a;-webkit-text-stroke:0;animation:none;text-shadow:none}
header h1.t-swap{animation:tSwap .55s cubic-bezier(.22,1,.36,1)}
@keyframes tSwap{0%{opacity:.15;transform:translateY(7px)}55%{opacity:1;transform:translateY(-2.5px)}100%{opacity:1;transform:none}}
.compact header h1::before{display:none}
body.compact header .logo{width:0;opacity:0;box-shadow:none}
body.compact header .tagline{max-height:0;opacity:0}
@media (max-width:420px){
  body.compact header h1{font-size:13.5px;letter-spacing:.2px}
  header .hdr-btn{padding:6px 10px;font-size:13px}
}
.stickwrap{top:var(--hdrH, 56px)}
.hdr-btn{display:flex;align-items:center;background:linear-gradient(120deg,#f6c56a,var(--gold-deep));border:1px solid #ffe89a;color:#1a1405;font-weight:800;border-radius:12px;padding:6px 13px;font-size:13.5px;font-family:var(--ff);cursor:pointer;white-space:nowrap;flex-shrink:0;line-height:1;box-shadow:none}
.hdr-btn svg{display:block;flex-shrink:0}
.hdr-btn:active{background:rgba(246,197,106,.22)}
.inst-guide p{color:var(--tx-body);margin-bottom:10px;font-size:13px;line-height:1.8}
.inst-guide b{color:#f6c56a}
.draw{position:relative;overflow:hidden;margin:10px 12px 0;background:radial-gradient(120% 90% at 50% -20%,rgba(246,197,106,.15) 0%,rgba(246,197,106,0) 55%),linear-gradient(160deg,#26200f 0%,#171d24 55%,#10151c 100%);border:1px solid rgba(246,197,106,.22);border-radius:12px;padding:12px 12px 10px;flex-shrink:0;box-shadow:var(--sh-3),var(--inner-hi);min-height:154px}   /* 预留加载前的高度：开奖数据是异步到的，不预留就会有 0.075 的布局跳动 ——
   而这一跳会把下面正在操作的地方（比如评论输入框）整片推走，站长看到的"输入框时有时无"就是这个 */
.draw::before{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,transparent 32%,var(--card-2) 46%,transparent 60%)}
.draw::after{content:'';position:absolute;left:16px;right:16px;top:0;height:1px;pointer-events:none;background:linear-gradient(90deg,transparent,rgba(240,185,11,.7),transparent)}
.draw .drow1,.draw .dbtn,.draw .balls{position:relative;z-index:1}
.draw .drow1{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:nowrap;overflow:hidden;min-height:22px}
.draw .drow1 span{white-space:nowrap}
.draw .qihao{font-size:13px;font-weight:800;letter-spacing:.5px;background:linear-gradient(90deg,#f6c56a,var(--gold-deep) 45%,var(--gold-light));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.draw .otime{color:#93a0ad;font-size:11px;letter-spacing:.3px}
.draw .cd{margin-left:auto;color:#f6c56a;font-size:12px;font-weight:600;background:linear-gradient(180deg,rgba(246,197,106,.14),rgba(246,197,106,.08));border:1px solid rgba(246,197,106,.32);border-radius:12px;padding:3px 10px;white-space:nowrap;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 2px 8px rgba(0,0,0,.25)}
.draw .cd .cdnum{display:inline-block;min-width:.62em;text-align:center;font-style:normal}
.draw .cd.live{color:#f87171;background:linear-gradient(180deg,rgba(239,68,68,.16),rgba(239,68,68,.07));border-color:rgba(239,68,68,.5);box-shadow:var(--inner-hi),0 0 14px rgba(239,68,68,.35);animation:blink 1.2s infinite}
@keyframes blink{50%{opacity:.45}}
.dbtn{display:flex;gap:8px;margin-top:8px}
.hist-btn{flex:1;background:linear-gradient(180deg,rgba(246,197,106,.14),rgba(246,197,106,.05));border:1px solid rgba(246,197,106,.22);color:#f6c56a;border-radius:8px;padding:5px 0;font-size:12px;cursor:pointer;white-space:nowrap;text-align:center;box-shadow:var(--inner-hi)}
.hist-btn:active{background:linear-gradient(180deg,rgba(246,197,106,.35),rgba(246,197,106,.14));transform:translateY(1px)}
.draw .balls{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;justify-content:center;min-height:52px;margin-bottom:2px;background:rgba(0,0,0,.24);border:1px solid rgba(246,197,106,.14);border-radius:12px;padding:7px 4px 5px;box-shadow:inset 0 2px 12px rgba(0,0,0,.4),inset 0 0 24px rgba(246,197,106,.04)}
/* （推广横幅那套样式 2026-09-21 已剔除：站长"之前那个广告已经是过去式了 安全剔除" ✓） */
/* 广告长按键（2026-09-21 站长：广告"不做成图、做成按键"）：与开奖卡同一块内的**整条宽按键**。
   颜色取站内主按钮那套（深金渐变 + 米白字，与 `.primary` 同源 ✓）—— 广告要显眼，但得是同一套色，
   别在纸面上冒出一块新色 ✗。默认 display:none、只在 `html.in-tg`（小程序）里显示 ✓（与旧横幅同一开关）。 */
.entry-btn{display:none;width:100%;box-sizing:border-box;margin:9px 0 1px;padding:9px 14px;border:0;border-radius:10px;font-weight:800;font-size:14px;line-height:1;letter-spacing:.3px;color:#3f3110;background:linear-gradient(120deg,#d8b869,#b8913f);box-shadow:0 2px 8px rgba(96,74,40,.28),inset 0 1px 0 rgba(255,255,255,.35);cursor:pointer;position:relative;z-index:1;overflow:hidden;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}
/* ⚠️ 必须 **baseline** 而不是 center（2026-09-21 站长："数字和文字不齐呢感觉"）：
   center 是"各自盒子居中"—— 20px 的数字与 12.5px 的小字**基线差 ~3px**，小字看着上浮 ✗；
   baseline 让"48.5 / 倍 / 超高赔率 / 立即投注"落在**同一条基线**上，一行才像一句话 ✓。 */
html.in-tg .entry-btn{display:flex;align-items:baseline}
/* 「订阅开奖」按钮：只在**小程序**里出现（推送要送到 TG ✓）——与广告位同一个开关。 */
#drawSubBtn{display:none}
/* ⚠️ 别用 flex（2026-09-21 站长："已订阅字体没在胶囊居中"）—— 实测：按钮宽 253px，
   flex 会让图标+文字**靠左打包**（左 17 / 右 200 ✗）；而 `.hist-btn` 本来是块级 + `text-align:center` ✓，
   纵向也是齐的 ✓ ⇒ 就让它**保持和旁边两个按钮同一个布局**（块级 + 居中文本 ✓），只做显示开关 ✓。 */
html.in-tg #drawSubBtn{display:block}
#drawSubBtn.on{color:#c9a24b;border-color:rgba(201,162,75,.5)}
/* 流水特效 v3（2026-09-21 站长："还是差点意思 不够流畅和显眼"）—— ⚠️ **先把"流畅"量出来再改**：
   v2 是 8 秒走 160px＝**20px/秒**，实测**每帧只走 0.166px** ⇒ 数学上连续、**肉眼却看不出在动** ✗
   （既不像"流"，也不显眼 ✓ 这正是他说"不流畅"的真相：不是掉帧，是**太慢到像静止** ✗）。
   v3 三条：① **速度提到 ~140px/秒**（每帧 ≈2.3px@60fps ⇒ 真的看得见在动 ✓，仍用 `linear` 等速 ✓）
   ② **位移＝图案一个周期 360px ⇒ 无缝**（不会"扫一下重来" ✗）③ **光更亮更宽**（峰值 .62、带宽 ~105px 带暖白核心 ✓）。
   ⚠️ **改放"按钮自己的背景层"**（`background-position` 动的是上层那张 repeating 渐变 ✓）：背景永远在**文字底下** ⇒
   来回扫不会把字冲淡 ✓（v2 的 ::after 是**覆盖层**，光扫过文字时会短暂糊字 ✗）；只重绘这一个 ~514×38 的小块，代价可接受 ✓。
   `prefers-reduced-motion` 下不流动 ✓。 */
/* 流水特效 v4（2026-09-21 站长："你现在太快 还是会半途中顿一下"）—— 两处都改：
   ① **"顿一下"的机械原因**：光带是**斜的**（`100deg`）而循环位移写成**水平 360px** ✗ ——
      斜纹的**水平**周期其实是 360/cos10° ≈ **365.5px** ⇒ 每转一圈图案错位 ~5.5px ⇒ **每 2.6s 顿一下** ✗✓。
      修法：位移改成**沿斜纹方向**的**精确一个周期** ＝ `(354.5px, 62.6px)` ＝ 360 × (sin100°, −cos100°) ✓ ⇒ 真正无缝 ✓。
   ② **速度降到 ~75px/秒**（周期 360px ÷ 4.8s ✓）＝ 60fps 下 ~1.25px/帧：比"看着像静止"的 0.33px/帧 明确在动 ✓，
      又比 v3 的 138px/秒（太快 ✗）缓 ✓。
   ③ 换回 `::after` **覆盖层 + transform**（合成层 ✓ 不重绘 ⇒ 最不容易卡 ✗），
      而文字用 `z-index:1` 抬到光带**之上** ⇒ 光从字底下走、不会冲淡文字 ✓（v3 用 background-position 每帧重绘，弱机上更容易顿 ✗）。 */
/* 特效 v5：**光在文字里走**（2026-09-21 站长："其实你不该做覆盖层 而是从文字本身如何做特效去想"）——
   撤掉覆盖层 ✗，改成给**文字**做金光流动：渐变 + `background-clip:text`，让它的 `background-position`
   走一个周期（360px / 4.8s / linear ✓ 等速无缝），于是那道光**只在笔画里移动** ✓✓。
   ⚠️ 相位必须**按每块字在行里的位置错开**（JS 量 `offsetLeft` 写成 `--d`）—— 否则 48.5 / 超高赔率 / 立即投注
   各闪各的、看着"不齐"＋"闪"，而不是一道光从头走到尾 ✗✓。
   ⚠️ 只在支持 `background-clip:text` 时挂 `.entry-text`（由 JS 加 ✓）：不然 `-webkit-text-fill-color:transparent`
   会把字**变没** ✗；不支持就保持现在的纯白字 ✓ 什么都没坏。
   **v6（2026-09-21 站长点头换文字颜色）**：白字压金底的对比上限只有 **2.4:1** ✗ ⇒ 光根本做不出来（v5 两端只差 2% 亮度、看着像没动 ✗）。
   改成**深墨字压金底** ✓（并实测调过金条：深端 `#7d5f19` 太深 ⇒ 深墨字压上去只剩 **1.85:1** ✗，所以金条提亮成 `#d8b869 → #b8913f` ✓）：
   - 文字 `#3f3110`：压在金条上 **4.32:1 ～ 6.62:1** ✓✓（比换之前还清楚 ✓，两端都过 4.5 附近 ✓）；
   - 流光 `#fff6dd`（暖白）：与静止态的反差约 **13:1** ⇒ 那道光**非常明显** ✓✓（这才是"显眼"的来源 ✓）。
   ⇒ **静止态＝深墨（清楚）＋ 走过去＝一道光闪过**，两头都拿到了 ✓（白字时代只能二选一 ✗）。
   **软化（2026-09-21 站长："这个光好像看着有些刺眼"）**：刺眼的来源是**纯白**（`#fff6dd` 亮度 0.92 —— 金底上等于最高亮度跳变 ✗），
   光把峰值调暗作用有限（实测 11.7:1 → 8.7:1 ✗）⇒ 真正的钮是**色相**：峰值改 **`#e8d5a4`（暖金奶油，亮度 0.67 ＝暗了 27%）**
   ⇒ 读起来是"金色反光"而不是"白光爆闪" ✓✓；再把**过渡拉宽一倍多**（峰值区 130–220 → **140–340**，亮度变化慢一倍 ✓）
   ⇒ 从"闪一下"变成"一层暖光缓缓推过" ✓。静止态仍是深墨、可读性一点没动 ✓。 */
.entry-btn .entry-text{background-image:linear-gradient(100deg,#3f3110 0px,#3f3110 140px,#e8d5a4 240px,#3f3110 340px,#3f3110 360px);background-size:360px 100%;background-position:0 0;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:entryText 8s linear infinite;animation-delay:var(--d,0s)}   /* 8s/周期 ＝ 45px/秒（2026-09-21 站长："动效太快" ⇒ 4.8s→8s；改速度**必须**连 app.js 里那个 speed 一起改 ✗） */
@keyframes entryText{from{background-position:-360px 0}to{background-position:0 0}}
@media (prefers-reduced-motion:reduce){.entry-btn .entry-text{animation:none}}
.entry-btn:active{transform:translateY(1px)}

/* ===== 开奖卡置顶（2026-09-21 站长："把这个开奖卡片置顶"）=====
   三层吸顶的次序：`header`(0) → **开奖卡**(`--hdrH`) → 搜索行(`--hdrH + --drawH`)，公告条与帖子条同理顺延 ✓。
   ⚠️ `--drawH` **必须实时量**：卡片高度会随"球位渲染 / 小程序里的广告按键 / 倒计时"变化 ✗ ——
   写死高度第二次渲染就错位（app.js 用 ResizeObserver 写这个变量，和站内既有的 `--hdrH` 同一套做法 ✓）。 */
.draw{position:sticky;top:var(--hdrH,56px);z-index:16}
.stickwrap{top:calc(var(--hdrH,56px) + var(--drawH,0px)) !important}
.wall-notice{top:calc(var(--hdrH,56px) + var(--entryH,0px) + var(--drawH,0px)) !important}
#pageChat.posts .post-strip{top:calc(var(--hdr-h,56px) + var(--drawH,0px)) !important}
/* 文字三层：数字最大最亮（带一点暖高光）、单位与属性退后、行动区钉在右侧 —— 层级就是"吸睛"，不加新颜色 ✓ */
.entry-btn>span{position:relative;z-index:1}   /* 文字抬到光带之上 ⇒ 光从字底下走 ✓（不冲淡文字） */
.entry-btn .ab-num{font-size:20px;font-weight:900;letter-spacing:-.2px;text-shadow:0 1px 0 rgba(255,255,255,.34)}   /* 深墨字配"上缘一线高光"＝压印感 ✓（白字时代的暖光晕在这里会变脏 ✗） */
.entry-btn .ab-unit{font-size:13px;font-weight:800;margin:0 7px 0 1px;opacity:.95}
.entry-btn .ab-tag{font-size:12.5px;font-weight:700;opacity:.86}
.entry-btn .ab-cta{margin-left:auto;font-size:14.5px;font-weight:900;letter-spacing:.6px;white-space:nowrap}
.entry-btn .ab-arrow{margin-left:3px;font-style:normal;font-weight:900}
.stickwrap{position:sticky;top:var(--hdrH, 56px);z-index:15;margin:10px 12px 0;background:rgba(23,29,36,.6);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:12px;transition:top .25s ease}
.balls{display:flex;gap:8px;align-items:flex-end}
.ball{display:flex;flex-direction:column;align-items:center;gap:2px}
.sep{align-self:center;color:var(--tx-faint);font-size:15px;font-weight:700;margin:0 4px 12px}
.num{width:34px;height:34px;border-radius:50%;position:relative;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:800;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.85);background:radial-gradient(circle at 32% 26%,#4a545f,#2a333e 52%,#141b23);box-shadow:inset -2px -4px 7px rgba(0,0,0,.4),0 0 10px rgba(246,197,106,.08),0 4px 8px rgba(0,0,0,.5)}
.num::before{content:'';position:absolute;top:3px;left:7px;width:42%;height:24%;border-radius:50%;background:linear-gradient(rgba(255,255,255,.5),rgba(255,255,255,.08));transform:rotate(-22deg)}
.num::after{content:'';position:absolute;inset:2px;border-radius:50%;border:1px solid rgba(255,255,255,.16)}
.num.w-red{background:radial-gradient(circle at 32% 26%,#d9776a,#c0392b 52%,#7a1f16)}
.num.w-blue{background:radial-gradient(circle at 32% 26%,#7fa5e3,#2563c9 52%,#173b7c)}
.num.w-green{background:radial-gradient(circle at 32% 26%,#66c388,#1e9e4f 52%,#0e5f31)}
.num.empty{background:#141a22;box-shadow:none;border:1.5px dashed #2c3642;opacity:.55}
.num.empty::before,.num.empty::after{display:none}

.zx{font-size:10px;color:#a8b2bd;letter-spacing:.3px}
/* 新号码「**落下**」（2026-09-21 晚：站长要"一颗一颗球落下的" ✓）——
   逐颗直播时每颗球到位就播一次（renderDraw 里给新填的球加 .pop ✓）。
   只动 transform/opacity（**不碰布局** ⇒ 不挤动旁边 ✓），用站里的果冻曲线 ✓；0.45s 让"一颗一颗"看得清 ✓。
   原来这里是 `pop .35s ease`（放大小动画 ✗ 不像"落下"）。 */
.ball.pop{animation:balldrop .45s cubic-bezier(.22,1,.36,1)}
@keyframes balldrop{from{opacity:0;transform:translateY(-16px) scale(.82)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){
  .ball.pop,.draw .ball{animation:none !important}
  .ball.pop{opacity:1 !important;transform:none !important}
}
.drawlist{flex:1;overflow-y:auto;padding:10px 12px}
.ditem{background:#0d1117;border:1px solid #232b35;border-radius:12px;padding:10px 12px;margin-bottom:8px;content-visibility:auto;contain-intrinsic-size:100px}
.ditem .drow1{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.ditem .qihao{color:#f6c56a;font-size:13px;font-weight:700}
.ditem .otime{color:var(--tx-dim);font-size:11px}
.ditem .balls{flex-wrap:wrap}
main{flex:1;overflow:visible;display:flex}
.page{width:100%;display:none;flex-direction:column}
.page.active{display:flex}
.searchbox{padding:8px 12px;border-bottom:1px solid rgba(246,197,106,.14);flex-shrink:0;background:rgba(35,29,15,.95);border-radius:0 0 12px 12px;display:flex;gap:8px;align-items:center}
.searchbox input{flex:1;min-width:0;background:rgba(246,197,106,.06);color:#f6c56a;border:1px solid rgba(246,197,106,.22);border-radius:12px;padding:9px 16px;font-size:14px;outline:none;transition:border-color .15s,box-shadow .15s}
.s-clear{width:30px;height:30px;border-radius:50%;background:rgba(246,197,106,.08);border:1px solid rgba(246,197,106,.22);color:#f6c56a;font-size:12px;cursor:pointer;flex-shrink:0;display:none}
.s-clear.show{display:block}
.s-go{background:linear-gradient(120deg,#f6c56a,var(--gold-deep));color:#141a22;border:none;border-radius:12px;padding:0 16px;font-size:13px;font-weight:700;cursor:pointer;flex-shrink:0;height:36px;box-shadow:none}
.searchbox input{width:100%;background:rgba(246,197,106,.06);color:#f6c56a;border:1px solid rgba(246,197,106,.22);border-radius:12px;padding:9px 16px;font-size:14px;outline:none;transition:border-color .15s,box-shadow .15s}
.searchbox input:focus{border-color:#f6c56a;box-shadow:0 0 0 3px rgba(246,197,106,.14)}
.searchbox input::placeholder{color:var(--tx-faint)}
/* ⚠️ 左边内缩＝0（2026-09-24 站长："对齐，做一下"）：期号条里的「第N期」胶囊要与**卡片那条线**
   （也就是下面那排 全部/收藏/最近看过 与图库卡片）同一条竖线 —— 改前实测 382 vs 370 差 12px ✗。
   右侧留白保留（右边没有对齐要求，归零会让进度文字贴到卡边 ✗）。 */
.period-banner{padding:8px 12px 8px 0;border-bottom:1px solid #232b35;flex-shrink:0;display:flex;align-items:center;gap:8px;background:rgba(246,197,106,.06)}
.tagrow{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;padding:8px 12px;border-bottom:1px solid #232b35;flex-shrink:0;background:rgba(23,29,36,.5)}
.tagrow::-webkit-scrollbar{display:none}
.tag{background:#1a2027;border:1px solid rgba(246,197,106,.45);color:#f6c56a;border-radius:12px;padding:3px 0;font-size:13px;white-space:nowrap;cursor:pointer;text-align:center;transition:all .12s}
.tag:active{background:rgba(246,197,106,.22)}
.tag.on{background:linear-gradient(120deg,#f6c56a,var(--gold-deep));color:#141a22;font-weight:700;border-color:transparent}
/* 浏览范围那一排（全部 / 收藏 / 最近看过）：**期号条之下、列表之上**（2026-09-24 站长："往下移一行"）。
   间距跟其余几行同一套节奏：自己带上边距 10px（上一块期号条没有下边距），下面的 .list 自带 10px 内边距 ✓。
   **左右内缩＝0**：这一排是"筛下面那屏列表"的控件 ⇒ 左边缘对齐**卡片那条线**（2026-09-24 站长："对齐，做一下"；
   改前实测按钮 380、卡片 370，差 10px）✓ 外边距仍是 10px，右侧和卡片网格同一条线 ✓ */
.gallery-local-nav{display:flex;align-items:center;gap:7px;flex-shrink:0;margin:10px 10px 0;padding:0;overflow-x:auto;scrollbar-width:none}
.gallery-local-nav::-webkit-scrollbar{display:none}
.gallery-local-btn,.gallery-local-clear{flex:0 0 auto;min-height:34px;padding:5px 13px;border:1px solid var(--line-neutral);border-radius:999px;background:var(--surface);color:var(--tx-body);font-size:12px;line-height:1.2;cursor:pointer;white-space:nowrap}
.gallery-local-btn.on{background:linear-gradient(120deg,var(--gold),var(--gold-deep));border-color:transparent;color:#fffdf7;font-weight:700}
.gallery-local-btn:focus-visible,.gallery-local-clear:focus-visible,.gallery-card-remove:focus-visible{outline:2px solid var(--gold-deep);outline-offset:2px}
.gallery-local-clear{margin-left:auto;color:var(--tx-dim)}
/* 图库登录锁（2026-09-24 站长："把图库也做成必须登录后查看"）。类名独立 —— **别复用 .mv-lock**：
   影视那把锁撞过类名（padding 被别人的规则带歪），教训留在 2095 行注释里 ✗。配色吃主题变量 ⇒ 纸/暗两套自动跟。
   🔴 `[hidden]` 那条必须写：`.gallery-lock` 的 display:flex 特异性更高，不写它会压过 hidden 属性、
   锁面板常显 ✗（冒烟门有一条专断这个）。 */
.gallery-lock{display:flex;flex-direction:column;align-items:center;gap:10px;padding:46px 16px 54px;color:var(--tx-dim);text-align:center}
.gallery-lock[hidden]{display:none}
.gallery-lock-t{font-size:17px;font-weight:800;color:var(--tx-body)}
.gallery-lock-s{font-size:12.5px;line-height:1.7;opacity:.85}
/* 锁面板的登录键（2026-09-24 站长："这个登录键做得圆润一些"）：纸主题下光秃秃的 .primary **没有基础样式**
   （线上实测 71×23、圆角 0、背景透明 ✗ 就是行裸文字）⇒ 给它站内主按钮那套：胶囊 + 金渐变 + 米白字。
   background/color 带 !important：主题里那几条 `.primary{...!important}` 会反压同特异性规则 ✗。
   色值用纸主题那对字面量（与 `.gallery-local-btn.on` / `tj-lockbtn` 同一套语言，别改 var —— 
   深底主题的 var(--gold) 是亮金、白字压不住 ✗）。 */
.gallery-lock .primary{min-height:46px;padding:0 40px;border:none;border-radius:999px;background:linear-gradient(120deg,#c9a24b,#7d5f19)!important;color:#fffdf7!important;font-size:15px;font-weight:800;letter-spacing:2px;box-shadow:0 8px 18px rgba(125,95,25,.28);cursor:pointer;transition:transform .12s ease,box-shadow .12s ease}
.gallery-lock .primary:active{transform:translateY(1px) scale(.98);box-shadow:0 4px 10px rgba(125,95,25,.26)}
/* 锁着时把列表那排控件收掉（锁面板只管自己下面那块；tagrow/期号条/筛选/分页在它旁边 ⇒ 逐个点名） */
#pageTypes.locked #tagRow,#pageTypes.locked #periodBanner,#pageTypes.locked #galleryLocalNav,#pageTypes.locked #typeList,#pageTypes.locked #typePager{display:none}
.gallery-local-empty{grid-column:1/-1;padding:28px 12px;text-align:center;color:var(--tx-dim);font-size:13px}
.gallery-card-remove{position:absolute;right:5px;top:5px;z-index:3;width:25px;height:25px;border:1px solid var(--line-neutral);border-radius:50%;background:var(--surface);color:var(--tx-dim);font-size:17px;line-height:1;cursor:pointer}
/* 期号条不许折行（2026-09-20 站长："更新进度跨行了"）：容器是 flex 且两项都可收缩，
   而这两条都没写 white-space ⇒ 一旦字号被系统/浏览器放大（px 也会被"最小字号"撑大），
   期号会折成"第263 / 期"、进度文案折成两行，整条 banner 变高一截 ✗。
   现在：期号不折行也不被压缩（flex:0 0 auto），文案固定一行、放不下就省略号 ✓ */
.period-banner .pb-num{background:linear-gradient(120deg,#f6c56a,var(--gold-deep));color:#141a22;font-weight:800;font-size:13px;border-radius:8px;padding:2px 10px;white-space:nowrap;flex:0 0 auto}
.period-banner .pb-txt{color:var(--tx-dim);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.list{flex:1;overflow-y:auto;display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding:10px;align-content:start;overflow-anchor:none}
.card{display:flex;gap:8px;padding:6px 8px;background:#0d1117;border:1px solid #232b35;border-radius:8px;cursor:pointer;align-items:center;min-width:0;position:relative;content-visibility:auto;contain-intrinsic-size:60px;transition:transform .12s}
.card.fresh{border-color:var(--heat-1-line)}
.card.late{opacity:.6;border-color:#232b35}
.card.late img{filter:grayscale(.75) brightness(.55)}
.card.late .badge-min{background:rgba(30,38,48,.95);color:#8a96a3;border:1px solid #3a4757}
.card .badge-min{position:absolute;top:6px;left:6px;font-size:10px;line-height:1.4;padding:1px 7px;border-radius:8px;z-index:2}
.card.fresh .badge-min{background:rgba(240,185,11,.9);color:#141a22;font-weight:700}
.card.late .badge-min{background:rgba(58,71,87,.9);color:var(--tx-body)}
.card:active{transform:scale(.97)}
.card:hover{border-color:#2c3d55}
.card img{width:48px;height:48px;object-fit:cover;border-radius:8px;flex-shrink:0;background:linear-gradient(100deg,#151b23 40%,#1c2530 50%,#151b23 60%);background-size:200% 100%;animation:shimmer 1.6s infinite}   /* 未加载时是骨架微光（和精选 .wall-item img、.card.skel 同一套写法），不是一块深色空框 */
.card img.ld{animation:none;background:none}   /* 加载完立刻停掉动画并去掉底：不浪费重绘 */
.card.fresh::before{content:'';position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:2px;background:linear-gradient(180deg,#f6c56a,var(--gold-deep))}
.card.fresh::after{content:'';position:absolute;right:0;top:6px;bottom:6px;width:3px;border-radius:2px;background:linear-gradient(180deg,#f6c56a,var(--gold-deep))}
.card.skel .sk-thumb{width:48px;height:48px;border-radius:8px;flex-shrink:0;background:linear-gradient(100deg,#151b23 40%,#1c2530 50%,#151b23 60%);background-size:200% 100%;animation:shimmer 1.6s infinite}
.card.skel .sk-line{height:12px;border-radius:6px;width:70%;background:linear-gradient(100deg,#151b23 40%,#1c2530 50%,#151b23 60%);background-size:200% 100%;animation:shimmer 1.6s infinite;margin-bottom:7px}
.card.skel .sk-line.w45{width:45%}
.card.skel .meta{flex:1}
.card .meta{min-width:0;flex:1}
.card .name{color:var(--tx-title);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card .sub{color:var(--tx-faint);font-size:11px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.more{text-align:center;padding:12px;color:#4db5ff;cursor:pointer;font-size:13px}
.pager{display:flex;gap:6px;align-items:center;justify-content:center;padding:8px;flex-shrink:0;flex-wrap:nowrap}
.pager button{background:linear-gradient(180deg,rgba(246,197,106,.13),rgba(246,197,106,.05));border:1px solid rgba(246,197,106,.35);color:#f6c56a;border-radius:12px;padding:6px 12px;font-size:12px;cursor:pointer;white-space:nowrap;transition:all .12s;box-shadow:var(--inner-hi)}
.pager button:not(:disabled):active{background:linear-gradient(180deg,rgba(246,197,106,.35),rgba(246,197,106,.15));color:#fff;transform:translateY(1px)}
.pager button:disabled{opacity:.3}
.pager .pg{color:var(--gold-dim);font-size:11px;background:rgba(246,197,106,.05);border:1px solid rgba(246,197,106,.22);border-radius:12px;padding:5px 10px;white-space:nowrap}
.pager .pgin{width:46px;background:rgba(246,197,106,.08);border:1px solid rgba(246,197,106,.35);color:#f6c56a;border-radius:8px;padding:5px 4px;text-align:center;font-size:13px;outline:none;flex-shrink:0}
.pager .pgin:focus{border-color:#f6c56a;box-shadow:0 0 0 3px rgba(246,197,106,.14)}
.pager input[type=number]::-webkit-outer-spin-button,.pager input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.wall{flex:1;overflow-y:auto;display:flex;gap:10px;padding:10px;align-items:flex-start;overflow-anchor:none}
#wall{display:block;flex:none;overflow:visible;overflow-y:visible}
.wday{margin-bottom:18px}
.wday-t{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--gold-light);font-weight:800;padding:8px 12px;border-radius:8px;background:linear-gradient(90deg,#2a2313,#1d1a10 75%);border:1px solid rgba(246,197,106,.22);margin:0 0 10px 2px;box-shadow:var(--inner-hi), --sh-2}
.wday-selwrap{position:relative;margin:0 0 12px;display:block;text-align:left}
.wday-selwrap .wday-t{width:100%;justify-content:flex-start;text-align:left;margin:0}
.wday-selwrap .wday-t::before{display:none}
.wday-selwrap .wday-selbtn{display:inline-flex;align-items:center;gap:6px;cursor:pointer;margin-left:0}
.wday-selwrap .wday-t > span:last-child{margin-left:auto}

.wday-bar{width:100%;padding:10px 12px;border-radius:12px;background:linear-gradient(90deg,#2a2313,#1d1a10 75%);border:1px solid rgba(246,197,106,.22);box-shadow:var(--inner-hi), --sh-2}
.wday-bar-top{display:flex;align-items:center;gap:10px;margin-bottom:0;position:relative}
.wday-bar-label{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:var(--gold-light);font-weight:800;background:none;border:none;padding:0;cursor:pointer;font-family:inherit;white-space:nowrap;flex-shrink:0}
.wday-yearpop{display:none;position:absolute;top:calc(100% + 4px);left:0;min-width:96px;max-height:200px;overflow-y:auto;background:var(--surface-3);border:1px solid rgba(246,197,106,.22);border-radius:8px;padding:4px;z-index:40;box-shadow:var(--sh-2)}
.wday-selwrap.open .wday-yearpop{display:block}
.wday-bar-cnt{font-size:10px;color:#f6c56a;font-weight:600}
.wday-years{display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap}
.wday-y{padding:4px 12px;border-radius:12px;border:1px solid rgba(246,197,106,.22);background:none;color:#f6c56a;font-size:12px;cursor:pointer}
.wday-y.on{background:rgba(246,197,106,.22);color:var(--gold-light);font-weight:800}
.wday-days{display:flex;gap:6px;overflow-x:auto;padding:2px;touch-action:pan-x;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.wday-days::-webkit-scrollbar{display:none}
.wday-d{flex-shrink:0;padding:5px 12px;border-radius:12px;border:1px solid rgba(246,197,106,.22);background:rgba(246,197,106,.06);color:#f6c56a;font-size:12px;cursor:pointer;white-space:nowrap}
.wday-d.on{background:rgba(246,197,106,.22);border-color:#f6c56a;color:var(--gold-light);font-weight:800}
.wday-empty{font-size:12px;color:var(--tx-faint);padding:6px 2px}
.wday-selopt{display:block;width:100%;background:none;border:none;color:#f6c56a;font-size:13px;padding:8px 14px;border-radius:8px;cursor:pointer;text-align:left}
.wday-selopt.on{background:rgba(246,197,106,.14);color:var(--gold-light)}
.wday-t::before{content:'';width:4px;height:16px;border-radius:2px;background:linear-gradient(180deg,#f6c56a,var(--gold-deep));box-shadow:var(--sh-2);flex-shrink:0}
.wday-t span{font-size:10px;color:#f6c56a;font-weight:600;margin-left:auto}
.wday-cols{display:flex;gap:8px;align-items:flex-start}
.wday-col{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}
.wcell{position:relative;border-radius:8px;overflow:hidden;border:1px solid rgba(246,197,106,.14);background:#0d1117;display:block;animation:wcPop .42s cubic-bezier(.34,1.56,.64,1) backwards;animation-delay:calc(var(--i,0)*45ms)}
.wcell-lock{cursor:pointer;display:flex;align-items:stretch;justify-content:stretch;background:linear-gradient(180deg,#181326,#0f1219);border:1px dashed rgba(246,197,106,.35)}
.wlock{width:100%;height:100%;min-height:96px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px}
.wlock .lk-ic{font-size:20px;line-height:1;filter:drop-shadow(0 2px 6px rgba(246,197,106,.35))}
.wlock .lk-tx{font-size:12px;color:var(--gold);font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.5)}
.wlock .lk-hint{font-size:10px;color:#7a8698}
.wall-locktip{margin:0 0 10px;padding:10px 12px;border-radius:8px;background:linear-gradient(90deg,rgba(246,197,106,.13),rgba(246,197,106,.05));border:1px solid rgba(246,197,106,.35);display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px;color:var(--gold)}
.wall-locktip .lk-msg{flex:1}
.wall-locktip button{flex-shrink:0;padding:6px 14px;border-radius:999px;background:linear-gradient(90deg,#f6c56a,var(--gold-deep));color:#241703;font-weight:800;font-size:12px;border:none;cursor:pointer}
@keyframes wcPop{from{opacity:0;transform:scale(.9) translateY(12px)}to{opacity:1;transform:none}}
.wcell-no{position:absolute;top:6px;left:6px;z-index:2;font-size:10px;font-weight:800;color:#1a1405;background:linear-gradient(120deg,#f6c56a,var(--gold-deep));border-radius:8px;padding:1px 8px;box-shadow:var(--sh-1)}
.wcell img{width:100%;display:block;height:auto;background:#10151c}
.wcell-txt{padding:12px 14px;background:linear-gradient(180deg,#1d1a10,#141a21);border:1px solid rgba(246,197,106,.22);cursor:pointer}
.wtxt{font-size:13px;color:#f6c56a;line-height:1.85;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;max-height:calc(1.85em * 8);overflow:hidden}
.wall-text{font-size:15px;color:#f6c56a;line-height:1.9;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;padding:4px 2px 12px}
.wday-tip{text-align:center;font-size:10px;color:var(--tx-faint);margin-top:6px}
.pgbtn{display:block;margin:10px auto 4px;padding:9px 26px;border-radius:20px;background:rgba(246,197,106,.14);border:1px solid rgba(246,197,106,.45);color:#f6c56a;font-size:13px;font-weight:700;cursor:pointer}
.pgbtn:active{transform:scale(.94)}
.wall-notice{position:sticky;top:calc(var(--hdrH, 56px) + var(--entryH, 0px));z-index:15;font-size:10px;color:var(--gold);text-align:center;margin:0 0 12px;padding:7px 12px;white-space:nowrap;overflow:hidden;letter-spacing:.3px;background:#17130a;border:1px solid rgba(246,197,106,.22);border-radius:8px}
.sheet.sheet-wall{height:auto;max-height:calc(var(--vh0,100vh) * 0.78);width:calc(100% - 32px);max-width:480px;touch-action:none}   /* 尺寸固定：原来 width:auto 会让弹层宽度跟着图片走，看着像在量尺寸 */
.sheet.sheet-wall-text{touch-action:pan-y}
.sheet.sheet-wall-text .body{touch-action:pan-y;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.sheet.sheet-drill{touch-action:none}
.sheet.sheet-drill .drawlist{touch-action:pan-y}
.sheet.sheet-auto{touch-action:none}
.sheet.sheet-auto .body{touch-action:pan-y}
.sheet.sheet-wall .body{padding:10px;overflow-y:auto;max-height:calc(calc(var(--vh0,100vh) * 0.78) - 62px);display:block}   /* 让弹层贴着图片高度（横图就不会空一大截） */
.wall-preview{width:auto;height:auto;max-width:100%;max-height:calc(var(--vh0,var(--vh0,100vh)) * 0.5);object-fit:contain;display:block;margin:0 auto;border-radius:8px;cursor:zoom-in;background:#0d1117}
.wall-strip{margin-top:12px;padding:10px 12px;border-radius:12px;background:rgba(0,0,0,.32);border:1px solid rgba(246,197,106,.14)}
.wall-strip .balls{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end}
.wall-strip .num{width:26px;height:26px;font-size:11px}
.wall-strip .strip-note{text-align:center;color:var(--tx-dim);font-size:12px;padding:6px 0}
.wcol{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}
.wall-item{position:relative;background:#0d1117;border:1px solid #232b35;border-radius:12px;overflow:hidden;cursor:pointer;transition:transform .12s,box-shadow .12s}
.wall-item.fresh{border-color:var(--heat-1-line)}
.wall-item.late{opacity:.55}
.wall-item:active{transform:scale(.97)}
.wall.noanim .wall-item{animation:none}
.wall-item:hover{border-color:#2c3d55;box-shadow:var(--sh-1)}
.wall-item .thumb{position:relative;line-height:0}
.wall-item img{width:100%;display:block;height:auto;min-height:160px;background:linear-gradient(100deg,#151b23 40%,#1c2530 50%,#151b23 60%);background-size:200% 100%;animation:shimmer 1.6s infinite}
.wall-item img.ratio{min-height:0}
@keyframes shimmer{to{background-position:-200% 0}}
.wall-item .badge{position:absolute;top:8px;left:8px;background:rgba(10,14,20,.72);backdrop-filter:blur(4px);color:#fff;border-radius:8px;padding:2px 8px;font-size:11px;line-height:1.5;z-index:2;border:1px solid rgba(246,197,106,.35)}
.wall-item .badge.late{background:rgba(45,52,60,.8);border-color:#3a4757;color:#aab6c4}
.wall-item .grad{position:absolute;left:0;right:0;bottom:0;height:46%;background:linear-gradient(transparent,rgba(8,11,16,.92));z-index:1}
.wall-item .caption{position:absolute;left:0;right:0;bottom:0;padding:8px 10px;z-index:2;text-align:left}
.wall-item .t{color:#fff;font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 4px rgba(0,0,0,.6)}
.wall-item .s{color:#aab6c4;font-size:10px;margin-top:2px;text-shadow:0 1px 3px rgba(0,0,0,.6)}
.empty{color:var(--tx-faint);padding:48px 20px;text-align:center;font-size:13px}
.detail{flex:1;overflow-y:auto;padding:12px}
.detail .top{display:flex;gap:8px;align-items:center;margin-bottom:10px}
.back-btn{background:linear-gradient(180deg,rgba(246,197,106,.14),rgba(246,197,106,.08));border:1px solid rgba(246,197,106,.35);color:#f6c56a;border-radius:8px;padding:6px 14px;cursor:pointer;font-size:13px;flex-shrink:0;box-shadow:var(--inner-hi)}
.back-btn:active{background:linear-gradient(180deg,rgba(246,197,106,.35),rgba(246,197,106,.15));color:#fff;transform:translateY(1px)}
.detail h2{font-size:15px;color:#fff;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.year-row{display:flex;gap:6px;align-items:center;margin-bottom:8px;flex-shrink:0}
.year-sel{position:relative;flex-shrink:0}
.year-btn{display:flex;align-items:center;gap:6px;appearance:none;background-color:rgba(246,197,106,.08);color:#f6c56a;border:1px solid rgba(246,197,106,.22);border-radius:12px;padding:8px 12px;font-size:13px;outline:none;cursor:pointer;flex-shrink:0;line-height:1}
.year-btn:active{background-color:rgba(246,197,106,.14)}
.year-pop{display:none;position:absolute;top:calc(100% + 6px);left:0;min-width:96px;max-height:180px;overflow-y:auto;background:var(--surface-3);border:1px solid rgba(246,197,106,.22);border-radius:12px;padding:6px;z-index:30;box-shadow:var(--sh-3)}
.year-sel.open .year-pop{display:block}
.year-opt{display:block;width:100%;background:none;border:none;color:#f6c56a;font-size:13px;padding:8px 12px;border-radius:8px;cursor:pointer;text-align:left}
.year-opt:active{background:rgba(246,197,106,.14)}
.year-opt.on{background:linear-gradient(90deg,rgba(246,197,106,.22),rgba(246,197,106,.08));color:#f6c56a;font-weight:700}
.period-inp{width:64px;background:rgba(246,197,106,.08);color:#f6c56a;border:1px solid rgba(246,197,106,.22);border-radius:8px;padding:6px 8px;font-size:13px;outline:none;flex-shrink:0;text-align:center}
.period-inp:focus{border-color:#f6c56a;box-shadow:0 0 0 3px rgba(246,197,106,.14)}
.chips{display:flex;gap:6px;overflow-x:auto;flex:1;min-width:0;align-items:center;padding-bottom:0;scrollbar-width:none;touch-action:pan-x;-webkit-overflow-scrolling:touch}
.year-row .year-sel{display:flex;align-items:center}
.chips::-webkit-scrollbar{display:none}
.chip{background:rgba(246,197,106,.08);border:1px solid rgba(246,197,106,.22);border-radius:12px;padding:4px 12px;font-size:12px;color:#f6c56a;white-space:nowrap;cursor:pointer;flex-shrink:0}
.chip.active{background:linear-gradient(120deg,#f6c56a,var(--gold-deep));border-color:transparent;color:#141a22;font-weight:700;box-shadow:none}
.chip-sep{display:inline-flex;align-items:center;color:var(--gold-dim);font-size:11px;white-space:nowrap;flex-shrink:0}
/* `position:relative` 是给弹窗里那对左右箭头（复用 `.al-nav` 的绝对定位 ✓）——
   「PC 端没点开图就能翻」这条站长提过两次：信息流相册那次（.al-nav）与图库详情弹窗这次 ✓ */
/* ⚠️ 这里用 **grid + 同一格** 而不是绝对定位（2026-09-24 改）：绝对定位的 `max-width:100%` 是按
   **内边距盒**算的（纸主题下 `.pic-box` 有 12px 内边距）⇒ 跟手的那两张会比落定后大一圈、还被舞台裁掉 ✗
   （实测 387×290 → 448×337，+16%，松手又缩回去）。同格叠放 + 只用 transform 位移 ⇒ 与落定态**同一个盒子** ✓ */
.pic-box{position:relative;text-align:center;background:none;border:none;border-radius:0;padding:0;margin-bottom:10px;flex:1;min-height:0;display:grid;place-items:center;overflow:hidden}
/* 取图失败的 img 一律先藏起来（app.js 头部的全局兜底给它们挂 .img-broken ✓）——
   浏览器会在"换下一个源"的等待期继续显示上一张的**破图小图标**，镜像源不响应时能挂 20~30 秒 ✗✗
   （2026-09-24 站长截图："你看这破图"）。成功加载时由 onLoad 摘掉这个类 ✓ 不动布局（visibility ✓） */
img.img-broken{visibility:hidden}
.pic-box img{max-width:100%;max-height:100%;object-fit:contain;display:block;border-radius:8px;box-shadow:var(--sh-1);animation:picFade .35s ease}
@keyframes picFade{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}
.pic-box img{max-width:100%;border-radius:8px}
/* 图库同系列跟手切换：两张图叠在**同一个网格格**里，位移只走 transform（不接管弹窗/正文的纵向滚动）。
   ⚠️ 三条的**顺序有讲究**：拖动中的那张会同时带着 `adopted` ＋ `current` 两个类，后写的赢 ⇒
   `adopted` 必须排在最前，否则"当前这张"不跟手（实测抓到过 ✗；`transform:none` 只该管落定后那一张）。 */
.pic-box img.series-swipe-adopted{grid-area:1/1;transform:none;animation:none;will-change:auto}
.pic-box img.series-swipe-current,.pic-box img.series-swipe-next{grid-area:1/1;max-width:100%;max-height:100%;transform:translate3d(var(--series-swipe-x,0px),0,0);animation:none;will-change:transform}
.pic-box img.series-swipe-next{pointer-events:none;z-index:1}
/* 这一张三档地址都没取到（多半是当期图还没出）：**不许把破图小图标跟手滑出来** ✗——
   照常让它"占位"被滑过去，落到它时弹窗会说"当期未更新" ✓（2026-09-24 站长报的现象） */
.pic-box img.series-swipe-failed{opacity:0}
.pic-box img.series-swipe-settle{transition:transform .19s cubic-bezier(.22,.72,.25,1)}
.draw-strip{background:#0d1117;border:1px solid #232b35;border-radius:12px;padding:8px 12px;flex-shrink:0;min-height:60px;overflow:hidden;display:flex;flex-direction:column;justify-content:center;transition:opacity .18s ease}   /* 只剩球：原 height:84 是含期号/日期行的高度，改 min-height 以免球行被裁 */
.draw-strip .strip-note{text-align:center;color:var(--tx-dim);font-size:12px;padding:8px 0}
.draw-strip .balls{flex-wrap:wrap}
.draw-strip .num{width:26px;height:26px;font-size:11px}
.tabbar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(12px + var(--safeBot));width:calc(100% - 36px);max-width:400px;background:radial-gradient(140% 160% at 50% -30%,rgba(246,197,106,.08) 0%,rgba(246,197,106,0) 55%),rgba(35,29,15,.78);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid rgba(246,197,106,.14);border-radius:28px;display:flex;z-index:20;box-shadow:var(--sh-3)}
.tabbar button{flex:1;background:transparent;border:none;-webkit-appearance:none;appearance:none;color:#f4f6f8;font-size:15px;padding:10px 0 8px;cursor:pointer;position:relative;border-radius:28px;transition:transform .18s cubic-bezier(.34,1.56,.64,1),color .2s ease}
.tabbar button:active{transform:scale(.94) translateY(1px)}
.tabbar button span{display:block;font-size:11px;color:#c8ced6;font-weight:400;margin-top:1px;min-height:15px;line-height:15px}   /* 计数是异步来的：不占位的话，计数出现时标签会向上挪约 8px —— 
      只有「图系/精选」有计数，所以只有这两个 tab 刷新时会看到字在跳（统计没有计数所以不动）。 */
.fire{display:inline-block;font-style:normal;font-size:12px;margin-right:2px;vertical-align:1px;transform-origin:50% 90%;animation:fireBurn 1.6s ease-in-out infinite;will-change:transform}
@keyframes fireBurn{
  0%,100%{transform:translateY(0) scale(1);filter:drop-shadow(0 0 1px rgba(255,150,50,.25))}
  30%{transform:translateY(-1px) scale(1.06);filter:drop-shadow(0 0 5px rgba(255,150,50,.7))}
  55%{transform:translateY(0) scale(.97);filter:drop-shadow(0 0 2px rgba(255,150,50,.35))}
  75%{transform:translateY(-1.5px) scale(1.04);filter:drop-shadow(0 0 6px rgba(255,170,60,.75))}
}
main .page{padding-bottom:72px}
.foot{padding:12px 16px calc(92px + var(--safeBot));font-size:11px;color:var(--tx-faint);line-height:1.9;border-top:1px solid #232b35;background:#0d1117;flex-shrink:0}
/* 图片弹窗标题栏上的订阅胶囊（2026-09-18）：站长定的位置与形态——**标题右侧、做成胶囊**。
   「看图那一刻才对要不要订阅这个图系有判断」，所以放在看图的地方而不是缩略图卡片角上。
   标题与胶囊作为一个整体居中（.top-mid），关闭按钮仍绝对定位在右padding里 —— 这样标题不会被胶囊顶偏。
   图标用 sprite 里的 i-bell 而**不是** 🔔 emoji：壳（APK WebView）里 emoji 会显示成 XX，见 index.html 的 sprite 说明。 */
.sheet .top .top-mid{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;gap:8px}
.sheet .top .top-mid h2{flex:0 1 auto;min-width:0}   /* 覆盖 .sheet .top h2 的 flex:1：标题要"贴着胶囊"，占满整行就贴不上了 */
.sub-pill{flex-shrink:0;display:flex;align-items:center;gap:4px;height:28px;padding:0 11px;appearance:none;
  border-radius:999px;background:rgba(246,197,106,.08);border:1px solid rgba(246,197,106,.28);color:rgba(246,197,106,.75);
  font-size:12px;line-height:1;white-space:nowrap;cursor:pointer;
  transition:background .12s,border-color .12s,color .12s;-webkit-tap-highlight-color:transparent}
.sub-pill.on{background:rgba(246,197,106,.22);border-color:rgba(246,197,106,.85);color:#f6c56a;font-weight:600}
.sub-pill:active{background:rgba(246,197,106,.35);color:#fff}
#detailFavorite{display:inline-flex;align-items:center;justify-content:center}

.foot p{text-align:center}
/* 短剧页的卖点行（2026-09-18 站长要求点明"无广告无贴片的纯净版"）。
   ⚠️ 类名**不能**叫 .mv-note —— 那个名字早被播放器里的浮动胶囊占了（position:absolute;bottom:74px），
   照用会被拽成绝对定位、脱离文档流（本机实测过）。 */
.mv-pure{padding:2px 16px 8px;font-size:12px;line-height:1.6;text-align:center;color:var(--gold-dim);letter-spacing:.2px}
.mv-pure b{color:var(--gold);font-weight:800}
/* 页脚曾有过一条 SEO 关键词段（带 guide.html 链接），断 SEO 后已整段删除（2026-09-18），
   这里原先用来在小程序里隐藏它的 .foot-seo 规则随之作废、一并清掉。两条免责声明保留。 */
.mask{position:fixed;inset:0;background:rgba(0,0,0,.65);z-index:50;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .28s ease}
.mask.show{opacity:1;pointer-events:auto}
.sheet{background:linear-gradient(165deg,rgba(246,197,106,.05) 0%,rgba(246,197,106,0) 32%),linear-gradient(180deg,#221f18 0%,#171d24 58%,#131a21 100%);border:1px solid rgba(246,197,106,.15);border-radius:12px;width:calc(100% - 32px);max-width:480px;height:calc(var(--vh0,100vh) * 0.88);max-height:calc(var(--vh0,100vh) * 0.88);overflow:hidden;overscroll-behavior:contain;padding:0;display:flex;flex-direction:column;transform:translateY(34px) scale(.94);opacity:0;transition:transform .42s cubic-bezier(.32,1.25,.48,1),opacity .26s ease;box-shadow:var(--inner-hi), --sh-3}
.mask.show .sheet{transform:none;opacity:1}
.sheet .top{position:sticky;top:0;display:flex;align-items:center;gap:8px;padding:13px 46px 11px;background:linear-gradient(180deg,rgba(36,31,21,.97),rgba(23,29,36,.96));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid rgba(246,197,106,.14);border-radius:12px 16px 0 0;z-index:6}
.sheet .top h2{flex:1;min-width:0;font-size:15px;color:#fff;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sheet .top .sheet-close{position:absolute;right:14px;top:50%;transform:translateY(-50%)}
.sheet h2{font-size:15px;color:#fff;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sheet-close{width:30px;height:30px;border-radius:50%;background:rgba(246,197,106,.08);border:1px solid rgba(246,197,106,.35);color:#f6c56a;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:all .12s}
.sheet-close:active{background:rgba(246,197,106,.35);color:#fff;transform:rotate(90deg)}
.sheet .body{flex:1;min-height:0;display:flex;flex-direction:column;padding:12px 14px 16px;overflow-y:auto}
.sheet .drawlist{padding:0}
.sheet.sheet-auto{height:auto;max-height:calc(var(--vh0,100vh) * 0.88)}
.sheet-auto .pic-box img{max-height:max(220px,calc(calc(var(--vh0,100vh) * 0.88) - 260px))}
.sheet.sheet-live{height:auto;max-height:calc(var(--vh0,100vh) * 0.88);max-width:640px;transform:none;transition:opacity .22s ease}
.sheet.sheet-drill{height:auto;max-height:calc(var(--vh0,100vh) * 0.76)}
.sheet-drill .body{overflow:hidden}
.sheet-drill .drawlist{max-height:calc(var(--vh0,100vh) * 0.56);overflow-y:auto}
.sheet-live .body{display:block;padding:0;overflow:hidden}
.sheet-live .pic-box{display:block;flex:none;min-height:0;margin:0;padding:0;border:none;border-radius:0;position:relative;background:#000}
.sheet-live video{width:100%;aspect-ratio:16/9;object-fit:contain;background:#000;display:block;border-radius:0 0 16px 16px}
#liveTip{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:0;color:var(--tx-body);background:rgba(0,0,0,.55);pointer-events:none}
html{background:#101418}   /* 兜底底色（2026-09-18）：键盘动画/重排时露出来的底也是深色，不再发白 */
body.lock{overflow:hidden}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes pageIn{from{opacity:0}to{opacity:1}}
@keyframes pop{from{opacity:0;transform:scale(.3)}to{opacity:1;transform:scale(1)}}
/* glowPulse 原是把 box-shadow 从 none 动到 none（等于什么都不动，却一直挂在 header .logo 上每帧跑）—— 2026-09-15 删掉动画本身 */
.spin{display:inline-block;width:14px;height:14px;border:2px solid #2c3642;border-top-color:#f6c56a;border-radius:50%;animation:rot .8s linear infinite;vertical-align:-2px;margin-right:6px}
@keyframes rot{to{transform:rotate(360deg)}}
.card,.wall-item{animation:fadeUp .32s ease backwards;animation-delay:calc(var(--i,0)*22ms)}
.page.active{animation:pageIn .18s cubic-bezier(.22,1,.36,1)}   /* 页面只做透明度：.page 上加 transform 会让里面的吸顶元素失效 */
.draw .ball{animation:pop .45s cubic-bezier(.34,1.56,.64,1) backwards;animation-delay:calc(var(--i,0)*45ms)}
header .logo{animation:none}   /* 见上：glowPulse 是空动画，去掉这条常驻动画 */
.fullimg.show{animation:pageIn .2s ease}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media(max-width:400px){
  .num{width:28px;height:28px;font-size:13px}
  .draw-strip .num{width:26px;height:26px;font-size:11px}
  .zx{font-size:9px}
  .balls{gap:5px;flex-wrap:nowrap}
  .sep{margin:0 2px 10px;font-size:13px}
}
.fullimg{position:fixed;inset:0;background:#000;z-index:80;display:none;align-items:center;justify-content:center;overflow:hidden;touch-action:none}
.fullimg.show{display:flex}
/* 全屏查看器的张数（TG 风格：顶部居中「1 / 4」），只在多图时显示 */
.full-count{position:fixed;top:calc(14px + var(--safeTop));left:50%;transform:translateX(-50%);z-index:5;
  border-radius:999px;line-height:1.5;pointer-events:none}
/* 说明：字号/字重/颜色/底色/描边/内边距/投影**统一由上面那条共用规则给**（与相册角标同一套皮）——
   2026-09-19 之前这里是旧的"金色字压深底" ✗，与缩略图上的角标不一致。 */
.fullimg img{max-width:100%;max-height:100%;object-fit:contain;transform-origin:center;touch-action:none;-webkit-user-select:none;user-select:none}
/* 查看器里的"取不到"收尾：三档地址都失败时给一句实话，别把破图留在全屏黑底上 ✗（2026-09-24）。
   灯箱在纸主题里也**有意保持深色**（见下面那份"保持深色"的清单）⇒ 这条用深底浅字，两套主题都读得清 ✓ */
.full-note{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:5;max-width:76%;text-align:center;padding:12px 18px;border-radius:12px;background:rgba(255,255,255,.08);border:1px solid rgba(246,197,106,.28);color:#e8e2d6;font-size:13px;line-height:1.6}
.full-x{position:fixed;top:14px;right:14px;z-index:5;background:rgba(26,32,39,.85)}

.st-controls{display:flex;gap:8px;align-items:center;padding:12px 12px 0;margin-bottom:10px}
.st-range-sel{position:relative;flex-shrink:0;white-space:nowrap}
.st-range-btn{display:flex;align-items:center;gap:6px;background-color:rgba(246,197,106,.08);color:#f6c56a;border:1px solid rgba(246,197,106,.22);border-radius:8px;padding:7px 12px;font-size:13px;outline:none;cursor:pointer}
.st-range-btn:active{background-color:rgba(246,197,106,.14)}
.st-range-pop{display:none;position:absolute;top:calc(100% + 6px);left:0;min-width:110px;max-height:230px;overflow-y:auto;background:var(--surface-3);border:1px solid rgba(246,197,106,.22);border-radius:12px;padding:6px;z-index:40;box-shadow:var(--sh-3)}
.st-range-sel.open .st-range-pop{display:block}
.st-range-opt{display:block;width:100%;background:none;border:none;color:var(--tx-body);font-size:13px;padding:8px 14px;border-radius:8px;cursor:pointer;text-align:left}
.st-range-opt:active{background:rgba(246,197,106,.14)}
.st-range-opt.on{background:linear-gradient(90deg,rgba(246,197,106,.22),rgba(246,197,106,.08));color:#f6c56a;font-weight:700}
.st-prog{flex:1;min-width:0;color:var(--tx-title);font-size:11px;overflow:hidden;white-space:nowrap}
.st-prog .st-mq{display:inline-block;animation:stMq 14s linear infinite}
@keyframes stMq{0%{transform:translateX(0)}80%{transform:translateX(-100%)}100%{transform:translateX(-100%)}}
.st-tabs{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin:0 12px 10px}
.st-tabbtn{font-family:inherit;background:rgba(46,42,36,.42);border:1px solid var(--t1);color:var(--tx-body);border-radius:12px;padding:6px 0;font-size:13px;cursor:pointer;white-space:nowrap;text-align:center;transition:all .15s}
.st-tabbtn.on{color:#141a22;font-weight:700;border-color:transparent}
.st-card{background:var(--surf-grad);border:1px solid rgba(255,255,255,.07);border-radius:12px;padding:12px 14px;margin:0 12px 12px;box-shadow:var(--inner-hi), --sh-2}
.st-card.show-anim{animation:stPaneIn .3s ease}
@keyframes stPaneIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.st-sub{color:var(--gold-dim);font-size:11px;margin:10px 0 6px}
.st-sub:first-of-type{margin-top:0}
.st-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.st-mini{background:rgba(0,0,0,.25);border:1px solid rgba(255,255,255,.07);border-radius:8px;padding:8px 4px;text-align:center}
.st-mini .k{color:var(--gold-dim);font-size:10px}
.st-mini .v{color:#f6c56a;font-size:16px;font-weight:800;margin-top:2px}
.st-heat{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.st-hcell{aspect-ratio:1;border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:var(--tx-title);border:1px solid rgba(246,197,106,.22);background:rgba(246,197,106,.08);line-height:1.2}
.st-hcell .n{font-size:13px;font-weight:700}
.st-hcell .c{font-size:10px;font-weight:600;color:var(--gold-dim)}
.st-hcell.lv1{background:var(--heat-1);border-color:var(--heat-1-line)}
.st-hcell.lv1 .c{color:#f6c56a}
.st-hcell.lv2{background:var(--heat-2);color:#141a22;border-color:transparent}
.st-hcell.lv2 .c{color:var(--tx-invert)}
.st-hcell.lv3{background:linear-gradient(180deg,#f6c56a,var(--gold-deep));color:#141a22;border-color:transparent;box-shadow:none}
.st-hcell.lv3 .c{color:var(--tx-invert);font-weight:800}
.st-hcell.lv3 .n{font-weight:800}
.st-hcell.pop{animation:stCellPop .4s cubic-bezier(.34,1.56,.64,1) backwards}
@keyframes stCellPop{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}
.st-hcell.skel{background:var(--card);border-color:rgba(255,255,255,.07);animation:stSkelPulse 1.1s ease-in-out infinite alternate}
@keyframes stSkelPulse{from{opacity:.35}to{opacity:1}}
.st-bar-row{display:flex;align-items:center;gap:8px;margin-bottom:6px;justify-content:flex-start}
.st-bar-row .lb{width:88px;flex-shrink:0;color:var(--tx-body);font-size:12px;white-space:nowrap;text-align:left}
.st-bar-row .track{flex:1;height:14px;background:rgba(0,0,0,.3);border-radius:7px;overflow:hidden;border:1px solid rgba(246,197,106,.08)}
.st-bar-row .fill{height:100%;background:linear-gradient(90deg,var(--gold-deep),#f6c56a);border-radius:7px;transition:width .6s cubic-bezier(.22,1,.36,1)}
.st-bar-row.top .fill{background:linear-gradient(120deg,#f6c56a,var(--gold-deep));box-shadow:none}
.st-bar-row .ct{width:26px;flex-shrink:0;color:#f6c56a;font-size:12px;font-weight:700;text-align:right}
.st-bar-sub{font-size:10px;color:var(--gold-dim);margin:-2px 0 6px 96px;letter-spacing:.3px;text-align:left}
.st-jysep{margin:12px 0 6px;border-top:1px dashed rgba(246,197,106,.22)}
.st-drow{display:flex;align-items:center;gap:6px;padding:6px 2px;border-bottom:1px solid rgba(246,197,106,.08);font-size:12px}
.st-drow .qihao{color:#f6c56a;font-weight:700;width:60px;flex-shrink:0}
.st-drow .nums{flex:1;min-width:0;color:var(--tx-body);white-space:nowrap;overflow:hidden}
.st-drow .num{width:19px;height:19px;line-height:19px;font-size:10px;margin-right:0}
.st-dz{display:inline-flex;flex-direction:column;align-items:center;margin-right:2px;vertical-align:top}
.st-dz i{font-style:normal;font-size:8.5px;color:var(--gold-dim);line-height:1.3}
.st-dz.st-sep{color:#f6c56a;font-size:12px;align-self:center;line-height:22px}
#f3Recent{border-top:1px dashed rgba(246,197,106,.22);margin-top:8px;padding-top:6px;height:322px;overflow-y:auto;flex:0 0 auto}
.f3h-item{display:flex;align-items:center;padding:7px 0 8px;border-bottom:1px dashed rgba(246,197,106,.14)}
.f3h-item:last-child{border-bottom:none}
.f3h-qihao{width:64px;flex-shrink:0;font-size:11px;color:#f6c56a;font-weight:700}
.f3h-balls{display:flex;gap:10px;align-items:flex-end;flex-wrap:nowrap;overflow:hidden}
#f3Banner .qihao{white-space:normal;font-size:12px;letter-spacing:.2px}
#f3Banner .balls{justify-content:center;padding-left:4px;gap:6px;flex-wrap:nowrap}
@media (max-width:380px){#f3Banner .num{width:30px;height:30px;font-size:13.5px}#f3Banner .balls{gap:3px}}
.f3-gotop{position:fixed;right:12px;bottom:86px;width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:rgba(35,29,15,.88);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(240,185,11,.5);color:#f6c56a;cursor:pointer;z-index:40;box-shadow:var(--sh-2);transition:all .15s}
.f3-gotop:active{transform:scale(.88);background:rgba(246,197,106,.35)}
#f3Recent .num{width:24px;height:24px;line-height:24px;font-size:11px}
#f3Recent .f3h-balls{gap:4px}
#f3Recent .f3h-qihao{width:52px;font-size:10px}
#f3Recent .st-dz i{font-size:10px}
#f3Recent .qihao{width:64px;font-size:12px;align-self:center}
#f3Recent .st-dz.st-sep{font-size:15px;line-height:34px}
#f3Recent .st-drow .nums{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-end;min-width:0;overflow:hidden}
#f3Recent .st-dz{margin-right:0}
@keyframes betGlow{0%,100%{opacity:.18}50%{opacity:.6}}
.hdr-btn,.f3-betbtn{position:relative}
.hdr-btn::after,.f3-betbtn::after{
  content:'';position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;
  box-shadow:none;opacity:.18;will-change:opacity;
  animation:betGlow 2.2s ease-in-out infinite;
}
@media (prefers-reduced-motion: reduce){ .hdr-btn::after,.f3-betbtn::after{animation:none} }
#f3Chat{height:calc(var(--vh0,100vh) * 0.66);overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:12px 10px;background:rgba(0,0,0,.28);background-image:radial-gradient(rgba(246,197,106,.05) 1px,transparent 1px);background-size:14px 14px;border-radius:12px;border:1px solid rgba(246,197,106,.08)}

/* ===== 创新版 D：暗夜金箔 ===== */
body{
  background:
    radial-gradient(900px 420px at 12% -8%, var(--t1) 0%, rgba(255,244,224,0) 55%),
    radial-gradient(800px 380px at 88% -12%, rgba(246,197,106,.08) 0%, rgba(246,197,106,0) 55%),
    radial-gradient(1200px 700px at 50% 115%, rgba(56,28,66,.35) 0%, rgba(56,28,66,0) 60%),
    linear-gradient(180deg,#0b0d16 0%,#0e0b18 55%,#0a0d13 100%);
  color:#e8ecf5;
}
#app{position:relative}
/* 顶部星光光斑 */
#app::before{
  content:'';position:absolute;inset:0;pointer-events:none;z-index:0;
  background:
    radial-gradient(220px 220px at 18% 22%, rgba(246,197,106,.05) 0%, transparent 70%),
    radial-gradient(260px 260px at 82% 68%, rgba(124,197,255,.045) 0%, transparent 70%);
}
header{
  background:
    linear-gradient(180deg, rgba(20,16,32,.92) 0%, rgba(14,12,24,.86) 100%);
  border-bottom:1px solid rgba(246,197,106,.22);
  box-shadow:inset 0 -1px 0 rgba(246,197,106,.08), --sh-3;
}
header h1{
  color:#f6c56a;
  text-shadow:0 0 10px rgba(246,197,106,.22), 0 1px 2px rgba(0,0,0,.6);
}
header .tagline{color:#a8adbf}
.hdr-btn{
  background:linear-gradient(115deg,#f6c56a 0%,var(--gold-deep) 45%,var(--gold-light) 100%);
  border:1px solid rgba(255,229,168,.65);
  box-shadow:var(--inner-hi);
}
.draw{
  background:
    radial-gradient(120% 100% at 50% -30%, var(--t1) 0%, rgba(255,244,224,0) 58%),
    linear-gradient(170deg,#181226 0%,#10141f 55%,#0d1017 100%);
  border:1px solid rgba(246,197,106,.22);
  box-shadow:0 12px 36px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.06);
}
.draw .qihao{color:#f6c56a;text-shadow:0 0 14px rgba(246,197,106,.35)}
.draw .cd{background:linear-gradient(180deg,rgba(246,197,106,.15),rgba(246,197,106,.08));border-color:rgba(246,197,106,.35);color:#f6c56a}
.num{
  box-shadow:inset -2px -4px 7px rgba(0,0,0,.45), 0 0 14px rgba(246,197,106,.08), 0 4px 10px rgba(0,0,0,.55);
}
.num.w-red{box-shadow:inset -2px -4px 7px rgba(0,0,0,.45), 0 0 14px rgba(239,68,68,.35), 0 4px 10px rgba(0,0,0,.5)}
.num.w-blue{box-shadow:inset -2px -4px 7px rgba(0,0,0,.45), 0 0 14px rgba(96,165,250,.35), 0 4px 10px rgba(0,0,0,.5)}
.num.w-green{box-shadow:inset -2px -4px 7px rgba(0,0,0,.45), 0 0 14px rgba(52,211,153,.35), 0 4px 10px rgba(0,0,0,.5)}
.stickwrap{
  background:rgba(12,10,20,.72);
  border:1px solid rgba(246,197,106,.14);
  backdrop-filter:blur(16px) saturate(1.3);
  -webkit-backdrop-filter:blur(16px) saturate(1.3);
  box-shadow:var(--sh-2);
}
.searchbox input{background:var(--card);border-color:rgba(246,197,106,.22);color:#eef1f8}
.searchbox input:focus{border-color:rgba(124,197,255,.65);box-shadow:0 0 0 3px rgba(124,197,255,.12)}
.s-go{background:linear-gradient(115deg,#f6c56a,var(--gold-deep) 50%,var(--gold-light));color:#1a1405;box-shadow:none}
.tabbar{
  background:linear-gradient(180deg, rgba(20,16,32,.9) 0%, rgba(13,11,22,.88) 100%);
  border:1px solid rgba(246,197,106,.14);
  box-shadow:var(--sh-3);
}
.tabbar button{color:#b8bdd0}
.tabbar[data-tabready] button.active{       /* 就绪标记由解析期的内联脚本挂上：首帧就是对的 tab */
  color:#f6c56a;
  text-shadow:0 0 8px rgba(246,197,106,.22);
}
/* 选中态的背景与下划线由会滑动的 .tabpill 统一承担（见文件末尾）：切换时是"滑过去"而不是"啪地换色" */
.wall-notice{background:rgba(13,10,22,.96);border-color:rgba(246,197,106,.22);color:var(--gold);font-weight:600;letter-spacing:.4px;text-shadow:none}
.wcell{background:linear-gradient(180deg,#141020 0%,#0f1219 100%);border:1px solid rgba(246,197,106,.14);box-shadow:var(--sh-1)}
.wcell-txt{background:linear-gradient(180deg,#181326 0%,#10131c 100%);border-color:rgba(246,197,106,.14)}
.wcell-no{background:linear-gradient(90deg,#f6c56a,var(--gold-deep));box-shadow:var(--sh-1)}
.st-tabbtn{color:var(--tx-dim)}
.st-tabbtn.on{background:linear-gradient(120deg,#f6c56a 0%,var(--gold-deep) 100%);box-shadow:none}
.st-mini .v{color:#f6c56a;text-shadow:0 0 12px rgba(246,197,106,.35)}
.st-hcell.lv3{background:var(--heat-3);box-shadow:none}
.wtxt{color:#d9dce8}
.wall-text{color:#e2e5f0}
.foot{border-top-color:rgba(246,197,106,.08)}
.period-banner{background:linear-gradient(90deg,rgba(246,197,106,.08),var(--t1) 55%,rgba(246,197,106,0));border-bottom-color:rgba(246,197,106,.14)}
.period-banner .pb-num{background:linear-gradient(90deg,#f6c56a,var(--gold-deep));box-shadow:none}

/* ===== D2：弹窗色调 + 文字体系统一 ===== */
/* 六合彩3分信息框/标签统一紫色 */

/* 论坛（原聊天区）统一紫色 */

/* 分页条控件统一紫色 */
.pager .pg{color:var(--tx-soft);background:var(--t1);border-color:var(--t1)}
.pager .pgin{background:var(--t1);border-color:var(--t2);color:#ffffff}
.pager .pgin:focus{border-color:var(--t4);box-shadow:0 0 0 3px var(--t1)}

/* 控件统一紫色体系（非焦点控件） */
.hist-btn{background:var(--t1);border-color:var(--t2);color:var(--tx-soft)}
.hist-btn:active{background:var(--t2)}
.pager button{background:var(--t1);border-color:var(--t2);color:var(--tx-soft)}
.pager button:disabled{opacity:.4}
.pgbtn{background:var(--t1);border-color:var(--t2);color:var(--tx-soft)}
.back-btn{background:var(--t1);border-color:var(--t2);color:var(--tx-soft-strong)}
.back-btn:active{background:var(--t2)}
.year-btn{background-color:var(--t1);border-color:var(--t1);color:var(--tx-soft)}
.year-btn:active{background-color:var(--t1)}
.chip{background:var(--t1);border-color:var(--t2);color:var(--tx-soft)}
.chip-sep{color:var(--tx-weak)}
.st-range-btn{background-color:var(--t1);border-color:var(--t1);color:var(--tx-soft)}
.st-range-btn:active{background-color:var(--t1)}
.f3-gotop{background:rgba(19,15,30,.9);border-color:var(--t3);color:var(--tx-soft-strong);box-shadow:var(--sh-2)}
.f3-gotop:active{background:var(--t2)}

/* 搜索框对齐紫色底 */
.searchbox{background:rgba(19,15,30,.92);border-bottom:1px solid var(--t1)}
/* 搜索联想浮层：紫底金边（站长口径），压在列表之上 */
.searchbox{position:relative}
.sugbox{position:absolute;left:12px;right:12px;top:calc(100% - 4px);z-index:30;background:var(--surface-2);
  border:1px solid rgba(246,197,106,.45);border-radius:12px;box-shadow:var(--sh-3);padding:4px;
  max-height:min(300px,calc(var(--vh0,100vh) * 0.42));overflow-y:auto;
  touch-action:pan-y;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.sugbox[hidden]{display:none}
.sug-h{font-size:10px;color:var(--tx-weak);padding:6px 10px 3px}
.sug-i{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:8px;font-size:13px;color:var(--tx-body);cursor:pointer;word-break:break-all}
.sug-i em{font-style:normal;color:var(--gold);font-weight:800}
.sug-i.on,.sug-i:hover{background:rgba(255,255,255,.06)}
.searchbox input{background:var(--t1);border-color:var(--t2);color:#ffffff}
.searchbox input:focus{border-color:var(--t4);box-shadow:0 0 0 3px var(--t1)}
.searchbox input::placeholder{color:#e6e6f0}
.s-clear{background:var(--t1);border-color:var(--t2);color:var(--tx-soft)}

/* 图系筛选胶囊对齐紫色底 */
.tagrow{background:rgba(19,15,30,.6)}
.tag{background:var(--card);border:1px solid rgba(255,255,255,.07);color:var(--tx-body)}
.tag:active{background:var(--t1)}
.tag.on{background:linear-gradient(120deg,#f6c56a,var(--gold-deep));color:#1a1405;border-color:transparent}

/* 精选期数框对齐紫色底 */
.wday-bar,.wday-selwrap .wday-t{
  background:linear-gradient(90deg,#1c1430 0%,#13101f 75%);
  border:1px solid var(--t1);
}
.wday-t::before{background:linear-gradient(180deg,var(--gold-light),var(--gold));box-shadow:var(--sh-2)}
.wday-bar-label{color:var(--tx-soft-strong)}
.wday-bar-cnt{color:#a8a49b}
.wday-t span{color:#a8a49b}
.wday-d{border-color:var(--t2);background:var(--t1);color:var(--tx-soft)}
.wday-d.on{background:linear-gradient(120deg,#f6c56a,var(--gold-deep));border-color:transparent;color:#1a1405}
.wday-y{border-color:var(--t1);color:var(--tx-soft)}
.wday-y.on{background:var(--t1);color:var(--tx-soft-strong)}
.wday-yearpop{background:rgba(19,16,31,.97);border-color:var(--t1)}
.wday-selopt{color:var(--tx-soft)}
.wday-selopt.on{background:var(--t1);color:var(--tx-soft-strong)}

body{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
/* 基础文字层级 */
body{color:var(--tx-title)}
.otime,.sub,.foot,.st-sub,.wday-tip,.strip-note,.tagline,.wall-notice{color:var(--tx-dim)}
.pb-txt,.st-mini .k,.st-bar-sub,.f3-time{color:#71767f}
.foot{color:#5f6672}
/* 弹窗遮罩：深紫墨色 */
.mask{background:rgba(10,8,16,.72);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
/* 弹窗主体：玻璃紫黑 + 金边 */
.sheet{
  background:
    radial-gradient(140% 120% at 50% -20%, var(--t1) 0%, rgba(255,244,224,0) 55%),
    linear-gradient(180deg,#191327 0%,#10131c 60%,#0c0f16 100%);
  border:1px solid rgba(246,197,106,.45);
  box-shadow:var(--inner-hi), --sh-3;
}
.sheet.sheet-wall .body{color:var(--tx-title)}
.sheet .top{border-bottom:1px solid rgba(246,197,106,.14);background:rgba(255,255,255,.02)}
.sheet .top h2{color:#f6c56a;text-shadow:none}
.sheet-close{color:#c9cede;background:var(--card-2);border:1px solid rgba(246,197,106,.14)}
.sheet-close:active{background:rgba(246,197,106,.15)}
.wall-text{color:#e4e8f2}
.wtxt{color:#d9dde9}
.wall-strip{background:var(--card);border:1px solid rgba(246,197,106,.14)}
.drawlist,.ditem{background:transparent}
.ditem{border-bottom-color:rgba(246,197,106,.08)}
.ditem .otime{color:var(--tx-dim)}
.draw-strip{background:linear-gradient(180deg,#141021 0%,#0f121a 100%);border-color:rgba(246,197,106,.14)}
.strip-note{color:var(--tx-dim)}
/* 历史/详情弹窗的文字 */
.wall-strip .qihao,.draw-strip .qihao,.st-drow .qihao{color:#f6c56a}
/* 输入与按钮 */
/* 选项/胶囊：未选中=中性描边（选中样式由各自的 .on/.active 给金色）*/
.year-btn,.year-opt,.chip,.st-range-btn{
  background:var(--card);
  border:1px solid rgba(255,255,255,.07);
  color:var(--tx-body);
}
/* 动作按钮：保留金色（金=动作）*/
.pager button,.pgbtn,.back-btn,.hist-btn,.f3-fold,.f3-top{
  background:var(--card);
  border:1px solid rgba(246,197,106,.14);
  color:var(--tx-body);
}
.year-opt.on,.chip.active,.tag.on,.wday-y.on,.wday-d.on,.wday-selopt.on{
  background:linear-gradient(120deg,#f6c56a 0%,var(--gold-deep) 100%);
  color:#1a1405;
  border-color:transparent;
}
.search-clear,.s-clear{background:rgba(255,255,255,.06);border-color:rgba(246,197,106,.14);color:#c9cede}
/* 全屏图片层 */
.fullimg{background:rgba(7,6,12,.94)}
/* 选择文本与滚动条 */
::selection{background:rgba(246,197,106,.35);color:#fff}
::-webkit-scrollbar-thumb{background:#2b2f3a}

/* ===== 登录/注册弹窗 ===== */
#authMask{z-index:60}
.auth-sheet{width:320px;max-width:calc(100% - 32px);padding:0;border-radius:12px;overflow:hidden}
.auth-sheet .top{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--t1)}
.auth-sheet .top h2{font-size:15px;color:#f6c56a;margin:0}
.auth-sheet .top .sheet-close{background:rgba(255,255,255,.06);border:none;color:#c9cede;font-size:18px;width:28px;height:28px;border-radius:8px;line-height:1;cursor:pointer}
.auth-body{padding:16px}
.auth-tabs{display:flex;gap:8px;margin-bottom:14px}
.auth-tab{flex:1;padding:7px 0;border-radius:8px;border:1px solid rgba(255,255,255,.07);background:var(--card);color:var(--tx-soft);font-size:13px;cursor:pointer}
.auth-tab.on{background:linear-gradient(120deg,#f6c56a,var(--gold-deep));color:#1a1405;font-weight:700;border-color:transparent}
.auth-label{display:block;font-size:12px;color:#a8a49b;margin:10px 0 4px}
.auth-input{width:100%;box-sizing:border-box;background:var(--card);border:1px solid rgba(255,255,255,.13);color:#fff;border-radius:12px;padding:10px 12px;font-size:14px;outline:none}
.auth-input:focus{border-color:var(--t4);box-shadow:0 0 0 3px var(--t1)}
.auth-btn{margin-top:14px;width:100%;padding:11px 0;border:none;border-radius:12px;background:linear-gradient(115deg,#f6c56a,var(--gold-deep) 50%,var(--gold-light));color:#1a1405;font-weight:800;font-size:14px;cursor:pointer;box-shadow:var(--sh-3)}
.auth-err{min-height:18px;font-size:12px;color:#f87171;margin-bottom:4px}
.auth-tip{margin-top:10px;font-size:11px;color:var(--tx-weak);text-align:center}

.auth-hdr{background:var(--t1);border:1px solid var(--t3);color:var(--tx-soft-strong);border-radius:12px;padding:6px 13px;font-size:13px;cursor:pointer;box-shadow:none;animation:none;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:420px){.auth-hdr{max-width:92px;padding:6px 10px;font-size:13px}}
.auth-hdr.logged{background:linear-gradient(115deg,#f6c56a,var(--gold-deep));border-color:transparent;color:#1a1405}
/* ===== 论坛 tab ===== */
/* no lock */
#pageChat.active{display:flex;flex-direction:column;padding:12px 12px 130px;padding-bottom:calc(130px + var(--safeBot))}
/* (论坛随文档流，不锁定滚动：键盘由 body 垫底+系统自动定位) */
#pageChat .chat-preview-box{max-height:calc(var(--vh0,100vh) * 0.62)}
#pageChat .chat-inputbar{margin-top:8px;flex-shrink:0}
/* inputbar flow */
.chat-preview-box{width:100%;background:linear-gradient(180deg,#151126 0%,#0f121c 100%);border:1px solid var(--t2);border-radius:12px;overflow:hidden;box-shadow:var(--sh-3);overflow-y:auto;-webkit-overflow-scrolling:touch}
.chat-msgrow{display:flex;gap:9px;padding:12px 14px;border-bottom:1px solid var(--t1)}
.chat-msgrow.mine{flex-direction:row-reverse}
.chat-msgrow.mine .chat-bub{background:rgba(246,197,106,.13);border:1px solid rgba(246,197,106,.32);border-radius:12px 4px 14px 14px}
.chat-msgrow.mine .t{color:#f6c56a}
.chat-msgrow.mine .chat-lv.lv5{background:rgba(246,197,106,.22)}
.chat-ava{width:32px;height:32px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--t1);border:1px solid var(--t2);color:var(--tx-soft);font-weight:800;font-size:15.5px;line-height:1;box-shadow:var(--sh-2)}
.chat-bub{flex:1;min-width:0;background:var(--t1);border:1px solid var(--t2);border-radius:4px 14px 14px 14px;padding:8px 13px}
.chat-bub .t{font-size:10px;color:var(--tx-weak);margin-bottom:2px}
.chat-bub .c{font-size:13px;color:var(--tx-soft-strong);line-height:1.7;word-break:break-word}
.chat-lockbar{display:flex;align-items:center;gap:10px;margin:12px 0;padding:11px 14px;border-radius:12px;background:var(--t1);border:1px dashed var(--t3)}
.chat-lockbar .tip{flex:1;font-size:12px;color:var(--tx-soft);line-height:1.5}
.chat-lockbar button,.chat-sendbtn{background:linear-gradient(115deg,#f6c56a,var(--gold-deep) 50%,var(--gold-light));border:none;color:#1a1405;font-weight:800;font-size:12px;border-radius:12px;padding:7px 14px;cursor:pointer;box-shadow:none}
.chat-sendbtn:disabled{opacity:.5;cursor:not-allowed}
.chat-inputbar{display:flex;gap:8px;margin-top:12px;width:100%;background:rgba(19,15,30,.8);border:1px solid var(--t2);border-radius:12px;padding:8px 12px;align-items:center}
.chat-inputbar textarea{flex:1;font-size:13px;color:var(--tx-soft-strong);background:var(--t1);border:1px solid var(--t2);border-radius:12px;padding:9px 14px;outline:none;resize:none;font-family:inherit;min-height:38px;max-height:110px}
.chat-inputbar textarea:disabled{color:var(--tx-weak)}
.chat-admin{white-space:nowrap;display:inline-block;font-size:10px;font-weight:800;color:var(--tx-soft);background:var(--t1);border:1px solid var(--t2);border-radius:8px;padding:1px 7px;margin-left:6px;vertical-align:1px;line-height:1}
/* ===== 论坛：论坛帖子样式 ===== */
#pageChat.posts .chat-inputbar{order:1;flex-direction:column;align-items:stretch;gap:9px;background:linear-gradient(180deg,#151126,#0f121c);border:1px solid var(--t2);border-radius:12px;padding:12px;margin:0 0 12px}
#pageChat.posts .chat-inputbar textarea{flex:none;width:100%;min-height:78px;background:var(--tint-soft);border:1px solid var(--t2);border-radius:12px;color:var(--tx-soft-strong);font-size:13px;line-height:1.7;padding:10px 12px;outline:none;resize:none;font-family:inherit}
#pageChat.posts .post-compose-bar{display:flex;align-items:center;gap:10px}
#pageChat.posts .post-tip{flex:1;font-size:10px;color:var(--tx-weak);line-height:1.5}
#pageChat.posts .chat-sendbtn{padding:9px 24px;font-size:13.5px;border-radius:999px}
.myposts{position:fixed;left:50%;transform:translateX(-50%);bottom:0;width:100%;max-width:520px;max-height:calc(var(--vh0,100vh) * 0.7);z-index:60;background:linear-gradient(180deg,#151126,#0e1119);border:1px solid rgba(246,197,106,.45);border-radius:12px 18px 0 0;display:flex;flex-direction:column;box-shadow:var(--sh-3)}
.myposts-h{display:flex;align-items:center;justify-content:space-between;padding:13px 15px;border-bottom:1px solid var(--t1)}
.myposts-h b{font-size:14px;color:#f6c56a}
.myposts-h button{width:26px;height:26px;border-radius:8px;border:none;background:rgba(255,255,255,.07);color:#c9cede;font-size:14px;cursor:pointer}
.myposts-b{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:10px 14px 16px;min-height:120px}
.dm-input{display:flex;gap:8px;padding:10px 14px;border-top:1px solid var(--t1);align-items:flex-end}
.dm-input textarea{flex:1;min-height:38px;max-height:96px;background:var(--t1);border:1px solid var(--t2);border-radius:12px;color:var(--tx-soft-strong);font-size:13px;padding:9px 12px;outline:none;resize:none;font-family:inherit}
.dm-input button{padding:9px 16px;border-radius:12px;border:none;background:linear-gradient(115deg,var(--gold),var(--gold-deep));color:#fff;font-weight:800;font-size:13px;cursor:pointer}
.dm-row{margin:9px 0;display:flex}
.dm-row.a{justify-content:flex-start}
.dm-row.u{justify-content:flex-end}
.dm-bub{max-width:78%;padding:8px 12px;border-radius:12px;font-size:13px;line-height:1.7;word-break:break-word;white-space:pre-wrap}
.dm-row.a .dm-bub{background:rgba(255,255,255,.07);border:1px solid var(--t2);color:var(--tx-soft-strong);border-radius:4px 12px 12px 12px}
.dm-row.u .dm-bub{background:linear-gradient(115deg,#8b5cf6,#5b2fd8);color:#fff;border-radius:12px 4px 12px 12px}   /* 紫调深一档：白字对比度从 2.7/4.5 提到 4.2/7.4（原来浅端偏弱） */
.dm-col{max-width:78%;display:flex;flex-direction:column}
.dm-row.a .dm-col{align-items:flex-start}
.dm-row.u .dm-col{align-items:flex-end}
.dm-time{font-size:10px;color:var(--tx-weak);margin:3px 2px 0}
.dm-bub{max-width:100%}
.mp-row{padding:10px 0;border-bottom:1px solid var(--t1)}
.mp-tx{font-size:13px;color:var(--tx-soft-strong);line-height:1.7;word-break:break-word}
.mp-meta{margin-top:5px;font-size:10px;color:var(--tx-weak)}
.mp-picks{font-size:12px;color:#c8bfe8;line-height:1.7;word-break:break-word}
.mp-day{display:flex;align-items:center;justify-content:space-between;margin:12px 0 6px;font-size:11px;font-weight:800;color:var(--tx-weak)}
.mp-day:first-child{margin-top:2px}
.mp-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px}
.mp-foot .mp-meta{margin-top:0}
.mp-hideon{color:var(--gold);font-weight:700;margin-left:6px}
.mp-hidebtn{flex:0 0 auto;padding:4px 10px;border-radius:8px;border:1px solid var(--t3);background:var(--t1);color:var(--gold);font-size:11px;font-weight:700;cursor:pointer}
.mp-hidebtn.on{border-color:rgba(248,113,113,.45);background:rgba(248,113,113,.1);color:#fca5a5}
.mp-hint{font-size:10px;color:#6f6a86}
.mp-ok{color:#4ade80}.mp-no{color:#fca5a5}.mp-wait{color:var(--gold)}
.mp-img{margin-top:6px;border-radius:8px;max-width:120px;display:block;border:1px solid var(--t2)}
#pageChat.posts .pick-row{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 4px}
#pageChat.posts .pick-chip{padding:5px 11px;border-radius:999px;border:1px solid var(--t2);background:var(--t1);color:#b8aed4;font-size:13px;font-weight:700;cursor:pointer}
#pageChat.posts .pick-chip.on{background:linear-gradient(115deg,var(--gold),var(--gold-deep));color:var(--tx-invert);border-color:transparent}
#pageChat.posts .pick-tip{font-size:10px;color:var(--tx-weak);margin-left:2px;align-self:center}
#pageChat.posts .pick-sum{display:flex;flex-wrap:wrap;gap:5px;align-items:center;margin:2px 0 6px}
#pageChat.posts .pick-sum .s-lb{font-size:10px;color:var(--tx-weak)}
#pageChat.posts .pick-sum .s-chip{font-size:11px;font-weight:700;padding:3px 8px;border-radius:8px;background:var(--gold-line);border:1px solid var(--gold-line-strong);color:#f3d79a;cursor:pointer}
#pageChat.posts .pick-sum .s-chip.w-red{background:rgba(248,113,113,.16);border-color:rgba(248,113,113,.5);color:#fca5a5}
#pageChat.posts .pick-sum .s-chip.w-blue{background:rgba(96,165,250,.16);border-color:rgba(96,165,250,.5);color:#93c5fd}
#pageChat.posts .pick-sum .s-chip.w-green{background:rgba(74,222,128,.16);border-color:rgba(74,222,128,.5);color:#86efac}
#pageChat.posts .pick-sum .s-clr{font-size:10px;color:#a99cd6;cursor:pointer;text-decoration:underline;margin-left:2px}
#pageChat.posts .pick-tabs{display:flex;gap:6px;overflow-x:auto;margin:0 0 7px;padding-bottom:2px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
#pageChat.posts .pick-tabs::-webkit-scrollbar{display:none}
#pageChat.posts .pick-tab{flex:0 0 auto;padding:4px 11px;border-radius:999px;border:1px solid var(--t2);background:var(--t1);color:#9f95bd;font-size:11px;font-weight:700;cursor:pointer;white-space:nowrap}
#pageChat.posts .pick-tab.on{background:var(--t2);border-color:var(--t2);color:var(--tx-soft-strong)}
#pageChat.posts .pick-tab b{font-weight:800;color:var(--gold);margin-left:3px}
#pageChat.posts .pick-chip.w-red{border-color:rgba(248,113,113,.45);background:rgba(248,113,113,.1);color:#fca5a5}
#pageChat.posts .pick-chip.w-blue{border-color:rgba(96,165,250,.45);background:rgba(96,165,250,.1);color:#93c5fd}
#pageChat.posts .pick-chip.w-green{border-color:rgba(74,222,128,.45);background:rgba(74,222,128,.1);color:#86efac}
#pageChat.posts .pick-chip.w-red.on{background:linear-gradient(115deg,var(--miss),#dc2626);color:#1a0505;border-color:transparent}
#pageChat.posts .pick-chip.w-blue.on{background:linear-gradient(115deg,#60a5fa,#2563eb);color:#04091a;border-color:transparent}
#pageChat.posts .pick-chip.w-green.on{background:linear-gradient(115deg,var(--hit),#16a34a);color:#04140a;border-color:transparent}
#pageChat.posts .num-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;max-height:158px;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-right:2px}
#pageChat.posts .num-grid .pick-chip{padding:6px 0;text-align:center;border-radius:9px;font-size:12px}
#pageChat.posts .pick-hint{font-size:10px;color:var(--tx-weak);margin-top:6px;line-height:1.5}
#pageChat.posts .pick-hint b{color:var(--gold)}
#pageChat.posts .post-hidebtn{height:40px;flex:0 0 auto;display:flex;align-items:center;gap:5px;padding:0 11px;font-size:12px;border-radius:12px;border:1px solid var(--t3);background:var(--t1);color:var(--gold);font-weight:700;cursor:pointer}
#pageChat.posts .post-hidebtn svg.i{display:block}      /* 尺寸交给 .i 档位（原来写死 15px）*/
#pageChat.posts .post-hidebtn.on{background:linear-gradient(115deg,var(--accent),var(--gold-deep));color:#fff;border-color:transparent}
#pageChat.posts .post-picks{margin-top:8px;display:flex;gap:5px;flex-wrap:wrap;align-items:center}
#pageChat.posts .pk{font-size:11px;font-weight:800;padding:2px 9px;border-radius:8px;background:var(--t1);border:1px solid var(--t2);color:var(--tx-soft)}
#pageChat.posts .pk.hit{background:rgba(74,222,128,.16);border-color:rgba(74,222,128,.5);color:var(--hit)}
#pageChat.posts .pk.miss{opacity:.55}
#pageChat.posts .pk-line{display:flex;gap:5px;flex-wrap:wrap;align-items:center;margin-top:5px;padding-top:5px;border-top:1px dashed var(--tint-line);width:100%}
#pageChat.posts .pk-lb{font-size:10px;color:var(--tx-weak);margin-right:1px;white-space:nowrap}
#pageChat.posts .pk-sep{color:#5c5578;font-size:10px;margin:0 1px}
#pageChat.posts .pk.w-red{background:rgba(248,113,113,.14);border-color:rgba(248,113,113,.45);color:#fca5a5}
#pageChat.posts .pk.w-blue{background:rgba(96,165,250,.14);border-color:rgba(96,165,250,.45);color:#93c5fd}
#pageChat.posts .pk.w-green{background:rgba(74,222,128,.14);border-color:rgba(74,222,128,.45);color:#86efac}
#pageChat.posts .hit-tag{font-size:11px;font-weight:800;padding:2px 9px;border-radius:8px;white-space:nowrap}
#pageChat.posts .hit-tag.y{background:rgba(74,222,128,.16);color:var(--hit);border:1px solid rgba(74,222,128,.45)}
#pageChat.posts .hit-tag.n{background:rgba(148,163,184,.12);color:#94a3b8;border:1px solid rgba(148,163,184,.3)}
.post-hidden{display:block;padding:0;text-align:left}
.post-hidden button{flex:0 0 auto;padding:7px 14px;border-radius:8px;border:none;background:linear-gradient(115deg,var(--gold),var(--gold-deep));color:var(--tx-invert);font-weight:800;font-size:12px;cursor:pointer}
#pageChat.posts .post-compose-bar{display:flex;align-items:center;gap:8px}
#pageChat.posts .post-imgbtn{width:40px;height:40px;flex:0 0 auto;flex:0 0 auto;display:flex;align-items:center;justify-content:center;padding:0;border-radius:12px;border:1px solid var(--t2);background:var(--t2);color:var(--gold);cursor:pointer;transition:background .15s,color .15s}
#pageChat.posts .post-imgbtn svg.i{display:block}       /* 原来写死 19px */
#pageChat.posts .post-imgbtn:hover:not(:disabled){background:var(--t1);color:#e0d6ff}
#pageChat.posts .post-imgbtn:disabled{opacity:.4;cursor:not-allowed}
#pageChat.posts .post-links{flex:1 1 auto;min-width:0;display:flex;flex-wrap:wrap;row-gap:2px;align-items:center;justify-content:flex-end;gap:12px}
#pageChat.posts .post-link{font-size:11px;color:#a99cd6;white-space:nowrap;cursor:pointer;flex:0 0 auto}
#pageChat.posts .post-link:hover{color:var(--tx-soft-strong)}
#pageChat.posts .post-tip-line{margin-top:7px;font-size:10px;color:var(--tx-weak);line-height:1.5}
#pageChat.posts .post-tip-line b{color:var(--gold)}
#pageChat.posts .chat-sendbtn{height:40px;padding:0 20px;display:flex;align-items:center;border-radius:12px;flex:0 0 auto}
#pageChat.posts .post-imgprev{position:relative;align-self:flex-start}
#pageChat.posts .post-imgprev img{max-width:150px;max-height:120px;border-radius:8px;border:1px solid var(--t2);display:block}
#pageChat.posts .post-imgprev button{position:absolute;top:-8px;right:-8px;width:22px;height:22px;border-radius:50%;border:1px solid rgba(248,113,113,.5);background:rgba(20,14,24,.95);color:#fca5a5;font-size:12px;line-height:1;cursor:pointer}
/* 帖内图：**占满内容宽度、保持比例、不裁不缩**（站长 2026-09-17 定版："排版不科学且不美观"）。
   历史：先是无限高（一张竖图比屏幕还高）→ 限高 280 左对齐（小、孤零零）→ 现在全宽 + calc(var(--vh0,100vh) * 0.7) 上限。
   为什么又放开：站长的料是**资料图，用户要看清里面的字** —— 缩到 280 高在手机上几乎读不出内容 ✗；
   `max-height` 对替换元素会**等比缩小宽度**（不会拉变形也不会留黑边），所以它只当"极端长图的保险丝"，
   正常 3:4 / 9:16 的图基本都顶不满，等于原尺寸呈现 ✓。
   点开看原图仍由 openFullImg() 负责（点击早就绑了），这一层只管"看得清的预览"。 */
#pageChat.posts .post-img{margin-top:9px;border-radius:12px;overflow:hidden;border:1px solid var(--t1);position:relative;align-self:stretch;max-width:100%}
/* 帖子图片的展示口径（2026-09-18 定，参考 TG 相册的信息模式）：
   · **铺满宽度、字看得清** —— 这批料是资料图，缩小了字就糊（站长 2026-09-17 定过"别把图缩小"）
   · **多图只显示第一张** + 右上角「1/N」张数角标 → 一帖只占一张图的高度（原来多张铺开要占好几屏，
     评论区被推到很远，这也是"输入框总在屏幕外"的根因）
   · 点开是全屏查看器，**左右滑动看这一帖的全部图**（见 app.js 的 openFullImg） */
#pageChat.posts .pi-wrap{position:relative;display:block}
#pageChat.posts .post-img img{display:block;max-width:100%;max-height:calc(var(--vh0,var(--vh0,100vh)) * 0.7);width:100%;height:auto;margin:0 auto;cursor:zoom-in}
/* 帖内相册：一次只显示"当前这张"（.active），左右滑切换（2026-09-18 站长：
   "习惯性没点开大图滑动的时候 会跳往图库 tab" —— 那个左滑原本是"返回图库"手势，被它抢走了）。
   现在在图上横滑＝翻这一帖的图，不再切 tab。 */
#pageChat.posts .post-imgs.pi-one .post-img{display:none}
#pageChat.posts .post-imgs.pi-one .post-img.active{display:block}
/* ⚠️ 高度**固定成第一张图的高度**（--ah 由 JS 算）：一张一张显示时，若每张高度不同，
   切换的瞬间容器高度跟着变 → 下面的内容整片跳（站长 2026-09-18："图片大小不一 左右滑动 屏幕会跳"）。
   固定高度后，其余图按比例居中显示（object-fit:contain），**翻页时页面纹丝不动**。 */
#pageChat.posts .post-imgs.pi-one .pi-wrap{height:var(--ah,72vw);display:flex;align-items:center;justify-content:center;
  overflow:hidden}
#pageChat.posts .post-imgs.pi-one .pi-wrap img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;margin:auto}
#pageChat.posts .pi-count{position:absolute;right:6px;top:6px;display:inline-flex;align-items:center;gap:3px;
  padding:3px 8px;border-radius:999px;background:rgba(20,14,24,.72);border:1px solid rgba(246,197,106,.45);
  color:#f6c56a;font-size:10px;line-height:1.4;pointer-events:none}
/* 图片的定位父级：「看大图」角标贴**图片**右下角（.pi-wrap 的尺寸规则见上面那段缩略显示） */
/* "看大图"角标：紫底金边（站点浮层规则）；pointer-events:none → 点角标也算点图 */
#pageChat.posts .post-img .pi-hint{position:absolute;right:6px;bottom:6px;display:inline-flex;align-items:center;gap:3px;padding:3px 7px;border-radius:999px;background:rgba(20,14,24,.74);border:1px solid rgba(246,197,106,.45);color:#f6c56a;font-size:10px;line-height:1.4;pointer-events:none}
#pageChat.posts.active{padding-bottom:calc(96px + var(--safeBot))}
#pageChat.posts .rules-box{order:0;margin:0 0 10px;border:1px solid var(--t2);border-radius:12px;background:linear-gradient(180deg,#161127,#0f1219);overflow:hidden}
#pageChat.posts .rules-box summary{cursor:pointer;list-style:none;padding:10px 13px;font-size:12px;color:#b8a4f0;font-weight:700;-webkit-user-select:none;user-select:none}
#pageChat.posts .rules-box summary::-webkit-details-marker{display:none}
#pageChat.posts .rules-box summary::after{content:"  ▾";color:var(--tx-weak)}
#pageChat.posts .rules-in{padding:2px 13px 12px}
#pageChat.posts .rl-h{margin:9px 0 4px;font-size:12px;font-weight:800;color:var(--gold)}
#pageChat.posts .rl-i{font-size:11px;line-height:1.85;color:#a8a49b}
#pageChat.posts .post-period{order:2;display:flex;gap:8px;overflow:visible;padding:2px 0 10px;-webkit-overflow-scrolling:touch}
#pageChat.posts .post-period::-webkit-scrollbar{display:none}
#pageChat.posts .pp-chip{flex:0 0 auto;padding:7px 13px;border-radius:999px;border:1px solid var(--t2);background:var(--t1);color:#b8aed4;font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap}
#pageChat.posts .pp-chip.on{background:linear-gradient(115deg,var(--gold),var(--gold-deep));color:var(--tx-invert);border-color:transparent;box-shadow:none}
#pageChat.posts .pp-chip small{font-weight:600;opacity:.75;font-size:10px;margin-left:4px}
#pageChat.posts .post-strip{order:3;margin:0 0 12px;padding:11px 13px;border-radius:12px;background:linear-gradient(180deg,#151126,#0f121c);border:1px solid rgba(246,197,106,.22)}
#pageChat.posts .post-strip .strip-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}
#pageChat.posts .post-strip .qihao{color:var(--gold);font-size:13px;font-weight:800}
#pageChat.posts .post-strip .otime{color:var(--tx-dim);font-size:11px}
#pageChat.posts .post-strip .balls{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;justify-content:center}
#pageChat.posts .post-strip .num{width:28px;height:28px;font-size:12px}
#pageChat.posts .post-strip .strip-note{text-align:center;color:var(--tx-dim);font-size:12px;padding:2px 0}
#pageChat.posts .post-period-cnt{font-size:11px;color:var(--tx-weak);margin:0 0 8px}
#pageChat.posts .chat-preview-box{order:6;max-height:none;overflow:visible;background:none;border:none;box-shadow:none;border-radius:0;-webkit-overflow-scrolling:auto}
#pageChat.posts .chat-msgrow{flex-direction:column;align-items:stretch;gap:0;background:linear-gradient(180deg,#151126,#0f121c);border:1px solid var(--t1);border-left-width:3px;border-radius:12px;padding:12px 13px;margin-bottom:10px}
#pageChat.posts .post-head{display:flex;align-items:center;flex-wrap:wrap;row-gap:4px;gap:7px;margin-bottom:8px}
#pageChat.posts .post-head .chat-ava{width:30px;height:30px;font-size:14px}
#pageChat.posts .post-qihao{font-size:10px;font-weight:800;color:var(--gold);background:var(--gold-line);border:1px solid rgba(246,197,106,.32);border-radius:8px;padding:1px 7px;white-space:nowrap}
#pageChat.posts .post-pin{font-size:10px;font-weight:800;color:#86efac;background:rgba(74,222,128,.16);border:1px solid rgba(74,222,128,.45);border-radius:8px;padding:1px 7px;white-space:nowrap}
#pageChat.posts .chat-msgrow.post-pinned{border-left-color:var(--gold);box-shadow:0 0 0 1px rgba(246,197,106,.14)}
#pageChat.posts .post-name{font-size:var(--fsBody);font-weight:700;color:var(--tx-title);max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#pageChat.posts .post-time{margin-left:auto;font-size:10px;color:var(--tx-weak);white-space:nowrap}
#pageChat.posts .post-body{font-size:13.5px;line-height:1.85;color:var(--tx-soft-strong);white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere}
#pageChat.posts .post-foot{margin-top:9px;padding-top:8px;font-size:10px;color:var(--tx-weak);border-top:1px dashed var(--tint-line)}
#pageChat.posts .chat-msgrow.post-pending{opacity:.85;border-style:dashed}
#pageChat.posts .chat-msgrow.mine{border-color:rgba(246,197,106,.32)}

.chat-hint{margin:10px 4px 0;font-size:11px;color:#7a8698;line-height:1.6}
#chatDown{position:absolute;right:18px;bottom:96px;z-index:5;padding:7px 14px;border-radius:999px;border:1px solid rgba(246,197,106,.45);background:rgba(19,15,30,.92);color:#f6c56a;font-size:11px;font-weight:700;cursor:pointer;box-shadow:var(--sh-2);transition:opacity .2s ease}
.chat-lv{white-space:nowrap;display:inline-block;font-size:10px;font-weight:800;border-radius:8px;padding:1px 7px;margin-left:6px;vertical-align:1px;line-height:1}
.chat-lv.lv1{color:var(--tx-dim);background:rgba(154,164,178,.14);border:1px solid rgba(154,164,178,.3)}
.chat-lv.lv2{color:#4ade80;background:rgba(74,222,128,.12);border:1px solid rgba(74,222,128,.3)}
.chat-lv.lv3{color:#38bdf8;background:rgba(56,189,248,.12);border:1px solid rgba(56,189,248,.3)}
.chat-lv.lv4{color:#c084fc;background:rgba(192,132,252,.14);border:1px solid rgba(192,132,252,.3)}
.chat-lv.lv5{color:#f6c56a;background:rgba(246,197,106,.14);border:1px solid rgba(246,197,106,.45)}
.chat-lv.vip-badge{color:#1a1405;background:linear-gradient(115deg,#f6c56a,var(--gold-deep) 50%,var(--gold-light));border:none;font-weight:800}
.chat-lv.expert-badge{color:#1a1405;background:linear-gradient(115deg,var(--gold),var(--gold-deep) 55%,var(--gold-light));border:none;font-weight:800;box-shadow:0 0 0 1px rgba(196,181,253,.6)}
#pageChat.posts .expert-rank{order:4}
.expert-rank{margin:0 0 10px;border:1px solid var(--t2);border-radius:12px;background:linear-gradient(180deg,#171233,#0f1219);padding:10px 12px}
/* 专家榜默认折叠（2026-09-18 站长："专家榜也折叠一下"）：标题行常显可点，内容收在 #expertRankBox。
   折叠时右侧显示榜首（.er-top）—— 不展开也知道现在谁第一，跟选肖面板"收起仍看得到已选"一个思路。 */
.expert-rank h4{display:flex;align-items:center;gap:6px;margin:0;font-size:13px;color:var(--gold);font-weight:800;cursor:pointer;-webkit-tap-highlight-color:transparent}
.expert-rank h4 .er-sub{font-size:11px;font-weight:600;color:var(--tx-dim)}
.expert-rank h4 .er-top{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;color:var(--tx-dim)}
.expert-rank h4 .er-ar{flex:0 0 auto;font-size:10px;color:var(--tx-dim);transition:transform .18s}
.expert-rank:not(.collapsed) h4 .er-ar{transform:rotate(180deg)}
.expert-rank:not(.collapsed) h4 .er-top{display:none}
.expert-rank #expertRankBox{margin-top:8px}
.expert-rank.collapsed #expertRankBox{display:none}
.expert-rank .er{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:12px;color:var(--tx-soft);border-bottom:1px solid var(--t1)}
.expert-rank .er:last-child{border-bottom:none}
.expert-rank .er .no{width:18px;color:var(--tx-weak);font-weight:800}
.expert-rank .er .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.expert-rank .er .sc{color:#f6c56a;font-weight:700;font-size:11px}
.chat-msgrow .chat-bub{border-left-width:2.5px}
.chat-msgrow.cl1 .chat-bub{border-left-color:var(--tx-dim)}
.chat-msgrow.cl2 .chat-bub{border-left-color:#4ade80}
.chat-msgrow.cl3 .chat-bub{border-left-color:#38bdf8}
.chat-msgrow.cl4 .chat-bub{border-left-color:#c084fc}
.chat-msgrow.cl5 .chat-bub{border-left-color:#f6c56a}
.chat-msgrow.cl5 .chat-bub{box-shadow:inset 2.5px 0 0 rgba(246,197,106,.45)}
/* 会员中心 */
.acc-card{padding:2px 0 8px;text-align:left}
.acc-head{display:flex;align-items:center;gap:11px;margin-bottom:12px}
.acc-ava{width:46px;height:46px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--t1);border:1px solid var(--t2);color:var(--tx-soft);font-weight:900;font-size:20px;box-shadow:var(--sh-2);overflow:hidden}
.acc-ava img,.chat-ava img{width:100%;height:100%;object-fit:cover;border-radius:50%}
/* 等级头像框：Lv1 灰 → Lv2 青 → Lv3 紫 → Lv4 亮紫 → Lv5 金；专家与站长同款（金环+光晕） */
.chat-ava,.acc-ava,.pc-ava{border-width:2px}
.av-f1{border-color:#7d8496;box-shadow:0 0 0 1px rgba(125,132,150,.45)}
.av-f2{border-color:#4ea1d3;box-shadow:0 0 0 1px rgba(78,161,211,.45)}
.av-f3{border-color:var(--gold-deep);box-shadow:0 0 0 1px rgba(124,92,240,.5)}
.av-f4{border-color:#c084fc;box-shadow:0 0 0 1px rgba(192,132,252,.5),0 0 8px rgba(192,132,252,.32)}
.av-f5{border-color:#f6c56a;box-shadow:0 0 0 1px rgba(246,197,106,.55),0 0 9px rgba(246,197,106,.38)}
.av-fx{border-color:#f6c56a;box-shadow:0 0 0 2px rgba(246,197,106,.45),0 0 13px rgba(246,197,106,.55)}
.acc-name{font-size:15px;font-weight:800;color:var(--tx-soft-strong)}
.acc-sub{font-size:11px;color:var(--tx-weak);margin-top:2px}
.acc-front{white-space:nowrap;font-size:10px;color:#1a1405;background:linear-gradient(90deg,#f6c56a,var(--gold-deep));border-radius:8px;padding:1px 8px;margin-left:4px;font-weight:800}
.lv-lv{font-size:11px;font-weight:800}
/* 等级名**整段不拆行**（2026-09-21 站长截图："会员等级跨行了" ✗ ——
   `Lv2 白银会员` 在窄屏上被从"白银/会员"之间拆开、把"会员"孤零零甩到第二行 ✗。
   片段之间照常换行 ✓（长账号那截该断就断 ✓），**只保证"等级"这个语义整体不散** ✓）。 */
.lv-lv{white-space:nowrap}
.lv-lv.lv1{color:var(--tx-dim)}.lv-lv.lv2{color:#4ade80}.lv-lv.lv3{color:#38bdf8}.lv-lv.lv4{color:#c084fc}.lv-lv.lv5{color:#f6c56a}
.acc-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--card);border:1px solid rgba(255,255,255,.07);border-radius:12px;padding:10px 12px;margin-bottom:10px}
.acc-row span{font-size:13px;color:var(--tx-soft)}
/* 胶囊被"压成两行"的通用修法（站长在大字档下看到会员中心的胶囊变形）：
   ① 胶囊自己**不换行**、也不参与收缩（flex:0 0 auto）；② 左边那行说明文字去换行（min-width:0），
   于是字号放大时挤的是文字、不是胶囊。 */
.acc-row>span:first-child{flex:1 1 auto;min-width:0}
.acc-sign{padding:7px 16px;border-radius:999px;border:none;background:linear-gradient(115deg,#f6c56a,var(--gold-deep) 50%,var(--gold-light));color:#1a1405;font-weight:800;font-size:13px;cursor:pointer;box-shadow:none;white-space:nowrap;flex:0 0 auto}
.acc-row .acc-sign{color:#1a1405}
.acc-sign.done{background:rgba(74,222,128,.14);color:#4ade80;border:1px solid rgba(74,222,128,.4);box-shadow:none;cursor:default}
.acc-sign:disabled{cursor:default}
.acc-bar{height:7px;border-radius:99px;background:var(--t1);overflow:hidden;margin:2px 0 6px}
.acc-bar-in{height:100%;border-radius:99px;background:linear-gradient(90deg,#f6c56a,var(--gold-deep));transition:width .4s ease}
.acc-bar-tx,.acc-note{font-size:11px;color:var(--tx-weak);line-height:1.6}
.acc-sec{font-size:12px;font-weight:700;color:var(--tx-weak);margin:14px 0 6px;letter-spacing:.5px}   /* 第 503 块：小节标题此前零样式（拆分审查发现，建功能时就漏） */
.tj-sub{display:block;font-size:11px;color:var(--tx-weak);line-height:1.6}   /* 第 503 块：tj 副文案 hint 此前零样式 */
.acc-note{margin-top:8px}
.acc-logout{display:block;width:100%;margin-top:14px;padding:10px 0;border-radius:12px;border:1px solid rgba(248,113,113,.4);background:rgba(248,113,113,.08);color:#fca5a5;font-size:13px;font-weight:700;cursor:pointer}
.acc-logout:disabled{opacity:.5;cursor:not-allowed}
.acc-meta{flex:1;min-width:0}
.acc-edit{display:inline-block;margin-top:5px;padding:0;border:none;background:none;color:#b8a4f0;font-size:11px;cursor:pointer;text-align:left}
.acc-edit:hover{color:var(--tx-soft-strong)}
.acc-links{display:flex;align-items:center;gap:14px;margin-top:6px}
.acc-links .acc-edit{margin-top:0;white-space:nowrap}
.acc-edit:hover{color:var(--tx-soft-strong)}
.acc-nick{width:100%;box-sizing:border-box;background:var(--t1);border:1px solid var(--t2);color:#fff;border-radius:8px;padding:8px 11px;font-size:13px;outline:none}
.acc-nick:focus{border-color:var(--t4)}
.av-pick{display:grid;grid-template-columns:repeat(8,1fr);gap:6px;margin:4px 0 12px}
/* 头像格：颜色由 JS 按图标给（--av/--avbg/--avbd），选中态用 .on 盖掉 ——
   2026-09-18 站长："头像在 tg 小程序全变成这种黑白的"（改成彩色的，但仍是 SVG，壳里不会变 XX） */
.av-cell{display:flex;align-items:center;justify-content:center;aspect-ratio:1;border-radius:8px;
  color:var(--av,var(--tx-soft));background:var(--avbg,var(--t1));border:1px solid var(--avbd,var(--t2));
  font-size:17px;cursor:pointer}
.av-cell.on{border-color:#f6c56a;background:rgba(246,197,106,.14);box-shadow:0 0 0 2px rgba(246,197,106,.22)}
/* 自定义头像：上传/恢复默认（紫底金边，与站内一致） */
.av-up{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:4px 0 2px}
.av-upbtn{padding:7px 14px;border-radius:8px;border:none;background:linear-gradient(115deg,#f6c56a,var(--gold-deep));color:#1a1405;font-size:13px;font-weight:800;font-family:inherit;cursor:pointer}
.av-upbtn.ghost{background:var(--t1);border:1px solid rgba(246,197,106,.45);color:#f4ead2;font-weight:700}
.av-upbtn:disabled{opacity:.6}
.av-uptip{font-size:11px;color:var(--tx-dim)}
.acc-editbar{display:flex;gap:8px;margin-top:10px}
.acc-editbar .acc-sign{flex:1;margin:0}
.acc-editbar .acc-logout{flex:1;margin:0}
.wlock-block{padding:8px 4px}
.wlock-block-in{padding:36px 18px;border-radius:12px;display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;background:linear-gradient(180deg,#181326,#0f1219);border:1px dashed rgba(246,197,106,.35)}
.wlock-block-in .lk-ic{font-size:30px;filter:drop-shadow(0 3px 10px rgba(246,197,106,.45))}
.wlock-block-t{font-size:14.5px;font-weight:800;color:var(--gold)}
.wlock-block-s{font-size:11px;color:var(--tx-weak);line-height:1.7}
.wlock-block-in button{margin-top:6px;padding:9px 24px;border-radius:999px;border:none;background:linear-gradient(115deg,#f6c56a,var(--gold-deep) 50%,var(--gold-light));color:#1a1405;font-weight:800;font-size:13px;cursor:pointer;box-shadow:none}
.wlocktip-card{padding:44px 20px;display:flex;flex-direction:column;align-items:center;gap:10px}
.wlocktip-card .lk-ic{font-size:34px;filter:drop-shadow(0 3px 10px rgba(246,197,106,.45))}
.wlocktip-card .lk-tx{font-size:15px;font-weight:800;color:var(--gold)}
.wlocktip-card .lk-hint{font-size:12px;color:var(--tx-weak)}
.wlocktip-card button{white-space:nowrap;margin-top:6px;padding:8px 22px;border-radius:999px;border:none;background:linear-gradient(115deg,#f6c56a,var(--gold-deep) 50%,var(--gold-light));color:#1a1405;font-weight:800;font-size:13px;cursor:pointer;box-shadow:none}
.wemp{padding:40px 16px;display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}
.wemp-ic{filter:drop-shadow(0 4px 12px rgba(246,197,106,.35))}
.wemp-t{font-size:15.5px;font-weight:800;color:var(--tx-soft-strong)}
.wemp-s{font-size:11px;color:var(--tx-weak);line-height:1.7}
.wemp-btn{margin-top:8px;padding:10px 24px;border-radius:999px;border:none;background:linear-gradient(115deg,#f6c56a,var(--gold-deep) 50%,var(--gold-light));color:#1a1405;font-weight:800;font-size:13px;cursor:pointer;box-shadow:var(--sh-1);white-space:nowrap}
.wemp-btn:hover{transform:translateY(-1px)}
.ref-hint{display:flex;align-items:center;justify-content:center;gap:6px;padding:7px 14px;background:rgba(246,197,106,.08);border-bottom:1px solid rgba(246,197,106,.22);color:var(--gold);font-size:12px;text-align:center}
.acc-details{margin-top:10px;border:1px solid rgba(255,255,255,.07);border-radius:12px;padding:8px 10px}
.acc-details summary{cursor:pointer;font-size:12px;color:#b8a4f0;font-weight:700;list-style:none;-webkit-user-select:none;user-select:none}
.acc-details summary::-webkit-details-marker{display:none}
.acc-details summary::after{content:"  ▾";color:var(--tx-weak)}
.acc-table{display:flex;flex-direction:column;gap:6px;margin-top:9px}
.acc-lvrow{display:grid;grid-template-columns:76px minmax(0,1fr);gap:3px 10px;align-items:center;border:1px solid rgba(255,255,255,.07);border-radius:12px;padding:9px 11px;background:var(--t1)}
/* 等级行 = 两行结构：第一行「等级/VIP 标 + 条件」，第二行「权益」占满整行。
   原来挤成三列时「权益」只分到约 75px（11.5px 字要放 19 个字）→ 折 2~4 行，
   行高于是出现 35px / 70px 两档（站长截图反馈「框大小不一」）。
   overflow-wrap 也从 anywhere 改成 break-word：CJK 本来就按字断行，anywhere 只会把「积分」劈开。 */
.acc-lvrow .lv-lv{grid-column:1;grid-row:1;font-size:11px}
.acc-lvrow .acc-tag-vip{grid-column:1;grid-row:1}
.acc-lvrow .acc-c{grid-column:2;grid-row:1;min-width:0;font-size:11px;color:#aab2c4;overflow-wrap:break-word}
.acc-lvrow .acc-v{grid-column:1 / -1;grid-row:2;min-width:0;font-size:11px;color:var(--gold);font-weight:700;overflow-wrap:break-word;text-align:left}
.acc-viprow{border-color:var(--heat-1-line);background:rgba(246,197,106,.08)}
.acc-tag-vip{white-space:nowrap;min-width:64px;font-size:11px;font-weight:800;color:#1a1405;background:linear-gradient(115deg,#f6c56a,var(--gold-deep));border-radius:999px;padding:0 8px;height:19px;line-height:19px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box}
/* 胶囊固定 19px 高，和 11.5px 文字行等高——否则 VIP 那一行会比别的行高 6px（站长反馈「框大小不一」） */
.acc-table-note{margin-top:8px;font-size:10px;color:var(--tx-weak);line-height:1.7}

/* ===== 论坛排版重排（token 化：尺度统一 + 亮度分层 + 一色一职 + 形状分工）===== */
#pageChat.posts{
  --sp1:4px;--sp2:8px;--sp3:12px;--sp4:16px;--sp5:24px;
  --fsMeta:11px;--fsBody:13px;--fsCta:16px;--fsBadge:10px;
  --rSm:8px;--rMd:14px;--rPill:999px;
}
/* 投稿容器：一层「面」，不再套紫框 */
#pageChat.posts .chat-inputbar{order:1;gap:10px;background:var(--surface);border:1px solid var(--line-neutral);border-radius:var(--rMd);padding:var(--sp3);margin:0 0 var(--sp3);box-shadow:var(--sh-2),var(--inner-hi)}
#pageChat.posts .chat-inputbar textarea{background:var(--well);border:1px solid var(--line-neutral);border-radius:var(--rSm);color:var(--tx-title);font-size:var(--fsBody);min-height:78px;box-shadow:inset 0 1px 3px rgba(0,0,0,.45)}
#pageChat.posts .chat-inputbar textarea::placeholder{color:#a7aab6}
/* 已选汇总：没选东西就不占行（少一行灰字） */
#pageChat.posts .pick-sum{gap:var(--sp2);margin:0 0 var(--sp2)}
#pageChat.posts .pick-sum .s-lb{font-size:var(--fsMeta);color:var(--tx-dim)}
#pageChat.posts .pick-sum .s-chip{font-size:var(--fsMeta);font-weight:700;padding:4px 10px;border-radius:var(--rSm);transition:opacity .12s,transform .12s}
#pageChat.posts .pick-sum .s-chip:active{opacity:.65;transform:scale(.96)}
#pageChat.posts .pick-sum .s-clr{font-size:var(--fsMeta);color:var(--tx-dim);text-decoration:none;border-bottom:1px solid var(--tint-line);padding-bottom:1px}
/* 分类：方形标签 + 金色下划线（形状区别于取值） */
#pageChat.posts .pick-tabs{gap:var(--sp2);margin:0 0 var(--sp3)}
#pageChat.posts .pick-tab{padding:5px 10px;border-radius:var(--rSm);border:none;border-bottom:2px solid transparent;background:transparent;color:var(--tx-dim);font-size:var(--fsBody);font-weight:700}
#pageChat.posts .pick-tab.on{color:var(--gold);background:rgba(246,197,106,.08);border-bottom-color:var(--gold)}
#pageChat.posts .pick-tab b{color:var(--gold);font-weight:800}
/* 取值：圆胶囊，触摸目标 32px */
#pageChat.posts .pick-row{gap:var(--sp2);margin:0}
#pageChat.posts .pick-chip{min-height:32px;padding:0 13px;display:inline-flex;align-items:center;border-radius:var(--rPill);border:1px solid var(--line-neutral);background:var(--card-2);box-shadow:var(--inner-hi);color:#e9ebf2;font-size:var(--fsBody);font-weight:700}
#pageChat.posts .pick-chip.on{background:linear-gradient(115deg,var(--gold),var(--gold-deep));color:var(--tx-invert);border-color:transparent}
#pageChat.posts .num-grid{gap:6px;max-height:168px}
#pageChat.posts .num-grid .pick-chip{padding:0;border-radius:var(--rSm);font-size:var(--fsBody);justify-content:center;text-align:center}
/* 提示：一行，唯一字号 */
#pageChat.posts .pick-hint{margin-top:var(--sp2);font-size:var(--fsMeta);color:var(--tx-dim);line-height:1.6}
#pageChat.posts .pick-hint b{color:var(--tx-body);font-weight:700}
/* 操作条：用分隔线分组，不再加盒子 */
#pageChat.posts .post-compose-bar{margin-top:var(--sp1);padding-top:var(--sp3);border-top:1px solid var(--tint-line)}
#pageChat.posts .post-imgbtn{border-radius:var(--rSm);border:1px solid var(--tint-line);background:var(--surface-2);color:var(--tx-body)}
#pageChat.posts .post-imgbtn:hover:not(:disabled){background:#282046;color:var(--tx-title)}
#pageChat.posts .post-hidebtn{border-radius:var(--rSm);border:1px solid var(--line-neutral);background:var(--card);color:var(--tx-body)}
#pageChat.posts .post-hidebtn.on{background:linear-gradient(115deg,var(--accent),var(--gold-deep));color:#fff;border-color:transparent}
#pageChat.posts .post-links{gap:var(--sp3)}
#pageChat.posts .post-link{font-size:var(--fsBody);color:#ded3f0}
#pageChat.posts .post-link:hover{color:var(--tx-title)}
#pageChat.posts .chat-sendbtn{height:40px;padding:0 22px;border-radius:var(--rSm);font-size:var(--fsCta);font-weight:800;box-shadow:var(--sh-1)}
/* 私藏发布：紫底金边（与金色「发布」并排，一眼分清公开/私藏） */
#pageChat.posts .chat-sendbtn.hidebtn{background:var(--card);border:1px solid var(--line-neutral);color:var(--tx-body);box-shadow:none;font-weight:700;font-size:var(--fsBody)}
#pageChat.posts .chat-sendbtn.hidebtn:disabled{opacity:.5}
#pageChat.posts .chat-sendbtn.hidebtn:not(:disabled):active{opacity:.72}
#pageChat.posts .post-tip-line{margin-top:var(--sp2);font-size:var(--fsMeta);color:var(--tx-dim)}
#pageChat.posts .post-tip-line b{color:var(--gold)}
/* 规则：收成一行文字，展开时才成块 */
#pageChat.posts .rules-box{background:none;border:none;border-radius:0;overflow:visible;margin:0 0 var(--sp3)}
#pageChat.posts .rules-box summary{padding:2px 0;font-size:var(--fsMeta);color:var(--tx-dim);font-weight:700}
#pageChat.posts .rules-box summary::after{color:var(--tx-dim)}
#pageChat.posts .rules-in{margin-top:var(--sp2);padding:var(--sp3);background:var(--surface);border:1px solid var(--tint-line);border-radius:var(--rMd)}
#pageChat.posts .rl-h{font-size:var(--fsBody);color:var(--gold)}
#pageChat.posts .rl-i{font-size:var(--fsMeta);line-height:1.9;color:var(--tx-body)}
/* 期号选择 */
#pageChat.posts .post-period{gap:var(--sp2);padding:0 0 var(--sp3)}
#pageChat.posts .pp-chip{border-radius:var(--rPill);border:1px solid var(--tint-line);background:transparent;color:var(--tx-body);font-size:var(--fsBody)}
#pageChat.posts .pp-chip.on{background:linear-gradient(115deg,var(--gold),var(--gold-deep));color:var(--tx-invert);border-color:transparent}
/* 开奖对照条 */
#pageChat.posts .post-strip{padding:var(--sp3);border-radius:var(--rMd);background:var(--surface);border:1px solid var(--line-neutral);margin:0 0 var(--sp4);box-shadow:var(--sh-1),var(--inner-hi)}
/* 滚动时吸附在顶部（贴住吸顶头部下沿，头部变矮时跟随）停住，方便一边翻料一边对照 */
#pageChat.posts .post-strip{position:sticky;top:var(--hdr-h,56px);z-index:7}
#pageChat.posts .post-strip.stuck{border-color:var(--gold-line-strong);box-shadow:var(--sh-3)}
#pageChat.posts .post-strip .qihao{font-size:var(--fsBody);color:var(--gold)}
#pageChat.posts .post-strip .otime{font-size:var(--fsMeta);color:var(--tx-dim)}
#pageChat.posts .post-strip .strip-note{font-size:var(--fsMeta);color:var(--tx-dim)}
#pageChat.posts .post-period-cnt{font-size:var(--fsMeta);color:var(--tx-dim)}
/* 卡片：一层「面」，左侧色条只表示状态 */
#pageChat.posts .chat-msgrow{background:var(--surface);border:1px solid var(--line-neutral);border-left:3px solid var(--tint-line);border-radius:var(--rMd);padding:var(--sp3);box-shadow:var(--sh-1)}
#pageChat.posts .chat-msgrow.mine{border-left-color:var(--gold)}
#pageChat.posts .chat-msgrow.post-pinned{border-color:var(--heat-1-line);border-left-color:var(--gold)}
#pageChat.posts .chat-msgrow.post-pending{border-style:dashed}
#pageChat.posts .post-name{font-size:var(--fsBody);color:var(--tx-title)}
#pageChat.posts .post-time{font-size:var(--fsMeta);color:var(--tx-dim)}
#pageChat.posts .post-body{font-size:var(--fsBody);color:var(--tx-title);line-height:1.8}
#pageChat.posts .post-foot{font-size:var(--fsMeta);color:var(--tx-dim);border-top:1px solid var(--tint-line)}
#pageChat.posts .post-picks .pk-lb,#pageChat.posts .pk-lb,#pageChat.posts .pk-sep{font-size:var(--fsMeta);color:var(--tx-dim)}
#pageChat.posts .pk{font-size:var(--fsMeta);border-radius:var(--rSm)}
#pageChat.posts .hit-tag{font-size:var(--fsMeta)}
#pageChat.posts .pk-line{border-top:1px solid var(--tint-line)}
#pageChat.posts .post-qihao,#pageChat.posts .post-pin{font-size:var(--fsBadge);border-radius:var(--rSm)}
#pageChat.posts .chat-lv{font-size:var(--fsBadge);border-radius:var(--rSm)}
/* 折叠评论区：收起时只有一行入口，展开后是紫底金边的独立面板 */
#pageChat.posts .post-cmt{margin-top:9px;padding-top:8px;border-top:1px solid var(--tint-line)}
#pageChat.posts .pc-head,.cmt-list .pc-head{display:flex;align-items:center;gap:6px;width:100%;background:none;border:none;padding:2px 0;font-family:inherit;cursor:pointer}
#pageChat.posts .pc-head .pc-ico{font-size:11px;opacity:.85}
#pageChat.posts .pc-head .pc-t{font-size:var(--fsMeta);color:var(--tx-dim)}
#pageChat.posts .post-cmt.open .pc-head .pc-t{color:var(--tx-body)}
#pageChat.posts .pc-head .pc-ar{margin-left:auto;font-size:10px;color:var(--tx-dim);transition:transform .18s}
#pageChat.posts .post-cmt.open .pc-head .pc-ar{transform:rotate(180deg)}
#pageChat.posts .pc-body,.cmt-list .pc-body{display:none;margin-top:8px;padding:8px 9px;background:rgba(255,255,255,.02);border:1px solid rgba(246,197,106,.26);border-radius:var(--rMd)}
#pageChat.posts .post-cmt.open .pc-body{display:block}
#pageChat.posts .pc-list,.cmt-list .pc-list{max-height:240px;overflow-y:auto;-webkit-overflow-scrolling:touch}
/* 没有评论时列表为空 → 不占任何高度（别再留一块空白） */
#pageChat.posts .pc-list:empty{display:none}
#pageChat.posts .pc-row,.cmt-list .pc-row{display:flex;align-items:flex-start;gap:7px;padding:6px 0;border-bottom:1px dashed rgba(255,255,255,.07)}
#pageChat.posts .pc-row:last-child{border-bottom:none}
#pageChat.posts .pc-ava,.cmt-list .pc-ava{flex:0 0 24px;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;overflow:hidden;font-size:11px;font-weight:700;color:#fff;background:rgba(255,255,255,.08)}
#pageChat.posts .pc-ava img,.cmt-list .pc-ava img{width:100%;height:100%;object-fit:cover}
#pageChat.posts .pc-main,.cmt-list .pc-main{flex:1;min-width:0}
#pageChat.posts .pc-hd,.cmt-list .pc-hd{display:flex;align-items:center;gap:5px;flex-wrap:nowrap}   /* nowrap（2026-09-19 站长：三个胶囊+时间会换行 → 第二条比第一条高一行）：名字省略、时间靠右，永远一行 */
#pageChat.posts .pc-name,.cmt-list .pc-name{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#pageChat.posts .pc-hd .chat-lv,.cmt-list .pc-hd .chat-lv,.cmt-list .pc-hd .chat-admin,#pageChat.posts .pc-hd .chat-admin{flex:0 0 auto}
#pageChat.posts .pc-time,.cmt-list .pc-time{margin-left:auto;flex:0 0 auto;white-space:nowrap}
#pageChat.posts .pc-name,.cmt-list .pc-name{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fsMeta);font-weight:700;color:var(--tx-body)}
#pageChat.posts .pc-time,.cmt-list .pc-time{margin-left:auto;font-size:var(--fsBadge);color:var(--tx-dim)}
#pageChat.posts .pc-text,.cmt-list .pc-text{margin-top:2px;font-size:var(--fsMeta);color:var(--tx-title);line-height:1.65;white-space:pre-wrap;word-break:break-word}
#pageChat.posts .pc-del,.cmt-list .pc-del{padding:2px 0 0;background:none;border:none;color:var(--tx-dim);font-family:inherit;font-size:var(--fsBadge);cursor:pointer}
#pageChat.posts .pc-del:active{opacity:.6}
#pageChat.posts .pc-empty,.cmt-list .pc-empty{padding:8px 0;text-align:center;font-size:var(--fsMeta);color:var(--tx-dim)}
#pageChat.posts .pc-form,.cmt-list .pc-form{display:flex;gap:6px;margin-top:8px}
/* 键盘弹起时把评论输入条**浮到键盘上方**（2026-09-18 第二版）：
   只靠"滚动把输入框顶上来"在真机上不是次次都灵（站长："不是次次都能看到输入框"）——
   滚动结果受键盘动画时序与页面当前位置影响。固定定位与滚动位置无关，永远看得见。
   --kb 由 app.js 按 visualViewport 算出（= 键盘高度），键盘收起时归零并去掉这个类。 */
/* 键盘弹起时把**整块评论框（列表+输入）**钉在可视区中间（2026-09-18 站长：
   "键盘弹起的瞬间就把它定在页面中间，让用户清晰看到输入框在哪"）。
   前两版都不行：只浮输入条 → 输入框和评论区分开、看着怪 ✗；改成滚动整条框 → 真机上不是次次灵，
   输入框会被顶出可视区 ✗。这次浮的是**整块 .pc-body**，所以既不会分开、也与滚动位置无关。
   `.kb-pin` 由 app.js 在"输入框聚焦 + 键盘弹起"时加上，失焦/键盘收起时摘掉（位置与占位都还原）。 */
/* ⚠️ 用 translateY(-50%) 垂直居中，**不要**在 JS 里"先量高度再算 top" ——
   刚加上 fixed 的那一刻浏览器还没重排，量到的是旧高度，算出来的位置会飘（实测跑到 top:12 ✗）。 */
#pageChat.posts .pc-body.kb-pin{position:fixed;z-index:48;margin:0;transform:translateY(-50%);background:linear-gradient(180deg,#1b1633,#141821);box-shadow:0 14px 34px rgba(0,0,0,.5)}
/* 「收起」只在钉住时出现：真机上"键盘收了、焦点还在"时事件与键盘高度都不可靠，
   必须给用户一条**确定能收回来**的路（2026-09-18 站长："恢复之后直接错位了 不回去了"） */
#pageChat.posts .pc-kbdone,.cmt-list .pc-kbdone{display:none;flex:0 0 auto;padding:7px 10px;background:transparent;border:1px solid var(--line-neutral);border-radius:var(--rSm);color:var(--tx-dim);font-family:inherit;font-size:var(--fsMeta);font-weight:700;cursor:pointer}
#pageChat.posts .pc-body.kb-pin .pc-kbdone{display:block}
#pageChat.posts .pc-input,.cmt-list .pc-input{flex:1;min-width:0;padding:7px 9px;background:var(--card);border:1px solid rgba(255,255,255,.12);border-radius:var(--rSm);color:var(--tx-title);font-family:inherit;font-size:var(--fsMeta);outline:none}
#pageChat.posts .pc-input::placeholder{color:#a7aab6}
#pageChat.posts .pc-send,.cmt-list .pc-send{flex:0 0 auto;padding:7px 12px;background:linear-gradient(180deg,#f7d489,var(--gold));border:1px solid rgba(246,197,106,.45);border-radius:var(--rSm);color:#3a2a06;font-family:inherit;font-size:var(--fsMeta);font-weight:800;cursor:pointer}
#pageChat.posts .pc-send:disabled{opacity:.6}

/* 帖子里的评论入口（2026-09-18 方案 A：点它开评论层，不再就地展开） */
#pageChat.posts .cmt-entry{margin-top:9px;padding-top:8px;border-top:1px solid var(--tint-line)}
#pageChat.posts .cmt-entry-btn{display:flex;align-items:center;gap:6px;width:100%;background:none;border:none;padding:2px 0;font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
#pageChat.posts .cmt-entry-btn .i{color:var(--tx-dim)}
#pageChat.posts .cmt-entry-t{font-size:var(--fsMeta);color:var(--tx-dim)}
#pageChat.posts .cmt-entry-btn:active .cmt-entry-t{color:var(--tx-body)}
#pageChat.posts .cmt-entry-ar{margin-left:auto;font-size:12px;color:var(--tx-dim)}

/* ===== 评论层（2026-09-18 方案 A 重做）=====
   为什么这么设计：输入框是面板的**最后一个流内元素**，面板高度直接跟随可视区（app.js 写 --cmt-top/--cmt-h）——
   键盘一弹起面板自己缩短，输入框就落在键盘上方 ✓。**不判断键盘、不用浮动定位、没有要还原的状态** ✓。
   拿不到可视区信息时（老内核）跑 app.js 里的兜底：聚焦时把输入框滚进面板中间。 */
.cmt-sheet{position:fixed;inset:0;z-index:62;opacity:0;transition:opacity .24s ease}
/* 关闭时**整层一起淡出**（2026-09-18 站长："点击关闭 在有键盘的情况下 消散很生硬并伴有残影"）：
   原来只有卡片在淡出，遮罩是瞬间消失的 ✗ —— 看着像一刀切、还留残影。整层淡出＋淡完再 hidden 就顺了 ✓。 */
.cmt-sheet.show{opacity:1}
.cmt-sheet[hidden]{display:none}
.cmt-mask{position:absolute;inset:0;background:transparent;touch-action:none}   /* 2026-09-18 站长：遮罩多余 → 去掉（只保留一层透明层用来接"点外面关闭"） */   /* 站内常规浓度：2026-09-18 站长判定"加深遮罩是多余的"（它只掩盖、不解决）✓ */
/* 悬浮卡片观感（2026-09-18 站长："那为何不做成弹窗？"）：四周留白 + 四角圆角 = 一眼是"弹窗"，
   但**仍然贴底** —— 这样"输入框落在键盘上方"依旧是布局保证的 ✓（居中的卡片必须知道键盘高度才能摆位 ✗，
   而那台设备读不到 ✗，正是前四版翻车的原因）。留白 8px：键盘弹起时它就在键盘上方 8px，看着是有意的。 */
/* 左右留白 18px、色调走站内令牌（2026-09-18 站长："左右缩一缩 色调淡一些"）：
   原来 8px 太贴边、底色 #171233→#0f1219 太重（几乎黑），与站内其它卡片不是一个调子。 */
/* 桌面端适配（2026-09-18 站长："在电脑端横着一屏 非常丑 你做不到适配吗？"）：
   `max-width` + `margin:0 auto` —— 宽屏下居中成一张卡片（与站内电影弹层的 480 同量级，取 520 给评论留宽），
   窄屏仍是"左右各 18px 的贴底卡片"，手机上一点不变 ✓。 */
/* 外层：只负责"在这块可视区里把卡片居中"（.cmt-top/--cmt-h 由 app.js 按可视区写），自身不可见 */
.cmt-panel{position:absolute;left:0;right:0;top:var(--cmt-top,22%);height:var(--cmt-h,78%);
  display:flex;align-items:center;justify-content:center;padding:0 18px;pointer-events:none}
/* 内层：真正的那张卡片 —— **高度自动**（内容少就是小框），到上限内部滚动 */
.cmt-card{width:100%;max-width:520px;max-height:100%;pointer-events:auto;
  display:flex;flex-direction:column;min-height:0;overflow:hidden;
  /* 面＝站内弹层同一套深色（暖深灰 → 冷深灰）：2026-09-19 站长"紫色盖紫色难看" ——
     原来用 --surf-grad（紫）✗，压在紫色页面上没有层次 ✓；换成图库/电影弹层那套深色，一眼分得开 ✓ */
  background:linear-gradient(165deg,rgba(246,197,106,.05) 0%,rgba(246,197,106,0) 32%),linear-gradient(180deg,#221f18 0%,#171d24 58%,#131a21 100%);
  border:1px solid rgba(246,197,106,.22);
  border-radius:14px;box-shadow:0 18px 44px rgba(0,0,0,.62);
  transform:translateY(20px);opacity:0;
  /* top/height 也走过渡：键盘动画期间可视区会一格一格地变，直接跟就会"抽" ✗（站长："页底还是有抽拉感"）。
     0.12s 让卡片**跟着滑**而不是跳；比键盘动画略短，不会明显滞后。 */
  /* top/height 的过渡要**比键盘事件间隔长**才平顺（2026-09-18 站长："还是上蹿下跳的"）：
     0.12s 太短 —— 键盘动画是一格一格来的，事件比过渡还密，于是每次都被打断、看着就是跳 ✗。
     改 0.2s + 缓出，并配合 app.js 里的 rAF 合并（一帧只写一次），跟随就变成"滑"。 */
  transition:transform .18s ease,opacity .16s ease}   /* 不再为 top/height 做过渡（站长：一抽一抽）——键盘引起的尺寸变化一步到位 ✓ */
.cmt-sheet.show .cmt-card{transform:none;opacity:1}   /* ⚠️ 必须指内层卡片：入场动画（translateY+opacity:0）在卡片上，指外层就会永远透明 = 「框没了」（2026-09-18 踩过） */
.cmt-head{flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--tint-line)}
.cmt-head b{flex:1 1 auto;min-width:0;font-size:13px;font-weight:800;color:var(--tx-title);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cmt-x{flex:0 0 auto;width:28px;height:28px;border-radius:999px;border:1px solid var(--line-neutral);background:var(--glass);color:var(--tx-body);font-family:inherit;font-size:14px;line-height:1;cursor:pointer}
.cmt-list{flex:0 1 auto;min-height:0;max-height:min(46vh,420px);overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:8px 12px}
.cmt-form{flex:0 0 auto;display:flex;gap:6px;padding:8px 12px calc(8px + var(--safeBot));border-top:1px solid var(--tint-line);background:rgba(255,255,255,.02)}
.cmt-input{flex:1;min-width:0;padding:9px 10px;background:var(--card);border:1px solid rgba(255,255,255,.12);border-radius:var(--rSm);color:var(--tx-title);font-family:inherit;font-size:var(--fsMeta);outline:none}
.cmt-input::placeholder{color:#a7aab6}
.cmt-send{flex:0 0 auto;padding:9px 14px;background:linear-gradient(180deg,#f7d489,var(--gold));border:1px solid rgba(246,197,106,.45);border-radius:var(--rSm);color:#3a2a06;font-family:inherit;font-size:var(--fsMeta);font-weight:800;cursor:pointer}
.cmt-send:disabled{opacity:.6}
/* 评论条目：沿用帖子里的视觉（那些规则限定在 #pageChat 内，这里另给一份） */
.cmt-list .pc-row:last-child{border-bottom:none}
/* 空态：不画盒子，安静一行字 */
#pageChat.posts #chatEmpty{background:none;border:none;padding:var(--sp4) 0;text-align:center}
#pageChat.posts #chatEmpty .chat-bub{background:none;border:none;padding:0}
#pageChat.posts #chatEmpty .t{font-size:var(--fsMeta);color:var(--tx-dim);font-weight:700}
#pageChat.posts #chatEmpty .c{font-size:var(--fsBody);color:var(--tx-body)}
/* 专家榜 */
#pageChat.posts .expert-rank{border:1px solid var(--tint-line);border-radius:var(--rMd);background:var(--surface)}
#pageChat.posts .expert-rank h4{font-size:var(--fsBody);color:var(--tx-title)}
#pageChat.posts .expert-rank .er{font-size:var(--fsBody);color:var(--tx-body);border-bottom-color:var(--tint-line)}

/* 未登录提示条：与论坛同一套层级（面 + 细线 + 金色主操作） */
#pageChat.posts .chat-lockbar{background:var(--surface);border:1px solid var(--tint-line);border-radius:var(--rMd);padding:var(--sp3)}
#pageChat.posts .chat-lockbar .tip{font-size:var(--fsMeta);color:var(--tx-body);line-height:1.7}
#pageChat.posts .chat-lockbar .tip b{color:var(--tx-title)}
#pageChat.posts .chat-lockbar button{border-radius:var(--rSm);font-size:var(--fsBody);font-weight:800}

/* 空态（真实 DOM 没有 #chatEmpty 的 id，按结构匹配）：安静一行字，不画盒子 */
#pageChat.posts #chatList .chat-bub{background:none;border:none;padding:0;box-shadow:none}
#pageChat.posts #chatList .chat-bub .t{font-size:var(--fsMeta);color:var(--tx-dim);font-weight:700}
#pageChat.posts #chatList .chat-bub .c{font-size:var(--fsBody);color:var(--tx-body)}
/* 回底部悬浮钮：并入 token */
#pageChat.posts #chatDown{font-size:var(--fsMeta);border-radius:var(--rPill);border-color:var(--tint-line);background:var(--surface-2);color:var(--tx-title)}

/* 卡片头部：身份靠左、元信息靠右成组，整体压薄 */
#pageChat.posts .post-head{gap:6px;margin-bottom:6px}
#pageChat.posts .post-head .chat-ava{width:26px;height:26px;font-size:12px}
#pageChat.posts .post-name{max-width:140px}
#pageChat.posts .post-qihao{margin-left:auto}          /* 期号起，右侧元信息整体靠右 */
#pageChat.posts .post-time{margin-left:2px}            /* 时间紧跟期号/置顶，不再独占右侧 */
#pageChat.posts .chat-msgrow{padding:11px 12px}
/* 无正文的稿件：头部下面直接是看好行，不画分隔线、不加间距 */
#pageChat.posts .chat-msgrow.no-body .post-picks{margin-top:2px}
#pageChat.posts .chat-msgrow.no-body .pk-line{border-top:none;padding-top:0;margin-top:4px}

/* 分类：今日已投的玩法标灰并注明 */
#pageChat.posts .pick-tab.used{opacity:.5}
#pageChat.posts .pick-tab .used-tx{font-style:normal;font-size:9px;margin-left:4px;color:var(--tx-dim);border:1px solid var(--tint-line);border-radius:4px;padding:0 3px}

/* ===== 卡片层次：预测是主角，身份次之，状态最轻 ===== */
/* 头部：等级去掉盒子（彩色纯文字），期号/置顶降为纯文字，时间已是纯文字 */
/* 只对"等级"徽章去底色；身份徽章（VIP / 认证专家 / 站长）保留实心样式，否则深色文字会看不见 */
#pageChat.posts .chat-lv.lv1,#pageChat.posts .chat-lv.lv2,#pageChat.posts .chat-lv.lv3,#pageChat.posts .chat-lv.lv4,#pageChat.posts .chat-lv.lv5{background:none;border:none;padding:0;font-size:var(--fsMeta);font-weight:800;line-height:1.5}
#pageChat.posts .post-qihao{background:none;border:none;padding:0;font-size:var(--fsMeta);font-weight:700;color:var(--tx-dim)}
/* 置顶＝站内金色胶囊（2026-09-20 站长：置顶胶囊的背景太小、没有全覆盖这两个字）：
   原来是 background:none;border:none;padding:0（想做成纯文字），却被上面绿族的 !important 盖回一抹
   **没有内边距**的底 ⇒ 圆角切字。现在按站内既有的金色胶囊配方写（深色主题里 .post-qihao/.post-pin 就是它）：
   金底 + 金描边 + 金色字 + 内边距 1px 7px ⇒ 底色把两字完整包住、圆角不再切笔画 ✓ */
#pageChat.posts .post-pin{background:var(--gold-line);border:1px solid var(--gold-line-strong);border-radius:var(--rSm);padding:1px 7px;font-size:var(--fsMeta);font-weight:800;color:var(--gold)}
#pageChat.posts .post-head{gap:7px}
/* 预测行：值大而亮，标签小而暗 */
#pageChat.posts .post-picks{margin-top:10px;gap:6px;align-items:center}
#pageChat.posts .pk-lb{font-size:var(--fsMeta);color:var(--tx-dim);letter-spacing:.3px}
#pageChat.posts .pk-sep{color:#4a4360}
#pageChat.posts .pk{font-size:13px;font-weight:700;padding:3px 9px;border-radius:var(--rSm);background:var(--card-2);border:1px solid rgba(255,255,255,.07);color:var(--tx-body)}
#pageChat.posts .post-picks > .pk{font-size:16px;font-weight:800;padding:2px 10px;color:var(--tx-title)}   /* 生肖是主角：字更大 */
#pageChat.posts .pk.hit{background:rgba(74,222,128,.12);border-color:rgba(74,222,128,.36);color:#86efac}
#pageChat.posts .pk.miss{opacity:.4}
/* 状态：右对齐，最轻 */
#pageChat.posts .hit-tag{margin-left:auto;font-size:var(--fsMeta);font-weight:700;padding:2px 8px;border-radius:var(--rSm);border:1px solid transparent;background:none;color:var(--tx-dim)}
#pageChat.posts .hit-tag.y{background:rgba(74,222,128,.12);border-color:rgba(74,222,128,.28);color:#86efac}
#pageChat.posts .hit-tag.n{color:var(--tx-dim)}
/* 其他玩法行：与生肖行用间距+细线分区 */
#pageChat.posts .pk-line{margin-top:8px;padding-top:8px;gap:6px}

/* 期号条：与图系弹窗同一套组件；有投稿的期加小圆点（不再显示稿数） */
#pageChat.posts .post-period{align-items:center;gap:var(--sp2);overflow:visible}   /* 不裁剪：否则年份下拉只露 10px */
#pageChat.posts .post-period .chips{gap:var(--sp2)}
#pageChat.posts .post-period .chip{position:relative;padding:5px 12px;font-size:var(--fsBody);border-radius:var(--rMd)}
#pageChat.posts .post-period .chip.has::after{content:"";position:absolute;left:50%;bottom:3px;width:3px;height:3px;margin-left:-1.5px;border-radius:50%;background:rgba(246,197,106,.75)}
#pageChat.posts .post-period .chip.active.has::after{background:rgba(26,20,5,.55)}
#pageChat.posts .post-period .year-btn{padding:5px 10px;font-size:var(--fsBody);border-radius:var(--rMd);font-weight:800}

/* 折叠的 <details> 必须真正隐藏内容：Chromium 用 ::details-content 的 content-visibility 隐藏，
   一旦被其它样式组合影响，折叠内容仍会被渲染并溢出压到后面的块（实测规则弹窗 750px 内容压住期号条/开奖条） */
details:not([open]) > *:not(summary){display:none}

/* ===== 投稿区：输入 / 选择 / 操作 三层，用线条分区 ===== */
#pageChat.posts .post-inputwrap{position:relative;display:block}
#pageChat.posts .post-inputwrap textarea{padding-bottom:46px;display:block}      /* 给左下角按钮留位；display:block 去掉 inline 基线带来的 ~6px 缝隙（否则"选肖"那行上下不匀） */
#pageChat.posts .post-inputwrap .post-imgbtn{position:absolute;left:6px;bottom:6px;width:32px;height:32px;border-radius:50%;border:none;background:var(--card-2);color:var(--tx-body);display:flex;align-items:center;justify-content:center;padding:0;transition:background .15s,color .15s}
#pageChat.posts .post-inputwrap .post-imgbtn:hover:not(:disabled){background:rgba(255,255,255,.06);color:var(--tx-title)}
#pageChat.posts .post-inputwrap .post-imgbtn:active:not(:disabled){background:rgba(255,255,255,.1)}
#pageChat.posts .post-inputwrap .post-imgbtn:disabled{opacity:.4}
#pageChat.posts .post-inputwrap .post-imgbtn svg.i{display:block}   /* 原来写死 20px + stroke 1.7 */
#pageChat.posts .post-imgprev{margin-bottom:0}
/* 第二层：选择区 */
/* ⚠️ 上下要匀（2026-09-18 站长："我说的是上下不匀"）：实测这一行**上面 31px、下面 18px** ✗ ——
   输入区下方本来就自带约 11px 余量，这里再叠 margin-top 8 + padding-top 12 就偏了。
   去掉外边距、内边距收到 8 → 上下各约 19/18px，才是"夹在分隔线里居中"的观感。 */
#pageChat.posts .pick-panel{border-top:1px solid var(--tint-line);margin-top:0;padding-top:8px}
/* 选肖面板默认折叠（2026-09-18 站长）：头部一行常显＝开关 + 已选摘要；内容收在 .pick-body 里。
   摘要留在头部是关键 —— 收起时也知道自己选了什么，不必为了确认再展开一次。 */
#pageChat.posts .pick-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
#pageChat.posts .pick-toggle{display:flex;align-items:center;gap:4px;flex:0 0 auto;background:none;border:none;padding:2px 0;font-family:inherit;cursor:pointer}
#pageChat.posts .pick-toggle .pick-h{font-size:var(--fsMeta);font-weight:700;color:var(--tx-dim)}
#pageChat.posts .pick-panel.open .pick-toggle .pick-h{color:var(--tx-body)}
#pageChat.posts .pick-toggle .pick-ar{font-size:10px;color:var(--tx-dim);transition:transform .18s}
#pageChat.posts .pick-panel.open .pick-toggle .pick-ar{transform:rotate(180deg)}
#pageChat.posts .pick-head .pick-sum{flex:1 1 auto;min-width:0;margin:0}
#pageChat.posts .pick-body{display:none;margin-top:var(--sp2)}
#pageChat.posts .pick-panel.open .pick-body{display:block}
/* 第三层：操作区 */
#pageChat.posts .post-compose-bar{display:flex;align-items:center;flex-wrap:wrap;row-gap:6px;gap:var(--sp2);border-top:1px solid var(--tint-line);margin-top:var(--sp2);padding-top:var(--sp3)}
#pageChat.posts .post-links{flex:1 1 auto;flex-wrap:nowrap;min-width:0;justify-content:flex-start;gap:6px}
#pageChat.posts .post-actions{flex:0 0 auto;display:flex;flex-wrap:nowrap;align-items:center;gap:8px;margin-left:auto}
/* 窄屏（安卓字大）收紧一档：保证「我的投稿 · 联系站长」与两个按钮各占一行且不拆开 */
@media (max-width:430px){
  #pageChat.posts .post-link{font-size:10px}
  #pageChat.posts .post-links{gap:4px}
  #pageChat.posts .chat-sendbtn{padding:0 14px;font-size:14px}
  #pageChat.posts .chat-sendbtn.hidebtn{padding:0 9px;font-size:12px}
  #pageChat.posts .chat-sendbtn.hidebtn .ico{display:none}
  #pageChat.posts .post-actions{gap:6px;margin-left:auto}
  #pageChat.posts .post-actions{gap:6px}
}
#pageChat.posts .post-link{font-size:var(--fsBody);color:var(--tx-body)}
#pageChat.posts .post-dot{color:var(--tx-dim)}
#pageChat.posts .chat-sendbtn{margin-left:0}

#pageChat.posts .post-hide-note{margin-top:var(--sp2);font-size:var(--fsMeta);color:var(--tx-body);background:var(--t1);border:1px solid var(--t2);border-radius:var(--rSm);padding:6px 9px;line-height:1.6}
#pageChat.posts .post-hide-note b{color:var(--gold)}

.post-hidden .ph-mosaic{display:flex;flex-direction:column;gap:6px;margin:2px 0 9px}
.post-hidden .ph-mosaic i{display:block;height:13px;border-radius:4px;background-image:repeating-linear-gradient(90deg,var(--t1) 0 7px,var(--t1) 7px 14px),repeating-linear-gradient(0deg,var(--t2) 0 7px,rgba(255,244,224,0) 7px 14px)}
.post-hidden .ph-unlock{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:9px}
.post-hidden .ph-unlock>span{min-width:0;overflow-wrap:break-word}
.post-hidden .ph-unlock button{white-space:nowrap;flex:0 0 auto}
.post-hidden .ph-tip{font-size:11px;color:var(--tx-weak)}
.post-hidden .ph-tip.free{color:#4ade80;font-weight:700}
.post-hidden .ph-cats{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-start;margin:0 0 2px}
.post-hidden .ph-cats span{font-size:11px;font-weight:700;color:#f3d79a;background:rgba(246,197,106,.08);border:1px solid rgba(246,197,106,.42);border-radius:8px;padding:2px 9px}

/* 解锁瞬间：淡入 + 轻微上浮，另有 1 次高亮脉冲 */
#postToast{position:fixed;left:50%;bottom:110px;transform:translate(-50%,10px);z-index:80;max-width:86vw;padding:9px 16px;border-radius:12px;background:rgba(30,24,54,.96);border:1px solid rgba(246,197,106,.45);color:#f4ead2;font-size:13px;font-weight:700;box-shadow:var(--sh-3);opacity:0;pointer-events:none;transition:opacity .22s ease,transform .22s ease}
#postToast.show{opacity:1;transform:translate(-50%,0)}
#pageChat.posts .chat-msgrow.just-unlocked{animation:unlockPulse 1.1s ease-out}
@keyframes unlockPulse{0%{box-shadow:0 0 0 2px rgba(74,222,128,.45)}100%{box-shadow:0 0 0 0 rgba(74,222,128,0)}}

/* 自绘弹窗（替代原生 alert/confirm） */
.ui-mask{position:fixed;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(8,6,16,.62);opacity:0;transition:opacity .18s ease}
.ui-mask.show{opacity:1}
.ui-card{width:100%;max-width:330px;background:linear-gradient(180deg,#1c1633,#141021);border:1px solid rgba(246,197,106,.45);border-radius:12px;padding:18px 16px 14px;box-shadow:var(--sh-3);transform:translateY(10px) scale(.98);transition:transform .18s ease}
.ui-mask.show .ui-card{transform:none}
.ui-msg{font-size:13.5px;line-height:1.75;color:var(--tx-soft-strong);white-space:pre-wrap;word-break:break-word}
.ui-btns{display:flex;gap:10px;margin-top:16px}
.ui-btn{flex:1;white-space:nowrap;padding:10px 0;border-radius:11px;border:1px solid var(--t2);background:var(--t1);color:var(--tx-soft);font-size:13.5px;font-weight:700;cursor:pointer}
.ui-btn.primary{border:none;background:linear-gradient(115deg,#f6c56a,var(--gold-deep));color:#1a1405;font-weight:800}
.ui-input{width:100%;margin-top:12px;padding:10px 12px;background:var(--card);border:1px solid rgba(255,255,255,.12);border-radius:11px;color:#fff;font-size:13.5px;font-family:inherit;outline:none;box-sizing:border-box}
.ui-input:focus{border-color:var(--heat-1-line)}
.ui-input::placeholder{color:#a7aab6}

#pageChat.posts #chatNeedLogin{text-align:center}
#pageChat.posts #chatNeedLogin .chat-bub{background:none;border:none;padding:6px 0}
#pageChat.posts #chatNeedLogin .t{font-size:var(--fsMeta);color:var(--tx-dim);font-weight:700}
#pageChat.posts #chatNeedLogin .c{font-size:var(--fsBody);color:var(--tx-body);margin:6px 0 12px}
#pageChat.posts #chatNeedLogin button{padding:9px 22px;border-radius:var(--rSm);border:1px solid rgba(246,197,106,.45);background:linear-gradient(115deg,var(--gold),var(--gold-deep));color:var(--tx-invert);font-size:var(--fsBody);font-weight:800;cursor:pointer}

/* 今日任务（会员中心） */
.acc-task{margin:10px 0 4px;padding:10px 12px;border:1px solid rgba(246,197,106,.26);border-radius:12px;background:rgba(255,255,255,.02)}
.acc-task-h{font-size:12px;font-weight:800;color:#f4ead2;margin-bottom:6px}
.acc-task-row{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px dashed rgba(255,255,255,.07)}
.acc-task-row:last-child{border-bottom:none}
.acc-task-t{font-size:12px;color:#e9ebf2;font-weight:700;flex:0 0 auto}
.acc-task-s{font-size:11px;color:var(--tx-dim);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acc-task-s.on{color:#86efac}
.acc-task-b{flex:0 0 auto;padding:5px 10px;border-radius:9px;border:1px solid rgba(246,197,106,.45);background:rgba(246,197,106,.14);color:#f6c56a;font-size:11px;font-weight:700;font-family:inherit;cursor:pointer}
/* 新人引导 */
.ob-card .ob-t{font-size:15px;font-weight:800;color:#f6c56a;margin-bottom:8px}
.ob-card .ob-c{font-size:13px;line-height:1.85;color:#e9ebf2}
.ob-card .ob-c b{color:#f6c56a}
.ob-card .ob-dots{display:flex;gap:6px;justify-content:center;margin:14px 0 2px}
.ob-card .ob-dots i{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.18)}
.ob-card .ob-dots i.on{background:#f6c56a}

/* 应用内（APK 壳）：隐藏「添加桌面」——应用本身已经在桌面上，这个按钮在壳里是多余的 */
html.in-app #installBtn{display:none!important}

/* 小程序（Telegram 内）：同样隐藏「添加桌面」——已经是在 TG 里打开的应用，
   "加到主屏幕/下载 APP"这两条路在 TG 里都不成立（2026-09-18 站长要求） */

html.in-tg #installBtn{display:none!important}

/* 下拉刷新的提示胶囊（固定在顶部，不推动内容） */
.ptr-pill{position:fixed;left:50%;top:10px;transform:translate(-50%,-160%);opacity:0;z-index:60;pointer-events:none;
  background:rgba(35,29,15,.96);color:#f6c56a;border:1px solid rgba(246,197,106,.38);border-radius:999px;
  padding:7px 16px;font-size:13px;font-weight:700;white-space:nowrap;box-shadow:var(--sh-2);
  transition:transform .18s ease,opacity .18s ease}
.ptr-pill.on{transform:translate(-50%,0);opacity:1}
.ptr-pill.busy{transform:translate(-50%,0);opacity:1;color:var(--gold);border-color:var(--t3)}

/* 应用内长按图片：站点自绘的菜单项（避免原生弹窗，保持与网站一致的观感） */
.img-menu{display:flex;flex-direction:column;gap:8px}
.img-menu-item{display:block;width:100%;text-align:center;padding:13px 14px;border-radius:12px;cursor:pointer;
  background:rgba(246,197,106,.08);border:1px solid rgba(246,197,106,.22);color:#f6c56a;font-size:14.5px;font-weight:700;
  font-family:inherit;-webkit-tap-highlight-color:transparent}
.img-menu-item:active{background:rgba(246,197,106,.22)}

/* 应用内更新的进度界面（站点自绘，不用原生弹窗） */
.upd-box{padding:2px 2px 4px}
.upd-ver{font-size:13.5px;color:#e9ebf2;margin-bottom:10px;text-align:center}
.upd-bar{height:10px;border-radius:6px;background:rgba(255,255,255,.1);overflow:hidden;border:1px solid rgba(246,197,106,.22)}
.upd-bar i{display:block;height:100%;width:0;border-radius:6px;background:linear-gradient(90deg,#f6c56a,var(--gold-deep));transition:width .18s linear}
.upd-pct{text-align:center;color:#f6c56a;font-weight:800;font-size:13px;margin:8px 0 6px}
.upd-note{color:var(--tx-dim);font-size:12px;line-height:1.7;text-align:center;margin-bottom:10px}

/* 应用内禁止"长按图片把图拖起来跟手"（WebView 默认会拖拽图片出半透明影子）；
   只在 in-app 生效，浏览器里保留"拖图另存/拖到桌面"的能力 */
html.in-app img{-webkit-user-drag:none;user-drag:none;-webkit-touch-callout:none}
html.in-app body{-webkit-tap-highlight-color:transparent}
/* 应用内：整页默认可长按选择 → 长按就弹系统"复制/全选/搜索"工具栏，很浏览器、不像 App。
   外壳一律关掉，只在**真正要复制**的地方打开：表单控件、帖子正文、精选文字稿、
   以及弹层内容（邀请链接那种"长按手动复制"就发生在弹层里）。
   浏览器里不动（那里长按选择是正常行为）；图片另有上面那条规则。 */
html.in-app, html.in-app *{-webkit-user-select:none;user-select:none}

/* 语义令牌（2026-09-14 修复：这块的 :root{ 与结尾 } 曾被一次错误的拼接吃掉，导致全部令牌失效）*/
:root{
  /* ===== 语义令牌（2026-09-13 按线上实测用量定的，不是凭印象）=====
     来源：论坛页 368 个可见元素的 color / background / border 用量普查 ——
       正文 var(--tx-body) 出现 298 处（最多）、卡片底 var(--card) 256 处、
       金色描边 rgba(246,197,106,.14) 256 处、金色 #f6c56a 6 处 + 实心金 5 处。
     本步只新增变量、不改任何现有规则：观感必须与之前逐项一致（用同一套普查验收）。
     后续才做「把字面量换成 var(--x)（只换写法不换值）」→「值收敛」→「换肤 + 立体化」。 */
  /* 表面：从最底到最浮 */
  --bg:#101418;                 /* 页面底（body 渐变收尾色）*/
  --card:rgba(255,255,255,.04) !important; /* 卡片/稿件底（半透明叠加，用量最大；浅色主题下必须换成实色）*/
  --surface:#1b1a17 !important;          /* 卡片 L*12.4 **C=16.1**（上一版 #1f1940 彩度 28.3 → 整片发紫）；与页面底差 6.3 */
  --surface-2:#262320 !important;        /* 浮起控件 L*18.1 **C=20.9**（上一版 #2b2452 彩度 31.9）；与卡片差 5.7 */
  --well:#141311 !important;             /* 凹槽（输入框）L*7.9 **C=10.1**（上一版 #161029 彩度 18.8）；比卡片低 4.5 */
  --line-neutral:rgba(255,255,255,.07) !important;   /* 中性描边唯一档：金只留给选中与主按钮 */
  --surface-3:#22201c !important;        /* 更高一档：浮层菜单/下拉（L*16.6，与 e2 差 4.0 → 层级看得见）*/
  --glass:rgba(16,14,12,.72) !important;    /* 吸顶/浮层底（原 rgba(10,8,16)＝hue255 紫黑 ✗ 2026-09-24 去紫换中性） */
  /* 文字：按实测层次命名（标题最亮、正文居中、辅助更暗）*/
  --tx-title:#ffffff !important;             /* 主角文字（原论坛 --t1，纯白）*/
  --tx-body:#c4c7d0 !important;
  --tx-dim:#9aa0ab !important;
  --tx-invert:#1a1405 !important;          /* 实心金底上的字 */
  /* 金 / 紫 */
  --gold:#f6c56a !important;
  --gold-strong:#f6c56a !important;
  --gold-line:rgba(246,197,106,.14) !important;
  --gold-line-strong:rgba(246,197,106,.45) !important;
  --tint-soft:var(--t1) !important;
  --tint-line:var(--t2) !important;
  --white-line:rgba(255,255,255,.13);
  --inner-hi:inset 0 1px 0 rgba(255,255,255,.06) !important;   /* 唯一的“内高光”写法 */
  /* 阴影只留三档：贴纸 / 浮起 / 浮层 */
  --sh-1:0 2px 8px rgba(0,0,0,.35) !important;
  --sh-2:0 4px 14px rgba(0,0,0,.5) !important;
  --sh-3:0 10px 36px rgba(0,0,0,.55) !important;
  /* 语义色：冻结，永不参与换肤（未中 / 波色）*/
  --miss:#f87171 !important;
  --wave-red:#c0392b; --wave-blue:#2563c9; --wave-green:#1e9e4f;
  /* 第 2 步按"CSS 实际用量"补的令牌（渲染普查漏了登录后才出现的那些）*/
  --tx-weak:#918d86 !important;
  --tx-faint:#7a8794;          /* 最弱一档（页脚/图系页的老灰 var(--tx-faint)、var(--tx-faint) 都并到这里）*/
  --tx-soft:#d7d2c7 !important;            /* 浅紫一族两档（会员中心/规则弹窗的说明文字）*/
  --tx-soft-strong:#f2eee4 !important;
  --gold-dim:#a8955f !important;
  --gold-light:#f7d98b !important;       /* 金渐变的高光端（品牌按钮/热格最热档共用）*/
  /* 金的角色分工：**实心金只给动作与选中**；数据高亮走下面三档具名色，不再散落一堆 alpha */
  --heat-1:rgba(246,197,106,.22) !important;
  --heat-1-line:rgba(246,197,106,.45) !important;
  --heat-2:rgba(246,197,106,.55) !important;
  --heat-3:linear-gradient(180deg,#f7d98b,#e8a33d) !important;          /* 暗金：图系页链接、老页面的金色次级文字 */
  --card-2:rgba(255,255,255,.05) !important;  /* 卡片之上再一档叠加（原 .045/.05/.055 并来）*/           /* 论坛用了 10 次，登录后才渲染，普查没抓到 */
  --page-solid:#0b0d16;                    /* html/body 兜底底色 */
  --hdr-solid:#100d1e;                     /* 顶栏纯色兜底（纸主题下变纸色）*/
  --t1:var(--t1);   /* 淡色叠加 4 档：淡底 / 淡边 / 淡字都走它，换主题只改这 4 行 */
  --t2:var(--t2);
  --t3:var(--t3);
  --t4:var(--t4);
  --hdr-bg:linear-gradient(180deg,rgba(20,16,32,.96) 0%,rgba(14,12,24,.94) 100%);   /* 顶栏/底栏底色：安卓性能块要的"近不透明纯色" */
  --tabbar-bg:linear-gradient(180deg,rgba(20,16,32,.96) 0%,rgba(14,12,24,.94) 100%);
  --accent:var(--gold);         /* 强调色（2026-09-19 站长："紫色现在看着太浓重了" → 全站去紫，金色成为唯一强调色）*/
  --gold-deep:#e8a33d !important;         /* 金色渐变尾 */
  --hit:#4ade80 !important;               /* 命中（语义，冻结）*/
  --ff:'AkySerifSC',"Songti SC","STSong","Songti TC","STSongti-SC-Regular","Noto Serif CJK SC","Source Han Serif SC","Microsoft YaHei","SimSun","宋体",serif; /* 全站字体栈。iOS 上 "Songti SC" 匹配不上、靠 "STSong"（PostScript 名）命中——2026-09-13 撤销自带字体时误删了这个别名，导致 iOS 回黑体。别名一律保留。
   2026-09-21（有人反馈"页面不清晰"）：自带宋体 webfont 撤销后纯靠系统字体，**Windows 没有宋体族 ⇒ 落到 SimSun**
   —— 1 倍屏笔画细、粗体是系统合成的假粗、高 DPI 缩放下发虚 ✗，而 Mac/iOS 命中 Songti 看不出问题 ✗（所以"谁反馈、谁看不出"正好是平台的差别 ✓）。
   修法＝在 `"SimSun"` 前插 `"Microsoft YaHei"`：**Windows 变雅黑＝锐 ✓，Mac/iOS/安卓的解析结果一字不变** ✓（它们都没有这个字体 ⇒ 列表往后走 ✓）。
   SimSun 仍留在后面兜底（极老、没装雅黑的 Windows ✓）。 */

  --t-fs-meta:11px;      /* 元信息：日期、计数、辅助说明 */
  --t-fs-body:14px;      /* 正文 */
  --t-fs-title-sm:15px;  /* 列表标题（图系条目） */
  --t-fs-title:16px;     /* 页面/大标题 */

  /* 形状/间距标尺提到全局：原先只在 #pageChat.posts 里定义，统计页的「本期速览」卡（在论坛作用域之外）取不到 → border-radius/margin 整条静默失效变直角（2026-09-13 站长指出）。
     取值与论坛页里那套完全一致；论坛域内的原定义保留不动。 */
  --rSm:8px;--rMd:12px;--rPill:999px;--sp1:4px;--sp2:8px;--sp3:12px;--sp4:16px;
  /* 「面」的唯一定式：卡片/面板/浮动栏都用它（色相 252→255°，两端只差明度）。
     原先统计面板用渐变、速览卡平涂 #231d33、底部 tab 栏是 #171d24（蓝灰 210°，跑出色系）—— 三套写法并存；
     2026-09-19 去紫：色相统一到暖中性（与顶栏 rgba(35,29,15) 同族），中间几档紫面全部换成暖黑。 */
  --surf-grad:linear-gradient(180deg,#1d1c18 0%,#171613 100%) !important;
}

/* 全站固化（2026-09-15 站长："其实应该除了精选里的发送文字 其他的文字都要长按不出复制工具栏"）：
   默认一切都不可选 —— 浏览器与 App 同一套；能长按复制的**只有精选文字稿**（墙上的 .wtxt 与全文弹层的 .wall-text）和表单控件。
   评论 .pc-text / 论坛正文 .post-body / 聊天 .chat-msgrow / 弹层其余文字都跟着固化；
   邀请链接照旧走「复制链接」按钮（兜底弹窗把链接放进 input，输入框仍可选中 → 手动复制那条路不断）。 */
html, html *{-webkit-user-select:none;user-select:none}
.wtxt, .wall-text, input, textarea, select, [contenteditable],[contenteditable="true"],[contenteditable="plaintext-only"]{-webkit-user-select:text!important;user-select:text!important}

/* ============================================================
   设计令牌（第一批）：字号/间距/圆角/文字层级/金色
   约定：新样式一律用这些变量；旧样式逐步收敛（不改信息架构、不动广告位）
   ============================================================ */


/* ------------------------------------------------------------
   图系页 = 「索引」形态：两列密排、标题优先、缩略图小而清晰
   （与精选的「画廊」形态刻意区分；广告区 #entryBanner 完全不动）
   ------------------------------------------------------------ */
#typeList .card{
  background:var(--card);
  border:1px solid var(--line-neutral);
  border-radius:var(--rMd);
  padding:var(--sp3);
  gap:10px;
  box-shadow:none;
}
#typeList .card::before{opacity:.3}            /* 左侧"新鲜度"色条弱化，不与标题抢眼 */
#typeList .card img{
  width:56px;height:56px;object-fit:cover;
  border-radius:var(--rSm);flex:0 0 56px;
}
#typeList .card .meta{min-width:0}
#typeList .card .name{
  font-size:var(--t-fs-title-sm);
  font-weight:700;
  color:var(--tx-title);
  line-height:1.35;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;white-space:normal;overflow-wrap:anywhere;
}
#typeList .card .sub{
  font-size:var(--t-fs-meta);
  color:var(--tx-dim);
  margin-top:var(--sp1);
}
/* 键盘选中的那张卡（2026-09-22 站长："弹窗没点开之前 左右也要有方向键 tg 上也是很多人用电脑的"）。
   焦点圈用**主题变量** `--gold-deep`（深/浅/纸三套主题里各有定义 ✓）⇒ 不写死颜色、跟着主题走 ✓。
   ⚠️ 只用 outline（不影响布局）：卡片是两列网格，动 border/尺寸会让整行重排 ✗。 */
#typeList .card.kb-sel{outline:2px solid var(--gold-deep);outline-offset:1px}
#typeList .card.kb-sel .name{color:var(--gold-deep)}

/* ------------------------------------------------------------
   安卓性能：去掉实时毛玻璃（backdrop-filter）
   实测（CPU 限速 4 倍、同一段滚动）最长帧 131ms → 关掉毛玻璃后 7ms。
   原因：页头有个永不停止的脉冲动画，每次重绘都要重算背后的 20px 实时模糊。
   这里改成"接近不透明的纯色/渐变"——视觉上几乎无差，安卓/App 内 WebView 明显不再卡滞。
   ------------------------------------------------------------ */
header{
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  /* 2026-09-19：这里原来写死深色（安卓性能优化要"接近不透明的纯色"）→ 改用具名变量，
     两套主题都能跟着走（纸上即纸色、暗色主题即深色）。 */
  background:var(--hdr-bg)!important;
}
.tabbar{
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  background:var(--tabbar-bg)!important;   /* 同 header：改用变量，随主题走 */
}
/* .stickwrap（搜索条，2026-09-25 补漏）：它 sticky 在页头正下方、压在滚动内容上 ——
   12/16px 实时模糊意味着**滚动期间每一帧都要重算背后整片区域**，正是上面那族(131ms→7ms)的漏网成员。
   桌面 Chrome 限速 A/B 量不出差（GPU 不一样 ✗ 不能拿桌面 GPU 仿真否定安卓真机的模糊代价），
   安卓/App 的 WebView GPU 正吃这个 —— 与页头同一治法：关模糊、用主题变量垫近不透明底。 */
.stickwrap{
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  background:var(--hdr-bg)!important;   /* 与页头连成一条带，同主题变量 */
}
.sheet .top,
.f3-gotop,
.wall-item .badge,
.mask,
.hdr-btn{
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
}

/* 恢复紧凑头部的顺滑过渡：本轮判定——它只在"滚动状态切换"时运行一次（约 250ms），
   代价远小于"持续运行"的脉冲动画；而顺滑收拢是看得见的质感，故予以保留。 */
header{transition:min-height .25s ease}
header .logo{transition:width .25s ease,opacity .25s ease,box-shadow .25s ease}
header .tagline{transition:max-height .25s ease,opacity .25s ease}

/* 论坛图片懒加载占位：未取图前按 3:4 占位（实测用户上传图多为 0.71~0.75 竖图），
   避免消息流在图片到达时高度跳变。图系是固定 56px 方图、精选由行内 aspect-ratio 撑住，都不需要这条。 */
#pageChat.posts .post-img img[data-lazy]{aspect-ratio:3/4;background:var(--card)}

/* ===== 精选页：归一 + 杂志感（2026-09-12）=====
   背景：#wall 内实测描边 10 种、阴影 3 种且每格两层（黑 + 金辉光），金色还有两个色值
   （240,185,11 / 246,197,106）——"机器感"来自这些近重复值。这里统一成一个描边 + 一层阴影。
   另修两处真缺陷：编号胶囊压住首行文字、文字格被裁却无任何提示。 */
#wall .wcell{
  background:linear-gradient(180deg,#141020 0%,#0f1219 100%);
  border:1px solid rgba(255,255,255,.07);
  box-shadow:var(--sh-1);
  border-radius:12px;
}
/* 图没到时格子里转圈，图到了淡入（站长："一段段加载图，非常违和"）。
   只给 .ld 加动画、不把基础态设成透明 —— JS 万一没跑也不会把图锁在透明里（失败模式安全）。 */
#wall .wcell{position:relative}
/* 居中**不能**用 transform：.spin 的 @keyframes rot 只写了 to{rotate(360deg)}，
   隐式起点会取本元素的 transform —— 于是起点是 translate(-50%,-50%)、终点是 rotate(360deg)，
   浏览器改做矩阵插值，转圈时整个元素被甩得左右漂移（站长："加载转圈会左右漂移"）。
   改成 inset:0 + margin:auto 居中（不写 transform），动画就是从单位矩阵干净地旋转。 */
#wall .wcell .wspin{position:absolute;left:0;right:0;top:0;bottom:0;margin:auto;width:18px;height:18px;border-width:2px;vertical-align:0}
#wall .wcell.ld .wspin{display:none}
#wall .wcell img.ld{animation:wallIn .28s ease}
@keyframes wallIn{from{opacity:.35}to{opacity:1}}
/* 文字格当"引言块"：左侧金线 + 顶部留出编号带（30px）→ 编号不再压字，
   并且一眼能把"话"和"图"区分开——杂志感主要来自类型区分，不是加装饰。 */
#wall .wcell-txt{
  background:linear-gradient(180deg,#181326 0%,#10131c 100%);
  border:1px solid rgba(255,255,255,.07);
  border-left:2px solid rgba(246,197,106,.45);
  padding:30px 14px 12px;
}
#wall .wcell-txt .wtxt{font-size:13.5px;line-height:1.85;color:#e2e5ee;max-height:calc(1.85em * 8)}
#wall .wcell-no{
  background:linear-gradient(90deg,#f6c56a,var(--gold-deep));
  box-shadow:var(--sh-1);
  border-radius:6px;font-size:11px;font-weight:800;padding:1px 7px;color:#1a1405;
}
/* 被裁的文字格：底部渐隐 + 「全文 ›」（由 JS 只给真的被裁的格子加 .clipped） */
#wall .wcell-txt.clipped{position:relative}
#wall .wcell-txt.clipped::after{
  content:'';position:absolute;left:2px;right:1px;bottom:1px;height:58px;
  border-radius:0 0 12px 12px;pointer-events:none;
  background:linear-gradient(180deg,rgba(16,19,28,0),rgba(16,19,28,.95));
}
#wall .wcell-txt.clipped .more{
  position:absolute;right:11px;bottom:9px;z-index:3;
  font-size:11px;font-weight:600;color:var(--gold);pointer-events:none;
}
/* 通栏特写（每天限量 2~4 张最宽的图）与通栏收尾条 */
#wall .wfeat{margin:0 0 12px}
#wall .wfeat .wcell{width:100%}
#wall .wfeat .wcell img{width:100%;display:block;height:auto}
#wall .wall-tail{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  margin:2px 0 18px;padding:12px 14px;border-radius:12px;
  border:1px solid rgba(246,197,106,.14);background:rgba(24,19,38,.6);
  font-size:13px;color:var(--tx-dim);
}
#wall .wall-tail b{color:var(--gold);font-weight:600}
/* 公告与日期胶囊：各收敛成一个变体，字号提到 11px 下限 */
#wall .wall-notice{
  font-size:11px;color:var(--tx-dim);background:rgba(13,10,22,.96);
  border:1px solid rgba(246,197,106,.14);border-radius:8px;
  font-weight:500;letter-spacing:.2px;text-shadow:none;
}
#wall .wday-d{border:1px solid rgba(255,255,255,.07);background:var(--card);color:var(--tx-body);font-size:13px;border-radius:999px;padding:5px 12px}
#wall .wday-d.on{background:linear-gradient(120deg,#f6c56a,var(--gold-deep));border-color:transparent;color:#1a1405}
#wall .wday-cols{margin-bottom:12px}

/* 精选加载态：照图系骨架的做法（同一个 shimmer 动画），两列高度不同以免加载完跳版 */
#wall .wcell.skel{
  height:232px;
  background:linear-gradient(100deg,#12101c 40%,#1a1526 50%,#12101c 60%);
  background-size:200% 100%;
  animation:shimmer 1.6s infinite;
  border-color:rgba(246,197,106,.08);
  box-shadow:none;
}
#wall .wcell.skel.tall{height:308px}

/* 精选点开大图：弹框里先显示"转圈 + 加载中"（与图系点开大图同一套），大图加载完自动撤掉 */
.sheet .sheet-loading{display:flex;align-items:center;justify-content:center;min-height:calc(var(--vh0,100vh) * 0.52);padding:0;color:var(--tx-faint);font-size:13px}

/* 修正："加载中"必须浮在图片的位置上，不能占高——否则图会被挤到下面、加载完"窜上来" */
/* 图位可用高度 = calc(var(--vh0,100vh) * 0.78) 减去"图以外"的固定占用。带开奖条时多占一段（见下方 has-strip）。
   两个常量都是用浏览器**量出来的**（不是估的），改版式（加/减一行标题、改内边距）必须重量。 */
.sheet .wall-imgwrap{--imgh:calc(calc(var(--vh0,100vh) * 0.78) - 84px);position:relative;flex:0 0 auto;overflow:hidden;border-radius:8px;cursor:zoom-in;width:min(100%, calc(var(--imgh) * var(--ar, .66)));aspect-ratio:var(--ar, .66);max-height:var(--imgh);margin:0 auto}   /* 尺寸全靠这一条 CSS 算（JS 只给一个比例值 --ar），所以不会出现肉眼可见的在量尺寸；190px = 顶栏62 + body padding20 + 对照条94 + 对照条下边距12 + 余量2 */   /* 整块可点放大：锁定尺寸后图片 contain 居中，两侧空档也要点得中 */
.sheet .wall-imgwrap .sheet-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;min-height:0;padding:0;color:var(--tx-faint);font-size:13px;background:#141020;border-radius:8px}

/* 公告条：允许换行兜底（原来是 nowrap+overflow:hidden，360px 屏上会静默裁掉 28px） */
#wall .wall-notice{white-space:normal;line-height:1.45;padding:6px 12px}

/* 字号下限：以下 12 条原为 10px（低于手机可读下限，M3 label-small / iOS caption2 都是 11），提到 11px。
   统计页 5 条 + 论坛页 7 条；只动低于下限的，11.5/12.5 这类"高于下限但非标准档"的暂不动（不是可读性问题）。 */
.st-mini .k,
.st-hcell .c,
.st-bar-sub,
.st-drow .num,
#f3Recent .st-dz i,
#pageChat.posts .post-tip,
#pageChat.posts .post-tip-line,
#pageChat.posts .post-qihao,
#pageChat.posts .post-pin,
#pageChat.posts .post-time,
#pageChat.posts .post-foot,
#pageChat.posts .post-link{font-size:11px}

/* 论坛工具栏按钮没设字号 → 落到浏览器默认的 13.3333px（普查里唯一的非整数档）；对齐正文 13px */
#pageChat.posts .post-imgbtn,#pageChat.posts .post-imgbtn svg{font-size:13px}

/* 精选的"杂志开场"：满宽封面（≤calc(var(--vh0,100vh) * 0.46)，保证下面第一排网格还露头）
   图用 contain 不裁内容（料稿边上有号码），四周用同一张图的模糊放大当底 */
#wall .wall-cover{position:relative;width:100%;height:calc(var(--vh0,100vh) * 0.46);max-height:430px;border-radius:12px;overflow:hidden;margin:0 0 12px;border:1px solid rgba(246,197,106,.14);background:#0f1219;cursor:zoom-in}
#wall .wall-cover .cv-bg{position:absolute;inset:-30px;background-size:cover;background-position:center;filter:blur(22px) saturate(1.2);opacity:.55}
#wall .wall-cover img{position:relative;width:100%;height:100%;object-fit:contain;display:block}
#wall .wall-cover .cv-meta{position:absolute;left:0;right:0;bottom:0;padding:34px 14px 12px;display:flex;align-items:center;gap:6px;font-size:13px;color:#e6dcc6;background:linear-gradient(180deg,rgba(8,7,14,0),rgba(8,7,14,.9))}
#wall .wall-cover .cv-meta .cv-no{color:#f6c56a;font-weight:800;font-size:15px}
#wall .wall-cover .cv-meta .cv-dot{color:#6b6f7c}

/* 长料稿要满宽可读：弹层里的大图不再被 calc(var(--vh0,100vh) * 0.5) 压成窄条，改成满宽 + 弹层内滚动 */
.sheet .wall-imgwrap .wall-preview{width:100%;height:100%;max-width:none;max-height:none;object-fit:contain}   /* 盒子已精确贴合图片，这里填满它即可（不留边、不裁）。
     ⚠️ max-width/max-height 必须显式清掉：基础规则里的 max-height:calc(var(--vh0,100vh) * 0.5) 不会被 height:100% 覆盖，
     竖图时容器 574px 而图片被卡在 422px（=calc(var(--vh0,100vh) * 0.5)）→ 图片下方留一大块空白（站长截图反馈）。 */

/* 补漏：论坛页还有这几处低于 11px 的字号（上次只改了 12 条，漏了带 small/嵌套的写法） */
#pageChat.posts .pp-chip small,
#pageChat.posts .post-qihao,
#pageChat.posts .post-pin,
#pageChat.posts .pc-head .pc-ar,
#pageChat.posts .chat-bub .t{font-size:11px}

/* 身份徽章（VIP / 认证专家）也是 10px，同样低于下限 —— 这是重要信号，不该是最小的字 */
#pageChat.posts .chat-lv.vip-badge,
#pageChat.posts .chat-lv.expert-badge{font-size:11px}

/* 弹框里对照条改到图上方：外边距方向跟着改（原来是 margin-top，现在要 margin-bottom） */
.sheet .body > .wall-strip{margin-top:12px;margin-bottom:0}

/* ===== 论坛页归一（2026-09-12，本地量后改）=====
   本页本来就有自己的文字令牌（--t1/#fff · --t2/var(--tx-body) · --t3/var(--tx-dim)），
   但实测有 5 个近似的"正文灰"漂移在各自规则里（var(--tx-body) / var(--tx-title) / #e9ebf2 / #cfd3dd / var(--tx-body)）
   → 统一回 --t2；只作用于本页，不碰会员中心/精选的同类字面值。 */
/* 实测漂移在这几个元素上（不是它们的父级）：日期胶囊 var(--tx-body)、容器块 var(--tx-title) */
#pageChat.posts .post-period,
#pageChat.posts .post-period .chip,
#pageChat.posts .chat-preview-box,
#pageChat.posts .chat-msgrow,
#pageChat.posts .chat-bub,
#pageChat.posts .year-btn,
#pageChat.posts .chat-lockbar,
#pageChat.posts .pick-chip,
#pageChat.posts .pick-tab{color:var(--tx-body,var(--tx-body))}
/* 专家/站长头像框原来是两个近似配方（.55+.38 与 .5+.55）→ 归一成一个 */
.av-f5,.av-fx{border-color:#f6c56a;box-shadow:0 0 0 1px rgba(246,197,106,.55),0 0 10px rgba(246,197,106,.45)}

/* 收尾两刀（2026-09-12）：
   ① 论坛页的基础文字色改走本页令牌 —— 原来没设，就从全局 body{color:var(--tx-title)} 继承，
      于是公网上还剩 10 处"漂移灰"（不在我点名的类上、纯靠继承）；
   ② 圆角回到本页尺度（8/14/999）：.post-img 原来是孤立的 10px、.post-imgprev img 也是 10px。 */
#pageChat.posts{color:var(--tx-body,var(--tx-body))}
#pageChat.posts .post-img{border-radius:12px}
#pageChat.posts .post-imgprev img{border-radius:8px}

/* 修一个我自己在「论坛页归一 ④」引入的回归（2026-09-12，本地 A/B 实测确认）：
   ④ 那条 `#pageChat.posts .post-period .chip{color:var(--tx-body)}` 权重是 1id+2class，
   压过了 `.chip.active{color:#141a22}` 的 0id+2class → 选中期号（金底）被写成灰字，
   实测 灰 196,199,208 压在金 246,197,106 上，对比度仅 1.06:1，等于看不见。
   证据：临时删掉那条规则后，选中胶囊回到 rgb(26,20,5)（对比度 11.6:1）、未选中的仍是 t2 ✓。
   顺带把选中态的辉光从旧金 240,185,11 收到本页金 246,197,106（它的底色早就是新金了）。 */
#pageChat.posts .post-period .chip.active{color:#1a1405;box-shadow:none}

/* 精选弹层：对照条先预留下限高度。它是"加载中…"（约 53px）→ 变成真数据（约 92px），
   变高会把下面的图位挤小一下（看起来又像在量尺寸）。占住下限，图位就不动。 */
/* 开奖条固定在弹层底部、高 52px：数据到达前后高度一致，弹层不会抽一下。
   期号与日期已按站长要求去掉，只留球。 */
.sheet.sheet-wall.has-strip .wall-strip{min-height:66px;display:flex;align-items:center;padding:0 12px}
.sheet.sheet-wall.has-strip .wall-imgwrap{--imgh:calc(calc(var(--vh0,100vh) * 0.78) - 162px)}   /* 线上实测：top49 + 内边距20 + 条66 + 上间距12 + 余量 ≈ 162 */
/* ── iOS 自带一份与安卓同源的宋体（2026-09-12 站长："ios 还不是宋体"）──────────────
   iOS 上系统只有宋体-简（Songti SC），与安卓的思源宋体（Noto Serif CJK SC）是两个设计；
   只在 WebKit/iOS 生效的条件下自带一份子集（静态界面 + 当前线上全部语料 1181 字，实测 431KB），
   让两端字形一致。安卓/Windows 上 -webkit-touch-callout 不被支持 → 这段整体不生效 → 字体不会被下载。
   子集之外的生僻字仍会落到 Songti SC（同样是宋体，不会回到黑体）。文件名带 v1，将来换子集要改名破缓存。
   安卓设备的思源宋体只有 Regular 一个字面（bold 是合成的），所以这里也只声明一个字面、
   权重写 400 900，行为与安卓一致，不多下一份 Bold。 */

/* ── tabbar 选中态"药丸"：切换时从左/右滑过去（2026-09-12 "更有 app 手感"）──────────────
   原来每个按钮各自画一层渐变背景 + 下划线，切换是"啪"地换色；现在一个药丸按当前激活按钮
   实时定位（文案、字号、屏宽变化都由 ResizeObserver 触发重摆）。配色与原样式一致，静止时观感不变。 */
.tabpill{
  position:absolute;left:0;top:2px;bottom:2px;width:0;border-radius:26px;pointer-events:none;z-index:0;opacity:0;
  background:linear-gradient(120deg, rgba(246,197,106,.22) 0%, rgba(246,197,106,.08) 70%, rgba(246,197,106,0) 100%);
  transition:transform .26s cubic-bezier(.22,1,.36,1), width .26s cubic-bezier(.22,1,.36,1), opacity .2s ease
}
.tabpill::after{
  content:'';position:absolute;bottom:2px;left:50%;transform:translateX(-50%);
  width:18px;height:3px;border-radius:2px;background:linear-gradient(90deg,#f6c56a,var(--gold-deep))
}
.tabbar button{position:relative;z-index:1}

/* ===== 图标：Lucide sprite（24×24 网格 / stroke 2 / currentColor）=====
   尺寸只 12·16·20 三档（4px 网格）；颜色只跟随 currentColor（金/紫/灰由语义决定）。
   以前 emoji 与手画 SVG 混用，emoji 在壳里还会显示成 XX。 */
.i{display:inline-block;width:16px;height:16px;vertical-align:-3px;flex:0 0 auto;pointer-events:none}
.i12{width:12px;height:12px;vertical-align:-2px}
.i16{width:16px;height:16px;vertical-align:-3px}
.i20{width:20px;height:20px;vertical-align:-4px}
.i24{width:24px;height:24px;vertical-align:-5px}

/* 头像图标（i:name）：选盘与头像位里居中，尺寸与文字头像一致 */
.av-cell .i,.acc-ava .i{width:22px;height:22px;vertical-align:0}
.av-cell{display:inline-flex;align-items:center;justify-content:center}

/* 设备自检入口：安静一行，别抢注意力（诊断用，不是功能） */
.acc-selfcheck{font-size:11px;color:var(--tx-weak);text-align:center;margin-top:10px}
.acc-selfcheck a{color:#f6c56a;text-decoration:none;border-bottom:1px solid rgba(246,197,106,.45);padding-bottom:1px}

/* 忘记密码：只在登录态显示一行（不给假链接——站里目前没有公开联系方式，等站长给 handle 再补可点入口） */
.auth-forgot{font-size:11px;color:var(--tx-weak);text-align:center;margin-top:10px;line-height:1.6}
.auth-forgot .af-btn{color:#f6c56a;border-bottom:1px solid rgba(246,197,106,.45);padding-bottom:1px;cursor:pointer}

/* 站长料（图片墙）已下线（2026-09-15 站长："以后只出现在论坛就行"）：料只发论坛，墙不再展示。
   元素**保留在 DOM 里**（#wall 上挂着 click/error 监听，删元素会抛错），只隐藏；
   请求也已由 app.js 的 WALL_UI_ON 关掉。要恢复：删这条 + 把 WALL_UI_ON 改回 true。 */
#pageWall #wall, #pageWall #wallPager { display: none; }

/* ===== 推演 tab（2026-09-15）=====
   只放本号自己的推演与命中；站长私藏料仍是下面的 .wall，两块互不影响。
   类名统一 .tj- 前缀（**刻意不复用 .pk/.post-picks**：那套芯片样式全部限定在
   `#pageChat.posts` 下且叠了四层覆盖，跨 tab 借用就等于把论坛的层叠一起搬过来）。
   颜色一律走既有令牌：面=--surf-grad，边=--gold-line，命中=--hit。 */
.tj{padding:0 12px}
.tj-card{background:var(--surf-grad);border:1px solid var(--gold-line);border-radius:var(--rMd);padding:11px 12px;margin:12px 0;box-shadow:var(--sh-2),var(--inner-hi)}
.tj-card:first-child{margin-top:12px}
.tj-bar{display:flex;align-items:center;gap:6px;margin:12px 0 0}
/* 更新时刻（站长 2026-09-17）：期号条下面一行小字，只给最新一期显示。
   刻意做得**安静**（次要色、不占按钮样式）—— 它是"什么时候来"的说明，不该抢号码和对照的注意力。 */
.tj-when{font-size:12px;line-height:1.55;color:var(--tx-weak);margin:7px 0 0;padding-left:2px}
.tj-hd{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}
.tj-hd h3{margin:0;font-size:15px;font-weight:800;color:var(--tx-title)}
.tj-ai{margin-left:auto;font-size:10px;font-weight:800;letter-spacing:.5px;color:var(--gold);border:1px solid var(--gold-line);border-radius:var(--rSm);padding:1px 6px;white-space:nowrap}
.tj-prose{font-size:13px;line-height:1.7;color:var(--tx-body);overflow-wrap:break-word}
.tj-prose p{margin:0 0 8px}
.tj-prose p:last-child{margin-bottom:0}
.tj-nums{margin-top:9px;padding-top:8px;border-top:1px solid var(--line-neutral)}
/* 「复制」小按钮（2026-09-20 加）：与 chip 同一套皮（白底+描边），比主按钮轻、不抢视线 ✓ */
.tj-copy{margin-left:6px;flex:0 0 auto;white-space:nowrap;cursor:pointer;border-radius:12px;padding:2px 10px;font-size:12px;background:#fffefb;border:1px solid rgba(74,58,32,.24);color:#6b665d}
.tj-copy:active{transform:scale(.97)}
/* 一行装不下就**横滑**、不换行（站长 2026-09-16："手机上看 九肖会变两行"）：
   行 = 标签 | 可横滑的芯片带 | 结果标签 —— 两端固定、中间让位。
   横滑是站点既有手势（期号条/玩法条同款），别再让它折成两行把卡片撑高。 */
.tj-line{display:flex;align-items:center;gap:5px;flex-wrap:nowrap;padding:3px 0;min-width:0}
.tj-chips{flex:1 1 auto;min-width:0;display:flex;gap:5px;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding:1px 0}
.tj-chips::-webkit-scrollbar{display:none}
.tj-lb{flex:0 0 auto;font-size:11px;color:var(--tx-weak);white-space:nowrap}
.tj-pk{display:inline-block;font-size:13px;font-weight:700;color:var(--tx-title);background:var(--card);border:1px solid var(--line-neutral);border-radius:var(--rSm);padding:1px 8px;white-space:nowrap;flex:0 0 auto}
.tj-pk.hit{background:rgba(74,222,128,.12);border-color:rgba(74,222,128,.36);color:#86efac}
.tj-pk.miss{color:var(--tx-dim);opacity:.75}
.tj-pk.tj-tm{font-size:16px;font-weight:800}
.tj-w-r{color:#f87171;border-color:rgba(248,113,113,.4)}
.tj-w-b{color:#60a5fa;border-color:rgba(96,165,250,.4)}
.tj-w-g{color:#4ade80;border-color:rgba(74,222,128,.4)}
.tj-hit{flex:0 0 auto;margin-left:auto;font-size:11px;font-weight:700;padding:1px 8px;border-radius:var(--rSm);white-space:nowrap}
.tj-hit.y{background:rgba(74,222,128,.12);border:1px solid rgba(74,222,128,.28);color:#86efac}
.tj-hit.n{color:var(--tx-dim);border:1px solid var(--line-neutral)}
.tj-draw{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:8px;padding-top:8px;border-top:1px solid var(--line-neutral)}
.tj-ft{margin-top:9px;font-size:10px;line-height:1.5;color:var(--tx-weak)}
/* 玄学四判那一行（可见，不折叠）：维度名淡、判的侧亮一点，尾部一句口径说明 */
.tj-attr{margin-top:9px;padding-top:8px;border-top:1px solid var(--line-neutral);font-size:11px;line-height:1.9;color:var(--tx-dim)}
.tj-attr-k{color:var(--tx-weak);margin-right:6px}
.tj-attr-v{color:var(--tx-title);font-weight:700}
.tj-attr-s{color:var(--tx-weak);margin:0 5px}
.tj-attr-n{margin-left:7px;font-size:10px;color:var(--tx-weak)}
.tj-empty{text-align:center;font-size:13px;color:var(--tx-body);padding:10px 0}
.tj-more{margin:10px 2px 0;font-size:11px;color:var(--tx-dim);text-align:center}
/* 积分问询：预设问题 + 一行输入 + 回答区（回答只回给提问者，不落公开区） */
.tj-ask{margin-top:12px}
.tj-preset{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.tj-q{font-size:11px;color:var(--tx-soft);background:var(--t1);border:1px solid var(--t2);border-radius:var(--rSm);padding:3px 9px;cursor:pointer;white-space:nowrap}
.tj-q:active{background:var(--t2)}
.tj-askrow{display:flex;gap:6px;align-items:stretch}
.tj-askrow input{flex:1;min-width:0;font-family:inherit;font-size:13px;color:var(--tx-title);background:var(--card);border:1px solid var(--line-neutral);border-radius:var(--rSm);padding:7px 10px}
.tj-askrow input:focus{outline:none;border-color:var(--gold-line)}
.tj-askrow button{flex:0 0 auto;font-family:inherit;font-size:13px;font-weight:700;color:#141a22;background:linear-gradient(120deg,#f6c56a,var(--gold-deep));border:none;border-radius:var(--rSm);padding:7px 16px;cursor:pointer}
.tj-askrow button:disabled{opacity:.5;cursor:default}
.tj-askout{margin-top:8px;font-size:12px;line-height:1.6;color:var(--tx-weak);overflow-wrap:break-word}
.tj-ans{margin-top:6px;padding:8px 10px;background:var(--card);border:1px solid var(--line-neutral);border-radius:var(--rSm)}
.tj-ansq{font-size:11px;color:var(--tx-dim);margin-bottom:4px}
.tj-ansa{font-size:13px;line-height:1.7;color:var(--tx-body);white-space:pre-wrap}
.tj-ansmeta{margin-top:6px;font-size:10px;color:var(--tx-weak)}
/* 对照与正确率：累计命中率（本号 vs 随机对照）+ 逐期对答案 */
.tj-sc-plays{display:grid;grid-template-columns:1fr 1fr;gap:4px 8px;margin:2px 0 8px}
.tj-sc-p{display:flex;align-items:baseline;gap:5px;background:var(--card);border:1px solid var(--line-neutral);border-radius:var(--rSm);padding:4px 8px;min-width:0}
.tj-sc-n{flex:0 0 auto;font-size:11px;color:var(--tx-weak)}
.tj-sc-p b{margin-left:auto;font-size:13px;font-weight:800;color:var(--tx-title)}
.tj-sc-p i{font-style:normal;font-size:10px;color:var(--tx-dim);white-space:nowrap}
.tj-sc-cap{font-size:11px;color:var(--tx-weak);margin:2px 0 4px}
.tj-sc-rows{border-top:1px solid var(--line-neutral);padding-top:5px}
.tj-sc-row{display:flex;align-items:center;gap:6px;padding:3px 0;min-width:0}
.tj-sc-no{flex:0 0 30px;font-size:11px;color:var(--gold);font-weight:700}
.tj-sc-zx{flex:1;min-width:0;font-size:13px;font-weight:700;color:var(--tx-title);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tj-sc-act{flex:0 0 auto;font-size:11px;color:var(--tx-dim)}
.tj-sc-ax{flex:0 0 auto;font-size:10px;color:var(--tx-soft);white-space:nowrap}
.tj-sc-row .tj-hit{flex:0 0 auto;margin-left:0}
/* 推导过程（统计 → 号）：默认折叠，展开后逐行"统计值 → 规则 → 结果" */
.tj-tr{margin-top:9px;padding-top:8px;border-top:1px solid var(--line-neutral)}
.tj-tr-hd{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--tx-soft);cursor:pointer}
.tj-tr-tg{margin-left:auto;font-size:11px;color:var(--gold);white-space:nowrap}
.tj-tr-cap{font-size:10px;color:var(--tx-weak);margin:7px 0 4px}
/* 「可审计」那四条不变量：小字、行距松一点，像"说明"而不是"卖点" */
.tj-tr-list{font-size:11px;line-height:1.75;color:var(--tx-dim);margin:6px 0 2px}
.tj-tr-row{display:flex;gap:8px;padding:3px 0;min-width:0}
.tj-tr-k{flex:0 0 54px;font-size:11px;color:var(--tx-weak);padding-top:1px}
.tj-tr-v{flex:1;min-width:0;font-size:12px;line-height:1.55;color:var(--tx-body);overflow-wrap:break-word}

/* ===== 统计页「本期速览」卡（2026-09-13）=====
   信息给全（8 段一处不漏）；用两列网格压高度，长项（冷热/生肖）占整行。
   颜色一律走既有令牌：面=--surface，边=--gold-line，分隔=--line-neutral。 */
.st-brief{background:var(--surf-grad);border:1px solid var(--gold-line);border-radius:var(--rMd);padding:11px 12px;margin:12px 12px 12px;box-shadow:var(--sh-2),var(--inner-hi)}
.bf-hd{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}
.bf-hd h3{margin:0;font-size:15px;font-weight:800;color:var(--tx-title)}
.bf-no{font-size:10px;color:var(--gold)}
.bf-tg{white-space:nowrap;margin-left:auto;font-size:10px;color:var(--gold);padding:2px 4px}
.bf-row{display:flex;gap:8px;padding:4px 0;border-top:1px solid var(--line-neutral)}
.bf-row .bf-k{flex:0 0 58px;font-size:11px;color:var(--tx-weak);padding-top:2px}
.bf-row .bf-v{flex:1;min-width:0;font-size:13px;color:var(--tx-body);line-height:1.5;overflow-wrap:break-word}
.bf-trend{color:var(--tx-dim)}
.bf-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px 8px;margin:5px 0}
.bf-cell{background:var(--card);border:1px solid var(--line-neutral);border-radius:var(--rSm);padding:5px 8px;min-width:0}
.bf-ck{display:block;font-size:10px;color:var(--tx-weak);margin-bottom:2px}
.bf-cv{display:block;font-size:11px;color:var(--tx-body);line-height:1.4;overflow-wrap:break-word}
.bf-ft{margin-top:7px;font-size:10px;color:var(--tx-weak);line-height:1.5}

/* 官方栏目标（每日速览）：中性紫，与「专家」（实心紫）「VIP」（金）区分开 —— 
   它代表「程序整理」而不是「人」，所以既不用实心也不用金色。 */
.chat-lv.official-badge{background:var(--t1);color:var(--tx-soft);border:1px solid var(--t3)}

/* ============================================================
   短剧 / 影视（仅 App 内出现）
   风格：全部沿用现有令牌（不新增颜色）——
     · 卡片 = --card 底 + --line-neutral 描边 + --rMd 圆角（与图库/发料页同一套"面"）
     · 文字三档 = 剧名 --tx-title / 元信息 --tx-dim / 角标最弱
     · 金只给动作与选中；浮层（详情、播放控件）一律紫底金边
   类名统一 mv- 前缀：避免与站内既有类（.card/.ph/.nm 这些）撞车
   ============================================================ */
#pageMovie{padding:10px 12px 24px}
.mv-top{margin-bottom:10px}
.mv-search{display:flex;gap:8px;align-items:center;margin-bottom:10px;position:relative}
.mv-search input{flex:1 1 auto;min-width:0;font-family:inherit;font-size:13px;padding:9px 12px;border-radius:var(--rPill);border:1px solid var(--line-neutral);background:var(--well);color:var(--tx-title);outline:none}
.mv-search input::placeholder{color:var(--tx-faint)}
.mv-search button{flex:0 0 auto;font-family:inherit;font-size:12.5px;font-weight:800;padding:9px 16px;border-radius:var(--rPill);border:none;background:linear-gradient(115deg,var(--gold),var(--gold-deep) 50%,var(--gold-light));color:var(--tx-invert);cursor:pointer}
.mv-tabs{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
.mv-tabs::-webkit-scrollbar{display:none}
.mv-tab{flex:0 0 auto;font-family:inherit;font-size:12.5px;padding:6px 14px;border-radius:999px;border:1px solid var(--tint-line);background:var(--tint-soft);color:var(--tx-body);cursor:pointer;white-space:nowrap}
.mv-tab.on{background:linear-gradient(115deg,var(--gold),var(--gold-deep) 50%,var(--gold-light));color:var(--tx-invert);font-weight:800;border-color:transparent}
.mv-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.mv-card{background:var(--card);border:1px solid var(--line-neutral);border-radius:var(--rMd);overflow:hidden;cursor:pointer}
.mv-card:active{transform:scale(.985)}
.mv-ph{position:relative;aspect-ratio:2/3;background:var(--well)}
.mv-ph img{width:100%;height:100%;object-fit:cover;display:block;position:relative;z-index:1;background:linear-gradient(100deg,#191612 40%,#24201a 50%,#191612 60%);background-size:200% 100%;animation:shimmer 1.6s infinite}
.mv-ph img.ld{animation:none;background:none}
.mv-ph .mv-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--tx-faint);opacity:.5}
/* z-index:2 是**必须的**（2026-09-15 站长："更新到第几集左上角的标签 被图片加载完就掩盖看不见了"）：
   上面 .mv-ph img 有 `position:relative;z-index:1`（那条是为了让图片盖住 ::before 扫光层，别动），
   而本徽章是 absolute 且原来没有 z-index(=auto=0) → **图片一加载完就把它盖住**（加载前图片没内容才看得见）。
   同类前科：影视区早年"海报上浮着「短剧」两字"也是这个叠加顺序问题。 */
.mv-fin{position:absolute;left:5px;top:5px;z-index:2;font-size:9.5px;font-weight:800;padding:2px 6px;border-radius:999px;background:var(--glass);border:1px solid var(--gold-line);color:var(--gold);max-width:calc(100% - 10px);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.mv-tx{padding:6px 8px 8px}
.mv-nm{font-size:13px;font-weight:700;color:var(--tx-title);line-height:1.3;min-height:2.6em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.mv-mt{margin-top:3px;font-size:10px;color:var(--tx-dim)}
/* 详情弹层（紫底金边） */
/* 详情弹层：与「精选」同一种观感（居中卡片 + 遮罩 + 进场过渡）。
   原来是从底部升起的抽屉（bottom:0 + 上方两角圆角），站长要求换成精选那样的居中弹窗。 */
.mv-sheet{position:fixed;inset:0;z-index:60;background:rgba(16,14,12,.72);display:flex;align-items:center;justify-content:center;padding:16px}
.mv-sheet .mv-in{position:relative;width:100%;max-width:480px;max-height:calc(var(--vh0,100vh) * 0.78);overflow-y:auto;overscroll-behavior:contain;background:var(--surf-grad);border:1px solid var(--gold-line-strong);border-radius:12px;padding:14px;box-shadow:var(--sh-3);transform:translateY(34px) scale(.94);opacity:0;transition:transform .42s cubic-bezier(.32,1.25,.48,1),opacity .26s ease}
.mv-sheet.show .mv-in{transform:none;opacity:1}
.mv-in .mv-h{display:flex;gap:10px}
.mv-in .mv-poster{flex:0 0 104px;width:104px;aspect-ratio:2/3;border-radius:var(--rSm);overflow:hidden;background:var(--well)}
.mv-in .mv-poster img{width:100%;height:100%;object-fit:cover;display:block}
.mv-in .mv-info{flex:1 1 auto;min-width:0;padding-right:34px}   /* 给右上角的 ✕ 让位 */
.mv-in .mv-t1{font-size:16px;font-weight:800;color:var(--tx-title);line-height:1.3}
.mv-in .mv-t2{font-size:11px;color:var(--tx-dim);margin-top:4px}
.mv-in .mv-desc{font-size:12.5px;color:var(--tx-body);line-height:1.75;margin-top:10px}
/* 没有简介时的占位信息（类型/集数/主演…）：填住海报右侧那块留白，别让弹层看着空 */
.mv-in .mv-meta{margin-top:10px;display:grid;gap:4px;font-size:12.5px;color:var(--tx-body);line-height:1.6}
.mv-in .mv-meta b{display:inline-block;min-width:3.2em;margin-right:4px;font-weight:600;font-size:11.5px;color:var(--tx-dim)}
.mv-in .mv-sech{font-size:11px;color:var(--tx-dim);margin:12px 0 6px}
/* 选集：弹窗是宽的，横向滚动条在这里不合适（看不到总共几集）→ 换行网格，超一屏内部滚动 */
.mv-eplist{display:flex;flex-wrap:wrap;gap:6px;max-height:calc(var(--vh0,100vh) * 0.32);overflow-y:auto;overscroll-behavior:contain}
.mv-eplist::-webkit-scrollbar{display:none}
.mv-ep{flex:0 0 auto;font-family:inherit;font-size:12px;font-weight:600;padding:6px 12px;border-radius:999px;border:1px solid var(--line-neutral);background:var(--card-2);color:var(--tx-body);cursor:pointer;white-space:nowrap}
.mv-ep.on{background:linear-gradient(115deg,var(--gold),var(--gold-deep));color:var(--tx-invert);font-weight:800;border-color:transparent}
.mv-acts{display:flex;gap:10px;align-items:center;margin-top:12px}
.mv-acts button{font-family:inherit;font-size:12.5px;font-weight:800;padding:9px 16px;border-radius:999px;border:1px solid var(--gold-line-strong);background:var(--glass);color:var(--gold);cursor:pointer;white-space:nowrap}
.mv-acts button.primary{background:linear-gradient(115deg,var(--gold),var(--gold-deep) 50%,var(--gold-light));color:var(--tx-invert);border-color:transparent}
.mv-acts.solo button{flex:1 1 auto}   /* 只有一条线路（没有选集可挑）→ 播放键拉满，别让右边空着一截 */
.mv-close{position:absolute;right:10px;top:10px;width:30px;height:30px;border-radius:999px;border:1px solid var(--line-neutral);background:var(--glass);color:var(--tx-body);font-family:inherit;font-size:15px;line-height:1;cursor:pointer}
/* 页内全屏播放（不用原生全屏：壳里没实现 onShowCustomView） */
.mv-player{position:fixed;inset:0;z-index:70;background:#000;display:flex;flex-direction:column;animation:mvfade .18s ease}
@keyframes mvfade{from{opacity:0}to{opacity:1}}
.mv-player .mv-bar{display:flex;align-items:center;gap:10px;padding:calc(8px + var(--safeTop)) 12px 8px;background:var(--glass);border-bottom:1px solid var(--gold-line)}
.mv-player .mv-bar b{flex:1 1 auto;min-width:0;font-size:13px;color:var(--tx-title);font-weight:700;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.mv-player .mv-bar button{flex:0 0 auto;font-family:inherit;font-size:12px;font-weight:700;padding:6px 12px;border-radius:999px;border:1px solid var(--gold-line-strong);background:transparent;color:var(--gold);cursor:pointer;white-space:nowrap}
.mv-player .mv-stage{position:relative;flex:1 1 auto;min-height:0;background:#000;display:flex;align-items:center;justify-content:center;overflow:hidden}
.mv-player .mv-stage{touch-action:none}   /* 视频区不吃页面滚动：手指在画面上划不会把下面页面带走（手势靠 pointer 事件，不受影响） */
body.mv-noscroll{overflow:hidden;position:fixed;left:0;right:0;width:100%}
.mv-player .mv-stage video{width:100%;height:100%;object-fit:contain;background:#000}
/* 自己的控制层（不用原生控件：安卓那套"大播放键"太老，且壳里原生全屏不可用） */
.mv-big{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:64px;height:64px;border-radius:999px;border:1px solid var(--gold-line-strong);background:rgba(24,21,16,.55);color:var(--gold);display:flex;align-items:center;justify-content:center;cursor:pointer}
.mv-big{transition:transform .12s ease,opacity .2s ease}
.mv-big:active{transform:translate(-50%,-50%) scale(.92);background:rgba(24,21,16,.75)}
.mv-big[hidden]{opacity:0;transform:translate(-50%,-50%) scale(.9);pointer-events:none}
.mv-big[hidden]{display:none}   /* 类里的 display:flex 会盖掉 [hidden]，必须显式写回（老坑） */
.mv-ctl{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:8px;padding:10px 14px calc(28px + var(--safeBot));background:linear-gradient(180deg,rgba(0,0,0,0),rgba(0,0,0,.7));opacity:0;transition:opacity .18s ease;pointer-events:none}
/* ⚠️ 可拖动的进度条必须抬出屏幕最底部 ~28px：安卓的「上滑回桌面」手势区就在最底部
   （这条手势**系统不允许 App 屏蔽**，只能把交互控件躲开）—— 站长拖动进度条触发"退出 app"就是这个原因。 */
.mv-ctl.on{opacity:1;pointer-events:auto}
.mv-tm{font-size:11px;color:#eae6f7;min-width:38px;text-align:center;font-variant-numeric:tabular-nums}
/* 进度条三层（2026-09-24 站长方案批的"进度条层次"）：底轨 → 缓冲层(u) → 已播金(i) → 拇指(b)。
   3px→6px 加粗是 P0 的"金进度条"要求 ✓；缓冲层取 video.buffered 的落点（paintBar 里算）。 */
.mv-track{position:relative;flex:1 1 auto;height:24px;display:flex;align-items:center;cursor:pointer;touch-action:none}
.mv-track:before{content:"";position:absolute;left:0;right:0;height:6px;border-radius:999px;background:rgba(255,255,255,.16)}
.mv-track u{position:absolute;left:0;height:6px;border-radius:999px;width:0;background:rgba(255,255,255,.42)}
.mv-track i{position:absolute;left:0;height:6px;border-radius:999px;width:0;background:linear-gradient(90deg,var(--gold),var(--gold-light))}
.mv-track b{position:absolute;left:0;width:14px;height:14px;border-radius:999px;background:var(--gold);transform:translateX(-7px);box-shadow:0 1px 6px rgba(0,0,0,.5)}
/* 集刻度行（优化5）：≤50 集画一排小点（看过=亮、当前=金）；再多改用"集进度条"（避免 200 点挤爆底栏）。
   点谁播谁（与选集列表同一口径）✓。 */
.mv-tcol{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:4px;justify-content:center}
.mv-tcol .mv-track{flex:0 0 auto;width:100%;height:22px}
.mv-ticks{display:flex;gap:2px;align-items:center;height:4px}
.mv-ticks s{flex:1 1 auto;height:3px;min-width:2px;border-radius:999px;background:rgba(255,255,255,.2);cursor:pointer}
.mv-ticks s.done{background:rgba(255,255,255,.45)}
.mv-ticks s.on{background:var(--gold)}
.mv-ticks.strip{position:relative;background:rgba(255,255,255,.14);cursor:pointer}
.mv-ticks.strip u{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,var(--gold),var(--gold-light));border-radius:999px}
/* 手动转屏（2026-09-24 站长方案：放弃系统播放器、自研为主）：
   CSS 旋转三档里的"iPhone 主路"——元素全屏 API 在 iPhone 上不存在，把整个播放器转 90° 铺满：
   预置尺寸宽高对调（宽=100vh、高=100vw），再 `translateX(100vw) rotate(90deg)`（origin 0 0）
   ⇒ 旋转后正好盖满竖屏视口；用户把手机横过来即可正常观看（控件跟着转、天然正读 ✓）。
   ⚠️ inset:0 的 right/bottom 必须显式放开，不然与固定宽高打架。 */
.mv-player.mv-rot{left:0;top:0;right:auto;bottom:auto;width:100vh;height:100vw;max-width:none;max-height:none;transform:translateX(100vw) rotate(90deg);transform-origin:0 0}
/* 灵动岛 / 屏幕圆角防吃（2026-09-24 站长提醒："旋转时要考虑灵动岛的位置，不然按钮被灵动岛吃掉"）：
   ① 屏幕坐标里岛永远贴**屏顶中段**、侵入深度＝safe-top；而 .mv-rot 的变换把**本地左边映到物理屏顶**
      ⇒ 靠本地左边的控件（锁定键 left:8px）正好骑在岛带边上。按轴对的量让位：rot 态下本地左 ← 用
      **竖屏顶 inset（var(--safeTop)，含 TG 小程序的两个变量）**：真机刘海 8+59=67px 越过侵入带 ✓，
      桌面/无刘海 env=0 ⇒ 8px 不变 ✓。⚠️ rot 下**左右方向的 env 不可信**（屏面仍是竖屏），只能用顶值 ✗。
   ② 旋转态/全屏里**贴四角的浮钮**会被 iOS 圆角触摸禁区吞掉点击（"被吃掉"的另一半）⇒ 各让 8~10px。 */
.mv-player.mv-rot .mv-lockbtn{left:calc(8px + var(--safeTop))}
.mv-player.mv-rot .mv-exit{right:18px;top:calc(18px + var(--safeTop))}
.mv-player.mv-rot .mv-rates{right:18px;top:18px}
.mv-player.mv-rot .mv-bar{padding-left:20px;padding-right:20px}
.mv-player.fs .mv-exit{right:16px}   /* 真全屏里同一个角同族一起让（发散：同"角被吃"族 ✓） */
/* 全屏＝把播放层铺满（隐藏上下栏）——不依赖原生全屏 API，壳里同样有效 */
.mv-player.fs .mv-bar,.mv-player.fs .mv-foot{display:none}
/* 铺满（cover）与适应（contain）切换：横屏默认铺满，不拉伸变形（cover 是裁切不是拉伸） */
.mv-player.fit-fill .mv-stage video{object-fit:cover}
.mv-fit{flex:0 0 auto;margin-left:2px;padding:0 10px;height:26px;font-family:inherit;font-size:11px;font-weight:800;color:var(--gold);background:rgba(246,197,106,.12);border:1px solid rgba(246,197,106,.45);border-radius:999px;cursor:pointer}
.mv-fit[hidden]{display:none}
/* 缓冲转圈 + 手势提示气泡（display 同样要显式写 [hidden]，否则盖掉 hidden） */
.mv-spin{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:44px;height:44px;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 2px 6px rgba(0,0,0,.55))}   /* 只留转圈本身：原来那层 44px 半透明圆底就是"多出来的那一层" */
.mv-spin[hidden]{display:none}
/* 播放器里的转圈要**正居中**：.spin 自带 margin-right:6px（给"环+文字"内联用），flex 居中会算进去 → 环被挤左 3px
   （模拟器实测 dx=-3.0 CSS px，量出来的，不是眼估）。播放器这层把外边距清零。 */
.mv-spin .spin{margin-right:0;vertical-align:0}
.mv-flash{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:8px 14px;border-radius:99px;background:rgba(24,21,16,.78);border:1px solid var(--gold-line-strong);color:var(--gold);font-size:12px;font-weight:700;white-space:nowrap}
.mv-flash[hidden]{display:none}
/* 全屏时的浮动退出键：全屏里顶栏是隐藏的，必须始终留一个能退出的入口 */
.mv-exit{position:absolute;right:10px;top:calc(10px + var(--safeTop));width:36px;height:36px;border-radius:999px;border:1px solid var(--gold-line-strong);background:rgba(24,21,16,.66);color:var(--gold);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:2}
.mv-exit[hidden]{display:none}
.mv-exit:active{background:rgba(24,21,16,.9)}
/* 工具栏收放：收起时顶栏/底栏/浮动退出键一起走，只留最底部的精简进度条 */
/* 工具栏收放：滑入滑出 + 淡入淡出（原来 display:none 是"啪"一下，交互显得呆） */
.mv-player .mv-bar{transition:opacity .22s ease,transform .22s ease}
.mv-player .mv-ctl{transition:opacity .22s ease,transform .22s ease}
.mv-player .mv-exit{transition:opacity .22s ease,transform .22s ease}
.mv-player.hideui .mv-bar{opacity:0;transform:translateY(-10px);pointer-events:none}
.mv-player.hideui .mv-ctl{opacity:0;transform:translateY(10px);pointer-events:none}
.mv-player.hideui .mv-exit{opacity:0;transform:scale(.88);pointer-events:none}
.mv-player .mv-bar,.mv-player .mv-exit{z-index:3}
.mv-mini{position:absolute;left:0;right:0;bottom:0;height:14px;display:none;align-items:flex-end;padding:0 0 3px}
.mv-player.hideui .mv-mini{display:flex}
/* 全屏锁定键：浮在画面左侧中部（紫底金边），只在全屏里出现；锁上后整层控件隐藏、只留它 */
/* 锁键：类名独立（原来叫 .mv-lock，和影视页"未登录锁定面板"撞了类名 → 面板的 padding:46px 把按钮撑成一坨） */
.mv-lockbtn{position:absolute;left:8px;top:26%;transform:translateY(-50%);width:30px;height:30px;border-radius:999px;display:none;align-items:center;justify-content:center;border:1px solid var(--gold-line-strong);background:rgba(24,21,16,.66);color:var(--gold);z-index:3;cursor:pointer;padding:0}
.mv-lockbtn svg{width:14px;height:14px}
.mv-player .mv-lockbtn{transition:opacity .22s ease,transform .22s ease}
.mv-player.fs .mv-lockbtn{display:flex}
.mv-player.hideui .mv-lockbtn{opacity:0;transform:translateY(-50%) scale(.88);pointer-events:none}
.mv-player.mv-locked .mv-lockbtn{opacity:.45;transform:translateY(-50%);pointer-events:auto}
.mv-player.mv-locked.lockfade .mv-lockbtn{opacity:0;pointer-events:none}
/* 倍速候选面板：右上角，紫底金边（站长："要展示出来让人备选"） */
.mv-rates{position:absolute;right:10px;top:12px;z-index:4;display:none;flex-direction:column;gap:2px;padding:6px;border-radius:14px;background:rgba(24,21,16,.92);border:1px solid var(--gold-line-strong);box-shadow:0 8px 24px rgba(0,0,0,.45);opacity:0;transform:translateY(-6px);transition:opacity .16s ease,transform .16s ease}
.mv-rates.show{opacity:1;transform:translateY(0)}
.mv-rates[hidden]{display:none}
.mv-rates.show{display:flex}
.mv-rate-i{display:block;min-width:64px;padding:7px 12px;border:none;border-radius:9px;background:transparent;color:var(--tx-title);font-family:inherit;font-size:12.5px;font-weight:800;text-align:center;cursor:pointer}
.mv-rate-i.on{background:rgba(246,197,106,.16);color:var(--gold)}   /* 锁上 4 秒后自己隐去，点一下画面再出现 */
.mv-player.mv-locked .mv-exit,.mv-player.mv-locked .mv-ctl,.mv-player.mv-locked .mv-mini,.mv-player.mv-locked .mv-bar{opacity:0;pointer-events:none}
.mv-mini i{display:block;height:2.5px;border-radius:2px;width:0;background:linear-gradient(90deg,var(--gold),var(--gold-light));box-shadow:0 0 6px rgba(246,197,106,.35);transition:width .25s linear}
.mv-pp{flex:0 0 auto;width:30px;height:30px;border-radius:999px;border:1px solid var(--gold-line-strong);background:rgba(24,21,16,.5);color:var(--gold);display:flex;align-items:center;justify-content:center;cursor:pointer;font-family:inherit}
.mv-pp{transition:transform .12s ease}
.mv-pp:active{transform:scale(.9);background:rgba(24,21,16,.8)}
.mv-player .mv-bar #mvRate{min-width:44px}
/* 观看记录：搜索行右侧那颗钮 + 列表 */
.mv-history .mv-histbtn,.mv-search .mv-histbtn{flex:0 0 auto;width:38px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:var(--rPill);border:1px solid var(--line-neutral);background:var(--well);color:var(--tx-soft-strong);cursor:pointer}
.mv-search .mv-histbtn:active{background:var(--t1)}
.mv-hist{display:flex;flex-direction:column;gap:8px;max-height:calc(var(--vh0,100vh) * 0.56);overflow-y:auto;overscroll-behavior:contain;margin:10px 0 4px}
.mv-hist-empty{padding:26px 0;text-align:center;font-size:12px;color:var(--tx-faint)}
.mv-hitem{display:flex;align-items:center;gap:10px;width:100%;text-align:left;font-family:inherit;padding:8px;border-radius:var(--rMd);border:1px solid var(--line-neutral);background:var(--card-2);cursor:pointer}
.mv-hitem:active{background:var(--t2)}
.mv-hpic{flex:0 0 44px;width:44px;aspect-ratio:2/3;border-radius:var(--rSm);overflow:hidden;background:var(--well);display:block}
.mv-hpic img{width:100%;height:100%;object-fit:cover;display:block}
.mv-htx{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px}
.mv-htx b{font-size:13px;font-weight:700;color:var(--tx-title);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mv-htx i{font-size:11px;color:var(--tx-dim);font-style:normal}
.mv-hbar{display:block;height:3px;border-radius:2px;background:rgba(255,255,255,.14);overflow:hidden}
.mv-hbar u{display:block;height:100%;background:linear-gradient(90deg,var(--gold),var(--gold-light))}
.mv-hgo{flex:0 0 auto;font-size:11.5px;font-weight:800;color:var(--gold);padding:5px 10px;border-radius:999px;border:1px solid var(--gold-line-strong)}
.mv-player .mv-foot{padding:8px 12px calc(10px + var(--safeBot));background:var(--glass);border-top:1px solid var(--gold-line)}
.mv-player .mv-tip{font-size:11px;color:var(--tx-dim);margin-bottom:6px}
.mv-loading{padding:24px 0;text-align:center;font-size:12px;color:var(--tx-dim);grid-column:1/-1}   /* 提示/登录卡都是网格里的整行元素，别被塞进一列 */
/* 未登录的登录卡（网页端 B 案）：一张卡说清"登录后即可观看"，不训人、不写规则 */
.mv-lock{grid-column:1/-1;display:flex;flex-direction:column;align-items:center;gap:10px;padding:46px 16px 54px;color:var(--tx-dim);text-align:center}
.mv-lock svg{color:var(--gold);opacity:.85}
.mv-lock-t{font-size:14px;font-weight:800;color:var(--tx-title)}
.mv-lock-s{font-size:11.5px;color:var(--tx-faint);letter-spacing:.02em}
.mv-lock button{margin-top:4px;font-family:inherit;font-size:12.5px;font-weight:800;padding:9px 20px;border-radius:var(--rPill);border:none;background:linear-gradient(115deg,var(--gold),var(--gold-deep) 50%,var(--gold-light));color:var(--tx-invert);cursor:pointer}

/* 2026-09-14 fix: the movie player overlay sets display:flex, which overrides the
   [hidden] attribute UA rule -> an invisible full-screen black layer covered the whole
   app (App opened fully black). Attribute selector wins, so write it back here. */
.mv-player[hidden],.mv-sheet[hidden]{display:none}

/* 小类那一排（五个大类下的具体分类）：比大类胶囊更轻——灰边、选中才用紫底金边，不抢主角 */
.mv-filters{display:flex;align-items:center;gap:8px;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line-neutral)}
.mv-ysel{flex:0 0 auto}
.mv-filters .year-btn{padding:5px 10px;font-size:11.5px;gap:4px}
.mv-subs{flex:1 1 auto;min-width:0;display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding:0;margin-top:0;border-top:none}
.mv-subs::-webkit-scrollbar{display:none}
.mv-sub{flex:0 0 auto;font-family:inherit;font-size:11.5px;padding:4px 11px;border-radius:999px;border:1px solid var(--line-neutral);background:transparent;color:var(--tx-dim);cursor:pointer;white-space:nowrap}
.mv-sub.on{border-color:var(--gold-line-strong);background:rgba(246,197,106,.10);color:var(--gold);font-weight:700}

/* ============================================================
   页头：根部深色底 + 页头不透明（2026-09-14）
   站长两处原话：「我看页头 怎么每个系统不统一的 有些上面会遗留一片白」
              「苹果15pro则会上滑的时候 页头变空 能看到图片划过的」

   ① 页头上方那条白 —— 成因（两端实测 computed 值）：
      · html 从头到尾**没有任何 background 声明**（第 2 行只写了 text-size-adjust 一族）；
      · body 的背景（第 443 行）是一组 background-image（4 层渐变），
        而 background-color 仍是 transparent —— Playwright 在 Chromium 与 WebKit
        实测都是 rgba(0,0,0,0)，即**页面根本没有一个"深色底"可供取用**。
      · 又因为 index.html 第 19 行写了 apple-mobile-web-app-status-bar-style=black-translucent
        （等于告诉 iOS"内容画到状态栏下面、安全区我自己处理"），而第 9 行的 viewport
        里**没有 viewport-fit=cover**，于是 iOS/WebKit 不会 edge-to-edge 布局，
        var(--safeTop) 恒为 0，状态栏那一条被留在**网页布局视口之外**，
        由宿主（PWA 窗口底 / WebView 默认底）去画；宿主拿不到深色 → 落回白色。
        各宿主画法不同，所以站长看到的是"每个系统不统一、有些遗留一片白"。
      改法：给 html 与 body 明确写上站点深色底 #0b0d16（= body 渐变收尾色同值）。
        这样那一条无论谁来画，拿到的都是站点深色，不再有白。
        （刻意**不**加 viewport-fit=cover：那会同时放大底部布局视口，
          .sheet 的 calc(var(--vh0,100vh) * 0.88)、.f3-gotop/.ui-* 等固定定位元素都要跟着重算，
          iOS 没法真机验证前不动，详见交付说明。）

   ② 上滑时页头"变空、能看到图片划过" —— 成因：
      页头真正生效的背景是第 1375 行那条 !important 覆盖：
        linear-gradient(180deg,rgba(20,16,32,.96) 0%,rgba(14,12,24,.94) 100%)
      —— **alpha 0.94~0.96，不是不透明**；同一处又把 backdrop-filter 强制关掉
      （安卓性能，第 1376 行），所以连模糊兜底都没有。
      实测（Playwright，在页头正后方分别铺纯黑/纯白块，读页头像素）：
        白底 vs 黑底，页头同一像素差 10~11/255 —— 正好等于 4% 的透出量，
        且整条页头带均匀受影响（见 _hd_shots/EVIDENCE-header-alpha.png）。
      亮图（图库/广告位）经过时就是一层可见鬼影，观感即"页头变空"。
      改法：把页头底色换成**完全不透明**的
        #141020 → #0e0c18
      这两个值就是"原来的半透明层压在本站深色底上的合成色"
      （0.96*(20,16,32)+0.04*(11,13,22)≈(20,16,32)；0.94*(14,12,24)+0.06*(10,13,19)≈(14,12,24)），
      所以**配色逐像素等价、不是重新设计**，只是不再透光。
      仍然不用 backdrop-filter 兜底（继续沿用第 1376 行的 none，安卓性能不受影响）。

   ③ 页头背景覆盖安全区：加 padding-top: var(--safeTop)，
      页头自己的背景按 background-clip:border-box 铺满 padding 区，
      所以有安全区的客户端（刘海/状态栏）那一条由页头自己填。
      注意：**非壳**客户端 var(--safeTop) 恒为 0
      （安卓浏览器 0、Playwright 两引擎 0），此条是**自门控**的
      防御写法：env 为 0 时 padding 完全不变（8px/3px），不会改变任何现有几何。
      **壳内（html.in-app）必须例外**：壳已按系统栏高度给 WebView 让过一次位，
      页头再让一次就是双让 —— 2026-09-14 真机实测（AVD 挖孔 136px + 真包 1.1.15）
      量到 136 设备像素空带，见文件末尾 html.in-app 两条。
      吸顶基准不受影响：--hdrH / --hdr-h 由 ResizeObserver / measure() 从
      header.getBoundingClientRect() 实测写入，页头长高它们自动跟着走。
   ============================================================ */
html{background-color:var(--page-solid)}
body{background-color:var(--page-solid)}
header{
  /* 2026-09-19：原来写死深色（APK 壳的页头底色）→ 改用主题变量，纸上就跟着变纸色 ✓ */
  background-color:var(--hdr-solid)!important;
  background-image:var(--hdr-bg)!important;
}
/* 安全区：env 为 0 时与原值逐像素相同，不会动到任何现有几何（非壳环境：浏览器 / iOS PWA） */
header{padding-top:calc(8px + var(--safeTop))}
body.compact header{padding-top:calc(3px + var(--safeTop))}
/* 壳内钉死成纯 8px/3px：壳（APK）已经按系统栏高度给 WebView 加过外边距，页头不再自己让位。
   为什么不能只靠"env 在壳里是 0"——2026-09-14 在真机（AVD 挖孔 136px、真包 1.1.15）量到：
     · 壳按真实 inset 让位时，Chromium 报 var(--safeTop)=0，页头贡献 0（两条规则等价）；
     · 但**壳让位晚于页面首次布局**时（WebView 那一刻还是边到边），env 求值为 50px，
       并且此后**不再重算**（WebView 尺寸从 innerH 851 变到 778 也不重算），
       于是页头凭空多留 50px=136 设备像素：金色标题距状态栏下沿 42 → 178 设备像素，
       就是站长看到的那条空带。壳内的判定必须由页面自己钉死，不能依赖 env 会归零。 */
html.in-app header{padding-top:8px}
html.in-app body.compact header{padding-top:3px}
/* 同一个坑的第二处（2026-09-15 站长："播放页也有之前页头那样的留白区"）：
   播放器顶栏与全屏退出键原来也自让安全区；壳内 env() 冻在 50px 时会顶上多一条空带（机制同页头）。
   壳外（浏览器 / iOS Safari）命中规则完全不变——那边 env 是真实值，留白本来该有。 */
html.in-app .mv-player .mv-bar{padding-top:8px}
html.in-app .mv-exit{top:10px}

/* 投稿卡片上的「精选」标（2026-09-14）：与 .hit-tag 同族的胶囊；金边=站长动作，不新造色值 */
.post-feat{display:inline-flex;align-items:center;height:16px;padding:0 6px;margin-left:6px;border-radius:999px;font-size:10px;font-weight:800;line-height:1;color:var(--gold);background:rgba(246,197,106,.12);border:1px solid rgba(246,197,106,.45);vertical-align:middle;white-space:nowrap}

/* 画面上的小提示条（2026-09-15）：片尾"下一集 N 秒"倒计时 / 续播"从头播放"。
   站里浮层的规矩——紫底金边；贴在控制条上方居中，不挡选集列表。 */
.mv-note{position:absolute;left:50%;bottom:74px;transform:translateX(-50%);display:flex;align-items:center;gap:8px;max-width:88%;padding:7px 8px 7px 14px;border-radius:999px;background:#191612;border:1px solid rgba(246,197,106,.5);box-shadow:0 6px 18px rgba(0,0,0,.45);z-index:6;animation:mvNoteIn .18s ease}
.mv-note-t{font-size:12px;font-weight:700;color:#f6c56a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mv-note-a{flex:0 0 auto;font-family:inherit;font-size:12px;font-weight:800;color:#1b1a17;background:#f6c56a;border:0;border-radius:999px;padding:5px 12px;cursor:pointer}
.mv-note-x{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:999px;background:transparent;border:1px solid rgba(246,197,106,.35);color:#f6c56a;cursor:pointer}
@keyframes mvNoteIn{from{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%,0)}}
@media (prefers-reduced-motion:reduce){.mv-note{animation:none}}

/* 短剧排序/筛选胶囊（2026-09-15）：与分类胶囊同一套观感，选中＝金色实底 */
.mv-ops{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 10px;padding:0 2px}
.mv-op{font-family:inherit;font-size:11px;font-weight:800;color:var(--gold);background:rgba(246,197,106,.10);border:1px solid rgba(246,197,106,.35);border-radius:999px;padding:5px 12px;cursor:pointer;white-space:nowrap}
.mv-op.on{background:var(--gold);border-color:var(--gold);color:#1b1a17}
/* 卡片状态徽章：更新中＝金色实底（更显眼），已完结＝沿用原来的轻样式 */
.mv-fin.up{background:var(--gold);color:#1b1a17;font-weight:800}
.mv-fin.end{background:rgba(22,20,17,.72);color:#cfcad9}

/* ===== transform 扫光（2026-09-15）=====
   原写法动的是 background-position → **每帧重绘**（加载期间屏内十几~二十几个同时跑）。
   现在把渐变放到 ::before、用 translateX 扫 → 同一观感走**合成层**，每帧零重绘。
   用 @supports selector(:has(*)) 渐进增强：老内核不认 :has → 整块跳过，保持原写法，不会更差。 */
@supports selector(:has(*)) {
  @keyframes shimmerX{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
  .ph,.wall-item,.mv-ph{position:relative;overflow:hidden}
  /* 图位**跟着图片走**（不写死尺寸）：#typeList .card img 实际是 56×56（不是 48，写死会裁图 ✗）
     —— 用一个 display:block 的包裹层，宽度自然等于图片宽度，扫光 inset:0 就正好覆盖图位。 */
  .ph{display:block;flex:0 0 auto;border-radius:8px;line-height:0}   /* line-height:0：去掉内联图片的行高尾巴（否则图位比图高 6px） */
  .ph::before,.wall-item::before,.mv-ph::before{content:'';position:absolute;inset:0;background-size:200% 100%;animation:shimmerX 1.6s infinite;will-change:transform}
  .ph::before,.wall-item::before{background-image:linear-gradient(100deg,#151b23 40%,#1c2530 50%,#151b23 60%)}
  .mv-ph::before{background-image:linear-gradient(100deg,#191612 40%,#24201a 50%,#191612 60%)}   /* 影视区微光（原紫底 #17122b→#221a3d ✗ 已换暖炭 2026-09-24） */
  .ph img,.wall-item img,.mv-ph img{background:none;animation:none}
  /* 图片必须盖在扫光之上，**三处一个都不能漏**（2026-09-15 站长："图库的骨架加载精简过头了，连同真图也一起过渡了"）：
     扫光层是 `position:absolute`，而图片是**静态流**内容 → 静态内容先绘制，扫光永远压在图上。
     原来这里漏了 `.ph`（图库卡片）：只要 `.ld` 还没加上（或加载事件晚到一拍），
     扫光就横扫在**已经解码好**的真图上 —— 看起来就是"真图也在过渡"。精选/影视那两处一直有，所以只有图库犯病。 */
  .ph img,.wall-item img,.mv-ph img{position:relative;z-index:1}
  .ph:has(img.ld)::before,.wall-item:has(img.ld)::before,.mv-ph:has(img.ld)::before{animation:none;opacity:0;will-change:auto}
  /* 骨架本来就是占位（加载完整块被替换），不用 :has */
  .card.skel .sk-thumb,.card.skel .sk-line{position:relative;overflow:hidden;background:#151b23;animation:none}
  .card.skel .sk-thumb::before,.card.skel .sk-line::before{content:'';position:absolute;inset:0;background-image:linear-gradient(100deg,#151b23 40%,#1c2530 50%,#151b23 60%);background-size:200% 100%;animation:shimmerX 1.6s infinite;will-change:transform}
  #wall .wcell.skel{position:relative;overflow:hidden;background:#12101c;animation:none}
  #wall .wcell.skel::before{content:'';position:absolute;inset:0;background-image:linear-gradient(100deg,#12101c 40%,#1a1526 50%,#12101c 60%);background-size:200% 100%;animation:shimmerX 1.6s infinite;will-change:transform}
}

/* 胶囊/徽章/标题类：长按不出复制工具栏（2026-09-15 站长选 B：App 与浏览器一起禁）
   在"全站固化 + 只留精选文字稿/表单"之上再点名 UI 构件 —— 即使落在文字稿语境里，这些也仍是固化态 */
.chat-lv,.badge-new,.official-badge,.expert-badge,.vip-badge,.post-feat,.wcell-no,.qihao,
.mv-tab,.mv-fin,.mv-ep,.pick-chip,.pick-tab,.pp-chip,.chat-sendbtn,.acc-sign,.acc-task-b,.acc-tag-vip,
.wday-d,.wemp-btn,#chatDown,.mv-close,
.mv-search button,.mv-acts button,.mv-bar button,
h1,h2,h3,h4,.mv-t1,.acc-head,.bf-hd h3,.expert-rank h4,.detail h2,.sheet h2,.sheet .top h2{-webkit-user-select:none!important;user-select:none!important}
/* 文字稿里的标题与强调要能一起被复制（把上面那条在文字稿语境里还回去；评论/论坛正文已整体固化，不再回填） */
.wtxt h1,.wtxt h2,.wtxt h3,.wtxt h4,.wtxt b,.wall-text h1,.wall-text h2,.wall-text h3,.wall-text h4,.wall-text b{-webkit-user-select:text!important;user-select:text!important}

/* ===== 一次连发的多图：**一行一图 + 折叠**（站长 2026-09-17 定版）=====
   历史：先做成两列网格（站长 2026-09-16：「应该两张并列在同一个帖子框…不然刷屏太严重」）。
   站长 2026-09-17 反馈「发图逻辑、排版不科学且不美观」→ 本地复现量了：两列时每格只有 **162px 宽**，
   资料图上的字全糊了；而且每格高度不等（216/122/162/320…）→ 台阶状 + 大片留白 ✗。
   **结论：用折叠控制刷屏，而不是把图缩小。** 单图与多图现在用同一套图块规则（全宽、保比例、不裁）✓。
   折叠只看 `nth-child(n+3)`（纯 CSS），按钮由前端 syncImgFold() 生成并维护计数。 */
#pageChat.posts .post-imgs{display:block;margin-top:9px;max-width:100%;align-self:stretch}
#pageChat.posts .post-imgs .post-img{margin-top:8px}
#pageChat.posts .post-imgs .post-img:first-child{margin-top:0}
#pageChat.posts .post-imgs.pi-fold .post-img:nth-child(n+3){display:none}
#pageChat.posts .pi-more{margin:9px 0 0;padding:7px 15px;border-radius:999px;font-family:inherit;font-size:12.5px;line-height:1.3;
  color:#f6c56a;background:rgba(246,197,106,.10);border:1px solid rgba(246,197,106,.45);cursor:pointer}
#pageChat.posts .pi-more:active{background:rgba(246,197,106,.20)}
/* ===== 翻页条（每页 50 条；0 游标＝最新那页才跟新）===== */
#pageChat.posts .chat-more{display:flex;align-items:center;justify-content:center;gap:10px;padding:9px 12px;font-size:12.5px;color:var(--gold);border-top:1px solid var(--t2);background:rgba(20,14,30,.5)}
#pageChat.posts .chat-more button{font:inherit;color:#e9dcff;background:var(--t2);border:1px solid var(--t3);border-radius:999px;padding:5px 12px;cursor:pointer}
#pageChat.posts .chat-more button:active{background:var(--t2)}
#pageChat.posts .chat-more .sep{opacity:.45}

/* ===== 窄屏：胶囊收紧到能整行放下（站长 2026-09-16：推演 tab 的 9 肖 / 特码 8 码「会超框」✗）=====
   实测 360 宽：9 肖那行 9×31+8×5 = 319px、特码 8 码（字号更大）≈339px，而可用只有 ~278px
   → 末端胶囊被切一半 ✗。收紧后 9 肖 ≈248、特码 ≈260，都在框内 ✓（≤340 的极窄屏仍保留横向滑动兜底 ✓）。 */
@media (max-width:430px){
  .tj-line{gap:4px}
  .tj-chips{gap:4px}
  .tj-lb{font-size:10px}
  .tj-pk{font-size:12px;padding:1px 5px}
  .tj-pk.tj-tm{font-size:14px}
}

/* 极窄屏（≤340，老机型）：再收一档 —— 320 宽时 9 肖那行内容 285px、可用只有 ~247px，不收就还会被切 ✗ */
@media (max-width:340px){
  .tj-line{gap:3px}
  .tj-chips{gap:3px}
  .tj-lb{font-size:9.5px}
  .tj-pk{font-size:11px;padding:1px 4px}
  .tj-pk.tj-tm{font-size:13px}
}

/* 逐期对照那一行可点（点开＝看那一期的推演）：手型 + 点按反馈（手机没有 hover，用 :active ✓） */
.tj-sc-row[data-day]{cursor:pointer}
.tj-sc-row[data-day]:active{opacity:.62}

/* 逐段命中率：每段一柱 + 该段精确基准的金线（让"贴着基准"看得见 ✓） */
.tj-seg{padding:2px 0}
.tj-seg-row{display:flex;align-items:center;gap:6px;padding:3px 0}
.tj-seg-lb{flex:0 0 58px;font-size:11px;color:var(--tx-weak)}
.tj-seg-bars{flex:1 1 auto;display:flex;gap:2px;align-items:flex-end;height:34px;min-width:0}
.tj-seg-b{position:relative;flex:1 1 0;height:100%;background:rgba(255,255,255,.05);border-radius:2px}
.tj-seg-b i{position:absolute;left:0;right:0;bottom:0;background:var(--t3);border-radius:2px}
.tj-seg-b u{position:absolute;left:-1px;right:-1px;height:1px;background:rgba(246,197,106,.9);text-decoration:none}
.tj-seg-val{flex:0 0 36px;text-align:right;font-size:11px;color:var(--tx-title);font-weight:700}

/* 图册卡里每张图自己的图注（跟着图走，别再"上面一句、下面一张"错位）。
   站长 2026-09-17 起它是图卡里唯一的说明位（锚帖那句短文字不再在正文里重复印一遍）。 */
#pageChat.posts .pi-cap{font-size:12px;line-height:1.45;color:#e9dcc0;padding:6px 9px 7px;word-break:break-word}
#pageChat.posts .pi-cap::before{content:'· ';color:#8d7fa8}

/* 未登录锁条里的一行小字：把"不用绑手机/不用实名"直接说在前面（站长 2026-09-16） */
.tip-sub{color:var(--tx-weak);font-size:11px}

/* 当期推演锁卡（未注册时）：紫底金边、与站内按钮同族 ✓ */
.tj-lockb{color:var(--tx-title)}
.tj-lockrow{display:flex;justify-content:center;padding:2px 0 12px}
.tj-lockbtn{font:inherit;font-size:14px;font-weight:700;color:#f6c56a;background:var(--t2);border:1px solid rgba(246,197,106,.5);border-radius:999px;padding:8px 22px;cursor:pointer}
.tj-lockbtn:active{transform:scale(.97)}

/* ===== 对照卡的两列格子：尾注允许收缩与换行（站长 2026-09-16：样本多了手机上必超框）=====
   原来 `.tj-sc-p` 是不换行的 flex、尾注 `<i>`（随机 3/4 · 样本不足）又不可收缩
   → 内容一长就**溢出本格、被邻列底色盖住** ✗（现样本只有 4 期，看着"没穿帮"而已）。
   加 flex-wrap + 让尾注可收缩，长内容就折到第二行 ✓。 */
.tj-sc-plays .tj-sc-p{flex-wrap:wrap}
/* ⚠️ 不能用 flex:1 1 auto「按需换行」——那样有的格一行、有的格两行，看着就是"依据乱跳"✗（站长 2026-09-16）。
   统一成**每格两行**：第一行＝玩法 + 数字，第二行＝依据（基准/随机/误差带）→ 左右齐平、永不错位 ✓ */
.tj-sc-plays .tj-sc-p i{flex:1 1 100%;min-width:0;white-space:normal;word-break:break-word;font-style:normal}

/* iOS 自动缩放（2026-09-18 站长："现在还会缩"）：iOS 在聚焦**字号 < 16px** 的输入框时会自动放大整页、失焦再缩回，
   看着就是"键盘一出来整个页面在缩" ✗。站点的 viewport 已设 maximum-scale=1，但 **TG 的 WebView 不保证认** ✗，
   所以最稳的是把输入框字号抬到 16px —— 只在**小程序里**抬（网页端保持原有排版 ✓）。 */
html.in-tg .cmt-input, html.in-tg #chatInput, html.in-tg .pc-input { font-size:16px; }

/* 评论弹窗打开时**隐藏底部导航**（2026-09-18 站长："键盘起来的时候 连同 tab 往上推 导致页面比例变小"）：
   键盘会把贴底的固定元素顶到屏幕中间 ✗ —— 网页区被夹在头部与它之间，比例就变小了 ✓。
   打字场景本来也不需要底部导航（弹窗自己盖着下面）→ 直接藏掉，页面可用的高度反而更多 ✓。 */
body.cmt-open .tabbar{display:none}

/* ============================================================================
   ===== 主题：墨白纸感（2026-09-19 试点）=====
   站长："直接墨白呢？渐变纸质感"。**先只做"变量层 + 图库页"**，其余页面（推演/论坛/统计/短剧）待点头后再过一遍。
   回滚方式：删掉本段即可 —— 上面那套深色主题原封不动，不受影响 ✓。
   注意：图库页有几个组件当初把颜色写死了（.card / .period-banner / .draw / .searchbox input），
   所以这里必须逐个覆盖，光改变量不够 ✓。
   ============================================================================ */
:root{
  --bg:#efe8d9 !important;
  --hdr-bg:linear-gradient(180deg,#fffdf8 0%,#f7f2e6 100%) !important;
  --hdr-solid:#fbf8f1 !important;
  --t1:rgba(74,58,32,.07) !important;    /* 纸上的淡色叠加＝淡墨，否则胶囊/按钮没有轮廓 */
  --t2:rgba(74,58,32,.13) !important;
  --t3:rgba(74,58,32,.22) !important;
  --t4:rgba(74,58,32,.36) !important;
  --page-solid:#efe8d9 !important;
  --tabbar-bg:linear-gradient(180deg,#fffdf8 0%,#f6f1e5 100%) !important;
  --card:rgba(255,255,255,.86) !important;          /* 纸上的"卡"＝更白的纸（半透明白叠加）*/
  --card-2:rgba(255,255,255,.55) !important;
  --surface:#fffdf8 !important;                     /* 面上更亮：与深色主题的层级方向一致（越高越亮）*/
  --surface-2:#ffffff !important;
  --surface-3:#f7f3ea !important;
  --well:#e6ddc9 !important;                        /* 凹槽（输入框）反而更深一点 */
  --line-neutral:rgba(74,58,32,.22) !important;
  --glass:rgba(252,250,245,.86) !important;
  --tx-title:#1b1a17 !important;                    /* 墨 */
  --tx-body:#4a4741 !important;
  --tx-dim:#57534b !important;
  --tx-weak:#6b665d !important;
  --tx-soft:#4a463f !important;
  --tx-soft-strong:#3b3831 !important;
  --tx-invert:#fdf8ec !important;                   /* 深金底上的字 */
  --gold:#a8802a !important;                        /* 深金：浅底上要够深才读得清（原来的亮金只够深底用）*/
  --gold-strong:#a8802a !important;
  --gold-line:rgba(168,128,42,.22) !important;
  --gold-line-strong:rgba(168,128,42,.5) !important;
  --gold-dim:#7a5c1c !important;
  --gold-light:#c9a24b !important;
  --gold-deep:#86661f !important;
  --tint-soft:rgba(74,58,32,.05) !important;
  --tint-line:rgba(74,58,32,.18) !important;
  --hit:#1f8f4d !important;                         /* 浅底上的"命中"要更深才看得清 */
  --miss:#c0392b !important;
  --heat-1:rgba(168,128,42,.16) !important;--heat-1-line:rgba(168,128,42,.38) !important;
  --heat-2:rgba(168,128,42,.45) !important;--heat-3:linear-gradient(180deg,#c9a24b,#86661f) !important;
  --sh-1:0 1px 3px rgba(96,74,40,.16) !important;
  --sh-2:0 3px 12px rgba(96,74,40,.20) !important;
  --sh-3:0 10px 30px rgba(96,74,40,.24) !important;
  --inner-hi:inset 0 1px 0 rgba(255,255,255,.75) !important;
  --surf-grad:linear-gradient(180deg,#ffffff 0%,#f7f3ea 100%) !important;
}
body{background:radial-gradient(1200px 520px at 50% -140px,#fffdf7 0%,#f6f2e9 55%)}
header{background:radial-gradient(120% 140% at 50% -40%,rgba(168,128,42,.06) 0%,rgba(168,128,42,0) 55%),rgba(252,250,245,.86);border-bottom:1px solid rgba(74,58,32,.16)}
.tabbar{background:radial-gradient(140% 160% at 50% -30%,rgba(168,128,42,.07) 0%,rgba(168,128,42,0) 55%),rgba(252,250,245,.88);border:1px solid rgba(74,58,32,.18)}
/* 纸纹：一层极淡的颗粒（SVG 湍流内联，零额外请求）；只在整页最上层、不吃点击 */
/* 纸纹**不要用 SVG feTurbulence**（2026-09-19 站长："图片加载卡滞了一些"）：那层滤镜每次重绘
   都要重新栅格化，安卓 WebView 上尤其贵 ✗。改成 64×64 的**静态 PNG 瓦片**，铺在 body 背景层里
   （也不再额外加一层 fixed 合成层）——观感几乎一样，开销可以忽略 ✓。 */
body{background-image:url("data:image/png;base64,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HEf06dMn5b33SZLoOI7x29sbWy6XwDkH0zSNAAAuiiKstSYIIZckiX99fY1CCNpa6wghoizLgH/88Uc5DIPy3iMI4ZymaSyEcAghhRCSxhijlCKLxQIul0v78vLiOOdqnmcCABjHceT39/dcSmkvl4t4fHzs4zgm17mvhRDCGIPW6zWcpkn2fW9/+OEHJqUMh8PBJEniX15eAiEki+OYzfOMhmGI8zwPzjlvraWr1Wo8Ho9ku93qYRjsZrPR+/0+urm58V3X8TiOobV2vLpDsO97NY5jIqWEQgi83+9127YoyzJVFEWIoghIKT3nHOIvX75E6/VaxXEs27YNbdsCa62ilBIppQkhRFVV2b7vadd16vHxEVBKk9fXV5VlGUzTlB8OB5QkiWuaBnRdx+d5ng+HQ0wpxeM46iiKMKWUHg4HsNlsCITQU0rtNE2+KIq4LEv6/v4+JkkSQgizUgqFEMIwDABCOGVZFoUQdFVVIIoihxBi8zzPXddhKSUCAChjTCCEZOr/JGlorVXGGCyEmKZp4owxMM+zRAjR0+kElVIKABAha+00z7Psug6uViv7+fNn1HWdGIYBUUoJhFA9PDxoAIBZrVbEWouHYdDb7VZfXwKmadqdTiejlPJSylkpRSGE4MOHD4O1lpzPZ8w5R1LKFmM8KKXo09MTz/OchxDAy8uLv7u7yxhjuixL+OnTJ6q1hkope39/z79//47btiVFUTgAALfWQq11XJalSdOUXal71nWd6fsecs5lmqZQSqmbpkmdc0ZKSZfLJYrjGG23W73b7fjb2xsgSZIwrTVdLBau73u+3+8nQgjqug5eub2RUsLdbheklPz5+dne3Nw4CGHEOden00kRQjCE0F+JkLLW2pubG621zhFCQUpplVJQKYW895JSOmGMBSFkPhwOc1EU/HK59ACAZLvdTj///PO4WCxAlmXucrm4NE1VmqZAa53XdR12u1376dMnByGMmqa5WGtlHMcAY2yfn5/xPM/g+fmZbzabablcWowxrut6+vjxIxuGQZ9Op3Sz2RgIoYb/9V//VTjnorquJwihStNUKqWAMYYlSaIghPjp6QktFgtbFIWpqko0TRMopdZ77z98+OAxxnEIATw9PfkkSYhz7hLHcbzf7/skSbBzDjHG5HK5DOfzWVlr6TAM0263gwgheD6fk+122zw/P8PtdpsC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"),radial-gradient(1200px 520px at 50% -140px,#fffdf7 0%,#efe8d9 55%) !important}
body{background-repeat:repeat,no-repeat !important}
/* —— 图库页里写死颜色的几个组件，逐个改到纸底上 —— */
.card{background:#ffffff !important;border:1px solid rgba(74,58,32,.20) !important;box-shadow:0 1px 2px rgba(96,74,40,.10) !important}
.card.fresh{border-color:rgba(168,128,42,.45) !important}

/* ===== 立体感：从缩略图开始（2026-09-21 站长："从图库的缩略图开始 就突出立体感"）=====
   与详情弹窗那套"相纸"**同一套语言**（`.pic-box`：图＝相纸、面＝托纸）—— 只是把它下移到列表 ✓，不发明新风格 ✗。
   ① **缩略图＝小相纸**：淡墨边 ＋ **自己的近距投影** ⇒ 图从卡片面上"浮起来"（这一步最便宜、立体感最强 ✓）；
   ② **卡片＝托纸**：**双层影**（近 1px 贴地 ＋ 远 4/12px 悬浮）＋ **顶部内高光**（面有厚度 ✓）＋ 极微纵向渐变（不是一块死平的白 ✓）；
   ③ **按压**：下沉 1px ＋ 影子收窄 ⇒ "贴近桌面" ✓（立体感在交互里也被感知 ✓；`.card` 本来就有 `transition:transform .12s` ✓ 会自己动起来）。
   ⚠️ 两条边界：**别浮太高** —— 纸上大而虚的影＝贴纸感 ✗（近影 1–2px、远影模糊 ≤12px 够用 ✓）；
   **不动 `img` 的底色** ✗ —— 那是**加载骨架屏**（`.card img.ld` 才关掉 ✓），改了就没了 ✓。
   卡片自带 `content-visibility:auto` ⇒ 屏幕外的卡不绘制，两层影的成本有界 ✓。 */
.card{background-image:linear-gradient(180deg,#ffffff,#f8f2e4) !important}
.card img{border:1px solid rgba(74,58,32,.22) !important;box-shadow:0 2px 5px rgba(60,44,20,.32),inset 0 0 0 1px rgba(255,255,255,.5) !important}
.card:active{transform:translateY(1px);box-shadow:inset 0 1px 0 rgba(255,255,255,.6),0 1px 2px rgba(96,74,40,.20) !important}
.card.fresh{box-shadow:inset 0 1px 0 rgba(255,255,255,.85),inset 0 -1px 0 rgba(74,58,32,.06),0 2px 3px rgba(96,74,40,.16),0 8px 20px rgba(168,128,42,.26) !important}
.period-banner{background:rgba(168,128,42,.07) !important;border-bottom-color:rgba(74,58,32,.18) !important}
.period-banner .pb-num{color:#fffdf7 !important}
.draw{background:radial-gradient(120% 90% at 50% -20%,rgba(168,128,42,.14) 0%,rgba(168,128,42,0) 55%),linear-gradient(160deg,#fffdf7,#f4efe2) !important}
.searchbox input{background:#fffefb !important;color:#2f2c26 !important;border:1px solid rgba(74,58,32,.24) !important}
.searchbox input::placeholder{color:#8a857c !important}
.chip{background:rgba(255,255,255,.7) !important;border-color:rgba(74,58,32,.24) !important;color:var(--tx-soft) !important}
.chip.on{background:linear-gradient(120deg,var(--gold),var(--gold-deep)) !important;border-color:transparent !important;color:#fdf8ec !important}
.pager button{background:linear-gradient(180deg,rgba(168,128,42,.14),rgba(168,128,42,.06)) !important;border:1px solid rgba(168,128,42,.34) !important;color:var(--gold-deep) !important}
.pager button:not(:disabled):active{background:linear-gradient(180deg,rgba(168,128,42,.34),rgba(168,128,42,.16)) !important;color:#fffdf7 !important}
.pgbtn{background:rgba(168,128,42,.12) !important;border:1px solid rgba(168,128,42,.4) !important;color:var(--gold-deep) !important}

/* —— 第二批：顶栏搜索条外壳 / 标签条 / 开奖球条 / 右上登录按钮（第一批漏掉的容器）—— */
.stickwrap{background:rgba(255,254,250,.96) !important}
.searchbox{background:rgba(255,254,250,.97) !important;border-bottom-color:rgba(74,58,32,.18) !important}
.tagrow{background:rgba(255,254,250,.95) !important;border-bottom-color:rgba(74,58,32,.18) !important}
.balls{background:rgba(74,58,32,.06) !important}
/* 逐颗直播时的"空位"（2026-09-21 晚）：老样式是**深色主题**那套（`.num.empty` = #141a22 深圆 ✗），
   纸主题从没覆盖过它 ⇒ 一开播就是"浅卡片上排着 7 个黑圆点" ✗（实测会很难看）。
   改成纸上的虚线空位 ✓ —— 只在开奖窗口那几分钟出现 ✓（平时 7 颗齐了就没有空位 ✓）。 */
.num.empty{background:rgba(74,58,32,.05) !important;border:1.5px dashed rgba(74,58,32,.28) !important;opacity:.8 !important}
#authBtn{background:rgba(255,255,255,.72) !important;border:1px solid rgba(74,58,32,.22) !important;color:var(--tx-title) !important}

/* —— 纸主题·清晰度补丁（2026-09-19 站长："有些字不清晰"）—— */
.ball .zx{color:#57534b !important}
.draw .qihao{color:#4a463f !important}
.pb-sub{color:#4a463f !important}
.tabbar button{color:#3b3831 !important}
.tabbar button span{color:#6b665d !important}
.tabbar[data-tabready] button.active{color:var(--gold-deep) !important}
.tabbar[data-tabready] button.active span{color:var(--gold-dim) !important}

/* ===== 墨白纸感 · 第三批：其余页面的面板/弹层/底栏/角按钮（2026-09-19，按站长"其余也过一遍"）=====
   ⚠️ 有意**保持深色**的：.fullimg（看图灯箱）、.mv-player（播放器）、.mask（遮罩）、.num（开奖球）——
   这些在浅色界面里本来就该是深底，改成纸反而难看 ✗。 */
.sheet{background:linear-gradient(165deg,rgba(168,128,42,.05) 0%,rgba(168,128,42,0) 32%),linear-gradient(180deg,#fffdf8 0%,#f8f4ea 58%,#f4efe3 100%) !important;border-color:rgba(74,58,32,.24) !important}
.sheet .top{background:linear-gradient(180deg,rgba(255,253,248,.98),rgba(250,246,238,.94)) !important}
.sheet .top h2{color:var(--tx-title) !important}
.mv-sheet .mv-in{background:linear-gradient(180deg,#fffdf8,#f6f1e5) !important;border:1px solid rgba(74,58,32,.24) !important}
.cmt-card{background:linear-gradient(165deg,rgba(168,128,42,.05) 0%,rgba(168,128,42,0) 32%),linear-gradient(180deg,#fffdf8 0%,#f8f4ea 58%,#f4efe3 100%) !important;border-color:rgba(74,58,32,.18) !important;box-shadow:0 14px 34px rgba(96,74,40,.22) !important}
.myposts{background:linear-gradient(180deg,#fffdf8,#f6f1e5) !important;border-top:1px solid rgba(74,58,32,.22) !important}
.myposts-h{border-bottom-color:rgba(74,58,32,.18) !important}
.myposts-h b{color:var(--gold-deep) !important}
.f3-gotop{background:rgba(255,255,255,.86) !important;border-color:rgba(74,58,32,.18) !important;color:var(--tx-body) !important}
.f3-gotop:active{background:rgba(168,128,42,.18) !important}
footer.foot{background:transparent !important;border-top-color:rgba(74,58,32,.18) !important}
.foot{color:var(--tx-weak) !important}
/* 论坛里那几枚浮在小图上的胶囊（深底金字）→ 纸上改成白底深金，仍要"浮在图上"读得清 */
#pageChat.posts .post-imgprev button,
#pageChat.posts .post-img .pi-hint{background:rgba(255,255,255,.9) !important;border-color:rgba(168,128,42,.5) !important;color:var(--gold-deep) !important}

/* —— 纸主题·第四批：统计页未选中的分类按钮（原来是深色块，纸上一片黑 ✗）—— */
.st-tabbtn{background:rgba(255,255,255,.88) !important;border:1px solid rgba(74,58,32,.2) !important;color:var(--tx-body) !important}
.st-tabbtn.on{background:linear-gradient(120deg,var(--gold),var(--gold-deep)) !important;color:#fdf8ec !important;border-color:transparent !important}

/* ===== 纸主题 · 对比度审计修正（2026-09-19，按"逐屏算对比度"的结果，不靠眼睛）=====
   审计口径：正文/小字要 ≥4.5:1、大字（≥18.7px 或加粗≥14px）要 ≥3:1。
   下面每条后面标的是实测值（改前）。 */
header h1{color:var(--gold-deep) !important;text-shadow:none !important}                    /* 1.51 金标题在纸上太浅 */
.sheet-close{color:#4a463f !important}                                                       /* 1.55 关闭叉 */
.cd,.cdnum,.cdsep{color:var(--gold-deep) !important}                                         /* 1.57 倒计时 */
.tj-hit{color:var(--hit) !important}                                                         /* 1.40 推演的"中"字样 */
.af-btn{color:var(--gold-deep) !important}                                                   /* 1.57 申请重置 */
header .tagline,header .tagline span{color:var(--tx-dim) !important}                          /* 2.11 副标题 */
.mv-fin{color:#4a463f !important;background:rgba(255,255,255,.92) !important}                 /* 1.19 已完结角标 */
/* 统计页热度格：暖金底上是近白色字（1.06，最糊的一处）→ 改成深褐字 */
[class*="heat"] .c,[class*="heat"] .n,.hg-cell .c,.hg-cell .n{color:#4a3a18 !important}

/* ===== 纸主题 · 对比度审计修正 · 第二轮（2026-09-19）=====
   规律：纸上凡是"金当文字"或"金当底 + 浅色字"的组合都不达标 →
   统一成"金当文字用深金；金当底用深墨字"。 */
.pb-num{color:#1b1a17 !important}                       /* 1.57 金底上的近白字 → 深墨字 */
.tj-lockbtn{color:#1b1a17 !important;background:linear-gradient(120deg,var(--gold),var(--gold-deep)) !important;border-color:transparent !important}  /* 1.60 */
.af-btn,.tj-tr-tg,.tj-ai{color:var(--gold-deep) !important}   /* 3.57~3.63 */
#pageChat.posts b,[class*="mv-lock"]{color:#4a463f !important} /* 3.57 / 3.61 */
.auth-label{color:var(--tx-dim) !important}                    /* 2.44 表单标签 */
.primary{color:#1b1a17 !important}                             /* 3.42 金底按钮上的字 */
/* 开奖球：白字在浅色球上对比不足（2.16）→ 三个波色整体压深一档（仍是红/蓝/绿，语义不变） */
:root{--wave-red:#a52f24 !important;--wave-blue:#1e56b0 !important;--wave-green:#17803f !important}

/* ===== 纸主题 · 对比度审计修正 · 第三轮（收敛）=====
   实测教训：① "深金 #a8802a 当小字"在纸上也只有 ~3.6:1 ✗ → 纸上金当文字统一降到 #7d5f19（≈5:1）；
   ② 别人用**更具体的选择器**写过的，必须用同等或更高的具体度覆盖（`.period-banner .pb-num`）；
   ③ 开奖球的渐变是**写死**的（不走变量）→ 单独压深。 */
:root{--gold:#7d5f19 !important;--gold-strong:#7d5f19 !important;--gold-dim:#6a4f16 !important;--gold-light:#9c7a24 !important;--gold-deep:#5b4514 !important}
.period-banner .pb-num{color:#1b1a17 !important}
.num.w-red{background:radial-gradient(circle at 32% 26%,#c9685c,#a52f24 52%,#5f170f) !important}
.num.w-blue{background:radial-gradient(circle at 32% 26%,#6f92d0,#1e56b0 52%,#10295c) !important}
.num.w-green{background:radial-gradient(circle at 32% 26%,#4faf78,#17803f 52%,#0a4a22) !important}
.tj-sc-no,.tj-hit,.tj-ai,.tj-tr-tg,.af-btn,.cd,.cdnum{color:#6a4f16 !important}

/* ===== 纸主题 · 第四轮（收口）：只剩"白字在浅色球上"和"墨字在亮金按钮上"两处临界 ===== */
.num.w-red{background:radial-gradient(circle at 32% 26%,#b8554a,#8f2419 52%,#4d1209) !important}
.num.w-blue{background:radial-gradient(circle at 32% 26%,#5f82c4,#17458f 52%,#0b1f47) !important}
.num.w-green{background:radial-gradient(circle at 32% 26%,#3f9a63,#116b33 52%,#073d1c) !important}
.tj-lockbtn,.primary{background:linear-gradient(120deg,#c9a24b,#7d5f19) !important;color:#fffdf7 !important;border-color:transparent !important}
/* 收口②：这两枚按钮的白字要配**更深的金底**才达标（亮金底 + 白字 = 2.36 ✗；深金底 + 白字 ≈ 5.5 ✓） */
.tj-lockbtn,.primary{background:linear-gradient(120deg,#8a6a1e,#5b4514) !important;color:#fffdf7 !important}

/* ===== 纸主题 · 加载动画/骨架屏（2026-09-19 站长："图库的加载动画在这个色调下看着是坏的"）=====
   骨架块原来是写死的**深色**渐变（#151b23→#1c2530）→ 纸底上就是一块块黑斑 ✗。改成暖浅灰微光。 */
.card img,.card.skel .sk-thumb,.card.skel .sk-line{background:linear-gradient(100deg,#e9e1d0 40%,#f8f4ea 50%,#e9e1d0 60%) !important;background-size:200% 100% !important}
.ph,.imgph,[class*="skel"]{background:linear-gradient(100deg,#e9e1d0 40%,#f8f4ea 50%,#e9e1d0 60%) !important;background-size:200% 100% !important}
.spin{border-color:rgba(125,95,25,.25) !important;border-top-color:var(--gold) !important}

/* ===== 纸主题 · 弹层内部审计修正（2026-09-19，"展开后根本看不清"的两处）=====
   ⚠️ 这两处**只在弹层打开时才可见**（折叠状态下尺寸为 0，前面的审计扫不到 ✗）——
   所以"换完色再扫一遍"必须**把弹层也打开**，否则就是假达标。 */
.sub-pill{background:rgba(125,95,25,.10) !important;border:1px solid rgba(125,95,25,.42) !important;color:#4a3a12 !important}   /* 1.58 半透明金字 ✗ */
.sub-pill.on{background:linear-gradient(120deg,#c9a24b,#7d5f19) !important;border-color:transparent !important;color:#fffdf7 !important}
.wall-strip,.draw-strip{background:rgba(255,254,250,.92) !important;border-color:rgba(74,58,32,.18) !important}
.wall-strip .strip-note,.draw-strip .strip-note{color:#4a463f !important}   /* 2.44 深字压深底 ✗ */

/* ===== 纸主题 · 表单控件修正（2026-09-19 站长："上一页下一页的中间页数胶囊不清晰"）=====
   ⚠️ 原来审计扫不到这类：脚本只看**文本节点**，而 `<input>` 的字在 `value` 里 ✗ → 审计"通过"但人眼一片空白。
   纸上所有输入框一律：淡墨底 + 深墨字 + 看得见的边。 */
.pager .pgin,.pager input,input,textarea,select{color:var(--tx-title) !important}
.pager .pgin,.pager input{background:rgba(74,58,32,.06) !important;border:1px solid rgba(74,58,32,.24) !important}
input::placeholder,textarea::placeholder{color:#7c776d !important}

/* ===== 纸主题·图库筛选按钮轮廓 =====
   纸面控件沿用 `--line-neutral` 中性描边，并为未选中状态提供不透明底，避免融入页面。 */
.gallery-local-btn:not(.on),.gallery-local-clear{background:#fffefb !important;border:1px solid rgba(74,58,32,.24) !important;color:var(--tx-body) !important}
.gallery-local-btn.on{background:linear-gradient(120deg,#c9a24b,#7d5f19) !important;border-color:transparent !important;color:#fffdf7 !important}
.hdr-btn{border:1px solid rgba(74,58,32,.28) !important;background:rgba(255,255,255,.9) !important}
.hist-btn{background:#fffefb !important;border:1px solid rgba(74,58,32,.26) !important}
.chip{background:#fffefb !important;border:1px solid rgba(74,58,32,.24) !important}
.st-tabbtn{background:#fffefb !important;border:1px solid rgba(74,58,32,.24) !important}
.year-btn{background:#fffefb !important;border:1px solid rgba(74,58,32,.26) !important}
.pager .pgin,.pager input{background:rgba(74,58,32,.09) !important;border:1px solid rgba(74,58,32,.32) !important}
.pager button{border-color:rgba(125,95,25,.55) !important}
.st-range-btn{background:#fffefb !important;border:1px solid rgba(74,58,32,.24) !important}
.auth-tab{border:1px solid rgba(74,58,32,.22) !important}
.auth-input{background:#fffefb !important;border:1px solid rgba(74,58,32,.26) !important;color:var(--tx-title) !important}
/* 顶栏副标题 10px 偏小（自动审查按 <10.5px 报出）→ 提到 11px */
header .tagline,header .tagline span{font-size:11px !important;color:var(--tx-dim) !important}
/* 小字下限：开奖球下的生肖、折叠箭头等 10px → 11px（自动审查按 <10.5px 报出） */
.ball .zx,header .tagline span,.fold-ar,.tj-tr-ar,[class*="ar-"]{font-size:11px !important}

/* ===== 纸主题 · 弹窗层次（2026-09-19 站长："弹窗现在没有层次感了"）=====
   换纸之后弹窗和页面、以及弹窗自己的头部都是同一片浅色 → 糊成一层 ✗。补回三层：
   ① 遮罩：暖调压暗（原来是冷黑）；② 弹窗外框：亮纸 + 更重的阴影 + 一条实边（从页面上"浮起来"）；
   ③ 头部条：比正文纸色**略深一档** + 下沿分隔线（一眼看出哪儿是标题栏）。 */
.mask{background:rgba(42,33,20,.58) !important}
.sheet{border:1px solid rgba(74,58,32,.22) !important;box-shadow:0 20px 52px rgba(52,38,16,.38),0 2px 6px rgba(52,38,16,.16) !important}
.sheet .top{background:linear-gradient(180deg,#f2ead8 0%,#ece3cf 100%) !important;border-bottom:1px solid rgba(74,58,32,.18) !important}
.sheet .top h2{color:#2b261d !important}
.sheet .body{background:transparent !important}
.mv-sheet .mv-in{border:1px solid rgba(74,58,32,.22) !important;box-shadow:0 20px 52px rgba(52,38,16,.38) !important}
.cmt-card{border:1px solid rgba(74,58,32,.22) !important;box-shadow:0 20px 52px rgba(52,38,16,.38) !important}
.myposts{border-top:1px solid rgba(74,58,32,.18) !important;box-shadow:0 -8px 26px rgba(52,38,16,.2) !important}
/* 弹窗里"行/卡"与弹窗底之间也要有一档差，否则弹窗内部同样糊 */
.sheet .card,.sheet .row,[class*="sheet"] .card{background:#fffefb !important;border:1px solid rgba(74,58,32,.14) !important}

/* ===== 纸主题 · 会员中心（个人中心）修正（2026-09-19 站长："个人中心是重灾区，很多字不清晰"）=====
   实测：任务卡标题 1.17:1、任务按钮 1.58:1、退出登录 1.87:1 —— 全是"深色主题的浅字" ✗。
   这页当初为深底设计，换纸后必须整页过一遍：标题→深墨、金按钮→深金底白字、危险按钮→深红字、副标→11px。 */
.acc-task-t{color:#2b261d !important}
.acc-task-b{background:linear-gradient(120deg,#c9a24b,#7d5f19) !important;border-color:transparent !important;color:#fffdf7 !important}
.acc-logout{background:rgba(192,57,43,.10) !important;border:1px solid rgba(192,57,43,.45) !important;color:#8f2419 !important}
.acc-card b,.acc-row b,[class*="acc"] b{color:#4a463f !important}
.acc-edit{color:var(--gold-deep) !important}
.acc-row{color:var(--tx-body) !important}
.acc-edit[style*="10px"]{font-size:11px !important}
.mv-hist-empty{color:var(--tx-dim) !important}
.auth-err{color:#a52f24 !important}
.ui-btn{background:#fffefb !important;border:1px solid rgba(74,58,32,.26) !important;color:var(--tx-title) !important}
.sheet-close{background:#fffefb !important;border:1px solid rgba(74,58,32,.24) !important;color:#4a463f !important}
/* 会员中心收口：任务状态字 / 折叠标题 / 任务按钮（渐变太亮→压深）/ 两个装饰箭头 10→11px */
.acc-task-s{color:#3f6b2a !important}
summary{color:var(--tx-title) !important}
.acc-task-b{background:linear-gradient(120deg,#8a6a1e,#5b4514) !important;color:#fffdf7 !important}
.pick-ar,.er-ar{font-size:11px !important}

/* ===== 圆角一致（2026-09-19 站长："图库的六肖/三肖候选框子还是直角"）=====
   实测：搜索行是「下沿 12px 圆角」，紧接在下面的筛选行（.tagrow，六肖/九肖/平特…那一整条）却是直角 ✗
   → 一个圆角块接一个直角块，看着就是断的。这里把筛选行补成同样的下沿圆角，
   并把期号条也收成圆角块，让"搜索 + 筛选 + 期号"这组看起来是同一种构件。 */
.tagrow{border-radius:0 0 14px 14px !important}
.period-banner{border-radius:12px !important}

/* 筛选行（六肖/九肖/平特…那一条）原来**通栏 + 上沿直角** ✗ → 收成与搜索行同款的圆角卡：
   左右各留 13px（与 .searchbox 对齐）、四角 14px、去掉通栏的底边线（卡片自己带边 ✓）。 */
.tagrow{margin:0 13px !important;border-radius:14px !important;border-bottom:1px solid rgba(74,58,32,.12) !important}

/* ===== 搜索区收口（2026-09-19 站长："它和搜索框黏在一起了" + 广告框直角溢出）=====
   实测：搜索框与筛选行之间只有 **1px** 缝 ✗（像是同一个块被切开）；且两者都是"上直下圆"的半圆角 ✗。
   另外广告位（只在 TG 里显示）描边是深蓝灰 #232b35 ✗ —— 纸上就是一圈硬黑边，且空态时仍可能占位。 */
.searchbox{background:transparent !important;border-bottom:0 !important;border-radius:0 !important;padding:8px 13px !important}
.stickwrap{background:transparent !important}
/* 搜索框本体（卡片）与筛选卡之间留出 10px 呼吸，且四角都圆 */
.searchbox input{border-radius:12px !important}
.searchbox .s-go,.searchbox button{border-radius:12px !important}
.tagrow{margin-top:2px !important}
/* 缝不够（实测 3px）：两张卡之间给足 10px，视觉上才分得开 */
.tagrow{margin-top:10px !important}

/* ===== 左边缘对齐（2026-09-19 站长："这个长度没有对齐上下"）=====
   实测那一列：卡片左边缘 328、筛选卡 331、**期号条 318（通栏 ✗）** —— 三种宽度混着 ✗。
   统一到 10px 内缩（＝卡片那条线）：期号条、筛选卡、搜索行、开奖卡全部对齐 ✓。 */
.period-banner{margin:10px 10px 0 !important}   /* 上边距：它和上面的筛选卡原来是 0（"黏在一起"，2026-09-19 站长指出），整页节奏是 10~11px */
.tagrow{margin-left:10px !important;margin-right:10px !important}
.searchbox{padding-left:10px !important;padding-right:10px !important}
.draw{margin-left:10px !important;margin-right:10px !important}
/* 搜索行的外层（.stickwrap，吸顶容器）还是 12px 内缩 → 与其它 10px 差 2px，统一掉 */
.stickwrap{margin-left:10px !important;margin-right:10px !important}

/* ===== 让"图"有存在感（2026-09-19 站长："图库弹窗的图如何做得有突出感 还有论坛的图"）=====
   纸上最自然的做法是**把它当一张相纸**：白卡托底（相纸留白）+ 淡墨边 + 柔和投影，
   图与"界面"就分开了；论坛的图同理，但那边的容器高度是**钉死的**（相册模式），所以只加边与影、不加内边距 ✓。 */
.pic-box{padding:10px !important;background:#fffdf8 !important;border:1px solid rgba(74,58,32,.16) !important;border-radius:14px !important;box-shadow:0 6px 22px rgba(60,44,20,.16) !important}
.pic-box img{border-radius:8px !important;box-shadow:0 1px 4px rgba(60,44,20,.14) !important}
#pageChat.posts .post-img,#pageChat.posts .post-imgs{border-radius:12px !important;overflow:hidden !important;border:1px solid rgba(74,58,32,.14) !important;box-shadow:0 5px 18px rgba(60,44,20,.16) !important}
/* 托纸改深一档：图系多为白底扫描件，压在白卡上等于没有边 ✗ → 换成比正文纸深一档的暖灰纸，
   白图才"浮"得出来；这条是"看效果再调"的（2026-09-19）。 */
.pic-box{background:#f3ede0 !important;box-shadow:inset 0 1px 0 rgba(255,255,255,.6),0 6px 22px rgba(60,44,20,.18) !important}
/* 装裱感的最后一笔：图与托纸之间需要一条**细分隔线**，否则白扫描件和托纸糊成一整块 ✗ */
.pic-box{padding:12px !important}
.pic-box img{border:1px solid rgba(74,58,32,.16) !important}

/* ===== 两处修正（2026-09-19 站长发图指出）=====
   ① 图库那排筛选胶囊的类是 **`.tag`**（不是我之前改的 `.chip` ✗）→ 白底(86%)压在白卡(95%)上、描边只有 .13 ✗
      → 整排"看不见了"。这里给足边界：近白底 + 明显的淡墨边。 */
.tag{background:#fffefb !important;border:1px solid rgba(74,58,32,.26) !important;color:var(--tx-body) !important}
.tag:active,.tag.on{background:linear-gradient(120deg,#c9a24b,#7d5f19) !important;color:#fffdf7 !important;border-color:transparent !important}
/* ② 图库卡片的缩略图太平（没有边与影）→ 加一圈淡墨边 + 一点影，让它从卡片上"立"起来 ✓ */
.card img{border:1px solid rgba(74,58,32,.20) !important;box-shadow:0 2px 6px rgba(60,44,20,.16) !important}

/* ===== 绿色命中在纸上不清晰（2026-09-19 站长发图指出）=====
   中/未中的徽章与"命中高亮"的芯片原来都是深色主题的**浅绿** ✗ → 纸上一片糊。
   纸主题：徽章＝深绿字 + 明显绿底 + 绿边；高亮芯片＝同样的绿系，但字要够深 ✓。 */
.tj-hit{background:rgba(31,143,77,.16) !important;border:1px solid rgba(31,143,77,.5) !important;color:#136b39 !important}
.tj-miss,.tj-chip-hit.miss{background:rgba(192,57,43,.12) !important;border-color:rgba(192,57,43,.4) !important;color:#8f2419 !important}
.chip.hit,.tj-chip.hit{background:rgba(31,143,77,.18) !important;border:1px solid rgba(31,143,77,.55) !important;color:#0f5f32 !important}

/* 命中对照·成绩单（2026-09-19 站长："特别是命中对照 纯正的文字填充 设计一下"）——
   合计一行 + 两组带 ✓/✗ 的芯片：中=绿、未中=灰红，与"中/未中"徽章同一套色（纸上够深 ✓）。 */
.tj-res{margin-top:4px}
.tj-res-sum{font-size:13px;color:var(--tx-body);margin:2px 0 10px}
.tj-res-sum b{font-size:22px;font-weight:800;color:#136b39;margin-right:2px;vertical-align:-1px}
.tj-res-sum span{font-size:12px;color:var(--tx-dim);margin-left:2px}
.tj-res-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.tj-res-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:11px;font-size:12px;font-weight:600;border:1px solid transparent}
.tj-res-chip i{font-style:normal;font-weight:800;font-size:11px;padding:1px 5px;border-radius:7px}
.tj-res-chip.ok{background:rgba(31,143,77,.14);border-color:rgba(31,143,77,.45);color:#136b39}
.tj-res-chip.ok i{background:#136b39;color:#f3fbf6}
.tj-res-chip.no{background:rgba(120,110,95,.12);border-color:rgba(120,110,95,.38);color:#57534b}
.tj-res-chip.no i{background:rgba(192,57,43,.92);color:#fff}

/* ===== 骨架屏的"黑带划过"（2026-09-19 站长："黑色直接划过…特别是短剧的图片加载骨架"）=====
   ⚠️ 根因：骨架的微光不是元素背景，而是**压在上面的 `::before` 层**（`.ph::before`/`.mv-ph::before`/`.sk-*::before`…）
   —— 我上一轮只改了元素自身 background ✗，那层深色 `::before` 照样在黑底上划过 ✗✓。
   短剧那套还是**紫黑**（#17122b→#221a3d）✗ → 一并换成暖浅灰微光。 */
.ph::before,.wall-item::before,
.card.skel .sk-thumb::before,.card.skel .sk-line::before,
.card img::before,.wall-item img::before,
.mv-ph::before,.mv-ph img::before,
#wall .wcell.skel::before,[class*="skel"]::before,[class*="ph"]::before{
  background-image:linear-gradient(100deg,#e9e1d0 40%,#f8f4ea 50%,#e9e1d0 60%) !important;
}
.mv-ph img,.wall-item img,.card img{background:linear-gradient(100deg,#e9e1d0 40%,#f8f4ea 50%,#e9e1d0 60%) !important;background-size:200% 100% !important}
.mv-ph{background:#efe8d9 !important}

/* ===== 绿色"命中"族收口 + 未中改红（2026-09-19 站长第二次发图："命中的绿色还是不清晰 另外未中的逻辑应该是红色"）=====
   上一轮只改了 `.tj-hit` **一个字**，可"绿"是一族，漏掉的正是站长天天看的那块：
   ① **行内高亮芯片 `.tj-pk.hit`**（9肖/6肖/3肖/1肖/平特/尾数/波色/单双/大小 每行里"中的那一个"）
      —— 它压根没被覆盖，还是深色主题的浅绿 `#86efac`：白纸上约 1.5:1，等于看不见 ✗（"还是不清晰"就是它）；
   ② **`.tj-hit` 没带 `.y` 限定** —— 于是"未中"（`.tj-hit.n`）跟着吃了绿底绿字 ✗；按语义它该是红的；
   ③ 同族浅绿还散在论坛/聊天/个人中心（`.hit-tag.y` / `.pk.hit` / `.chat-lv.lv2` / `.lv-lv.lv2` /
      `.acc-sign.done` / `.acc-task-s.on` / `.post-pin` / `.mp-ok` …）—— 一并压深，免得下一屏又被点出来。
   口径：**绿=命中**（深绿字 #136b39 + 深绿描边 + 14% 深绿底）；**红=未中**（深红字 #a02a1c + 深红描边 + 12% 深红底）。
   注意 `.hit-tag.n` 里混着"待开奖"（不是未中），所以**不能**跟着染红 —— 只有推演的 `.tj-hit.n` 是纯"未中"。 */
/* ⚠️ 这两族原来含 `.post-pin`（置顶在深色主题里确实是绿的）—— 2026-09-20 摘掉：
   它不属于「命中」语义，且这两条带 !important ⇒ 会盖掉纸主题那句「置顶＝金色」、
   给它留下一抹**没有内边距**的绿底 ⇒ 8px 圆角直接切在「置顶」两个字角上，
   站长看到的就是「胶囊背景太小、没全覆盖置顶两字」✗（正确写法见下面 .post-pin 那条）。 */
.tj-pk.hit,.tj-hit.y,.hit-tag.y,.pk.hit,.s-chip.w-green,.pick-chip.w-green,.pk.w-green,
.chat-lv.lv2,.lv-lv.lv2,.acc-sign.done,.acc-task-s.on,.mp-ok,.post-hidden .ph-tip.free,.tj-w-g{color:#136b39 !important}
.tj-pk.hit,.tj-hit.y,.hit-tag.y,.pk.hit,.s-chip.w-green,.pick-chip.w-green,.pk.w-green,
.chat-lv.lv2,.acc-sign.done{background:rgba(31,143,77,.14) !important;border-color:rgba(31,143,77,.45) !important}
.tj-w-g{border-color:rgba(31,143,77,.45) !important}
.tj-hit.n{background:rgba(192,57,43,.12) !important;border:1px solid rgba(192,57,43,.42) !important;color:#a02a1c !important}
.tj-res-chip.no{background:rgba(192,57,43,.10) !important;border-color:rgba(192,57,43,.38) !important;color:#a02a1c !important}

/* 波色芯片：绿已在上一条压深，红/蓝是同一族的浅色（#f87171 2.69:1 / #60a5fa ~2.7:1 ✗）→ 一并加深，
   深色值沿用本站已有的语义色（开奖球那套 #b8554a / #5f82c4 同源），保证"红就是开奖球那个红"。 */
.tj-w-r{color:#a3271b !important;border-color:rgba(184,85,74,.55) !important}
.tj-w-b{color:#1c4f9c !important;border-color:rgba(95,130,196,.55) !important}

/* ===== 第七轮·角落收口（2026-09-19 站长："改色后 再审查 bug 一个角落都不可错过"）=====
   这一轮专门扫**只有登录/有数据时才渲染**的角落 —— 逐 tab 审计看不见它们（元素当时不在 DOM 里）。
   做法：把渲染函数里的**真实类名**注入线上页（含 `#pageChat.posts` 这种祖先）量计算样式，
   一次量出 34 处不达标，按区域收口。**判据不是"深色主题残留"这个标签，而是实测比例。** */

/* ① 论坛发料：选肖胶囊 + 波色芯片（.s-chip/.pick-chip/.pk × w-red/w-blue；绿上轮已改） */
#pageChat.posts .pick-sum .s-chip{color:#7d5f19 !important;background:rgba(168,128,42,.12) !important;border-color:rgba(168,128,42,.45) !important}
#pageChat.posts .pick-sum .s-chip.w-red,#pageChat.posts .pick-chip.w-red,#pageChat.posts .pk.w-red{color:#a3271b !important;background:rgba(192,57,43,.12) !important;border-color:rgba(192,57,43,.45) !important}
#pageChat.posts .pick-sum .s-chip.w-blue,#pageChat.posts .pick-chip.w-blue,#pageChat.posts .pk.w-blue{color:#1c4f9c !important;background:rgba(28,79,156,.12) !important;border-color:rgba(28,79,156,.45) !important}
#pageChat.posts .pick-chip{color:#5f5a4e !important}
/* 选中态：底色从浅变深了，原来的深字要换成浅字 */
#pageChat.posts .pick-chip.w-red.on,#pageChat.posts .pick-chip.w-blue.on,#pageChat.posts .pick-chip.w-green.on{color:#fffdf7 !important}

/* ② 等级徽章（lv3 蓝 / lv4 紫 / lv5 金 —— 只有 lv2 在上轮被改到） */
.chat-lv.lv3,.lv-lv.lv3{color:#1c5fa8 !important}
.chat-lv.lv4,.lv-lv.lv4{color:#6b3fa0 !important}
.chat-lv.lv5,.lv-lv.lv5{color:#7d5f19 !important}
.chat-lv.lv3{background:rgba(28,95,168,.12) !important;border-color:rgba(28,95,168,.4) !important}
.chat-lv.lv4{background:rgba(107,63,160,.12) !important;border-color:rgba(107,63,160,.4) !important}
.chat-lv.lv5{background:rgba(168,128,42,.16) !important;border-color:rgba(168,128,42,.5) !important}
.chat-msgrow.cl2 .chat-bub{border-left-color:#136b39 !important}

/* ③ 个人中心（历史重灾区）：昵称输入框是白字、选肖是浅紫、未中是浅红 */
.mp-picks{color:#7d5f19 !important}
.mp-no,.mp-hidebtn.on{color:#a3271b !important}
.mp-hint{color:#6b665d !important}
.acc-nick{color:#2b261d !important}
.acc-lvrow .acc-c{color:#5f5a4e !important}
.av-upbtn.ghost{color:#4a463f !important;border-color:rgba(168,128,42,.45) !important}

/* ④ 更新提示 + 新手引导卡（原深色弹窗：底色变纸白后，正文近白字＝1.02:1） */
.upd-ver{color:#3f3b34 !important}
.upd-pct{color:#7d5f19 !important}
.upd-bar{background:rgba(74,58,32,.12) !important;border-color:rgba(168,128,42,.35) !important}
.ob-card .ob-t,.ob-card .ob-c b{color:#7d5f19 !important}
.ob-card .ob-c{color:#3f3b34 !important}
.ob-card .ob-dots i{background:rgba(74,58,32,.20) !important}
.ob-card .ob-dots i.on{background:#7d5f19 !important}
.ui-card{background:#fffefb !important;border-color:rgba(74,58,32,.18) !important;box-shadow:0 18px 48px rgba(58,45,20,.26) !important}
.ui-mask{background:rgba(58,45,20,.42) !important}

/* ⑤ 发料对照气泡（f3）：`.f3-chat-name` 的浅紫是 D2 时代"统一紫色"的遗留 */

/* ⑥ 统计 tab 的散件（与独立统计页同一套口径） */
.st-range-opt.on{background:linear-gradient(90deg,rgba(168,128,42,.20),rgba(168,128,42,.08)) !important;color:#7d5f19 !important}
.st-mini{background:#f7f2e6 !important;border-color:rgba(74,58,32,.14) !important}
.st-mini .v{color:#7d5f19 !important;text-shadow:none !important}
.st-hcell.lv1 .c,.st-bar-row .ct,.st-drow .qihao,.st-dz.st-sep{color:#7d5f19 !important}
.st-hcell.lv3{background:linear-gradient(180deg,#dcae4e,#b08a34) !important;color:#241c07 !important}
.st-hcell.lv3 .c{color:#3d2f00 !important}
.st-hcell.skel{border-color:rgba(74,58,32,.10) !important}
.st-bar-row .track{background:rgba(74,58,32,.14) !important;border-color:rgba(74,58,32,.18) !important}

/* ⑦ 零散：图系列表期号、卡片角标、"更多"、图墙日期条、六合彩3分页脚 */
.ditem .qihao,.wall-strip .qihao,.draw-strip .qihao,.f3h-qihao,.f3-fold,.f3-top,.f3-gotop,.inst-guide b,.s-clear,
.wday-bar-cnt,.wday-y,.wday-d,.wday-selopt,.wday-t span{color:#7d5f19 !important}
.card.late .badge-min{background:rgba(58,45,20,.80) !important;color:#f6f1e4 !important;border-color:transparent !important}
.more{color:#1c5fa8 !important}

/* ===== 第八轮·补三条（同一轮审计里"渐变底/裁切文字"造成的真问题）===== */

/* ① 开奖期号：`.draw .qihao` 是 **background-clip:text**（文字＝渐变本身），渐变还是"亮金→深金"，
   在纸上约一半的字是 1.3:1 —— 看着像"期号发虚"。文字色的 !important 对它无效（填充是渐变）。 */
.draw .qihao{background-image:linear-gradient(90deg,#8a6a1e,#5b4514 60%,#7d5f19) !important;-webkit-background-clip:text !important;background-clip:text !important;-webkit-text-fill-color:transparent !important}
/* ② 期号胶囊：底色渐变里还留着亮金 #f6c56a，后半截压深色字读不出来 → 整条落在浅金区间 + 墨字 */
.period-banner .pb-num{background:linear-gradient(90deg,#e8c46e,#c9a24b) !important;color:#241c07 !important}
/* ③ 开奖球之间的"＋"分隔符（浅蓝灰 2.93:1） */
.draw .sep,.drow1 .sep{color:#6b665d !important}
/* ④ 短剧：深金实底上仍是深色字（深色主题时代 --gold 是浅金，现在是深金）→ 翻成浅字 */
.mv-op.on,.mv-fin.up,.mv-note-a{color:#fffdf7 !important}
/* ⑤ 会员中心：说明小字与"取消"再压深一档（3.27 / 4.40 实测） */
.acc-sub{color:#5f5a4e !important}
.acc-logout{color:#a02a1c !important}
/* ⑥ 输入框占位符：深色主题的浅灰在纸上只有 2.9~3.9:1，是"看不见提示字"的经典坑 */
::placeholder{color:#6b665d !important;opacity:1 !important}

/* ⑦ 两个**从未被纸主题覆盖过**的变量（2026-09-19 全变量对齐时发现）：
   `--tx-faint` 是深色主题的蓝灰小字色（纸上 2.9:1 ✗，`.sep`/状态行/脚注都吃它）；
   `--white-line` 是白色淡描边（纸上是"白压白"，等于没有分隔线 ✗）。 */
:root{--tx-faint:#6b665d !important;--white-line:rgba(74,58,32,.13) !important}

/* ===== 第九轮：修**上一轮自己引入的回归**（复验时被真类名注入抓出来）+ 把 4.2~4.48 的边角压到达标 =====
   回归的根因都是同一条：**覆盖面太宽的 `!important` 把"选中态/状态变体"一起改掉了**。
   判据：写覆盖时先问一句"这个选择器会不会也命中 .on / .up / .end 这些状态类"。 */
/* ① 选肖胶囊：底色/字色规则加 :not(.on)，把选中态的金底浅字还给 .on 自己 */
#pageChat.posts .pick-chip:not(.on){color:#5f5a4e !important}
#pageChat.posts .pick-chip.w-red:not(.on),#pageChat.posts .pick-chip.w-blue:not(.on){background:rgba(192,57,43,.12) !important;border-color:rgba(192,57,43,.45) !important}
#pageChat.posts .pick-chip.w-blue:not(.on){background:rgba(28,79,156,.12) !important;border-color:rgba(28,79,156,.45) !important}
/* 选中态：金底浅字（原来是深底深字，深色主题遗留） */
#pageChat.posts .pick-chip.on{background:linear-gradient(115deg,var(--gold),var(--gold-deep)) !important;color:#fffdf7 !important;border-color:transparent !important}
#pageChat.posts .pick-chip.w-red.on{background:linear-gradient(115deg,var(--miss),#a52a1c) !important;color:#fffdf7 !important}
#pageChat.posts .pick-chip.w-blue.on{background:linear-gradient(115deg,#2a6bbf,#17458f) !important;color:#fffdf7 !important}
#pageChat.posts .pick-chip.w-green.on{background:linear-gradient(115deg,#1f8f4d,#0f5f32) !important;color:#fffdf7 !important}
/* ② 短剧：`.mv-fin.up` 的底色被上一轮那条"所有 .mv-fin 都白底深字"覆盖了 → 这里连底色一起定死；
      `.mv-note-a` 的底色是**亮金**，配浅字只有 1.57:1 → 改回"浅金底 + 墨字" */
.mv-fin.up{background:var(--gold) !important;color:#fffdf7 !important;border-color:transparent !important}
.mv-note-a{background:#e8c46e !important;color:#241c07 !important}
/* ③ 边角压深（实测 4.2~4.48，差一口气） */
#pageChat.posts .pick-sum .s-chip{color:#6b4f14 !important}
#pageChat.posts .pick-sum .s-chip.w-green{color:#0f5f32 !important}
.chat-lv.lv3,.lv-lv.lv3{color:#17518f !important}
.chat-lv.lv5,.lv-lv.lv5{color:#6b4f14 !important}
.st-hcell.lv1 .c,.st-bar-row .ct{color:#6b4f14 !important}

/* ⑧ 统计页热力格里的数字/计数：`#4a3a18` 压在金底上只有 4.3:1（差一口气）→ 近墨色，各级金底都够 */
[class*="heat"] .c,[class*="heat"] .n,.hg-cell .c,.hg-cell .n{color:#241c07 !important}

/* ===== 第十轮·系统级与"站外"维度（2026-09-19 站长："再查死角 我觉得还有维度你没照顾到"）=====
   前九轮都在看"页面里的元素"，这几处不在元素层：滚动条、选中文字、输入焦点环。 */
::-webkit-scrollbar-thumb{background:rgba(74,58,32,.32) !important;border-radius:2px !important}   /* 必须双冒号：单冒号会被 Chrome 整条丢弃（静默无效） */   /* 深色主题的深蓝灰滚动条 */
*{scrollbar-color:rgba(74,58,32,.32) transparent}                                                 /* Firefox */
::selection{background:rgba(168,128,42,.34) !important;color:#1b1a17 !important}                 /* 原来是白字压浅金：选中后≈1.3:1，等于看不见 */
.searchbox input:focus,.pager .pgin:focus,.period-inp:focus,.auth-input:focus{border-color:var(--t4) !important;box-shadow:0 0 0 3px var(--t1) !important}

/* ===== 论坛帖图：缩到"缩略图"档（2026-09-19 站长："论坛的图片能不能按比例缩 现在前端展示和点开之后的图片大小基本无异"）=====
   背景：原口径是"铺满宽度、字看得清"（09-17 定"别把图缩小"），但代价是**帖内图与点开后的全屏图几乎一样大**
   （真机：帖内 333×591、点开受屏宽限制 ~390 宽 → 只大 17%，点开等于白点）。
   现在改成缩略档：**盒子收到 70% 宽并居中**（角标 pi-hint/pi-count 都挂在盒子上，会跟着贴到图片边缘 ✓），
   高度上限从 --ah 的 0.7 视口高降到 0.52（JS 的 setAlbumHeight 同步改）。
   收益：点开后的全屏图比帖内明显大（手机竖图 247 → 390 宽，1.58×）✓
   代价：资料图在帖内看不清字 → **点开看**（这正是本来的用法）。要更大/更小只改这两个数（70% / 0.52）。 */
#pageChat.posts .post-imgs .post-img{width:70% !important;align-self:center !important;margin-left:auto !important;margin-right:auto !important}
/* 非相册模式的图片：原来是 width:100% + max-height（长图会被**压扁变形** ✗）→ 改成等比 + 限高 */
#pageChat.posts .post-img img{width:auto !important;max-width:100% !important;object-fit:contain !important;
  max-height:calc(var(--vh0,100vh) * 0.52) !important;margin-left:auto !important;margin-right:auto !important}
/* 角标贴回图片边缘：图片在盒子里居中，所以偏移要加上居中留白（(盒宽-图宽)/2） */
#pageChat.posts .post-img .pi-hint,#pageChat.posts .post-img .pi-count{
  right:calc((100% - var(--iw, 100%)) / 2 + 6px) !important}

/* ===== 推演卡·层次感（2026-09-19 站长："有没有觉得 这个层次感还是很差"）=====
   原状：卡是"白→米"渐变 + 一层很淡的影，卡内**从标题到脚注全在同一档平面**（选号、玄学四判、日辰、
   推演依据、本期开出、免责连成一片）✗ —— 眼睛没有落脚点。
   改法＝**三层纸**：① 卡浮起（近影 + 散影 + 内高光）；② 选号区做成"托盘"（暖底 + 内描边 + 圆角）；
   ③ 脚注区（玄学/日辰/依据/开出/免责）再淡一档、用细线分隔。 */
.tj-card{box-shadow:0 1px 2px rgba(96,74,40,.10),0 8px 22px rgba(96,74,40,.15),inset 0 1px 0 rgba(255,255,255,.9) !important;
  border-color:rgba(168,128,42,.30) !important}
/* ① 卡头：一条细线把它与正文分开（标题有了归属） */
.tj-card .tj-hd{padding-bottom:8px;border-bottom:1px solid rgba(74,58,32,.14)}
/* ② 选号托盘：阶梯行（9肖/6肖/3肖/1肖）与号码行（平特/特码/尾数/波色/单双/大小）合成一块记分板 */
.tj-card .tj-lad,.tj-card .tj-nums{background:rgba(74,58,32,.045) !important;border:1px solid rgba(74,58,32,.10) !important;
  border-radius:12px;padding:8px 10px !important;margin-top:8px !important}
.tj-card .tj-line{padding:3px 0 !important}
.tj-card .tj-hit{min-width:40px;text-align:center}       /* 右侧"中/未中"对齐成一列，读起来有秩序 */
/* ③ 脚注区：与托盘之间留一条明显的分隔，并整体压淡 */
.tj-card .tj-attr,.tj-card .tj-trace,.tj-card .tj-draw,.tj-card .tj-ft{margin-top:10px !important;padding-top:9px !important;
  border-top:1px solid rgba(74,58,32,.11) !important}
.tj-card .tj-ft{color:var(--tx-weak) !important;font-size:11px !important;line-height:1.6 !important}
.tj-card .tj-attr{padding-left:10px !important;padding-right:10px !important}
/* 层次感·第二轮：① 托盘底再实一点；② "本期开出"是整张卡的答案 → 做成结果条（最跳的一档）；
   ③ 脚注区只保留**一条**分隔线（原来每行都画线，五条线把版面切成碎条 ✗） */
.tj-card .tj-lad,.tj-card .tj-nums{background:rgba(74,58,32,.055) !important}
.tj-card .tj-attr,.tj-card .tj-trace,.tj-card .tj-ft{border-top:1px solid rgba(74,58,32,.11) !important;margin-top:9px !important;padding-top:8px !important}
.tj-card .tj-draw{margin-top:12px !important;padding:9px 12px !important;border-top:0 !important;border-radius:11px;
  background:rgba(168,128,42,.13) !important;box-shadow:inset 0 1px 0 rgba(255,255,255,.6)}
.tj-card .tj-draw .tj-lb{color:#6b4f14 !important;font-weight:800}     /* "本期开出"标签在结果条上要更实 */

/* ===== 金底黑字"看不清"（2026-09-19 站长："这类配色的状态就是看不清里面的字；金底黑字确实很有质感…配色正确但模糊"）=====
   根因：纸主题为了"金当字色要够深"把 --gold/--gold-deep 整套压深了，
   而**同一批变量又被当"底色"用在按钮/徽章上** → 深金底 + 近黑字 ≈ 2:1 ✗（实测 18 条全不达标，最深一站 2.01）。
   口径（两档都保持"金"的调性，各自达标）：
     · **小徽章/胶囊** ＝ 浅金渐变底 + 墨字（金底黑字的质感）；最暗一站也托得住墨字（≥8:1）
     · **大按钮** ＝ 深金底 + 浅字（保住"实心金"的分量）；两站 5.7 / 7.0 ✓ */
.wday-d.on,.wday-y.on,.wday-selopt.on,.year-opt.on,.chat-lv.vip-badge,.chat-lv.expert-badge,
.acc-tag-vip,.acc-front,.wcell-no,.tag.on,.chip.active,#wall .wcell-no,#wall .wday-d.on{
  background-image:linear-gradient(115deg,#e8c46e,#c9a24b 55%,#dcae4e) !important;
  color:#241c07 !important;-webkit-text-fill-color:#241c07 !important;border-color:transparent !important;text-shadow:none !important}
.s-go,.auth-tab.on,.auth-btn,.acc-sign:not(.done),.av-upbtn,.wemp-btn,.chat-sendbtn,.f3-betbtn,
.tj-askrow button,.wlocktip-card button,.wlock-block-in button,.ui-btn.primary{
  /* 底色也要一起换成**深金**：它们原来的渐变起点是旧亮金 #f6c56a，浅字压上去只有 1.57 ✗ */
  background-image:linear-gradient(115deg,#8a6a1e,#5b4514 60%,#7d5f19) !important;
  color:#fffdf7 !important;-webkit-text-fill-color:#fffdf7 !important;text-shadow:none !important;border-color:transparent !important}
/* 页头口号（compact 模式的品牌语）：`color` 早就是深金了，但被这条**旧亮金**的 text-fill 顶掉 → 一直是浅金 ✗
   （又一条"量 color 没用，只看 -webkit-text-fill-color"的坑） */
body.compact header h1{-webkit-text-fill-color:#5b4514 !important;-webkit-text-stroke:0 !important;text-shadow:none !important}

/* ===== 倒计时的"直角光影"（2026-09-19 站长："这开奖时间倒计时有直角光影 修正一下"）=====
   根因两层：
     ① `.draw .cd` 的底色/描边还是深色主题的**亮金**（rgba(246,197,106,…)），阴影是
        `inset 白 10% + 0 2px 8px 黑 25%` —— 在纸上就是一圈发脏的光影 ✗；
     ② 它的父级 `.drow1` 是 `overflow:hidden` + **直角** → 圆角胶囊的阴影被**切成方块** ✗（"直角光影"就是这个）。
   口径：底色换成本主题的深金淡底、**去掉投影与内高光**，让胶囊干净地贴在纸上（父级裁不裁都无所谓）。 */
.draw .cd{background:linear-gradient(180deg,rgba(168,128,42,.14),rgba(168,128,42,.07)) !important;
  border-color:rgba(168,128,42,.32) !important;box-shadow:none !important}
.draw .cd.live{background:linear-gradient(180deg,rgba(176,42,28,.14),rgba(176,42,28,.07)) !important;
  border-color:rgba(176,42,28,.42) !important;color:#8f2419 !important;box-shadow:none !important}
/* 开奖卡本身：`0 12px 36px 黑 50%` 在纸上是"黑晕"✗ → 换成暖墨影（与全站卡片同一档） */
.draw{box-shadow:0 2px 10px rgba(96,74,40,.12) !important}

/* ===== tab 切换的"那一瞬空白"（2026-09-19：切换顺畅度）=====
   旧页面**瞬间消失**、新页面从 opacity:0 淡入 → 前 ~90ms 屏幕基本是空的（"生硬"感来源之一）。
   口径：淡入起点抬到 .35 + 时长收到 .15s（观感上"接上"而不是"从无到有"），
   仍然是**只做透明度**（.page 上加 transform 会让里面的吸顶元素失效 —— 见原注释）。 */
@keyframes pageIn { 0% { opacity: .35 } 100% { opacity: 1 } }
.page.active{animation:pageIn .15s cubic-bezier(.22,1,.36,1)}

/* ===== 丝滑收尾（2026-09-19 站长："再丝滑的候选也可以做"）=====
   ① 按下反馈：全站可点元素统一成站内既有那一档（`.card:active{transform:scale(.97)}`），
      把**漏掉的**补齐（图墙格子/图系列表项/集数/统计分类/登录注册/保存/筛选胶囊）。
      只做 scale（合成层，不触发布局）—— 与既有约定一致，避免各写各的手感。 */
.chip,.wcell,.ditem,.mv-ep,.st-tabbtn,.auth-btn,.acc-sign,.tj-sc-row[data-day],.pgbtn:not(:disabled){transition:transform .12s ease, background-color .12s ease}
.chip:active,.wcell:active,.ditem:active,.mv-ep:active,.st-tabbtn:active,.auth-btn:active,.acc-sign:active,.tj-sc-row[data-day]:active{transform:scale(.97)}
/* ② 弹层：**打开带一点回弹、关闭干脆**（原来开合共用同一条回弹曲线 —— 收起来会"duang"一下 ✗）。
      做法是标准的一招：把回弹写在 `.mask.show .sheet` 上（打开时生效），基础态用缓出（关闭时生效）。 */
.sheet{transition:transform .22s cubic-bezier(.4,0,.2,1),opacity .18s ease}
.mask{transition:opacity .2s ease}
.mask.show .sheet{transition:transform .42s cubic-bezier(.32,1.25,.48,1),opacity .26s ease}
@media (prefers-reduced-motion: reduce){
  .chip,.wcell,.ditem,.mv-ep,.st-tabbtn,.auth-btn,.acc-sign{transition:none}
  .chip:active,.wcell:active,.ditem:active,.mv-ep:active,.st-tabbtn:active,.auth-btn:active,.acc-sign:active{transform:none}
  .sheet,.mask,.mask.show .sheet{transition:opacity .12s linear}
}
/* 高度冻结之后，图片换尺寸时让高度**自己走一段**（2026-09-24 站长："弹窗测量的那下非常突兀"）——
   舞台是按"这张图需要多高"往上补的，瞬时改会一步跳 55px ✗（实测采样：536 连着 7 帧 → 突然 591）。
   只多补一个 height；transform / opacity 两条**原样保留**（弹层开合动画还要用它们 ✓）。 */
.sheet[data-frozen]{transition:transform .22s cubic-bezier(.4,0,.2,1),opacity .18s ease,height .24s cubic-bezier(.22,1,.36,1)}
.mask.show .sheet[data-frozen]{transition:transform .42s cubic-bezier(.32,1.25,.48,1),opacity .26s ease,height .24s cubic-bezier(.22,1,.36,1)}
@media (prefers-reduced-motion: reduce){ .sheet[data-frozen],.mask.show .sheet[data-frozen]{transition:opacity .12s linear} }
/* 短剧弹层同款问题：`.mv-sheet .mv-in` 也是开合共用回弹曲线 → 同样做成"开带弹、关干脆" */
.mv-sheet .mv-in{transition:transform .22s cubic-bezier(.4,0,.2,1),opacity .18s ease}
.mv-sheet.show .mv-in{transition:transform .42s cubic-bezier(.32,1.25,.48,1),opacity .26s ease}
@media (prefers-reduced-motion: reduce){ .mv-sheet .mv-in,.mv-sheet.show .mv-in{transition:opacity .12s linear} }

/* 部署软刷新验证标记 1789803399 */

/* ===== 页头"下滚淡出、上滑回来"（2026-09-19 站长选 B）=====
   只做 transform + opacity：合成层，不触发布局、不引起重排（低端机也稳 ✓）。
   pointer-events:none 一并关掉 —— 收起的页头不该还能被点到 ✗。 */
header{transition:transform .28s cubic-bezier(.22,1,.36,1),opacity .2s ease,box-shadow .2s ease}
body.hdr-hide header{transform:translateY(-104%);opacity:0;box-shadow:none;pointer-events:none}
@media (prefers-reduced-motion: reduce){
  header{transition:opacity .12s linear}
  body.hdr-hide header{transform:none;opacity:0}
}
/* 页头收起时，挂在页头高度上的吸顶元素（搜索框等）要**跟着归零** ——
   否则会留出一条 47px 的空档 ✗（实测：`.stickwrap` 的 top 是 var(--hdrH)=47px）。
   做法：收起态在 body 上把 --hdrH 改 0（**静态 CSS** ✓，不靠 JS 写内联变量 —— 那会让所有用 var() 的元素失效、
   整份文档重算，见 ResizeObserver 那段的注释 ✗），并给 top 一条与页头同速的过渡，收放同步。 */
body.hdr-hide{--hdrH:0px}
/* 搜索行跟着页头一起"向下滚收起、向上滑放出"（2026-09-21 站长选 B）——
   复用站内 2026-09-19 那套 `body.hdr-hide`（方向感知 + 8px 死区 + 底部回弹保护 + 顶 40px 内永显，**判据全在 JS 那边** ✓，
   这里一个字都不用写 ✗）。起因：开奖卡置顶后顶部三层占 307px（36% 屏）✗，而搜索是"进场用一次"的动作，
   回看时手指往回拉它自己就回来 ✓（正好符合"要回看＝要往上走"的手势）。
   隐藏方向是**向上**：它 z-index 15 < 开奖卡的 16 ⇒ 视觉上是**滑到卡片后面**去 ✓；
   加 opacity 兜底（卡片左右各有 10px 外边距，只靠遮挡会露缝 ✗）；`pointer-events:none` 防"看不见却点得到" ✗。
   用 transform+opacity ⇒ **不动布局**（内容不会跳 ✓），也不会引发重排（合成层 ✓）。 */
body.hdr-hide .stickwrap{transform:translateY(-100%);opacity:0;pointer-events:none;transition:top .28s cubic-bezier(.22,1,.36,1),transform .22s cubic-bezier(.22,1,.36,1) .12s,opacity .14s ease .12s}
/* ⚠️ **过渡属性是 shorthand：后面这条会把前面写的整串覆盖掉**（2026-09-21 踩过）——
   我在上面给 `.stickwrap` 写的 `transform/opacity` 过渡被这一行整体吃掉 ✗，结果搜索行的 `transform` 是**瞬间跳 58px**、
   只有 `top` 在缓动 ⇒ 站长一眼看出"搜索框缩得不丝滑" ✗。（判据：拿计算样式读 `transitionProperty`，只列出 `top` ✓。）
   ⇒ 收敛成**一条**，三个动作一起走同一曲线；**开奖卡也要同一条**（它原来是 `all/0s` ⇒ 顶部 66px 是硬跳 ✗，
   页头在缓动、它却瞬移，看着就是"卡了一下"）。曲线与页头一致（`.28s cubic-bezier(.22,1,.36,1)` ✓）。 */
/* 两段式对齐（2026-09-21 站长："收起的过程需要对齐吧"）——
   问题：搜索行要走 **105px**（跟着卡片上移 47 ＋ 自己再收 58），而卡片只走 **47px** ⇒ 同样时长里它**跑得快 2 倍** ✗，
   中途就与卡片"割开"了（看着不对齐 ✗）。
   做法：**先整体上移、再收搜索** —— 前 120ms 两者只走 `top`（同曲线同拍 ⇒ 严丝合缝 ✓），
   120ms 之后搜索才开始自己那 58px（此时它已经淡出 ⇒ 相对位移**看不见** ✓）。
   ⚠️ CSS 的过渡取自**目标状态**的样式 ⇒ "收起"（`.hdr-hide` 那条）带 delay ✓，而"放出"走基础规则**不带 delay** ✓
   —— 回来看得见的时候不能等 120ms，否则像卡了一下 ✗。 */
.draw,.post-strip{transition:top .28s cubic-bezier(.22,1,.36,1)}
.stickwrap{transition:top .28s cubic-bezier(.22,1,.36,1),transform .18s cubic-bezier(.22,1,.36,1),opacity .14s ease}
/* 论坛的「第262期尚未开奖」信息条：它用的是**另一个变量** `--hdr-h`（由 JS 写在 #pageChat 上、
   故意不写 <html> 以免整份文档重算），所以页头收起时它**不知道**、仍停在 47px → 头顶空出一块 ✗
   （2026-09-19 站长："论坛的是信息开奖悬浮的问题，导致中间空"）。
   修法：收起态**在同一个元素上**把它也归零（必须 !important —— JS 是写在 style 里的内联值 ✓），
   并给 top 与页头同速的过渡，收放同步。 */
body.hdr-hide #pageChat{--hdr-h:0px !important}
#pageChat.posts .post-strip{transition:top .28s cubic-bezier(.22,1,.36,1)}
@media (prefers-reduced-motion: reduce){ #pageChat.posts .post-strip{transition:none} }

/* ===== 滚动开销：去掉"看不见却在每帧重算"的毛玻璃（2026-09-19 站长："滑动丝滑感现在到位吗"）=====
   纸主题下这两个吸顶元素的底色**本来就不透明**（搜索行 .96 的白、底栏是纯色渐变），
   `backdrop-filter` 的效果完全看不见 —— 但它固定在视口上、内容在它后面滚，
   等于**每个滚动帧都要重新模糊一遍背后的内容** ✗（手机上是实打实的掉帧源）。
   安卓那份性能块早已对 header/.tabbar 这么做（第 1550 行起），这里补齐**漏网的 .stickwrap**，
   并把结论统一到纸主题：观感不变，滚动省一大块。 */
/* ⚠️ 只对**底色不透明**的底栏关：`.stickwrap`（搜索行＋广告位）在纸主题里是 **transparent**，
   那层毛玻璃是**真的看得见**的 —— 2026-09-19 我一并关掉，站长立刻反馈「广告周围的磨玻璃没有了，看着很违和」✗。
   性能与观感的取舍：一处小元素的模糊可以接受，**观感不能省** ✓。 */
.tabbar{backdrop-filter:none !important;-webkit-backdrop-filter:none !important}

/* ===== 逐期对照：**框内滑动**（2026-09-19 站长："不然越积越多就页面越长"）=====
   对照表每期 +1 行、服务端是全量给的（`rows: out`），页面会一期一期变长 ✗（已对账 6 期时已 172px）。
   做法：框高**钉死 5 行**（行高实测 27.6px → 5×27.6 + 上内边距 5 ≈ 143px），多出来的在框内滚 ——
   页长从此不随期数增长，历史一行不少（不需要分页状态、也不丢数据 ✓）。
   滚动条**隐藏且不占位**：桌面版若让经典滚动条吃掉十几像素，行右侧的「中/未中」就会与上方网格的右边缘
   错开 ✗（对齐是站长在意的项）。能不能滑由标题右侧的「共 N 期 · 框内可滑动」提示（>5 行才由 JS 加）。
   行本身的点击（看那一期推演）是 #tuian 上的事件委托，框内滚动不影响 ✓。 */
.tj-sc-rows{max-height:143px;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-width:none}
.tj-sc-rows::-webkit-scrollbar{width:0;height:0}
/* 标题行改 flex 才能把提示推到右边；其余三个 caption 是单段文字，匿名 flex 项，表现不变 ✓ */
.tj-sc-cap{display:flex;align-items:baseline;gap:8px}
.tj-sc-more{margin-left:auto;white-space:nowrap;font-size:10px;color:var(--gold)}

/* ===== 记分板两档折叠：玄学组 / 历史回测（2026-09-19 站长："按你的建议"）=====
   按**证据等级**折，不按长度折：公示记录（已对账 N 期 · 本站真发过并对过账）**不折** ——
   它是这张卡的信任状本体，收起来首屏就看不到对账痕迹 ✗；玄学组是辅助口径、历史回测是
   "规则评估"（服务端自己标了"非公示记录"），属于明细，收起不丢信息（标题自带规模与口径）✓。
   标题沿用 caption 样式（与卡内其它说明同款）+ 右侧「展开 ▾」；开合复用 tjFoldToggle（id 配对）。
   ⚠️ 摘要只摆**规模与性质**，绝不摆挑出来的成绩（挑一项最好看的摆＝cherry-picking，破自家呈现纪律 ✗）。 */
.tj-sc-fhd{cursor:pointer;-webkit-user-select:none;user-select:none;padding:5px 0;min-height:28px}
.tj-sc-tg{margin-left:auto;font-size:11px;color:var(--gold);white-space:nowrap;flex:0 0 auto}
/* 显式兜一层：站内已有 `.sugbox[hidden]{display:none}` 这类写法 —— 万一将来谁给这个容器加了 display，
   `hidden` 就会失效（折叠点不动 ✗）。写死一条，行为只依赖 hidden 属性一个来源。 */
.tj-sc-fbody[hidden]{display:none}

/* ===== 纸主题 · 开奖球：把「深色主题的球」换成纸上的明亮版（2026-09-19 站长："开奖区和历史记录的球色会不会太老气？阴影会不会太重？"）=====
   来龙去脉（重要，别再走回头路）：这两个问题都是**我自己的对比度审计**造成的 ——
     · 第三轮（#a52f24…）、第四轮（#8f2419…）为了"白字在浅色球上的对比"，把三个波色**连压两档**，
       压到发闷发黑；而数字其实落在**中段色**上，实测白字对比 = 现在的 8.6/9.2/6.6:1 ——
       早就远超 4.5:1，**压深是白付的代价** ✗；
     · 球的**阴影**（`inset -2px -4px 7px .45` ＋ `0 0 14px` 彩色光晕 ＋ `0 4px 10px` 黑 .5）
       从来没按纸主题收过，还是深色主题的强度 → 纸底上又黑又脏 ✗（这是"阴影太重"的出处）。
   新版：整体亮一档；阴影改**暖浅**（纸上的影子本该暖而淡），
   去掉彩色光晕与重内阴影；高光（那层"玻璃罩"）也收小一点，弱化 2000 年代的光泽感。
   ⚠️ 三个波色的球在**开奖区 / 历史记录 / 论坛开奖条**共用同一个 `.num` —— 改这里全站一起变 ✓ */
.num.w-red  {background:radial-gradient(circle at 32% 26%,#ef8577,#c0392b 55%,#8d2418) !important}
.num.w-blue {background:radial-gradient(circle at 32% 26%,#86aef0,#2563c9 55%,#17457f) !important}
.num.w-green{background:radial-gradient(circle at 32% 26%,#5cc888,#17803f 55%,#0d5c2c) !important}
.num,.num.w-red,.num.w-blue,.num.w-green{
  box-shadow:inset -1px -2px 4px rgba(0,0,0,.16),0 2px 5px rgba(74,58,32,.22) !important;
  text-shadow:0 1px 2px rgba(0,0,0,.5),0 0 2px rgba(0,0,0,.25) !important;   /* 球亮了，字影就要略强一点补可读性（原来的 .85/3px 是又脏又糊 ✗） */
}
.num.empty{box-shadow:none !important}   /* 空位是虚线占位，别给它加影子 */
.num::before{top:4px;left:8px;width:34%;height:18%;background:linear-gradient(rgba(255,255,255,.42),rgba(255,255,255,.05))}

/* ===== 开奖记录（历史）每期一行：纸主题漏收的三处（2026-09-19 站长："黑框很生硬 四角方方正正 且下边线没有显示出来"）=====
   实测根因（都在第 79/660-662 行附近）：
     · `.ditem` 的**上/左/右**边框还是深色主题的 `#232b35`（近黑）→ 就是"生硬的黑框" ✗；
     · `.ditem` 的**下边线**早先被改成金 `rgba(246,197,106,.08)`（8% 透明）→ 根本看不见 ✗；
     · `.ditem .balls`（球带）从来没给过圆角 → 直角，在圆角卡片里最刺眼 ✗。
   改法：整行给**纸上的卡片面**（var(--card)）+ 暖色细边（四边同色，别再一边黑一边金）；
   球带补 10px 圆角；再加一层极轻的暖影与内高光，让它"立"在纸面上 ✗ 生硬感就没了。 */
.ditem{
  background:var(--card);
  border:1px solid rgba(74,58,32,.14);
  box-shadow:0 1px 2px rgba(96,74,40,.06),inset 0 1px 0 rgba(255,255,255,.9);
}
.ditem .balls{border-radius:10px}

/* ===== 论坛：图注与「加载更多」两处深色主题遗留（2026-09-19 站长："论坛的字体不清晰"）=====
   实测办法：把渲染函数里的**真实类名**注入线上 `#pageChat.posts`，量计算样式并**沿祖先合成真实底色** ——
   全论坛只有这两处不达标，其余 16 个元素实测 5.5–18:1 ✓（纸主题当年已收过大半）：
     · `.pi-cap` 图注 = **1.35:1** ✗：色值 `#e9dcc0` 是深色主题的奶油色，压在纸白卡上等于隐形
       （就是站长截图里那行「· 卡通六肖中特图」）；
     · `.chat-more` 及其 button = **1.66:1** ✗：文字 `#e9dcff` 浅紫，**连底 `rgba(20,14,30,.5)` 都是深色的**
       → 纸上是一条突兀的暗带。
   改法：图注落到纸上的次级墨色（#6b665d ≈ 5.6:1）、前面的「·」用品牌深金；「加载更多」整块改成纸面
   （透明底 + 暖色分隔线）、按钮用深金字 + 淡金底，与站内其它次级按钮同一套。 */
#pageChat.posts .pi-cap{color:#6b665d}
#pageChat.posts .pi-cap::before{color:#7d5f19}
#pageChat.posts .chat-more{background:transparent;border-top:1px solid rgba(74,58,32,.14)}
#pageChat.posts .chat-more button{color:#7d5f19;background:rgba(168,128,42,.12);border-color:rgba(168,128,42,.45)}

/* ===== 论坛图片右上角的分页角标（1/6）不显眼（2026-09-19 站长："图片右上角的分页数字好像不显眼"）=====
   实测原状：**10px / 字重 400 / 金色 #f6c56a 压 72% 深底**，尺寸只有 32×22 —— 字又小又细，
   金压深在图片上（尤其料图那种浅底扫描件）读起来弱 ✗；而右下角的「看大图」是白底深金字，两者风格也不统一。
   改法＝按 **TG 相册角标的做法**：深底 + **白色粗体**（这是压在任意图片上最稳的一档）+ 略放大 + 一点投影；
   金只留在描边上（品牌色不丢）。角标是 `pointer-events:none`，放大不影响点图 ✓。
   ⚠️ 别改成"白底深字"：料图大量是浅底扫描件，白药丸会糊进图里 ✗（右下角那个白的是「看大图」，属于既有样式，不动）。 */
/* ⚠️ **两个数字页标共用这一条规则** —— 相册角标（图上右上角）与查看器顶部计数（.full-count）：
   站长 2026-09-19："论坛图片点开 上面的数字页标也需要同步未点开时右上角的数字 ui 吧"。
   写在一起就是为了**以后不会只改一处、两边跑偏** ✗。（.full-count 的定位/圆角仍由它自己的旧规则给：顶部居中 ✓） */
#pageChat.posts .pi-count,.full-count{
  font-size:11px;font-weight:700;color:#fff !important;
  background:rgba(16,11,20,.82) !important;border-color:rgba(246,197,106,.55) !important;
  padding:3px 9px;box-shadow:0 1px 4px rgba(0,0,0,.38);letter-spacing:.2px;
}

/* ===== 图片翻页箭头：纸主题一套皮（2026-09-19 站长："pc 端你应该加到未点开图就有左右键吧" + "你这个左右键还是旧的 ui"）=====
   两处共用同一套样式：
     · **信息流相册上的**（`.al-nav/.al-btn`，PC 端没点开图就能翻）—— 由 JS 只在多张图 + 有指针的设备时插入；
     · **全屏查看器里的**（`.fullimg .full-nav`）—— 键盘 ←/→ 与鼠标可点同时具备。
   配色跟站内「看大图」角标同族：**白面 + 暖边 + 深金图标**（取代原来的"深底金边浮层钮" ✗），
   带一层轻投影，压在照片上也读得清 ✓。触屏设备一律不显示（手机是左右滑，站长："手机端不用加"）✓。 */
#pageChat.posts .post-imgs.pi-one{position:relative}   /* 箭头要相对**相册框**定位（原来 .post-imgs 没有定位 ✗） */
.al-nav{position:absolute;inset:0;pointer-events:none;z-index:3}
.al-btn,.fullimg .full-nav{position:absolute;top:50%;transform:translateY(-50%);width:38px;height:38px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;cursor:pointer;pointer-events:auto;padding:0;
  background:rgba(255,253,248,.94);border:1px solid rgba(168,128,42,.45);color:#7d5f19;
  box-shadow:0 2px 8px rgba(60,44,20,.28);transition:transform .12s,background .15s}
.al-btn:active,.fullimg .full-nav:active{transform:translateY(-50%) scale(.9);background:rgba(168,128,42,.22)}
.al-prev,.fullimg .full-prev{left:8px}
.al-next,.fullimg .full-next{right:8px}
.al-prev svg,.fullimg .full-prev svg{transform:rotate(-90deg)}
.al-next svg,.fullimg .full-next svg{transform:rotate(90deg)}
@media (hover:none){ .al-nav,.fullimg .full-nav{display:none !important} }

/* ===== iOS：会弹键盘的输入框一律提到 16px（2026-09-19 站长："ios桌面端 键盘出来又把输入框顶没了"）=====
   根因：**iOS 对 font-size < 16px 的输入框会"自动放大整页"**，页面一放大，输入框就被顶出可视区 ✗。
   站内那条老守卫（`html.in-tg .cmt-input{font-size:16px}`，见第 2230 行）**只对小程序生效** ✗，
   所以小程序 ✓、APP ✓（WebView 不吃这套）、iOS 桌面版中招 ✗ —— 评论输入框实测只有 **11px**（--fsMeta）。
   这里按 `html.ios` 标记（app.js 里按 UA 打，含 iPad 桌面模式）把范围放宽到 **iOS 全站**，
   覆盖：评论层 / 论坛发帖 / 内联评论 / 登录注册 / 积分问询 / 通用 textarea（凡是聚焦会弹键盘的）✓。
   ⚠️ 只对 iOS 生效（安卓/桌面不吃这条），所以别处外观不变 ✓。 */
html.ios .cmt-input, html.ios #chatInput, html.ios .pc-input,
html.ios .auth-input, html.ios .tj-askrow input, html.ios textarea { font-size:16px !important; }
/* ⚠️ `!important` 是必须的：输入框的字号由**带 id 的组合选择器**给（如
   `#pageChat.posts .chat-inputbar textarea{font-size:var(--fsBody)}` = 1 id + 2 class + 1 元素），
   普通选择器压不过它 ✗ —— 实测 `html.ios #chatInput` 无 `!important` 时被 13px 压回 ✗。
   （顺带暴露：老的 `html.in-tg ... {font-size:16px}` 同样压不过它，只是 TG 的 WebView 禁了缩放才没露出来。） */

/* ===== 评论层（浮层 + 帖子内就地评论）纸主题收口（2026-09-19 站长："更换色调之后 评论框又该优化一波了 不然又是一片重合"）=====
   实测"重合"的四处，全是**深色主题把"白"当对比色**的遗留 ✗：
     · 输入框：底 `rgba(255,255,255,.86)` ＋ 描边 `rgba(255,255,255,.12)` —— **白底白边压在白卡上** ✗✗；
     · 评论行分隔：`1px dashed rgba(255,255,255,.07)` —— 白线画在白卡上，看不见 ✗；
     · 表单底：`rgba(255,255,255,.02)` —— 2% 白，等于没有 ✗；
     · 头部与列表之间没有实分隔（只有一条极淡的边）。
   站内的纸主题令牌本来就是对症的那套 ✓（`--well` 凹槽比卡片深一档、`--t1/--t2` 淡墨、`--line-neutral` 描边）——
   改法就是把**硬编码换成令牌**，别再自造白色 ✓。 */
.cmt-input, .pc-input{
  background:var(--well) !important;
  border:1px solid var(--line-neutral) !important;
  box-shadow:inset 0 1px 2px rgba(74,58,32,.10) !important;   /* 凹槽的内阴影（纸上是暖的、很淡） */
}
.cmt-input::placeholder, .pc-input::placeholder{color:#8a8578 !important}   /* 占位字：原来的 #a7aab6 偏冷 ✗ */
.cmt-head{border-bottom:1px solid rgba(74,58,32,.16) !important}             /* 头 / 列表 分开 */
.cmt-list .pc-row, #pageChat.posts .pc-row{border-bottom:1px dashed rgba(74,58,32,.16) !important}   /* 行分隔＝淡墨虚线 */
.cmt-form, .pc-form, #pageChat.posts .pc-form{background:rgba(74,58,32,.03) !important;border-top:1px solid rgba(74,58,32,.16) !important}
/* 发送键：按站内"主按钮"那套（深金底 + 浅字）。原来浅金→深金的渐变配深字，下半截对比不够 ✗ */
.cmt-send, #pageChat.posts .pc-send{
  background:linear-gradient(120deg,#8a6a1e,#5b4514) !important;color:#fffdf7 !important;border-color:transparent !important;
}

/* ===== 提示类收口：把还留在深色主题里的四处收进纸主题（2026-09-19 站长："评论不能为空 这些隐藏的提示词还是老色调 你查查还有多少"）=====
   做法：先**按旧配色的特征值全表扫描**（冷紫底 rgba(30,24,54)/米色字 #f4ead2/#e9dcff/白当描边…），
   再对候选选择器**逐个实测计算样式**（静态扫描会误报 ✗：修复常用不带祖先的选择器，同名匹配不上）。
   实测确认四处仍在用旧色： */
/* ① 轻提示（"评论不能为空""链接已复制"等）：冷紫 rgba(30,24,54,.96) + 米色字 ✗ → 纸主题的**暖墨**家族（与遮罩/页头同源 ✓） */
#postToast{background:rgba(43,38,29,.96) !important;border-color:rgba(246,197,106,.5) !important;color:#fdf8ec !important}
/* ② 询问框里的输入框：白底 + 白描边（和评论框同一个病 ✗）→ 落到 --well 凹槽 + 可辨描边 */
.ui-input{background:var(--well) !important;border:1px solid var(--line-neutral) !important;color:var(--tx-title) !important;
  box-shadow:inset 0 1px 2px rgba(74,58,32,.10) !important}
.ui-input::placeholder{color:#8a8578 !important}
/* ③ 会员中心「任务行」标题：米色 #f4ead2 落在白卡上，几乎看不见 ✗ → 纸上的次级墨色 */
.acc-task-h{color:#6b665d !important}
/* ④ 发帖键的「隐藏」态：底色被 .hidebtn 换成纸白，而它还在继承"大按钮浅字"（那条带 !important ✗）→ **白字压白底** ✗
      这种次要态应该用墨字（与 .acc-sign.done 同一个道理）✓ */
#pageChat.posts .chat-sendbtn.hidebtn{color:var(--tx-body) !important}

/* ===== 穷举扫出的最后一处旧色：冷灰 #71767f（2026-09-19 站长："确定扫完了？给我准确答案"）=====
   做法：把 CSS 里**每一条**带旧配色特征值的规则挑出来（113 条），用它的选择器去 DOM 找真实元素、量**最终计算值**，
   逐条核验是否仍是旧色。结果只剩这一条还在：`.pb-txt,.st-mini .k,.st-bar-sub,.f3-time{color:#71767f}` ✗
   —— **冷灰**（深色主题的中性灰），在纸底的暖卡上只有 **4.09:1**（11px 小字需 4.5 ✗）。
   这四处都是"次级说明文字"（进度条小字、统计小字、时间），统一收到纸上的暖次级墨色 ✓。 */
.pb-txt,.st-mini .k,.st-bar-sub,.f3-time{color:#6b665d !important}

/* 「我的投稿」标题右侧那个按钮：纸主题当年只收了这一行的**下边线与标题** ✗，按钮本体漏了 ——
   底还是 `rgba(255,255,255,.07)`（7% 白）、字还是 `#c9cede`（**冷灰**）✗ → 白卡上约 1.2:1，等于隐形 ✗。
   按站内"次要按钮"那套收口：淡墨底 + 墨字 ✓（与 `.acc-sign.done`、`.chat-sendbtn.hidebtn` 同族）。 */
.myposts-h button{background:rgba(74,58,32,.07) !important;color:var(--tx-body) !important}

/* 评论头像圈：`background:rgba(255,255,255,.08)` ＋ `color:#fff` —— **白字压白底** ✗
   （发了一条自测评论才看到：纸卡上那个首字圆圈是隐形的 ✗，和评论输入框、.myposts-h 按钮同一个病 ✓）。
   按站内其它头像的做法收口：金调淡底 + 深金字 ✓。`.pc-ava` 同时用在**评论层**与**帖子内就地评论**，两处一起变 ✓。 */
.cmt-list .pc-ava, #pageChat.posts .pc-ava{background:rgba(168,128,42,.18) !important;color:#7d5f19 !important}

/* 「本站 / 本程序」按环境切换（2026-09-20）：网站说「本站」、小程序（html.in-tg）说「本程序」——两种说法各自独立，别混着叫。html.in-tg 由 app.js 在 TG_CTX 时加上（网页端永远不会命中）。 */
.tg-only{display:none}html.in-tg .w-only{display:none}html.in-tg .tg-only{display:inline}

/* ===== 立体感：全站同一套（2026-09-21 站长："可以全站推广"）=====
   ⚠️ **必须放在文件最后** ✗ —— 我第一版插在纸主题中段，被**后面**几条 `!important` 影子规则整体压住
   （实测 `.draw` 还是旧值 `0 2px 10px @.12`、`.card img` 还是 `0 2px 6px @.16` ✗）。
   CSS 里**同权重、都带 !important 时，后写的赢** ⇒ 这一层要压在所有单组件规则之上 ✓（与之前"过渡被后一条吃掉"同一个坑 ✓）。
   一处声明就是"面"的厚度与离地高度：**顶部内高光 ＋ 底部内阴影（厚度）＋ 近影 ＋ 远影（离地）** ✓。
   覆盖的都是"用户能看到的、独立的卡片/面板"；类名取自纸主题里实际在用的那一批 ✓。
   ✗ **不加**：筛选胶囊（`.tag`/`.chip`）、按钮（`.hist-btn`/`.hdr-btn`/`.af-btn`）、表格行 —— 控件与网格逐个浮起来＝噪音 ✓。
   ✗ **缩略图那层**（`.card img`＝小相纸）**只给图库卡**：评论/个人中心里是头像，套相纸边＝错的 ✗。 */
/* ⚠️ 名单里**只能放"有底、有圆角"的元素** ✗ —— 2026-09-21 站长截图："你看这个露出了四个直角" ✓：
   我原来把 `.chat-preview-box`（论坛发帖区的**透明外框、`border-radius:0`** ✗）也列进来了 ⇒ 给它加阴影
   ＝给一个**方角透明盒**画影 ⇒ 内层圆角卡外面**露出四个直角** ✗✓（真正那张卡是里层的 `.chat-msgrow`：圆角 14px、有底 ✓）。
   ⇒ 换成 `.chat-msgrow` ✓；并在文档里立一条判据：**加阴影前先量 `border-radius` 与底色** ——
   透明 + 无圆角 = 一定露方角 ✗（`.card` 12px / `.cmt-card` 14px / `.mv-card` 12px / `.draw` 12px 都是安全的 ✓）。 */
.card,.cmt-card,.myposts,.mv-card,.mv-note,.acc-row,.chat-msgrow,.draw,.tj-sc{
  box-shadow:inset 0 1px 0 rgba(255,255,255,.85),inset 0 -1px 0 rgba(74,58,32,.06),0 2px 3px rgba(96,74,40,.16),0 8px 18px rgba(96,74,40,.18) !important;
}
.card img{border:1px solid rgba(74,58,32,.22) !important;box-shadow:0 2px 5px rgba(60,44,20,.32),inset 0 0 0 1px rgba(255,255,255,.5) !important}
.card.fresh{box-shadow:inset 0 1px 0 rgba(255,255,255,.85),inset 0 -1px 0 rgba(74,58,32,.06),0 2px 3px rgba(96,74,40,.16),0 8px 20px rgba(168,128,42,.26) !important}
.card:active{transform:translateY(1px);box-shadow:inset 0 1px 0 rgba(255,255,255,.6),0 1px 2px rgba(96,74,40,.20) !important}

/* ===== 发帖输入框收进纸主题（2026-09-21 站长："可以"）=====
   原来那条 `#pageChat.posts .chat-inputbar textarea` 用的是**暗色主题的 token**（`--tint-soft` 等），
   纸主题没覆盖到 ⇒ 实测底色是 **rgb(230,221,201) 灰米** ✗（站长："灰米色块，在纸白上略显突兀" ✓）。
   ⇒ 改成与站内其它输入框**同一套写法**（`.auth-input` / `.searchbox input`：近白底 `#fffefb` ＋ 淡墨边 `.24` ＋ 深墨字 ✓），
   占位符沿用站内统一的中墨 `#8a857c` ✓；聚焦时换金色描边 ＋ 极轻内阴影（"按进去"的感觉 ✓）。
   ⚠️ 放在 app.css **最后**（同权重 + `!important` ⇒ 后写的赢 ✓；这条纪律这两轮已经踩过两次 ✗）。 */
#pageChat.posts .chat-inputbar textarea{background:#fffefb !important;border:1px solid rgba(74,58,32,.24) !important;color:#2f2c26 !important;box-shadow:inset 0 1px 3px rgba(74,58,32,.07) !important}   /* 极轻内阴影 ⇒ 读作"凹进去的输入区" ✓（实测框底与卡底只差 1.01 ✗，光靠描边像划线框 ✗） */
#pageChat.posts .chat-inputbar textarea::placeholder{color:#8a857c !important}
#pageChat.posts .chat-inputbar textarea:focus{border-color:rgba(168,128,42,.55) !important;box-shadow:inset 0 1px 2px rgba(74,58,32,.06) !important}

/* ===== 空态卡不要那条"状态栏"（2026-09-21 站长："你看这个左边是不是还有一点点底框露出"）=====
   `#pageChat.posts .chat-msgrow` 的 **3px 左边框是有含义的**（正常帖中性色；`.mine`/`.post-pinned`/待审＝金色 ✓），
   但**空态**（"本期还没有投稿"）没有状态可标 ⇒ 带着它看着就像"底框露出一条" ✗ ⇒ 收成 1px、与其余三边一致 ✓。
   放文件最后（同权重后写的赢 ✓；多一个类 `.post-empty` 也让它稳赢上一条 ✓）。 */
#pageChat.posts .chat-msgrow.post-empty{border-left-width:1px !important}

/* ===== 网页/PC 端的「进小程序」按键（2026-09-21 站长："pc 也可以同步 tg 的投注按键逻辑 但是对应的是咱们小程序的链接"）=====
   与小程序里那条**同一套外观**（复用 `.entry-btn` 的金底 + 金光流动 + 三层文字 ✓），只有两处不同：
   ① 落地 = **我们自己的小程序**（`t.me/aky361_bot/app?startapp=s-web` ✓）；② 行动区「进小程序」✓（不写成"立即投注" ✗ —— 那是另一跳的事 ✓）。
   **两条腿互斥**：小程序里显示投注键（`html.in-tg .entry-btn` ✓）、网页显示这条（`html:not(.in-tg)` ✓）⇒ 不会同时出现、卡片高度不变 ✓。
   用 `<a>` 而不是 `<button>`（网页里就该让浏览器自己处理跳转 ✓）；`text-decoration:none` 别让它带下划线 ✓。 */
.entry-btn-web{display:none;text-decoration:none}
html:not(.in-tg) .entry-btn-web{display:flex;align-items:baseline}
html.in-tg .entry-btn-web{display:none !important}

/* ===== 弹层按钮居中 + 备用链接小字（2026-09-21 站长："去守候网络那几个字没居中做好"）=====
   `.ui-btn` 的样式原本是给 `<button>` 写的 —— 按钮的文字**天生居中** ✓，而承接页那个「去守候网络」是
   `<a class="ui-btn">`（要 `target="_blank"` 开新窗口，不能用按钮 ✗）⇒ `<a>` 的文字**默认靠左** ✗。
   补一条 `text-align:center` ✓（对 `<button>` 无影响、对 `<a>` 正好补上 ✓）；放在文件最后（同权重后写的赢 ✓）。 */
.ui-btn{text-align:center;text-decoration:none}
/* （`.vpn-alt` 那行备用链接已按要求撤掉 —— 2026-09-21 站长："备用的不用显示出来" ✓；样式一并删掉，不留死代码 ✓） */

/* ===== 安全区让位（2026-09-21 站长："在小程序里点全屏，按键全跑到手机顶部状态栏了"）=====
   小程序全屏时，宿主把两组合起来告诉页面：设备侧（状态栏/刘海）`--tg-safe-area-inset-*` 与
   TG 自己的浮层（全屏时左上「✕ 关闭」、右上「∨」）`--tg-content-safe-area-inset-*`，
   二者**相加**才是内容该让开的距离 ✓（前者是"到安全区"，后者是"安全区再到内容"）。
   原来只用 `env(safe-area-inset-*)` ⇒ 在 TG 的 WebView 里恒为 0（且我们的 viewport 没有 viewport-fit=cover）
   ⇒ 顶栏 padding 只剩 8px ⇒ 正好压在状态栏上 ✗（截图里的样子）。
   普通浏览器里两个 `--tg-*` 都不存在 ⇒ 取 env()，与改动前**完全一致** ✓（手机 Safari/PWA 不受影响 ✓）。
   ⚠️ 要写在文件最后：同权重后写的赢（本文件这条规矩栽过多次 ✓）。
   ⚠️ 另一件事：`--safeTop/--safeBot` 在别处**被引用过、却从来没有定义**（2160/2161 的页头、
   3174 的播放器顶栏那几条）—— 未定义的自定义属性会让整条声明**失效**（不是取 0 ✗）⇒
   那几条 padding 其实一直没生效 ✗。现在补上定义，它们同时被修好 ✓。
   壳内不受影响：`html.in-app header{padding-top:8px}` 特异性更高（壳已让过位，不能让两次 ✓）。
   ── 第 517 块翻面（2026-10-01 UC 双重留白/tab 顶起）：**普通浏览器不再信 env()** ——
   env 一律 0，只有 `html.pwa`（PWA 独立窗口；index.html 头部内联脚本在样式表前打类）才启用。
   为什么：UC19 荣耀机实测**无视规范**——不开 viewport-fit=cover 也满屏画、也报 inset；
   工具栏在时报的是假的（页面明明在地址栏下面 ⇒ 页头双重留白 ✗ §8.516）；
   沉浸态（下滑藏工具栏）报的是真的，但那是"跟所有普通网站一样被浏览器 chrome 盖住"的形态，
   不该由我们补偿（补偿了反而页头空一带、tab 条悬空 ✗ 站长两连截图）。
   TG 走 `--tg-*`（SDK 真值）不受影响 ✓；PWA 独立窗口（Android15 边到边/iOS）env 是真的、保留 ✓。 */
:root{
  --envT: 0px;
  --envB: 0px;
  --safeTop: max(var(--envT), calc(var(--tg-safe-area-inset-top, 0px) + var(--tg-content-safe-area-inset-top, 0px)));
  --safeBot: max(var(--envB), calc(var(--tg-safe-area-inset-bottom, 0px) + var(--tg-content-safe-area-inset-bottom, 0px)));
}
html.pwa{
  --envT: env(safe-area-inset-top, 0px);
  --envB: env(safe-area-inset-bottom, 0px);
}

/* ===== 图库卡片：把「共 N 张」从副行挪到**名字那一行**（2026-09-22 站长："共几张看看怎么挪位置 都挤一起去了"）=====
   实测（390 宽的手机）：副行只有 **89px**，而「共 2 张 · 第265期 · 今天」要 **125px** ⇒ 溢出 36px 被裁 ✗；
   顺带发现**上游系列卡本来也在被切**（「共 2 张 · 9-22 13:36」= 94px > 89px ✗），只是不明显。
   挪完：名字行 = 名字 +（新系列）+（共 N 张），副行 = 只留时间/期号 ⇒ 89/89 正好放下 ✓。
   形状＝小圆角胶囊、绝对定位 ⇒ 不参与任何文字排布、也从不被截断 ✓。
   ⚠️ 写在文件最后：同权重后写的赢（本文件这条规矩栽过多次 ✓）；用 `#typeList` 提特异性，压过上面那条 `.name` 规则 ✓。 */
/* 「新 / 张数」角标：**卡片角上的独立胶囊**（不参与文字排布 ✓）。
   为什么不用"名字后面跟一个行内徽章"：名字框（89px、13px 字号）两行就装满了 ✗ ——
   实测「五鬼正宗会员综合资料」（10 字，全站最长的系列名）自己占满两行 ⇒ 行内徽章必掉到第 3 行、
   被 `.name` 的 2 行截断切掉 ✗✗（连"压紧成 N 张"也救不了：名字本身就填满了两行 ✓）。
   ⚠️ 同一个坑对「新」也成立 ⇒ 「新」和「N 张」合成**一个**胶囊放这里 ✓（2026-09-22 站长："新系列和角标有需要改的也要改哇" ✓）。
   ⇒ 换成绝对定位：缩略图 56px、卡片 88px，**图下方/左下角是空的** ✓ 任何长度的名字都挤不掉它 ✓。
   样式与「未更」同一族（角标胶囊 ✓），底色用实心金 + 深字 ⇒ 压在图上也读得清 ✓（三套主题通用 ✓）。 */
#typeList .card .badge-chip{
  position:absolute;left:12px;bottom:5px;z-index:2;
  font-size:10px;line-height:1.45;padding:0 5px;border-radius:8px;
  background:rgba(246,197,106,.94);color:#2b1f06;font-weight:700;
  border:1px solid rgba(0,0,0,.06);white-space:nowrap;
}

/* ===== 逐颗开奖的「盖子」（2026-09-22 站长："要在就号码上加掩盖"）=====
 * 开码窗口里**没轮到的球一律盖住**（盖子样式），球到谁谁"掀盖"（.pop）——
 * 原来这些位露着**上一期的旧号**、只等它那颗来覆盖 ✗（一半新一半旧，看着像串号）。
 * 写在文件末尾＝统一层（同权重后写的赢 ✓ 别插中段 ✗）。
 *
 * ⚠️ **类名不能用 `.mask` / `.empty`**（2026-09-22 现场抓的，站长："你看 错误立马显现"）——
 *   这两个名字在 app.css 里**已经是通用类**，谁套谁变形（390×844 真机模拟，实测计算值）：
 *     · `.mask`（第 358 行）＝**弹窗遮罩**：`position:fixed;inset:0;opacity:0;z-index:50`
 *       ⇒ 球变成 fixed + **透明**（整排盖子看不见 ✗，看着只是"旧号被抹掉了"）；
 *     · `.empty`（第 290 行）＝**空态块**：`padding:48px 20px` ⇒ 28px 的球被撑成 **43×99**
 *       ＝一枚**竖着的虚线椭圆** ✗（就是截图里那四个怪东西；一半是 "? " 撑的、一半是 padding）。
 *   ⇒ 另起 `.ghost`（全站只有 `.av-upbtn.ghost`，与本类不共享任何声明 ✓）；
 *     尺寸**从 .num 继承**（一处来源 ✓ 别在这儿写死 28/34，否则与 ≤400px 断点打架 ✗），
 *     只把会撑变形的属性钉死：`padding:0` ＋ `box-sizing:border-box`（1.5px border 算在 34/28 之内，
 *     与无边框的 .num 同外径、圆心对圆心 ✓）。
 *
 * 🔴 **样子＝"实心盖子"，不是"空心圈"**（2026-09-22 深夜 站长第三次反馈："还是空框"）：
 *   第一版画的是**淡底 + 虚线**——那是站里"空位/待补"的语言（`.num.empty`、骨架屏同一族），
 *   读出来是"这里空着"而不是"这里盖着" ✗。他要的是**掩盖**（把号盖住、不许看见）⇒ 改成：
 *   暖米实的圆底（有厚度：顶部高光 + 底部内阴影，与全站立体的画法同源）＋ 一枚淡淡的 `？`。
 *   虚线留给了"真的没有这一颗"的极端情况（非 live 分支里 `codes[i]` 为空时才可能出现 ✓）。 */
.num.ghost{padding:0;box-sizing:border-box;opacity:1;font-size:13px;font-weight:700;
  background:linear-gradient(180deg,#efe8db,#ded4c1);color:rgba(74,58,32,.42);
  border:1px solid rgba(74,58,32,.16);text-shadow:none;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.7),inset 0 -2px 3px rgba(74,58,32,.10),0 1px 2px rgba(74,58,32,.10)}
.num.ghost::before{display:none}
.num.ghost::after{display:none}
/* 兜底：`.num.empty` 是 21:51 之前那版 markup 用的名字（旧客户端里还有）——
   ⚠️ 它会被**通用** `.empty`（第 290 行：`padding:48px 20px`）撑成 **43×99 的竖椭圆**（站长："你看 这么大的空框"）。
   新代码已不发这个类了，但**页面里的 CSS 与 JS 可能来自不同版本**（两个 URL 各自走 CF 缓存 ⇒ 混搭很常见：
   站长 2026-09-22 晚两次截图的"大空框"就是"旧 JS + 新 CSS"那一侧 ✓）⇒ 这里也把盒子钉死、并**把盖子画出来**
   （旧 markup 里没有文字 ⇒ 用 `::after` 自己补一枚 `？`）⇒ **任何新旧组合都不再变椭圆、也不会只剩一个空圈** ✓。 */
.num.empty{padding:0;box-sizing:border-box;color:transparent;
  background:linear-gradient(180deg,#efe8db,#ded4c1) !important;
  border:1px solid rgba(74,58,32,.16) !important;opacity:1 !important;   /* ⚠️ 2431 行那版带 !important ⇒ 这里也要 !important 才压得住（同权重后写的赢 ✓） */
  box-shadow:inset 0 1px 0 rgba(255,255,255,.7),inset 0 -2px 3px rgba(74,58,32,.10),0 1px 2px rgba(74,58,32,.10) !important}
.num.empty::before{display:none}
.num.empty::after{content:'？';display:flex;align-items:center;justify-content:center;
  position:absolute;inset:0;border:0;color:rgba(74,58,32,.42);font-size:13px;font-weight:700}
/* 「私藏发布」的锁图标与后面的字**零间距**（2026-09-23 站长："前面的锁黏在字上了"）——
   实测：按钮是 flex 但 `gap:normal`、`.ico` 一条间距样式都没有 ⇒ `ico.right` 与文字 `left` 同一坐标（gap=0）✗。
   `.ico` 全站只有这个按钮在用（唯一一处 `class="ico"`）⇒ 定点补 5px，零外溢 ✓；
   ≤430px 那条 `.ico{display:none}`（窄屏收紧）不动 ✓。 */
.chat-sendbtn .ico{margin-right:5px}
/* ===== 播放器文字对比度统一层（2026-09-24 站长："现在的播放器的配色会让里面的字体异常不清晰"）=====
   根因（族判据，非单点）：纸主题把 `--tx-title/--tx-body/--gold` 全局翻成**墨色/深金** —— 浅面更好看了，
   但**深色浮层**（压在视频上的面板/气泡/浮钮）和**深色详情弹层**上的字被一起带成"深字压深底"：
   实测变速面板项 1.06:1、详情标题 1.14:1、简介 1.18:1、选集小标 1.03:1（WCAG 要 4.5:1）≈ 全部不可读 ✗。
   修法＝**按"面的明暗"定字色**，不按主题变量一刀切：深面一律浅字/亮金、浅面保持墨字。
   ⚠️ 写在文件最后（"全局统一层放 app.css 末尾"那条纪律 ✓，后写才赢）；⚠️ 梯度底不在本层管（目视复核 ✓）。
   ⚠️⚠️ **`.mv-in`（详情弹层正文）刻意不在本层**：它坐在**浅色渐变卡**上（截图定论：原墨字本来就12:1 ✓），
   我第一版审计器的链"走穿"透明渐变底误判成1.14:1、改成奶白 → 奶白压白卡反而洗没了 ✗ 教训入档：
   **结论必须与截图互证；审计器对"透明底+渐变"天生走穿** ✓。 */
.mv-sheet .mv-ep{background:#f6f1e6;color:#1b1a17}            /* 选集胶囊改实底：半透明白压深弹层＝灰底灰字 2.9:1 ✗ → 墨字实底 ≈13:1 ✓（截图复核 pills 清晰 ✓）*/
.mv-rates .mv-rate-i{color:#f2e8d2}                           /* 变速面板项：墨字压暖炭 1.06:1 ✗ → 浅米 ≈10:1 ✓ */
.mv-rates .mv-rate-i.on{color:#f6c56a;background:rgba(246,197,106,.18)}   /* 亮金压微亮深底 ≈7.6:1 ✓ */
.mv-flash{color:#f6c56a}                                      /* 手势气泡（深底）亮金 ≈10:1 */
.mv-big,.mv-pp,.mv-exit,.mv-lockbtn{color:#f6c56a}            /* 浮钮图标同族：亮金（字形也更清楚）*/
.mv-fit{color:#f6c56a}                                        /* 底栏 铺满/倍速/全屏 小字：深金压黑 2.4:1 ✗ → 亮金 ≈10:1 ✓ */
.mv-player .mv-bar button{color:var(--tx-title)}              /* 顶栏 返回/↻ 等：金压奶白栏 4.14:1 差一点 ✗ → tx-title 三主题通吃（纸12:1/深白10:1/浅墨 ✓）；金留给描边 */

/* ===== 离线标注条（离线完全体 2026-09-25）=====
   回放本机快照必须挂明示标签（2026-08-15 红线：旧数据冒充新数据＝"数据卡住"）。
   自成一体的深底胶囊：纸上/深色两套主题下都 ≈10:1 ✓；写在文件最后（后写才赢 ✓）。
   位置＝tabbar 上方（tabbar bottom 12px+safe、高约 54px ⇒ 76px 起），z 60：盖在内容上、低于弹层。 */
#offlineBar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(76px + var(--safeBot,0px));z-index:60;display:none;max-width:92vw;padding:7px 14px;border-radius:999px;background:rgba(35,29,15,.92);border:1px solid rgba(246,197,106,.35);color:#f6ecd6;font-size:12px;line-height:1.3;letter-spacing:.02em;box-shadow:0 6px 18px rgba(0,0,0,.3);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}
#offlineBar:active{transform:translateX(-50%) scale(.97)}
