@font-face{font-family:'Ma Shan Zheng';font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/MaShanZheng-Regular-1b8c1da12742.woff2) format('woff2');}
@font-face{font-family:'Noto Serif SC';font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/NotoSerifSC-Regular-9117432dff37.woff2) format('woff2');}

/* =====================================================================
 * 《武侠掌门》 theme.css — 全局变量 / 纹理 / 组件库（美术+前端 · 单文件契约）
 * 画布 448×960；所有像素按此写死。缩放由 app.js 设置 --app-scale。
 * 纹理全部程序化：CSS 渐变 + 内联 SVG feTurbulence，禁止外链图片。
 * 品质：甲=金 乙=紫 丙=蓝 丁=绿（类名允许中文：.card-甲 .quality-乙 …；容器加 .q-甲/.q-乙/.q-丙/.q-丁 即得 --qc/--qc2/--qc3/--qbg 品质变量）
 * 与 screens.css 的分工：#app .stage #screen .screen-content #chrome-top/#chrome-bottom 的结构，以及 .modal-x .toast .ui-loading .reward-x 的最终样式由 screens.css（壳层）
 *   在本文件之后覆盖；本文件对 .modal-* 只给独立可用的基础皮肤（styleguide 用），额外装饰放在 .modal-corners 元素上，不用 ::before/::after 以免与壳层冲突。
 * 图标注意：Icons.svg() 每次生成唯一渐变 id，不要把同一段 SVG 字符串复制到多处（首个实例若被 display:none 会导致渐变失效）。
 * 目录：1 变量/纹理 2 重置/舞台 3 广播条 4 掌门条 5 底栏 6 按钮 7 面板 8 弹窗 9 tab 10 角标/星/印章/进度条 11 品质
 *       12 头像/立绘 13 槽位/物品 14 弟子大卡 15 列表/关卡/商贾/礼包行 16 寻侠海报 17 签到格 18 木牌九宫格/横幅/纸签/图标栏 19 toast/剧情/杂项
 * ===================================================================== */

/* ---------- 1. 变量 ---------- */
:root{
  --wood-dark:#3a1d0c; --wood:#6b3a16; --wood-light:#9a5a2a; --wood-deep:#24110a;
  --paper:#e8d3a3; --paper-light:#f3e6c4; --paper-dark:#c9a96e; --paper-deep:#b08a4c;
  --red:#a8261b; --red-bright:#d8321f; --red-dark:#6e140c; --red-deep:#3f0a06;
  --gold:#f2c245; --gold-dark:#b8860b; --gold-light:#ffe9a3; --gold-deep:#7a4f00;
  --ink:#2b1d12; --ink-soft:#5b4630; --ink-faint:#8c7355;
  --jade:#3f8f5a; --jade-light:#7ed08f; --jade-dark:#215c34;
  --purple:#7b3fb5; --purple-light:#b58ae0; --purple-dark:#48206e;
  --blue:#2f6fb5; --blue-light:#7fb2ea; --blue-dark:#173d6b;
  --stone:#8d8d8d; --stone-light:#c4c4c4; --stone-dark:#4f4f4f;
  --q-jia:#f2c245; --q-yi:#9b59d6; --q-bing:#3b82f6; --q-ding:#4caf50;
  --font-brush:'Ma Shan Zheng','Zhi Mang Xing','STKaiti','KaiTi','Kaiti SC','BiauKai',serif;
  --font-body:'Noto Serif SC','Songti SC','SimSun','Source Han Serif SC',serif;
  --font-dmg:'Arial Black','Avenir Next Condensed','PingFang SC','Heiti SC',sans-serif;
  --app-scale:1;
  --shadow-gold-text:0 1px 0 rgba(0,0,0,.7),0 0 3px rgba(0,0,0,.45);
  --stroke-dark:-1px 0 #2b1d12,1px 0 #2b1d12,0 -1px #2b1d12,0 1px #2b1d12,-1px -1px #2b1d12,1px 1px #2b1d12,1px -1px #2b1d12,-1px 1px #2b1d12;
  --stroke-white:-1px 0 #fff8e6,1px 0 #fff8e6,0 -1px #fff8e6,0 1px #fff8e6;

  /* 程序化纹理 */
  --tex-noise:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .22 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  --tex-wood:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='120'%3E%3Cfilter id='w'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.012 .32' numOctaves='3' seed='7' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .28 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23w)'/%3E%3C/svg%3E");
  --tex-paper:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.6' numOctaves='4' seed='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .35 0 0 0 0 .25 0 0 0 0 .1 0 0 0 .13 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23p)'/%3E%3C/svg%3E");
  --tex-cloud:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='48' viewBox='0 0 120 48'%3E%3Cg fill='none' stroke='%23f2c245' stroke-opacity='.35' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M8 30c0-8 10-12 16-6 3-8 15-8 18 0 5-6 15-3 15 5-6 0-8 6-14 4-5 4-14 4-19 0-6 3-16 2-16-3z'/%3E%3Cpath d='M70 24c0-6 8-10 13-5 2-6 12-6 14 0 4-5 12-2 12 4-5 0-6 5-11 3-4 3-11 3-15 0-5 2-13 1-13-2z'/%3E%3C/g%3E%3C/svg%3E");
  --corner-tl:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='26' viewBox='0 0 26 26'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0' stop-color='%23fff0b8'/%3E%3Cstop offset='.5' stop-color='%23e8b93a'/%3E%3Cstop offset='1' stop-color='%23a0700f'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M1 25V6q0-5 5-5h19v5H8q-2 0-2 2v17z' fill='url(%23g)' stroke='%235a3800' stroke-width='1'/%3E%3Ccircle cx='7' cy='7' r='2.6' fill='%23fff3c2' stroke='%237a4f00' stroke-width='.8'/%3E%3Cpath d='M13 4h8M4 13v8' stroke='%23fff6d5' stroke-opacity='.7' stroke-width='1'/%3E%3C/svg%3E");
  --corner-tr:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='26' viewBox='0 0 26 26'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='1' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23fff0b8'/%3E%3Cstop offset='.5' stop-color='%23e8b93a'/%3E%3Cstop offset='1' stop-color='%23a0700f'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg transform='rotate(90 13 13)'%3E%3Cpath d='M1 25V6q0-5 5-5h19v5H8q-2 0-2 2v17z' fill='url(%23g)' stroke='%235a3800' stroke-width='1'/%3E%3Ccircle cx='7' cy='7' r='2.6' fill='%23fff3c2' stroke='%237a4f00' stroke-width='.8'/%3E%3C/g%3E%3C/svg%3E");
  --corner-br:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='26' viewBox='0 0 26 26'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='1' y1='1' x2='0' y2='0'%3E%3Cstop offset='0' stop-color='%23fff0b8'/%3E%3Cstop offset='.5' stop-color='%23e8b93a'/%3E%3Cstop offset='1' stop-color='%23a0700f'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg transform='rotate(180 13 13)'%3E%3Cpath d='M1 25V6q0-5 5-5h19v5H8q-2 0-2 2v17z' fill='url(%23g)' stroke='%235a3800' stroke-width='1'/%3E%3Ccircle cx='7' cy='7' r='2.6' fill='%23fff3c2' stroke='%237a4f00' stroke-width='.8'/%3E%3C/g%3E%3C/svg%3E");
  --corner-bl:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='26' viewBox='0 0 26 26'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='1' x2='1' y2='0'%3E%3Cstop offset='0' stop-color='%23fff0b8'/%3E%3Cstop offset='.5' stop-color='%23e8b93a'/%3E%3Cstop offset='1' stop-color='%23a0700f'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cg transform='rotate(270 13 13)'%3E%3Cpath d='M1 25V6q0-5 5-5h19v5H8q-2 0-2 2v17z' fill='url(%23g)' stroke='%235a3800' stroke-width='1'/%3E%3Ccircle cx='7' cy='7' r='2.6' fill='%23fff3c2' stroke='%237a4f00' stroke-width='.8'/%3E%3C/g%3E%3C/svg%3E");
  /* 宣纸暗纹（祥云缠枝）：弹窗内层 / 掌门条水印 */
  --tex-damask:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150' viewBox='0 0 150 150'%3E%3Cg fill='none' stroke='%23a07b3c' stroke-opacity='.15' stroke-width='3.4' stroke-linecap='round'%3E%3Cpath d='M75 18c-16 0-26 12-24 25 2 12 15 15 21 9 5-5 2-14-5-14-5 0-8 4-7 8'/%3E%3Cpath d='M75 18c16 0 26 12 24 25-2 12-15 15-21 9-5-5-2-14 5-14 5 0 8 4 7 8'/%3E%3Cpath d='M18 75c0 16 12 26 25 24 12-2 15-15 9-21-5-5-14-2-14 5 0 5 4 8 8 7'/%3E%3Cpath d='M132 75c0 16-12 26-25 24-12-2-15-15-9-21 5-5 14-2 14 5 0 5-4 8-8 7'/%3E%3Cpath d='M75 132c-16 0-26-12-24-25 2-12 15-15 21-9 5 5 2 14-5 14-5 0-8-4-7-8'/%3E%3Cpath d='M75 132c16 0 26-12 24-25-2-12-15-15-21-9-5 5-2 14 5 14 5 0 8-4 7-8'/%3E%3C/g%3E%3C/svg%3E");
  /* 祥云卷（弹窗标题两端 / 横幅两端） */
  --tex-scroll-cloud:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Cg fill='none' stroke='%23f3cf72' stroke-opacity='.85' stroke-width='2.6' stroke-linecap='round'%3E%3Cpath d='M8 30c-4 0-6-3-6-6 0-5 5-8 9-6 3 1 4 4 3 6-1 2-4 2-5 0'/%3E%3Cpath d='M14 34c6 2 13-1 16-6 3-6 1-13-4-16'/%3E%3Cpath d='M24 8c4-2 9 0 10 4'/%3E%3C/g%3E%3C/svg%3E");
  /* 木牌高光条（浮雕面用） */
  --bg-plaque:linear-gradient(180deg,#fdf4d6 0%,#f8e2a6 12%,#f3cb74 28%,#eaa93f 48%,#e29a2c 60%,#eeba5c 78%,#f6d792 92%,#c98a2e 100%);
  --bg-plaque-red:linear-gradient(180deg,#ffd0a8 0%,#f07a4e 14%,#d8391f 38%,#b0231a 62%,#d13a25 82%,#8a1a10 100%);

  /* 复合背景 */
  --bg-wood:var(--tex-wood),linear-gradient(180deg,#7a4520 0%,#5d2f12 30%,#4a2410 60%,#3a1d0c 100%);
  --bg-wood-dark:var(--tex-wood),linear-gradient(180deg,#4a2a12 0%,#2a1608 100%);
  --bg-wood-plank:var(--tex-wood),linear-gradient(180deg,#a0602c 0%,#7c4519 18%,#6b3a16 50%,#5a2d10 85%,#3f1f0b 100%);
  --bg-paper:var(--tex-paper),radial-gradient(ellipse at 50% 30%,#f3e6c4 0%,#e8d3a3 60%,#d9bf8a 100%);
  --bg-paper-light:var(--tex-paper),linear-gradient(180deg,#f7ecd0,#f3e6c4 50%,#ecd9b0);
  --bg-red:linear-gradient(180deg,#e0523a 0%,#c22f1f 35%,#a8261b 60%,#7e1a10 100%);
  --bg-gold:linear-gradient(180deg,#fff0b3 0%,#f2c245 35%,#d49a1e 60%,#b8860b 100%);
  --bg-stone:linear-gradient(180deg,#b9b9b9 0%,#8d8d8d 40%,#6a6a6a 70%,#4f4f4f 100%);
}

/* ---------- 2. 重置 / 舞台 ---------- */
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0;background:#000;color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:0;padding:0;margin:0}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
::-webkit-scrollbar{width:0;height:0;display:none}

.stage{position:fixed;inset:0;width:100%;height:100%;background:#000 radial-gradient(ellipse at 50% 40%,#150b04 0%,#000 70%);overflow:hidden;touch-action:manipulation}
#app{position:absolute;left:0;top:0;width:448px;height:960px;overflow:hidden;background:var(--bg-paper);transform-origin:0 0;user-select:none;-webkit-user-select:none;font-size:14px;line-height:1.35;contain:layout paint;box-shadow:0 0 0 1px #2a1608,0 0 40px rgba(0,0,0,.8)}
/* 页面骨架（#chrome-top 108 / #screen 780 / #chrome-bottom 72）及 .screen-content 由 screens.css §B/§C（壳层）定义，此处不重复 */
.scroll-y{overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;height:100%}
.scroll-y::-webkit-scrollbar{display:none;width:0}
.scroll-x{overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:none}
.scroll-x::-webkit-scrollbar{display:none}

/* 通用背景 */
.bg-ink{background:
  radial-gradient(ellipse 60% 22% at 18% 96%,rgba(80,60,40,.38),transparent 70%),
  radial-gradient(ellipse 50% 18% at 70% 100%,rgba(70,55,40,.42),transparent 70%),
  radial-gradient(ellipse 34% 10% at 42% 92%,rgba(90,70,50,.28),transparent 70%),
  radial-gradient(ellipse 70% 30% at 50% 30%,rgba(255,250,235,.35),transparent 70%),
  var(--bg-paper)}
.bg-wood{background:var(--bg-wood)}
.bg-paper{background:var(--bg-paper)}
.bg-black{background:#000}

/* 文字工具 */
.brush{font-family:var(--font-brush);font-weight:400}
.text-gold{background:linear-gradient(180deg,#fff2b3 0%,#f2c245 42%,#c8901a 62%,#ffe08a 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 1px 0 #3a1d0c) drop-shadow(0 0 2px rgba(0,0,0,.5))}
.text-gold-solid{color:var(--gold);text-shadow:var(--shadow-gold-text)}
.text-red{color:var(--red-bright)}
.text-jade{color:var(--jade)}
.text-blue{color:var(--blue)}
.text-soft{color:var(--ink-soft)}
.text-outline{text-shadow:var(--stroke-dark)}
.num{font-family:var(--font-body);font-variant-numeric:tabular-nums}
.dmg-num{font-family:var(--font-dmg);font-weight:900;color:#fff;-webkit-text-stroke:1.5px #b8110a;text-shadow:0 0 2px #b8110a,0 2px 0 #7a0a05,0 3px 4px rgba(0,0,0,.6)}
.quality-甲,.quality-jia{color:#e8a815;text-shadow:0 1px 0 rgba(0,0,0,.35)}
.quality-乙,.quality-yi{color:var(--q-yi)}
.quality-丙,.quality-bing{color:var(--q-bing)}
.quality-丁,.quality-ding{color:var(--q-ding)}
.row{display:flex;align-items:center}
.col{display:flex;flex-direction:column}
.grow{flex:1 1 auto;min-width:0}
.gap4{gap:4px}.gap8{gap:8px}.gap12{gap:12px}
.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hidden,[hidden]{display:none!important}

/* ---------- 3. 顶部广播条 ---------- */
.top-broadcast{position:relative;height:48px;width:448px;overflow:hidden;
  background:
    var(--tex-cloud) right 8px top 5px / 104px 34px no-repeat,
    var(--tex-cloud) left 96px top 8px / 96px 30px no-repeat,
    var(--tex-wood),
    linear-gradient(180deg,#5c3517 0%,#432310 26%,#331808 62%,#260f05 100%);
  box-shadow:inset 0 -2px 0 #150903,inset 0 1px 0 rgba(255,224,164,.3),0 2px 5px rgba(0,0,0,.55)}
/* 木条上下缘的浅色磨光 + 顶端一线金 */
.top-broadcast::before{content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,228,170,.22) 0,rgba(255,228,170,0) 26%),linear-gradient(0deg,rgba(0,0,0,.4),rgba(0,0,0,0) 34%)}
.top-broadcast::after{content:'';position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,#5a3800,var(--gold) 18%,#fff4c8 50%,var(--gold) 82%,#5a3800);box-shadow:0 1px 2px rgba(0,0,0,.6)}
/* 左上「官方论坛」红金角标 */
.forum-badge{position:absolute;left:0;top:0;width:74px;height:46px;z-index:3;cursor:pointer;
  background:linear-gradient(158deg,#f0674a 0%,#c4301f 34%,#a02017 62%,#6b120a 100%);
  clip-path:polygon(0 0,100% 0,100% 58%,84% 100%,0 100%);
  box-shadow:inset 0 0 0 2px rgba(247,209,110,.9),inset 0 0 14px rgba(0,0,0,.45),inset 0 2px 0 rgba(255,190,150,.4)}
.forum-badge::after{content:'';position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse 70% 50% at 22% 22%,rgba(255,235,180,.35),transparent 70%)}
.forum-badge .gift{position:absolute;left:1px;top:8px;width:30px;height:30px;filter:drop-shadow(0 1px 2px rgba(0,0,0,.6))}
.forum-badge .gift svg{width:100%;height:100%}
.forum-badge .txt{position:absolute;left:28px;top:3px;width:44px;z-index:2;
  font-family:var(--font-brush);font-size:16px;line-height:1.02;letter-spacing:0;text-align:center;color:#ffeaa7;
  transform:rotate(-7deg);transform-origin:50% 50%;
  text-shadow:1px 0 0 #59110a,-1px 0 0 #59110a,0 1px 0 #59110a,0 -1px 0 #59110a,0 2px 3px rgba(0,0,0,.7)}
.forum-badge .txt b{font-weight:400;display:block;margin:-2px 0 0 5px}
.forum-badge:active{filter:brightness(.92)}
.broadcast-track{position:absolute;left:80px;right:8px;top:0;height:45px;display:flex;align-items:center;overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}
.broadcast-text{white-space:nowrap;color:#fff9ea;font-size:14.5px;font-weight:500;letter-spacing:.5px;
  text-shadow:0 1px 0 #1a0c04,0 2px 3px rgba(0,0,0,.85),0 0 6px rgba(0,0,0,.5);
  padding-left:100%;animation:marquee 16s linear infinite;will-change:transform}
.broadcast-text .hl{color:var(--gold)}
@keyframes marquee{0%{transform:translateX(0)}100%{transform:translateX(-100%)}}
.top-broadcast:hover .broadcast-text{animation-play-state:paused}

/* ---------- 4. 掌门信息条（t005：深棕木底 + 白字/金字） ---------- */
.master-bar{position:relative;height:60px;width:448px;color:#3b2612;font-size:13px;
  background:
    var(--tex-damask) left -14px top -18px / 112px 112px repeat,
    radial-gradient(ellipse 46% 70% at 10% 46%,rgba(255,255,255,.55),transparent 72%),
    var(--tex-paper),
    linear-gradient(180deg,#f8efd8 0%,#f0e4c4 38%,#e3d2ab 72%,#d3bd92 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.85),inset 0 -2px 5px rgba(140,100,50,.28),0 2px 5px rgba(0,0,0,.45)}
.master-bar::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:3px;z-index:2;background:linear-gradient(90deg,#5a3800,#b8860b 15%,#ffe9a3 50%,#b8860b 85%,#5a3800);box-shadow:0 1px 2px rgba(0,0,0,.45)}
/* 等级圆徽章：金环浮雕 + 深枣红内盘 */
.master-bar .lv-badge{position:absolute;left:6px;top:7px;width:46px;height:46px;border-radius:50%;cursor:pointer;
  background:
    radial-gradient(circle at 38% 30%,rgba(255,220,170,.5) 0%,rgba(255,200,140,0) 46%),
    radial-gradient(circle at 50% 60%,#8e3423 0%,#6a1f12 48%,#3d0d06 100%);
  box-shadow:
    0 0 0 2px #ffe9a3,0 0 0 4px #c08a12,0 0 0 5px #6b4200,
    inset 0 0 0 2px rgba(255,232,180,.35),inset 0 -4px 6px rgba(0,0,0,.6),inset 0 3px 5px rgba(255,190,140,.3),
    0 2px 5px rgba(0,0,0,.6);
  display:flex;align-items:center;justify-content:center;font-family:var(--font-body);font-weight:700;font-size:21px;color:#fff6dc;
  text-shadow:0 1px 0 #3d0d06,0 2px 3px rgba(0,0,0,.7);transition:transform .1s}
.master-bar .lv-badge:active{transform:scale(.94)}
.master-bar .lv-badge::after{content:'';position:absolute;inset:5px;border-radius:50%;border:1px solid rgba(255,225,160,.28);pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,.22),rgba(255,255,255,0) 45%)}
.master-bar .name{position:absolute;left:60px;top:5px;font-family:var(--font-body);font-weight:700;font-size:18px;color:#3a2412;letter-spacing:1px;
  text-shadow:0 1px 0 rgba(255,255,255,.9),0 2px 2px rgba(140,100,50,.35);max-width:92px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.master-bar .vip{position:absolute;left:148px;top:4px;height:25px;width:62px;filter:drop-shadow(0 1px 1px rgba(90,55,20,.6)) drop-shadow(0 0 1px rgba(255,255,255,.9))}
.master-bar .vip svg{width:100%;height:100%}
.master-bar .exp{position:absolute;left:60px;top:33px;width:150px}
.master-bar .exp .bar{box-shadow:inset 0 2px 4px rgba(0,0,0,.75),0 0 0 1px #8a6330,0 0 0 2px rgba(255,255,255,.5),0 1px 1px rgba(0,0,0,.3)}
.master-bar .exp .bar .fill{background:linear-gradient(180deg,#ffb27a 0%,#f4682f 30%,#d8321f 62%,#8f1a0e 100%);box-shadow:inset 0 1px 0 rgba(255,235,200,.7),inset 0 -2px 3px rgba(0,0,0,.4),0 0 6px rgba(255,110,50,.5)}
.master-bar .res{position:absolute;display:flex;align-items:center;gap:3px;height:22px;white-space:nowrap;font-weight:700;font-size:13.5px;color:#33210f;
  text-shadow:0 1px 0 rgba(255,255,255,.9);cursor:pointer}
.master-bar .res svg{width:23px;height:23px;flex:none;filter:drop-shadow(0 1px 1.5px rgba(90,55,20,.55))}
.master-bar .res .v{font-family:var(--font-body);letter-spacing:.2px}
.master-bar .res .plus{width:15px;height:15px;border-radius:50%;margin-left:3px;background:radial-gradient(circle at 35% 28%,#fffbe4,#f6cd5a 48%,#b8860b);color:#5a2b00;font-size:12px;line-height:15px;text-align:center;font-weight:900;text-shadow:none;
  box-shadow:0 0 0 1px #6b4200,inset 0 1px 0 rgba(255,255,255,.8),0 1px 2px rgba(0,0,0,.45)}
.master-bar .res:active .plus{transform:scale(.9)}
.master-bar .res:active{filter:brightness(.9)}
.master-bar .res.gold{left:214px;top:4px}
.master-bar .res.ticket{left:330px;top:4px}
.master-bar .res.silver{left:214px;top:32px}
.master-bar .res.stamina{left:340px;top:32px}
.master-bar .res .v.gold-txt{color:#8a5300;text-shadow:0 1px 0 rgba(255,255,255,.95)}

/* ---------- 5. 底部六大导航 ---------- */
.bottom-nav{position:relative;display:flex;height:72px;width:448px;
  background:
    var(--tex-wood),
    radial-gradient(ellipse 70% 90% at 50% 0%,rgba(255,150,110,.28),transparent 72%),
    linear-gradient(180deg,#c8331f 0%,#ad2417 26%,#8f1a11 62%,#65100a 100%);
  box-shadow:inset 0 2px 0 #ffe9a3,inset 0 4px 0 #a8720a,inset 0 -3px 0 #2c0a05,0 -3px 10px rgba(0,0,0,.6)}
/* 顶端一线金 + 底部暗压 */
.bottom-nav::before{content:'';position:absolute;left:0;right:0;top:0;height:100%;pointer-events:none;z-index:1;
  background:linear-gradient(180deg,rgba(255,220,170,.18) 0 14%,rgba(255,220,170,0) 40%),linear-gradient(0deg,rgba(0,0,0,.35),rgba(0,0,0,0) 30%)}
.nav-item{flex:1 1 0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:0;padding:6px 0 5px;position:relative;z-index:2;cursor:pointer;color:var(--gold);
  transition:filter .12s,transform .1s;box-shadow:inset -1px 0 0 rgba(0,0,0,.3),inset 1px 0 0 rgba(255,190,140,.14)}
.nav-item:last-child{box-shadow:inset 1px 0 0 rgba(255,190,140,.14)}
.nav-item .nav-icon{width:42px;height:42px;margin-bottom:-6px;filter:drop-shadow(0 2px 2px rgba(0,0,0,.65)) drop-shadow(0 0 3px rgba(255,200,90,.35));transition:transform .16s ease-out}
.nav-item .nav-icon svg{width:100%;height:100%;display:block}
.nav-item .nav-label{position:relative;z-index:2;font-family:var(--font-brush);font-size:17px;line-height:1;letter-spacing:1px;
  color:#ffd75e;background:linear-gradient(180deg,#fff3c4 0%,#f6cf5c 45%,#d99b18 78%,#ffe9a3 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  filter:drop-shadow(0 1px 0 #2b0d05) drop-shadow(0 -1px 0 #2b0d05) drop-shadow(1px 0 0 #2b0d05) drop-shadow(-1px 0 0 #2b0d05) drop-shadow(0 2px 2px rgba(0,0,0,.7))}
.nav-item:hover{filter:brightness(1.1)}
.nav-item:active{transform:translateY(1px);filter:brightness(.92)}
/* 选中格：暖褐木牌亮面 + 金描边 + 图标上浮（对照 t005/t047 原帧） */
.nav-item.active{
  background:
    var(--tex-wood),
    linear-gradient(180deg,#fbeec7 0%,#f0d29a 26%,#e0b271 58%,#c8934c 86%,#a97434 100%);
  box-shadow:inset 0 0 0 2px #ffefb8,inset 0 0 0 3px #a8720a,inset 0 3px 10px rgba(255,255,255,.5),inset 0 -6px 10px rgba(140,85,25,.4),0 0 12px rgba(255,205,90,.45)}
.nav-item.active .nav-icon{transform:scale(1.2) translateY(-4px);filter:drop-shadow(0 2px 3px rgba(90,50,10,.6)) drop-shadow(0 0 5px rgba(255,220,130,.9))}
.nav-item.active .nav-label{background:linear-gradient(180deg,#fffbe6 0%,#ffdf8c 45%,#e0a41c 78%,#fff0b8 100%);-webkit-background-clip:text;background-clip:text;
  filter:drop-shadow(0 1px 0 #4a1408) drop-shadow(0 -1px 0 #4a1408) drop-shadow(1px 0 0 #4a1408) drop-shadow(-1px 0 0 #4a1408) drop-shadow(0 2px 2px rgba(90,40,10,.6))}
.nav-item .badge{position:absolute;right:8px;top:6px;z-index:3}

/* 主页小入口行（包裹/武林谱/传书/恩怨/聊天/设置） */
.mini-nav{display:flex;justify-content:space-around;align-items:flex-end;padding:0 4px}
.mini-nav .mini{position:relative;width:64px;display:flex;flex-direction:column;align-items:center;cursor:pointer;transition:transform .1s}
.mini-nav .mini svg{width:42px;height:42px;filter:drop-shadow(0 2px 2px rgba(0,0,0,.45))}
.mini-nav .mini .lab{font-family:var(--font-brush);font-size:14px;color:#fff3c2;text-shadow:var(--stroke-dark);margin-top:-2px}
.mini-nav .mini .badge{position:absolute;right:6px;top:-4px}
.mini-nav .mini:hover{transform:translateY(-2px)}
.mini-nav .mini:active{transform:scale(.94)}

/* ---------- 6. 按钮 ---------- */
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:4px;min-width:96px;height:42px;padding:0 22px;border-radius:7px;
  font-family:var(--font-brush);font-size:22px;line-height:1;letter-spacing:2px;color:#f6d675;text-shadow:var(--shadow-gold-text);
  border:2px solid #2b150a;cursor:pointer;user-select:none;vertical-align:middle;white-space:nowrap;
  background:var(--tex-wood),linear-gradient(180deg,#8c5024 0%,#6d3a17 26%,#572c11 62%,#3d1d0a 100%);
  /* 三层浮雕：外描边 / 内高光 / 底阴影 */
  box-shadow:
    inset 0 0 0 1px rgba(247,208,110,.55),
    inset 0 2px 0 rgba(255,228,170,.42),inset 0 6px 8px rgba(255,215,150,.12),
    inset 0 -4px 0 rgba(0,0,0,.5),inset 0 -8px 10px rgba(0,0,0,.28),
    0 3px 0 #231006,0 4px 5px rgba(0,0,0,.55);
  transition:filter .12s,transform .08s,box-shadow .1s}
/* 两端金属卡箍（带铆钉） */
.btn::before,.btn::after{content:'';position:absolute;top:4px;bottom:4px;width:10px;border-radius:2px;z-index:1;
  background:
    radial-gradient(circle at 50% 22%,#f4f4f4 0 1.2px,rgba(0,0,0,.45) 1.6px,transparent 2.2px),
    radial-gradient(circle at 50% 78%,#f4f4f4 0 1.2px,rgba(0,0,0,.45) 1.6px,transparent 2.2px),
    linear-gradient(90deg,#e6e6e6,#9d9d9d 42%,#5e5e5e 72%,#a8a8a8);
  box-shadow:0 0 0 1px #241a12,inset 0 1px 0 rgba(255,255,255,.7),0 2px 2px rgba(0,0,0,.5)}
.btn::before{left:-4px}.btn::after{right:-4px}
.btn:hover{filter:brightness(1.09)}
.btn:active{transform:translateY(2px);filter:brightness(.93);
  box-shadow:inset 0 0 0 1px rgba(247,208,110,.5),inset 0 4px 6px rgba(0,0,0,.6),inset 0 -2px 0 rgba(255,220,160,.15),0 1px 0 #231006,0 1px 2px rgba(0,0,0,.5)}
.btn.disabled,.btn:disabled,.btn[disabled]{pointer-events:none;filter:grayscale(.85) brightness(.75);opacity:.75}
.btn-wood{background:var(--tex-wood),linear-gradient(180deg,#8c5024 0%,#6d3a17 26%,#572c11 62%,#3d1d0a 100%)}
.btn-red{border-color:#41100a;color:#ffe9a8;
  background:var(--tex-wood),linear-gradient(180deg,#f0674a 0%,#d13a25 24%,#ab2318 60%,#7a140d 100%);
  box-shadow:
    inset 0 0 0 1px rgba(255,220,140,.5),
    inset 0 2px 0 rgba(255,200,160,.5),inset 0 6px 9px rgba(255,180,140,.16),
    inset 0 -4px 0 rgba(60,8,4,.55),inset 0 -8px 10px rgba(0,0,0,.25),
    0 3px 0 #3a0a05,0 4px 5px rgba(0,0,0,.55)}
.btn-red:active{box-shadow:inset 0 0 0 1px rgba(255,220,140,.45),inset 0 4px 6px rgba(60,8,4,.65),0 1px 0 #3a0a05,0 1px 2px rgba(0,0,0,.5)}
.btn-stone{border-color:#26262a;color:#f2f2f2;text-shadow:0 1px 0 #2c2c2c,0 2px 2px rgba(0,0,0,.5);
  background:var(--tex-wood),linear-gradient(180deg,#cfcfcf 0%,#9d9d9d 30%,#767676 64%,#4e4e4e 100%);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.4),
    inset 0 2px 0 rgba(255,255,255,.5),inset 0 6px 8px rgba(255,255,255,.18),
    inset 0 -4px 0 rgba(0,0,0,.42),inset 0 -8px 10px rgba(0,0,0,.22),
    0 3px 0 #1f1f22,0 4px 5px rgba(0,0,0,.5)}
.btn-stone:active{box-shadow:inset 0 0 0 1px rgba(255,255,255,.35),inset 0 4px 6px rgba(0,0,0,.5),0 1px 0 #1f1f22,0 1px 2px rgba(0,0,0,.45)}
.btn-gold{background:linear-gradient(180deg,#fff6d0 0%,#f7d162 32%,#dea41e 62%,#b8860b 100%);border-color:#6e4a08;color:#6b2109;text-shadow:0 1px 0 rgba(255,248,215,.9);
  box-shadow:inset 0 0 0 1px rgba(255,250,220,.7),inset 0 2px 0 rgba(255,255,255,.75),inset 0 6px 8px rgba(255,255,255,.25),inset 0 -4px 0 rgba(120,80,10,.5),inset 0 -8px 10px rgba(120,80,10,.2),0 3px 0 #6b4200,0 4px 5px rgba(0,0,0,.5)}
.btn-gold:active{box-shadow:inset 0 0 0 1px rgba(255,250,220,.6),inset 0 4px 6px rgba(120,80,10,.6),0 1px 0 #6b4200,0 1px 2px rgba(0,0,0,.45)}
.btn-gold::before,.btn-gold::after,.btn-stone::before,.btn-stone::after{display:none}
.btn-sm{min-width:60px;height:30px;padding:0 12px;font-size:16px;letter-spacing:1px;border-radius:5px}
.btn-sm::before,.btn-sm::after{width:6px;top:4px;bottom:4px}
.btn-lg{min-width:180px;height:54px;font-size:28px;padding:0 30px;border-radius:9px}
.btn-block{display:flex;width:100%}
.btn-v{writing-mode:vertical-rl;min-width:0;width:36px;height:auto;padding:10px 0;letter-spacing:4px;font-size:18px;border-radius:5px}
.btn-v::before,.btn-v::after{display:none}
/* 圆形"闯"钮 */
.btn-round{width:58px;height:58px;min-width:0;padding:0;border-radius:50%;font-size:30px;letter-spacing:0;color:#7a1e12;border:2px solid #8a5a10;
  background:radial-gradient(circle at 40% 32%,#fff6cf 0%,#f2c245 40%,#d49a1e 75%,#9c6a0d 100%);
  text-shadow:0 1px 0 rgba(255,240,200,.9);
  box-shadow:0 0 0 2px #3a1d0c,inset 0 2px 2px rgba(255,255,255,.7),inset 0 -4px 6px rgba(120,70,0,.5),0 3px 5px rgba(0,0,0,.6),0 0 12px rgba(255,200,80,.5)}
.btn-round::before,.btn-round::after{display:none}
.btn-round .ink{position:absolute;inset:6px;border-radius:50%;border:2px solid rgba(122,30,18,.55);pointer-events:none}
.btn-round.dim{background:radial-gradient(circle at 40% 32%,#9c9c9c 0%,#6b6b6b 45%,#3f3f3f 100%);color:#ddd;border-color:#222;text-shadow:0 1px 0 #000;box-shadow:0 0 0 2px #111,inset 0 2px 2px rgba(255,255,255,.3),inset 0 -4px 6px rgba(0,0,0,.6),0 3px 5px rgba(0,0,0,.6)}
.btn-round.dim .ink{border-color:rgba(0,0,0,.4)}
.btn-round:active{transform:scale(.94)}
/* 蓝色光环钮（观摩遗刻） */
.btn-glow{min-width:150px;height:46px;background:radial-gradient(ellipse at 50% 50%,rgba(90,160,255,.55),rgba(20,60,140,.85) 70%);border:2px solid #9fd0ff;color:#e8f4ff;text-shadow:0 0 8px #4ea1ff,0 1px 0 #000;box-shadow:0 0 18px #3b8cff,inset 0 0 12px rgba(160,210,255,.7)}
.btn-glow::before,.btn-glow::after{display:none}
.btn .badge{position:absolute;right:-6px;top:-7px}

/* ---------- 7. 面板 ---------- */
.panel-wood{position:relative;padding:10px;border-radius:8px;background:var(--bg-wood);border:2px solid #24110a;
  box-shadow:inset 0 0 0 2px rgba(242,194,69,.55),inset 0 0 0 3px rgba(0,0,0,.35),inset 0 2px 0 rgba(255,220,150,.25),0 3px 8px rgba(0,0,0,.55)}
.panel-wood::before{content:'';position:absolute;inset:-4px;pointer-events:none;z-index:3;
  background:var(--corner-tl) left top / 26px 26px no-repeat,var(--corner-tr) right top / 26px 26px no-repeat,var(--corner-bl) left bottom / 26px 26px no-repeat,var(--corner-br) right bottom / 26px 26px no-repeat}
.panel-wood.no-corner::before{display:none}
.panel-paper{position:relative;padding:10px;border-radius:5px;color:var(--ink);
  background:var(--tex-damask) center / 150px 150px repeat,var(--bg-paper-light);
  border:1px solid rgba(90,60,20,.55);
  box-shadow:inset 0 0 0 1px rgba(255,248,225,.7),inset 0 0 26px rgba(150,105,45,.32),inset 0 0 60px rgba(180,130,60,.18),0 1px 0 rgba(255,240,200,.3)}
.panel-paper.dark{background:var(--tex-paper),linear-gradient(180deg,#d9bf8a,#c9a96e)}
.panel-inset{background:rgba(0,0,0,.28);border-radius:6px;box-shadow:inset 0 2px 6px rgba(0,0,0,.6),inset 0 0 0 1px rgba(242,194,69,.25);padding:8px}
/* 竹节框（装备信息套装区） */
.panel-bamboo{position:relative;padding:10px 14px;border:6px solid transparent;border-radius:8px;background:linear-gradient(rgba(20,30,15,.85),rgba(20,30,15,.85)) padding-box,repeating-linear-gradient(180deg,#8fbf5a 0 22px,#4f7d2c 22px 26px) border-box;color:#e6ffd0;box-shadow:inset 0 0 12px rgba(0,0,0,.7)}
.panel-bamboo .ok{color:#7ed08f}
/* 分隔线 */
.hr-wood{height:3px;margin:8px 0;border:0;background:linear-gradient(90deg,transparent,#7a4f00 15%,#f2c245 50%,#7a4f00 85%,transparent);opacity:.8}
.hr-ink{height:1px;margin:6px 0;border:0;background:linear-gradient(90deg,transparent,rgba(43,29,18,.5) 20%,rgba(43,29,18,.5) 80%,transparent)}

/* ---------- 8. 弹窗 ---------- */
.modal-mask{position:absolute;inset:0;z-index:100;background:rgba(0,0,0,.58);display:flex;align-items:center;justify-content:center;animation:fadeIn .18s ease-out}
.modal{position:relative;width:420px;max-height:820px;display:flex;flex-direction:column;border-radius:8px;
  background:var(--bg-wood);border:2px solid #24110a;
  box-shadow:inset 0 0 0 2px rgba(242,194,69,.6),inset 0 0 0 3px rgba(0,0,0,.35),0 8px 30px rgba(0,0,0,.8);
  animation:modalIn .18s cubic-bezier(.2,.9,.3,1.2)}
.modal .modal-corners{position:absolute;inset:-4px;pointer-events:none;z-index:3;
  background:var(--corner-tl) left top / 26px 26px no-repeat,var(--corner-tr) right top / 26px 26px no-repeat,var(--corner-bl) left bottom / 26px 26px no-repeat,var(--corner-br) right bottom / 26px 26px no-repeat}
.modal .modal-corners::before,.modal .modal-corners::after{content:'';position:absolute;top:30px;width:16px;height:16px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff3c2,#f2c245 40%,#7a4f00);box-shadow:0 0 0 1px #3f0a06}
.modal .modal-corners::before{left:14px}.modal .modal-corners::after{right:14px}
.modal-title{position:relative;height:44px;margin:8px 34px 0 34px;display:flex;align-items:center;justify-content:center;border-radius:4px;
  background:var(--tex-wood),linear-gradient(180deg,#d94a30 0%,#b62a1c 32%,#951d13 66%,#6c110a 100%);
  box-shadow:inset 0 0 0 1px rgba(255,214,120,.55),inset 0 2px 0 rgba(255,200,150,.4),inset 0 -3px 0 rgba(0,0,0,.4),0 2px 4px rgba(0,0,0,.55);
  font-family:var(--font-brush);font-size:24px;letter-spacing:3px;color:#ffeeb8;text-shadow:0 1px 0 #3f0a06,0 2px 3px rgba(0,0,0,.5),0 0 8px rgba(255,180,90,.35)}
/* 红条两端祥云卷 */
.modal-title::before,.modal-title::after{content:'';position:absolute;top:6px;width:32px;height:32px;pointer-events:none;opacity:.8;
  background:var(--tex-scroll-cloud) center / 100% 100% no-repeat}
.modal-title::before{left:6px}
.modal-title::after{right:6px;transform:scaleX(-1)}
.modal-close{position:absolute;right:-6px;top:-6px;width:38px;height:38px;border-radius:8px;z-index:5;
  background:radial-gradient(ellipse 80% 60% at 40% 24%,rgba(255,190,150,.5),transparent 70%),linear-gradient(180deg,#d94a30 0%,#b02419 40%,#7c130c 100%);
  border:2px solid #f0cd6e;
  box-shadow:0 0 0 1px #3f0a06,inset 0 0 0 1px rgba(255,225,150,.4),inset 0 -3px 4px rgba(0,0,0,.4),0 2px 5px rgba(0,0,0,.65);
  color:transparent;font-size:0;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .1s,filter .12s}
.modal-close::before,.modal-close::after{content:'';position:absolute;left:50%;top:50%;width:22px;height:4.5px;margin:-2.25px 0 0 -11px;border-radius:2px;
  background:linear-gradient(180deg,#fff5cc,#f2c245 55%,#b8860b);box-shadow:0 0 0 1px rgba(70,20,4,.75),0 1px 2px rgba(0,0,0,.5)}
.modal-close::before{transform:rotate(45deg)}
.modal-close::after{transform:rotate(-45deg)}
.modal-close:hover{filter:brightness(1.12)}
.modal-close:active{transform:scale(.92)}
.modal-body{margin:8px;padding:12px;flex:1 1 auto;min-height:0;overflow-y:auto;border-radius:5px;color:var(--ink);font-size:14px;line-height:1.5;
  background:var(--tex-damask) center top / 150px 150px repeat,var(--bg-paper-light);
  box-shadow:inset 0 0 0 1px rgba(255,248,225,.65),inset 0 0 26px rgba(150,105,45,.32),inset 0 0 70px rgba(180,130,60,.16);scrollbar-width:none}
.modal-body::-webkit-scrollbar{display:none}
.modal-body .desc{font-size:13px;color:var(--ink-soft)}
.modal-footer{display:flex;justify-content:center;gap:24px;padding:4px 12px 14px}
.modal-sm{width:340px}
.modal-dark .modal-body{background:var(--tex-noise),linear-gradient(180deg,#1a1210,#0d0908);color:#f3e6c4}
@keyframes modalIn{from{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* ---------- 9. 木牌 tab ---------- */
.tab-wood{display:flex;align-items:flex-end;gap:10px;padding:8px 10px 0;position:relative}
.tab-wood::after{content:'';position:absolute;left:0;right:0;bottom:0;height:4px;background:linear-gradient(180deg,#f2c245,#7a4f00);box-shadow:0 2px 3px rgba(0,0,0,.5)}
.tab{position:relative;flex:1 1 0;height:44px;display:flex;align-items:center;justify-content:center;border-radius:7px 7px 3px 3px;cursor:pointer;
  font-family:var(--font-brush);font-size:22px;letter-spacing:2px;color:#f6d675;text-shadow:var(--shadow-gold-text);
  background:var(--bg-wood-plank);border:2px solid #24110a;
  box-shadow:inset 0 0 0 1px rgba(242,194,69,.45),inset 0 2px 0 rgba(255,225,160,.35),inset 0 -3px 0 rgba(0,0,0,.45),0 2px 3px rgba(0,0,0,.5);transition:filter .12s,transform .1s}
.tab::before,.tab::after{content:'';position:absolute;top:6px;bottom:6px;width:8px;border-radius:2px;background:linear-gradient(90deg,#d8d8d8,#8f8f8f 45%,#5c5c5c 70%,#9c9c9c);box-shadow:0 0 0 1px #2a2a2a}
.tab::before{left:-4px}.tab::after{right:-4px}
.tab:hover{filter:brightness(1.1)}
.tab:active{transform:translateY(1px)}
.tab.active{background:var(--bg-red);color:#fff3c2;border-color:#3f0a06;height:48px;box-shadow:inset 0 0 0 1px rgba(255,214,120,.5),inset 0 2px 0 rgba(255,200,150,.4),inset 0 -3px 0 rgba(0,0,0,.4),0 0 10px rgba(216,50,31,.5)}
.tab.disabled{background:var(--bg-stone);color:#e8e8e8;text-shadow:0 1px 0 #333;pointer-events:none;filter:saturate(.3)}
.tab .badge{position:absolute;right:6px;top:-6px}
/* 宣纸 tab（寻访页） */
.tab-paper{display:flex;align-items:flex-end;gap:4px;padding:6px 8px 0;background:var(--bg-wood-dark);box-shadow:inset 0 -3px 0 #b8860b}
.tab-paper .tab{background:var(--tex-paper),linear-gradient(180deg,#e2cb95,#c9a96e);color:var(--ink);text-shadow:0 1px 0 rgba(255,245,220,.6);border-color:#4a2410;box-shadow:inset 0 1px 0 #fff3cf,inset 0 -2px 0 rgba(0,0,0,.25)}
.tab-paper .tab::before,.tab-paper .tab::after{display:none}
.tab-paper .tab.active{background:var(--bg-paper-light);height:48px;color:var(--ink);box-shadow:inset 0 2px 0 #fff,0 0 0 1px #f2c245}
.tab-paper .tab.gold{background:var(--bg-gold);color:#7a1e12;flex:0 0 76px;font-size:20px}

/* ---------- 10. 角标 / 星级 / 印章 / 进度条 ---------- */
.badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;z-index:4;
  background:radial-gradient(circle at 35% 30%,#ff8a6a,#d8321f 55%,#8a140a);color:#fff;font-family:var(--font-body);font-weight:700;font-size:11px;line-height:1;
  box-shadow:0 0 0 1px #5a0a04,inset 0 1px 0 rgba(255,255,255,.4),0 1px 2px rgba(0,0,0,.6);text-shadow:0 1px 0 #6e140c;pointer-events:none}
.badge.dot{min-width:11px;width:11px;height:11px;padding:0}
.badge.gold{background:radial-gradient(circle at 35% 30%,#fff6cf,#f2c245 50%,#b8860b);color:#5a2b00;text-shadow:none;box-shadow:0 0 0 1px #5a3800,0 1px 2px rgba(0,0,0,.6)}
.badge.abs{position:absolute;right:-5px;top:-5px}
.stars{display:inline-flex;align-items:center;gap:1px;vertical-align:middle}
.stars svg{width:16px;height:16px;flex:none;filter:drop-shadow(0 1px 1px rgba(0,0,0,.5))}
.stars.sm svg{width:12px;height:12px}
.stars.lg svg{width:22px;height:22px}
.stars .off{opacity:.9}
/* 圆形朱红印章 */
.seal{position:relative;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;vertical-align:middle;flex:none;
  background:radial-gradient(circle at 40% 35%,#e8523a 0%,#c22f1f 45%,#8f1d13 100%);color:#fff6e6;font-family:var(--font-brush);font-size:19px;line-height:1;
  box-shadow:0 0 0 1.5px #fff0c8,0 0 0 3px #a8261b,0 2px 3px rgba(0,0,0,.5),inset 0 -2px 3px rgba(0,0,0,.35),inset 0 1px 1px rgba(255,255,255,.35);
  text-shadow:0 1px 0 #6e140c;transform:rotate(-6deg)}
.seal::after{content:'';position:absolute;inset:3px;border-radius:50%;border:1px solid rgba(255,240,200,.55);pointer-events:none}
.seal.sm{width:22px;height:22px;font-size:14px;box-shadow:0 0 0 1px #fff0c8,0 0 0 2px #a8261b,0 1px 2px rgba(0,0,0,.5),inset 0 -2px 3px rgba(0,0,0,.35)}
.seal.lg{width:40px;height:40px;font-size:26px}
.seal.square{border-radius:4px;transform:rotate(-4deg)}
.seal.square::after{border-radius:2px}
.seal.ink{background:radial-gradient(circle at 40% 35%,#4a3a2a,#2b1d12 60%,#0e0805);box-shadow:0 0 0 1.5px #d9bf8a,0 0 0 3px #2b1d12,0 2px 3px rgba(0,0,0,.5)}
.seal.gold{background:radial-gradient(circle at 40% 35%,#fff0b3,#f2c245 45%,#a8720a);color:#7a1e12;text-shadow:0 1px 0 rgba(255,245,210,.8);box-shadow:0 0 0 1.5px #5a3800,0 0 0 3px #f2c245,0 2px 3px rgba(0,0,0,.5)}
/* 属性小印（攻/防/血/内） */
.stat-seal{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;border-radius:50%;flex:none;font-family:var(--font-brush);font-size:12px;line-height:1;color:#fff6e6;
  background:radial-gradient(circle at 40% 35%,#e8523a,#a8261b 60%,#6e140c);box-shadow:0 0 0 1px #fff0c8,0 0 0 2px #8f1d13,inset 0 -1px 2px rgba(0,0,0,.4);text-shadow:0 1px 0 #6e140c}
.stat-seal.def{background:radial-gradient(circle at 40% 35%,#6aa5e8,#2f6fb5 60%,#173d6b);box-shadow:0 0 0 1px #d8ecff,0 0 0 2px #2f6fb5}
.stat-seal.hp{background:radial-gradient(circle at 40% 35%,#7ed08f,#3f8f5a 60%,#215c34);box-shadow:0 0 0 1px #e0ffe6,0 0 0 2px #2f7a48}
.stat-seal.mp{background:radial-gradient(circle at 40% 35%,#b58ae0,#7b3fb5 60%,#48206e);box-shadow:0 0 0 1px #efe0ff,0 0 0 2px #6b32a8}
/* 进度条 */
.bar{position:relative;height:14px;border-radius:7px;overflow:hidden;background:linear-gradient(180deg,#120904,#2a1608 60%,#1a0c04);
  box-shadow:inset 0 1px 3px rgba(0,0,0,.8),0 0 0 1px #6e4a1c,0 1px 0 rgba(255,225,160,.25)}
.bar .fill{position:absolute;left:0;top:0;bottom:0;border-radius:7px;min-width:4px;transition:width .35s ease-out;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.45),inset 0 -2px 2px rgba(0,0,0,.35)}
.bar .fill::after{content:'';position:absolute;left:2px;right:2px;top:1px;height:40%;border-radius:6px;background:linear-gradient(180deg,rgba(255,255,255,.45),rgba(255,255,255,0))}
.bar .txt{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--font-body);font-size:10px;font-weight:700;line-height:1;color:#fff;letter-spacing:.3px;text-shadow:0 0 2px #000,0 1px 0 #000,0 -1px 0 #000,1px 0 0 #000,-1px 0 0 #000;white-space:nowrap}
.bar-hp .fill{background:linear-gradient(180deg,#8ee39f 0%,#3f8f5a 55%,#215c34 100%)}
.bar-mp .fill{background:linear-gradient(180deg,#8fc2f5 0%,#2f6fb5 55%,#173d6b 100%)}
.bar-exp .fill{background:linear-gradient(180deg,#ff7a5c 0%,#d8321f 55%,#7e1a10 100%)}
.bar-gold .fill{background:linear-gradient(180deg,#fff0b3 0%,#f2c245 55%,#b8860b 100%)}
.bar-purple .fill{background:linear-gradient(180deg,#d4b5f5 0%,#7b3fb5 55%,#48206e 100%)}
.bar.thin{height:9px;border-radius:5px}
.bar.thin .txt{font-size:8px}
.bar.lg{height:20px;border-radius:10px}
.bar.lg .txt{font-size:12px}

/* ---------- 11. 品质通用（框色/文字） ---------- */
.q-甲{--qc:#f2c245;--qc2:#b8860b;--qc3:#fff0b3;--qbg:radial-gradient(circle at 50% 40%,#fff0c2 0%,#f0cf78 55%,#c99a2a 100%)}
.q-乙{--qc:#9b59d6;--qc2:#5c2d8e;--qc3:#e5cffb;--qbg:radial-gradient(circle at 50% 40%,#f1e3ff 0%,#c9a2ee 55%,#7b3fb5 100%)}
.q-丙{--qc:#3b82f6;--qc2:#1d4f9e;--qc3:#cfe2ff;--qbg:radial-gradient(circle at 50% 40%,#e6f1ff 0%,#9cc4f7 55%,#2f6fb5 100%)}
.q-丁{--qc:#4caf50;--qc2:#2a6e2e;--qc3:#d8f3d9;--qbg:radial-gradient(circle at 50% 40%,#eafbe8 0%,#a4dba3 55%,#3f8f5a 100%)}
.q-none{--qc:#9a8a70;--qc2:#5b4630;--qc3:#e8d3a3;--qbg:radial-gradient(circle at 50% 40%,#f3e6c4,#c9a96e 60%,#8c7355)}
.qtag{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:3px;font-family:var(--font-brush);font-size:13px;line-height:1;color:#fff;vertical-align:middle;
  background:linear-gradient(180deg,var(--qc3,#e8d3a3),var(--qc,#9a8a70) 45%,var(--qc2,#5b4630));box-shadow:0 0 0 1px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.45);text-shadow:0 1px 0 rgba(0,0,0,.5)}
.qtag.q-甲{color:#7a1e12;text-shadow:0 1px 0 rgba(255,245,210,.8)}
.qtag.red{background:var(--bg-red);color:#fff3c2;box-shadow:0 0 0 1px #3f0a06}

/* ---------- 12. 头像框 ---------- */
.avatar{position:relative;display:inline-flex;flex-direction:column;align-items:center;vertical-align:top;cursor:pointer;flex:none;--as:60px;width:var(--as);transition:transform .1s}
.avatar .frame{position:relative;width:var(--as);height:var(--as);border-radius:6px;overflow:hidden;
  background:radial-gradient(circle at 50% 30%,#4a3a2a,#1e130a 70%);
  box-shadow:0 0 0 2px var(--qc,#9a8a70),0 0 0 3px var(--qc2,#5b4630),inset 0 0 0 1px rgba(255,255,255,.25),0 2px 3px rgba(0,0,0,.6)}
.avatar .frame::after{content:'';position:absolute;inset:0;border-radius:6px;pointer-events:none;box-shadow:inset 0 0 8px rgba(0,0,0,.6);background:linear-gradient(180deg,rgba(255,255,255,.18),transparent 30%)}
.avatar .frame img{width:100%;height:100%;object-fit:cover;object-position:50% 8%;display:block}
.avatar .frame .portrait{width:100%;height:100%}
.avatar .frame .portrait img{object-position:50% 8%}
.avatar.avatar-sm{--as:44px}.avatar.avatar-sm .frame{border-radius:5px}
.avatar.avatar-md{--as:60px}
.avatar.avatar-lg{--as:80px}.avatar.avatar-lg .frame{border-radius:8px}
.avatar.avatar-xl{--as:110px}.avatar.avatar-xl .frame{border-radius:8px}
.avatar.round .frame,.avatar.round .frame::after{border-radius:50%}
.avatar .lv{position:absolute;left:-2px;bottom:-2px;z-index:3;min-width:22px;height:16px;padding:0 4px;border-radius:3px;font-family:var(--font-body);font-size:10px;font-weight:700;line-height:16px;text-align:center;color:#ffe9a3;
  background:linear-gradient(180deg,#4a2410,#1a0c04);box-shadow:0 0 0 1px #f2c245,0 1px 2px rgba(0,0,0,.6);text-shadow:0 1px 0 #000}
.avatar .badge{position:absolute;right:-5px;top:-5px;z-index:3}
.avatar .nm{margin-top:3px;font-size:12px;line-height:1.1;color:var(--ink);white-space:nowrap;max-width:calc(var(--as) + 12px);overflow:hidden;text-overflow:ellipsis;text-align:center}
.avatar.on-dark .nm{color:#ffe9a3;text-shadow:0 1px 0 #000}
.avatar .q{position:absolute;right:-3px;bottom:-3px;z-index:3;transform:scale(.8);transform-origin:right bottom}
.avatar:hover{transform:translateY(-1px)}
.avatar:active{transform:scale(.95)}
.avatar.selected .frame{box-shadow:0 0 0 2px #fff0b3,0 0 0 4px #f2c245,0 0 12px 3px rgba(255,210,80,.7),inset 0 0 0 1px rgba(255,255,255,.35)}
.avatar.dim .frame img{filter:grayscale(1) brightness(.6)}
.avatar.empty .frame{background:rgba(0,0,0,.18);box-shadow:inset 0 0 0 2px rgba(90,60,20,.55);display:flex;align-items:center;justify-content:center;color:rgba(90,60,20,.7);font-size:28px;font-family:var(--font-brush)}
.avatar.empty .frame::after{display:none}
.avatar.empty .frame::before{content:'+';}
.avatar.locked .frame::before{content:'';position:absolute;inset:0;background:rgba(0,0,0,.55);z-index:2}
/* 上阵头像横排 */
.avatar-strip{display:flex;gap:6px;padding:8px 6px;align-items:flex-start;overflow-x:auto;scrollbar-width:none;background:var(--tex-paper),linear-gradient(180deg,#d9bf8a,#c9a96e);box-shadow:inset 0 -2px 0 #7a4f00,inset 0 1px 0 #fff3cf}
.avatar-strip::-webkit-scrollbar{display:none}

/* 立绘 */
.portrait{position:relative;overflow:hidden;background:transparent}
.portrait img{width:100%;height:100%;object-fit:cover;object-position:50% 0%;display:block}
.portrait .pm{display:none}
.portrait.portrait-missing{background:
  radial-gradient(ellipse 22% 15% at 50% 24%,rgba(70,50,32,.9) 0%,rgba(70,50,32,.9) 70%,rgba(70,50,32,0) 100%),
  radial-gradient(ellipse 42% 30% at 50% 78%,rgba(60,42,26,.9) 0%,rgba(60,42,26,.85) 60%,rgba(60,42,26,0) 100%),
  radial-gradient(ellipse 60% 20% at 50% 40%,rgba(255,240,200,.35),transparent 70%),linear-gradient(180deg,rgba(255,240,200,.1),rgba(0,0,0,.15))}
.portrait.portrait-missing .pm{display:flex;position:absolute;inset:0;align-items:center;justify-content:center;font-family:var(--font-brush);font-size:26px;font-style:normal;color:rgba(255,240,200,.9);text-shadow:0 1px 0 #000,0 0 6px rgba(0,0,0,.7);writing-mode:vertical-rl;letter-spacing:4px;padding-top:34%}
.avatar .frame .portrait.portrait-missing .pm{writing-mode:horizontal-tb;font-size:15px;letter-spacing:0;padding:30% 0 0}
.avatar-sm .frame .portrait.portrait-missing .pm{font-size:11px}
.avatar-lg .frame .portrait.portrait-missing .pm,.avatar-xl .frame .portrait.portrait-missing .pm{font-size:20px}

/* ---------- 13. 装备/武学槽 ---------- */
.slot{position:relative;display:inline-flex;flex-direction:column;align-items:center;width:68px;cursor:pointer;flex:none;transition:transform .1s;vertical-align:top}
.slot .box{position:relative;width:60px;height:60px;border-radius:7px;background:var(--qbg,radial-gradient(circle at 50% 40%,#f3e6c4,#c9a96e 60%,#8c7355));
  box-shadow:0 0 0 2px var(--qc,#9a8a70),0 0 0 3px #2b1d12,inset 0 0 0 1px rgba(255,255,255,.55),inset 0 -6px 8px rgba(0,0,0,.18),0 2px 3px rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;overflow:visible}
.slot .box::before{content:'';position:absolute;inset:2px;border-radius:5px;pointer-events:none;background:linear-gradient(180deg,rgba(255,255,255,.35),transparent 40%)}
.slot .box svg{width:50px;height:50px;filter:drop-shadow(0 2px 2px rgba(0,0,0,.4));position:relative;z-index:1}
.slot .tier{position:absolute;right:-6px;top:-6px;z-index:3;width:20px;height:20px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-family:var(--font-brush);font-size:14px;line-height:1;color:#fff3c2;
  background:var(--bg-red);box-shadow:0 0 0 1px #3f0a06,inset 0 1px 0 rgba(255,220,150,.5),0 1px 2px rgba(0,0,0,.6);text-shadow:0 1px 0 #3f0a06}
.slot .lv{position:absolute;left:-4px;bottom:-4px;z-index:3;min-width:18px;height:16px;padding:0 4px;border-radius:8px;font-family:var(--font-body);font-size:10px;font-weight:700;line-height:16px;text-align:center;color:#ffe9a3;background:linear-gradient(180deg,#4a2410,#1a0c04);box-shadow:0 0 0 1px #f2c245;text-shadow:0 1px 0 #000}
.slot .nm{margin-top:5px;width:70px;font-size:11px;line-height:1.15;text-align:center;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:700;text-shadow:0 1px 0 rgba(255,245,220,.7)}
.slot.on-dark .nm{color:#ffe9a3;text-shadow:0 1px 0 #000}
.slot:hover{transform:translateY(-1px)}
.slot:active{transform:scale(.95)}
.slot.empty .box{background:rgba(43,29,18,.12);box-shadow:inset 0 0 0 2px rgba(90,60,20,.5),inset 0 0 12px rgba(0,0,0,.2);color:rgba(90,60,20,.75);font-family:var(--font-brush);font-size:13px;letter-spacing:1px;writing-mode:vertical-rl}
.slot.empty .box::before{display:none}
.slot.empty .box::after{content:'+';position:absolute;right:2px;bottom:-2px;font-size:20px;line-height:1;color:rgba(90,60,20,.6)}
.slot.selected .box{box-shadow:0 0 0 2px #fff0b3,0 0 0 4px #f2c245,0 0 12px 3px rgba(255,210,80,.7)}
.slot-col{display:flex;flex-direction:column;gap:6px;width:68px;flex:none}
/* 物品格 */
.item{position:relative;display:inline-flex;flex-direction:column;align-items:center;flex:none;cursor:pointer;vertical-align:top;transition:transform .1s;--is:56px}
.item .box{position:relative;width:var(--is);height:var(--is);border-radius:8px;background:var(--qbg);display:flex;align-items:center;justify-content:center;
  box-shadow:0 0 0 2px var(--qc),0 0 0 3px #2b1d12,inset 0 0 0 1px rgba(255,255,255,.6),inset 0 -6px 8px rgba(0,0,0,.15),0 2px 3px rgba(0,0,0,.55)}
.item .box::before{content:'';position:absolute;inset:2px;border-radius:6px;pointer-events:none;background:linear-gradient(180deg,rgba(255,255,255,.4),transparent 45%)}
.item .box svg{width:calc(var(--is) - 8px);height:calc(var(--is) - 8px);position:relative;z-index:1;filter:drop-shadow(0 2px 2px rgba(0,0,0,.35))}
.item .n{position:absolute;right:-3px;bottom:-3px;z-index:3;min-width:18px;height:16px;padding:0 4px;border-radius:3px;font-family:var(--font-body);font-size:11px;font-weight:700;line-height:16px;text-align:center;color:#fff;background:linear-gradient(180deg,#3a2a1a,#0e0805);box-shadow:0 0 0 1px #c9a96e;text-shadow:0 1px 0 #000}
.item .badge{position:absolute;left:-6px;top:-6px;z-index:3}
.item .nm{margin-top:4px;font-size:11px;line-height:1.1;color:var(--ink);text-align:center;max-width:calc(var(--is) + 14px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:700}
.item.on-dark .nm{color:#ffe9a3;text-shadow:0 1px 0 #000}
.item.sm{--is:44px}.item.sm .box{border-radius:6px}
.item.lg{--is:72px}
.item:hover{transform:translateY(-1px)}
.item:active{transform:scale(.95)}
.item.empty .box{background:rgba(43,29,18,.1);box-shadow:inset 0 0 0 2px rgba(90,60,20,.4)}
.item.empty .box::before{display:none}
.item.selected .box{box-shadow:0 0 0 2px #fff0b3,0 0 0 4px #f2c245,0 0 12px 3px rgba(255,210,80,.7)}
.item-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px 4px;padding:8px 6px;justify-items:center}

/* ---------- 14. 弟子大卡（t009，300×440） ---------- */
.card-wrap{display:flex;align-items:flex-start;justify-content:center;gap:6px;width:448px;padding:4px 0}
.card{position:relative;width:300px;height:440px;border-radius:10px;flex:none;color:var(--ink);
  background:
    radial-gradient(ellipse 70% 45% at 50% 42%,rgba(255,236,160,.95) 0%,rgba(244,206,110,.75) 40%,rgba(235,190,90,0) 72%),
    radial-gradient(ellipse 120% 40% at 50% 100%,rgba(120,80,30,.35),transparent 60%),
    var(--tex-paper),linear-gradient(180deg,#f6e6b8 0%,#efd48f 45%,#e7c777 100%);
  box-shadow:0 0 0 3px var(--qc,#f2c245),0 0 0 5px var(--qc2,#b8860b),0 0 0 6px #3a1d0c,0 6px 14px rgba(0,0,0,.6);
  overflow:hidden}
.card::before{content:'';position:absolute;inset:4px;border-radius:7px;pointer-events:none;z-index:6;
  border:1.5px solid rgba(255,255,255,.6);box-shadow:inset 0 0 0 1px var(--qc2,#b8860b),inset 0 0 0 2px rgba(255,255,255,.35)}
.card::after{content:'';position:absolute;inset:0;pointer-events:none;z-index:5;border-radius:10px;
  background:
    radial-gradient(circle at 0 0,var(--qc3,#fff0b3) 0,transparent 42px),radial-gradient(circle at 100% 0,var(--qc3,#fff0b3) 0,transparent 42px),
    radial-gradient(circle at 0 100%,var(--qc3,#fff0b3) 0,transparent 42px),radial-gradient(circle at 100% 100%,var(--qc3,#fff0b3) 0,transparent 42px);
  opacity:.35;mix-blend-mode:screen}
.card-frame{position:absolute;inset:0;pointer-events:none;z-index:6;border-radius:10px;
  background:
    var(--tex-cloud) left 6px top 2px / 90px 30px no-repeat,var(--tex-cloud) right 6px bottom 2px / 90px 30px no-repeat;opacity:.55}
.card-stars{position:absolute;left:0;right:0;top:9px;display:flex;justify-content:center;z-index:7}
.card-stars svg{width:20px;height:20px}
.card-help{position:absolute;left:10px;top:9px;z-index:8;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--font-brush);font-size:18px;color:#7a1e12;cursor:pointer;
  background:radial-gradient(circle at 40% 32%,#fff6cf,#f2c245 50%,#c98a12);box-shadow:0 0 0 1.5px #5a3800,inset 0 -2px 3px rgba(120,70,0,.5),0 1px 2px rgba(0,0,0,.5);text-shadow:0 1px 0 rgba(255,245,210,.8)}
.card-help:active{transform:scale(.92)}
.card-title{position:absolute;right:14px;top:0;z-index:8;writing-mode:vertical-rl;padding:10px 3px 12px;font-family:var(--font-brush);font-size:20px;line-height:1;letter-spacing:3px;color:#ffe9a3;text-shadow:0 1px 0 #3f0a06,0 0 4px rgba(0,0,0,.4);
  background:linear-gradient(90deg,#8f1d13,#c8331f 45%,#a8261b 60%,#6e140c);box-shadow:inset 0 0 0 1px rgba(255,214,120,.55),inset 2px 0 0 rgba(255,200,150,.25),0 2px 4px rgba(0,0,0,.5);
  clip-path:polygon(0 0,100% 0,100% calc(100% - 8px),50% 100%,0 calc(100% - 8px))}
.card-portrait{position:absolute;left:40px;right:40px;top:34px;height:300px;z-index:2;display:flex;align-items:flex-end;justify-content:center}
.card-portrait .portrait{width:200px;height:300px;-webkit-mask-image:linear-gradient(180deg,#000 82%,transparent 100%);mask-image:linear-gradient(180deg,#000 82%,transparent 100%)}
.card-portrait .portrait img{object-position:50% 0}
.card-portrait .portrait .pm{font-size:34px}
.card-halo{position:absolute;left:50%;top:150px;width:260px;height:260px;margin-left:-130px;z-index:1;pointer-events:none;
  background:radial-gradient(circle,rgba(255,250,210,.95) 0%,rgba(255,225,120,.55) 30%,rgba(255,215,100,0) 70%);animation:haloPulse 4s ease-in-out infinite}
.card-halo::before{content:'';position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,rgba(255,240,180,0) 0deg,rgba(255,240,180,.55) 12deg,rgba(255,240,180,0) 24deg,rgba(255,240,180,0) 60deg,rgba(255,240,180,.5) 72deg,rgba(255,240,180,0) 84deg,rgba(255,240,180,0) 120deg,rgba(255,240,180,.55) 132deg,rgba(255,240,180,0) 144deg,rgba(255,240,180,0) 180deg,rgba(255,240,180,.5) 192deg,rgba(255,240,180,0) 204deg,rgba(255,240,180,0) 240deg,rgba(255,240,180,.55) 252deg,rgba(255,240,180,0) 264deg,rgba(255,240,180,0) 300deg,rgba(255,240,180,.5) 312deg,rgba(255,240,180,0) 324deg);
  -webkit-mask-image:radial-gradient(circle,#000 20%,transparent 70%);mask-image:radial-gradient(circle,#000 20%,transparent 70%);animation:spin 30s linear infinite}
.card-ink{position:absolute;left:0;right:0;top:230px;height:120px;z-index:1;pointer-events:none;opacity:.45;
  background:
    radial-gradient(ellipse 40% 60% at 15% 100%,rgba(60,45,30,.9),transparent 70%),radial-gradient(ellipse 30% 50% at 40% 100%,rgba(60,45,30,.6),transparent 70%),
    radial-gradient(ellipse 45% 65% at 80% 100%,rgba(60,45,30,.85),transparent 70%),radial-gradient(ellipse 25% 40% at 60% 100%,rgba(60,45,30,.5),transparent 70%)}
.card-name{position:absolute;left:14px;top:40px;z-index:7;writing-mode:vertical-rl;font-family:var(--font-brush);font-size:44px;line-height:1;letter-spacing:2px;color:#1a0f08;
  text-shadow:-1px -1px 0 rgba(255,250,235,.9),1px -1px 0 rgba(255,250,235,.9),-1px 1px 0 rgba(255,250,235,.9),1px 1px 0 rgba(255,250,235,.9),0 2px 4px rgba(0,0,0,.45)}
.card-seal{position:absolute;left:16px;top:230px;z-index:8}
.card-seal .seal{width:34px;height:34px;font-size:22px}
.card-seal .stat-seal{display:flex;margin:8px 0 0 8px}
.card-icons{position:absolute;right:12px;top:200px;z-index:8;display:flex;flex-direction:column;gap:6px;align-items:center}
.card-icons .ci{width:34px;height:34px;border-radius:6px;display:flex;align-items:center;justify-content:center;cursor:pointer;background:radial-gradient(circle at 40% 32%,#fff6cf,#f2c245 55%,#b8860b);box-shadow:0 0 0 1.5px #5a3800,inset 0 -2px 3px rgba(120,70,0,.5),0 1px 2px rgba(0,0,0,.5);transition:transform .1s}
.card-icons .ci svg{width:26px;height:26px}
.card-icons .ci:active{transform:scale(.92)}
.card-icons .ci.locked{filter:grayscale(1) brightness(.75)}
.card-info{position:absolute;left:0;right:0;bottom:0;height:126px;z-index:7;padding:6px 10px 4px 12px;
  background:linear-gradient(180deg,rgba(243,230,196,0),rgba(243,230,196,.85) 12%,rgba(243,230,196,.92))}
.card-lv{display:flex;align-items:center;gap:6px;height:22px}
.card-lv .lv{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:10px;background:var(--bg-red);color:#fff;font-family:var(--font-body);font-weight:700;font-size:14px;box-shadow:0 0 0 1px #3f0a06,inset 0 1px 0 rgba(255,200,150,.4);text-shadow:0 1px 0 #6e140c}
.card-lv .lv small{font-size:11px;margin-left:5px;color:#ffe08a;font-weight:700}
.card-lv .bar{flex:1 1 auto;height:12px}
.card-stats{display:flex;justify-content:space-between;margin-top:5px;font-family:var(--font-body);font-size:12px;font-weight:700;color:var(--ink)}
.card-stats .st{display:inline-flex;align-items:center;gap:2px;white-space:nowrap}
.card-fates{display:grid;grid-template-columns:1fr 1fr;gap:1px 6px;margin-top:5px;font-size:11px;line-height:1.35;padding-right:64px;min-height:36px}
.card-fates .f{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#8c7355}
.card-fates .f::before{content:'◆';font-size:9px;margin-right:2px;vertical-align:1px}
.card-fates .f.on{color:#a86a05;text-shadow:0 1px 0 rgba(255,245,210,.6);font-weight:700}
.card-skin{position:absolute;right:10px;bottom:8px}
.card-skin .btn{min-width:0;width:44px;height:44px;padding:4px;font-size:15px;line-height:1.05;letter-spacing:0;white-space:normal;border-radius:6px}
.card-skin .btn::before,.card-skin .btn::after{display:none}
.card-乙 .card-halo{background:radial-gradient(circle,rgba(240,225,255,.95) 0%,rgba(190,140,240,.5) 30%,rgba(150,90,220,0) 70%)}
.card-丙 .card-halo{background:radial-gradient(circle,rgba(230,245,255,.95) 0%,rgba(140,190,250,.5) 30%,rgba(60,130,240,0) 70%)}
.card-丁 .card-halo{background:radial-gradient(circle,rgba(235,255,235,.95) 0%,rgba(150,220,160,.5) 30%,rgba(60,175,80,0) 70%)}
.card-乙{background:radial-gradient(ellipse 70% 45% at 50% 42%,rgba(240,225,255,.9) 0%,rgba(205,170,240,.6) 40%,rgba(200,160,240,0) 72%),var(--tex-paper),linear-gradient(180deg,#f3e6c4 0%,#e6d3a8 45%,#d9c08a 100%)}
.card-丙{background:radial-gradient(ellipse 70% 45% at 50% 42%,rgba(225,240,255,.9) 0%,rgba(160,200,250,.55) 40%,rgba(150,190,250,0) 72%),var(--tex-paper),linear-gradient(180deg,#f3e6c4 0%,#e6d3a8 45%,#d9c08a 100%)}
.card-丁{background:radial-gradient(ellipse 70% 45% at 50% 42%,rgba(230,250,230,.9) 0%,rgba(170,225,175,.55) 40%,rgba(150,220,160,0) 72%),var(--tex-paper),linear-gradient(180deg,#f3e6c4 0%,#e6d3a8 45%,#d9c08a 100%)}
@keyframes haloPulse{0%,100%{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}
@keyframes spin{to{transform:rotate(360deg)}}
/* 小卡（图鉴/列表用，150×220） */
.card.card-mini{width:150px;height:220px;border-radius:7px;box-shadow:0 0 0 2px var(--qc),0 0 0 3px var(--qc2),0 0 0 4px #3a1d0c,0 3px 8px rgba(0,0,0,.5)}
.card-mini .card-stars{top:5px}.card-mini .card-stars svg{width:12px;height:12px}
.card-mini .card-name{font-size:24px;left:6px;top:22px}
.card-mini .card-portrait{left:14px;right:14px;top:18px;height:160px}
.card-mini .card-portrait .portrait{width:110px;height:160px}
.card-mini .card-halo{width:140px;height:140px;margin-left:-70px;top:70px}
.card-mini .card-title{font-size:13px;right:6px;padding:6px 2px 8px;letter-spacing:2px}
.card-mini .card-seal{left:6px;top:150px}.card-mini .card-seal .seal{width:24px;height:24px;font-size:15px}
.card-mini .card-info{height:40px;padding:2px 6px}
.card-mini .card-info .nm{font-family:var(--font-brush);font-size:16px;text-align:center;color:var(--ink)}
.card-mini .card-info .sub{font-size:10px;text-align:center;color:var(--ink-soft)}
.card-mini .card-ink{top:110px;height:70px}
.card-mini .card-help,.card-mini .card-icons{display:none}

/* ---------- 15. 列表行 / 关卡行 / 商贾行 / 礼包行 ---------- */
.list-row{position:relative;display:flex;align-items:center;gap:10px;min-height:66px;margin:6px 6px 0;padding:7px 10px 7px 14px;border-radius:7px;color:#f3e6c4;cursor:pointer;
  background:
    linear-gradient(180deg,rgba(255,232,180,.16),rgba(255,232,180,0) 26%),
    var(--tex-wood),
    linear-gradient(180deg,#a2622d 0%,#7d4419 22%,#663616 68%,#4e2711 100%);
  border:1px solid #231106;
  box-shadow:
    inset 0 1px 0 rgba(255,228,168,.36),inset 0 0 0 1px rgba(0,0,0,.22),
    inset 0 -5px 8px rgba(0,0,0,.4),
    0 3px 5px rgba(0,0,0,.5),0 1px 0 rgba(255,240,200,.18);
  transition:filter .12s,transform .1s}
.list-row::before,.list-row::after{content:'';position:absolute;left:4px;width:7px;height:7px;border-radius:50%;
  background:radial-gradient(circle at 35% 28%,#f2f2f2,#8a8a8a 55%,#2a2a2a);box-shadow:0 0 0 1px #0f0f0f,inset 0 -1px 1px rgba(0,0,0,.6)}
.list-row::before{top:6px}.list-row::after{bottom:6px}
.list-row:hover{filter:brightness(1.07)}
.list-row:active{filter:brightness(.93);transform:translateY(1px)}
.list-row .lead{flex:none;display:flex;align-items:center;justify-content:center}
.list-row .body{flex:1 1 auto;min-width:0}
.list-row .title{font-size:16px;font-weight:700;color:#ffe9a3;text-shadow:0 1px 0 #000;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}
.list-row .title .hint{font-size:12px;font-weight:400;color:#f3e6c4;margin-left:8px}
.list-row .sub{font-size:12px;color:#e8d3a3;line-height:1.35;text-shadow:0 1px 0 rgba(0,0,0,.6);margin-top:2px}
.list-row .right{flex:none;display:flex;align-items:center;gap:6px}
.list-row.paper{background:var(--bg-paper-light);color:var(--ink);border-color:#8c7355;box-shadow:inset 0 0 0 1px rgba(255,248,225,.6),inset 0 0 18px rgba(120,80,30,.2),0 1px 2px rgba(0,0,0,.35)}
.list-row.paper::before,.list-row.paper::after{display:none}
.list-row.paper .title{color:var(--ink);text-shadow:none}
.list-row.paper .sub{color:var(--ink-soft);text-shadow:none}
.list-row.paper .title .hint{color:var(--ink-soft)}
.list-row.selected{box-shadow:inset 0 0 0 2px #f2c245,inset 0 0 12px rgba(255,210,80,.35),0 2px 3px rgba(0,0,0,.5)}
/* 关卡行 */
.stage-row{min-height:84px;padding:8px 8px 8px 14px}
.stage-row .name{font-family:var(--font-brush);font-size:22px;letter-spacing:2px;color:#ffe9a3;text-shadow:0 1px 0 #000,0 0 4px rgba(0,0,0,.5)}
.stage-row .sub{font-size:11px}
.stage-row .right{flex-direction:column;gap:2px;align-items:center;width:70px}
.stage-row .right .stars{margin-bottom:-6px;position:relative;z-index:2}
.stage-row.locked{filter:saturate(.35) brightness(.7)}
.stage-row.locked .name{color:#c9b28a}
/* 商贾行 / 礼包行 */
.shop-row,.gift-row{align-items:stretch;min-height:120px;padding:10px 10px 10px 12px;gap:10px;cursor:default}
.shop-row .lead,.gift-row .lead{align-items:flex-start;padding-top:2px}
.shop-row .lead .item .badge,.gift-row .lead .item .badge{left:auto;right:-8px;top:-8px}
.shop-row .body,.gift-row .body{display:flex;flex-direction:column}
.shop-row .desc,.gift-row .desc{font-size:12px;line-height:1.45;color:#f3e6c4;margin-top:4px;flex:1 1 auto;text-shadow:0 1px 0 rgba(0,0,0,.6)}
.shop-row .foot,.gift-row .foot{display:flex;align-items:flex-end;justify-content:space-between;margin-top:6px}
.price{display:inline-flex;align-items:center;gap:4px;font-family:var(--font-body);font-size:14px;color:#f3e6c4;white-space:nowrap}
.price svg{width:24px;height:24px;filter:drop-shadow(0 1px 2px rgba(0,0,0,.7))}
.price .v{font-weight:700;font-size:17px;color:#fff8e6;text-shadow:0 1px 0 #000,0 2px 3px rgba(0,0,0,.5)}
.price .lab{font-size:12px;color:#e8d3a3}
.price.orig .v{color:#c9ab7c;text-decoration:line-through;font-size:14px;font-weight:400;text-shadow:0 1px 0 #000}
.price-col{display:flex;flex-direction:column;gap:3px}
.tag-special{display:inline-flex;align-items:center;justify-content:center;height:20px;padding:0 6px;border-radius:3px;font-family:var(--font-brush);font-size:15px;line-height:1;letter-spacing:1px;color:#ffe08a;
  background:var(--bg-red);box-shadow:0 0 0 1px #3f0a06,0 0 0 2px #f2c245,inset 0 1px 0 rgba(255,200,150,.4);text-shadow:0 1px 0 #3f0a06}
.countdown{position:absolute;right:12px;top:8px;font-family:var(--font-body);font-size:12px;color:#ffe08a;text-shadow:0 1px 0 #000}
.countdown b{color:#ff8a6a;font-weight:700;font-variant-numeric:tabular-nums}
.limit-hint{font-size:12px;color:#f3e6c4;margin-left:6px;font-weight:400}
/* 限购售罄：整行灰化压暗，按钮失效 */
.sold-out{position:relative;filter:grayscale(.8) brightness(.6) contrast(.95)}
.sold-out .btn{pointer-events:none}
.sold-out .price .v{color:#d8d2c4}

/* ---------- 16. 寻侠海报（竖版） ---------- */
.poster-row{display:flex;justify-content:center;gap:8px;padding:8px 6px}
.poster{position:relative;width:140px;height:340px;border-radius:6px;overflow:hidden;flex:none;color:#fff3d6;text-align:center;
  border:2px solid #24110a;box-shadow:inset 0 0 0 2px rgba(242,194,69,.55),0 3px 8px rgba(0,0,0,.6);
  background:radial-gradient(ellipse 60% 30% at 50% 0%,rgba(255,240,200,.35),transparent 70%),linear-gradient(180deg,#5a2a1a 0%,#3a1a10 45%,#1a0c08 100%)}
.poster.red{background:radial-gradient(ellipse 60% 30% at 50% 0%,rgba(255,220,170,.4),transparent 70%),linear-gradient(180deg,#7a2a1a 0%,#4a1a10 45%,#1a0a06 100%)}
.poster.green{background:radial-gradient(ellipse 60% 30% at 50% 0%,rgba(220,255,200,.35),transparent 70%),linear-gradient(180deg,#3f6a2a 0%,#24421a 45%,#0c1a08 100%)}
.poster.gold{background:radial-gradient(ellipse 60% 30% at 50% 0%,rgba(255,240,180,.5),transparent 70%),linear-gradient(180deg,#8a6a1a 0%,#4f3a0c 45%,#1a1206 100%)}
.poster .beam{position:absolute;left:50%;top:0;width:90px;height:230px;margin-left:-45px;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,250,220,.65),rgba(255,240,180,.25) 60%,rgba(255,240,180,0));clip-path:polygon(35% 0,65% 0,100% 100%,0 100%);animation:beamFlicker 3s ease-in-out infinite}
.poster .scene{position:absolute;left:0;right:0;top:0;height:250px;pointer-events:none;opacity:.55;
  background:
    radial-gradient(ellipse 60% 25% at 20% 100%,rgba(0,0,0,.8),transparent 70%),radial-gradient(ellipse 60% 25% at 80% 100%,rgba(0,0,0,.8),transparent 70%),
    repeating-linear-gradient(90deg,transparent 0 22px,rgba(255,255,255,.04) 22px 24px)}
.poster .ptitle{position:relative;z-index:3;margin:10px auto 0;font-family:var(--font-brush);font-size:24px;line-height:1;letter-spacing:2px;color:#fff6e0;text-shadow:0 0 6px rgba(255,220,120,.8),0 2px 0 #3a1a10,0 0 2px #000}
.poster .silhouette{position:absolute;left:0;right:0;top:44px;height:200px;z-index:2;display:flex;align-items:flex-end;justify-content:center}
.poster .silhouette svg{width:120px;height:190px;filter:drop-shadow(0 0 6px rgba(0,0,0,.9))}
.poster .lantern{position:absolute;top:40px;width:14px;height:22px;border-radius:7px;background:radial-gradient(circle at 40% 35%,#ffb070,#d8321f 60%,#7e1a10);box-shadow:0 0 10px 2px rgba(255,120,60,.6);z-index:2}
.poster .lantern::before{content:'';position:absolute;left:5px;top:-8px;width:4px;height:8px;background:#5a3800}
.poster .lantern.l{left:10px}.poster .lantern.r{right:10px;top:52px}
.poster .reward{position:absolute;left:0;right:0;top:246px;z-index:3;font-size:11px;line-height:1.3;color:#ffe9a3;text-shadow:0 1px 0 #000}
.poster .reward .lab{font-family:var(--font-brush);font-size:14px;color:#fff3c2}
.poster .reward .amt{display:inline-flex;align-items:center;gap:2px;font-weight:700;font-size:13px;color:#fff}
.poster .reward .amt svg{width:18px;height:18px}
.poster .qs{display:flex;justify-content:center;gap:4px;margin-top:2px}
.poster .qs .qtag{width:16px;height:16px;font-size:12px}
.poster .btn{position:absolute;left:50%;top:286px;transform:translateX(-50%);z-index:3;min-width:96px;height:36px;font-size:20px;padding:0 14px}
.poster .btn:active{transform:translateX(-50%) translateY(2px)}
.poster .free{position:absolute;left:0;right:0;bottom:1px;z-index:3;font-size:11px;line-height:1.1;color:#e8d3a3;text-shadow:0 1px 0 #000}
.poster .free b{color:#ffe08a}
.poster .preview{position:absolute;right:6px;top:250px;z-index:4;width:30px;height:30px;border-radius:50%;background:radial-gradient(circle at 40% 32%,#fff6cf,#f2c245 50%,#b8860b);box-shadow:0 0 0 1px #5a3800;display:flex;align-items:center;justify-content:center;font-family:var(--font-brush);font-size:11px;color:#7a1e12;line-height:1;writing-mode:vertical-rl;letter-spacing:0}
@keyframes beamFlicker{0%,100%{opacity:.85}50%{opacity:1}}

/* ---------- 17. 签到九宫格（t002：黑底金框） ---------- */
.signin-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:8px}
.signin-cell{position:relative;height:112px;border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer;
  background:radial-gradient(circle at 50% 40%,#2a2018 0%,#120c08 70%,#000 100%);
  box-shadow:0 0 0 2px #f2c245,0 0 0 3px #5a3800,inset 0 0 0 1px rgba(255,235,180,.25),inset 0 0 14px rgba(0,0,0,.9),0 2px 4px rgba(0,0,0,.6);transition:transform .1s}
.signin-cell .day{position:absolute;left:5px;top:3px;font-family:var(--font-brush);font-size:13px;color:#f2c245;text-shadow:0 1px 0 #000}
.signin-cell .box{width:56px;height:56px;display:flex;align-items:center;justify-content:center}
.signin-cell .box svg{width:54px;height:54px;filter:drop-shadow(0 2px 3px rgba(0,0,0,.8))}
.signin-cell .lab{font-size:12px;color:#f3e6c4;text-shadow:0 1px 0 #000;white-space:nowrap;max-width:112px;overflow:hidden;text-overflow:ellipsis}
.signin-cell .lab b{color:#ffe08a}
/* 稀有格：品质彩框 + 斜向流光 + 呼吸彩晕 */
.signin-cell.rare{box-shadow:0 0 0 2px var(--qc,#9b59d6),0 0 0 3px #2b1d12,0 0 12px 3px var(--qc,#9b59d6),inset 0 0 18px rgba(0,0,0,.9)}
.signin-cell.rare:not(.claimed){
  background:
    linear-gradient(112deg,transparent 42%,rgba(255,255,255,.17) 49%,rgba(255,255,255,.05) 53%,transparent 60%) 0 0 / 240% 100% no-repeat,
    radial-gradient(circle at 50% 40%,#2a2018 0%,#120c08 70%,#000 100%);
  animation:rareSheen 3.4s linear infinite,rareGlow 2.2s ease-in-out infinite}
@keyframes rareSheen{0%{background-position:-140% 0,0 0}100%{background-position:140% 0,0 0}}
@keyframes rareGlow{
  0%,100%{box-shadow:0 0 0 2px var(--qc,#9b59d6),0 0 0 3px #2b1d12,0 0 8px 1px var(--qc,#9b59d6),inset 0 0 18px rgba(0,0,0,.9)}
  50%{box-shadow:0 0 0 2px var(--qc3,#e5cffb),0 0 0 3px #2b1d12,0 0 20px 5px var(--qc,#9b59d6),inset 0 0 18px rgba(0,0,0,.9)}}
.signin-cell.today{animation:cellGlow 1.4s ease-in-out infinite;box-shadow:0 0 0 2px #fff0b3,0 0 0 4px #f2c245,0 0 14px 3px rgba(255,210,80,.8),inset 0 0 14px rgba(0,0,0,.9)}
.signin-cell.claimed{filter:grayscale(.72) brightness(.5)}
.signin-cell.claimed::after{content:'';position:absolute;right:6px;bottom:6px;width:26px;height:26px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#8ee39f,#3f8f5a 60%,#215c34);box-shadow:0 0 0 1.5px #e0ffe6;
  -webkit-mask:none;filter:brightness(1.6)}
.signin-cell.claimed::before{content:'✓';position:absolute;right:6px;bottom:6px;width:26px;height:26px;z-index:2;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:900;font-size:18px;text-shadow:0 1px 0 #000;filter:brightness(1.6)}
.signin-cell:active{transform:scale(.96)}
@keyframes cellGlow{0%,100%{box-shadow:0 0 0 2px #fff0b3,0 0 0 4px #f2c245,0 0 10px 2px rgba(255,210,80,.6),inset 0 0 14px rgba(0,0,0,.9)}50%{box-shadow:0 0 0 2px #fff0b3,0 0 0 4px #f2c245,0 0 22px 6px rgba(255,210,80,.95),inset 0 0 14px rgba(0,0,0,.9)}}

/* ---------- 18. 主页木牌九宫格 / 标题横幅 / 纸签 ---------- */
.wood-grid{position:relative;display:grid;grid-template-columns:repeat(3,128px);grid-auto-rows:66px;gap:14px 12px;justify-content:center;padding:14px 0}
/* 木牌：深褐外框 + 琥珀高光面（切角）+ 铆钉 + 磨损，对照 t005 原帧调亮 */
.wood-cell{position:relative;display:flex;align-items:center;justify-content:center;border-radius:9px;cursor:pointer;
  font-family:var(--font-brush);font-size:34px;line-height:1;letter-spacing:6px;padding-left:6px;color:#5a2c08;
  text-shadow:
    0 1px 0 rgba(255,250,222,.95),0 -1px 0 rgba(255,248,214,.6),
    1px 0 0 rgba(255,248,214,.55),-1px 0 0 rgba(255,248,214,.55),
    0 2px 3px rgba(126,68,14,.5);
  background:linear-gradient(180deg,#7d6141 0%,#584028 40%,#3d2a17 100%);
  border:0;
  box-shadow:0 0 0 1px #1d1208,inset 0 1px 0 rgba(255,236,196,.4),inset 0 -2px 0 rgba(0,0,0,.5),0 3px 6px rgba(0,0,0,.6);
  transition:transform .1s,filter .12s}
/* 牌面 */
.wood-cell::before{content:'';position:absolute;inset:4px;border-radius:4px;pointer-events:none;z-index:1;
  background:var(--tex-noise) 0 0 / 90px 90px,var(--bg-plaque);background-blend-mode:soft-light,normal;
  clip-path:polygon(10px 0,calc(100% - 10px) 0,100% 8px,100% calc(100% - 8px),calc(100% - 10px) 100%,10px 100%,0 calc(100% - 8px),0 8px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8),inset 0 -4px 8px rgba(150,88,18,.45)}
/* 铆钉 + 面部反光 */
.wood-cell::after{content:'';position:absolute;inset:4px;border-radius:4px;pointer-events:none;z-index:2;
  background:
    radial-gradient(circle at 11px calc(100% - 9px),rgba(255,236,196,.5) 0 1.2px,rgba(48,30,14,.9) 1.6px 3.2px,rgba(48,30,14,0) 4.2px),
    radial-gradient(circle at calc(100% - 11px) calc(100% - 9px),rgba(255,236,196,.5) 0 1.2px,rgba(48,30,14,.9) 1.6px 3.2px,rgba(48,30,14,0) 4.2px),
    radial-gradient(circle at 11px 9px,rgba(255,236,196,.45) 0 1.1px,rgba(48,30,14,.65) 1.5px 2.8px,rgba(48,30,14,0) 3.8px),
    radial-gradient(circle at calc(100% - 11px) 9px,rgba(255,236,196,.45) 0 1.1px,rgba(48,30,14,.65) 1.5px 2.8px,rgba(48,30,14,0) 3.8px),
    linear-gradient(100deg,rgba(255,255,255,0) 42%,rgba(255,255,255,.28) 50%,rgba(255,255,255,0) 58%)}
.wood-cell .t{position:relative;z-index:4}
.wood-cell:hover{filter:brightness(1.06)}
.wood-cell:active{transform:translateY(2px);filter:brightness(.94);box-shadow:0 0 0 1px #1d1208,inset 0 2px 4px rgba(0,0,0,.5),0 1px 2px rgba(0,0,0,.5)}
.wood-cell.red{color:#fff3c2;
  text-shadow:0 1px 0 #6a1008,0 -1px 0 rgba(255,190,140,.5),0 2px 4px rgba(0,0,0,.6),0 0 8px rgba(255,180,90,.4)}
.wood-cell.red::before{background:var(--tex-noise) 0 0 / 90px 90px,var(--bg-plaque-red);background-blend-mode:soft-light,normal;
  box-shadow:inset 0 1px 0 rgba(255,220,190,.6),inset 0 -4px 8px rgba(90,10,4,.5)}
.wood-cell .badge{position:absolute;right:-6px;top:-7px}
.wood-cell .t{position:relative;z-index:4}
.wood-cell .helper{position:absolute;left:50%;bottom:14px;width:150px;height:136px;transform:translateX(-50%);pointer-events:none;z-index:3;display:flex;align-items:flex-end;justify-content:center}
.wood-cell .helper img,.wood-cell .helper svg{max-height:136px;height:136px;width:auto;filter:drop-shadow(0 3px 4px rgba(0,0,0,.6))}
.wood-cell .helper .helper-cg{width:110px;height:140px;border-radius:55px 55px 20px 20px;
  background:radial-gradient(circle at 50% 22%,#ffd9c2 0 16px,transparent 17px),radial-gradient(ellipse 50% 22% at 50% 14%,#1a0f08 0 100%,transparent 101%),linear-gradient(180deg,transparent 30%,#e8523a 31%,#a8261b 70%,#7e1a10);
  box-shadow:inset 0 -8px 12px rgba(0,0,0,.35);filter:drop-shadow(0 3px 4px rgba(0,0,0,.6))}
.wood-cell.has-helper{z-index:2}
/* 毛笔字标题横幅 */
.ribbon-title{position:relative;text-align:center;font-family:var(--font-brush);font-size:44px;line-height:1.1;letter-spacing:4px;padding:8px 0;
  background:linear-gradient(180deg,#fff4c2 0%,#f2c245 40%,#c98a12 62%,#ffe08a 100%);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-stroke:.6px rgba(58,29,12,.7);
  filter:drop-shadow(0 1px 0 #3a1d0c) drop-shadow(0 2px 0 #3a1d0c) drop-shadow(0 4px 5px rgba(0,0,0,.6))}
.ribbon-title.sm{font-size:30px;letter-spacing:3px}
.ribbon-title.red{background:linear-gradient(180deg,#ff8a6a 0%,#d8321f 45%,#8f1d13 65%,#ff6a4a 100%);-webkit-background-clip:text;background-clip:text}
.ribbon-title.ink{background:linear-gradient(180deg,#5b4630,#2b1d12 60%,#5b4630);-webkit-background-clip:text;background-clip:text;filter:drop-shadow(0 1px 0 rgba(255,245,220,.8))}
.ribbon-wrap{position:relative;display:flex;align-items:center;justify-content:center;gap:10px}
.ribbon-wrap::before,.ribbon-wrap::after{content:'';width:70px;height:26px;background:var(--tex-cloud) center / 100% 100% no-repeat;opacity:.9}
.ribbon-wrap::after{transform:scaleX(-1)}
.section-title{display:flex;align-items:center;gap:8px;margin:8px 10px 4px;font-family:var(--font-brush);font-size:20px;letter-spacing:2px;color:var(--ink)}
.section-title::before,.section-title::after{content:'';flex:1 1 auto;height:2px;background:linear-gradient(90deg,transparent,#b8860b 30%,#f2c245 50%,#b8860b 70%,transparent)}
.section-title::before{background:linear-gradient(90deg,transparent,#b8860b 60%,#f2c245)}
.section-title::after{background:linear-gradient(90deg,#f2c245,#b8860b 40%,transparent)}
/* 黄纸签（门派内室） */
.paper-tags{display:flex;justify-content:center;align-items:flex-end;gap:6px;padding:8px 6px}
.paper-tag{position:relative;width:66px;height:112px;display:flex;align-items:center;justify-content:center;cursor:pointer;writing-mode:vertical-rl;white-space:nowrap;overflow:hidden;
  font-family:var(--font-brush);font-size:20px;line-height:1;letter-spacing:1px;color:#4a1a08;text-shadow:0 1px 0 rgba(255,245,220,.9);
  background:var(--tex-paper),linear-gradient(180deg,#fff0b3 0%,#f2d174 50%,#d9b04a 100%);
  clip-path:polygon(0 0,100% 0,100% 100%,50% 92%,0 100%);
  box-shadow:inset 0 0 0 2px rgba(120,80,10,.35),inset 0 0 12px rgba(120,80,10,.3);transform:rotate(var(--rot,0deg));transition:transform .12s}
.paper-tag::before{content:'';position:absolute;left:50%;top:6px;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ff8a6a,#a8261b 60%,#6e140c);box-shadow:0 0 0 1px #3f0a06}
.paper-tag:nth-child(1){--rot:-6deg}.paper-tag:nth-child(2){--rot:3deg}.paper-tag:nth-child(3){--rot:-2deg}.paper-tag:nth-child(4){--rot:4deg}.paper-tag:nth-child(5){--rot:-5deg}
.paper-tag:hover{transform:rotate(var(--rot)) translateY(-4px)}
.paper-tag:active{transform:rotate(var(--rot)) scale(.95)}
.paper-tag.done{filter:grayscale(.7) brightness(.8)}
.paper-tag.red{background:var(--tex-paper),linear-gradient(180deg,#e0523a,#a8261b 60%,#7e1a10);color:#ffe9a3;text-shadow:0 1px 0 #3f0a06}
/* 顶部横滑图标栏（内室/奇遇） */
.icon-bar{display:flex;gap:8px;padding:8px 10px;overflow-x:auto;scrollbar-width:none;background:var(--bg-wood-dark);box-shadow:inset 0 -3px 0 #b8860b,inset 0 1px 0 rgba(255,220,150,.2)}
.icon-bar::-webkit-scrollbar{display:none}
.icon-tile{position:relative;flex:none;width:76px;height:76px;border-radius:6px;overflow:hidden;cursor:pointer;background:radial-gradient(circle at 50% 35%,#5a3a1a,#2a1608 75%);box-shadow:0 0 0 2px #f2c245,0 0 0 3px #3a1d0c,inset 0 0 10px rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;transition:transform .1s}
.icon-tile svg{width:54px;height:54px;margin-top:-10px;filter:drop-shadow(0 2px 2px rgba(0,0,0,.7))}
.icon-tile .lab{position:absolute;left:0;right:0;bottom:0;height:20px;line-height:20px;text-align:center;font-family:var(--font-brush);font-size:14px;letter-spacing:1px;color:#ffe9a3;background:linear-gradient(180deg,#c8331f,#8f1d13);box-shadow:inset 0 1px 0 rgba(255,214,120,.5);text-shadow:0 1px 0 #3f0a06}
.icon-tile:active{transform:scale(.95)}
.icon-tile.active{box-shadow:0 0 0 2px #fff0b3,0 0 0 4px #f2c245,0 0 12px 3px rgba(255,210,80,.7)}

/* ---------- 19. toast / 剧情黑幕 / 其它 ---------- */
.toast-wrap{position:absolute;left:0;right:0;top:300px;z-index:200;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}
.toast{display:inline-flex;align-items:center;gap:6px;max-width:400px;padding:10px 24px;border-radius:8px;font-size:15px;line-height:1.4;color:#fff3d6;text-align:center;
  background:var(--tex-wood),linear-gradient(180deg,rgba(74,42,18,.96),rgba(36,17,10,.96));border:2px solid #24110a;
  box-shadow:inset 0 0 0 1px rgba(242,194,69,.6),inset 0 1px 0 rgba(255,220,150,.25),0 6px 16px rgba(0,0,0,.7);text-shadow:0 1px 0 #000;animation:toastIn .22s cubic-bezier(.2,.9,.3,1.2) both}
.toast.ok{color:#c8f5c8}.toast.warn{color:#ffe08a}.toast.error{color:#ffb0a0}
.toast.out{animation:toastOut .25s ease-in both}
@keyframes toastIn{from{opacity:0;transform:translateY(-10px) scale(.9)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateY(-8px)}}
.dialog-paper{position:absolute;inset:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 36px;gap:16px;cursor:pointer;
  background:var(--tex-noise),radial-gradient(ellipse at 50% 50%,#1a1210 0%,#000 75%);color:#f3e6c4;font-family:var(--font-body);font-size:19px;line-height:1.8;letter-spacing:1px;text-align:center}
.dialog-paper .line{opacity:0;animation:lineIn .9s ease-out forwards;animation-delay:calc(var(--i,0) * .9s);text-shadow:0 0 6px rgba(255,230,180,.25)}
.dialog-paper .line.gold{color:#ffe08a}
.dialog-paper .tip{position:absolute;bottom:30px;left:0;right:0;font-size:12px;color:#8c7355;animation:blink 1.6s ease-in-out infinite}
@keyframes lineIn{from{opacity:0;transform:translateY(10px);filter:blur(3px)}to{opacity:1;transform:none;filter:none}}
@keyframes blink{0%,100%{opacity:.35}50%{opacity:1}}
@keyframes shake{0%,100%{transform:none}20%{transform:translate(-4px,2px)}40%{transform:translate(4px,-2px)}60%{transform:translate(-3px,-1px)}80%{transform:translate(3px,1px)}}
@keyframes floatY{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes pulseGold{0%,100%{box-shadow:0 0 0 0 rgba(255,210,80,.8)}50%{box-shadow:0 0 0 8px rgba(255,210,80,0)}}
.float{animation:floatY 2.4s ease-in-out infinite}
.pulse{animation:pulseGold 1.6s ease-out infinite}
/* 关卡页底栏 / 通用底栏条 */
.foot-bar{position:relative;display:flex;align-items:center;gap:8px;height:60px;padding:0 10px;background:var(--tex-paper),linear-gradient(180deg,#e2cb95,#c9a96e);box-shadow:inset 0 2px 0 #fff3cf,inset 0 -2px 0 #7a4f00,0 -2px 4px rgba(0,0,0,.3);color:var(--ink);font-size:12px;line-height:1.3}
.foot-bar .grow{flex:1 1 auto}
.toggle{display:inline-flex;border-radius:16px;overflow:hidden;box-shadow:0 0 0 1px #5a3800,0 1px 2px rgba(0,0,0,.4)}
.toggle .opt{padding:0 12px;height:30px;line-height:30px;font-family:var(--font-brush);font-size:18px;color:#7a1e12;background:var(--bg-gold);cursor:pointer}
.toggle .opt.active{background:var(--bg-red);color:#ffe08a;text-shadow:0 1px 0 #3f0a06}
/* 缘分列表（弹窗内，t019） */
.fate-list{font-size:14px;line-height:1.6}
.fate-list .fr{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fate-list .fr .fn{font-weight:700;color:#3a1d0c;margin-right:4px}
.fate-list .fr .fd{color:#a8261b}
.fate-list .fr.off .fn{color:#8c7355}.fate-list .fr.off .fd{color:#9a8a70}
.fate-list .fr .fd .pct{color:#d8321f;font-weight:700}
/* 键值行（属性面板） */
.kv{display:flex;justify-content:space-between;align-items:center;padding:3px 0;border-bottom:1px dashed rgba(90,60,20,.35);font-size:13px}
.kv .k{color:var(--ink-soft)}.kv .v{font-weight:700;color:var(--ink);font-family:var(--font-body)}
.kv .v.up{color:var(--jade)}.kv .v.down{color:var(--red-bright)}
/* 空状态 */
.empty-tip{padding:40px 20px;text-align:center;color:var(--ink-faint);font-family:var(--font-brush);font-size:20px;letter-spacing:2px}
/* 战力/数字高亮 */
.power-tag{display:inline-flex;align-items:center;gap:4px;padding:0 10px;height:24px;border-radius:12px;background:linear-gradient(180deg,#4a2410,#1a0c04);color:#ffe08a;font-family:var(--font-body);font-weight:700;font-size:13px;box-shadow:0 0 0 1px #f2c245;text-shadow:0 1px 0 #000}
.power-tag svg{width:16px;height:16px}
