/* ===== 修仙层 UI(独立作用域,不污染原版) ===== */
:root{
  --xx-ink:#1a1512; --xx-paper:#e8dcc4; --xx-paper2:#d8c8a8;
  --xx-cinnabar:#b5342a; --xx-gold:#c9a227; --xx-jade:#5a7a6a;
  --xx-panel:rgba(24,19,16,.94);
}
.xx-screen{position:absolute;inset:0;display:flex;flex-direction:column;
  background:linear-gradient(160deg,#221b16 0%,#15110e 60%,#0f0c0a 100%);
  z-index:60;overflow:hidden}
.xx-screen.hidden{display:none}

/* 宣纸纹理底 */
.xx-screen::before{content:'';position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:radial-gradient(circle at 20% 30%,rgba(232,220,196,.05) 0,transparent 60%),
                   radial-gradient(circle at 80% 70%,rgba(181,52,42,.05) 0,transparent 55%)}

.xx-head{display:flex;align-items:center;gap:10px;padding:14px 16px 10px;
  border-bottom:1px solid rgba(201,162,39,.25);flex-shrink:0;position:relative}
.xx-head h2{margin:0;font-size:19px;letter-spacing:3px;color:var(--xx-paper);
  font-family:"Songti SC","STSong",serif;font-weight:400}
.xx-realm{margin-left:auto;font-size:13px;color:var(--xx-gold);letter-spacing:1px;
  padding:3px 10px;border:1px solid rgba(201,162,39,.4);border-radius:2px;white-space:nowrap}
.xx-back{background:none;border:1px solid rgba(232,220,196,.3);color:var(--xx-paper);
  width:32px;height:32px;border-radius:2px;font-size:17px;cursor:pointer;flex-shrink:0;
  display:flex;align-items:center;justify-content:center}
.xx-back:active{background:rgba(232,220,196,.12)}

/* 标签页 */
.xx-tabs{display:flex;gap:2px;padding:0 12px;flex-shrink:0;
  border-bottom:1px solid rgba(201,162,39,.15);overflow-x:auto;scrollbar-width:none}
.xx-tabs::-webkit-scrollbar{display:none}
.xx-tab{background:none;border:none;color:rgba(232,220,196,.55);padding:11px 14px;
  font-size:14px;cursor:pointer;white-space:nowrap;letter-spacing:2px;
  border-bottom:2px solid transparent;transition:.2s;font-family:inherit}
.xx-tab.on{color:var(--xx-gold);border-bottom-color:var(--xx-cinnabar)}
.xx-tab:active{color:var(--xx-paper)}

.xx-body{flex:1;overflow-y:auto;padding:16px;-webkit-overflow-scrolling:touch;position:relative}
.xx-body::-webkit-scrollbar{width:3px}
.xx-body::-webkit-scrollbar-thumb{background:rgba(201,162,39,.3)}

/* 通用卡片 */
.xx-card{background:rgba(232,220,196,.05);border:1px solid rgba(232,220,196,.12);
  border-radius:3px;padding:14px;margin-bottom:12px;position:relative;overflow:hidden}
.xx-card::after{content:'';position:absolute;top:0;left:0;width:3px;height:100%;
  background:linear-gradient(180deg,var(--xx-cinnabar),transparent)}
.xx-label{font-size:11px;color:rgba(232,220,196,.5);letter-spacing:2px;margin-bottom:6px}
.xx-val{font-size:16px;color:var(--xx-paper)}
.xx-big{font-size:26px;color:var(--xx-gold);font-family:"Songti SC",serif;letter-spacing:1px}
.xx-dim{color:rgba(232,220,196,.45);font-size:12px;line-height:1.7}
.xx-cinnabar{color:var(--xx-cinnabar)}
.xx-gold{color:var(--xx-gold)}

/* 进度条 */
.xx-bar{height:7px;background:rgba(0,0,0,.45);border-radius:4px;overflow:hidden;margin-top:8px;
  border:1px solid rgba(232,220,196,.1)}
.xx-bar i{display:block;height:100%;border-radius:4px;transition:width .5s ease;
  background:linear-gradient(90deg,var(--xx-cinnabar),var(--xx-gold))}
.xx-bar.jade i{background:linear-gradient(90deg,#3d6b57,var(--xx-jade))}

/* 网格 */
.xx-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.xx-grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}

/* 神通格 */
.xx-art{background:rgba(232,220,196,.05);border:1px solid rgba(232,220,196,.12);
  border-radius:3px;padding:11px 9px;text-align:center;cursor:pointer;transition:.2s;position:relative}
.xx-art:active{transform:scale(.97);background:rgba(232,220,196,.1)}
.xx-art.max{border-color:rgba(201,162,39,.55);background:rgba(201,162,39,.08)}
.xx-art.fused{border-color:var(--xx-cinnabar);background:rgba(181,52,42,.1)}
.xx-art.lock{opacity:.42}
.xx-art-n{font-size:14px;color:var(--xx-paper);margin-bottom:3px;letter-spacing:1px}
.xx-art-lv{font-size:10px;color:var(--xx-gold)}
.xx-art-b{font-size:20px;font-weight:600;color:var(--xx-paper);letter-spacing:1px}
.xx-tag{position:absolute;top:5px;right:5px;font-size:9px;padding:1px 5px;border-radius:2px;
  background:var(--xx-cinnabar);color:#fff;letter-spacing:1px}
.xx-tag.gold{background:var(--xx-gold);color:var(--xx-ink)}

/* 地图 */
.xx-map{position:relative;width:100%;aspect-ratio:1/1.15;margin:0 auto;max-width:420px}
.xx-node{position:absolute;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;font-size:17px;cursor:pointer;
  border:1.5px solid rgba(232,220,196,.35);background:rgba(24,19,16,.92);transition:.25s;
  box-shadow:0 2px 8px rgba(0,0,0,.5)}
.xx-node.visited{border-color:rgba(201,162,39,.6);background:rgba(60,48,30,.92)}
.xx-node.cur{border-color:var(--xx-cinnabar);box-shadow:0 0 0 3px rgba(181,52,42,.28),0 2px 8px rgba(0,0,0,.5);
  transform:scale(1.16)}
.xx-node.locked{opacity:.3;cursor:default}
.xx-node:active:not(.locked){transform:scale(.93)}
.xx-node-lb{position:absolute;top:100%;left:50%;transform:translateX(-50%);margin-top:3px;
  font-size:9px;color:rgba(232,220,196,.65);white-space:nowrap;letter-spacing:1px}
.xx-edge{position:absolute;height:1px;background:rgba(232,220,196,.2);transform-origin:0 50%;pointer-events:none}

/* 人物条目 */
.xx-ch{display:flex;gap:12px;align-items:flex-start;padding:12px;
  border:1px solid rgba(232,220,196,.12);border-radius:3px;margin-bottom:10px;
  background:rgba(232,220,196,.04)}
.xx-ch img{width:58px;height:78px;object-fit:cover;border-radius:2px;flex-shrink:0;
  border:1px solid rgba(201,162,39,.3)}
.xx-ch h4{margin:0 0 4px;font-size:15px;color:var(--xx-paper);letter-spacing:1px;font-weight:400}
.xx-ch .t{font-size:10px;color:var(--xx-gold);letter-spacing:1px;margin-bottom:5px}
.xx-ch p{margin:0;font-size:12px;color:rgba(232,220,196,.62);line-height:1.65}

/* 称号 */
.xx-title-i{display:flex;align-items:center;gap:10px;padding:10px 12px;margin-bottom:8px;
  border:1px solid rgba(232,220,196,.12);border-radius:3px;background:rgba(232,220,196,.04);
  font-size:13px}
.xx-title-i.on{border-color:rgba(201,162,39,.5);background:rgba(201,162,39,.08)}
.xx-title-i.off{opacity:.5}
.xx-seal{width:24px;height:24px;border:1px solid var(--xx-cinnabar);border-radius:2px;
  display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--xx-cinnabar);
  flex-shrink:0;font-family:serif}
.xx-title-i.on .xx-seal{background:rgba(181,52,42,.2);color:var(--xx-gold);border-color:var(--xx-gold)}

/* 按钮 */
.xx-btn{display:block;width:100%;padding:13px;margin-bottom:9px;background:rgba(232,220,196,.06);
  border:1px solid rgba(232,220,196,.22);color:var(--xx-paper);border-radius:3px;font-size:15px;
  cursor:pointer;letter-spacing:3px;font-family:"Songti SC",serif;transition:.2s}
.xx-btn:active{background:rgba(232,220,196,.14);transform:scale(.985)}
.xx-btn.main{background:linear-gradient(135deg,rgba(181,52,42,.85),rgba(120,32,26,.85));
  border-color:var(--xx-cinnabar);color:#fff}
.xx-btn:disabled{opacity:.35;cursor:default}

/* ===== 回合制战斗 ===== */
.xx-duel{position:absolute;inset:0;z-index:80;overflow:hidden;background:#0b0908}
.xx-duel.hidden{display:none}
.xx-duel-bg{position:absolute;inset:0;background-size:cover;background-position:center;
  opacity:0;transition:opacity .8s ease}
.xx-duel-bg.on{opacity:.42}
.xx-duel-vig{position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse at center,transparent 35%,rgba(0,0,0,.82) 100%)}

/* 立绘 · 水墨立轴(宣纸底做成卷轴,而非硬边方块) */
.xx-fighter{position:absolute;bottom:19%;width:49%;max-width:290px;
  opacity:0;transform:translateY(30px) scale(.97);transition:.75s cubic-bezier(.2,.7,.3,1);
  display:flex;flex-direction:column;filter:drop-shadow(0 10px 26px rgba(0,0,0,.75))}
.xx-fighter.l{left:0;transform-origin:50% 100%;z-index:2}
.xx-fighter.r{right:0;transform-origin:50% 100%;z-index:1}
.xx-fighter.on{opacity:1}
.xx-fighter.l.on{transform:translateY(0) rotate(-1.6deg) scale(1)}
.xx-fighter.r.on{transform:translateY(0) rotate(1.6deg) scale(1)}

/* 上下轴杆 */
.xx-rod{flex-shrink:0;height:11px;border-radius:3px;position:relative;z-index:2;
  background:linear-gradient(180deg,#7a5636 0%,#4a3120 45%,#2e1d10 100%);
  box-shadow:0 1px 5px rgba(0,0,0,.7),inset 0 1px 0 rgba(201,162,39,.32)}
.xx-rod::before{content:'';position:absolute;left:8%;right:8%;top:50%;height:1px;
  transform:translateY(-50%);background:rgba(201,162,39,.3)}

/* 画心:宣纸 */
.xx-face{position:relative;overflow:hidden;background:#e8dcc4;
  border-left:1px solid rgba(60,42,26,.35);border-right:1px solid rgba(60,42,26,.35)}
.xx-face::after{content:'';position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse at 50% 40%,transparent 55%,rgba(90,70,45,.28) 100%)}
.xx-face img{width:100%;display:block;
  -webkit-mask-image:linear-gradient(180deg,#000 70%,rgba(0,0,0,.5) 88%,transparent 100%);
  mask-image:linear-gradient(180deg,#000 70%,rgba(0,0,0,.5) 88%,transparent 100%)}
.xx-fighter.r .xx-face{box-shadow:inset 0 0 42px rgba(0,0,0,.34)}
.xx-fighter.r .xx-face img{filter:hue-rotate(-6deg) saturate(.9) contrast(1.04)}
.xx-fighter.hurt .xx-face{animation:xxHurt .42s}
@keyframes xxHurt{0%,100%{filter:none}
  38%{filter:brightness(1.75) sepia(.85) hue-rotate(-28deg) saturate(2.4)}}

/* 立轴题名 */
.xx-nameplate{position:absolute;left:50%;transform:translateX(-50%);bottom:13%;
  font-size:11px;letter-spacing:4px;color:var(--xx-paper);white-space:nowrap;
  text-shadow:0 2px 8px #000,0 0 16px rgba(0,0,0,.9);opacity:0;transition:.7s;z-index:6}
.xx-fighter.on+.xx-nameplate,.xx-nameplate.on{opacity:1}

/* 对白 */
.xx-box{position:absolute;left:3%;right:3%;bottom:2.5%;background:rgba(12,9,8,.95);
  border:1px solid rgba(201,162,39,.4);border-radius:3px;padding:13px 16px;min-height:104px;
  backdrop-filter:blur(3px);box-shadow:0 -4px 24px rgba(0,0,0,.5)}
.xx-box .who{font-size:12px;color:var(--xx-gold);letter-spacing:3px;margin-bottom:8px;
  display:flex;align-items:center;gap:8px}
.xx-box .who::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,rgba(201,162,39,.4),transparent)}
.xx-box .txt{font-size:15px;line-height:1.8;color:var(--xx-paper);min-height:54px;
  font-family:"Songti SC",serif;letter-spacing:.5px}
.xx-box .txt .cursor{display:inline-block;width:6px;height:15px;background:var(--xx-gold);
  margin-left:2px;animation:xxBlink .7s steps(2) infinite;vertical-align:middle}
@keyframes xxBlink{50%{opacity:0}}

/* 血条 */
.xx-hp{position:absolute;top:5.5%;display:flex;align-items:center;gap:7px;z-index:3;max-width:44%}
.xx-hp.l{left:4%}
.xx-hp.r{right:4%;flex-direction:row-reverse}
.xx-hp-n{font-size:11.5px;color:var(--xx-paper);letter-spacing:.5px;white-space:nowrap;
  text-shadow:0 1px 5px #000,0 0 12px #000;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.xx-hp-b{flex:1;min-width:52px;height:5px;background:rgba(0,0,0,.65);border:1px solid rgba(0,0,0,.5);
  border-radius:3px;overflow:hidden}
.xx-hp-b i{display:block;height:100%;background:linear-gradient(90deg,#7a2018,var(--xx-cinnabar));
  transition:width .45s ease}
.xx-hp.r .xx-hp-b i{background:linear-gradient(90deg,var(--xx-cinnabar),#7a2018)}

/* 技能栏 · 横排浮层,压住立轴下缘(读作 UI 而非贴图) */
.xx-skills{position:absolute;left:3%;right:3%;bottom:calc(2.5% + 140px);
  display:flex;gap:7px;justify-content:center;flex-wrap:wrap;
  z-index:8;opacity:0;pointer-events:none;transition:.35s}
.xx-skills.on{opacity:1;pointer-events:auto}
.xx-sk{flex:1 1 0;min-width:88px;max-width:150px;
  background:rgba(10,8,7,.97);border:1px solid rgba(201,162,39,.5);border-radius:3px;
  padding:8px 6px;cursor:pointer;text-align:center;transition:.18s;font-family:inherit;
  color:var(--xx-paper);box-shadow:0 3px 14px rgba(0,0,0,.75)}
.xx-sk:active:not(:disabled){background:linear-gradient(135deg,rgba(181,52,42,.92),rgba(120,32,26,.92));
  border-color:var(--xx-gold);transform:scale(.95)}
.xx-sk:disabled{opacity:.42;cursor:default}
.xx-sk-n{font-size:13px;letter-spacing:1px;font-family:"Songti SC",serif}
.xx-sk-c{font-size:9.5px;color:var(--xx-gold);margin-top:2px;letter-spacing:.5px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 回合提示 */
.xx-turn{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:5;
  font-size:38px;letter-spacing:12px;color:var(--xx-paper);opacity:0;
  text-shadow:0 4px 22px rgba(0,0,0,.95);font-family:"Songti SC",serif;white-space:nowrap}
.xx-turn.on{animation:xxTurn 1.15s ease forwards}
@keyframes xxTurn{
  0%{opacity:0;transform:translate(-50%,-50%) scale(1.35);filter:blur(9px)}
  28%{opacity:1;transform:translate(-50%,-50%) scale(1);filter:blur(0)}
  72%{opacity:1}
  100%{opacity:0;transform:translate(-50%,-50%) scale(.95)}
}
.xx-turn.enemy{color:var(--xx-cinnabar)}

/* 战败选择 */
.xx-defeat{position:absolute;inset:0;z-index:90;background:rgba(6,4,3,.96);
  display:flex;align-items:center;justify-content:center;padding:6%;overflow-y:auto}
.xx-defeat.hidden{display:none}
.xx-defeat-in{max-width:400px;width:100%;text-align:center}
.xx-defeat h3{font-size:27px;letter-spacing:8px;color:var(--xx-cinnabar);margin:0 0 6px;
  font-family:"Songti SC",serif;font-weight:400}
.xx-defeat .sub{font-size:12px;color:rgba(232,220,196,.5);letter-spacing:2px;margin-bottom:22px}
.xx-chio{margin-bottom:10px;padding:13px;text-align:left;border:1px solid rgba(232,220,196,.2);
  border-radius:3px;background:rgba(232,220,196,.05);cursor:pointer;transition:.2s}
.xx-chio:active{background:rgba(232,220,196,.13);transform:scale(.985)}
.xx-chio .h{font-size:15px;color:var(--xx-paper);letter-spacing:2px;margin-bottom:5px;
  display:flex;justify-content:space-between;align-items:center}
.xx-chio .h em{font-style:normal;font-size:10px;color:var(--xx-cinnabar);
  border:1px solid rgba(181,52,42,.5);padding:1px 6px;border-radius:2px}
.xx-chio .d{font-size:11.5px;color:rgba(232,220,196,.55);line-height:1.65}

/* 提示气泡 */
.xx-toast{position:absolute;left:50%;top:15%;transform:translateX(-50%);z-index:95;
  background:rgba(12,9,8,.95);border:1px solid rgba(201,162,39,.5);border-radius:3px;
  padding:11px 20px;color:var(--xx-paper);font-size:14px;letter-spacing:2px;
  opacity:0;pointer-events:none;transition:.4s;white-space:nowrap;max-width:88%;
  font-family:"Songti SC",serif}
.xx-toast.on{opacity:1;transform:translateX(-50%) translateY(-8px)}

/* ===== 营地 · 篝火 ===== */
.xx-fire{position:relative;height:170px;border-radius:3px;overflow:hidden;
  border:1px solid rgba(201,162,39,.3);margin-bottom:12px;
  background:radial-gradient(circle at 50% 118%,rgba(255,150,50,.32),transparent 62%),#0a0807}
.xx-fire.on{background:radial-gradient(circle at 50% 118%,rgba(255,180,70,.5),transparent 62%),#0a0807}
.xx-fire::after{content:'';position:absolute;left:50%;bottom:8%;width:64px;height:30px;
  transform:translateX(-50%);background:radial-gradient(ellipse at bottom,rgba(255,140,40,.9),rgba(255,80,20,.25) 60%,transparent 74%);
  filter:blur(2px)}
.xx-fire.on::after{animation:xxFlame 2.3s ease-in-out infinite alternate}
@keyframes xxFlame{0%{transform:translateX(-50%) scale(.9);opacity:.78}
  100%{transform:translateX(-50%) scale(1.16);opacity:1}}
.xx-fire-t{position:absolute;top:11px;left:0;right:0;text-align:center;font-size:19px;
  letter-spacing:6px;color:var(--xx-gold);font-family:"Songti SC",serif}
.xx-fire-s{position:absolute;bottom:10px;left:0;right:0;text-align:center;font-size:11px;
  color:rgba(232,220,196,.6);letter-spacing:2px}
.xx-bar.s{height:4px;margin:8px 0 0}

/* 源石加减 */
.xx-stones{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.xx-stone{flex:1 1 calc(33.33% - 6px);min-width:88px;border:1px solid rgba(232,220,196,.2);
  border-radius:3px;padding:8px 6px;text-align:center;cursor:pointer;transition:.18s;
  background:rgba(0,0,0,.28);position:relative}
.xx-stone:active{transform:scale(.95);background:rgba(232,220,196,.14)}
.xx-stone.has{border-color:rgba(201,162,39,.42)}
.xx-stone-n{font-size:12px;margin-bottom:3px}
.xx-stone-d{font-size:10px;color:var(--xx-gold)}
.xx-stone-c{font-size:15px;font-weight:600;color:var(--xx-paper)}
.xx-stone-m{position:absolute;top:2px;right:4px;font-size:9px;color:rgba(232,220,196,.4)}
.xx-numrow{display:flex;align-items:center;gap:8px;margin:10px 0}
.xx-numrow .xx-val{flex:1;text-align:center;font-size:24px;color:var(--xx-gold);
  font-family:"Songti SC",serif;min-width:52px}
.xx-nbtn{width:36px;height:36px;border:1px solid rgba(201,162,39,.4);background:rgba(0,0,0,.3);
  color:var(--xx-paper);border-radius:3px;font-size:18px;cursor:pointer;flex-shrink:0;font-family:inherit}
.xx-nbtn:active{background:rgba(201,162,39,.24)}

/* 族人 */
.xx-mem{display:flex;align-items:center;gap:10px;padding:10px 12px;margin-bottom:7px;
  border:1px solid rgba(232,220,196,.12);border-radius:3px;background:rgba(232,220,196,.04)}
.xx-mem .a{flex:1}
.xx-mem .n{font-size:14px;color:var(--xx-paper);letter-spacing:1px}
.xx-mem .t{font-size:10.5px;color:rgba(232,220,196,.5);margin-top:2px}
.xx-mem .act{display:flex;gap:5px;flex-shrink:0}
.xx-mbtn{background:rgba(201,162,39,.12);border:1px solid rgba(201,162,39,.42);color:var(--xx-gold);
  border-radius:2px;padding:5px 9px;font-size:11px;cursor:pointer;font-family:inherit;white-space:nowrap}
.xx-mbtn:active{background:rgba(201,162,39,.3)}

/* 昼夜条 */
.xx-daybar{height:5px;border-radius:3px;overflow:hidden;margin:8px 0;
  background:linear-gradient(90deg,#3a4a6a,#c9a227 35%,#e0904a 62%,#2a2440)}
.xx-daynow{position:relative;font-size:12px;color:var(--xx-paper);letter-spacing:2px;text-align:center}

/* ===== 流浪商人 · 侧边闪卡 ===== */
.xm-card{position:absolute;top:16%;right:0;width:min(310px,84%);z-index:70;
  transform:translateX(118%);transition:transform .45s cubic-bezier(.2,.8,.25,1);
  background:linear-gradient(165deg,rgba(26,20,16,.985),rgba(12,9,8,.99));
  border:1px solid rgba(201,162,39,.55);border-right:none;
  border-radius:4px 0 0 4px;padding:13px;
  box-shadow:-8px 6px 32px rgba(0,0,0,.72),inset 0 1px 0 rgba(201,162,39,.18);
  max-height:72vh;display:flex;flex-direction:column}
.xm-card.on{transform:translateX(0)}
.xm-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,transparent,var(--xx-cinnabar),transparent)}
.xm-head{display:flex;align-items:center;gap:9px;padding-bottom:9px;
  border-bottom:1px solid rgba(201,162,39,.22)}
.xm-seal{width:30px;height:30px;border:1px solid var(--xx-cinnabar);border-radius:2px;
  display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--xx-cinnabar);
  font-family:serif;flex-shrink:0}
.xm-title{font-size:16px;color:var(--xx-gold);letter-spacing:3px;font-family:"Songti SC",serif}
.xm-sub{font-size:9.5px;color:rgba(232,220,196,.42);letter-spacing:3px;margin-top:2px}
.xm-x{margin-left:auto;background:none;border:none;color:rgba(232,220,196,.5);
  font-size:22px;cursor:pointer;padding:0 3px;line-height:1}
.xm-line{font-size:12px;color:rgba(232,220,196,.7);line-height:1.7;margin:10px 0;
  padding:8px 10px;background:rgba(232,220,196,.05);border-radius:2px;
  border-left:2px solid rgba(181,52,42,.5)}
.xm-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:6px;min-height:0}
.xm-list::-webkit-scrollbar{width:2px}
.xm-list::-webkit-scrollbar-thumb{background:rgba(201,162,39,.3)}
.xm-item{padding:9px 11px;border:1px solid rgba(232,220,196,.14);border-radius:3px;
  cursor:pointer;transition:.16s;background:rgba(232,220,196,.035);position:relative}
.xm-item:active{background:rgba(181,52,42,.24);transform:scale(.985)}
.xm-n{font-size:14px;letter-spacing:1px;font-family:"Songti SC",serif;margin-bottom:2px}
.xm-d{font-size:10.5px;color:rgba(232,220,196,.48);line-height:1.5}
.xm-p{font-size:11px;color:var(--xx-gold);margin-top:4px;letter-spacing:.5px}
.xm-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;
  margin-top:10px;padding-top:9px;border-top:1px solid rgba(201,162,39,.2)}
.xm-foot span{font-size:11px;color:rgba(232,220,196,.55)}
.xm-foot button{background:none;border:1px solid rgba(232,220,196,.26);color:rgba(232,220,196,.8);
  border-radius:2px;padding:6px 12px;font-size:11px;cursor:pointer;font-family:inherit}
.xm-foot button:active{background:rgba(232,220,196,.13)}
.xm-toast{position:absolute;top:52px;left:50%;transform:translateX(-50%);font-size:12.5px;
  letter-spacing:2px;padding:6px 14px;background:rgba(8,6,5,.96);border:1px solid rgba(201,162,39,.5);
  border-radius:2px;opacity:0;transition:.3s;pointer-events:none;white-space:nowrap;z-index:5}
.xm-toast.on{opacity:1;transform:translateX(-50%) translateY(-6px)}

/* 离线收益弹层 */
.xx-off{position:absolute;inset:0;z-index:75;background:rgba(6,4,3,.9);
  display:flex;align-items:center;justify-content:center;padding:7%}
.xx-off.hidden{display:none}
.xx-off-in{max-width:360px;width:100%;text-align:center}
.xx-off h3{font-size:22px;letter-spacing:6px;color:var(--xx-gold);margin:0 0 4px;
  font-family:"Songti SC",serif;font-weight:400}
.xx-off .sub{font-size:11px;color:rgba(232,220,196,.45);letter-spacing:2px;margin-bottom:20px}

/* ===== 开局仪式 ===== */
.xx-ritual{position:absolute;inset:0;z-index:200;background:
  radial-gradient(circle at 50% 30%,#2a2018 0%,#140f0c 55%,#0a0706 100%);
  display:flex;align-items:center;justify-content:center;overflow:hidden}
.xx-ritual.hidden{display:none}
.rt-sky{position:absolute;inset:0;pointer-events:none;opacity:.6;
  background:radial-gradient(circle at 20% 30%,rgba(232,220,196,.06),transparent 50%),
             radial-gradient(circle at 80% 70%,rgba(181,52,42,.05),transparent 50%)}
.rt-body{position:relative;width:100%;max-width:420px;padding:20px;
  display:flex;flex-direction:column;align-items:center;gap:6px;max-height:100%}

/* 卡通小灵 */
.rt-char{position:relative;width:150px;height:190px;flex-shrink:0;margin-bottom:6px;
  animation:rtFloat 3.4s ease-in-out infinite}
@keyframes rtFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
.rt-head{position:absolute;left:50%;top:8px;transform:translateX(-50%);
  width:96px;height:96px;border-radius:50%;
  background:radial-gradient(circle at 38% 30%,#fff6e8,#f0dcc4 70%);
  box-shadow:0 6px 22px rgba(0,0,0,.55),inset 0 -6px 14px rgba(190,150,120,.28);z-index:3}
.rt-hair{position:absolute;left:50%;top:-6px;transform:translateX(-50%);
  width:118px;height:60px;border-radius:60px 60px 20px 20px;z-index:4;
  background:linear-gradient(180deg,#2b2028,#1a1218);
  box-shadow:0 3px 12px rgba(0,0,0,.5)}
.rt-hair::before{content:'';position:absolute;left:50%;top:-14px;transform:translateX(-50%);
  width:34px;height:26px;border-radius:50% 50% 30% 30%;
  background:linear-gradient(180deg,#3a2c36,#1a1218)}
.rt-ear{position:absolute;top:36px;width:16px;height:22px;border-radius:50%;
  background:#f0dcc4;z-index:2}
.rt-ear.l{left:-9px}.rt-ear.r{right:-9px}
.rt-eye{position:absolute;top:40px;width:15px;height:19px;border-radius:50%;
  background:#2a1c20;z-index:5;overflow:hidden}
.rt-eye.l{left:20px}.rt-eye.r{right:20px}
.rt-eye i{position:absolute;left:50%;top:2px;transform:translateX(-50%);
  width:5px;height:6px;border-radius:50%;background:#fff}
.rt-char.blink .rt-eye{animation:rtBlink .18s 2}
@keyframes rtBlink{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.08)}}
.rt-blush{position:absolute;top:62px;width:16px;height:9px;border-radius:50%;
  background:rgba(226,120,110,.42);z-index:5;filter:blur(1px)}
.rt-blush.l{left:13px}.rt-blush.r{right:13px}
.rt-mouth{position:absolute;left:50%;top:66px;transform:translateX(-50%);
  width:12px;height:8px;border-bottom:2.5px solid #a8514a;border-radius:0 0 12px 12px;z-index:5}
.rt-body-c{position:absolute;left:50%;top:96px;transform:translateX(-50%);
  width:92px;height:84px;border-radius:44px 44px 16px 16px;z-index:2;
  background:linear-gradient(180deg,#e8dcc4,#c8b494);
  box-shadow:0 6px 18px rgba(0,0,0,.45)}
.rt-body-c::after{content:'';position:absolute;left:50%;top:8px;transform:translateX(-50%);
  width:20px;height:20px;border-radius:50%;background:rgba(181,52,42,.28)}
.rt-arm{position:absolute;top:104px;width:18px;height:56px;border-radius:12px;z-index:1;
  background:linear-gradient(180deg,#e0d0b4,#bfa88a)}
.rt-arm.l{left:34px;transform:rotate(12deg);animation:rtArm 2.6s ease-in-out infinite}
.rt-arm.r{right:34px;transform:rotate(-12deg)}
@keyframes rtArm{0%,100%{transform:rotate(12deg)}50%{transform:rotate(24deg)}}

/* 对白 */
.rt-box{width:100%;background:rgba(12,9,8,.93);border:1px solid rgba(201,162,39,.4);
  border-radius:4px;padding:16px 18px;box-shadow:0 8px 30px rgba(0,0,0,.6)}
.rt-who{font-size:12px;color:var(--xx-gold);letter-spacing:4px;margin-bottom:9px;
  display:flex;align-items:center;gap:8px}
.rt-who::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,rgba(201,162,39,.4),transparent)}
.rt-ask{font-size:15.5px;line-height:1.85;color:var(--xx-paper);white-space:pre-line;
  font-family:"Songti SC",serif;min-height:56px}
.rt-input{margin-top:12px}
.rt-input input{width:100%;background:rgba(0,0,0,.42);border:1px solid rgba(201,162,39,.42);
  border-radius:3px;padding:12px;color:var(--xx-paper);font-size:16px;font-family:inherit;
  letter-spacing:2px;text-align:center;outline:none}
.rt-input input:focus{border-color:var(--xx-cinnabar);box-shadow:0 0 0 2px rgba(181,52,42,.2)}
.rt-hint{font-size:11.5px;color:rgba(232,220,196,.42);margin-top:8px;text-align:center;letter-spacing:1px}
.rt-opts{margin-top:14px;display:flex;flex-direction:column;gap:8px}
.rt-opt{background:rgba(232,220,196,.06);border:1px solid rgba(232,220,196,.24);
  color:var(--xx-paper);border-radius:3px;padding:12px;font-size:14.5px;cursor:pointer;
  letter-spacing:2px;font-family:inherit;transition:.18s;text-align:center}
.rt-opt:active{background:rgba(181,52,42,.7);transform:scale(.98)}
.rt-opt:last-child{border-color:rgba(181,52,42,.45);color:#e8a0a0}
.rt-foot{margin-top:14px}
.rt-go{width:100%;background:linear-gradient(135deg,rgba(181,52,42,.9),rgba(120,32,26,.9));
  border:1px solid var(--xx-cinnabar);color:#fff;border-radius:3px;padding:13px;
  font-size:15px;letter-spacing:5px;cursor:pointer;font-family:inherit}

/* ===== 贴边选项卡 ===== */
.bd-hug{position:absolute;right:3%;bottom:16%;width:min(250px,72%);z-index:76;
  background:rgba(14,11,9,.97);border:1px solid rgba(232,196,150,.55);border-radius:4px;
  padding:13px;box-shadow:0 8px 26px rgba(0,0,0,.7);
  opacity:0;transform:translateX(120%);transition:.42s cubic-bezier(.2,.8,.25,1);pointer-events:none}
.bd-hug.on{opacity:1;transform:translateX(0);pointer-events:auto}
.bd-line{font-size:13.5px;color:#f0dcc4;line-height:1.75;margin-bottom:11px;
  font-family:"Songti SC",serif;letter-spacing:.5px}
.bd-hug-opt{display:block;width:100%;background:rgba(232,220,196,.07);
  border:1px solid rgba(232,220,196,.22);color:var(--xx-paper);border-radius:3px;
  padding:9px;margin-bottom:6px;font-size:13px;cursor:pointer;font-family:inherit;
  letter-spacing:1px;transition:.16s}
.bd-hug-opt:active{background:rgba(181,52,42,.7);transform:scale(.98)}

/* 自说自话气泡 */
.bd-bub{position:absolute;left:50%;top:13%;transform:translateX(-50%) translateY(-8px);
  max-width:78%;background:rgba(12,9,8,.94);border:1px solid rgba(201,162,39,.5);
  border-radius:16px;padding:9px 17px;color:var(--xx-paper);font-size:13.5px;
  letter-spacing:1px;z-index:74;opacity:0;pointer-events:none;transition:.4s;
  font-family:"Songti SC",serif;text-align:center;line-height:1.6}
.bd-bub.on{opacity:1;transform:translateX(-50%) translateY(0)}
.bd-bub::after{content:'';position:absolute;left:50%;bottom:-6px;transform:translateX(-50%);
  border:7px solid transparent;border-top-color:rgba(12,9,8,.94);border-bottom:none}
.bd-bub.ok{border-color:rgba(201,162,39,.7);color:#f2e2c0}
.bd-bub.dark{border-color:rgba(181,52,42,.85);color:#f0b8b0;
  box-shadow:0 0 24px rgba(181,52,42,.3)}

/* ===== 怨灵闪屏特写(不打断) ===== */
.bd-flash{position:absolute;inset:0;z-index:72;pointer-events:none;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  opacity:0;transition:opacity .18s}
.bd-flash.on{opacity:1}
.bd-flash::before{content:'';position:absolute;inset:0;
  background:linear-gradient(100deg,rgba(10,7,6,0) 0%,rgba(20,6,6,.9) 40%,
    rgba(181,52,42,.5) 50%,rgba(20,6,6,.9) 60%,rgba(10,7,6,0) 100%);
  animation:bdSweep .5s ease-out}
@keyframes bdSweep{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
.bd-flash-art{font-size:130px;color:rgba(181,52,42,.32);font-family:"Songti SC",serif;
  letter-spacing:20px;text-shadow:0 0 40px rgba(181,52,42,.6);line-height:1}
.bd-flash-t{font-size:13px;color:rgba(232,220,196,.6);letter-spacing:8px;margin-top:4px}
.bd-flash-s{font-size:19px;color:var(--xx-paper);letter-spacing:4px;margin-top:14px;
  font-family:"Songti SC",serif;text-shadow:0 2px 16px #000}
.bd-flash-c{font-size:30px;color:var(--xx-cinnabar);letter-spacing:6px;margin-top:12px;
  font-family:"Songti SC",serif;text-shadow:0 0 26px rgba(181,52,42,.8),0 2px 8px #000}

/* ===== 篝火护栏 ===== */
.bd-ward{position:absolute;left:50%;bottom:18%;transform:translateX(-50%);z-index:70;
  background:rgba(10,8,7,.9);border:1px solid rgba(201,162,39,.45);border-radius:3px;
  padding:7px 15px;text-align:center;opacity:0;transition:.4s;pointer-events:none}
.bd-ward.on{opacity:1}
.bd-ward-t{font-size:12.5px;color:var(--xx-gold);letter-spacing:4px}
.bd-ward-s{font-size:10.5px;color:rgba(232,220,196,.55);margin-top:3px;letter-spacing:1px}

/* 怨灵 HUD */
.bd-ghost-hud{position:absolute;left:3%;top:5.5%;z-index:70;max-width:60%;
  background:rgba(10,8,7,.88);border:1px solid rgba(181,52,42,.5);border-radius:3px;
  padding:6px 11px;font-size:11.5px;color:#e8b0a8;letter-spacing:1px;opacity:0;
  transition:.4s;pointer-events:none;line-height:1.5}
.bd-ghost-hud.on{opacity:1}
.bd-ghost-hud b{color:var(--xx-cinnabar);font-weight:400}

.xx-sk{position:relative}
.xx-sk.sup{border-color:var(--xx-cinnabar);background:linear-gradient(135deg,rgba(60,20,16,.97),rgba(24,12,10,.97))}
.xx-sk-tag{position:absolute;top:-7px;left:6px;font-size:9px;padding:1px 5px;border-radius:2px;
  background:var(--xx-cinnabar);color:#fff;letter-spacing:1px}

/* ===== 领地建造格 ===== */
.bd-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.bd-slot{aspect-ratio:1/1.15;border-radius:3px;border:1px dashed rgba(232,220,196,.25);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  cursor:pointer;transition:.18s;background:rgba(0,0,0,.28);position:relative;padding:5px}
.bd-slot.empty{color:rgba(232,220,196,.4);font-size:22px;border-style:dashed}
.bd-slot.empty:active{border-color:var(--xx-gold);background:rgba(201,162,39,.1)}
.bd-slot.lock{opacity:.28;cursor:default}
.bd-slot-i{font-size:22px;line-height:1}
.bd-slot-n{font-size:11px;color:var(--xx-paper);letter-spacing:1px}
.bd-slot-w{font-size:9.5px;color:rgba(232,220,196,.5)}
.bd-slot-r{position:absolute;top:3px;right:4px;font-size:9px;color:var(--xx-gold);
  background:rgba(0,0,0,.6);padding:1px 4px;border-radius:2px}
.bd-inv{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.bd-inv-i{background:rgba(232,220,196,.05);border:1px solid rgba(232,220,196,.2);
  border-radius:3px;padding:8px 3px;font-size:17px;cursor:pointer;font-family:inherit;
  color:var(--xx-paper);position:relative;transition:.16s;line-height:1.4}
.bd-inv-i:active{transform:scale(.94);background:rgba(201,162,39,.14)}
.bd-inv-i span{font-size:9.5px;display:block;margin-top:2px;letter-spacing:.5px}
.bd-inv-i em{position:absolute;top:2px;right:4px;font-size:9px;font-style:normal;
  color:var(--xx-gold)}

/* ===== 图鉴条目 ===== */
.xx-dxx{display:flex;gap:11px;padding:11px;margin-bottom:9px;
  border:1px solid rgba(232,220,196,.12);border-radius:3px;background:rgba(232,220,196,.035)}
.xx-dxx.mine{border-color:var(--xx-cinnabar);background:rgba(181,52,42,.09)}
.xx-dxx img{width:64px;height:86px;object-fit:cover;border-radius:2px;flex-shrink:0;
  border:1px solid rgba(201,162,39,.28)}
.xx-dxx-b{flex:1;min-width:0}
.xx-dxx-n{font-size:14px;color:var(--xx-paper);letter-spacing:1.5px;margin-bottom:4px;
  display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.xx-dxx-n span{font-size:9.5px;color:var(--xx-gold);border:1px solid rgba(201,162,39,.35);
  padding:1px 5px;border-radius:2px;letter-spacing:1px}
.xx-dxx-n em{font-style:normal;font-size:9.5px;color:#fff;background:var(--xx-cinnabar);
  padding:1px 5px;border-radius:2px}
.xx-dxx-d{font-size:12px;color:rgba(232,220,196,.72);line-height:1.65;margin-bottom:5px}
.xx-dxx-b2{font-size:10.5px;color:rgba(232,220,196,.48);line-height:1.6}
.xx-dxx-t{font-size:10.5px;color:var(--xx-cinnabar);margin-top:4px;letter-spacing:.5px}
.xx-node-mine,.xx-node-tp{position:absolute;top:-6px;right:-6px;width:19px;height:19px;
  border-radius:50%;font-size:10px;display:flex;align-items:center;justify-content:center;
  cursor:pointer;z-index:5;border:1px solid;background:#1a1512}
.xx-node-mine{color:var(--xx-gold);border-color:rgba(201,162,39,.7)}
.xx-node-tp{color:#7ec8b0;border-color:rgba(126,200,176,.7);top:auto;bottom:-6px;right:auto;left:-6px}

/* ===== 地图迷雾 ===== */
.xx-node.fog{border-style:dotted;opacity:.55;background:rgba(0,0,0,.6)}
.xx-node.fog::after{content:'';position:absolute;inset:-4px;border-radius:50%;
  background:radial-gradient(circle,rgba(80,80,100,.35),transparent 70%);pointer-events:none}
.xx-fogq{font-size:20px;color:rgba(232,220,196,.4);font-family:serif}
.xx-node-st{position:absolute;top:-5px;left:-5px;width:18px;height:18px;border-radius:50%;
  background:var(--xx-cinnabar);color:#fff;font-size:11px;display:flex;align-items:center;
  justify-content:center;z-index:6;animation:xxPulse 1.6s ease-in-out infinite}
@keyframes xxPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.25)}}
.xx-node-lg{position:absolute;bottom:-4px;right:-4px;font-size:11px;color:var(--xx-gold);z-index:6}

/* ===== 叙事弹层 ===== */
.xx-storycard{position:absolute;left:5%;right:5%;top:16%;z-index:85;
  background:linear-gradient(160deg,rgba(24,19,15,.98),rgba(12,9,7,.99));
  border:1px solid rgba(201,162,39,.5);border-radius:4px;padding:18px;
  box-shadow:0 12px 40px rgba(0,0,0,.8);animation:xxScIn .5s cubic-bezier(.2,.8,.25,1)}
@keyframes xxScIn{0%{opacity:0;transform:translateY(-14px) scale(.97)}
  100%{opacity:1;transform:translateY(0) scale(1)}}
.xx-storycard.legend{border-color:rgba(181,52,42,.55)}
.xx-sc-img{width:96px;height:128px;margin:0 auto 12px;border-radius:2px;overflow:hidden;
  border:1px solid rgba(201,162,39,.35)}
.xx-sc-img img{width:100%;height:100%;object-fit:cover}
.xx-sc-n{font-size:17px;color:var(--xx-gold);letter-spacing:5px;margin-bottom:10px;
  font-family:"Songti SC",serif;text-align:center}
.xx-sc-t{font-size:14px;color:var(--xx-paper);line-height:1.85;font-family:"Songti SC",serif}
.xx-sc-r{font-size:12px;color:var(--xx-jade);line-height:1.7;margin-top:9px;
  padding-top:9px;border-top:1px solid rgba(232,220,196,.13)}
.xx-sc-go{font-size:12px;color:var(--xx-cinnabar);margin-top:8px;letter-spacing:1px}
.xx-sc-x{margin-top:14px;text-align:center;background:rgba(201,162,39,.12);
  border:1px solid rgba(201,162,39,.4);border-radius:2px;padding:9px;
  color:var(--xx-gold);font-size:13px;letter-spacing:4px;cursor:pointer}
.xx-sc-x:active{background:rgba(201,162,39,.28)}
.xx-dxx.unseen img{filter:grayscale(1) brightness(.35);position:relative}
.xx-dxx.unseen .xx-dxx-b{opacity:.55}

/* ---- 仙人墓 · 地下层 ---- */
.xx-map .xx-node.tomb{width:34px;height:34px;font-size:12px}
.xx-map .xx-node.tomb .xx-fogq{color:rgba(154,146,133,.55);font-size:13px}
.xx-story-t{font-size:14px;color:var(--xx-paper);line-height:2;
  font-family:"Songti SC",serif;letter-spacing:.6px}
.xx-story-b{font-size:13px;color:var(--xx-jade);line-height:1.9;
  padding-left:11px;border-left:2px solid rgba(74,157,224,.42);
  font-family:"Songti SC",serif}
