/* ===================================================================
   原库 · 样式
   设计基调：深墨底 + 暖金线，克制的东方感，不用外部字体与图片
   =================================================================== */
:root{
  --bg:#0b0d12;
  --bg-2:#0f1219;
  --panel:#151922;
  --panel-2:#1a1f2a;
  --line:#242a37;
  --line-soft:#1c212b;
  --text:#e9e5da;
  --text-2:#c3bfb4;
  --muted:#8f97a7;
  --gold:#d8b571;
  --gold-2:#f0d9a8;
  --gold-dim:rgba(216,181,113,.16);
  --danger:#d98080;
  --ok:#8fc1a0;

  --el-huo:#e8755f;
  --el-shui:#4fb3d9;
  --el-feng:#6fc0a6;
  --el-lei:#a98fe0;
  --el-cao:#9fc15a;
  --el-bing:#96d7e8;
  --el-yan:#d9a94e;

  --serif:"Noto Serif SC","Source Han Serif SC","Songti SC",STSong,SimSun,serif;
  --sans:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Segoe UI",system-ui,sans-serif;

  --r:14px;
  --shadow:0 18px 40px -24px rgba(0,0,0,.9);
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg);
  color:var(--text);
  font-family:var(--sans);
  font-size:15px;
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
  min-height:100vh;
}
body::before{
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:0;
  background:
    radial-gradient(900px 480px at 50% -180px, rgba(216,181,113,.10), transparent 70%),
    radial-gradient(700px 420px at 90% 10%, rgba(79,179,217,.05), transparent 70%),
    repeating-linear-gradient(0deg, rgba(255,255,255,.014) 0 1px, transparent 1px 44px),
    repeating-linear-gradient(90deg, rgba(255,255,255,.014) 0 1px, transparent 1px 44px);
}
a{color:inherit;text-decoration:none}
button{font-family:inherit}
::selection{background:rgba(216,181,113,.28)}

/* ---------------- 顶栏 ---------------- */
.topbar{
  position:sticky; top:0; z-index:40;
  background:rgba(11,13,18,.86);
  backdrop-filter:blur(14px) saturate(140%);
  border-bottom:1px solid var(--line-soft);
}
.topbar-in{
  max-width:1180px; margin:0 auto; padding:12px 22px;
  display:flex; align-items:center; gap:18px;
}
.brand{display:flex; align-items:baseline; gap:10px; flex-shrink:0; cursor:pointer}
.brand .mark{
  font-family:var(--serif); font-size:23px; letter-spacing:2px; color:var(--text);
  display:flex; align-items:center; gap:8px;
}
.brand .diamond{
  width:9px; height:9px; background:var(--gold); transform:rotate(45deg);
  display:inline-block; box-shadow:0 0 12px rgba(216,181,113,.7);
}
.brand small{color:var(--muted); font-size:11px; letter-spacing:3px; white-space:nowrap}

.searchwrap{flex:1; position:relative; max-width:560px; margin-left:auto}
#q{
  width:100%; height:38px; padding:0 42px 0 14px;
  background:var(--panel); color:var(--text);
  border:1px solid var(--line); border-radius:999px;
  font-size:13.5px; font-family:var(--sans); outline:none;
  transition:border-color .2s, background .2s;
}
#q::placeholder{color:#727a88}
#q:focus{border-color:rgba(216,181,113,.55); background:#171c26}
.searchwrap .kbd{
  position:absolute; right:12px; top:9px; font-size:11px; color:var(--muted);
  border:1px solid var(--line); border-radius:5px; padding:0 5px; line-height:18px;
  pointer-events:none;
}
.cut{
  font-size:11px; color:var(--muted); white-space:nowrap;
  border:1px solid var(--line); border-radius:999px; padding:3px 10px;
  display:flex; align-items:center; gap:6px;
}
.cut b{color:var(--gold); font-weight:500}

/* ---------------- 导航 ---------------- */
.nav{
  position:sticky; top:63px; z-index:39;
  background:rgba(11,13,18,.9); backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line-soft);
}
.nav-in{
  max-width:1180px; margin:0 auto; padding:0 22px;
  display:flex; gap:2px; overflow-x:auto; scrollbar-width:none;
}
.nav-in::-webkit-scrollbar{display:none}
.nav a{
  padding:11px 13px; font-size:13.5px; color:var(--text-2);
  border-bottom:2px solid transparent; white-space:nowrap;
  transition:color .18s, border-color .18s;
}
.nav a:hover{color:var(--text)}
.nav a.on{color:var(--gold-2); border-bottom-color:var(--gold)}

/* ---------------- 布局 ---------------- */
main{max-width:1180px; margin:0 auto; padding:30px 22px 90px; position:relative; z-index:1}
.section-head{display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin:0 0 18px}
.section-head h2{
  font-family:var(--serif); font-size:22px; font-weight:500; letter-spacing:1px; margin:0;
  display:flex; align-items:center; gap:10px;
}
.section-head h2::before{
  content:""; width:6px; height:6px; background:var(--gold); transform:rotate(45deg);
}
.section-head .sub{color:var(--muted); font-size:12.5px}

.page-title{font-family:var(--serif); font-size:30px; letter-spacing:2px; margin:0 0 6px; font-weight:500}
.page-desc{color:var(--muted); font-size:13.5px; margin:0 0 26px; max-width:760px}

/* ---------------- 首页 ---------------- */
.hero{
  border:1px solid var(--line); border-radius:20px;
  background:
    radial-gradient(600px 260px at 80% -40px, rgba(216,181,113,.12), transparent 70%),
    linear-gradient(180deg,#161a23,#101319);
  padding:40px 38px 34px; margin-bottom:34px; position:relative; overflow:hidden;
  box-shadow:var(--shadow);
}
.hero::after{
  content:""; position:absolute; right:-70px; bottom:-90px; width:190px; height:190px;
  border:1px solid rgba(216,181,113,.13); transform:rotate(45deg);
  border-radius:28px; pointer-events:none;
}
.hero h1{
  font-family:var(--serif); font-size:44px; letter-spacing:10px; margin:0 0 4px; font-weight:400;
  color:var(--gold-2);
}
.hero .tagline{color:var(--text-2); font-size:14px; letter-spacing:2px; margin:0 0 26px}
.askbox{display:flex; gap:10px; max-width:720px}
.askbox input{
  flex:1; height:48px; padding:0 18px; border-radius:12px;
  background:#0d1017; border:1px solid var(--line); color:var(--text);
  font-size:14.5px; outline:none; transition:border-color .2s;
}
.askbox input:focus{border-color:rgba(216,181,113,.6)}
.askbox button{
  height:48px; padding:0 26px; border-radius:12px; cursor:pointer;
  background:linear-gradient(180deg,#e2c282,#c9a55f); color:#221a09;
  border:none; font-size:14px; font-weight:600; letter-spacing:2px;
  transition:filter .2s, transform .1s;
}
.askbox button:hover{filter:brightness(1.08)}
.askbox button:active{transform:translateY(1px)}
.chips{display:flex; flex-wrap:wrap; gap:8px; margin-top:16px}
.chip{
  font-size:12.5px; color:var(--text-2); background:rgba(255,255,255,.03);
  border:1px solid var(--line); border-radius:999px; padding:5px 13px; cursor:pointer;
  transition:.18s;
}
.chip:hover{color:var(--gold-2); border-color:rgba(216,181,113,.45); background:var(--gold-dim)}
.chip.on{color:#221a09; background:var(--gold); border-color:var(--gold)}

.stats{display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin:0 0 34px}
.stat{border:1px solid var(--line); border-radius:var(--r); padding:16px 18px; background:var(--panel)}
.stat b{display:block; font-family:var(--serif); font-size:26px; color:var(--gold-2); font-weight:500}
.stat span{font-size:12px; color:var(--muted); letter-spacing:1px}

.entries{display:grid; grid-template-columns:repeat(3,1fr); gap:14px}
.entry{
  border:1px solid var(--line); border-radius:var(--r); padding:20px; background:var(--panel);
  cursor:pointer; transition:.2s; position:relative; overflow:hidden;
}
.entry:hover{border-color:rgba(216,181,113,.45); background:var(--panel-2); transform:translateY(-2px)}
.entry .ico{font-size:20px; color:var(--gold); margin-bottom:8px; letter-spacing:2px; font-family:var(--serif)}
.entry h3{margin:0 0 6px; font-size:15.5px; font-weight:500; letter-spacing:1px}
.entry p{margin:0; font-size:12.5px; color:var(--muted); line-height:1.7}

/* ---------------- 卡片 ---------------- */
.grid{display:grid; gap:12px}
.g-char{grid-template-columns:repeat(auto-fill,minmax(232px,1fr))}
.g-3{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.card{
  border:1px solid var(--line); border-radius:var(--r); background:var(--panel);
  padding:16px 18px; cursor:pointer; transition:.18s; position:relative;
}
.card:hover{border-color:rgba(216,181,113,.4); background:var(--panel-2)}
.card h3{margin:0 0 5px; font-size:15px; font-weight:500; letter-spacing:.5px}
.card .sum{font-size:12.5px; color:var(--muted); line-height:1.7; margin:0}

/* 角色卡 */
.charcard{padding:15px 16px 14px}
.charcard .top{display:flex; align-items:center; gap:9px; margin-bottom:9px}
.charcard .name{font-size:16px; font-family:var(--serif); letter-spacing:1px}
.charcard .en{font-size:10.5px; color:#6d7482; letter-spacing:.4px; margin-top:-2px}
.charcard .meta{font-size:11.5px; color:var(--muted); display:flex; gap:8px; flex-wrap:wrap; margin-top:8px}
.charcard .bio{
  font-size:12px; color:#9aa1af; line-height:1.65; margin-top:8px;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
.dot{width:8px; height:8px; border-radius:50%; flex-shrink:0; box-shadow:0 0 8px currentColor}
.el{display:inline-flex; align-items:center; gap:5px; font-size:11.5px; color:var(--muted)}
.star{color:var(--gold); font-size:11px; letter-spacing:1px}

/* ---------------- 详情 ---------------- */
.back{
  display:inline-flex; align-items:center; gap:6px; color:var(--muted);
  font-size:12.5px; margin-bottom:18px; cursor:pointer; transition:color .2s;
}
.back:hover{color:var(--gold)}
.detail-head{
  border:1px solid var(--line); border-radius:18px; padding:28px 30px; margin-bottom:18px;
  background:linear-gradient(180deg,#171b24,#111419);
  display:flex; justify-content:space-between; gap:24px; flex-wrap:wrap;
}
.detail-head h1{font-family:var(--serif); font-size:34px; margin:0 0 2px; letter-spacing:3px; font-weight:500}
.detail-head .en-name{color:#767d8a; font-size:12px; letter-spacing:2px; margin-bottom:14px}
.badges{display:flex; gap:8px; flex-wrap:wrap}
.badge{
  font-size:11.5px; color:var(--text-2); border:1px solid var(--line);
  border-radius:999px; padding:3px 11px; display:inline-flex; align-items:center; gap:5px;
  background:rgba(255,255,255,.02);
}
.badge.gold{border-color:rgba(216,181,113,.4); color:var(--gold-2); background:var(--gold-dim)}
.badge.warn{border-color:rgba(217,128,128,.4); color:#e0a0a0; background:rgba(217,128,128,.08)}
.badge.ok{border-color:rgba(143,193,160,.35); color:var(--ok); background:rgba(143,193,160,.08)}

.panel{border:1px solid var(--line); border-radius:var(--r); background:var(--panel); padding:22px 24px; margin-bottom:14px}
.panel h3{
  margin:0 0 12px; font-size:13px; letter-spacing:3px; color:var(--gold);
  font-weight:500; text-transform:uppercase;
}
.panel p{margin:0 0 10px; color:var(--text-2); font-size:14px}
.panel p:last-child{margin-bottom:0}
.kv{display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:12px}
.kv div{font-size:12.5px; color:var(--muted)}
.kv b{display:block; color:var(--text); font-size:14px; font-weight:400; margin-top:2px}
.dhead-side{width:280px; flex-shrink:0}
.dhead-side .kv{grid-template-columns:1fr 1fr; gap:16px 12px}

/* ---------------- 筛选 ---------------- */
.filters{display:flex; flex-direction:column; gap:10px; margin-bottom:22px}
.frow{display:flex; gap:8px; flex-wrap:wrap; align-items:center}
.frow .lab{font-size:11.5px; color:#6f7684; letter-spacing:2px; width:44px; flex-shrink:0}

/* ---------------- 时间轴 ---------------- */
.timeline{position:relative; padding-left:26px}
.timeline::before{
  content:""; position:absolute; left:7px; top:6px; bottom:6px; width:1px;
  background:linear-gradient(180deg, rgba(216,181,113,.5), rgba(216,181,113,.05));
}
.tl-item{position:relative; margin-bottom:16px; padding:16px 20px; border:1px solid var(--line);
  border-radius:var(--r); background:var(--panel); transition:.18s}
.tl-item:hover{border-color:rgba(216,181,113,.35)}
.tl-item::before{
  content:""; position:absolute; left:-23px; top:23px; width:9px; height:9px;
  background:var(--bg); border:1px solid var(--gold); transform:rotate(45deg);
}
.tl-top{display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; margin-bottom:6px}
.tl-v{font-family:var(--serif); font-size:19px; color:var(--gold-2); letter-spacing:1px}
.tl-date{font-size:11.5px; color:var(--muted); letter-spacing:1px}
.tl-r{font-size:11.5px; color:#6f7684}
.tl-t{font-size:14px; color:var(--text); margin-left:auto}
.tl-n{font-size:12.5px; color:var(--muted); line-height:1.7; margin:0 0 8px}
.tl-tags{display:flex; gap:6px; flex-wrap:wrap}
.mini{font-size:11px; color:#8f97a7; border:1px solid var(--line-soft); border-radius:4px; padding:1px 7px; background:rgba(255,255,255,.02)}
.mini.new{color:var(--gold-2); border-color:rgba(216,181,113,.3)}

/* ---------------- 检索结果 ---------------- */
.answer{
  border:1px solid rgba(216,181,113,.3); border-radius:16px; padding:24px 26px; margin-bottom:18px;
  background:linear-gradient(180deg, rgba(216,181,113,.055), rgba(216,181,113,.015));
}
.answer .who{display:flex; align-items:center; gap:8px; font-size:12px; color:var(--gold); letter-spacing:2px; margin-bottom:12px}
.answer .who i{width:6px; height:6px; background:var(--gold); border-radius:50%; display:inline-block}
.answer .body{font-size:14.5px; color:var(--text); line-height:1.9}
.answer .foot{
  margin-top:16px; padding-top:12px; border-top:1px solid rgba(216,181,113,.18);
  display:flex; gap:16px; flex-wrap:wrap; font-size:11.5px; color:var(--muted);
}
.src{display:flex; flex-direction:column; gap:8px}
.src a{
  display:flex; gap:12px; align-items:flex-start; padding:12px 14px; border:1px solid var(--line);
  border-radius:10px; background:var(--panel); transition:.18s;
}
.src a:hover{border-color:rgba(216,181,113,.4); background:var(--panel-2)}
.src .idx{font-family:var(--serif); color:var(--gold); font-size:13px; width:18px; flex-shrink:0}
.src .t{font-size:13.5px; color:var(--text)}
.src .d{font-size:12px; color:var(--muted); line-height:1.65}
mark{background:rgba(216,181,113,.28); color:var(--gold-2); border-radius:3px; padding:0 2px}

.empty{text-align:center; color:var(--muted); padding:60px 20px; font-size:13.5px}
.tabs{display:flex; gap:6px; margin-bottom:20px; border-bottom:1px solid var(--line); }
.tabs button{
  background:none; border:none; color:var(--muted); padding:9px 16px; cursor:pointer;
  font-size:13.5px; border-bottom:2px solid transparent; margin-bottom:-1px; transition:.18s;
}
.tabs button:hover{color:var(--text)}
.tabs button.on{color:var(--gold-2); border-bottom-color:var(--gold)}

.notice{
  border-left:2px solid var(--gold); background:rgba(216,181,113,.06);
  padding:12px 16px; border-radius:0 8px 8px 0; font-size:12.5px; color:var(--text-2);
  margin-bottom:18px;
}
.notice b{color:var(--gold-2); font-weight:500}

.masonry{columns:2; column-gap:12px}
@media (max-width:760px){ .masonry{columns:1} }

footer{
  border-top:1px solid var(--line-soft); padding:26px 22px 40px; text-align:center;
  color:#6d7482; font-size:11.5px; line-height:2; position:relative; z-index:1;
}
footer b{color:var(--muted); font-weight:400}

/* ---------------- 响应式 ---------------- */
@media (max-width:900px){
  .entries{grid-template-columns:repeat(2,1fr)}
  .stats{grid-template-columns:repeat(2,1fr)}
  .hero{padding:32px 24px}
  .hero h1{font-size:34px; letter-spacing:6px}
  .cut{display:none}
}
@media (max-width:620px){
  .topbar-in{padding:10px 14px; gap:10px}
  .brand small{display:none}
  main{padding:22px 14px 70px}
  .nav-in{padding:0 8px}
  .entries{grid-template-columns:1fr}
  .hero h1{font-size:30px}
  .askbox{flex-direction:column; gap:8px}
  .askbox input{flex:0 0 auto; width:100%}
  .askbox button{width:100%}
  .hero::after{display:none}
  .detail-head{padding:22px}
  .detail-head h1{font-size:26px}
  .page-title{font-size:24px}
  .frow .lab{width:100%}
}

/* ===== 角色详情页 v2 组件 ===== */

/* 顶部锚点条 */
.charnav{
  position:sticky; top:106px; z-index:20;
  display:flex; gap:2px; margin:0 0 14px; padding:6px 8px;
  background:rgba(15,18,25,.92); backdrop-filter:blur(10px);
  border:1px solid var(--line); border-radius:10px; overflow-x:auto;
}
.charnav::-webkit-scrollbar{display:none}
.charnav span{
  font-size:12.5px; color:var(--muted); padding:5px 12px; border-radius:7px;
  cursor:pointer; white-space:nowrap; transition:.16s;
}
.charnav span:hover{color:var(--gold-2); background:rgba(216,181,113,.1)}

/* 概览里的抽取线 */
.pull-line{display:flex; align-items:center; gap:10px; margin-top:12px; font-size:12.5px; color:var(--text-2)}
.dots{display:inline-flex; gap:4px}
.dots i{width:8px; height:8px; border-radius:50%; background:#2a3040; display:inline-block}
.dots i.on{background:var(--gold); box-shadow:0 0 7px rgba(216,181,113,.6)}

.panel p.dim{color:var(--muted); font-size:13px}
.src-note{color:#6f7684; font-size:11.5px; margin-top:12px}

/* 技能 */
.skills{display:flex; flex-direction:column; gap:12px}
.skill{border-left:2px solid var(--line); padding-left:14px}
.sk-h{display:flex; align-items:baseline; gap:9px; margin-bottom:3px}
.sk-t{
  font-size:10.5px; color:var(--gold); border:1px solid rgba(216,181,113,.35);
  border-radius:4px; padding:0 6px; letter-spacing:1px; flex-shrink:0;
}
.sk-n{font-size:14px; color:var(--text); letter-spacing:.5px}
.skill p{margin:0; font-size:13px; color:var(--text-2); line-height:1.8}
.cons{
  margin-top:14px; padding:10px 14px; border-radius:8px;
  background:rgba(216,181,113,.06); border:1px solid rgba(216,181,113,.16);
  font-size:12.5px; color:var(--text-2);
}
.cons b{color:var(--gold-2); font-weight:500}

/* 培养 */
.build-grid{display:flex; flex-direction:column; gap:14px}
.build-row{display:flex; gap:14px; align-items:flex-start}
.build-row .bl{width:52px; flex-shrink:0; font-size:11.5px; color:#6f7684; letter-spacing:2px; padding-top:6px}
.build-row .bt{font-size:13px; color:var(--text-2); line-height:1.85; padding-top:4px}
.build-row > div{display:flex; flex-wrap:wrap; gap:6px}

/* 配队 */
.teams{display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:12px}
.team{border:1px solid var(--line); border-radius:10px; padding:14px 16px; background:rgba(255,255,255,.015)}
.team-h{font-size:13.5px; color:var(--gold-2); margin-bottom:8px; letter-spacing:.5px}
.team-m{display:flex; flex-wrap:wrap; gap:5px; margin-bottom:8px}
.team p{margin:0; font-size:12px; color:var(--muted); line-height:1.7}
.mini.link{cursor:pointer; transition:.15s}
.mini.link:hover{color:var(--gold-2); border-color:rgba(216,181,113,.45)}

@media (max-width:620px){
  .charnav{top:98px}
  .build-row{flex-direction:column; gap:4px}
  .build-row .bl{padding-top:0}
}

/* ===== 世界观：总纲 / 主线 手风琴 ===== */

.lore-list{display:flex; flex-direction:column; gap:10px; margin-bottom:10px}

.lore-card{
  border:1px solid var(--line); border-radius:var(--r); background:var(--panel);
  overflow:hidden; transition:border-color .18s;
}
.lore-card[open]{border-color:rgba(216,181,113,.35); background:var(--panel-2)}
.lore-card summary{
  display:flex; align-items:baseline; gap:12px; flex-wrap:wrap;
  padding:16px 20px; cursor:pointer; list-style:none;
}
.lore-card summary::-webkit-details-marker{display:none}
.lore-name{font-family:var(--serif); font-size:17px; color:var(--text); letter-spacing:1px}
.lore-era{font-size:11px; color:var(--gold); border:1px solid rgba(216,181,113,.3); border-radius:4px; padding:0 7px}
.lore-lead{font-size:12.5px; color:var(--muted); flex:1; min-width:200px}
.lore-body{padding:0 20px 18px; border-top:1px solid var(--line-soft)}
.lore-body p{font-size:13.5px; color:var(--text-2); line-height:1.95; margin:12px 0}
.lore-body .tl-tags{margin-top:12px}

.chap{
  border:1px solid var(--line); border-radius:var(--r); background:var(--panel);
  margin-bottom:10px; overflow:hidden;
}
.chap[open]{border-color:rgba(216,181,113,.35); background:var(--panel-2)}
.chap summary{
  display:flex; align-items:baseline; gap:12px; flex-wrap:wrap;
  padding:15px 20px; cursor:pointer; list-style:none;
}
.chap summary::-webkit-details-marker{display:none}
.chap-name{font-size:12px; color:var(--gold); letter-spacing:3px}
.chap-title{font-family:var(--serif); font-size:19px; letter-spacing:2px; color:var(--text)}
.chap-reg{font-size:11.5px; color:var(--muted); margin-left:auto}
.chap-body{padding:0 22px 20px; border-top:1px solid var(--line-soft)}
.chap-body p{font-size:13.5px; color:var(--text-2); line-height:1.95; margin:12px 0}
.chap-sum{color:var(--text) !important; font-size:14px !important; padding-top:4px}
.chap-end, .chap-fore{
  margin-top:12px; padding:10px 14px; border-radius:8px; font-size:12.5px;
  color:var(--text-2); line-height:1.8;
}
.chap-end{background:rgba(143,193,160,.06); border:1px solid rgba(143,193,160,.18)}
.chap-fore{background:rgba(216,181,113,.05); border:1px solid rgba(216,181,113,.14)}
.chap-end b{color:var(--ok); font-weight:500}
.chap-fore b{color:var(--gold-2); font-weight:500}

@media (max-width:620px){
  .lore-card summary, .chap summary{padding:14px 16px}
  .lore-body, .chap-body{padding:0 16px 16px}
  .chap-reg{margin-left:0}
}

.statline{font-size:12px; color:var(--muted); margin:0 0 14px; letter-spacing:.5px}
.statline b{color:var(--gold-2); font-weight:500; font-family:var(--serif); font-size:14px}
.lore-deep{font-size:10.5px; color:#221a09; background:var(--gold); border-radius:4px; padding:0 6px; letter-spacing:1px}

/* 书籍正文阅读区 */
.book-text{
  border:1px solid var(--line); border-radius:var(--r); background:var(--panel);
  padding:34px 40px; margin-top:14px;
}
.book-text p{
  font-family:var(--serif); font-size:15.5px; line-height:2.1; color:var(--text);
  margin:0 0 18px; text-align:justify;
}
.book-text p:last-child{margin-bottom:0}
.book-text p.book-h{
  font-size:17px; color:var(--gold-2); letter-spacing:2px; margin:26px 0 14px;
}
.book-text p.book-h:first-child{margin-top:0}
@media (max-width:620px){ .book-text{padding:22px 18px} .book-text p{font-size:14.5px} }

/* 幕结构 */
.acts{margin:16px 0 6px; border-top:1px dashed var(--line); padding-top:14px}
.acts-title{font-size:11.5px; color:var(--gold); letter-spacing:2px; margin-bottom:10px}
.act{border-left:2px solid rgba(216,181,113,.28); padding:8px 0 8px 14px; margin-bottom:10px}
.act-h{display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; margin-bottom:6px}
.act-no{font-size:10.5px; color:#221a09; background:var(--gold); border-radius:4px; padding:1px 7px; letter-spacing:1px; flex-shrink:0}
.act-t{font-size:14.5px; color:var(--text); letter-spacing:.5px}
.act-steps{display:flex; gap:5px; flex-wrap:wrap; align-items:center; margin-top:5px}
.act-lab{font-size:10.5px; color:#6f7684; letter-spacing:1px; margin-right:2px}
