/* ============================================================
 * 修仙界 - 网页客户端主题
 * 基于 WPF 客户端截图还原：顶部标签 + 主内容 + 底部快捷 + 聊天
 * ============================================================ */
:root{
  --bg:#f5f0e6;
  --panel:#fcfaf4;
  --panel2:#f0ece0;
  --border:#b48c50;
  --line:#d7c3a0;
  --text:#3c3228;
  --text2:#786955;
  --red:#962828;
  --blue:#285a82;
  --purple:#7a2fd0;
  --green:#3c7c32;
  --hot:#fff6e0;
  --btn:#faf6ec;
  --btndis:#ebe6dc;
  --sel:#ffeec8;
  --bar:#d66a46;
  --barbg:#e4dccd;
  --gold:#d4a843;
  --gold2:#b48c50;
  --brown:#5a3a1a;
  --brown2:#3a2a1a;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  background:var(--bg);
  color:var(--text);
  font:14px/1.45 "Microsoft YaHei","PingFang SC",sans-serif;
  overflow:hidden;
}

/* 主外壳：上下布局（html 根 zoom 缩放后，反向补偿使视觉仍铺满视口） */
#gameShell{
  display:flex;
  flex-direction:column;
  height:calc(100vh / var(--zoom,1));
  width:calc(100vw / var(--zoom,1));
  min-width:0;
  min-height:0;
}

/* 顶部标题栏 */
#titleBar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:6px 14px;
  background:linear-gradient(180deg,#4a3520 0%,#3a2a1a 100%);
  color:var(--gold);
  border-bottom:2px solid var(--gold2);
  flex:0 0 auto;
}
#titleBar .brand{
  display:flex;align-items:center;gap:10px;
}
#titleBar .logo{
  width:28px;height:28px;border-radius:5px;
  background:radial-gradient(circle at 30% 30%,#ffe7a8,#b48c50 60%,#5a3a1a);
  display:flex;align-items:center;justify-content:center;
  font-weight:bold;color:var(--brown);font-size:16px;
  box-shadow:inset 0 0 0 1px #fff8;
}
#titleBar .name{font-size:16px;font-weight:bold;letter-spacing:2px;color:#f5e6c8}
#titleBar .ver{font-size:12px;color:#c9b48a;margin-left:6px}
#titleBar .roleSummary{
  display:flex;align-items:center;gap:16px;
  font-size:13px;color:#f5e6c8;
}
#titleBar .roleSummary .conn{font-size:12px;color:#c9b48a}
#titleBar .roleSummary #sumConn.connected{color:#6fd46f}
/* 右上角货币条（灵石/灵币/仙币/鸿蒙紫气） */
#titleBar .roleSummary .cur{font-weight:600;padding:1px 8px;border-radius:10px;background:rgba(255,255,255,.06);white-space:nowrap}
#titleBar .roleSummary .curStone{color:#e6c200}
#titleBar .roleSummary .curCoins{color:#17a2b8}
#titleBar .roleSummary .curXianbi{color:#8e44ad}
#titleBar .roleSummary .curZqi{color:#b388ff}

/* 顶部主标签栏 */
#mainTabBar{
  display:flex;
  flex-wrap:nowrap;
  overflow-x:auto;
  gap:0;
  padding:4px 10px 0;
  background:var(--panel2);
  border-bottom:2px solid var(--border);
  flex:0 0 auto;
}
#mainTabBar button{
  background:linear-gradient(180deg,#faf6ec 0%,#e8e0d0 100%);
  border:1px solid var(--border);
  border-bottom:none;
  border-radius:5px 5px 0 0;
  padding:6px 12px;
  margin-right:3px;
  color:var(--text);
  font:inherit;
  cursor:pointer;
  min-width:58px;
  white-space:nowrap;
}
#mainTabBar button:hover{background:var(--hot)}
#mainTabBar button.active{
  background:var(--panel);
  border-color:var(--border);
  border-bottom:2px solid var(--panel);
  margin-bottom:-2px;
  font-weight:bold;
  color:var(--brown);
  box-shadow:0 -2px 4px rgba(0,0,0,.06) inset;
}

/* 工作区 */
#workspace{
  display:flex;
  flex-direction:column;
  flex:1 1 auto;
  min-height:0;
  min-width:0;
  padding:6px 8px 8px;
  background:var(--bg);
  overflow:hidden;
}
#app{display:flex;flex-direction:column;height:100%;gap:6px;min-height:0}

/* 通用行与控件 */
.row{display:flex;gap:6px;align-items:center;flex-wrap:nowrap}
button{
  background:var(--btn);border:1px solid var(--border);color:var(--text);
  padding:5px 10px;border-radius:3px;cursor:pointer;font:inherit;white-space:nowrap
}
button:hover{background:var(--hot)}
button:disabled{background:var(--btndis);color:var(--text2);cursor:default}
button.on{background:var(--sel);border-color:var(--bar)}
input[type=text],input[type=password]{
  border:1px solid var(--border);border-radius:3px;
  padding:5px 8px;font:inherit;background:#fff;color:var(--text)
}
label.lb{color:var(--text2);font-size:13px}
select{font-size:13px;padding:5px 8px;background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:5px;width:100%;box-sizing:border-box}

/* 登录栏 */
#loginBar{background:var(--panel);border:1px solid var(--border);border-radius:4px;padding:6px 10px;flex:0 0 auto;flex-wrap:wrap}

/* 页面区：60% */
#page{
  background:var(--panel);border:1px solid var(--border);border-radius:4px;
  flex:6 1 0;min-height:0;overflow:auto;padding:10px;position:relative
}
/* 主/副标签栏与快捷栏位于普通内容之上、浮层遮罩(#mask z-index:50)之下；
   弹窗打开时整排 UI 被遮罩正常盖住变暗，不再“穿模”浮在遮罩上方。
   逃生能力由 switchTab() 切换前先 closeOverlay() 保证，无需压过遮罩。 */
#mainTabBar,#subTabs,#quickBar{position:relative;z-index:40}

/* 底部快捷栏 */
#quickBar{
  flex:0 0 auto;
  padding:4px 6px;
  background:var(--panel2);
  border:1px solid var(--line);
  border-radius:4px;
}
#quickBar .spacer{flex:1 1 auto}
#quickBar button{min-width:72px}

/* 聊天频道 */
#chanBar{flex-wrap:wrap;flex:0 0 auto;align-items:center}
#chanBar button{font-size:12px;padding:3px 8px}
#chanBar button.on{background:var(--sel);border-color:var(--bar)}
#chanBar .spacer{flex:1}
#chanBar .hideUpChk{font-size:12px;color:var(--txt2);display:inline-flex;align-items:center;gap:4px;cursor:pointer;user-select:none}
#chanBar .hideUpChk input{margin:0}

/* 聊天列表：40%，与 page 按 6:4 比例 */
#chatList{
  background:var(--panel);border:1px solid var(--border);border-radius:4px;
  flex:4 1 0;min-height:0;overflow-y:auto;
  padding:6px 10px;font-size:13px
}
.cmsg{padding:1px 0;word-break:break-all}
.cmsg .ts{color:#b0a48e;font-size:11px;margin-right:6px}
.cmsg .tag{color:var(--blue);margin-right:4px}
.cmsg.t系统 .tag{color:var(--purple)}
.cmsg.t本地 .tag{color:#888}
.cmsg.tBOSS .tag,.cmsg.t挑战 .tag{color:var(--red)}

/* 输入行 */
#inputRow{gap:6px;flex:0 0 auto}
#chatInput{flex:1 1 auto}

/* 状态栏 */
#statusBar{color:var(--text2);font-size:12px;padding:0 4px;display:flex;gap:18px;flex:0 0 auto}

/* 通用面板 */
.panelBox{background:var(--panel);border:1px solid var(--border);border-radius:4px;padding:10px}
.h{color:var(--purple);font-weight:bold;margin-bottom:8px}
/* 灵药园（QQ农场模式） */
.gardenGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}
.gardenGrid .gplot{background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:10px;display:flex;flex-direction:column;gap:4px;min-height:200px;overflow:hidden;box-sizing:border-box}
.gardenGrid .gplot .gnum{font-size:12px;color:var(--text2);line-height:1}
.gardenGrid .gplot .gname{font-weight:bold;color:var(--purple);line-height:1.2;word-break:break-all}
.gardenGrid .gplot .gstate{font-size:12px;line-height:1.2}
.gardenGrid .gplot button{position:relative;z-index:1;cursor:pointer;margin-top:2px;touch-action:manipulation;font-size:13px;padding:3px 8px;border-radius:4px}
.gardenGrid .gplot select{font-size:12px;width:100%;box-sizing:border-box}
/* 攻略页（内容来自 data/玩家攻略.md，轻量 markdown 渲染） */
.guideBox .gBody{line-height:1.7;padding-right:6px}
.guideBox .gH{color:var(--purple);margin:14px 0 6px;border-bottom:1px solid var(--border);padding-bottom:4px}
.guideBox .gH:first-child{margin-top:0}
.guideBox .gP{margin:6px 0;color:var(--text)}
.guideBox .gList{margin:6px 0 6px 18px;list-style:disc}
.guideBox .gList li{margin:3px 0}
.guideBox .gQuote{border-left:3px solid var(--border);padding:4px 10px;margin:6px 0;color:var(--text2);background:var(--panel)}
.kv{margin:3px 0}
.kv.red{color:var(--red)} .kv.blue{color:var(--blue)}
.pbar{height:13px;background:var(--barbg);border:1px solid var(--border);border-radius:3px;overflow:hidden;margin:3px 0 8px}
.pbar>i{display:block;height:100%;background:var(--bar)}
.pbar.energy>i{background:#5096c8}
.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;height:100%}
.grid2c{display:grid;grid-template-columns:210px 1fr;gap:10px;height:100%}

/* 背包 */
#gearCol{border:1px solid var(--line);border-radius:4px;padding:8px;overflow:auto}
.gslot{border:1px solid var(--line);border-radius:4px;padding:4px 6px;cursor:pointer;background:var(--btn);min-height:64px;display:flex;flex-direction:column;justify-content:flex-start}
.gslot:hover{background:var(--hot)}
.gslot .sn{color:var(--text2);font-size:12px;margin-bottom:2px}
.gslot .gv{font-size:12px;font-weight:bold;line-height:1.3;word-break:break-all}
.gslot .mut{font-size:11px;color:var(--text2)}
.gslot .setBadge{margin-top:3px;font-size:10px;line-height:1.2;color:var(--gold2);font-weight:bold}
.setPanel{border:1px solid var(--line);border-radius:4px;padding:6px 8px;background:var(--btn)}
.setPanel .h{color:var(--blue);font-size:13px;margin-bottom:4px;border-bottom:1px solid var(--line);padding-bottom:3px}
.setPanel .kv{margin:2px 0}
.skillTbl{width:100%;border-collapse:collapse;margin-top:6px}
.skillTbl th,.skillTbl td{border:1px solid var(--line);padding:4px 6px;font-size:12px;text-align:center}
.skillTbl th{background:var(--btn2);color:var(--blue)}
#bagWrap{display:flex;flex-direction:column;min-height:0}
#bagGrid{flex:1;overflow-y:auto;display:grid;grid-template-columns:repeat(5,1fr);
  gap:6px;align-content:start;padding:2px}
.bcard{position:relative;border:1px solid;border-radius:4px;padding:5px 22px 5px 7px;cursor:pointer;background:#fffdf7;min-height:78px;display:flex;flex-direction:column;gap:1px;justify-content:center}
.bcard:hover{filter:brightness(0.96)}
.bcard.eq{background:var(--sel)}
.bcard.locked{border-color:var(--red,#e74c3c);background:#fff4f4}
.bcard .lockTag{position:absolute;top:3px;left:4px;font-size:10px;color:#fff;background:var(--red,#e74c3c);padding:1px 4px;border-radius:3px;white-space:nowrap;line-height:1}
.bcard .trade{position:absolute;top:3px;right:4px;font-size:10px;color:var(--teal,#28a745);background:rgba(255,255,255,0.75);padding:1px 3px;border-radius:3px;white-space:nowrap;line-height:1}
.bcard .nm{font-weight:bold;font-size:13px;white-space:normal;word-break:break-all;line-height:1.25}
.bcard .sub,.bcard .sc{font-size:11px;color:var(--text2);line-height:1.25}
.bcard .sc.eq{color:var(--red)}
.bcard .idesc{font-size:11px;color:var(--purple,#7b5cff);line-height:1.25;font-weight:bold}
.bcard.dark{background:#2b2b32;color:#cdcfe2;border-color:#5a5a6e}
.bcard.dark .sub{color:#9a9ab0}

/* 列表 */
.list{border:1px solid var(--line);border-radius:4px;overflow-y:auto;background:#fffdf7}
.list .li{padding:4px 10px;border-bottom:1px solid #efe8d8;cursor:pointer}
.list .li:hover{background:var(--hot)}
.list .li.sel{background:var(--sel)}
button.sel{background:var(--gold2);color:#000;border-color:var(--gold2)}
.list .li.mine{background:rgba(90,140,230,0.10)}
.list .li.mine:hover{background:rgba(90,140,230,0.18)}
/* 设置页称号列表：最多同时显示 15 行，超出垂直滚动（单行省略，避免换行干扰行数） */
#titleList{max-height:450px}
#titleList .li{height:30px;line-height:22px;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 奇遇：待触发列表项 */
.list .li.qiyuItem{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(90deg,#fff7e6,#fffdf7);border-left:3px solid var(--gold,#d4a017)}
.list .li.qiyuItem:hover{background:linear-gradient(90deg,#ffedc2,#fff7e6)}
.list .li.qiyuItem .qiyuGo{color:var(--gold,#d4a017);font-size:12px;font-weight:bold;white-space:nowrap;margin-left:8px}
/* 市井左侧分类 */
.mcats{display:flex;flex-direction:column;gap:2px}
.mcats .li{padding:4px 8px;border:1px solid var(--line);border-radius:4px;cursor:pointer;font-size:13px;background:#fffdf7}
.mcats .li:hover{background:var(--hot)}
.mcats .li.sel{background:var(--sel)}
/* 签到：跟随真实日历的 7 列网格（含星期表头） */
.chkGrid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin:10px 0}
.chkHead{text-align:center;font-size:12px;font-weight:bold;color:var(--purple,#6a4ea3);padding:2px 0 4px}
.chkEmpty{visibility:hidden}
.chkCell{position:relative;border:1px solid var(--line);border-radius:6px;padding:6px 4px;background:#fff;min-height:54px;text-align:center;font-size:12px}
.chkCell .cd{font-weight:bold;font-size:13px;color:#444}
.chkCell .cr{margin-top:3px;color:#777;line-height:1.25}
.chkCell.chkDone{background:rgba(80,170,110,0.12);border-color:rgba(80,170,110,0.5)}
.chkCell.chkDone .cd{color:#2e8b57}
.chkCell.chkToday{border-color:var(--gold,#d4a017);box-shadow:0 0 0 2px rgba(212,160,23,0.25);background:#fffbe9}
.chkCell.chkToday .cd{color:var(--gold,#d4a017)}
.chkCell.chkMiss{background:#f4f4f5;border-color:#e5e5e8;opacity:.9}
.chkCell.chkMiss .cd{color:#9aa0a6}
.chkCell .ck{position:absolute;top:2px;right:4px;color:#2e8b57;font-weight:bold}
.chkPatchBtn{margin-top:4px;border:1px solid #c0392b;background:#fff0ee;color:#c0392b;border-radius:4px;font-size:11px;padding:2px 6px;cursor:pointer}
.chkPatchBtn:hover{background:#c0392b;color:#fff}
.mcats .li.ind{font-size:12px;color:var(--text2);padding-left:18px}
table.rk{width:100%;border-collapse:collapse}
table.rk td,table.rk th{padding:4px 10px;border-bottom:1px solid #efe8d8;text-align:left;font-size:13px}
table.rk th{color:var(--purple);position:sticky;top:0;background:var(--panel)}

/* 浮层 */
#mask{position:fixed;left:0;top:0;width:calc(100vw / var(--zoom,1));height:calc(100vh / var(--zoom,1));background:rgba(60,50,40,.25);display:none;z-index:50}
#mask.show{display:block}
.ovl{position:absolute;background:var(--panel);border:2px solid var(--border);
  border-radius:6px;box-shadow:0 8px 30px rgba(0,0,0,.25);padding:14px;display:none;
  max-height:calc((100vh - 60px) / var(--zoom,1));overflow:hidden}
.ovl.show{display:block}
#ovItem{top:110px;right:20px;width:330px}
#ovCheckin,#ovPk,#ovRb,#ovLucky,#ovTomb,#ovGomoku,#ovDengXian,#ovFuben,#ovProfile{top:50%;left:50%;transform:translate(-50%,-50%);width:460px;max-height:calc(85vh / var(--zoom,1));overflow-y:auto;box-sizing:border-box}
#ovFuben{width:540px}
#ovXianJian{top:50%;left:50%;transform:translate(-50%,-50%);width:720px;max-width:calc(94vw / var(--zoom,1));max-height:calc(88vh / var(--zoom,1));overflow:auto}
#ovProfile{width:620px;max-width:calc(94vw / var(--zoom,1));max-height:calc(86vh / var(--zoom,1));overflow:auto}
#ovDraw{position:fixed;top:0;left:0;width:calc(100vw / var(--zoom,1));height:calc(100vh / var(--zoom,1));z-index:9999}
#ovAdmin{top:50%;left:50%;transform:translate(-50%,-50%);width:760px;max-width:calc(95vw / var(--zoom,1));max-height:calc(90vh / var(--zoom,1));overflow:auto}
#ovFeature{top:50%;left:50%;transform:translate(-50%,-50%);width:640px;max-width:calc(92vw / var(--zoom,1));
  max-height:calc(84vh / var(--zoom,1));overflow:auto}
#ovDou{top:50%;left:50%;transform:translate(-50%,-50%);width:420px;max-height:calc(80vh / var(--zoom,1));overflow:auto}
#ovSdaFound,#ovSdaBattle{top:50%;left:50%;transform:translate(-50%,-50%);width:560px;max-height:calc(85vh / var(--zoom,1));overflow-y:auto;box-sizing:border-box}
.ovl .tt{color:var(--purple);font-weight:bold;font-size:16px;margin-bottom:10px}
/* 背包点装备时的「新 vs 已装备」属性对比表 */
.cmpBox{margin-top:10px;border-top:1px dashed var(--line);padding-top:8px}
.cmpTitle{font-size:12px;color:var(--text2);font-weight:bold;margin-bottom:5px}
.cmpTbl{width:100%;border-collapse:collapse;font-size:12px}
.cmpTbl th,.cmpTbl td{padding:3px 4px;text-align:center;border-bottom:1px solid rgba(0,0,0,.06)}
.cmpTbl th{color:var(--text2);font-weight:normal;border-bottom:1px solid var(--line)}
.cmpTbl td:first-child{text-align:left;color:var(--text2)}
.cmpTbl td.up{color:var(--green);font-weight:bold}
.cmpTbl td.down{color:var(--red)}
/* ============ 管理员面板·物品发放 ============ */
.gmCat{font-weight:bold;color:var(--purple);margin:8px 0 4px;font-size:13px}
.gmItemList{max-height:300px;overflow:auto;border:1px solid var(--line);padding:6px;background:#fafafa;border-radius:4px}
.gmItem{display:block;width:100%;text-align:left;margin:2px 0;padding:5px 8px;border:1px solid var(--line);
  border-radius:4px;background:#fff;cursor:pointer;font-size:13px}
.gmItem:hover{background:#f0f4ff}
.gmItem.sel{background:var(--hot);border-color:var(--purple);font-weight:bold}
.ovl .btns{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
/* ============ 邮件系统 ============ */
#ovMail{top:50%;left:50%;transform:translate(-50%,-50%);width:600px;max-width:calc(94vw / var(--zoom,1));max-height:calc(88vh / var(--zoom,1));overflow:auto}
#ovWorshipForge{top:50%;left:50%;transform:translate(-50%,-50%);width:520px;max-width:calc(94vw / var(--zoom,1));max-height:calc(88vh / var(--zoom,1));overflow:auto}
/* 快捷栏邮件红点提醒 */
#btnMail{position:relative}
.badge{display:inline-block;min-width:16px;height:16px;line-height:16px;padding:0 4px;margin-left:4px;border-radius:8px;background:#e74c3c;color:#fff;font-size:11px;font-weight:bold;text-align:center;vertical-align:middle}
.mailList{max-height:62vh;overflow:auto;border:1px solid var(--line);border-radius:4px;padding:4px;background:#fafafa}
.mailRow{border-bottom:1px solid var(--line);padding:7px 6px}
.mailRow.unread{background:#fff7e6}
.mailRowMain{font-size:14px}
.mailRowSub{font-size:11px;margin-top:2px}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#bbb;margin-right:6px;vertical-align:middle}
.dot.on{background:#e74c3c}
.mailContent{white-space:pre-wrap;word-break:break-word;border:1px solid var(--line);padding:8px;margin:6px 0;max-height:240px;overflow:auto;background:#fafafa;border-radius:4px;font-size:13px}
.mailAtt{margin:4px 0 0 18px;font-size:13px}
.rfMsg{margin-top:10px;padding:8px 10px;border-radius:4px;font-size:13px;font-weight:bold}
.rfMsg.ok{background:#e7f4e8;color:#2e7d32;border:1px solid #b7dfba}
.rfMsg.fail{background:#fdecea;color:#c62828;border:1px solid #f3c0bc}
#ovModal{top:50%;left:50%;transform:translate(-50%,-50%);width:680px;max-width:92vw;max-height:86vh;overflow:auto}
.ovlBox{display:flex;flex-direction:column;gap:0;overflow:hidden;max-height:100%}
.ovlHead{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;border-bottom:1px solid var(--line);padding-bottom:6px}
.ovlHead .tt{margin-bottom:0}
.ovClose{background:#f3ece0;border:1px solid var(--line);border-radius:4px;width:26px;height:26px;cursor:pointer;font-size:14px;line-height:1}
.ovClose:hover{background:var(--hot)}
.ovlBody{flex:1;min-height:0;overflow-y:auto}
.chk{display:block;margin:4px 0;cursor:pointer}
.ppGrid{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px}
.mut{color:var(--text2);font-size:12px}
.rar1{color:#827d73;border-color:#827d73} .rar2{color:#3c9646;border-color:#3c9646}
.rar3{color:#326ec8;border-color:#326ec8} .rar4{color:#963cc8;border-color:#963cc8}
.rar5{color:#dc7814;border-color:#dc7814}
/* 神品世界播报：红字粗体 */
.cmsg.divine{color:#ff3b30;font-weight:bold;background:rgba(255,59,48,.08);border-radius:3px}
.cmsg.divine .tag{color:#ff3b30;font-weight:bold}
.cmsg.divine .ts{color:#ff7a70}
.divineMsg{color:#ff3b30;font-weight:bold}
/* 展示卡片（聊天框内） */
.showCard{display:inline-block;margin:4px 0;padding:8px 10px;background:var(--brown2,#2a2118);border:1px solid #4a3f33;border-radius:8px;max-width:520px;vertical-align:top}
.showCard .showHead{font-size:12px;color:#b0a48e;margin-bottom:4px}
.showCard .tt{font-weight:bold;font-size:15px;margin-bottom:4px}
.showCard .kv{margin:2px 0;font-size:12px;color:#cdbd9f}
.showCard .showTitle{font-weight:bold;font-size:15px;margin-top:2px}
/* ============ 副本（5人组队三关） ============ */
.fbBoard{display:grid;grid-template-columns:repeat(5,1fr);gap:3px;background:var(--brown2);padding:4px;border-radius:6px}
.fbCell{height:32px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:12px;user-select:none;background:#efe6d2;color:#5a4a3a;border:1px solid #d8cbb0}
.fbTrap{background:#7a2c1a;color:#f0c9bf;font-weight:bold}
.fbMe{outline:3px solid var(--gold);outline-offset:-3px;font-weight:bold;color:#3a2a1a;background:#fff3c4}
.fbP{outline:2px solid #4a7bd0;outline-offset:-2px;font-weight:bold;color:#22324d;background:#dbe6f7}
.fbMembers{list-style:none;margin:6px 0 0;padding:0;border:1px solid var(--line);border-radius:4px;background:#fffdf7;max-height:200px;overflow:auto}
.fbMembers li{display:flex;justify-content:space-between;padding:4px 10px;border-bottom:1px solid #efe8d8;font-size:13px}
.fbMembers li:last-child{border-bottom:none}
.fbMembers .nm{font-weight:bold}
.fbMembers .hp{color:var(--text2)}
.fbMembers .me .nm{color:var(--purple)}
.fbMembers .down .nm{color:#a33}
.fbMembers .arr .nm{color:#2a8}
.fbBar{height:16px;background:#3a2a1a;border-radius:8px;overflow:hidden;margin:4px 0 8px;border:1px solid #5a4a3a}
.fbBarFill{height:100%;background:linear-gradient(90deg,#c0392b,#e67e22);transition:width .2s}
.fbSlot{display:flex;gap:10px;justify-content:center;margin:10px 0}
.fbSym{font-size:34px;line-height:1;background:#2a1c10;border:1px solid #5a4a3a;border-radius:6px;width:54px;height:54px;display:flex;align-items:center;justify-content:center}
.fbBtns button.on,.kv button.on{background:var(--purple);color:#fff;border-color:var(--purple)}
.kv.ok{color:#2a8;font-weight:bold}
/* ============ 登仙梯（别踩白块） ============ */
.dxScore{font-size:20px;font-weight:bold;color:var(--purple);margin:4px 0 8px}
.dxScore #dxTimer{color:#ff4d4f;font-weight:bold;font-family:Consolas,Menlo,monospace}
.dxBoard{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;background:var(--brown2);padding:4px;border-radius:6px}
.dxRow{display:contents}
.dxCell{height:60px;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:13px;user-select:none;transition:background .08s}
.dxBlack{background:#3a2a1a;color:#5a4a3a}
.dxWhite{background:#f7f1e3;color:#3a2a1a;font-weight:bold}
.dxWhite:hover{background:#fffdf7}
.dxCurrent{outline:3px solid var(--gold);outline-offset:-3px}
.dxOver .dxCell{cursor:default}
.dxRank{list-style:none;margin:6px 0 0;padding:0;max-height:200px;overflow:auto;border:1px solid var(--line);border-radius:4px;background:#fffdf7}
.dxRank li{display:flex;justify-content:space-between;padding:4px 10px;border-bottom:1px solid #efe8d8;font-size:13px}
.dxRank li:last-child{border-bottom:none}
.dxRank .rk{color:var(--text2);width:28px}
.dxRank .nm{flex:1;margin:0 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dxRank .sc{color:var(--purple);font-weight:bold}
.dxRank .me{background:var(--sel)}
/* ============ 魔塔 · 文字RPG ============ */
.motaStat{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:13px;margin-bottom:10px;padding:8px 10px;background:#faf6ee;border:1px solid var(--line);border-radius:4px}
.motaStat span{color:var(--text)}
.motaMap{display:grid;grid-template-columns:repeat(11, 26px);grid-auto-rows:26px;gap:2px;margin:0 auto 10px;width:max-content}
.mc{display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:bold;border:1px solid var(--line);border-radius:3px;background:#fffdf7;color:var(--text)}
.mc.mWall{background:var(--brown2);border-color:var(--brown2)}
.mc.mPath{background:#fffdf7}
.mc.mStair{background:var(--purple);color:#fff}
.mc.mKey{background:var(--gold);color:var(--brown2)}
.mc.mDoor{background:repeating-linear-gradient(45deg,#e9dcc0,#e9dcc0 4px,#d7c3a0 4px,#d7c3a0 8px);color:var(--brown)}
.mc.mHp{background:var(--red);color:#fff}
.mc.mAtk{background:var(--bar);color:#fff}
.mc.mDef{background:var(--blue);color:#fff}
.mc.mGold{background:var(--gold);color:var(--brown2)}
.mc.mMon{background:#f0c9a0;color:var(--red)}
.mc.mBoss{background:var(--red);color:#fff;box-shadow:0 0 0 2px var(--gold) inset}
.mc.mShop{background:var(--green);color:#fff}
.mc.mChest{background:var(--brown);color:#ffe9c0}
.mc.mHero{background:var(--sel);color:var(--purple);border:2px solid var(--purple)}
.motaCtrl{display:flex;flex-direction:column;gap:6px;align-items:center;margin-bottom:10px}
.motaCtrl .row1,.motaCtrl .row2,.motaCtrl .row3{display:flex;gap:6px}
.motaCtrl button{padding:6px 10px;font-size:13px;border:1px solid var(--border);border-radius:4px;background:var(--btn);color:var(--text);cursor:pointer}
.motaCtrl button:hover{background:var(--hot)}
.motaLog{max-height:140px;overflow:auto;border:1px solid var(--line);border-radius:4px;background:#fffdf7;padding:6px 8px;font-size:12px;line-height:1.6}
.motaLog div{padding:1px 0;border-bottom:1px dotted #efe8d8}
.motaLog div:last-child{border-bottom:none}
/* 相邻敌人数值徽标 + 预警面板 */
.mc{position:relative}
.mc.mMonNear{box-shadow:0 0 0 2px var(--red) inset}
.mc.mBossNear{box-shadow:0 0 0 2px var(--gold) inset}
.mcBadge{position:absolute;left:0;right:0;bottom:0;font-size:8px;line-height:1.1;font-weight:normal;color:#fff;background:rgba(120,20,20,.78);text-align:center;white-space:nowrap;overflow:hidden}
.mc.mBossNear .mcBadge{background:rgba(150,110,10,.85);color:#fff}
.motaEnemies{margin:0 0 10px;padding:8px 10px;border:1px solid var(--line);border-radius:4px;background:#fdf3f0}
.motaEnemies .meTitle{font-size:12px;color:var(--red);font-weight:bold;margin-bottom:6px}
.motaEnemies .meRow{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;font-size:12px;padding:3px 0;border-bottom:1px dotted #f0d9d4}
.motaEnemies .meRow:last-child{border-bottom:none}
.motaEnemies .meRow.boss{background:rgba(150,110,10,.1)}
.motaEnemies .meName{font-weight:bold}
.motaEnemies .meRow.boss .meName{color:#9a6a0a}
.motaEnemies .meStat{color:var(--text2)}
.motaEnemies .mePred{padding:1px 6px;border-radius:3px;font-weight:bold}
.motaEnemies .meOk{background:var(--green);color:#fff}
.motaEnemies .meDead{background:var(--red);color:#fff}
.hide{display:none !important}

/* 幸运商店 3x3 网格 */
.luckyGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.luckyCell{border:2px solid var(--line);border-radius:6px;background:var(--panel);padding:10px;cursor:pointer;user-select:none;text-align:center;transition:transform .1s}
.luckyCell:hover{transform:scale(1.02);background:var(--hot)}
.luckyCell:active{transform:scale(0.98)}
.luckyIdx{font-size:11px;color:var(--text2)}
.luckyDesc{font-size:14px;font-weight:bold;margin:6px 0;min-height:18px;word-break:break-all}
.luckyPrice{font-size:12px;color:#c0392b;font-weight:bold}
.luckyHint{font-size:10px;color:var(--text2);margin-top:4px;opacity:.7}
.luckyRefreshBtn{background:var(--hot);border:1px solid var(--line);border-radius:4px;padding:6px 16px;cursor:pointer;font-size:13px}
.luckyRefreshBtn:hover{background:var(--border)}

/* 大墓探秘 扫雷格子 */
.tombCell{width:40px;height:40px;border:1px solid var(--border);border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:bold;cursor:pointer;margin:2px;background:var(--panel2);user-select:none}
.tombCell:hover{background:var(--hot)}
.tombMine{width:40px;height:40px;border:1px solid #c0392b;border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:18px;cursor:default;margin:2px;background:#ffd0d0}
.tombCellUn{width:40px;height:40px;border:1px solid var(--line);border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:14px;cursor:pointer;margin:2px;background:var(--panel2);color:#666}
.tombGray{opacity:.6}
.gomoCell{width:36px;height:36px;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:22px;cursor:pointer;margin:1px;background:var(--panel2);user-select:none}
.gomoCell:hover{background:var(--hot)}
.drawTool{background:var(--btn);border:1px solid var(--border);border-radius:3px;padding:4px 10px;cursor:pointer;font-size:13px}
.drawTool:hover{background:var(--hot)}
.drawCard{border:2px solid #e74c3c;border-radius:6px;overflow:hidden;cursor:pointer;background:var(--panel);transition:box-shadow .15s;padding:8px;text-align:center;display:inline-block;width:auto}
.drawCard:hover{box-shadow:0 4px 16px rgba(231,76,60,.4);transform:scale(1.05)}
.drawCardImg{width:200px;height:200px;overflow:hidden;border-radius:4px;background:#fff;display:flex;align-items:center;justify-content:center}
.drawCardImg img{max-width:100%;max-height:100%;object-fit:contain}
.drawCardAuthor{font-size:13px;font-weight:bold;margin:4px 0 2px}
.drawCardScore{font-size:11px;color:var(--text2)}

/* 称号富文本 */
.richGrad{background:linear-gradient(90deg,var(--c1,#fff),var(--c2,#fff));-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;font-weight:bold}
.richEmoji{background:none;-webkit-text-fill-color:initial;color:initial}
.emojiBtn.sel{border:2px solid #cc0000 !important;background:#fff7e6}
/* 膜拜炼成浮层：子称号行与单色色板 */
.wfSubRow{display:flex;align-items:center;gap:4px;margin:4px 0;flex-wrap:wrap}
.wfSubs{max-height:220px;overflow:auto;border:1px solid var(--line);border-radius:4px;padding:6px;background:rgba(0,0,0,.03)}
.wfSwatch{width:22px;height:20px;border:1px solid #000;cursor:pointer;padding:0}
.wfSwatch.sel{border:2px solid #cc0000 !important;outline:1px solid #fff}
.wfRem{margin-left:4px;padding:2px 8px;cursor:pointer}
.tIcon{display:inline-block;height:1em;width:1em;vertical-align:middle;margin-right:2px}
.cmsg.hasBg{padding-right:8px;background-color:rgba(255,250,235,0.6)}
.setGrid{display:flex;gap:10px;height:auto;align-items:flex-start}
.setCol{flex:1 1 0;display:flex;flex-direction:column;gap:10px;min-width:0}
.setCol .panelBox{display:flex;flex-direction:column;min-height:auto;height:auto}
.setGrid .list{flex:1;min-height:80px}
#advMaps{display:flex;flex-wrap:wrap;gap:10px;margin:10px 0}
#advMaps button{min-width:150px;min-height:40px}

/* 页面内部标签（二级标签） */
.subTabBar{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px;border-bottom:1px solid var(--line);padding-bottom:6px}
.subTabBar button{background:#f5f0e6;border:1px solid var(--line);border-radius:3px;padding:4px 10px;font-size:13px}
.subTabBar button.active{background:var(--sel);border-color:var(--border);font-weight:bold}

/* 人物页三列布局 */
.charGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;align-items:start}
.charPanel{border:1px solid var(--line);border-radius:4px;padding:10px;background:#fffdf7}
.charPanel h3{color:var(--blue);font-size:14px;text-align:center;margin-bottom:8px;border-bottom:1px solid var(--line);padding-bottom:4px}
.miniBtn{font-size:12px;padding:2px 10px;border:1px solid var(--line);border-radius:4px;background:var(--btn,#fff);color:var(--text,#333);cursor:pointer;vertical-align:middle}
.miniBtn:hover{background:var(--btnHover,#f0e9da)}
.charPanel .kv{display:flex;justify-content:space-between;gap:8px}
.charPanel .kv .k{color:var(--text2);white-space:nowrap}
.charPanel .kv .v{font-weight:bold;white-space:nowrap}
/* 新手指南（人物页底部） */
.guideBox{border:1px solid var(--line);border-radius:6px;padding:12px;background:#fffbf0;margin-top:10px}
.guideTitle{font-size:15px;font-weight:bold;color:var(--blue);margin-bottom:8px;text-align:center}
.guideGrid{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;font-size:13px;line-height:1.55}
.guideItem{padding:5px 8px;border-left:3px solid #d4a017;background:#fffdf7;border-radius:0 4px 4px 0}
.guideItem b{color:#b8860b}
.sectInfo .kv{display:flex;justify-content:space-between}
/* 祭天 */
.sacWrap{border:1px solid var(--line);border-radius:6px;padding:14px;background:#fffdf7;display:flex;gap:14px;align-items:stretch;min-height:calc(100% - 30px)}
.sacLeft{flex:1;min-width:0;display:flex;flex-direction:column}
.sacRight{width:320px;flex:none;display:flex;flex-direction:column}
.sacHead{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.sacHead h3{color:var(--blue);font-size:16px;margin:0}
.sacBait{color:var(--text2);font-size:13px}
.sacGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:12px 0}
.sacCell{border:1px dashed var(--line);border-radius:6px;min-height:64px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px;text-align:center;background:#faf7ef}
.sacCell.filled{border-style:solid;border-color:var(--gold2);background:#fff8e8}
.sacNm{font-weight:bold;font-size:13px}
.sacTag{display:inline-block;font-size:10.5px;font-weight:bold;padding:1px 7px;border-radius:9px;margin-top:3px}
.sacTag.fr0{background:#eef0f2;color:#8a909c}
.sacTag.fr1{background:#e6f4ea;color:#2f7d35}
.sacTag.fr2{background:#e7eefb;color:#2b6cb0}
.sacTag.fr3{background:#fbeede;color:#c9690f}
.sacFishItem.fr0{border-color:#b9bec8}
.sacFishItem.fr1{border-color:#3c9646}
.sacFishItem.fr2{border-color:#326ec8}
.sacFishItem.fr3{border-color:#dc7814}
.sacFishNm.fr0{color:#8a909c}
.sacFishNm.fr1{color:#2f7d35}
.sacFishNm.fr2{color:#2b6cb0}
.sacFishNm.fr3{color:#c9690f}
.sacCell.fr0{border-color:#b9bec8}
.sacCell.fr1{border-color:#3c9646}
.sacCell.fr2{border-color:#326ec8}
.sacCell.fr3{border-color:#dc7814}
.sacNm.fr0{color:#8a909c}
.sacNm.fr1{color:#2f7d35}
.sacNm.fr2{color:#2b6cb0}
.sacNm.fr3{color:#c9690f}
.sacActions{display:flex;gap:10px;margin:8px 0}
.sacActions button{padding:8px 16px;font-size:14px}
.sacDo{background:var(--gold2);color:#3a2a00;font-weight:bold}
.sacResultHead{font-size:13px;color:var(--text2);margin:10px 0 4px;border-top:1px solid var(--line);padding-top:8px}
#sacFishList{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:8px;overflow:auto;flex:1;align-content:start}
.sacFishItem{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 4px;border:1px solid var(--line);border-radius:6px;cursor:pointer;background:#fffef9;color:#2d2d2d;min-height:86px;text-align:center}
.sacFishItem:hover{background:#fff5d6;border-color:var(--gold2)}
.sacFishNm{font-weight:bold;font-size:12px;color:#2d2d2d;line-height:1.2}
.sacFishCnt{font-weight:bold;color:var(--gold2);font-size:12px}
@media(max-width:960px){
  .sacWrap{flex-direction:column;min-height:0}
  .sacRight{width:auto;max-height:320px}
}
@media(max-width:560px){ .sacGrid{grid-template-columns:repeat(3,1fr)} }

/* 五行图 */
.wuxingBox{display:flex;flex-direction:column;align-items:center;gap:6px;margin-top:6px}
.wuxingRow{display:flex;justify-content:center;gap:40px}
.wuxingItem{text-align:center}
.wuxingItem .label{font-size:12px;color:var(--text2)}
.wuxingItem .val{font-size:16px;font-weight:bold}

/* 装备与背包分割 */
.bagLayout{display:grid;grid-template-columns:280px 1fr;gap:10px;height:100%}
.bagSide{border:1px solid var(--line);border-radius:4px;padding:8px;overflow:auto;background:#fffdf7;display:grid;grid-template-columns:1fr 1fr;gap:6px;align-content:start}
.bagSide .h{grid-column:1/-1;font-size:13px;margin-bottom:4px}
.bagMain{display:flex;flex-direction:column;gap:6px;min-height:0}
.bagActions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.bagCount{font-size:13px;color:var(--text2);margin-left:auto}
.bagExtRow{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px;padding:8px 10px;border:1px dashed var(--line);border-radius:6px;background:var(--panel)}
.bagExtLabel{font-size:13px;font-weight:bold;color:var(--brown)}
.extBtn{font-size:13px;padding:4px 12px;background:var(--hot);color:#7a4a00;border-color:var(--brown)}
.extBtn:hover{filter:brightness(1.05)}
.bagExtHint{font-size:12px;color:var(--text2)}
.bagExtHint b{color:var(--blue)}
.advGrid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:10px}
.advCard{border:2px solid var(--line);border-radius:6px;padding:10px;text-align:center;background:var(--panel);display:flex;flex-direction:column;gap:6px}
.advCard.on{background:#fffef0;box-shadow:0 0 6px rgba(0,0,0,.1)}
.advCard .advName{font-size:20px;font-weight:bold}
.advCard .advSub{font-size:12px;color:var(--text2)}
.advCard button{font-size:12px;padding:3px 10px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}

/* 娱乐 12 宫格 */
.funGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;overflow:auto;padding:2px;align-content:start}
.funCard{border:2px solid var(--line);border-radius:6px;padding:12px 10px;background:var(--panel);cursor:pointer;text-align:center;display:flex;flex-direction:column;gap:6px;min-height:86px;justify-content:center}
.funCard:hover{background:var(--hot);box-shadow:0 0 6px rgba(0,0,0,.12)}
.funCard .fn{font-size:17px;font-weight:bold;color:var(--brown)}
.funCard .fd{font-size:12px;color:var(--text2)}
.funCard .ft{font-size:12px;color:var(--blue)}
.sectBuildGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.sectFarmGrid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
.sectTable{border-collapse:collapse;width:100%;font-size:13px}
.sectTable th,.sectTable td{border:1px solid var(--line);padding:4px 6px;text-align:left}
.sectTable th{background:var(--btn)}

/* 响应式 */
@media (max-width:960px){
  #mainTabBar{overflow-x:auto;flex-wrap:nowrap;padding-bottom:0}
  #mainTabBar button{flex:0 0 auto}
  .charGrid{grid-template-columns:1fr}
  .bagLayout{grid-template-columns:1fr;grid-template-rows:auto auto;height:auto}
  #bagGrid{grid-template-columns:repeat(3,1fr);max-height:62vh}
  .bagSide{grid-template-columns:repeat(4,1fr)}
  .funGrid{grid-template-columns:repeat(3,1fr)}
  .setGrid{flex-direction:column;height:auto}
  .ppGrid{grid-template-columns:1fr}
}
@media (max-width:760px){
  #titleBar .roleSummary{display:none}
  #quickBar button{font-size:12px;padding:4px 7px;min-width:0}
  #inputRow button{font-size:12px;padding:4px 6px}
}
@media (max-width:560px){
  #loginBar .lb,#loginBar #connState{ display:none; }
  #chatInput{ min-width:0; flex:1 1 auto; font-size:15px; padding:9px; }
  #inputRow{ flex-wrap:wrap; }
  #inputRow button{ font-size:13px;padding:9px 12px;min-height:42px; }
  .funGrid{grid-template-columns:repeat(2,1fr)}
  button,.extBtn,#quickBar button{ min-height:40px; }   /* 移动端触控目标，避免误触 */
  .charGrid,.bagLayout,.guideGrid{ grid-template-columns:1fr; }
  #bagGrid{grid-template-columns:repeat(2,1fr);max-height:60vh}
  .ovl{
    top:0!important;left:0!important;
    transform:none!important;
    width:100vw!important;height:100vh!important;
    max-width:none!important;max-height:none!important;
    border-radius:0!important;
    overflow:auto;
  }
  .ovl .ovlBody{ max-height:none; }
}
@media (max-width:480px){
  #titleBar .brand .name{ font-size:15px; }
  #quickBar{ gap:4px; }
  #quickBar button{ font-size:11px;padding:7px 5px; }
  .subTabBar{ overflow-x:auto;flex-wrap:nowrap; }
  .subTabBar button{ flex:0 0 auto; }
  .chanBar{ flex-wrap:wrap; }
}
.cultState{border:1px solid #d8b25a;background:#fffaf0;color:#7a5b12;border-radius:6px;padding:6px 10px;margin:8px 0;font-size:13px;}
.cultState b{color:#b8860b;}

/* ---- 洞府炼丹房 ---- */
.alchCard h3{display:flex;justify-content:space-between;align-items:center;}
.alchRate{font-size:12px;font-weight:normal;color:#b8860b;}
.matOk{color:#28a745;}
.matLack{color:#dc3545;}
.alchCard button{margin-top:6px;}

/* ---- 真·世界BOSS 战斗状态提示 ---- */
.rbDead{border:1px solid #dc3545;background:#fff0f0;color:#c0392b;border-radius:6px;padding:6px 10px;margin:6px 0;font-size:13px;font-weight:bold;}
.rbDodge{border:1px solid #17a2b8;background:#e8f7fa;color:#0c7488;border-radius:6px;padding:6px 10px;margin:6px 0;font-size:13px;}
/* 洞府页：前三个功能紧凑置顶，炼丹房占据剩余空间并内部滚动，二者始终同屏 */
.dongfuRoot{display:flex;flex-direction:column;height:100%;overflow:hidden;gap:8px}
.dongfuTop{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;flex:0 0 auto}
.dongfuTop>.panelBox{padding:8px 10px}
.dongfuTop h3{font-size:14px;margin-bottom:2px}
.dongfuTop .kv{font-size:12px;margin:2px 0}
.dongfuTop button{font-size:12px;padding:4px 8px}
.dfTitle{margin:0}
.dfHint{margin:0}
.dongfuAlch{flex:1 1 auto;min-height:0;overflow:auto}
.dongfuAlch>.grid3{height:auto;gap:8px;grid-auto-rows:min-content}

/* ============ 个人主页 ============ */
.pfCard{display:flex;gap:14px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:14px;margin-bottom:4px}
.pfAvatar{width:72px;height:72px;min-width:72px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:30px;font-weight:bold;color:#fff;position:relative;box-shadow:0 2px 8px rgba(0,0,0,.25);text-shadow:0 1px 3px rgba(0,0,0,.4)}
.pfAvName{position:absolute;bottom:-6px;left:50%;transform:translateX(-50%);font-size:10px;font-weight:normal;background:#fffdf7;border:1px solid var(--line);border-radius:8px;padding:0 6px;color:var(--text2);white-space:nowrap;text-shadow:none}
.pfHeadInfo{flex:1;min-width:0}
.pfName{font-size:19px;font-weight:bold;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pfTitleTag{font-size:12px;border:1px solid var(--line);border-radius:10px;padding:1px 8px;background:#fffef0}
.pfRealm{font-size:14px;color:var(--blue);font-weight:bold;margin-top:4px}
.pfMeta{font-size:12px;color:var(--text2);margin-top:4px}
.pfSec{font-size:13px;font-weight:bold;color:var(--brown);margin:10px 0 6px;border-left:3px solid var(--brown);padding-left:6px}
.pfStats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.pfStat{border:1px solid var(--line);border-radius:6px;background:var(--panel);padding:8px 4px;text-align:center}
.pfStat .v{font-size:15px;font-weight:bold;word-break:break-all}
.pfStat .k{font-size:11px;color:var(--text2);margin-top:2px}
.pfAttrs{display:flex;flex-direction:column;gap:4px}
.pfAttrRow{display:flex;align-items:center;gap:8px}
.pfAttrName{font-size:13px;font-weight:bold;width:16px;text-align:center}
.pfAttrBar{flex:1;height:10px;background:var(--barbg,#eee);border:1px solid var(--line);border-radius:5px;overflow:hidden}
.pfAttrFill{height:100%;border-radius:5px;transition:width .3s}
.pfAttrVal{font-size:12px;font-weight:bold;width:44px;text-align:right}
.pfTitles{display:flex;flex-wrap:wrap;gap:6px}
.pfTitle{border:1px solid var(--line);border-radius:12px;padding:2px 10px;font-size:12px;background:var(--panel)}
.pfTitle.on{border-color:#b8860b;background:#fffae0;box-shadow:0 0 4px rgba(184,134,11,.35);font-weight:bold}
.pfPets{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}
.pfPet{border:2px solid;border-radius:6px;padding:8px;background:var(--panel)}
.pfPetName{font-size:14px;font-weight:bold;display:flex;align-items:center;gap:6px}
.pfPetOn{font-size:10px;color:#fff;background:#28a745;border-radius:8px;padding:0 6px;font-weight:normal}
.pfPetInfo{font-size:11px;color:var(--text);margin-top:3px}
.pfPetInfo.mut{color:var(--text2)}
.pfGears{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.pfGear{border:2px solid;border-radius:6px;padding:8px;background:var(--panel);cursor:pointer;transition:filter .12s,transform .12s}
.pfGear:hover{filter:brightness(1.18);transform:translateY(-1px)}
.pfGearSlot{font-size:11px;color:var(--text2)}
.pfGearName{font-size:14px;font-weight:bold;margin:2px 0}
.pfGearInfo{font-size:11px;color:var(--text)}
.pfGearTip{position:fixed;display:none;z-index:9999;max-width:280px;background:#1b1f2a;border:1px solid #39435c;border-radius:8px;padding:10px 12px;box-shadow:0 8px 28px rgba(0,0,0,.55);pointer-events:none}
.pfGearTip .tt{font-size:15px;font-weight:700;margin-bottom:5px;line-height:1.3}
.pfGearTip .kv{font-size:12.5px;color:#c9d2e3;line-height:1.65;white-space:nowrap}
.pfKin{border:1px solid var(--line);border-radius:6px;background:var(--panel);padding:8px 10px;display:flex;flex-direction:column;gap:6px}
.pfKinRow{display:flex;gap:10px;font-size:13px}
.pfKinRow .k{color:var(--text2);white-space:nowrap;min-width:76px}

/* ============ 自定义右键菜单 ============ */
.ctxMenu{position:fixed;z-index:9000;min-width:150px;background:var(--panel);border:1px solid var(--border);border-radius:6px;box-shadow:0 6px 18px rgba(0,0,0,.22);padding:4px;user-select:none}
.ctxMenu.hide{display:none}
.ctxItem{padding:7px 14px;border-radius:4px;cursor:pointer;font-size:13px;color:var(--text);white-space:nowrap}
.ctxItem:hover{background:var(--sel)}
.wtHead{padding:6px 14px;font-size:12px;color:var(--muted);border-bottom:1px solid var(--border);margin-bottom:2px;white-space:nowrap}
.wtDone{opacity:.5;cursor:not-allowed}
.wtDone:hover{background:transparent}
.ctxSep{height:1px;background:var(--line);margin:4px 6px}

/* ============ 道侣 / 婚姻系统 ============ */
.dlGender{display:inline-flex;gap:6px;vertical-align:middle}
.dlGender button{padding:4px 14px;border:1px solid var(--border);background:var(--panel);color:var(--text);border-radius:5px;cursor:pointer;font-size:13px}
.dlGender button.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.dlRow{margin:10px 0;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.dlRow input{padding:6px 10px;border:1px solid var(--border);border-radius:5px;background:var(--bg);color:var(--text);min-width:160px}
.dlRow button{padding:5px 14px;border:1px solid var(--border);background:var(--panel);color:var(--text);border-radius:5px;cursor:pointer;font-size:13px}
.dlRow button:hover{background:var(--sel)}
.dlReq{margin:10px 0;padding:8px 12px;border:1px solid var(--accent);border-radius:6px;background:rgba(120,90,200,.08);display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.dlReq button{padding:4px 12px;border:1px solid var(--border);border-radius:5px;cursor:pointer;font-size:13px}
.dlReq button[data-dlact="accept"]{background:var(--accent);color:#fff;border-color:var(--accent)}
.dlBlock{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line)}
.dlSub{font-weight:600;color:var(--text);margin-bottom:6px}
.dlDanger{color:#fff !important;background:#c0392b !important;border-color:#c0392b !important}
.dlDanger:hover{background:#a93226 !important}
.pfSpouse{color:#e08fd0;font-weight:600}
.pfUid{color:#9aa0a6;font-size:12px;letter-spacing:.5px}

/* ============ 论道答题 / 求签 ============ */
.lundaoAns::placeholder{color:var(--text2);opacity:.8}
.lundaoAns:focus{outline:none;border-color:var(--gold2) !important;box-shadow:0 0 0 2px #d4a84333}

/* ============ 斗宗主（三人斗地主） ============ */
.dzroom{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;margin:4px 0;background:rgba(255,255,255,.08);border-radius:6px}
.dzroom b{color:#f0c040}
.dzroom button{padding:2px 10px;font-size:12px}
.dzroomlist{max-height:200px;overflow:auto}

/* ===== 全屏牌桌布局 ===== */
/* 全屏牌桌：用 100% 而非 100vw/100vh，避免 html zoom 反向补偿造成的视口错位；fixed 脱离文档流，强制占满 */
.dztable-full{flex:1;display:flex;flex-direction:column;overflow:hidden;color:#fff;position:relative}
/* 顶栏 */
.dztopbar{display:flex;align-items:center;padding:8px 14px;background:linear-gradient(180deg,rgba(0,0,0,.55),rgba(0,0,0,.3));flex-shrink:0}
.dztitle{font-size:16px;color:#ffd54a;text-shadow:0 0 8px rgba(240,192,64,.6);font-weight:bold}
.dzinfo{font-size:13px;color:#fff;margin-left:auto;margin-right:10px;text-shadow:0 0 4px rgba(0,0,0,.8)}
.dzclosebtn{width:28px;height:28px;border-radius:50%;border:none;background:rgba(255,255,255,.12);color:#aaa;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.2s}
.dzclosebtn:hover{background:rgba(220,53,69,.7);color:#fff}

/* 上半区：对手 + 中央出牌 */
.dztoparea{flex:1;display:flex;align-items:stretch;gap:0;padding:8px 20px;min-height:0}
/* 对手座位（左右两侧） */
.dzopponent{display:flex;flex-direction:column;align-items:center;width:160px;flex-shrink:0;padding:8px 4px;border-radius:12px;background:rgba(0,0,0,.25);border:2px solid transparent;transition:.2s}
.dzopponent.dzturn{border-color:#f0c040;box-shadow:0 0 14px rgba(240,192,64,.35)}
.dzopponent.dzbot{background:rgba(60,20,90,.4);border-color:#9b59b6}
.dzopponent.dzbot .dzname{color:#e0c3ff}
.dzopleft{align-self:flex-start;margin-top:10px}
.dzopright{align-self:flex-end;margin-top:10px}
.dzopphead{display:flex;align-items:center;gap:8px}
.dzoppinfo{display:flex;flex-direction:column}
.dzbadge{font-size:26px;font-weight:bold;color:#fff;background:linear-gradient(135deg,#2980b9,#1a5276);border-radius:8px;padding:2px 10px;text-align:center;line-height:1.1;min-width:44px;margin-top:4px;box-shadow:inset 0 1px 0 rgba(255,255,255,.15)}
.dzbadge small{font-size:13px;font-weight:normal;opacity:.85}
.dzoppph{margin-top:6px;min-height:46px;display:flex;align-items:center;justify-content:center}
.dzoppcards{display:flex;flex-wrap:wrap;justify-content:center;gap:2px}
.dzoppcards .dzcard{width:30px;height:42px;font-size:11px;margin:0;cursor:default}
.dzoppcards .dzcard .dzrk{font-size:14px;font-weight:bold}
.dzoppcards .dzcard .dzst{font-size:11px}
.dzoppcards .dzjoker{width:30px;height:42px}

/* 中央出牌区 */
.dzmidarea{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;padding:0 10px}
.dzcenterplay{text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px}
.dzcpname{font-size:16px;color:#ffd54a;text-shadow:0 0 6px rgba(0,0,0,.6);font-weight:bold}
.dzcpcards{display:flex;flex-wrap:wrap;justify-content:center;gap:4px}
.dzcpcards .dzcard{width:44px;height:62px;font-size:15px;margin:0;cursor:default}
.dzcpcards .dzcard .dzrk{font-size:18px;font-weight:bold}
.dzcpcards .dzcard .dzst{font-size:15px}
.dzcpcards .dzjoker{width:44px;height:62px}
.dzcpnewround{color:#7bed9f;font-size:16px;text-shadow:0 0 8px rgba(123,237,159,.4)}
.dzaction{margin-top:8px}

/* 下半区：自己的手牌 */
.dzbottomarea{flex-shrink:0;padding:8px 20px 14px;background:linear-gradient(0deg,rgba(0,0,0,.5),transparent)}
.dzselfinfo{display:flex;justify-content:space-between;align-items:center;padding:2px 8px 4px;font-size:13px}
.dzselfname{color:#7bed9f;font-weight:bold;text-shadow:0 0 4px rgba(0,0,0,.7)}
.dzselfcnt{color:#ffd54a;font-weight:bold;text-shadow:0 0 4px rgba(0,0,0,.7)}

/* 结算覆盖层 */
.dzoverlay-result{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.65);z-index:10}

/* 头像/名字（保留旧版兼容） */
.dzavatar{width:56px;height:56px;border-radius:50%;background-color:#1a1a2e;border:2px solid #333;background-size:216px 68px !important;background-repeat:no-repeat}
.dzname{font-size:14px;color:#fff;white-space:normal;word-break:break-all;text-align:center;text-shadow:0 0 4px rgba(0,0,0,.8);font-weight:bold}
.dzbleave{margin-left:8px;padding:3px 12px;font-size:12px;border-radius:6px;border:1px solid rgba(255,255,255,.25);background:linear-gradient(180deg,#c0392b,#922b21);color:#fff;cursor:pointer;font-weight:bold}
.dzbleave:hover{filter:brightness(1.15)}

/* 手牌 */
.dzhand{display:flex;flex-wrap:wrap;justify-content:center;gap:2px;padding:6px 12px;min-height:80px;cursor:pointer}
.dzcard{width:48px;height:68px;border-radius:6px;background:linear-gradient(145deg,#fff8e8,#f0e0c0);border:1px solid #ccc;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;font-weight:bold;font-size:16px;position:relative;user-select:none;transition:transform .15s, box-shadow .15s;box-shadow:0 2px 4px rgba(0,0,0,.3)}
.dzcard:hover{transform:translateY(-6px);box-shadow:0 6px 12px rgba(0,0,0,.4)}
.dzcard.dzsel{transform:translateY(-12px);box-shadow:0 8px 16px rgba(52,152,219,.5);border-color:#3498db}
.dzrk{font-size:15px;line-height:1}
.dzst{font-size:14px;line-height:1.2}
/* 大小王 */
.dzjoker{background:linear-gradient(145deg,#ffe4b5,#ffd700);color:#c0392b !important;border-color:#daa520}
.dzjr{color:#c0392b !important}
.dzjb{color:#222 !important}
.dzjoker .dzrk{font-size:13px;display:block;text-align:center;line-height:1.1}

/* 操作按钮 */
.dzbtns{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;padding:6px 0}
.dzbtns button{padding:8px 22px;font-size:15px;border-radius:8px;border:1px solid rgba(255,255,255,.2);cursor:pointer;font-weight:bold;color:#fff;transition:.15s}
.dzbtns button:hover:not(:disabled){filter:brightness(1.15);transform:scale(1.05)}
.dzbtns button:disabled{opacity:.4;cursor:not-allowed}
.dzbgray{background:linear-gradient(180deg,#666,#444)!important}
.dzbgreen{background:linear-gradient(180deg,#27ae60,#1e8449)!important}
.dzblue{background:linear-gradient(180deg,#2980b9,#1a5276)!important}
.dzgold{background:linear-gradient(180deg,#f39c12,#d68910)!important;color:#1a1a1a!important}

/* 等待提示 */
.dzwait{text-align:center;color:#fff;font-size:15px;padding:8px 0;text-shadow:0 0 4px rgba(0,0,0,.8)}

/* 结算面板 */
.dzresult{text-align:center;padding:24px;border-radius:12px;background:rgba(20,12,30,.88);max-width:400px;box-shadow:0 8px 32px rgba(0,0,0,.6);color:#fff;font-size:15px}
.dzwin{border:2px solid #ffd54a}
.dzlose{border:2px solid #95a5a6}
.dzresult div{margin:6px 0;color:#fff;text-shadow:0 0 4px rgba(0,0,0,.6)}
.dzresult .dzbgreen,.dzresult .dzbgray{padding:8px 22px;font-size:15px;border-radius:8px;border:1px solid rgba(255,255,255,.2);cursor:pointer;font-weight:bold;color:#fff}

/* 日志区（右下角小窗） */
/* 地主标签（显示在对应玩家名字旁） */
.dzlltag{display:inline-block;margin-left:5px;padding:1px 7px;font-size:11px;line-height:1.4;font-weight:bold;color:#1a1a1a;background:linear-gradient(180deg,#f0c040,#d68910);border-radius:6px;text-shadow:none;box-shadow:0 0 8px rgba(240,192,64,.5)}
.dzlltag-op{display:block;margin:2px 0;align-self:center;text-align:center}
.dzlogline{padding:1px 0;color:#eee;border-bottom:1px solid rgba(255,255,255,.06);text-shadow:0 0 2px rgba(0,0,0,.6)}

/* ===================== 搜打撤精致化覆盖层（全部 pointer-events:none，绝不拦截操作） ===================== */
/* 受击红屏闪：战斗回合 mDmg>0 时触发边缘红晕 */
#sdaHurtFlash{ position:absolute; inset:0; z-index:7; pointer-events:none; opacity:0;
  background:radial-gradient(ellipse 75% 75% at center, transparent 52%, rgba(255,32,44,.6) 100%); }
#sdaHurtFlash.flash{ animation:sdaHurt .38s ease-out; }
@keyframes sdaHurt{ 0%{opacity:0;} 12%{opacity:1;} 100%{opacity:0;} }
/* 撤离罗盘 / 离屏标记：全屏 2D 画布，层级低于 HUD(z4) 与准星(z4)，不挡 UI 也不挡操作 */
#sdaCompass{ position:absolute; inset:0; z-index:3; pointer-events:none; }
/* 情境操作提示：就近未搜刮据点 / 可撤离时弹出金色提示（精准 / 撤离） */
#sdaPrompt{ position:absolute; left:50%; bottom:58px; transform:translateX(-50%) translateY(8px); z-index:5; pointer-events:none;
  font-size:14px; font-weight:600; color:#1a1206; background:linear-gradient(180deg,#ffe49a,#f5b942);
  padding:8px 18px; border-radius:22px; box-shadow:0 4px 18px rgba(245,185,66,.55); border:1px solid rgba(255,255,255,.4);
  opacity:0; transition:opacity .16s ease, transform .16s ease; white-space:nowrap; }
#sdaPrompt.show{ opacity:1; transform:translateX(-50%) translateY(0); }
#sdaPrompt.evac{ background:linear-gradient(180deg,#a8f0c8,#27c08a); color:#04130d; box-shadow:0 4px 18px rgba(39,192,138,.55); }

/* ============ 修仙肉鸽 · 卡牌 Roguelike ============ */
#ovRogue{top:50%;left:50%;transform:translate(-50%,-50%);width:760px;max-width:calc(95vw / var(--zoom,1));max-height:calc(90vh / var(--zoom,1));overflow:auto;box-sizing:border-box;z-index:51}
#ovRogue .kv{font-size:13px;line-height:1.6;color:var(--text);margin:6px 0}
#ovRogue .kv.ok{color:var(--green);font-weight:bold}
#ovRogue .kv.warn{color:var(--red);font-weight:bold}
#ovRogue .kv.mut{color:var(--text2);font-size:12px}
#ovRogue .btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
#ovRogue button{background:var(--panel2);border:1px solid var(--line);border-radius:5px;padding:6px 12px;cursor:pointer;font-size:13px}
#ovRogue button:hover{background:var(--hot);border-color:var(--border)}
#ovRogue button.pri{background:linear-gradient(180deg,#9a6cff,#6a2fd0);color:#fff;border:1px solid #5a25b0;font-weight:bold}
#ovRogue button.pri:hover{background:linear-gradient(180deg,#a87cff,#7a3fe0)}
#ovRogue button:disabled{opacity:.45;cursor:not-allowed}
/* 地图节点 */
.rgNodes{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.rgNode{padding:10px 14px;border-radius:8px;font-weight:bold;border:2px solid var(--line);background:var(--panel2);cursor:pointer}
.rgNode.c{border-color:#9a6cff}.rgNode.e{border-color:var(--red);color:var(--red)}
.rgNode.b{border-color:var(--gold);background:linear-gradient(180deg,#fff3cf,#ffe39a);font-weight:bold}
.rgNode.s{border-color:var(--green)}.rgNode.r{border-color:#e08a3c}
.rgNode.q{border-color:#5a8fd0}.rgNode.t{border-color:#3c9bc7}
.rgNode:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.15)}
/* 战斗状态条 */
.rgStatus{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0;padding:6px 8px;background:var(--panel2);border-radius:6px;border:1px solid var(--line);font-size:12px}
.rgStatus .rgHp{color:var(--red);font-weight:bold}
.rgStatus .rgBlock{color:#3c7c99}.rgStatus .rgBlock.on{font-weight:bold;color:#2b6cb0}
.rgStatus .rgEnergy{color:var(--gold);font-weight:bold}
.rgStatus .rgStr{color:#b8412f;font-weight:bold}.rgStatus .rgDex{color:#2e7d32;font-weight:bold}
.rgStatus .rgBad{color:var(--red);background:#fdecea;border-radius:4px;padding:1px 5px}
/* 敌人区 */
.rgEnemies{display:flex;flex-wrap:wrap;gap:10px;margin:8px 0;justify-content:center}
.rgEnemy{width:140px;border:2px solid var(--line);border-radius:8px;padding:8px;background:#fff;cursor:pointer;position:relative}
.rgEnemy.sel{border-color:var(--purple);box-shadow:0 0 0 2px rgba(122,47,208,.3)}
.rgEnemy.dead{opacity:.4;filter:grayscale(1);cursor:default}
.rgEName{font-weight:bold;font-size:13px;text-align:center}
.rgPhase{font-size:10px;color:var(--red);margin-left:4px}
.rgEHpBar{height:10px;background:#e7dcc6;border-radius:5px;overflow:hidden;margin:4px 0}
.rgEHpFill{height:100%;background:linear-gradient(90deg,#e05a3c,#c0392b)}
.rgEHp{font-size:12px;text-align:center;color:var(--text2)}
.rgIntent{text-align:center;font-size:13px;font-weight:bold;color:#b8412f;margin-top:2px}
.rgEBad{display:flex;flex-wrap:wrap;gap:3px;justify-content:center;margin-top:3px;font-size:10px}
.rgEBad span{background:#f0ece0;border-radius:3px;padding:0 4px;color:var(--text2)}
/* 手牌 */
.rgHand{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:10px 0;min-height:150px;align-items:flex-end}
.rgCard{width:118px;min-height:150px;border:2px solid var(--line);border-radius:8px;background:linear-gradient(180deg,#fffdf7,#f4ecd8);
  padding:8px;cursor:pointer;display:flex;flex-direction:column;gap:4px;position:relative;transition:transform .08s}
.rgCard:hover{transform:translateY(-4px);box-shadow:0 6px 16px rgba(0,0,0,.18)}
.rgCard.dis{opacity:.5;cursor:not-allowed}
.rgCard.atk{border-color:#c0392b}.rgCard.skl{border-color:#2b6cb0}.rgCard.pow{border-color:#7a2fd0}
.rgCard.ex{background:linear-gradient(180deg,#f3e9d6,#e9dcc0)}
.rgCardCost{position:absolute;top:-8px;left:-8px;width:24px;height:24px;border-radius:50%;background:var(--gold);color:#fff;
  font-weight:bold;text-align:center;line-height:22px;border:2px solid #fff;font-size:13px}
.rgCardName{font-weight:bold;font-size:13px;color:var(--text);text-align:center}
.rgCardType{font-size:10px;color:var(--text2);text-align:center}
.rgCardDesc{font-size:11px;color:#5a4a32;line-height:1.4;flex:1}
.rgSold{text-align:center;color:var(--text2);font-size:12px;padding:4px}
.rgBuy{margin-top:4px;width:100%;background:var(--green);color:#fff;border:1px solid #2e7d32}
.rgBuy:hover{background:#2e7d32}
.rgCards{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:8px 0}
/* 战斗底部 */
.rgFoot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;border-top:1px solid var(--line);padding-top:8px}
/* 法宝/事件/选择 */
.rgRelics{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
.rgRelic{width:200px;border:2px solid var(--gold);border-radius:8px;padding:8px;background:linear-gradient(180deg,#fffaf0,#fff0cf)}
.rgRelic.sold{opacity:.5}.rgRelicName{font-weight:bold;color:var(--gold);margin-bottom:3px}
.rgRelicDesc{font-size:11px;color:var(--text2);line-height:1.4}
.rgChoices{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.rgChoice{text-align:left;padding:10px 12px;font-size:13px}
.rgChoice:hover{background:var(--hot);border-color:var(--border)}
/* 鸿蒙商城 */
.mallBal{font-size:13px;font-weight:bold;margin-left:8px}
.mallList{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.mallRow{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}
.mallName{font-weight:bold;color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mallMeta{font-size:11px;color:var(--text2);min-width:48px;text-align:center}
.mallPrice{font-size:13px;font-weight:bold;min-width:78px;text-align:right}
.mallPriceOk{color:#b388ff}
.mallPriceNo{color:var(--red)}
