/* ============================================================
 * 《八荒问道》 水墨仙侠风格
 * ============================================================ */
:root {
  --gold: #d4af37;
  --gold-light: #f0d878;
  --ink: #1c1a17;
  --paper: #f5efe0;
  --paper-dark: #e8dfc8;
  --red: #b03a2e;
  --green: #4a7c59;
  --blue: #3a5a8c;
  --purple: #6b4a8c;
  --shadow: 0 4px 20px rgba(0,0,0,.45);
}
* { margin:0; padding:0; box-sizing:border-box; }
html,body {
  font-family: "Kaiti SC","STKaiti","KaiTi","FZKai-Z03S","SimSun","Songti SC",serif;
  letter-spacing:.4px;

body {
  font-family: "Songti SC","STSong","SimSun","Noto Serif SC",serif;
  background: #12100c;
  color: #2b2620;
  user-select:none;
}
button { font-family:inherit; cursor:pointer; }
input { font-family:inherit; }

/* ============ 通用按钮 ============ */
.btn {
  background: linear-gradient(180deg,#f7f0dd,#e6d9b8);
  border:1px solid #b8a678;
  border-radius:6px;
  color:#3a3226;
  padding:7px 16px;
  font-size:15px;
  transition: all .15s;
  box-shadow: 0 2px 6px rgba(0,0,0,.25);
}
.btn:hover:not(:disabled) { transform:translateY(-1px); box-shadow:0 4px 10px rgba(0,0,0,.35); filter:brightness(1.05); }
.btn:disabled { opacity:.62; cursor:not-allowed; filter:saturate(.7); }
.btn.gold { background:linear-gradient(180deg,#f2d98a,#c9a227); border-color:#8f6f14; color:#3c2d05; }
.btn.danger { background:linear-gradient(180deg,#b04838,#7c2418); border-color:#5c1a10; color:#fff; text-shadow:0 1px 2px rgba(0,0,0,.5); }
.btn.gray { background:linear-gradient(180deg,#d8d2c4,#b0a996); color:#3a342a; }
.btn.tiny { padding:3px 9px; font-size:13px; border-radius:4px; }
.btn-gold {
  background:linear-gradient(180deg,#f6e2a0,#c99f2a);
  border:2px solid #8f6f14;
  border-radius:8px;
  color:#3a2c05;
  font-size:18px;
  font-weight:bold;
  padding:10px 34px;
  letter-spacing:4px;
  box-shadow:0 4px 14px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.5);
  transition:all .15s;
}
.btn-gold { position:relative; overflow:hidden; }
.btn-gold::after {
  content:""; position:absolute; top:-40%; left:-60%; width:40%; height:180%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.5),transparent);
  transform:skewX(-20deg); animation:btnSheen 3.6s ease-in-out infinite;
}
@keyframes btnSheen {
  0%,55% { left:-70%; }
  85%,100% { left:130%; }
}
.btn-gold:hover { transform:translateY(-2px); box-shadow:0 6px 20px rgba(0,0,0,.6); filter:brightness(1.08); }
.btn-gold.big { font-size:22px; padding:14px 44px; }

/* ============ 屏幕容器 ============ */
.screen { display:none; position:fixed; inset:0; z-index:1; }
.screen.active { display:block; }

/* ============ Toast ============ */
#toast-box { position:fixed; top:20px; left:50%; transform:translateX(-50%); z-index:999; display:flex; flex-direction:column; gap:8px; align-items:center; pointer-events:none; }
.toast {
  background:rgba(28,24,18,.92); color:#f0e6c8; border:1px solid #8f6f14;
  padding:10px 26px; border-radius:8px; font-size:15px; letter-spacing:1px;
  opacity:0; transform:translateY(-12px); transition:all .3s; box-shadow:var(--shadow);
}
.toast.show { opacity:1; transform:translateY(0); }
.toast.err { border-color:#a83c2c; background:rgba(60,20,16,.94); }
.toast.good { border-color:#4a7c59; }

/* ============ 弹窗 ============ */
.modal-overlay {
  position:fixed; inset:0; background:rgba(10,8,5,.65); z-index:800;
  display:flex; align-items:center; justify-content:center; animation:fadeIn .2s;
}
.modal-box {
  position:relative;
  background:linear-gradient(180deg,#2b2518,#1c1711);
  border:2px solid #8f6f14; border-radius:10px;
  padding:22px 26px; max-width:560px; width:92%;
  max-height:86vh; overflow-y:auto;
  color:#e8dcc0;
  box-shadow:0 12px 40px rgba(0,0,0,.75), inset 0 0 50px rgba(0,0,0,.35);
  animation:popIn .22s;
}
.modal-box::before {
  content:""; position:absolute; inset:4px; border:1px solid rgba(140,105,45,.4); border-radius:8px;
  box-shadow:inset 0 0 18px rgba(240,200,90,.1); pointer-events:none;
}
.modal-box::after {
  content:""; position:absolute; top:-2px; left:14%; right:14%; height:3px;
  background:linear-gradient(90deg,transparent,#c9a227,transparent);
  animation:modalAura 3s ease-in-out infinite; pointer-events:none;
}
@keyframes modalAura { 0%,100%{opacity:.35} 50%{opacity:.9} }
.modal-box h3 { color:#f0d878; font-size:20px; text-align:center; margin-bottom:12px; letter-spacing:2px; text-shadow:0 1px 3px rgba(0,0,0,.6); }
.modal-box h4 { color:#e8d4a0; margin:14px 0 8px; }
.modal-text { line-height:1.8; margin:6px 0 14px; font-size:15px; color:#e8dab8; }
.modal-actions { display:flex; gap:10px; justify-content:center; margin-top:14px; flex-wrap:wrap; }
.modal-actions.column { flex-direction:column; }
.text-gold { color:#f0d878; }
.text-warn { color:#f0a85a; }
@keyframes fadeIn { from{opacity:0} to{opacity:1} }
@keyframes popIn { from{transform:scale(.92); opacity:0} to{transform:scale(1); opacity:1} }

/* ============ 标题画面 ============ */
.title-bg { position:absolute; inset:0; background-size:cover; background-position:center; }
.title-mask { position:absolute; inset:0; background:linear-gradient(180deg,rgba(8,6,4,.6) 0%,rgba(8,6,4,.78) 55%,rgba(8,6,4,.88) 100%); }
.title-aura { position:absolute; inset:0; overflow:hidden; z-index:1; pointer-events:none; }
.title-aura i {
  position:absolute; border-radius:50%; filter:blur(60px); opacity:.35;
  animation:auraDrift 14s ease-in-out infinite alternate;
}
.title-aura i:nth-child(1) { width:340px; height:340px; left:8%; top:12%; background:radial-gradient(circle,rgba(240,216,120,.5),transparent 65%); }
.title-aura i:nth-child(2) { width:420px; height:420px; right:6%; top:30%; background:radial-gradient(circle,rgba(120,200,255,.32),transparent 65%); animation-delay:-5s; }
.title-aura i:nth-child(3) { width:300px; height:300px; left:42%; bottom:-8%; background:radial-gradient(circle,rgba(200,150,255,.28),transparent 65%); animation-delay:-9s; }
@keyframes auraDrift {
  0% { transform:translate3d(0,0,0) scale(1); }
  100% { transform:translate3d(40px,-30px,0) scale(1.15); }
}
.title-content { position:relative; z-index:2; height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:18px; }
.title-logo {
  font-size:86px; letter-spacing:18px;
  background:linear-gradient(180deg,#fff6d8 10%,#f5d97a 45%,#d9a832 80%,#f8e8a0 100%);
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; color:#f5d97a;
  filter:drop-shadow(0 0 22px rgba(240,200,90,.55)) drop-shadow(0 3px 8px rgba(0,0,0,.9));
  animation:floatTitle 3.4s ease-in-out infinite, logoBreath 3.4s ease-in-out infinite;
}
@keyframes logoBreath {
  0%,100% { filter:drop-shadow(0 0 18px rgba(240,200,90,.4)) drop-shadow(0 3px 8px rgba(0,0,0,.9)); }
  50% { filter:drop-shadow(0 0 34px rgba(255,225,130,.75)) drop-shadow(0 3px 8px rgba(0,0,0,.9)); }
}
.title-logo.end { font-size:64px; color:#e8b4a8; text-shadow:0 0 30px rgba(200,60,40,.5), 0 4px 10px rgba(0,0,0,.8); }
@keyframes floatTitle { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-8px)} }
.title-sub { color:#f2e6c4; font-size:20px; letter-spacing:10px; text-shadow:0 1px 3px rgba(0,0,0,.95),0 3px 10px rgba(0,0,0,.7); }
.title-btns { display:flex; flex-direction:column; gap:14px; margin-top:14px; }
.title-stats { color:#efe3bd; font-size:15px; margin-top:10px; text-shadow:0 1px 3px rgba(0,0,0,.95),0 2px 8px rgba(0,0,0,.7); }
.title-version { position:absolute; bottom:18px; color:rgba(242,232,200,.92); font-size:13px; letter-spacing:2px; text-shadow:0 1px 3px rgba(0,0,0,.95); }

/* ============ 角色创建 ============ */
.creation-bg { position:absolute; inset:0; overflow:hidden; background:linear-gradient(180deg,#15110c,#2e2718 40%,#15110c); }
.creation-bg::before, .creation-bg::after {
  content:""; position:absolute; border-radius:50%; filter:blur(90px); pointer-events:none;
  animation:creationAura 13s ease-in-out infinite alternate;
}
.creation-bg::before { width:46vw; height:46vw; left:-12vw; top:-14vw; background:radial-gradient(circle,rgba(240,216,120,.22),transparent 65%); }
.creation-bg::after { width:52vw; height:52vw; right:-16vw; bottom:-16vw; background:radial-gradient(circle,rgba(120,180,255,.15),transparent 65%); animation-delay:-6.5s; }
@keyframes creationAura { 0%{transform:translate3d(0,0,0) scale(1)} 100%{transform:translate3d(4vw,-3vw,0) scale(1.12)} }
.creation-wrap {
  position:relative; z-index:2; max-width:880px; margin:0 auto; padding:26px 30px 40px;
  height:100%; overflow-y:auto;
  background:linear-gradient(180deg,rgba(36,30,19,.88),rgba(22,18,12,.92));
  border-left:1px solid rgba(200,170,90,.32); border-right:1px solid rgba(200,170,90,.32);
  box-shadow:inset 0 0 70px rgba(0,0,0,.45), 0 0 40px rgba(0,0,0,.5);
}
.screen-title {
  text-align:center; font-size:34px; letter-spacing:8px;
  background:linear-gradient(180deg,#fff6d8 8%,#f0d878 50%,#d9a832 92%);
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; color:#f0d878;
  filter:drop-shadow(0 2px 5px rgba(0,0,0,.85));
  animation:titlePulse 3.2s ease-in-out infinite;
}
@keyframes titlePulse { 0%,100%{filter:drop-shadow(0 2px 5px rgba(0,0,0,.8))} 50%{filter:drop-shadow(0 2px 12px rgba(240,200,90,.5))} }
.screen-hint { color:#e8dab2; text-align:center; margin:8px 0 18px; font-size:14px; line-height:1.7; text-shadow:0 1px 3px rgba(0,0,0,.8); }
.cr-section { margin-bottom:20px; }
.cr-label { color:#f2e4b4; font-size:17px; margin-bottom:8px; letter-spacing:2px; border-left:3px solid #c9a227; padding-left:8px; text-shadow:0 1px 3px rgba(0,0,0,.7); }
.cr-hint { color:#eadca8; font-size:13px; text-shadow:0 1px 2px rgba(0,0,0,.6); }
.cr-name-row { display:flex; gap:10px; }
.cr-name-row input {
  flex:1; background:#f5efe0; border:1px solid #b8a678; border-radius:6px;
  padding:10px 14px; font-size:17px; color:#2b2620;
}
.cr-gender { display:flex; gap:10px; margin-bottom:12px; }
.cr-portraits { display:flex; gap:14px; }
.cr-portrait { border:2px solid transparent; border-radius:10px; padding:4px; cursor:pointer; transition:all .15s; }
.cr-portrait.selected { border-color:#f0d878; box-shadow:0 0 14px rgba(240,200,90,.5); }
.cr-portrait img { border-radius:8px; display:block; }
.portrait-img { object-fit:cover; border-radius:8px; }
.portrait-ph { background:#3a3226; color:#cbbf9a; display:flex; align-items:center; justify-content:center; border-radius:8px; font-size:13px; }
.cr-personality { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.cr-origins { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.cr-card {
  position:relative; overflow:hidden;
  background:linear-gradient(165deg,#f5ecd6 0%,#ead9b2 55%,#e2cfa4 100%);
  border:1px solid #b89a5e; border-radius:10px; padding:10px 12px; cursor:pointer;
  transition:all .18s;
  box-shadow:0 2px 8px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.6);
}
.cr-card::before { content:""; position:absolute; inset:3px; border:1px dashed rgba(140,105,45,.35); border-radius:7px; pointer-events:none; }
.cr-card:hover { transform:translateY(-2px); border-color:#c9a227; box-shadow:0 6px 16px rgba(0,0,0,.45), 0 0 14px rgba(240,200,90,.35); }
.cr-card.selected {
  border-color:#a67c14; background:linear-gradient(165deg,#f8e6ac,#ecd07a 55%,#dfbe58);
  box-shadow:0 0 18px rgba(240,200,90,.6), 0 4px 12px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.7);
}
.cr-card-name { position:relative; color:#4a3210; font-size:16px; margin-bottom:4px; letter-spacing:2px; }
.cr-card-desc { position:relative; color:#4a3a22; font-size:12px; line-height:1.5; }
.cr-card-bonus { position:relative; color:#7a5c1a; font-size:11px; margin-top:4px; }
.cr-talents { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.cr-talent {
  position:relative; overflow:hidden;
  background:linear-gradient(170deg,#f4ead1 0%,#e8d5ab 60%,#ddc696 100%);
  border:1px solid #b89a5e; border-radius:10px; padding:12px 8px 10px; cursor:pointer;
  transition:all .18s; text-align:center;
  box-shadow:0 2px 8px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.65);
}
.cr-talent::before { content:""; position:absolute; inset:3px; border:1px dashed rgba(140,105,45,.3); border-radius:8px; pointer-events:none; }
.cr-talent::after {
  content:""; position:absolute; top:-50%; left:-80%; width:45%; height:200%;
  background:linear-gradient(100deg,transparent,rgba(255,250,225,.75),transparent);
  transform:skewX(-18deg); transition:left .6s ease; pointer-events:none;
}
.cr-talent:hover { transform:translateY(-3px); border-color:#c9a227; box-shadow:0 8px 18px rgba(0,0,0,.45), 0 0 16px rgba(240,200,90,.4); }
.cr-talent:hover::after { left:140%; }
.cr-talent.selected {
  border-color:#a67c14; background:linear-gradient(170deg,#f8e6ac,#ecd07a 60%,#dfbe58);
  animation:selectedBreath 2.2s ease-in-out infinite;
}
.cr-talent.disabled { opacity:.42; filter:grayscale(.6); }
.cr-talent-icon { display:inline-block; font-size:26px; animation:crIconFloat 3s ease-in-out infinite; filter:drop-shadow(0 2px 4px rgba(90,60,10,.35)); }
.cr-talent-name { color:#4a3210; font-size:15px; margin:4px 0 2px; letter-spacing:1px; }
.cr-talent-desc { color:#4a3a22; font-size:12px; line-height:1.5; }
.cr-talent-rarity { color:#7a5c1a; font-size:12px; margin-top:4px; font-weight:bold; }
@keyframes crIconFloat { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-4px)} }
@keyframes selectedBreath {
  0%,100% { box-shadow:0 0 16px rgba(240,200,90,.5), 0 4px 12px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.75); }
  50% { box-shadow:0 0 28px rgba(240,210,110,.85), 0 4px 12px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.75); }
}
.cr-reroll { margin-top:10px; text-align:right; }
.cr-root-row { display:flex; align-items:center; gap:10px; margin-bottom:8px; color:#e0d4ae; }
.cr-root-name { width:70px; }
.cr-root-bar { flex:1; height:14px; background:rgba(0,0,0,.35); border-radius:7px; overflow:hidden; }
.cr-root-fill { height:100%; transition:width .2s; }
.cr-root-val { width:24px; text-align:center; }
.cr-actions { display:flex; justify-content:space-between; margin-top:24px; }

/* ============ 主界面布局 ============ */
.main-bg { position:absolute; inset:0; background-size:cover; background-position:center; transition:background-image .5s; }
.cloud-layer { position:absolute; inset:0; overflow:hidden; z-index:2; pointer-events:none; }
.cloud-layer i { position:absolute; border-radius:50%; filter:blur(70px); opacity:.16; mix-blend-mode:screen; }
.cloud-a { width:52vw; height:24vh; left:-14vw; top:16vh; background:radial-gradient(ellipse,rgba(255,250,235,.9),transparent 68%); animation:cloudDrift 52s linear infinite; }
.cloud-b { width:60vw; height:30vh; right:-18vw; top:52vh; background:radial-gradient(ellipse,rgba(255,245,225,.8),transparent 68%); animation:cloudDrift 70s linear infinite reverse; }
.cloud-c { width:38vw; height:18vh; left:30vw; top:78vh; background:radial-gradient(ellipse,rgba(235,245,255,.75),transparent 68%); animation:cloudDrift 44s linear infinite; }
@keyframes cloudDrift {
  0% { transform:translate3d(0,0,0); }
  50% { transform:translate3d(7vw,-2vh,0); }
  100% { transform:translate3d(-4vw,3vh,0); }
}
.main-mask { position:absolute; inset:0; background:linear-gradient(90deg,rgba(8,6,4,.9) 0%,rgba(8,6,4,.62) 38%,rgba(8,6,4,.55) 100%); }
.side-panel {
  position:absolute; top:0; left:0; bottom:0; width:300px; z-index:3;
  background:linear-gradient(180deg,rgba(24,20,14,.95),rgba(18,15,10,.97));
  border-right:1px solid rgba(200,170,90,.32);
  display:flex; flex-direction:column;
  box-shadow:inset -1px 0 0 rgba(240,200,90,.1), inset 0 0 34px rgba(0,0,0,.5);
}
.side-panel::before {
  content:""; position:absolute; top:0; left:0; right:0; height:2px;
  background:linear-gradient(90deg,transparent,rgba(240,200,90,.7),transparent);
  animation:sideGlow 4s ease-in-out infinite;
}
@keyframes sideGlow { 0%,100%{opacity:.35} 50%{opacity:1} }
.side-head { padding:18px 16px 12px; text-align:center; border-bottom:1px solid rgba(200,170,90,.2); }
.side-head img { border:2px solid rgba(200,170,90,.5); box-shadow:0 4px 14px rgba(0,0,0,.6); }
.side-name { color:#f0e6c8; font-size:20px; margin-top:8px; letter-spacing:2px; }
.gender-m { color:#7ab8e8; } .gender-f { color:#e88ab0; }
.side-realm { color:#f0d878; font-size:15px; margin-top:4px; }
.side-sub { color:#c4b489; font-size:12px; margin-top:4px; line-height:1.6; }
.side-body { flex:1; overflow-y:auto; padding:12px 16px; }
.side-bar { margin-bottom:8px; }
.side-stats { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; margin:10px 0; }
.stat-row { background:rgba(245,239,224,.06); border-radius:6px; padding:6px 8px; text-align:center; }
.stat-row span { display:block; color:#c4b489; font-size:11px; }
.stat-row b { color:#f0e6c8; font-size:15px; }
.side-cult { margin:8px 0; }
.cult-title { color:#d9c99e; font-size:13px; margin-bottom:4px; }
.cult-val { color:#f0d878; }
.side-life { color:#d9c99e; font-size:13px; margin:8px 0; }
.side-stones { color:#d9c99e; font-size:14px; margin:6px 0; }
.side-art { color:#d9c99e; font-size:13px; margin:6px 0; }
.side-dao { color:#c9d9f8; font-size:13px; margin:6px 0; }
.side-dao .text-danger { color:#f08a6a; }
/* v2.3 NPC 支线 */
.story-ask { color:#f0d878; font-size:14px; margin:10px 0 4px; line-height:1.7; }
.story-cond { color:#9fd8c8; font-size:12.5px; margin:6px 0; line-height:1.8; }
.side-extra { color:#cfc094; font-size:12px; line-height:1.8; margin-top:8px; border-top:1px dashed rgba(200,170,90,.25); padding-top:8px; }
.side-foot { display:flex; border-top:1px solid rgba(200,170,90,.25); }
.side-btn { flex:1; background:none; border:none; color:#d9c99e; padding:11px 0; font-size:14px; transition:all .15s; }
.side-btn:hover { background:rgba(240,200,90,.1); color:#f0d878; }

/* 顶部快捷栏（储物袋/功法/日志/推演，任何窗口下都可见） */
.quick-bar {
  display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end;
  gap:6px; padding:10px 26px 0;
}
.q-btn {
  background:linear-gradient(180deg,#3d3526,#2b2418);
  border:1px solid #7a6846; color:#eee2c2; border-radius:8px;
  padding:5px 12px; font-size:13px; letter-spacing:.5px; transition:all .15s;
}
.q-btn:hover { border-color:#c9a227; color:#f0d878; transform:translateY(-1px); box-shadow:0 4px 12px rgba(0,0,0,.4); }
.q-btn.gold { background:linear-gradient(180deg,#4a3c1c,#3a2e14); border-color:#c9a227; }

/* 主区域 */
.main-panel { position:absolute; top:0; right:0; bottom:0; left:300px; z-index:3; display:flex; flex-direction:column; }
.main-loc-head { padding:18px 26px 10px; }
.main-loc-name { color:#f8efd2; font-size:26px; letter-spacing:4px; text-shadow:0 2px 4px rgba(0,0,0,.95),0 4px 14px rgba(0,0,0,.8); }
.main-realm { color:#f4dd8f; font-size:14px; margin-top:2px; text-shadow:0 1px 3px rgba(0,0,0,.95),0 3px 8px rgba(0,0,0,.7); }
.main-loc-desc { color:#eee2c2; font-size:14px; margin-top:6px; text-shadow:0 1px 3px rgba(0,0,0,.95),0 3px 10px rgba(0,0,0,.75); line-height:1.6; }
.main-time { color:#bcd9ff; font-size:12.5px; margin-top:2px; letter-spacing:1px; text-shadow:0 1px 3px rgba(0,0,0,.9); }
.main-time b { color:#e8f2ff; }
.time-hint { color:#9fb8d8; margin-left:8px; }
.time-ambient { color:#cfc094; font-style:italic; margin-left:10px; }
/* 昼夜/季节氛围 */
#screen-main.dp-ye .main-mask { background:rgba(8,10,28,.28); }
#screen-main.dp-ye .cloud-layer { opacity:.5; }
#screen-main.dp-hun .main-mask { background:rgba(120,60,20,.12); }
#screen-main.se-dong .main-mask { background:rgba(140,170,220,.08); }
.main-nav { flex:1; overflow-y:auto; padding:10px 26px; }
.state-block { margin-bottom:14px; background:rgba(14,11,7,.78); border:1px solid rgba(210,180,100,.4); border-radius:10px; padding:10px 14px; }
.state-block.current { border-color:#c9a227; box-shadow:0 0 12px rgba(200,150,40,.25); }
.state-block.locked { opacity:.6; }
.state-name { color:#e8d9a8; font-size:16px; margin-bottom:8px; display:flex; align-items:center; gap:10px; }
.state-lock { color:#f08a6a; font-size:12px; text-shadow:0 1px 2px rgba(0,0,0,.6); }
.state-locs { display:flex; flex-wrap:wrap; gap:8px; }
.nav-loc {
  background:linear-gradient(180deg,#3d3526,#2b2418);
  border:1px solid #7a6846; color:#eee2c2; border-radius:8px;
  padding:8px 14px; font-size:14px; transition:all .15s;
  box-shadow:0 2px 8px rgba(0,0,0,.45);
}
.nav-loc:hover:not(:disabled) { border-color:#c9a227; color:#f0d878; transform:translateY(-1px); }
.nav-loc.here { background:linear-gradient(180deg,#4a3c1c,#3a2e14); border-color:#f0d878; color:#ffe9a8; box-shadow:0 0 10px rgba(240,200,90,.3); }
.nav-loc:disabled { opacity:.62; cursor:not-allowed; filter:saturate(.7); }
.main-npcs { display:flex; gap:10px; padding:6px 26px 10px; flex-wrap:wrap; }
.mini-npc { display:flex; flex-direction:column; align-items:center; gap:4px; cursor:pointer; transition:all .15s; background:rgba(12,9,6,.75); border:1px solid rgba(210,180,100,.35); border-radius:10px; padding:8px; }
.mini-npc:hover { border-color:#c9a227; transform:translateY(-2px); }
.mini-npc span { color:#e8d9a8; font-size:12px; }
.mini-npc img { border-radius:6px; }
.no-npc { color:#b3a37d; font-size:13px; padding:8px; }
.main-log {
  height:140px; overflow-y:auto; margin:0 26px 10px; padding:10px 14px;
  background:rgba(10,8,5,.85); border:1px solid rgba(210,180,100,.35); border-radius:10px;
}
.log-line { color:#d8cfa8; font-size:13px; line-height:1.7; padding:1px 0; }
.log-line.good { color:#9cd89c; }
.log-line.bad { color:#e89a8a; }
.log-line.gold { color:#f0d878; }
.log-line.cult { color:#8ab8e8; }
.log-line.warn { color:#f0a85a; }
.log-line.talk { color:#d8cfa8; font-style:italic; }
.action-bar {
  display:flex; gap:6px; padding:10px 26px 14px; flex-wrap:wrap; align-content:flex-start;
  background:linear-gradient(180deg,rgba(10,8,5,.72),rgba(10,8,5,.92));
}
.action-btn {
  background:linear-gradient(180deg,#3a3226,#2a241a);
  border:1px solid #6a5a3c; color:#e8d9a8; border-radius:7px;
  padding:7px 10px; font-size:13.5px; letter-spacing:.5px; transition:all .15s;
}
.action-btn .bi { margin-right:2px; }
@media (max-width:700px) {
  .action-bar { gap:4px; padding-left:14px; padding-right:14px; }
  .action-btn { padding:6px 8px; font-size:13px; }
  .action-btn .bi { display:none; }
  .quick-bar { padding-left:14px; padding-right:14px; }
}
.action-btn:hover { border-color:#c9a227; color:#f0d878; transform:translateY(-1px); box-shadow:0 4px 12px rgba(0,0,0,.4); }
.action-btn.gold { background:linear-gradient(180deg,#4a3c1c,#3a2e14); border-color:#c9a227; }
.action-btn.pulse { animation:pulse 1.2s infinite; }
@keyframes pulse { 0%,100%{box-shadow:0 0 6px rgba(240,200,90,.3)} 50%{box-shadow:0 0 18px rgba(240,200,90,.8)} }

/* ============ 属性条 ============ */
.bar { position:relative; height:18px; background:rgba(0,0,0,.45); border-radius:9px; overflow:hidden; border:1px solid rgba(255,255,255,.12); }
.bar-fill { position:absolute; inset:0 auto 0 0; transition:width .3s; }
.bar span { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-size:11px; color:#fff; text-shadow:0 1px 2px rgba(0,0,0,.8); z-index:2; }
.bar.hp .bar-fill { background:linear-gradient(90deg,#a83228,#d45548); }
.bar.mp .bar-fill { background:linear-gradient(90deg,#2a4a78,#4a78b8); }
.bar.cult .bar-fill { background:linear-gradient(90deg,#8a6a1a,#d4af37); }
.bar.favor .bar-fill { background:linear-gradient(90deg,#8a5a8c,#c88ad0); }

/* ============ 战斗 ============ */
.combat-bg { position:absolute; inset:0; background-size:cover; background-position:center; }
.combat-mask { position:absolute; inset:0; background:rgba(8,6,4,.62); }
.combat-wrap { position:relative; z-index:2; height:100%; display:flex; flex-direction:column; padding:20px 30px; }
.combat-top { flex:1; display:grid; grid-template-columns:1fr 1.2fr 1fr; gap:20px; align-items:start; }
.combat-enemy, .combat-player { text-align:center; }
.combat-enemy-figure img, .combat-player-figure img { border:2px solid rgba(200,170,90,.5); box-shadow:0 8px 24px rgba(0,0,0,.7); border-radius:12px; }
.combat-enemy-name { color:#f0d878; font-size:20px; margin:10px 0 6px; text-shadow:0 2px 6px rgba(0,0,0,.8); }
.combat-player-name { color:#f5e6b8; font-size:18px; margin:8px 0 6px; text-shadow:0 2px 6px rgba(0,0,0,.8); }
.realm-tag { font-size:12px; color:#d9c99e; border:1px solid rgba(200,170,90,.4); padding:1px 6px; border-radius:4px; margin-left:6px; }
.combat-status { min-height:20px; margin-top:6px; }
.status-buff { color:#9cd89c; font-size:13px; margin:0 4px; }
.status-bad { color:#e89a8a; font-size:13px; margin:0 4px; }
.combat-round { color:#d9c99e; font-size:12px; margin-top:4px; }
.combat-log {
  height:300px; overflow-y:auto; padding:12px 16px;
  background:rgba(14,11,7,.75); border:1px solid rgba(200,170,90,.3); border-radius:10px;
}
.clog { color:#d8cfa8; font-size:14px; line-height:1.8; padding:1px 0; }
.clog.good { color:#9cd89c; }
.clog.bad { color:#e89a8a; }
.clog.heal { color:#8ad8b0; }
.clog.crit { color:#f0a85a; font-weight:bold; }
.clog.warn { color:#f0d878; }
.clog.info { color:#b8c8e8; }
.combat-bottom { padding-top:14px; }
.combat-actions { display:flex; gap:10px; justify-content:center; }
.combat-actions .btn { font-size:17px; padding:10px 22px; }
.combat-skills, .combat-items { display:none; flex-wrap:wrap; gap:8px; justify-content:center; margin-top:10px; }
.combat-skills.show, .combat-items.show { display:flex; }
.skill-btn { position:relative; }
.skill-mp { font-size:11px; color:#4a78b8; margin-left:4px; }
.skill-cd { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; background:rgba(0,0,0,.6); color:#fff; font-size:18px; border-radius:6px; }

/* ============ NPC ============ */
.npc-list { display:flex; flex-direction:column; gap:8px; max-height:60vh; overflow-y:auto; }
.npc-row { display:flex; gap:12px; align-items:center; padding:8px; border:1px solid rgba(200,170,90,.25); border-radius:10px; cursor:pointer; transition:all .15s; background:rgba(245,239,224,.05); }
.npc-row:hover { border-color:#c9a227; background:rgba(240,200,90,.1); }
.npc-info { flex:1; }
.npc-name { color:#f0e6c8; font-size:16px; }
.npc-rel { font-size:12px; color:#c88ad0; margin-left:6px; }
.npc-rel.dao { color:#e88ab0; }
.npc-sub { color:#c4b489; font-size:12px; margin:3px 0; line-height:1.5; }
.npc-favor { margin-top:4px; }
.npc-favor.big { margin:10px 0; }
.npc-detail { text-align:center; }
.npc-detail h3 { margin-top:10px; }
.npc-persona { font-size:13px; color:#8ab8e8; font-weight:normal; letter-spacing:1px; }
.npc-status { font-size:11px; color:#9fd8ff; margin-left:6px; letter-spacing:.5px; }
.npc-line { color:#e8dab8; font-style:italic; font-size:14px; margin:10px auto 4px; max-width:480px; line-height:1.7; }
.npc-wish { color:#f0d878; font-size:13px; margin-top:8px; }
.npc-secret { color:#c88ad0; font-size:13px; margin-top:6px; }
.npc-taboo { color:#f0a85a; font-size:13px; margin-top:6px; }
.npc-life { color:#9fd8ff; font-size:12px; margin-top:4px; }
.npc-away-title { color:#c4b489; font-size:14px; margin:12px 0 6px; letter-spacing:1px; }
.gift-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.gift-item { background:rgba(245,239,224,.08); border:1px solid rgba(200,170,90,.3); border-radius:8px; padding:8px; text-align:center; cursor:pointer; transition:all .15s; }
.gift-item:hover { border-color:#c9a227; background:rgba(240,200,90,.15); }
.gift-item div { color:#d8cfa8; font-size:13px; margin-top:4px; }
.gift-count { color:#c4b489; font-size:12px; }
.item-img { border-radius:6px; }

/* ============ 商店/背包 ============ */
.shop-stones { color:#d9c99e; margin-bottom:10px; text-align:center; }
.shop-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; max-height:56vh; overflow-y:auto; }
.shop-item { background:rgba(245,239,224,.07); border:1px solid rgba(200,170,90,.3); border-radius:10px; padding:10px; text-align:center; display:flex; flex-direction:column; align-items:center; gap:4px; }
.shop-item-name { color:#f0e6c8; font-size:15px; }
.shop-item-desc { color:#c4b489; font-size:12px; min-height:32px; line-height:1.4; }
.shop-item-price { color:#f0d878; font-size:13px; }
.shop-own { color:#b3a37d; font-size:12px; margin-left:4px; }
.inv-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; max-height:56vh; overflow-y:auto; }
.inv-item { background:rgba(245,239,224,.07); border:1px solid rgba(200,170,90,.3); border-radius:10px; padding:10px; text-align:center; }
.inv-name { color:#f0e6c8; font-size:14px; margin-top:4px; }
.inv-desc { color:#c4b489; font-size:11px; min-height:28px; margin:4px 0; line-height:1.4; }
.inv-actions { display:flex; gap:4px; justify-content:center; flex-wrap:wrap; }

/* ============ 功法 ============ */
.arts-list { display:flex; flex-direction:column; gap:8px; }
.art-row { display:flex; align-items:center; gap:10px; background:linear-gradient(135deg,rgba(245,239,224,.08),rgba(245,239,224,.03)); border:1px solid rgba(200,170,90,.25); border-radius:10px; padding:10px 12px; transition:border-color .2s, box-shadow .2s; }
.art-row:hover { border-color:rgba(240,200,90,.5); box-shadow:0 0 14px rgba(240,200,90,.08) inset; }
.art-row.active { border-color:#f0d878; background:linear-gradient(135deg,rgba(240,200,90,.16),rgba(240,200,90,.05)); box-shadow:0 0 16px rgba(240,200,90,.12) inset; }
.art-head { flex:1; min-width:0; }
.art-name { color:#f0e6c8; font-size:15px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.tier-0{color:#c4b489}.tier-1{color:#7ab8e8}.tier-2{color:#c88ad0}.tier-3{color:#f0a85a}.tier-4{color:#e8e0b0}.tier-5{color:#f0d878}
.art-realm { display:inline-block; font-size:11px; color:#1a1a22; background:linear-gradient(180deg,#f8e7b0,#d9b45c); border:1px solid rgba(255,240,200,.6); border-radius:10px; padding:1px 10px; letter-spacing:2px; font-weight:600; box-shadow:0 0 8px rgba(240,200,90,.35); }
.art-realm-ready { animation:realmPulse 1.6s ease-in-out infinite; }
@keyframes realmPulse { 0%,100%{ box-shadow:0 0 6px rgba(240,200,90,.35);} 50%{ box-shadow:0 0 18px rgba(240,200,90,.9);} }
.art-progress { position:relative; height:12px; margin-top:6px; background:rgba(10,10,18,.55); border:1px solid rgba(200,170,90,.28); border-radius:6px; overflow:hidden; }
.art-progress-fill { height:100%; background:linear-gradient(90deg,#8a6a2a,#f0d878,#fff2c0); border-radius:6px; transition:width .4s; box-shadow:0 0 10px rgba(240,200,90,.5); }
.art-progress-txt { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-size:10px; color:#f0e6c8; text-shadow:0 1px 2px rgba(0,0,0,.8); letter-spacing:1px; }
.art-desc { color:#c4b489; font-size:12px; margin-top:3px; }
.art-actions { display:flex; flex-direction:column; gap:6px; }
.skill-chips { display:flex; flex-wrap:wrap; gap:6px; }
.skill-chip { background:rgba(240,200,90,.12); border:1px solid rgba(240,200,90,.4); color:#f0e6c8; border-radius:12px; padding:4px 12px; font-size:13px; }

/* ============ 存档/设置 ============ */
.save-list { display:flex; flex-direction:column; gap:10px; }
.save-row { display:flex; align-items:center; gap:10px; background:rgba(245,239,224,.07); border:1px solid rgba(200,170,90,.25); border-radius:8px; padding:10px; }
.save-row span { flex:1; color:#d8cfa8; }
.settings-list { display:flex; flex-direction:column; gap:12px; }
.settings-list label { color:#d8cfa8; font-size:16px; display:flex; align-items:center; gap:8px; cursor:pointer; }

/* ============ 结局 ============ */
.end-text { color:#e8d9a8; font-size:18px; line-height:2; text-align:center; text-shadow:0 2px 6px rgba(0,0,0,.8); }

/* ============ 日志面板 ============ */
.log-panel { max-height:55vh; overflow-y:auto; }

/* ============ 滚动条 ============ */
::-webkit-scrollbar { width:8px; }
::-webkit-scrollbar-track { background:rgba(0,0,0,.2); }
::-webkit-scrollbar-thumb { background:#6a5a3c; border-radius:4px; }
::-webkit-scrollbar-thumb:hover { background:#8a7a4c; }

/* 响应式 */
@media (max-width:1000px) {
  .side-panel { width:240px; }
  .main-panel { left:240px; }
  .combat-top { grid-template-columns:1fr 1fr; }
  .combat-log { display:none; }
}
@media (max-width:700px) {
  .side-panel { display:none; }
  .main-panel { left:0; }
  .cr-personality { grid-template-columns:repeat(2,1fr); }
  .cr-talents { grid-template-columns:repeat(2,1fr); }
  .title-logo { font-size:54px; letter-spacing:10px; }
}

/* ============ 小地图 ============ */
.main-top-row { display:flex; gap:12px; flex:1; min-height:0; padding:6px 26px 0; }
.main-nav { flex:1; overflow-y:auto; padding:10px 0; }
.minimap-panel {
  width:280px; flex-shrink:0; display:flex; flex-direction:column;
  background:rgba(14,11,7,.6); border:1px solid rgba(200,170,90,.25); border-radius:10px; padding:8px 8px 10px;
}
.minimap-title { color:#d9c99e; font-size:13px; text-align:center; margin-bottom:6px; letter-spacing:2px; }
.minimap-svg { width:100%; display:block; }
.mm-loc:hover circle:first-of-type { stroke:#f0d878; }
.mm-loc-name { font-size:9px; }
@media (max-width:1200px) { .minimap-panel { display:none; } }

/* ============ 主线 ============ */
.mainline-list { display:flex; flex-direction:column; gap:10px; max-height:62vh; overflow-y:auto; }
.mainline-stage { display:flex; gap:12px; background:rgba(245,239,224,.06); border:1px solid rgba(200,170,90,.22); border-radius:10px; padding:10px 12px; }
.mainline-stage.done { opacity:.75; }
.mainline-stage.current { border-color:#f0d878; background:rgba(240,200,90,.12); box-shadow:0 0 10px rgba(240,200,90,.25); }
.mainline-stage.locked { opacity:.45; }
.ml-icon { font-size:22px; }
.ml-name { color:#f0e6c8; font-size:16px; }
.ml-desc { color:#c4b489; font-size:12px; margin-top:3px; line-height:1.5; }
.ml-objective { color:#f0d878; font-size:13px; margin-top:5px; }
.ml-story { color:#cfc094; font-size:12px; margin-top:5px; line-height:1.6; }
.ml-tracker {
  background:rgba(240,200,90,.1); border:1px solid rgba(240,200,90,.3); border-radius:8px;
  padding:7px 10px; color:#f0d878; font-size:12px; line-height:1.6; margin-top:8px;
}
.ml-tracker.done { color:#9cd89c; border-color:rgba(156,216,156,.35); background:rgba(156,216,156,.08); }
.ml-obj { color:#d9c99e; font-size:11px; }

/* ============ AI 状态 ============ */
.ai-online { color:#9cd89c; font-size:13px; }
.ai-offline { color:#c4b489; font-size:13px; }
.ai-status-line { display:flex; align-items:center; gap:8px; margin-top:6px; }
.ai-tip { color:#b3a37d; font-size:12px; line-height:1.6; margin-top:6px; }
.choice-tag {
  display:inline-block; font-size:11px; padding:1px 6px; border-radius:4px; margin-right:6px;
  border:1px solid;
}
.choice-tag.good { color:#9cd89c; border-color:#4a7c59; }
.choice-tag.risk { color:#e89a8a; border-color:#b03a2e; }
.choice-tag.neutral { color:#d9c99e; border-color:#6a5a3c; }

/* ============ 开宗立派：宗门经营 ============ */
.text-blue { color:#7ab8e8; }
.side-sect {
  margin-top:8px; padding:10px 12px; border-radius:8px; cursor:pointer;
  background:linear-gradient(180deg,rgba(90,60,20,.35),rgba(60,40,15,.25));
  border:1px solid rgba(200,170,90,.35); transition:all .2s;
}
.side-sect:hover { border-color:#f0d878; box-shadow:0 0 12px rgba(240,200,90,.25); }
.side-sect-head { display:flex; justify-content:space-between; align-items:center; }
.side-sect-name { color:#f5e6b8; font-size:15px; letter-spacing:1px; }
.side-sect-level { background:linear-gradient(180deg,#f2d98a,#c9a227); color:#3c2d05; font-size:11px; border-radius:4px; padding:1px 7px; font-weight:bold; }
.side-sect-line { color:#d9c99e; font-size:12px; margin-top:5px; line-height:1.6; }
.side-sect-line b { color:#f0d878; }

.sect-modal .modal-box { max-width:960px; background:linear-gradient(180deg,#1e1912,#15110b); border:2px solid #8f6f14; color:#e8dcc0; }
.sect-modal .modal-box h3 { color:#f0d878; }
.sect-head { text-align:center; padding-bottom:12px; border-bottom:1px solid rgba(200,170,90,.3); }
.sect-quick { display:flex; gap:6px; justify-content:center; margin-bottom:8px; }
.sect-title { font-size:26px; color:#f5e6b8; letter-spacing:4px; text-shadow:0 0 18px rgba(240,200,90,.4); }
.sect-meta { color:#d9c99e; font-size:13px; margin:6px 0; letter-spacing:1px; }
.sect-progress { max-width:420px; margin:0 auto; }
.sect-tabs { display:flex; gap:6px; justify-content:center; margin:12px 0; flex-wrap:wrap; }
.sect-tab {
  background:rgba(40,32,20,.6); border:1px solid #5a4c32; color:#d9c99e;
  border-radius:6px; padding:6px 14px; font-size:14px; transition:all .15s;
}
.sect-tab:hover { border-color:#c9a227; color:#f0d878; }
.sect-tab.active { background:linear-gradient(180deg,#4a3c1c,#3a2e14); border-color:#f0d878; color:#ffe9a8; box-shadow:0 0 10px rgba(240,200,90,.25); }
.sect-body { min-height:340px; max-height:62vh; overflow-y:auto; padding:4px 2px; }

.ov-cards { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:12px; }
.ov-card { background:rgba(245,239,224,.05); border:1px solid rgba(200,170,90,.25); border-radius:8px; padding:12px; text-align:center; }
.ov-num { color:#f0d878; font-size:20px; font-weight:bold; }
.ov-label { color:#c4b489; font-size:12px; margin-top:3px; }
.ov-row { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:10px; }
.ov-box { background:rgba(245,239,224,.04); border:1px solid rgba(200,170,90,.2); border-radius:8px; padding:12px; }
.ov-box h4 { color:#f0d878; font-size:15px; margin-bottom:8px; letter-spacing:1px; }
.ov-line { color:#d9c99e; font-size:13px; line-height:1.9; }
.ov-line b { color:#f5e6b8; }
.ov-actions { display:flex; gap:6px; margin-top:8px; flex-wrap:wrap; }
.sect-log { max-height:140px; overflow-y:auto; }
.sect-log-line { color:#d9c99e; font-size:12px; line-height:1.7; padding:2px 0; border-bottom:1px dashed rgba(200,170,90,.12); }
.sect-log-line.good { color:#8fce8f; }
.sect-log-line.bad { color:#e08a7a; }

.disc-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
.disc-card {
  background:rgba(245,239,224,.05); border:1px solid rgba(200,170,90,.25); border-radius:8px;
  padding:12px; cursor:pointer; transition:all .15s;
}
.disc-card:hover { border-color:#f0d878; transform:translateY(-2px); box-shadow:0 4px 14px rgba(240,200,90,.15); }
.disc-card-head { display:flex; gap:8px; align-items:center; margin-bottom:8px; }
.disc-avatar-sm { font-size:26px; }
.disc-card-name { color:#f5e6b8; font-size:14px; }
.disc-stars { color:#f0d878; font-size:11px; }
.disc-card-sub { color:#c4b489; font-size:12px; margin-top:2px; }
.disc-card-line { color:#d9c99e; font-size:12px; line-height:1.7; }
.empty-tip { color:#b3a37d; text-align:center; padding:40px 0; font-size:15px; }

.build-list { display:flex; flex-direction:column; gap:8px; }
.build-row {
  display:flex; gap:12px; align-items:center; background:rgba(245,239,224,.05);
  border:1px solid rgba(200,170,90,.25); border-radius:8px; padding:10px 14px;
}
.build-row.unbuilt { opacity:.65; }
.build-icon { font-size:26px; }
.build-info { flex:1; }
.build-name { color:#f5e6b8; font-size:15px; }
.build-lv { color:#f0d878; font-size:12px; margin-left:6px; }
.build-lv.unbuilt { color:#b3a37d; }
.build-desc { color:#c4b489; font-size:12px; margin-top:2px; }
.build-eff { color:#8fce8f; font-size:12px; margin-top:3px; }
.build-side { min-width:120px; text-align:right; }
.build-max { color:#b3a37d; font-size:12px; }
.build-tip { color:#b3a37d; font-size:12px; text-align:center; margin-top:10px; }

.sect-task { background:rgba(245,239,224,.05); border:1px solid rgba(200,170,90,.2); border-radius:8px; padding:10px 14px; margin-bottom:8px; }
.sect-task-head { color:#f5e6b8; font-size:14px; }
.realm-tag { color:#f0d878; font-size:11px; border:1px solid #8f6f14; border-radius:4px; padding:0 6px; margin-left:4px; }
.sect-task-desc { color:#c4b489; font-size:12px; margin-top:4px; }
.sect-task-reward { color:#8fce8f; font-size:12px; margin-top:4px; }
.sect-task-pick { display:flex; gap:6px; flex-wrap:wrap; margin-top:8px; }
.disciple-pick .pick-power, .sect-task-pick .pick-power { color:#c4b489; font-size:10px; margin-left:4px; }
.sect-task-empty { color:#b3a37d; font-size:12px; }

.recruit-view { padding:6px; }
.recruit-hero { display:flex; gap:14px; align-items:center; background:rgba(240,200,90,.07); border:1px solid rgba(240,200,90,.3); border-radius:10px; padding:14px; margin-bottom:12px; }
.recruit-hero-icon { font-size:38px; }
.recruit-title { color:#f5e6b8; font-size:18px; letter-spacing:2px; }
.recruit-desc { color:#d9c99e; font-size:13px; margin-top:4px; line-height:1.7; }
.recruit-rows { display:flex; flex-direction:column; gap:8px; }
.recruit-row { display:flex; justify-content:space-between; align-items:center; background:rgba(245,239,224,.05); border:1px solid rgba(200,170,90,.2); border-radius:8px; padding:12px 14px; }
.recruit-info b { color:#f5e6b8; display:block; font-size:15px; }
.recruit-info span { color:#c4b489; font-size:12px; }
.recruit-note { color:#b3a37d; font-size:12px; text-align:center; margin-top:10px; }

.storage-view { padding:6px; }
.storage-head { color:#d9c99e; font-size:13px; margin-bottom:10px; }
.storage-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.storage-item { background:rgba(245,239,224,.05); border:1px solid rgba(200,170,90,.2); border-radius:8px; padding:10px; text-align:center; color:#e8dcc0; font-size:13px; }
.storage-item .btn { margin-top:6px; }

.disc-detail .disc-head { display:flex; gap:14px; align-items:center; margin-bottom:10px; }
.disc-avatar { font-size:44px; }
.disc-name { color:#f5e6b8; font-size:20px; letter-spacing:1px; }
.disc-sub { color:#c4b489; font-size:13px; }
.disc-bars { margin:8px 0; }
.disc-bar-line { font-size:12px; color:#d9c99e; margin-bottom:6px; }
.disc-cult { color:#d9c99e; font-size:13px; margin:8px 0 4px; }
.disc-apts { color:#8fce8f; font-size:13px; margin-top:8px; }
.disc-stats { background:rgba(0,0,0,.06); border-radius:8px; padding:10px; margin-top:8px; color:#5c5342; font-size:13px; line-height:1.9; }
.sect-modal .disc-stats { background:rgba(245,239,224,.06); color:#d9c99e; }
.disc-stats b { color:#f0d878; }

.sect-event { text-align:center; }
.sect-event-icon { font-size:44px; margin-bottom:6px; }
.sect-event h3 { color:#f0d878; }
.event-opt-desc { display:block; color:#c4b489; font-size:12px; margin-top:2px; }

.site-list { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:10px 0; }
.site-card { background:rgba(245,239,224,.06); border:1px solid rgba(200,170,90,.25); border-radius:10px; padding:14px; text-align:center; }
.site-card.locked { opacity:.55; }
.site-name { color:#f5e6b8; font-size:16px; }
.site-state { color:#c4b489; font-size:12px; margin-left:4px; }
.site-desc { color:#c4b489; font-size:12px; margin-top:6px; line-height:1.6; }
.site-bonus { color:#8fce8f; font-size:12px; margin-top:4px; }
.site-cost { color:#f0d878; font-size:13px; margin:6px 0; }
.site-card .btn { margin-top:4px; }

/* 招募确认卡 */
.recruit-result { text-align:center; }
.recruit-result-icon { font-size:52px; margin-bottom:4px; }
.recruit-result-name { color:#f5e6b8; font-size:20px; letter-spacing:1px; }
.recruit-result-sub { color:#c4b489; font-size:13px; margin-top:2px; }
.recruit-result-info { background:rgba(0,0,0,.06); border-radius:8px; padding:10px; margin:10px 0; text-align:left; color:#5c5342; font-size:13px; line-height:1.9; }
.sect-modal .recruit-result-info { background:rgba(245,239,224,.06); color:#d9c99e; }
.recruit-result-info b { color:#f0d878; }

/* ============ FX 特效层 ============ */
#fx-canvas { position:fixed; inset:0; z-index:940; pointer-events:none; }

/* 成就/系统通知弹窗 */
.fx-notify {
  position:fixed; top:24px; right:-420px; z-index:960; width:340px;
  display:flex; gap:12px; align-items:center; padding:14px 16px;
  background:linear-gradient(135deg,rgba(24,18,10,.96),rgba(40,28,12,.94));
  border:1px solid #c9a227; border-radius:10px;
  box-shadow:0 8px 30px rgba(0,0,0,.6), 0 0 18px rgba(201,162,39,.25);
  transition:right .45s cubic-bezier(.2,.9,.3,1.2);
  overflow:hidden;
}
.fx-notify::after {
  content:""; position:absolute; top:0; left:-80%; width:50%; height:100%;
  background:linear-gradient(105deg,transparent,rgba(255,235,170,.18),transparent);
  animation:notifyShine 2.6s ease-in-out infinite;
}
@keyframes notifyShine { 0%,55% { left:-80%; } 100% { left:130%; } }
.fx-notify.show { right:24px; }
.fx-notify.achv { border-color:#f0d878; background:linear-gradient(135deg,rgba(30,22,10,.97),rgba(56,40,14,.95)); }
.fx-notify-icon { font-size:34px; filter:drop-shadow(0 0 8px rgba(240,200,90,.6)); }
.fx-notify-title { color:#f5e6b8; font-size:16px; letter-spacing:2px; font-weight:bold; }
.fx-notify.achv .fx-notify-title { color:#f0d878; text-shadow:0 0 12px rgba(240,200,90,.5); }
.fx-notify-desc { color:#cfc094; font-size:12px; margin-top:3px; line-height:1.6; }

/* ============ 天气 ============ */
.main-weather {
  display:inline-block; margin-top:4px; padding:2px 12px;
  background:rgba(20,16,10,.55); border:1px solid rgba(200,170,90,.3); border-radius:14px;
  color:#e8d9a8; font-size:13px; letter-spacing:1px;
}
.main-weather b { color:#f0d878; }
.weather-hint { color:#eee0ba; font-size:12px; margin-left:6px; text-shadow:0 1px 2px rgba(0,0,0,.7); }
.combat-weather {
  position:absolute; top:16px; right:20px; z-index:5;
  padding:4px 14px; background:rgba(10,8,5,.6); border:1px solid rgba(200,170,90,.35); border-radius:16px;
  color:#e8d9a8; font-size:14px; letter-spacing:1px;
}
.combat-weather-name { color:#f0d878; }
.combat-weather i { color:#c4b489; font-size:12px; margin-left:6px; font-style:normal; }

/* ============ 炼丹 ============ */
.recipe-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; max-height:56vh; overflow-y:auto; padding:2px; }
.recipe-card {
  display:flex; gap:10px; align-items:center; background:rgba(245,239,224,.06);
  border:1px solid rgba(200,170,90,.25); border-radius:8px; padding:10px 12px;
}
.recipe-card.lack { opacity:.55; }
.recipe-icon { font-size:26px; }
.recipe-info { flex:1; min-width:0; }
.recipe-name { color:#f5e6b8; font-size:14px; }
.recipe-time { color:#c4b489; font-size:11px; margin-left:6px; }
.recipe-desc { color:#c4b489; font-size:12px; margin-top:2px; }
.recipe-ing-wrap { margin-top:4px; display:flex; gap:6px; flex-wrap:wrap; }
.recipe-ing { font-size:11px; padding:1px 6px; border-radius:8px; }
.recipe-ing.have { background:rgba(140,200,140,.22); color:#a8e8a8; text-shadow:0 1px 2px rgba(0,0,0,.4); }
.recipe-ing.lack { background:rgba(200,90,80,.2); color:#f0a090; text-shadow:0 1px 2px rgba(0,0,0,.4); }

/* ============ 装备强化 ============ */
.enh-badge {
  display:inline-block; background:linear-gradient(180deg,#f2d98a,#c9a227); color:#3c2d05;
  font-size:11px; font-weight:bold; border-radius:4px; padding:0 5px; margin-left:2px;
}
.enh-badge.big { font-size:15px; padding:2px 8px; }
.enh-view { display:flex; gap:14px; align-items:center; margin-bottom:12px; }
.enh-info { flex:1; }
.enh-name { color:#f5e6b8; font-size:18px; }
.enh-desc { color:#c4b489; font-size:12px; margin-top:2px; }
.enh-cur { color:#8fce8f; font-size:13px; margin-top:6px; }
.enh-next { color:#d9c99e; font-size:13px; margin-top:3px; }
.enh-stats { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-bottom:10px; }
.enh-stat { background:rgba(245,239,224,.05); border:1px solid rgba(200,170,90,.2); border-radius:8px; padding:8px; text-align:center; }
.enh-stat span { display:block; color:#c4b489; font-size:11px; }
.enh-stat b { color:#f0e6c8; font-size:15px; }

/* ============ 成就图鉴 ============ */
.achv-sum { text-align:center; color:#d9c99e; font-size:14px; margin-bottom:10px; }
.achv-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; max-height:58vh; overflow-y:auto; padding:2px; }
.achv-card {
  background:rgba(245,239,224,.05); border:1px solid rgba(200,170,90,.2); border-radius:8px;
  padding:10px 8px; text-align:center; transition:all .15s;
}
.achv-card.got { border-color:#c9a227; background:rgba(240,200,90,.08); box-shadow:0 0 10px rgba(240,200,90,.15); }
.achv-icon { font-size:26px; }
.achv-card.got .achv-icon { filter:drop-shadow(0 0 6px rgba(240,200,90,.6)); }
.achv-name { color:#f5e6b8; font-size:13px; margin-top:4px; }
.achv-card:not(.got) .achv-name { color:#b3a37d; }
.achv-desc { color:#c4b489; font-size:11px; margin-top:3px; line-height:1.5; }
.achv-reward { color:#8fce8f; font-size:11px; margin-top:4px; }
.achv-progress { color:#cfc094; font-size:11px; margin-top:4px; }

/* ============ v1.9 宗门战争 ============ */
.war-view { display:flex; flex-direction:column; gap:12px; max-height:76vh; overflow-y:auto; padding-right:4px; }
.war-summary { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; }
.war-sum-card { background:rgba(90,60,40,.25); border:1px solid rgba(200,150,90,.35); border-radius:10px; padding:10px; text-align:center; }
.war-sum-card b { display:block; font-size:22px; color:#f0d878; }
.war-sum-card span { font-size:12px; color:#c9a98a; }
.war-expedition { background:rgba(200,120,40,.12); border:1px solid rgba(240,170,80,.4); border-radius:10px; padding:10px 14px; }
.war-exp-title { color:#ffd08a; font-weight:700; margin-bottom:4px; }
.war-exp-line { color:#d8c4a0; font-size:12.5px; line-height:1.7; }
.war-list { display:flex; flex-direction:column; gap:8px; }
.war-rival { display:flex; gap:10px; align-items:flex-start; background:rgba(245,239,224,.05); border:1px solid rgba(200,170,90,.22); border-radius:10px; padding:10px 12px; transition:all .15s; }
.war-rival.destroyed { opacity:.55; border-style:dashed; }
.war-rival-icon { font-size:28px; line-height:1; filter:drop-shadow(0 0 6px rgba(240,200,90,.25)); }
.war-rival-info { flex:1; min-width:0; }
.war-rival-name { color:#f5e6b8; font-weight:700; font-size:14.5px; }
.war-rival-desc { color:#c4b489; font-size:12px; margin-top:2px; }
.war-rival-meta { color:#b0a488; font-size:11.5px; margin-top:2px; }
.war-rival-actions { display:flex; flex-direction:column; gap:6px; align-items:stretch; min-width:84px; }
.war-destroyed { color:#b3a37d; font-size:12.5px; text-align:center; padding-top:6px; }
.threat { font-size:11px; padding:1px 7px; border-radius:20px; margin-left:6px; vertical-align:2px; }
.threat.ok { color:#8fce8f; background:rgba(120,200,120,.12); border:1px solid rgba(120,200,120,.35); }
.threat.mid { color:#e8c860; background:rgba(230,200,90,.12); border:1px solid rgba(230,200,90,.35); }
.threat.warn { color:#e89a5c; background:rgba(230,150,80,.12); border:1px solid rgba(230,150,80,.35); }
.threat.bad { color:#e86a6a; background:rgba(230,90,90,.12); border:1px solid rgba(230,90,90,.35); }
.war-prison, .war-log { background:rgba(245,239,224,.04); border:1px solid rgba(200,170,90,.18); border-radius:10px; padding:10px 12px; }
.war-prison h4, .war-log h4 { color:#e8d4a0; margin:0 0 8px; font-size:14px; }
.war-prison-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:8px; }
.war-prison-card { background:rgba(90,60,60,.2); border:1px solid rgba(200,130,130,.25); border-radius:8px; padding:8px 10px; }
.war-prison-name { color:#f0c8c8; font-size:13.5px; font-weight:700; }
.war-prison-sub { color:#c4b489; font-size:11.5px; margin:2px 0 6px; }
.war-prison-actions { display:flex; gap:5px; flex-wrap:wrap; }
.war-log .sect-log { max-height:140px; overflow-y:auto; }
.war-report-log { max-height:52vh; overflow-y:auto; background:rgba(10,8,6,.55); border:1px solid rgba(200,170,90,.2); border-radius:10px; padding:12px 14px; }
.war-report-line { padding:4px 0; font-size:13px; color:#d8c4a0; line-height:1.6; border-bottom:1px dashed rgba(200,170,90,.08); }
.war-report-line:last-child { border-bottom:none; }
.war-report-line.gold { color:#f0d878; }
.war-report-line.warn { color:#ffb070; }
.war-report-line.bad { color:#e89a9a; }

/* 出征选人 */
.war-troop-pick { display:grid; grid-template-columns:repeat(2,1fr); gap:8px; margin:10px 0; }
.war-troop-item { display:flex; gap:8px; align-items:center; background:rgba(245,239,224,.05); border:1px solid rgba(200,170,90,.22); border-radius:8px; padding:8px 10px; cursor:pointer; transition:all .12s; }
.war-troop-item:hover { border-color:#c9a227; background:rgba(240,200,90,.08); }
.war-troop-item input { accent-color:#c9a227; }
.war-check-avatar { font-size:20px; }
.war-check-name { color:#f0e6c8; font-size:13px; }
.war-check-power { color:#f0d878; font-size:12px; margin-left:4px; }
.war-check-sub { color:#b0a488; font-size:11px; display:block; }
.war-leader-row { display:flex; gap:8px; align-items:center; color:#f0e6c8; font-size:13.5px; background:rgba(240,200,90,.07); border:1px solid rgba(240,200,90,.25); border-radius:8px; padding:8px 12px; }
.war-leader-row input { accent-color:#c9a227; }
.war-leader-power { color:#f0d878; font-size:12px; margin-left:auto; }

/* 授法 */
.teach-list { display:flex; flex-direction:column; gap:7px; max-height:52vh; overflow-y:auto; margin:10px 0; }
.teach-row { display:flex; gap:10px; align-items:center; background:rgba(245,239,224,.05); border:1px solid rgba(200,170,90,.2); border-radius:8px; padding:8px 12px; }
.teach-row.owned { border-color:rgba(140,200,140,.4); background:rgba(140,200,140,.07); }
.teach-info { flex:1; }
.teach-name { color:#f0e6c8; font-size:13.5px; font-weight:700; }
.tier-tag { font-size:10.5px; color:#8fce8f; border:1px solid rgba(140,200,140,.4); border-radius:4px; padding:0 5px; margin-left:5px; vertical-align:1px; }
.teach-desc { color:#c4b489; font-size:11.5px; margin-top:2px; }

/* 赐宝 */
.grant-list { display:flex; flex-direction:column; gap:7px; max-height:52vh; overflow-y:auto; margin:10px 0; }
.grant-row { display:flex; gap:10px; align-items:center; background:rgba(245,239,224,.05); border:1px solid rgba(200,170,90,.2); border-radius:8px; padding:8px 12px; }
.grant-row.owned { border-color:rgba(140,200,140,.4); background:rgba(140,200,140,.07); }
.grant-info { flex:1; }
.grant-name { color:#f0e6c8; font-size:13.5px; font-weight:700; }
.grant-slot { font-size:10.5px; color:#8fce8f; border:1px solid rgba(140,200,140,.4); border-radius:4px; padding:0 5px; margin-left:5px; vertical-align:1px; }
.grant-desc { color:#c4b489; font-size:11.5px; margin-top:2px; }


/* ============ v2.0 悬赏任务 ============ */
.task-title-row { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:12px; font-size:13px; color:#d9c99e; }
.task-title-badge { font-size:14px; }
.task-exp-bar { flex:1; min-width:160px; max-width:280px; }
.task-chain { background:rgba(240,200,90,.08); border:1px dashed rgba(240,200,90,.4); border-radius:8px; padding:8px 12px; margin-bottom:10px; font-size:13px; color:#e8d9a8; line-height:1.8; }
.chain-node { margin:0 2px; }
.chain-node.done { color:#9cd89c; }
.task-board { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.task-card { background:rgba(245,239,224,.06); border:1px solid rgba(200,170,90,.3); border-radius:10px; padding:12px 14px; position:relative; }
.task-card.chain { border-color:rgba(240,200,90,.6); box-shadow:0 0 14px rgba(240,200,90,.15); }
.task-chain-tag { position:absolute; top:-9px; left:10px; background:#3a2e14; color:#f0d878; font-size:11px; padding:0 8px; border-radius:8px; border:1px solid rgba(240,200,90,.5); }
.task-name { color:#f5e6b8; font-size:15px; margin-bottom:4px; }
.task-desc { color:#d9c99e; font-size:12px; line-height:1.6; }
.task-reward { color:#e8d9a8; font-size:12px; margin:6px 0 4px; }
.task-risk { color:#d9c99e; font-size:12px; margin-bottom:8px; }
.task-risk .warn { color:#f0a85a; font-weight:bold; }
.task-risk .good { color:#9cd89c; }
.task-empty { color:#cfc094; text-align:center; padding:20px; grid-column:1/-1; }

/* ============ v1.9 时间推演 ============ */
.warp-bar {
  display:flex; gap:5px; align-items:center;
  padding:3px 10px;
  background:rgba(245,239,224,.06); border:1px solid rgba(200,170,90,.3);
  border-radius:22px;
}
.warp-label { color:#e8d9a8; font-size:12.5px; margin-right:2px; }
.warp-btn {
  background:rgba(245,239,224,.09); color:#f0e2ba; border:1px solid rgba(200,170,90,.35);
  border-radius:20px; padding:3px 10px; font-size:12.5px; cursor:pointer; transition:all .15s;
}
.warp-btn:hover { border-color:#f0d878; color:#fff3c4; background:rgba(240,200,90,.14); }
.warp-btn.active { background:rgba(240,200,90,.28); border-color:#f0d878; color:#ffe9a8; box-shadow:0 0 10px rgba(240,200,90,.3); }
.warp-info { color:#9fd8ff; font-size:12px; margin-left:6px; min-width:140px; text-align:left; }
@media (max-width:700px) {
  .warp-info { min-width:0; }
}

/* ============ v1.9 家族血脉 ============ */
.family-panel h3 { margin-top:0; }
.family-dao, .family-children { margin:10px 0; }
.family-dao h4, .family-children h4 { color:#e8d4a0; margin:0 0 8px; font-size:14px; }
.family-dao-row {
  display:flex; justify-content:space-between; align-items:center;
  background:rgba(245,239,224,.05); border:1px solid rgba(200,170,90,.2);
  border-radius:8px; padding:8px 12px; margin-bottom:6px; font-size:13px; color:#e8dcc0;
}
.family-favor { color:#c4b489; font-size:12px; }
.family-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:8px; }
.family-card {
  background:rgba(245,239,224,.05); border:1px solid rgba(200,170,90,.2);
  border-radius:10px; padding:10px 12px;
}
.family-card-head { display:flex; gap:8px; align-items:center; }
.family-avatar { font-size:22px; }
.family-name { color:#f5e6b8; font-size:14px; font-weight:700; }
.family-sub { color:#b0a488; font-size:11.5px; }
.family-line { color:#c4b489; font-size:12px; margin-top:6px; }
.family-actions { margin-top:6px; }

/* ============ v2.0 宗门大改版 ============ */

/* 资质标签 */
.apt-tag {
  display:inline-block; padding:1px 7px; border-radius:10px;
  font-size:11.5px; border:1px solid; vertical-align:1px; white-space:nowrap;
}
.apt-tian { color:#ffe9a8; border-color:#f0c860; background:rgba(240,200,96,.14); text-shadow:0 0 8px rgba(240,200,96,.55); }
.apt-di   { color:#cfe8ff; border-color:#7fb8e0; background:rgba(127,184,224,.13); }
.apt-ren  { color:#cfe0c0; border-color:#8fae78; background:rgba(143,174,120,.12); }
.apt-wei  { color:#d8c9a8; border-color:#a08c5e; background:rgba(160,140,94,.12); }
.apt-fei  { color:#c0b8ac; border-color:#7d756a; background:rgba(125,117,106,.12); }
.apprentice-tag { color:#ffd9e8; border-color:#e88aae; background:rgba(232,138,174,.16); }

/* 任务风险 */
.risk-low  { color:#9cd89c; }
.risk-mid  { color:#e8c878; }
.risk-high { color:#ff9a8a; }
.sect-task-tip { color:#a89a75; font-size:12px; text-align:center; margin-top:8px; }

/* 求道者 */
.seekers-box { margin-top:14px; border-top:1px dashed rgba(200,170,90,.25); padding-top:10px; }
.seekers-title { color:#e8d4a0; font-size:13.5px; margin-bottom:8px; }
.seekers-list { display:flex; flex-direction:column; gap:6px; max-height:220px; overflow-y:auto; }
.seeker-card {
  display:flex; justify-content:space-between; align-items:center; gap:10px;
  background:rgba(245,239,224,.05); border:1px solid rgba(200,170,90,.22);
  border-radius:8px; padding:8px 12px;
}
.seeker-card:hover { border-color:rgba(240,200,90,.45); }
.seeker-main { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.seeker-name { color:#f5e6b8; font-size:13.5px; }
.seeker-realm { color:#c4b489; font-size:12px; }
.seeker-src { color:#8f8268; font-size:11px; }
.seeker-acts { display:flex; gap:6px; }
.seekers-empty { color:#9a8d6e; font-size:12.5px; padding:6px 0; }

/* 免费招募行 */
.recruit-row.free { border-color:rgba(120,220,160,.35); background:rgba(110,200,150,.07); }

/* 政策面板 */
.policy-view { display:flex; flex-direction:column; gap:10px; }
.policy-head { color:#cfc094; font-size:12.5px; }
.policy-row {
  background:rgba(245,239,224,.04); border:1px solid rgba(200,170,90,.18);
  border-radius:10px; padding:12px 14px;
}
.policy-name { color:#f0e0ae; font-size:14px; margin-bottom:8px; }
.policy-opts { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
.policy-opt {
  display:flex; flex-direction:column; gap:4px; text-align:left;
  background:rgba(245,239,224,.05); border:1px solid rgba(200,170,90,.25);
  border-radius:8px; padding:8px 10px; cursor:pointer; transition:all .15s; color:#d9c99e;
}
.policy-opt:hover { border-color:#f0d878; background:rgba(240,200,90,.1); }
.policy-opt.active { border-color:#f0d878; background:rgba(240,200,90,.2); box-shadow:0 0 10px rgba(240,200,90,.25); }
.policy-opt-name { color:#ffe9a8; font-size:13px; font-weight:700; }
.policy-opt-desc { color:#c2b48e; font-size:11.5px; line-height:1.5; }
.policy-opt.active .policy-opt-desc { color:#e0d2a4; }
.policy-rival { background:rgba(255,120,90,.06); border:1px solid rgba(255,140,110,.28); border-radius:10px; padding:12px 14px; }
.policy-rival-title { color:#ffb8a0; font-size:13.5px; margin-bottom:6px; }
.policy-rival-line { color:#e0b0a0; font-size:12.5px; line-height:1.8; }

/* 弟子详情 v2.0 */
.disc-grudge {
  color:#ffb0a0; background:rgba(255,120,90,.07); border:1px solid rgba(255,140,110,.25);
  border-radius:8px; padding:7px 10px; margin-top:6px; font-size:12.5px;
}
.disc-role { margin-top:10px; }
.disc-role-title { color:#e8d4a0; font-size:12.5px; margin-bottom:6px; }
.disc-role-opts { display:flex; gap:6px; flex-wrap:wrap; }

/* 亲传弟子卡片 */
.disc-card.apprentice { border-color:rgba(232,138,174,.55); box-shadow:0 0 12px rgba(232,138,174,.22); }

/* ============ v2.1 宗门进阶 ============ */

/* 10 tab 换行 */
.sect-tabs { flex-wrap: wrap; }

/* 秘境 */
.dungeon-view { display:flex; flex-direction:column; gap:10px; }
.dungeon-now {
  background:rgba(120,170,255,.06); border:1px solid rgba(120,170,255,.3);
  border-radius:12px; padding:14px 16px;
}
.dungeon-now-head { color:#cfe3ff; font-size:15px; font-weight:700; }
.dungeon-now-desc { color:#b8c9e0; font-size:12.5px; margin-top:6px; line-height:1.6; }
.dungeon-now-loot { color:#e8d4a0; font-size:12.5px; margin-top:6px; }
.dungeon-pick-title { color:#e8d4a0; font-size:12.5px; margin-top:10px; margin-bottom:6px; }
.dungeon-picks { display:flex; gap:6px; flex-wrap:wrap; }
.dungeon-pick { transition:all .15s; }
.dungeon-pick.active { background:rgba(240,200,90,.3); border-color:#f0d878; color:#fff3c4; box-shadow:0 0 8px rgba(240,200,90,.35); }
.dungeon-none { text-align:center; padding:22px 10px; }
.dungeon-none-icon { font-size:42px; opacity:.85; }
.dungeon-none-text { color:#c4b489; font-size:13px; line-height:1.8; margin-top:8px; }
.dungeon-none-history { margin-top:14px; display:flex; flex-direction:column; gap:4px; }
.dungeon-his-line { color:#9a8d6e; font-size:12px; }
.dungeon-his-line.win { color:#9cd89c; }
.dungeon-his-line.lose { color:#e8a08a; }

/* 大比 */
.tourney-view { display:flex; flex-direction:column; gap:10px; }
.tourney-head { color:#e8d4a0; font-size:13px; }
.tourney-next { color:#cfc094; font-size:13px; line-height:1.8; }
.tourney-last {
  background:rgba(240,200,90,.07); border:1px solid rgba(240,200,90,.3);
  border-radius:10px; padding:12px 14px;
}
.tourney-last-title { color:#e8d4a0; font-size:13px; margin-bottom:8px; }
.tourney-champ { color:#ffe9a8; font-size:16px; font-weight:700; }
.tourney-top3 { color:#cfc094; font-size:13px; margin-top:6px; }
.tourney-reward { color:#a89a75; font-size:12px; margin-top:6px; }
.tourney-his { display:flex; flex-direction:column; gap:4px; }
.tourney-his-line { color:#9a8d6e; font-size:12px; }

/* 长老议会 */
.policy-elder {
  background:rgba(120,200,160,.06); border:1px solid rgba(120,200,160,.3);
  border-radius:10px; padding:12px 14px;
}
.policy-elder-title { color:#bfe8cf; font-size:13px; margin-bottom:6px; }
.policy-elder-list { display:flex; gap:6px; flex-wrap:wrap; }
.policy-elder-tag {
  background:#24473a; border:1px solid rgba(150,225,185,.55);
  color:#dff5e9; border-radius:12px; padding:3px 10px; font-size:12px;
}
.policy-elder-empty { color:#c2cdbd; font-size:12.5px; }

/* ============================================================
 * v2.3.1 高级感打磨：灵光背景 / 鎏金文字 / 玻璃质感 / 徽章日志
 * ============================================================ */
::selection { background:rgba(240,200,90,.35); color:#fff8e0; }

/* 灵光氤氲背景（固定两层仙气光晕） */
body::before, body::after {
  content:""; position:fixed; border-radius:50%; pointer-events:none; z-index:0;
  filter:blur(90px);
}
body::before {
  width:44vw; height:44vw; left:-14vw; top:-16vw;
  background:radial-gradient(circle,rgba(240,216,120,.14),transparent 62%);
  animation:auraSlow 26s ease-in-out infinite alternate;
}
body::after {
  width:50vw; height:50vw; right:-18vw; bottom:-20vw;
  background:radial-gradient(circle,rgba(120,180,255,.10),transparent 62%);
  animation:auraSlow 32s ease-in-out infinite alternate-reverse;
}
@keyframes auraSlow {
  0% { transform:translate3d(0,0,0) scale(1); }
  100% { transform:translate3d(4vw,-3vw,0) scale(1.14); }
}

/* 滚动条：鎏金细条 */
::-webkit-scrollbar { width:8px; height:8px; }
::-webkit-scrollbar-track { background:rgba(0,0,0,.25); }
::-webkit-scrollbar-thumb {
  background:linear-gradient(180deg,#8a7a4c,#6a5a3c);
  border-radius:4px; border:1px solid rgba(240,200,90,.25);
}
::-webkit-scrollbar-thumb:hover { background:linear-gradient(180deg,#c9a227,#8a6a1a); }

/* 主区域标题：鎏金渐变 + 云纹饰线 */
.main-loc-name {
  display:inline-block; position:relative;
  background:linear-gradient(180deg,#fff6d8 12%,#f5d97a 48%,#d9a832 85%,#f8e8a0 100%);
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; color:#f5d97a;
  font-weight:700;
  filter:drop-shadow(0 2px 6px rgba(0,0,0,.95)) drop-shadow(0 0 18px rgba(240,200,90,.28));
  animation:titleBreath 4s ease-in-out infinite;
}
@keyframes titleBreath {
  0%,100% { filter:drop-shadow(0 2px 6px rgba(0,0,0,.95)) drop-shadow(0 0 14px rgba(240,200,90,.22)); }
  50% { filter:drop-shadow(0 2px 6px rgba(0,0,0,.95)) drop-shadow(0 0 26px rgba(255,225,130,.5)); }
}
.main-loc-name::after {
  content:""; position:absolute; left:4%; right:4%; bottom:-7px; height:1px;
  background:linear-gradient(90deg,transparent,rgba(240,200,90,.75),rgba(255,255,255,.35),rgba(240,200,90,.75),transparent);
}
.main-realm {
  background:linear-gradient(180deg,#f8e6a8,#d9a832);
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; color:#f0d878;
  letter-spacing:2px;
}

/* 时辰行：信息胶囊化 */
.main-time { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.main-time b { padding:1px 8px; border:1px solid rgba(140,190,255,.35); border-radius:10px; background:rgba(20,30,60,.35); }
.time-hint, .time-ambient { margin-left:0; }
.time-hint::before { content:"·"; margin-right:8px; color:rgba(240,200,90,.5); }

/* 地点区块：内光 + 回纹角饰 */
.state-block { position:relative; overflow:hidden; backdrop-filter:blur(3px); transition:border-color .2s, box-shadow .2s; }
.state-block::before {
  content:""; position:absolute; top:6px; left:6px; width:10px; height:10px; pointer-events:none;
  border-top:1px solid rgba(240,200,90,.45); border-left:1px solid rgba(240,200,90,.45);
}
.state-block::after {
  content:""; position:absolute; bottom:6px; right:6px; width:10px; height:10px; pointer-events:none;
  border-bottom:1px solid rgba(240,200,90,.45); border-right:1px solid rgba(240,200,90,.45);
}
.state-block.current {
  border-color:#c9a227;
  box-shadow:0 0 14px rgba(200,150,40,.3), inset 0 0 22px rgba(240,200,90,.05);
}
.state-name { letter-spacing:1px; }
.state-locs .nav-loc {
  box-shadow:0 2px 8px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,240,200,.08);
}
.nav-loc.here {
  background:linear-gradient(180deg,#5a4a22,#3f3317);
  box-shadow:0 0 14px rgba(240,200,90,.35), inset 0 1px 0 rgba(255,240,200,.25);
}

/* 快捷按钮：宝石质感 */
.q-btn, .action-btn {
  box-shadow:0 2px 6px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,240,200,.1);
}
.q-btn.gold, .action-btn.gold {
  background:linear-gradient(180deg,#5a4a22,#3f3317);
  border-color:#c9a227;
  box-shadow:0 2px 8px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,240,200,.22), 0 0 8px rgba(240,200,90,.12);
}
.q-btn:hover, .action-btn:hover {
  box-shadow:0 4px 14px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,240,200,.15), 0 0 12px rgba(240,200,90,.22);
}

/* 快捷栏：鎏金顶线 */
.quick-bar { position:relative; }
.quick-bar::after {
  content:""; position:absolute; left:20px; right:20px; bottom:-1px; height:1px;
  background:linear-gradient(90deg,transparent,rgba(240,200,90,.35),transparent);
}

/* 日志：徽章式分类 + 渐入 */
.main-log { backdrop-filter:blur(4px); }
.log-line { position:relative; padding-left:10px; animation:logSlide .35s ease-out; }
.log-line::before {
  content:""; position:absolute; left:0; top:50%; transform:translateY(-50%);
  width:3px; height:12px; border-radius:2px; opacity:.85;
  background:#b8a678;
}
.log-line.good::before { background:#6fbf6f; box-shadow:0 0 6px rgba(111,191,111,.6); }
.log-line.bad::before { background:#e0654f; box-shadow:0 0 6px rgba(224,101,79,.6); }
.log-line.gold::before { background:#f0d878; box-shadow:0 0 6px rgba(240,200,90,.7); }
.log-line.cult::before { background:#6fa8e8; box-shadow:0 0 6px rgba(111,168,232,.6); }
.log-line.warn::before { background:#f0a85a; box-shadow:0 0 6px rgba(240,168,90,.6); }
.log-line.talk::before { background:#c88ad0; box-shadow:0 0 6px rgba(200,138,208,.5); }
@keyframes logSlide { from { opacity:0; transform:translateX(-6px); } to { opacity:1; transform:translateX(0); } }

/* 弹窗：毛玻璃 + 匾额式标题 */
.modal-overlay { backdrop-filter:blur(5px); background:rgba(8,6,4,.55); }
.modal-box {
  border:1px solid rgba(240,200,90,.55);
  box-shadow:0 18px 60px rgba(0,0,0,.8), inset 0 0 60px rgba(0,0,0,.4), 0 0 26px rgba(240,200,90,.14);
}
.modal-box h3 { position:relative; padding-bottom:10px; }
.modal-box h3::before, .modal-box h3::after {
  content:""; position:absolute; top:50%; width:18%; height:1px;
  background:linear-gradient(90deg,transparent,rgba(240,200,90,.6));
}
.modal-box h3::before { left:2%; }
.modal-box h3::after { right:2%; transform:scaleX(-1); }

/* 侧栏：头像光环 + 名牌鎏金 */
.side-head { position:relative; }
.side-head img {
  position:relative; z-index:1;
  border:1px solid rgba(240,200,90,.6);
  box-shadow:0 6px 20px rgba(0,0,0,.7), 0 0 18px rgba(240,200,90,.22);
}
.side-head::after {
  content:""; position:absolute; left:50%; top:26px; transform:translateX(-50%);
  width:96px; height:96px; border-radius:50%; pointer-events:none;
  background:radial-gradient(circle,rgba(240,216,120,.34),transparent 66%);
  animation:portraitHalo 4.5s ease-in-out infinite;
}
@keyframes portraitHalo {
  0%,100% { opacity:.7; transform:translateX(-50%) scale(1); }
  50% { opacity:1; transform:translateX(-50%) scale(1.08); }
}
.side-name {
  background:linear-gradient(180deg,#fff6d8,#f0d878 60%,#c9a227);
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; color:#f0d878;
  letter-spacing:3px; font-weight:700;
}
.side-stats .stat-row { transition:all .18s; }
.side-stats .stat-row:hover { background:rgba(240,200,90,.12); box-shadow:0 0 8px rgba(240,200,90,.12); }

/* 宗门面板：鎏金头部 */
.sect-head { position:relative; border-bottom:1px solid rgba(240,200,90,.35); }
.sect-title {
  background:linear-gradient(180deg,#fff6d8 10%,#f5d97a 50%,#d9a832 90%);
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; color:#f5d97a;
  font-weight:700; text-shadow:none;
}
.sect-tab {
  border-radius:14px; padding:5px 14px;
  box-shadow:inset 0 1px 0 rgba(255,240,200,.1);
}
.sect-tab.active {
  background:linear-gradient(180deg,#5a4a22,#3f3317);
  box-shadow:0 0 12px rgba(240,200,90,.3), inset 0 1px 0 rgba(255,240,200,.25);
}

/* NPC 立绘光环 */
.npc-detail > img, .npc-detail .portrait-img {
  border:1px solid rgba(240,200,90,.5);
  box-shadow:0 0 24px rgba(240,200,90,.22), 0 8px 24px rgba(0,0,0,.6);
}
.mini-npc img { box-shadow:0 0 10px rgba(240,200,90,.18); }
.npc-row { position:relative; }
.npc-row::before {
  content:""; position:absolute; inset:3px; border:1px dashed rgba(140,105,45,.22); border-radius:8px; pointer-events:none;
}

/* 支线弹窗：竹简质感 */
.story-ask { letter-spacing:.5px; }
.story-cond { color:#a8dcc8; }
