/* 沿用盐荒 v0.2 的版式；配色改成羊皮纸面 + 深色羊皮地图带 + 黄铜/铁锈点缀 */
:root{
  --paper:#f1eadb;--paper2:#e7dfcb;--paper3:#d9cfb6;
  --dark:#2b2119;--dark2:#3f3226;
  --brass:#c9a457;--brass2:#9a7b36;
  --rust:#b5563f;--rust2:#8f3f2c;--moss:#5b7a4a;
  --ink:#241f1a;--ink2:#4e463d;--ink3:#7e7466;--line:#cdbfa3;
  --sans:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",sans-serif;
  --serif:"Songti SC","STSong","SimSun","Noto Serif SC",serif;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.65}
body{min-height:100vh;display:flex;flex-direction:column}
#app{flex:1;display:flex;flex-direction:column}
button,input,select,textarea{font-family:inherit;font-size:13px}
h1,h2,h3,.hd-l b,.lore h1{font-family:var(--serif);font-weight:600}
h2{font-size:24px;letter-spacing:.15em;margin:0 0 6px}
h3{font-size:17px;letter-spacing:.1em;margin:0 0 10px}
h3 small{letter-spacing:0;font-weight:400}
p{margin:8px 0;color:var(--ink2)}
small{color:var(--ink3);font-size:12px}
.meta{font-size:12px;color:var(--ink3);margin-top:6px}
.warn{color:var(--rust2);font-style:normal;margin-left:12px}

/* 顶带 */
.hd{background:var(--dark);color:var(--paper);display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 24px;flex-wrap:wrap}
.hd-l{display:flex;align-items:baseline;gap:14px}
.hd-l b{font-size:22px;letter-spacing:.3em}
.hd-l span{font-size:12px;color:#b8ab93;letter-spacing:.1em}
.hd-r{display:flex;gap:16px;font-size:12.5px;flex-wrap:wrap;color:#e6dcc6}

/* 页签与主体 */
.tabs{display:flex;border-bottom:1px solid var(--line);background:var(--paper2);padding:0 16px;overflow-x:auto}
.tabs button{background:none;border:0;border-bottom:2px solid transparent;padding:12px 18px;color:var(--ink2);cursor:pointer;letter-spacing:.1em;white-space:nowrap}
.tabs button.on{color:var(--ink);border-bottom-color:var(--brass);font-weight:600}
.body{max-width:1100px;margin:0 auto;padding:22px 24px 40px;width:100%;flex:1}
.two{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}
.acts{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:12px}
.panel{border:1px solid var(--line);background:rgba(255,255,255,.45);padding:18px 22px;margin-bottom:14px}

.btn{background:var(--dark);color:var(--paper);border:1px solid var(--dark);padding:9px 20px;cursor:pointer;letter-spacing:.12em}
.btn:hover{background:var(--dark2)}
.btn.o{background:transparent;color:var(--ink);border-color:var(--ink3)}
.btn.o:hover{border-color:var(--ink);background:rgba(0,0,0,.03)}
.btn.s{padding:5px 12px;font-size:12px;letter-spacing:.06em}
.btn:disabled{opacity:.4;cursor:not-allowed}
.lnk{background:none;border:0;color:var(--ink2);text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:0;white-space:nowrap}
.lnk:hover{color:var(--rust2)}
button:focus-visible,.cls:focus-visible{outline:2px solid var(--brass);outline-offset:2px}

/* 镇 */
.bld{border:1px solid var(--line);background:rgba(255,255,255,.55);padding:12px 16px;margin-bottom:10px;cursor:pointer}
.bld b{display:block;font-family:var(--serif);font-size:16px;letter-spacing:.12em}
.bld small{display:block;margin-top:2px}
.bld:hover{border-color:var(--ink)}
.bld.on{border-color:var(--brass);box-shadow:inset 3px 0 0 var(--brass);background:var(--paper2)}

/* 地图 */
.mapwrap{background:var(--dark);border-bottom:1px solid var(--line);overflow-x:auto}
.map{display:block;width:100%;min-width:640px;max-width:1100px;margin:0 auto;height:auto}
.map-bg{fill:#2b2119}
.edge{stroke:#8a7a5f;stroke-width:1.5;stroke-dasharray:6 5;opacity:.7}
.edge.on{stroke:var(--brass);stroke-width:2.5;stroke-dasharray:none;opacity:1}
.elabel{font-size:11px;fill:#b8ab93}
.node circle{fill:#4a3b2c;stroke:#b8ab93;stroke-width:1.5}
.node.seen circle{fill:var(--brass);stroke:var(--brass)}
.node.cur circle{fill:#f1eadb;stroke:var(--brass);stroke-width:3}
.node.near circle{fill:#2b2119;stroke:#b8ab93;stroke-dasharray:4 3}
.node .glyph{font-size:16px;fill:#e6dcc6}
.node.seen .glyph,.node.cur .glyph{fill:#2b2119}
.node .nlabel{font-size:12px;fill:#e6dcc6}
.node.clk{cursor:pointer}
.node.clk:hover circle{stroke:#fff}
.dest .row b{font-family:var(--serif);letter-spacing:.1em}

/* 日志 */
.loglist{max-height:60vh;overflow:auto;background:rgba(255,255,255,.45);border:1px solid var(--line);padding:8px 14px;font-size:13px}
.loglist div{padding:4px 0;border-bottom:1px dashed var(--line)}
.loglist small{margin-right:8px}
.strip{position:sticky;bottom:0;margin-top:auto;background:var(--dark);color:#e6dcc6;padding:8px 24px;font-size:12.5px;border-top:1px solid var(--brass2)}
.strip small{color:#b8ab93;margin-right:8px}
select,input,textarea{width:100%;border:1px solid var(--line);background:#fff;padding:6px 8px;color:var(--ink);margin-top:3px}
textarea{min-height:100px;resize:vertical;font-size:12px}
input[type=file]{margin-top:8px}

/* 品质色 */
.q0{color:#777B76}.q1{color:#35865B}.q2{color:#3978B8}.q3{color:#7B52B4}.q4{color:#C96F32}.q5{color:#C6A13A}
.slot.q1{background:#E1EFE6}.slot.q2{background:#E2ECF7}.slot.q3{background:#EEE6F6}.slot.q4{background:#F6E7D9}.slot.q5{background:#F5EBCB}

/* 人物卡（移植自 v0.2） */
.ch{border:1px solid var(--line);background:rgba(255,255,255,.55);padding:14px 16px;margin-bottom:12px}
.ch-h{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.ch-h b{font-size:15px}
.bar{display:flex;align-items:center;gap:10px;margin:8px 0 4px}
.bar .bt{flex:1;height:6px;background:var(--paper3);overflow:hidden}
.bar .bt i{display:block;height:100%;background:var(--moss);transition:width .25s}
.bar.ehp .bt i{background:var(--rust)}
.bar span{font-size:11px;color:var(--ink3);white-space:nowrap;min-width:64px;text-align:right}
.fr2{display:grid;grid-template-columns:1fr 2fr;gap:10px;margin-top:10px}
.pm{border:1px solid var(--line);background:rgba(255,255,255,.55);padding:8px 12px;margin-bottom:8px}

/* 战斗（移植自 v0.2） */
.bt-h{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.spd button{background:none;border:1px solid var(--line);padding:3px 10px;margin-left:4px;cursor:pointer;color:var(--ink2);font-size:12px}
.spd button.on{border-color:var(--dark);color:var(--dark);font-weight:600}
.field{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:12px 0}
.u{border:1px solid var(--line);padding:8px 10px;margin-bottom:6px;background:#fff;border-left:3px solid var(--moss)}
.u.enemy{border-left-color:var(--rust)}
.u.dead{opacity:.4}
.u-h{display:flex;justify-content:space-between;align-items:baseline}
.sts{min-height:16px}
.st{display:inline-block;font-style:normal;font-size:10.5px;padding:0 6px;border:1px solid;margin-right:4px;line-height:15px}
.st.bleed{color:var(--rust2)}.st.poison{color:#6b5b8a}.st.chill{color:#4f6d99}.st.guard{color:var(--brass2)}.st.shield{color:#4f7d99}
.blog{height:230px;overflow:auto;background:var(--dark);color:#e6dcc6;font-size:12.5px;padding:10px 14px;line-height:1.7}
.blog .h{color:var(--brass);font-weight:600;margin-top:4px}
.after{margin-top:14px}

/* 装备：物品驱动 / 切换按钮 / 格子 / 弹层 */
.row.clk{cursor:pointer}.row.clk:hover{background:rgba(0,0,0,.03)}.row.open{border-bottom:0;background:var(--paper2)}
.emenu{display:flex;flex-wrap:wrap;gap:6px;padding:8px 0 12px;border-bottom:1px solid var(--line)}
.seg{display:inline-flex;border:1px solid var(--line);margin-top:3px}
.seg button{background:#fff;border:0;border-right:1px solid var(--line);padding:6px 12px;cursor:pointer;color:var(--ink2);font-size:12px}
.seg button:last-child{border-right:0}.seg button.on{background:var(--dark);color:var(--paper)}
.slots{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}
.slot{background:#fff;border:1px solid var(--line);padding:8px 10px;text-align:left;cursor:pointer;line-height:1.4}
.slot small,.slot b{display:block}.slot.empty b{color:var(--ink3);font-weight:400}.slot:hover{border-color:var(--ink)}
.sheet-bg{position:fixed;inset:0;background:rgba(20,14,8,.45);z-index:20;display:flex;align-items:flex-end;justify-content:center}
.sheet{background:var(--paper);width:100%;max-height:80vh;overflow:auto;padding:16px 18px 24px;border-top:2px solid var(--brass)}
.opts{margin-top:8px}
.opt{display:block;width:100%;text-align:left;background:#fff;border:1px solid var(--line);padding:10px 14px;margin-bottom:8px;cursor:pointer;color:var(--ink)}
.opt small{display:block;color:var(--moss)}.opt:hover{border-color:var(--dark)}
@media (min-width:821px){.sheet-bg{align-items:center}.sheet{width:520px;border:1px solid var(--line);border-top:2px solid var(--brass)}}

/* 任务 */
.badge{display:inline-block;border:1px solid var(--brass2);color:var(--brass2);padding:0 6px;font-size:11px;letter-spacing:.1em;margin-right:8px;vertical-align:middle}
.qc{border:1px solid var(--line);background:rgba(255,255,255,.55);padding:12px 16px;margin-bottom:10px}
.qc .q-h{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.qc .q-h b{font-family:var(--serif);font-size:16px;letter-spacing:.1em}
.qc p{margin:6px 0 2px}
.dot{display:inline-block;background:var(--rust);color:#fff;border-radius:50%;width:16px;height:16px;line-height:16px;text-align:center;font-size:11px;margin-left:4px}
.sheet p{margin:8px 0;line-height:1.8}
/* 交易行 / 委托板 */
.ticker{display:flex;flex-wrap:wrap;gap:6px 10px;font-size:12px}
.tk{border:1px solid var(--line);padding:2px 8px;background:rgba(255,255,255,.5)}.tk b{margin:0 2px}.tk.ev{border-color:var(--brass);background:#f5ebcb}
.badge.urgent{border-color:var(--rust);color:var(--rust)}
.pin{display:inline-flex;gap:4px;align-items:center}.pin input{width:80px;margin:0;padding:4px 6px}
.banner{background:var(--dark);color:var(--paper);padding:12px 16px;margin-bottom:12px}.banner small{color:#b8ab93;display:block}
/* ===== 分层条（§0 第二层）===== */
.lbar{margin:6px 0 10px}
.ltabs{display:flex;gap:2px;border-bottom:1px solid var(--line);overflow-x:auto;-webkit-overflow-scrolling:touch}
.ltabs button{background:none;border:0;border-bottom:2px solid transparent;padding:8px 12px;color:var(--ink2);cursor:pointer;white-space:nowrap;font-size:13px}
.ltabs button.on{color:var(--ink);border-bottom-color:var(--brass);font-weight:600}
.ltabs button i{font-style:normal;color:var(--ink3);font-size:11px}
.lchips{display:flex;gap:6px 12px;align-items:center;flex-wrap:wrap;padding:8px 0 0}
.cg{display:inline-flex;gap:4px;align-items:center;flex-wrap:wrap}.cg>small{margin-right:2px}
.chip{background:#fff;border:1px solid var(--line);border-radius:12px;padding:3px 10px;font-size:12px;color:var(--ink2);cursor:pointer;white-space:nowrap}
.chip.on{background:var(--dark);color:var(--paper);border-color:var(--dark)}
.lq{width:150px;margin:0;padding:4px 8px;border-radius:12px;font-size:12px}
/* ===== 物品行（§1）===== */
.irow{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--line)}
.irow.clk{cursor:pointer}.irow.clk:hover{background:rgba(0,0,0,.03)}
.irow.dim>.ic{opacity:.5}
.irow.hot{background:#f5ebcb55;box-shadow:inset 3px 0 0 var(--brass)}
.ic{min-width:0;flex:1}.ic .sub{display:block;color:var(--ink3);margin-top:2px}
.ir{display:flex;align-items:center;gap:10px;white-space:nowrap;text-align:right}
.ir .num{font-size:12.5px;color:var(--ink2);text-align:right;line-height:1.35}
.tag{display:inline-block;font-style:normal;font-size:10.5px;padding:0 6px;border:1px solid var(--line);margin-left:3px;line-height:15px;vertical-align:middle;color:var(--ink3)}
.tag.t-worn{color:var(--brass2);border-color:var(--brass2)}.tag.t-ok{color:var(--moss);border-color:var(--moss)}.tag.t-no{color:var(--rust2);border-color:var(--rust2)}
.tag.t-new{color:#3978B8;border-color:#3978B8}.tag.t-urgent{color:var(--rust);border-color:var(--rust)}.tag.t-bind{color:#7B52B4;border-color:#7B52B4}.tag.t-type{background:var(--paper2)}
.up{color:var(--rust2)}.down{color:var(--moss)}
.ok{color:var(--moss)}.lack{color:var(--rust2)}
/* ===== 详情弹层（§3 五段）===== */
.sheet .sec{padding:8px 0;border-bottom:1px dashed var(--line)}.sheet .sec:last-child{border-bottom:0}
.sheet .sec>small{display:block;color:var(--ink3);letter-spacing:.1em;margin-bottom:4px}
.sheet .s1 h3{margin:0}
.big{display:flex;gap:16px;flex-wrap:wrap;font-size:14px}.big b{font-size:20px;font-family:var(--serif)}
.cmp{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:4px 0}.cmp span{color:var(--ink2);font-size:12.5px}
details summary{cursor:pointer;color:var(--ink3);font-size:12px}details p{margin:4px 0}
.handle{display:none}
/* ===== 角色页 ===== */
.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px}
.stat{background:#fff;border:1px solid var(--line);padding:8px 10px;text-align:left;cursor:default;line-height:1.3}
button.stat{cursor:pointer}button.stat:hover{border-color:var(--ink)}
.stat small,.stat b{display:block}.stat b{font-size:18px;font-family:var(--serif)}
.sgroup{margin-top:12px}.sgroup>small{display:block;letter-spacing:.1em;margin-bottom:4px}
.slots.s8{grid-template-columns:repeat(4,1fr)}
.track{display:block;width:100%;font-size:12px;color:var(--brass);cursor:pointer;margin-top:4px}
.qc.on{border-color:var(--brass);box-shadow:inset 3px 0 0 var(--brass)}
.nnote{font-size:10px;fill:#b8ab93}
.legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12px;color:var(--ink2);padding:8px 24px;background:var(--paper2);border-bottom:1px solid var(--line)}
.lg{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:4px;vertical-align:middle;border:1.5px solid #8a7a5f}.lg.cur{background:#f1eadb;border-color:var(--brass)}.lg.seen{background:var(--brass)}.lg.near{background:#2b2119;border-style:dashed}

/* 建号 */
.title{display:grid;grid-template-columns:1.1fr 1fr;gap:40px;max-width:1040px;margin:0 auto;padding:60px 24px;min-height:100vh;align-items:center}
.lore h1{font-size:64px;letter-spacing:.3em;margin:0;line-height:1;color:var(--dark)}
.lore .sub{font-size:14px;letter-spacing:.5em;color:var(--brass2);margin:10px 0 26px 4px}
.lore p{font-size:15px;line-height:1.9}
.form{border:1px solid var(--line);background:rgba(255,255,255,.55);padding:26px 28px}
.form label{display:block;font-size:12px;color:var(--ink3);margin-bottom:14px}
.clsgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}   /* 刀 2c：六家族三列 */
.cls{border:1px solid var(--line);padding:12px 14px;cursor:pointer;background:#fff}
.cls b{display:block;font-family:var(--serif);font-size:17px;letter-spacing:.15em}
.cls small{display:block;margin-top:3px}
.cls.on{border-color:var(--brass);background:var(--paper2);box-shadow:inset 3px 0 0 var(--brass)}

@media (max-width:820px){
  .two,.title,.field,.fr2{grid-template-columns:1fr}.clsgrid{grid-template-columns:1fr 1fr;gap:6px}.cls{padding:8px 10px}.cls b{font-size:15px}
  .slots{grid-template-columns:1fr 1fr}
  .ticker{font-size:11px}
  .two.bld-open>div:last-child{order:-1}   /* 手机：进了建筑就把面板放最上面，一屏看到能做什么 */
  .sheet{max-height:85vh;border-radius:12px 12px 0 0;padding-top:8px}
  .handle{display:block;width:40px;height:4px;border-radius:2px;background:var(--line);margin:0 auto 10px}
  .lchips{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px}
  .cg{flex-wrap:nowrap}.cg.sort{margin-left:auto}
  .lq{width:110px;flex:none}
  .irow{flex-wrap:wrap}.ir{width:100%;justify-content:space-between}
  .slots.s8{grid-template-columns:1fr 1fr}
  .stats{grid-template-columns:1fr 1fr}
  .legend{padding:8px 16px}
  .title{padding:30px 18px;gap:20px}.lore h1{font-size:44px}
  .body{padding:16px 16px 40px}
  .hd{padding:10px 16px}.hd-r{gap:10px;font-size:12px}
  .strip{padding:8px 16px}
  .row{flex-wrap:wrap}
}

/* ===== 密度规格 §6（1f.2 闸门 1：全局字号/顶带/分层条 + 背包格 + 交易行行） ===== */
:root{--fs-t:18px;--fs-b:14px;--fs-s:12px;--rowh:44px;--cell:56px}
html,body{font-size:var(--fs-b);font-family:var(--serif);line-height:1.45}
button,input,select,textarea{font-family:var(--serif);font-size:var(--fs-b)}
h1,h2,h3{font-size:var(--fs-t);margin:0 0 8px}
small,.meta,.s{font-size:var(--fs-s)}
.hd{height:auto;min-height:48px;padding:0 12px;gap:0 12px;row-gap:0;align-items:center;font-size:var(--fs-b)}
.hd .hd-r{height:48px;align-items:center}
.hd .hd-l b{font-size:var(--fs-t);letter-spacing:.2em}.hd .hd-r{gap:12px;font-size:var(--fs-b);flex-wrap:nowrap;white-space:nowrap;overflow:hidden}
.hd{flex-wrap:wrap}.trackbar{flex-basis:100%;height:24px;display:flex;align-items:center;gap:8px;font-size:var(--fs-s);color:var(--brass);cursor:pointer;overflow:hidden;white-space:nowrap}
.trackbar.fold .track{display:none}.trackbar small{color:#b8ab93}
.tabs{padding:0 8px}.tabs button{padding:0 12px;height:40px;font-size:var(--fs-b);letter-spacing:0}
.body{padding:12px 12px 32px}
.panel{padding:12px}.two{gap:12px}
.lbar{margin:0 0 8px}.ltabs{height:40px}.ltabs button{height:38px;padding:0 12px}
.lrow{display:flex;gap:4px;align-items:center;height:36px;overflow-x:auto;overflow-y:hidden;white-space:nowrap;-webkit-overflow-scrolling:touch;padding:0 0 0 0}
.lrow::-webkit-scrollbar{display:none}
.lchips{display:flex;gap:4px 12px;flex-wrap:wrap;padding:4px 0 8px;border-bottom:1px solid var(--line)}
.chip{height:28px;padding:0 10px;border-radius:14px;font-size:var(--fs-s);flex:none}
.lq{width:120px;height:28px;padding:0 8px;border-radius:14px;flex:none;margin:0}
.cap{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-s);color:var(--ink3);flex:none;margin-left:auto}.cap i{display:inline-block;width:64px;height:6px;background:var(--line)}.cap i b{display:block;height:100%;background:var(--brass)}
.row,.irow{min-height:var(--rowh);padding:4px 0;gap:8px}
.btn{padding:6px 12px;letter-spacing:0}.btn.s{height:28px;padding:0 10px;font-size:var(--fs-s)}
/* 背包格：桌面固定 56px、间距 4 */
.cells{display:grid;grid-template-columns:repeat(auto-fill,var(--cell));gap:4px;margin:4px 0 8px}
.cel{position:relative;width:var(--cell);height:var(--cell);border:1px solid var(--line);background:#fff;padding:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;cursor:pointer;overflow:hidden;font-family:inherit}
.cel b{font-size:var(--fs-t);line-height:1.1}.cel small{font-size:var(--fs-s);color:var(--ink2);max-width:100%;padding:0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}
.cel em{position:absolute;right:2px;bottom:0;font-style:normal;font-size:var(--fs-s);font-weight:600;color:var(--ink)}
.cel.q0{border-color:#b7b9b3}.cel.q1{border-color:#35865B}.cel.q1 b{color:#35865B}.cel.q2{border-color:#3978B8}.cel.q2 b{color:#3978B8}.cel.q3{border-color:#7B52B4}.cel.q3 b{color:#7B52B4}.cel.q4{border-color:#C96F32}.cel.q4 b{color:#C96F32}.cel.q5{border-color:#C6A13A}.cel.q5 b{color:#C6A13A}
.cel.dim{opacity:.4}
.cel .mk{position:absolute;font-style:normal;font-size:var(--fs-s);line-height:1}.cel .mk.rec{left:3px;top:2px;color:#3f6b3a;font-weight:700}.cel .mk.new{right:3px;top:3px;width:6px;height:6px;border-radius:50%;background:#3978B8}.cel .mk.low{left:4px;right:4px;bottom:2px;height:2px;background:#b5563f}
.grp{display:flex;align-items:center;gap:8px;height:28px;margin-top:4px}.grp b{font-size:var(--fs-b)}.grp small{flex:1}
/* 交易行：三栏，行高 40 */
.ev{display:flex;gap:8px;align-items:center;height:32px;padding:0 12px;background:#f5ebcb;border:1px solid var(--line);font-size:var(--fs-s);margin-bottom:8px;overflow:hidden;white-space:nowrap}.ev b{font-size:var(--fs-b)}
.xframe{display:grid;grid-template-columns:160px 1fr;gap:8px;align-items:start}
.two>*,.body,.xframe>*{min-width:0}
.tree{border:1px solid var(--line);background:rgba(255,255,255,.5);padding:4px 0}
.tree .g,.tree .l{display:flex;justify-content:space-between;align-items:center;height:32px;padding:0 10px;cursor:pointer;font-size:var(--fs-b)}
.tree .l{padding-left:22px;color:var(--ink2);font-size:var(--fs-s)}.tree .g.open{color:var(--brass2);font-weight:600}.tree .l.on{background:#f5ebcb;color:var(--ink);box-shadow:inset 2px 0 0 var(--brass)}.tree .g.off{opacity:.45;cursor:default}
.xlist{min-width:0}
.bld6{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.bld6 .bld{margin:0;padding:10px 12px;min-height:64px}
@media (max-width:820px){.bld6{grid-template-columns:1fr 1fr}}
.xrow{display:flex;align-items:center;gap:8px;height:40px;border-bottom:1px solid var(--line);cursor:pointer;white-space:nowrap}
.xrow.open{background:#f5ebcb66}.xrow.dim>.xn{opacity:.45}
.xrow .xn{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.xrow .xp{width:64px;text-align:right;flex:none;font-weight:600}.xrow .xc{width:96px;text-align:right;flex:none;font-size:var(--fs-s);color:var(--ink3)}.xrow .xd{width:56px;text-align:right;flex:none;font-size:var(--fs-s)}
.xrow .btn.s{flex:none;height:28px;min-width:64px}
.xsub{background:rgba(0,0,0,.03);padding-left:16px}.xsub .xrow{height:36px;font-size:var(--fs-s);cursor:default}
.mobile-only{display:none}
@media (max-width:820px){
  :root{--fs-t:16px;--fs-b:13px;--fs-s:11px;--rowh:40px}
  .hd{min-height:44px;padding:0 8px;gap:0}.hd .hd-l{display:none}.hd .hd-r{height:44px;gap:8px;width:100%;justify-content:space-between}.hd .hd-r #hd-loc{display:none}
  .lrow .mobile-only{order:-1}.lrow .lq{width:96px}
  .body{padding:8px 12px 32px}.panel{padding:10px}
  .cells{grid-template-columns:repeat(6,1fr)}
  .cel{width:auto;height:auto;aspect-ratio:1/1}
  .xframe{grid-template-columns:1fr}.tree{display:none}.xframe.tree-open .tree{display:block}
  .xrow .xc{display:none}.xrow .xp{width:56px}.xrow .xd{width:44px}
  .mobile-only{display:inline-flex}
  .two.bld-open>div:first-child{display:none}
}


/* ===== 1f.2 补丁 a–d：右侧常驻栏 / 双卡 / 手机搜索 ===== */
.ws{display:grid;grid-template-columns:minmax(0,1fr) 264px;gap:12px;align-items:start}
.ws-m{min-width:0}
.side{position:sticky;top:8px;border:1px solid var(--line);background:rgba(255,255,255,.5);padding:8px;font-size:var(--fs-s)}
.side .acts{margin-top:8px;gap:4px}.side .acts .btn{width:100%;justify-content:center;text-align:center}.side .emenu{border:0;padding:0;gap:4px;flex-direction:column}.side .emenu .btn{width:100%;text-align:left}
.side .ctabs{margin-bottom:6px}.ctabs{display:flex;gap:4px;align-items:center;flex-wrap:wrap;margin-bottom:6px}.ctabs small{margin-right:4px}
.mini{display:grid;grid-template-columns:1fr 56px 1fr;gap:4px;align-items:start}.mini.one{grid-template-columns:1fr}
.mini .card{padding:6px}.mini .c-s{gap:4px 8px}.mini .c-s b{font-size:var(--fs-b)}.mini .c-h b{font-size:var(--fs-b)}
.sum small{display:block;letter-spacing:.1em;margin:4px 0}.srow{display:flex;gap:6px;align-items:center;height:28px;border-bottom:1px dashed var(--line);cursor:pointer}.srow b{flex:1;font-weight:400}.srow span{color:var(--ink3)}
.card{border:1px solid var(--line);background:#fff;padding:10px 12px;min-width:0}
.card.q1{border-color:#35865B}.card.q2{border-color:#3978B8}.card.q3{border-color:#7B52B4}.card.q4{border-color:#C96F32}.card.q5{border-color:#C6A13A}.card.empty{background:transparent;border-style:dashed}
.c-t{display:block;letter-spacing:.1em;color:var(--ink3);margin-bottom:2px}
.c-h b{display:block;font-size:var(--fs-t);font-family:var(--serif);line-height:1.2}.c-h small{display:block}
.dur{display:block;height:4px;background:var(--line);margin-top:4px}.dur i{display:block;height:100%;background:var(--brass)}
.c-s{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px}.c-s span small{display:block;line-height:1}.c-s b{font-size:18px;font-family:var(--serif)}
.c-x{margin-top:8px;padding-top:6px;border-top:1px dashed var(--line);font-size:var(--fs-s);color:var(--ink2)}
.c-src{margin-top:6px;display:flex;flex-wrap:wrap;gap:4px;align-items:center}.c-src>small{margin-right:2px}
.diff{display:flex;flex-direction:column;gap:6px;align-items:center;justify-content:center;height:100%;padding:8px 0}
.diff .d{text-align:center;line-height:1.15}.diff .d b{display:block;font-size:var(--fs-b);font-family:var(--serif)}.diff .d small{display:block;font-size:10px}.diff .d.up b{color:var(--moss)}.diff .d.down b{color:var(--rust2)}
.dual{display:grid;grid-template-columns:1fr 72px 1fr;gap:8px;align-items:stretch}.dual.one{grid-template-columns:1fr}
.dual .sec{padding:0;border:0}.same{margin:6px 0 0}
.sheet .s6{padding-top:8px}
.xrow.sel{box-shadow:inset 3px 0 0 var(--brass)}
@media (min-width:821px){.sheet{width:720px;max-width:96vw}}
@media (max-width:820px){
  .ws{display:block}.side{display:none}
  .lrow .lq{display:none}.lrow .lq.open{display:block;flex:1;width:auto;min-width:0}
  .lrow.qopen .chip:not(.mobile-only){display:none}
  .dual{grid-template-columns:1fr 1fr;gap:4px}.dual>.s4{grid-column:1/3;order:3}.diff{flex-direction:row;flex-wrap:wrap;gap:4px 12px;padding:4px 0}
  .card{padding:8px}.c-s b{font-size:16px}
}

/* ===== 1f.2 背包返工（制作人 2026-09-15）：左栏纸娃娃 320 + 8×64 连续格网；SVG 剪影图标 ===== */
.ico{display:inline-block;width:24px;height:24px;vertical-align:middle;fill:currentColor;flex:none}
.irow .ico,.xrow .ico{width:24px;height:24px;color:var(--ink2);margin-right:4px}
.irow{align-items:center}.irow>.ico{align-self:center}
.xrow .xn{display:flex;align-items:center;gap:6px}
.bagwrap{display:grid;grid-template-columns:320px 540px;gap:12px;align-items:start;max-width:872px;margin:0 auto}
.bagl{position:sticky;top:8px;display:flex;flex-direction:column;gap:8px}
.doll{border:1px solid var(--line);background:rgba(255,255,255,.5);padding:8px}
.d-h{display:flex;align-items:baseline;gap:6px;height:28px}.d-h b{font-size:var(--fs-t);font-family:var(--serif)}.d-h small{flex:1}.d-h .btn{align-self:center}
.doll2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:4px;margin-top:4px}.doll2>div{display:flex;flex-direction:column;gap:4px;min-width:0}
.doll2 .slot{height:56px;display:flex;align-items:center;gap:6px;padding:4px 6px;border:2px solid var(--line);margin:0;text-align:left;min-width:0;overflow:hidden;width:100%}
.doll2 .slot .ico{width:30px;height:30px;color:var(--ink2)}.doll2 .slot .ico.ph{opacity:.3}
.doll2 .slot span{min-width:0}.doll2 .slot b{display:block;font-size:var(--fs-s);font-family:inherit;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.doll2 .slot small{display:block;font-size:10px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.doll2 .slot.empty{border-style:dashed;background:transparent}.doll2 .slot.empty b{color:var(--ink3)}
.doll2 .slot.q1{border-color:#35865B}.doll2 .slot.q2{border-color:#3978B8}.doll2 .slot.q3{border-color:#7B52B4}.doll2 .slot.q4{border-color:#C96F32}.doll2 .slot.q5{border-color:#C6A13A}
.dstats{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin-top:4px}.dstats .stat{padding:4px 2px;text-align:center;line-height:1.2}.dstats .stat b{font-size:var(--fs-b);font-family:var(--serif)}.dstats .stat small{font-size:10px}
.cmpcard{border:1px solid var(--line);background:rgba(255,255,255,.5);padding:8px;font-size:var(--fs-s)}
.cmpcard .acts{margin-top:8px;gap:4px}.cmpcard .acts .btn{width:100%;text-align:center}.cmpcard .emenu{border:0;padding:0;gap:4px;flex-direction:column}.cmpcard .emenu .btn{width:100%;text-align:left}
.cmpcard .mini{grid-template-columns:1fr 52px 1fr}
.cells.bag{display:grid;grid-template-columns:repeat(8,64px);gap:4px;margin:4px 0 8px}
.cells.bag .cel{width:64px;height:64px;border-width:2px;justify-content:flex-start;gap:0}
.cells.bag .cel .ico{width:34px;height:34px;margin:5px 0 0;color:var(--ink2)}
.cells.bag .cel small{position:absolute;left:0;right:0;bottom:0;height:20px;line-height:20px;padding:0 3px;font-size:11px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}
.cells.bag .cel em{position:absolute;right:2px;bottom:19px;font-style:normal;font-size:11px;line-height:1;font-weight:700;color:var(--ink);background:rgba(255,255,255,.85);padding:0 2px}
.cells.bag .cel u{position:absolute;left:2px;right:2px;bottom:0;height:2px;background:var(--rust);text-decoration:none}
.cels .mks,.cel .mks{position:absolute;left:1px;top:1px;display:flex;flex-direction:column;gap:1px;font-style:normal;z-index:1}
.cel .mks b{font-size:10px;line-height:11px;padding:0 2px;background:rgba(255,255,255,.85);font-weight:700}.cel .mks .rec{color:#3f6b3a}.cel .mks .new{color:#3978B8}.cel .mks .bind{color:#7B52B4}
.cel.q0{border-color:#b7b9b3}.cel.dim{opacity:.45}
.cel.sel{outline:2px solid var(--brass);outline-offset:1px;background:#f5ebcb}
.cel.empty{border:1px dashed var(--line);background:transparent;cursor:default;opacity:.7}
.cel .mk{display:none}
/* 手机：纸娃娃缩略条 + 6 列 */
.dmini{border:1px solid var(--line);background:rgba(255,255,255,.5);padding:4px 6px;margin-bottom:6px}
.dm-t{display:flex;align-items:center;gap:6px;min-height:28px}.dm-t .ctabs{margin:0;flex:1;min-width:0;overflow:hidden;flex-wrap:nowrap}.dm-t>span{font-size:var(--fs-s);white-space:nowrap;margin-left:auto}.dm-t>span b{font-size:var(--fs-b)}.dm-s{display:flex;gap:3px;margin-top:3px}
.dm-s .slot{width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;border:2px solid var(--line);margin:0}.dm-s .slot .ico{width:20px;height:20px;color:var(--ink2)}.dm-s .slot .ico.ph{opacity:.3}
.dm-s .slot.empty{border-style:dashed;background:transparent}.dm-s .slot.q1{border-color:#35865B}.dm-s .slot.q2{border-color:#3978B8}.dm-s .slot.q3{border-color:#7B52B4}.dm-s .slot.q4{border-color:#C96F32}.dm-s .slot.q5{border-color:#C6A13A}
@media (max-width:820px){
  .bagwrap{display:block}
  .cells.bag{grid-template-columns:repeat(6,1fr)}
  .cells.bag .cel{width:auto;height:auto;aspect-ratio:1/1}.cells.bag .cel .ico{width:30px;height:30px;margin-top:4px}
  .cells.bag .cel small{height:18px;line-height:18px;font-size:10px}.cells.bag .cel em{bottom:17px}
}

/* ===== 1f.2 闸门 2：角色（魔兽面板）/ 任务（任务日志）/ 地图（节点卡）/ 镇（角标 + 通知）/ 商人（左列表右面板）/ 结算格网 ===== */
/* 角色 */
.hero-top{display:flex;align-items:center;gap:8px;margin-bottom:8px}.hero-top .ltabs{flex:1;border-bottom:1px solid var(--line)}.hero-top .ltabs button i{font-style:normal;color:var(--ink3);font-size:var(--fs-s)}
.hero3{display:grid;grid-template-columns:320px minmax(0,1fr) 260px;gap:12px;align-items:start}
.attrs .stats{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:4px}.attrs .stat{padding:4px 8px}.attrs .stat b{font-size:var(--fs-t)}.attrs .sgroup{margin-top:6px}.attrs .sgroup>small{margin-bottom:2px}
.skl{border:1px solid var(--line);background:rgba(255,255,255,.5);padding:8px}
.sslots{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}
.ss{height:48px;border:2px solid var(--line);background:#fff;padding:2px 4px;display:flex;flex-direction:column;justify-content:center;min-width:0;overflow:hidden}
.ss b{font-size:var(--fs-s);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ss small{font-size:10px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ss.dim{opacity:.5}.ss.lock{border-style:dashed;background:transparent;opacity:.55}.ss.lock i{font-style:normal;font-size:10px;color:var(--ink3)}
.form{margin-top:12px}.frow{display:flex;gap:8px;align-items:flex-start;margin-top:4px}.frow>small{width:36px;flex:none;padding-top:8px;letter-spacing:.1em}.fcs{flex:1;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;min-width:0}
.fc{border:1px solid var(--line);background:rgba(255,255,255,.55);padding:8px 10px;min-width:0;cursor:pointer;text-align:left}.fc.on{border-color:var(--brass);box-shadow:inset 3px 0 0 var(--brass)}
.fc-h{display:flex;align-items:baseline;gap:6px}.fc-h b{font-size:var(--fs-b)}.fc-h small{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fc .bar{margin:4px 0}.fc-r{display:flex;gap:6px;flex-wrap:wrap}.fc-r .seg{margin:0}.fc-r .seg button{padding:3px 8px;font-size:var(--fs-s)}
.fc-t{display:block;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fc.empty{border-style:dashed;background:transparent;min-height:96px}.fc.empty b{display:block}.fc.empty small{display:block}
/* 任务 */
.qwrap{display:grid;grid-template-columns:320px minmax(0,1fr);gap:12px;align-items:start}
.qtree{border:1px solid var(--line);background:rgba(255,255,255,.5);padding:0 8px 8px}
.qrow{display:flex;align-items:center;gap:8px;height:40px;padding:0 6px;border-bottom:1px solid var(--line);cursor:pointer}
.qrow .qn{flex:1;min-width:0}.qrow .qn b{display:block;font-size:var(--fs-b);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qrow .qn small{display:block;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qrow .qp{flex:none;font-size:var(--fs-s);color:var(--ink2);min-width:36px;text-align:right}
.qrow.on{box-shadow:inset 3px 0 0 var(--brass)}.qrow.sel{background:#f5ebcb}.qrow.hot .qp{color:var(--moss);font-weight:600}
.qdet{border:1px solid var(--line);background:rgba(255,255,255,.5);padding:12px}
.qd-h{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.qd-h b{font-size:var(--fs-t);font-family:var(--serif)}
.qdesc{margin:6px 0}.qsteps{margin-top:6px}.qsteps>small,.qrew>small{display:block;letter-spacing:.1em;margin-bottom:2px}
.qs{display:flex;gap:6px;align-items:baseline;min-height:24px}.qs i{font-style:normal;width:14px;flex:none;color:var(--ink3)}.qs span{flex:1}.qs b{font-family:var(--serif)}
.qs.done{color:var(--ink3);text-decoration:line-through}.qs.cur{font-weight:600}.qs.cur i{color:var(--brass2)}
.qrew{margin-top:8px}.cells.rew{display:grid;grid-template-columns:repeat(auto-fill,64px);gap:4px;margin:2px 0 0}
.cells.rew .cel{width:64px;height:64px;border-width:2px;justify-content:flex-start}.cells.rew .cel .ico{width:30px;height:30px;margin-top:5px;color:var(--ink2)}
.cells.rew .cel small{position:absolute;left:0;right:0;bottom:0;height:20px;line-height:20px;padding:0 3px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;color:var(--ink2)}
.cells.rew .cel em{position:absolute;right:2px;bottom:19px;font-style:normal;font-size:11px;font-weight:700;background:rgba(255,255,255,.85);padding:0 2px}
.cel.txt{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;cursor:default;font-style:normal}.cel.txt b{font-size:var(--fs-t);font-family:var(--serif);margin-top:8px;line-height:1.2}
.qcard{border:1px solid var(--line);background:rgba(255,255,255,.5);padding:10px 12px;margin-bottom:8px}
/* 地图 */
.mapwrap{margin:-12px -12px 0;border-bottom:1px solid var(--line)}
.mapbox{background:var(--dark);overflow:hidden}.mapsvg{position:relative}
.map{min-width:0;max-width:none;display:block;width:100%;height:calc(100vh - 236px);min-height:360px}.mapbox.has-card .map{height:calc(100vh - 380px);min-height:320px}
.node.sel circle:not(.tq){stroke:#fff;stroke-width:3}.node .tq{fill:none;stroke:var(--brass);stroke-width:3;stroke-dasharray:6 4}
.mtrack{position:absolute;right:12px;top:12px;background:rgba(43,33,25,.9);border:1px solid var(--brass2);color:#e6dcc6;padding:6px 10px;font-size:var(--fs-s);max-width:260px;display:flex;flex-direction:column;gap:2px}.mtrack b{color:var(--brass);font-size:var(--fs-b)}.mtrack .lnk{color:#e6dcc6;align-self:flex-start}
.legend.ov{position:absolute;left:12px;bottom:12px;width:150px;flex-direction:column;background:rgba(43,33,25,.85);color:#e6dcc6;border:1px solid #5a4a38;padding:4px 10px;font-size:var(--fs-s);gap:2px}.lg.tq{background:transparent;border:2px dashed var(--brass)}
.mhint{background:var(--paper2);padding:8px 12px;font-size:var(--fs-s);color:var(--ink2);border-top:1px solid var(--line);height:36px;display:flex;align-items:center;gap:4px}
.ncard{background:var(--paper);border-top:2px solid var(--brass);padding:8px 12px;min-height:96px}
@media (min-width:821px){.mapbox .ncard{margin:0 12px 12px;border:1px solid var(--brass2)}}
.nc-h{display:flex;align-items:baseline;gap:8px}.nc-h b{font-size:var(--fs-t);font-family:var(--serif)}.nc-h small{flex:1}
.ncard p{margin:4px 0}.ncard .acts{margin-top:6px;gap:6px}.ncard .num{font-size:var(--fs-s);color:var(--ink2)}
/* 镇 */
.bld{position:relative}.bdg{position:absolute;right:8px;top:8px;font-style:normal;font-size:var(--fs-s);border:1px solid var(--line);background:#fff;padding:0 6px;line-height:20px;color:var(--ink2)}.bdg.hot{border-color:var(--rust);color:var(--rust);font-weight:600}
.noti-w{position:relative}.noti{position:absolute;right:0;top:32px;width:300px;background:var(--paper);border:1px solid var(--line);box-shadow:0 6px 18px rgba(0,0,0,.15);z-index:5;padding:4px 8px}
.nrow{padding:4px 0;border-bottom:1px dashed var(--line);cursor:pointer;min-height:36px}.nrow b{display:block;font-size:var(--fs-b);font-weight:400}.nrow small{display:block}.nrow:hover{background:rgba(0,0,0,.03)}
/* 商人 */
.shop{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:12px;align-items:start}
.shoplist{min-width:0}.shoppanel{position:sticky;top:8px;border:1px solid var(--line);background:rgba(255,255,255,.5);padding:8px;font-size:var(--fs-s)}
.shoppanel .acts{margin-top:8px;gap:4px}.shoppanel .acts .btn{width:100%;text-align:center}.shoppanel .emenu{border:0;padding:0;gap:4px;flex-direction:column}.shoppanel .emenu .btn{width:100%;text-align:left}.shoppanel .mini{grid-template-columns:1fr 52px 1fr}
.ltabs.sub{height:36px;margin-bottom:6px;align-items:center;gap:4px}.ltabs.sub button{height:34px;font-size:var(--fs-s)}.ltabs.sub .chip{margin-left:auto}
.mats{margin-top:6px}.mats>small{display:block;letter-spacing:.1em}.mrow{display:flex;align-items:center;gap:6px;height:28px}.mrow span{flex:1}.mrow.ok b{color:var(--moss)}.mrow.lack b{color:var(--rust2)}.mrow .ico{width:20px;height:20px;color:var(--ink2)}
.buyrow{display:flex;align-items:center;gap:6px;margin-top:6px;flex-wrap:wrap}.buyrow b{font-size:var(--fs-b)}
.stp{display:inline-flex;align-items:center;gap:4px}.stp .btn{width:28px;padding:0}.stp b{min-width:24px;text-align:center;font-size:var(--fs-b)}
/* 战斗 */
.field .side-e,.field .side-a{min-width:0}
.after .cells.rew{margin-bottom:8px}
@media (max-width:820px){
  .hero3{grid-template-columns:1fr}.fcs{grid-template-columns:1fr 1fr}.frow>small{width:28px}
  .qwrap{grid-template-columns:1fr}.qdet{margin-top:8px}
  .mapwrap{margin:-8px -12px 0}.map{height:44vh;min-height:0}.map .nlabel{font-size:22px}.map .glyph{font-size:26px}.map .nnote,.map .elabel{display:none}.node circle{r:34px}.node.cur circle{r:38px}.node .tq{r:44px}
  .mtrack{right:6px;top:6px;max-width:170px;padding:4px 8px}.legend.ov{left:6px;top:6px;bottom:auto;width:auto;flex-direction:row;padding:2px 8px;font-size:10px;max-width:190px}.legend.ov span:last-child{display:none}.mapbox .ncard{margin:0}
  .shop{grid-template-columns:1fr}.shoppanel{display:none}
  .noti{width:min(300px,calc(100vw - 32px))}
  .hero-top{flex-wrap:wrap}.hero-top .ltabs{width:100%;order:2}
}

/* ===== 刀 1g：战斗文字逐行淡入、锁定节点、驻扎 ===== */
@keyframes fi{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.blog div:last-child{animation:fi .7s ease-out}
.node.lock circle{fill:#2b2119;stroke:#5a4a38;stroke-dasharray:2 3}.node.lock .glyph{fill:#8a7a5f}.node.lock .nlabel{fill:#8a7a5f}
.sheet .sgroup{margin-top:8px}.sheet .sgroup>small{display:block;letter-spacing:.1em;margin-bottom:4px}

/* ===== 刀 2a：技能页签（魔兽技能书 + 天赋面板）、法力条 ===== */
.bar.mp .bt i{background:#4f6d99}
.hero-top .ltabs.sub2{flex:none;border:0;gap:0}.hero-top .ltabs.sub2 button{padding:0 10px}
.plans{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:0 0 8px}.plans .lq{width:110px}
.skwrap{display:grid;grid-template-columns:260px minmax(0,1fr) 260px;gap:12px;align-items:start}.skwrap>*{min-width:0}.skr{min-width:0}
.sklist{border:1px solid var(--line);background:rgba(255,255,255,.5);padding:0 8px 8px;max-height:70vh;overflow:auto}
.skr{display:flex;flex-direction:column;justify-content:center;min-height:40px;padding:4px 6px;border-bottom:1px solid var(--line);cursor:pointer;position:relative}
.skr b{font-size:var(--fs-b);line-height:1.2}.skr small{display:block;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.skr.dim{opacity:.45}.skr.sel{background:#f5ebcb;box-shadow:inset 3px 0 0 var(--brass)}
.xpb{position:absolute;left:6px;right:6px;bottom:2px;height:3px;background:var(--line)}.xpb u{display:block;height:100%;background:var(--brass)}
.slots10,.slots5{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}
.s10{display:flex;align-items:center;gap:8px;min-height:40px;border:2px solid var(--line);background:#fff;padding:4px 8px;cursor:pointer;flex-wrap:wrap}
.s10>i{font-style:normal;width:22px;height:22px;line-height:22px;text-align:center;border:1px solid var(--line);font-size:var(--fs-s);color:var(--ink3);flex:none}
.s10>span{flex:1;min-width:0}.s10>span b{font-size:var(--fs-b)}.s10>span small{display:block;line-height:1.2}
.s10.empty{border-style:dashed;background:transparent}.s10.empty>span{color:var(--ink3)}
.s10.open{border-color:var(--brass);background:#f5ebcb66}.s10ops{width:100%;padding-top:4px;border-top:1px dashed var(--line)}.s10ops .acts{margin-top:6px}
.side.skd{position:sticky;top:8px}
@media (max-width:820px){.skwrap{grid-template-columns:minmax(0,1fr)}.sklist{max-height:40vh}.side.skd{position:static;display:block}.slots10{flex-direction:row;overflow-x:auto;-webkit-overflow-scrolling:touch}.slots10 .s10{flex:none;width:200px;flex-wrap:nowrap}.slots10 .s10.open{flex-wrap:wrap;width:100%}.slots10 .s10ops .ctabs{flex-wrap:nowrap;overflow-x:auto}}

/* ===== 刀 2b：地点页节点图（盐荒海图 → 羊皮纸）、大地图底图与印章、文字表演、事件弹层 ===== */
.ico.li{width:16px;height:16px;vertical-align:-3px;margin-right:4px;color:var(--brass2)}
.blog .ico.li,.strip .ico.li{color:var(--brass)}
b.nd{color:#e0704f}b.nh{color:#7fb36a}b.ns{color:#7fa6d4}.loglist b.nd{color:var(--rust2)}.loglist b.nh{color:var(--moss)}.loglist b.ns{color:#3f5f88}
.loc-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}.loc-h h3{margin:0}.loc-tags{display:flex;gap:4px;flex-wrap:wrap;margin-left:auto}
.nmap-wrap{overflow-x:auto;overflow-y:hidden;background:#efe6d2;border:1px solid var(--line);margin-bottom:8px;-webkit-overflow-scrolling:touch}
.nmap{position:relative;min-height:96px}
.nmap-svg{position:absolute;left:0;top:0}
.nm-edge{fill:none;stroke:#b8ab93;stroke-width:2;stroke-dasharray:6 5}.nm-edge.on{stroke:var(--brass);stroke-width:3;stroke-dasharray:none}.nm-edge.fog{opacity:.25}
.nm-node{position:absolute;width:52px;height:52px;border-radius:50%;border:2px solid var(--line);background:#fff;padding:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;cursor:default;font-family:inherit}
.nm-node .ico{width:20px;height:20px;color:var(--ink2)}.nm-node small{font-size:10px;line-height:1;max-width:48px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--ink2)}
.nm-node.here{border-color:var(--brass);box-shadow:0 0 0 3px #f5ebcb,0 0 0 5px var(--brass);background:#f5ebcb}
.nm-node.can{border-color:var(--ink);cursor:pointer}.nm-node.can:hover{background:#f5ebcb}
.nm-node.done{opacity:.55}.nm-node.fog{opacity:.35;border-style:dashed}.nm-node.fog .ico{color:var(--ink3)}
.nm-node.k-boss{border-color:var(--rust)}.nm-node.k-boss .ico{color:var(--rust2)}.nm-node.k-elite .ico{color:#7B52B4}.nm-node.k-camp .ico{color:var(--brass2)}.nm-node.k-treasure .ico{color:#C6A13A}.nm-node.k-gather .ico{color:var(--moss)}.nm-node.k-sub{border-color:#5a4a38}
.ncard2 p{margin:4px 0}
.quips{margin:6px 0;padding:6px 8px;background:rgba(0,0,0,.03);border-left:2px solid var(--brass)}.quips div{font-size:var(--fs-s);line-height:1.6}.quips b{margin-right:4px}
.opt.dim{opacity:.45}
/* 大地图 */
.bigmapbox{position:relative;background:#e7dfcb;overflow:hidden;aspect-ratio:5/3;max-height:calc(100vh - 330px);max-width:calc((100vh - 330px) * 5 / 3);min-height:300px;margin:0 auto}.mapwrap:has(.bigmapbox){background:#d9cfb6}
.mapimg{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;display:block}
.warm{position:absolute;inset:0;background:#c9a457;opacity:.08;pointer-events:none;mix-blend-mode:multiply}
.mapbox .bigmap,.mapbox.has-card .bigmap{position:absolute;inset:0;width:100%;height:100%;min-height:0;max-height:none}
.road{fill:none;stroke:#5a4a38;stroke-width:3;opacity:.75;stroke-linecap:round}.road.near{stroke-dasharray:7 6}.road.on{stroke:var(--brass);stroke-width:4;opacity:1}
.bigmap .elabel{font-size:11px;fill:#3f3226;paint-order:stroke;stroke:#f1eadb;stroke-width:3px}
.stamp .ring{fill:#f1eadb;stroke:#8a7a5f;stroke-width:3}.stamp.t2 .ring{stroke:#b5723f}.stamp.t3 .ring{stroke:#8f9aa8}.stamp .face{fill:#f7f1e3;stroke:#cdbfa3;stroke-width:1}
.stamp .glyph{color:#2b2119;fill:#2b2119}.stamp.near .face{fill:#e7dfcb}.stamp.near .glyph{fill:#8a7a5f;color:#8a7a5f}.stamp.near .ring{stroke-dasharray:4 3}
.stamp.cur .ring{stroke:var(--brass);stroke-width:4}.stamp.sel .ring{stroke:#2b2119;stroke-width:4}
.stamp .breath{fill:none;stroke:var(--brass);stroke-width:2;opacity:0;animation:breath 2.4s ease-out 1}
@keyframes breath{0%{opacity:0;r:26}40%{opacity:.9}100%{opacity:0;r:44}}
.stamp .plate{fill:#f1eadb;stroke:#8a7a5f;stroke-width:1;opacity:.95}.stamp .nlabel{font-size:12px;fill:#2b2119;font-family:var(--serif)}
.stamp.lock .face{fill:#cdbfa3;opacity:.8}.stamp.lock .glyph{fill:#5a4a38;color:#5a4a38}
.stamp .tq{fill:none;stroke:var(--brass);stroke-width:3;stroke-dasharray:6 4}
.stamp .badge{stroke:#f1eadb;stroke-width:1.5}.badge.c-force{fill:var(--rust)}.badge.c-tide{fill:var(--moss)}.badge.c-omen{fill:#7B52B4}
.mstamp{position:absolute;left:12px;top:12px;background:rgba(241,234,219,.92);border:2px solid #8a7a5f;padding:4px 12px;font-family:var(--serif);font-size:var(--fs-t);letter-spacing:.2em;color:#2b2119;transform:rotate(-2deg)}.mstamp small{display:block;letter-spacing:0;font-size:var(--fs-s);color:var(--ink3)}
.compass{position:absolute;right:12px;top:12px;width:44px;height:44px;color:#2b2119;opacity:.85}.compass svg{width:44px;height:44px}
.bigmapbox .mtrack{top:64px;right:12px;background:rgba(241,234,219,.94);border:1px solid #8a7a5f;color:#2b2119}.bigmapbox .mtrack b{color:var(--rust2)}.bigmapbox .mtrack .lnk{color:#2b2119}.bigmapbox .mtrack>span{font-size:var(--fs-s)}
.bigmapbox .legend.ov{background:rgba(241,234,219,.94);color:#2b2119;border:1px solid #8a7a5f;width:auto;flex-direction:column}.lg.t1{border:2px solid #8a7a5f;background:transparent}.lg.t2{border:2px solid #b5723f;background:transparent}.lg.t3{border:2px solid #8f9aa8;background:transparent}
.mnote{position:absolute;right:12px;bottom:12px;font-size:var(--fs-s);color:#3f3226;background:rgba(241,234,219,.85);padding:2px 8px;border:1px solid #8a7a5f}
.credits{margin-top:16px}.credits summary{cursor:pointer;font-size:var(--fs-s);color:var(--ink3)}
@media (max-width:820px){.bigmapbox{max-height:none;max-width:none;min-height:0}.nm-node{width:44px;height:44px}.nm-node .ico{width:18px;height:18px}
  .mstamp{font-size:var(--fs-b);padding:2px 8px;letter-spacing:.1em}.mstamp small{display:none}.compass{width:28px;height:28px;right:6px;top:6px}.compass svg{width:28px;height:28px}
  .bigmapbox .mtrack{top:auto;bottom:6px;right:6px;left:auto;max-width:46%;padding:2px 6px;font-size:10px}.bigmapbox .mtrack .lnk{display:none}
  .bigmapbox .legend.ov{top:auto;bottom:6px;left:6px;right:auto;flex-direction:row;flex-wrap:wrap;gap:2px 6px;max-width:50%;padding:2px 6px;font-size:10px}.bigmapbox .legend.ov span:nth-child(n+4){display:none}
  .mnote{display:none}.bigmap .elabel{display:none}
  .stamp .ring{r:40px}.stamp .face{r:33px}.stamp .glyph{transform:scale(1.5);transform-origin:center;transform-box:fill-box}.stamp .plate{display:none}
  .stamp .nlabel{font-size:26px;paint-order:stroke;stroke:#f1eadb;stroke-width:6px;font-weight:bold}.stamp .badge{r:9px}.stamp .tq{r:48px}.stamp .breath{display:none}}

/* ===== 刀 2c：转职（三卡）/ 天赋面板（魔兽经典：三列方格链）/ 许可 ===== */
.advhead{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.advhead small{color:var(--ink3)}
.advgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:8px}
.advc{border:1px solid var(--line);background:#fff;padding:10px 12px;cursor:pointer}.advc.on{border-color:var(--brass);background:var(--paper2);box-shadow:inset 3px 0 0 var(--brass)}.advc p{margin:6px 0;font-size:var(--fs-s);line-height:1.6}.advc .c-h b{font-family:var(--serif);font-size:var(--fs-t)}.advc .meta{margin:4px 0}
.talhead{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.talhead small{color:var(--ink3)}
.tal{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.talcol{border:1px solid var(--line);background:rgba(255,255,255,.5);padding:8px;display:flex;flex-direction:column;align-items:center}.talcol.mine{border-color:var(--brass)}
.talb{width:100%;display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--line);padding-bottom:6px;margin-bottom:6px}.talb b{font-family:var(--serif)}
.tnode{width:100%;max-width:220px;display:grid;grid-template-columns:22px 1fr;grid-template-rows:auto auto;column-gap:6px;align-items:center;text-align:left;border:2px solid var(--line);background:#fff;padding:6px 8px;cursor:default;font-family:inherit;color:var(--ink3)}
.tnode i{grid-row:1/3;font-style:normal;font-size:var(--fs-s);width:22px;height:22px;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;background:var(--paper2)}
.tnode b{font-size:var(--fs-b)}.tnode small{font-size:var(--fs-s)}
.tnode.can{border-color:var(--ink);color:var(--ink);cursor:pointer}.tnode.can:hover{background:var(--paper2)}
.tnode.on{border-color:var(--brass);background:#f5ebcb;color:var(--ink)}.tnode.on i{background:var(--brass);color:#fff;border-color:var(--brass)}
.tnode.mech{border-style:double;border-width:4px}.tnode.mech i{background:var(--ink);color:#fff}.tnode.mech.on i{background:var(--rust)}
.tlink{width:2px;height:12px;background:var(--line)}.tlink.on{background:var(--brass)}
.allow .lack{color:var(--rust2)}
@media (max-width:820px){.advgrid{grid-template-columns:1fr}.tal{display:flex;overflow-x:auto;gap:8px;-webkit-overflow-scrolling:touch}.talcol{flex:0 0 78%;}.tnode{max-width:none}}

/* ===== 刀 2d：名册（暗黑地牢兵营）/ 招募卡 / 仓库 / 好感条 ===== */
.roster{display:grid;grid-template-columns:320px minmax(0,1fr);gap:12px;align-items:start}
.rlist{display:flex;flex-direction:column;gap:6px}
.rc{display:grid;grid-template-columns:24px 1fr auto;gap:8px;align-items:center;text-align:left;border:1px solid var(--line);background:#fff;padding:8px 10px;cursor:pointer;font-family:inherit;color:var(--ink)}
.rc.on{border-color:var(--brass);background:var(--paper2);box-shadow:inset 3px 0 0 var(--brass)}.rc .ico{width:22px;height:22px;color:var(--ink2)}
.rc-m{min-width:0}.rc-m b{display:block}.rc-m small{color:var(--ink3);display:block}
.aff{position:relative;height:8px;background:var(--line);margin:4px 0 2px;border-radius:2px}.aff i{position:absolute;left:0;top:0;bottom:0;background:var(--rust2);border-radius:2px}.aff small{position:absolute;right:0;top:9px;font-size:10px;color:var(--ink3)}
.rc-m .aff{margin-bottom:12px}
.rdetail{border:1px solid var(--line);background:rgba(255,255,255,.5);padding:12px}
.rd-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}.rd-h .ico{width:28px;height:28px}.rd-h b{font-family:var(--serif);font-size:var(--fs-t)}.rd-h .acts{margin-left:auto}
.rd-doll{margin:8px 0}.rd-doll .doll{max-width:360px}
.afft{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin:8px 0}.afft div{border:1px solid var(--line);padding:4px 6px;opacity:.5}.afft div.on{opacity:1;border-color:var(--brass);background:var(--paper2)}.afft b{display:block;font-size:var(--fs-b)}.afft small{font-size:10px;line-height:1.3;display:block}
.rgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.rcand{border:1px solid var(--line);background:#fff;padding:10px;display:flex;flex-direction:column;gap:4px}.rcand.dim{opacity:.6}.rcand b{font-family:var(--serif)}.rcand .ico{width:22px;height:22px;color:var(--ink2)}.rcand p{margin:0;flex:1}.rcand .btn{align-self:flex-start}
.whwrap{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}.whcol .cells{max-height:60vh;overflow:auto}.whact{grid-column:1/3;border-top:1px solid var(--line);padding-top:8px}
.cel.lack b{color:var(--rust2)}
@media (max-width:820px){.roster{grid-template-columns:1fr}.rgrid{grid-template-columns:1fr 1fr}.whwrap{grid-template-columns:1fr}.whact{grid-column:auto}.afft{grid-template-columns:repeat(5,1fr)}.afft small{display:none}}

/* ===== 刀 2e：词条 / 强化 / 套装 / 副本条 ===== */
.affx,.affl{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0}.affx span,.affl span{border:1px solid var(--line);background:#fff;padding:1px 6px;font-size:var(--fs-s);color:#3f5f88}.affx span.fix{border-color:var(--brass);color:var(--rust2)}.affl b{color:var(--rust2)}
.setp{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:8px}.setc{border:1px solid var(--line);background:#fff;padding:8px 10px;opacity:.6}.setc.on{opacity:1;border-color:var(--brass)}.setc b{font-family:var(--serif)}.setc small{margin-left:6px;color:var(--ink3)}.setc div{font-size:var(--fs-s);color:var(--ink3)}.setc div.on{color:var(--moss);font-weight:600}
.ev.dg{height:auto;min-height:32px;padding:6px 12px;line-height:1.5}
.goal{margin-top:8px}
@media (max-width:820px){.setp{grid-template-columns:1fr}}

/* 刀 2f：七门卡四列、钱袋 */
.prof7{grid-template-columns:repeat(4,1fr)}.prof7 .cls .acts{margin-top:6px}.prof7 .cls small+small{color:var(--ink2)}
.wallet{margin-bottom:8px}
@media (max-width:820px){.prof7{grid-template-columns:1fr 1fr}}

/* ===== 刀 2s：固定舞台（样稿 lorne_文档/样稿_2s/lorne_stage_mock.html；桌面 1280×800 等比缩放，手机 390×844）===== */
html,body{height:100%;overflow:hidden;background:#15100c}
body{min-height:0;display:block}
#app{position:fixed;inset:0;overflow:hidden}
.stage{position:absolute;left:50%;top:50%;width:1280px;height:800px;transform:translate(-50%,-50%) scale(var(--s,1));transform-origin:center;background:var(--paper);border:6px solid #4a3a28;box-shadow:0 0 0 2px var(--brass),0 30px 80px rgba(0,0,0,.6);display:grid;grid-template-rows:48px minmax(0,1fr) 144px;grid-template-columns:282px minmax(0,1fr) 282px;grid-template-areas:"top top top" "left main right" "bottom bottom bottom";overflow:hidden;box-sizing:content-box}
.stage.panel{grid-template-areas:"top top top" "left main main" "bottom bottom bottom"}.stage.panel .st-right{display:none}
.stage.scene-title{display:block}.stage.scene-title .st-main{position:absolute;inset:0;overflow:auto}
.st-top{grid-area:top;background:var(--dark);color:var(--paper);display:flex;align-items:center;gap:12px;padding:0 12px;border-bottom:2px solid var(--brass);white-space:nowrap;overflow:hidden;min-width:0}
.st-top .logo{font-family:var(--serif);font-size:var(--fs-t);letter-spacing:.25em;flex:none}
.st-top .tabs{background:none;border:0;padding:0;flex:none;overflow:visible}.st-top .tabs button{height:46px;padding:0 10px;color:#cfc3ad}.st-top .tabs button.on{color:var(--brass);border-bottom-color:var(--brass)}
.st-status{display:flex;gap:12px;align-items:center;margin-left:auto;font-size:var(--fs-s);color:#e6dcc6;min-width:0;overflow:hidden}.st-status span{white-space:nowrap}.st-status .ico.li{color:var(--brass)}
.st-status .stam.low{color:#e28b7a}
.st-gear{flex:none;background:none;border:1px solid #8c7a5c;color:#efe7d6;width:32px;height:32px;cursor:pointer;font-size:16px;line-height:1;padding:0}
.st-nav{grid-area:nav;display:none}
.st-left{grid-area:left;border-right:1px solid var(--line);padding:10px;background:var(--paper2);overflow:auto;min-height:0}
.st-right{grid-area:right;border-left:1px solid var(--line);padding:10px;background:var(--paper2);overflow:auto;min-height:0}
.st-main{grid-area:main;overflow:auto;position:relative;min-height:0;min-width:0}
.st-main>.body{max-width:none;margin:0;padding:10px 14px 16px;width:auto}
.st-bottom{grid-area:bottom;border-top:2px solid var(--brass);background:var(--dark);color:#e6dcc6;display:grid;grid-template-columns:minmax(0,1fr) 300px;min-height:0}
.st-log{padding:8px 12px;font-size:var(--fs-s);overflow:auto;line-height:1.7;min-width:0}.st-log div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.st-log .ico.li{color:var(--brass)}.st-log b.nd{color:#e28b7a}.st-log b.nh{color:#8fc9a0}.st-log b.ns{color:#8fb3d9}.st-log div.h{color:var(--brass)}
.st-acts{padding:10px;border-left:1px solid #5a4a36;display:flex;flex-wrap:wrap;gap:6px;align-content:flex-start}
.st-acts .btn{padding:6px 12px;font-size:var(--fs-s);border-color:var(--brass);background:var(--dark2);color:#efe7d6}.st-acts .btn.o{background:transparent;color:#efe7d6;border-color:#8c7a5c}.st-acts .btn.on{background:var(--brass);color:var(--dark);border-color:var(--brass)}
.st-acts .btn:disabled{opacity:.35}
.st-left h4,.st-right h4{font-size:var(--fs-b);letter-spacing:.15em;margin:0 0 6px;color:var(--ink2);font-weight:600}
.st-left .card,.st-right .card{padding:6px 8px;margin-bottom:6px;background:rgba(255,255,255,.55)}
.pm2{display:flex;justify-content:space-between;align-items:baseline;font-size:var(--fs-s)}.pm2 b{font-size:var(--fs-b)}.pm2 small{color:var(--ink3)}
.bar2{height:6px;background:#d6cbb0;margin:3px 0}.bar2 i{display:block;height:100%;background:var(--moss)}.bar2.mp i{background:#4f6d99}.bar2.en i{background:var(--brass)}.bar2.e i{background:var(--rust)}.bar2.thick{height:8px}
.card.dead{opacity:.45}
.goal{font-size:var(--fs-s);padding:4px 0;border-bottom:1px dashed var(--line)}.goal b{color:var(--moss);margin-right:4px}.goal i{font-style:normal;color:var(--ink3);margin-right:4px}
.home3 .card{cursor:pointer;border-left:4px solid var(--line)}.home3 .card.l-story{border-left-color:#a0402f}.home3 .card.l-loot{border-left-color:#4b6f8f}.home3 .card.l-gather{border-left-color:#4f7a5d}
.home3 .card b{display:block;font-family:var(--serif);font-size:var(--fs-b)}.home3 .card p{margin:2px 0 4px;font-size:var(--fs-s);color:var(--ink2)}.home3 .card .btn{width:100%;text-align:center}
.notice{font-size:var(--fs-s);color:var(--rust2);padding:3px 0;border-bottom:1px dashed var(--line)}
/* 场景转场（≤500ms，设置可关，尊重 prefers-reduced-motion） */
.veil{position:absolute;inset:0;z-index:30;pointer-events:none;opacity:0}
.stage.tr{pointer-events:none}
.stage.tr-battle{animation:st-shake .4s}
.stage.tr-battle .veil{background:#000;animation:veil-close .5s ease-in both}
.stage.tr-battle .st-main{animation:main-open .5s ease-out both}
.stage.tr-flash .veil{background:#fff;animation:veil-fade .45s ease-out both}
.stage.tr-map .st-main{animation:map-unroll .5s ease-out both}
.stage.tr-field .st-main{animation:stamp-zoom .45s ease-out both}
.stage.tr-town .veil{background:linear-gradient(#2b2119,#2b2119 60%,transparent);animation:veil-lintel .5s ease-out both}
.stage.tr-settle .st-main{animation:rise .45s ease-out both}
@keyframes st-shake{0%,100%{transform:translate(-50%,-50%) scale(var(--s,1))}20%{transform:translate(calc(-50% - 6px),calc(-50% + 3px)) scale(var(--s,1))}40%{transform:translate(calc(-50% + 5px),calc(-50% - 4px)) scale(var(--s,1))}60%{transform:translate(calc(-50% - 3px),calc(-50% + 2px)) scale(var(--s,1))}80%{transform:translate(calc(-50% + 2px),calc(-50% - 1px)) scale(var(--s,1))}}
@keyframes veil-close{0%{opacity:1;clip-path:inset(0 0 0 0)}55%{opacity:1;clip-path:inset(0 0 0 0)}100%{opacity:1;clip-path:inset(50% 50% 50% 50%)}}
@keyframes main-open{0%{transform:scaleY(.02);opacity:0}50%{transform:scaleY(.02);opacity:0}100%{transform:scaleY(1);opacity:1}}
@keyframes veil-fade{0%{opacity:1}100%{opacity:0}}
@keyframes map-unroll{0%{clip-path:inset(0 50% 0 50%)}100%{clip-path:inset(0 0 0 0)}}
@keyframes stamp-zoom{0%{transform:scale(1.6);opacity:0}100%{transform:scale(1);opacity:1}}
@keyframes veil-lintel{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-100%)}}
@keyframes rise{0%{transform:translateY(100%)}100%{transform:translateY(0)}}
@media (prefers-reduced-motion:reduce){.stage.tr,.stage.tr .veil,.stage.tr .st-main{animation:none!important}}
.stage.nofx,.stage.nofx .veil,.stage.nofx .st-main{animation:none!important}
/* 说明条 / 通知 */
.hint{display:flex;gap:8px;align-items:center;font-size:var(--fs-s);color:var(--ink2);background:#f5ebcb;border:1px solid var(--line);padding:4px 10px;margin:0 0 8px}.hint .lnk{margin-left:auto;font-size:var(--fs-s)}
.toasts{position:absolute;left:296px;top:56px;z-index:25;display:flex;flex-direction:column;gap:4px;max-width:360px;pointer-events:none}
.toast{background:rgba(43,33,25,.94);color:#f1eadb;border:1px solid var(--brass);padding:6px 10px;font-size:var(--fs-s);animation:fi .3s}
/* 节点图（纵向，30 个）：入口在下、出口在上 */
.nmv{position:relative;margin:0 auto}.nmv .nmap-svg{position:absolute;left:0;top:0}
.nm-node.k-elite{border-color:#7B52B4}.nm-node.k-prisoner .ico{color:var(--rust2)}.nm-node.k-caravan .ico{color:var(--brass2)}.nm-node.k-altar .ico,.nm-node.k-ruin .ico{color:#6b5b8a}.nm-node.k-hidden{border-style:dotted}.nm-node.k-exit{border-color:var(--moss)}
.nm-node .rate{position:absolute;right:-3px;top:-3px;width:10px;height:10px;border-radius:50%;border:1px solid #fff}.rate.easy{background:var(--moss)}.rate.mid{background:#C6A13A}.rate.hard{background:var(--rust)}
.depth{position:sticky;top:0;float:right;font-size:var(--fs-s);color:var(--ink3);background:rgba(241,234,219,.9);padding:2px 6px;z-index:2}
.nact{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.nact .btn{padding:4px 8px;font-size:var(--fs-s)}
/* 战斗（舞台版）：血条粗 8px、名字 14、状态标签 */
.bfield{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:8px 0}.bfield .side{display:flex;flex-direction:column;justify-content:center;gap:8px;min-width:0}
.bu{border:1px solid var(--line);background:#fff8;padding:6px 10px;border-left:4px solid var(--moss);min-width:0}.bu.e{border-left-color:var(--rust)}.bu.dead{opacity:.4}.bu.act{box-shadow:0 0 0 2px var(--brass)}
.bu .n{display:flex;justify-content:space-between;align-items:baseline;font-size:var(--fs-b)}.bu .n b{font-size:14px}.bu .n small{color:var(--ink3)}
.bu .sts{min-height:14px;margin-top:2px}.bu.pick{cursor:pointer;outline:2px dashed var(--brass);outline-offset:2px}
.vs{text-align:center;font-size:var(--fs-s);color:var(--ink3);letter-spacing:.2em;margin:4px 0}
.key{border:2px solid #a0402f;background:#fff6;padding:8px}.key h4{color:#a0402f}.key p{font-size:var(--fs-s);margin:0 0 6px}
.key .opt{padding:6px 8px;margin-bottom:6px}.key .opt small{color:var(--ink3)}
.intent{font-size:var(--fs-s);padding:3px 0;border-bottom:1px dashed var(--line)}.intent b{color:var(--rust2)}
.mmenu .btn{margin:2px 4px 2px 0}.mlist{max-height:200px;overflow:auto;margin-top:6px}.mlist .opt{padding:4px 8px;margin-bottom:4px;font-size:var(--fs-s)}.mlist .opt.dim{opacity:.45}
/* 探索报告 */
.report{max-width:640px;margin:0 auto}.report .c-s b{font-size:var(--fs-t)}.report .goal b{font-size:var(--fs-b)}
/* 手机舞台 */
.stage.m{width:390px;height:844px;grid-template-rows:44px 36px minmax(0,1fr) 150px;grid-template-columns:minmax(0,1fr);grid-template-areas:"top" "nav" "main" "bottom"}
.stage.m.panel{grid-template-areas:"top" "nav" "main" "bottom"}
.stage.m .st-left,.stage.m .st-right{display:none}
.stage.m .st-top{padding:0 8px;gap:6px}.stage.m .st-top .logo,.stage.m .st-top .tabs{display:none}.stage.m .st-status{margin-left:0;gap:8px;font-size:11px;flex:1;justify-content:space-between}.stage.m .st-gear{width:28px;height:28px}
.stage.m .st-nav{display:flex;background:var(--paper2);border-bottom:1px solid var(--line)}.stage.m .st-nav button{flex:1;height:36px;background:none;border:0;border-bottom:2px solid transparent;color:var(--ink2);font-size:var(--fs-s)}.stage.m .st-nav button.on{color:var(--ink);border-bottom-color:var(--brass);font-weight:600}
.stage.m .st-bottom{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) 46px}.stage.m .st-log{padding:4px 10px;font-size:11px;line-height:1.6}
.stage.m .st-acts{border-left:0;border-top:1px solid #5a4a36;padding:6px 8px;gap:6px;flex-wrap:nowrap;overflow-x:auto}.stage.m .st-acts .btn{padding:4px 10px;font-size:11px;white-space:nowrap;flex:none}
.stage.m .st-main>.body{padding:8px 12px 12px}
.strip{display:flex;gap:6px;margin-bottom:6px}.strip .card{flex:1;padding:4px 6px;margin:0;font-size:11px;min-width:0}.strip .pm2 b{font-size:11px}
.stage.m .side-inline{margin-top:8px}
.stage.m .bfield{grid-template-columns:1fr;gap:6px}.stage.m .bfield .side{gap:4px}.stage.m .bu{padding:4px 8px}
.stage.m .toasts{top:84px;right:8px;left:8px;max-width:none}
.stage.m .sheet-bg{align-items:flex-end}
.stage .mapwrap{margin:-10px -14px 0}.stage .bigmapbox{max-height:none;max-width:100%;min-height:0}.stage.m .mapwrap{margin:-8px -12px 0}

/* ===================== 刀 2v：大地图 v3（画布）/ 搜索 / 关注公示 / 背包仓库并排 ===================== */
.stage[data-scene="map"] .st-main{overflow:hidden}
.stage[data-scene="map"] .st-main>.body{height:100%;display:flex;flex-direction:column;padding:0}
.stage[data-scene="map"] .st-main>.body>.hint{margin:6px 10px 0}
.mapv3{flex:1;min-height:0;display:flex;flex-direction:column}
.mv-bar{height:36px;flex:none;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 10px;background:var(--paper2);border-bottom:1px solid var(--line);overflow-x:auto;white-space:nowrap}
.mv-tabs,.mv-layers{display:flex;gap:4px;align-items:center}
.mv-layers .chip{background:var(--paper);color:var(--ink2);border:1px solid var(--line);opacity:.6}.mv-layers .chip.on{opacity:1;color:#fff!important}
.mv-layers .chip.lay-story.on{background:#9b3d2e}.mv-layers .chip.lay-loot.on{background:#3e6a8a}.mv-layers .chip.lay-gather.on{background:#55733f}.mv-layers .chip.lay-encounter.on{background:#2b2119}.mv-layers .chip.lay-hidden.on{background:#7B52B4}
.mv-layers .chip.lay-story.on{border-color:#9b3d2e;color:#9b3d2e}.mv-layers .chip.lay-loot.on{border-color:#3e6a8a;color:#3e6a8a}.mv-layers .chip.lay-gather.on{border-color:#55733f;color:#55733f}.mv-layers .chip.lay-encounter.on{border-color:#2b2119;color:#2b2119}.mv-layers .chip.lay-hidden.on{border-color:#7B52B4;color:#7B52B4}
.mv-box{flex:1;min-height:0;position:relative;background:#d9cfb6;overflow:hidden;touch-action:none}
.mv-box canvas{position:absolute;left:0;top:0;display:block;cursor:grab;touch-action:none}.mv-box canvas:active{cursor:grabbing}
.mv-box .mstamp{pointer-events:none}
.mv-zoom{position:absolute;right:10px;bottom:10px;display:flex;flex-direction:column;gap:4px}.mv-zoom .btn{width:32px;height:32px;padding:0;background:rgba(241,234,219,.94);color:#2b2119;border:1px solid #8a7a5f;font-size:16px;line-height:1}
.mv-box .legend.ov{left:10px;bottom:10px;top:auto;right:auto;width:auto;flex-direction:row;gap:10px;background:rgba(241,234,219,.94);color:#2b2119;border:1px solid #8a7a5f;padding:2px 8px;font-size:var(--fs-s);pointer-events:none}
.lg.l-enc{background:#2b2119}.lg.rg,.lg.ry,.lg.rr{background:transparent;border:3px solid #4f8f3a;width:8px;height:8px;border-radius:50%;margin-right:1px}.lg.ry{border-color:#c9a227}.lg.rr{border-color:#b3362b}
.rate{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:4px 0;padding:4px 8px;border-left:4px solid var(--line);background:var(--paper2);font-size:var(--fs-s)}
.rate.g{border-left-color:#4f8f3a}.rate.y{border-left-color:#c9a227}.rate.r{border-left-color:#b3362b}
.rate .ring{padding:0 6px;color:#fff;border-radius:2px}.rate .ring.g{background:#4f8f3a}.rate .ring.y{background:#c9a227}.rate .ring.r{background:#b3362b}.rate small{color:var(--ink2)}
.skulls{display:inline-flex;gap:1px}.skulls .ico{width:12px;height:12px;color:var(--ink)}
.stage.m[data-scene="map"] .st-main{overflow:auto}
.stage.m[data-scene="map"] .st-main>.body{height:auto;display:block}
.stage.m .mapv3{display:block}.stage.m .mv-box{height:380px}.stage.m .mv-bar{height:36px;padding:0 6px}.stage.m .mv-bar .chip{padding:2px 7px;font-size:11px}
.stage.m .mv-box .legend.ov{font-size:10px;gap:6px;left:6px;bottom:6px;max-width:none}.stage.m .mv-zoom{right:6px;bottom:6px}
/* 顶带搜索 */
.st-search{width:170px;height:28px;margin-left:10px;padding:0 8px;background:#3a2d22;border:1px solid #5a4a36;color:#e6dcc6;font-size:var(--fs-s);font-family:inherit}.st-search::placeholder{color:#9a8c78}
.st-find{font-size:12px!important;margin-left:4px}
.stage.m .st-find{width:28px;height:28px;margin-left:4px;flex:none}
.sq{display:flex;align-items:center;gap:8px;margin:6px 0 8px}.sq input{flex:1;height:32px;padding:0 8px;border:1px solid var(--line);background:#fff;font-size:var(--fs-b);font-family:inherit}
.sres{border:1px solid var(--line);background:var(--paper2);padding:6px 8px;margin:4px 0}.sres.row{display:flex;align-items:center;gap:8px}.sres.row .meta{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-h{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.sr-h .ico{width:18px;height:18px}.sr-h .num{margin-left:auto;font-size:var(--fs-s);color:var(--ink2)}
.sr-l{font-size:var(--fs-s);margin-top:2px;line-height:1.5}.sr-l small{display:inline-block;min-width:34px;color:var(--ink2)}.sres .acts{margin-top:4px}
/* 交易行：关注星 / 公示行 */
.lnk.star{font-size:16px;text-decoration:none;color:var(--ink2);padding:0 6px}.lnk.star.on{color:var(--brass2,#b8923a)}
.xrow.pub .pin input{width:70px}
/* 背包 | 仓库 并排（桌面）：56px 格，背包 8 列 + 仓库 4 列 */
.bagwrap.with-wh{grid-template-columns:222px 476px 224px;gap:10px;max-width:952px}.bagwrap.with-wh .doll2 .slot span small{display:none}
.bagwrap.with-wh .cells.bag{grid-template-columns:repeat(8,56px)}.bagwrap.with-wh .cells.bag .cel{width:56px;height:56px}.bagwrap.with-wh .cells.bag .cel .ico{width:28px;height:28px;margin:3px 0 0}.bagwrap.with-wh .cells.bag .cel small{height:18px;line-height:18px;font-size:10px}.bagwrap.with-wh .cells.bag .cel em{bottom:17px}
.bagwh{border-left:1px solid var(--line);padding-left:8px;position:sticky;top:8px;min-width:0}
.cells.wh{display:grid;grid-template-columns:repeat(4,50px);gap:4px;margin:4px 0 8px}.cells.wh .cel{width:50px;height:50px;border-width:2px;justify-content:flex-start;gap:0;position:relative}.cells.wh .cel .ico{width:28px;height:28px;margin:3px 0 0;color:var(--ink2)}
.cells.wh .cel small{position:absolute;left:0;right:0;bottom:0;height:18px;line-height:18px;padding:0 2px;font-size:10px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}.cells.wh .cel em{position:absolute;right:2px;bottom:17px;font-style:normal;font-size:11px;font-weight:700;background:rgba(255,255,255,.85);padding:0 2px}
.whmove .btn{width:100%}
/* 刀 2w：存档码 / 更新日志 */
.ccode{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:4px 0}.ccode b{font-family:ui-monospace,Consolas,monospace;font-size:16px;letter-spacing:.08em;padding:4px 10px;background:var(--paper2);border:1px dashed var(--brass2,#b8923a);user-select:all}.ccode.big b{font-size:22px;padding:8px 14px}
.ccode input{height:30px;width:170px;padding:0 8px;border:1px solid var(--line);font-family:ui-monospace,Consolas,monospace;text-transform:uppercase}
.clog{margin:4px 0 8px 18px;padding:0;font-size:var(--fs-s);line-height:1.7}
.campidle .c-s{margin-top:6px}

/* ---- 刀 2v 战斗页密度：敌方紧凑条 40px / 日志 ≥50% 高 14px 一行一句 / 一行收获 ---- */
.stage[data-scene="battle"] .st-main>.body{height:100%;display:flex;flex-direction:column;padding-bottom:8px}
.benemy{display:flex;flex-direction:column;gap:2px;flex:none}
.be.bu{height:40px;box-sizing:border-box;padding:0 10px;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.5fr) minmax(0,1fr);gap:8px;align-items:center}
.be .n{display:flex;gap:8px;align-items:baseline;justify-content:flex-start;min-width:0;white-space:nowrap;overflow:hidden}.be .n small{overflow:hidden;text-overflow:ellipsis}
.be .hpw{position:relative;min-width:0}.be .hpw .bar2{height:12px;margin:0}.be .hpw small{position:absolute;inset:0;text-align:center;font-size:11px;line-height:12px;color:#fff;text-shadow:0 0 2px #000}
.be .sts{min-height:0;margin:0;white-space:nowrap;overflow:hidden;text-align:right}
.bt-log{flex:1 1 50%;min-height:50%;margin-top:6px;border:1px solid var(--line);background:var(--dark);color:#e6dcc6;font-size:14px;line-height:1.7;padding:6px 12px;overflow:auto}
.st-log.bt-log div{white-space:normal;overflow:visible}
.stage[data-scene="battle"] .after{margin-top:6px;flex:none}
.after .arow{display:flex;align-items:center;gap:8px;min-width:0}.after .ah{flex:none;display:flex;flex-direction:column;line-height:1.3}.after .ah small{color:var(--ink3);font-size:var(--fs-s)}
.after .cells.rew.row1{flex:1;min-width:0;display:flex;flex-wrap:nowrap;overflow-x:auto;gap:4px;margin:0}.after .cells.rew.row1 .cel{flex:none;width:40px;height:40px}.after .cells.rew.row1 .cel.txt b{font-size:12px}.after .cells.rew.row1 .cel.txt small{font-size:10px}
.after .arow>.btn{flex:none}
.stage.m[data-scene="battle"] .st-main>.body{height:auto;display:block}
.stage.m .bt-log{height:310px;min-height:0;font-size:14px;padding:4px 10px}
.stage.m .be.bu{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) minmax(0,.8fr);padding:0 8px;gap:6px}
/* ---- 刀 2v 完整任务卡 / 任务紧凑行 ---- */
.qlist{border:1px solid var(--line);background:rgba(255,255,255,.5);padding:0 8px}
.qrow .tag{flex:none}.qrow .qg{flex:none;max-width:30%;color:var(--ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qrow .qt{flex:none;width:14px;font-style:normal;color:var(--brass2);text-align:center}.qrow .qp{min-width:48px}
.qfull{border:1px solid var(--brass);background:#fffaf0;padding:8px 10px;margin:2px 0 6px;max-height:200px;overflow:auto;box-sizing:border-box;cursor:default}
.qfull.free{max-height:none}
.qf-h{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;line-height:1.4}.qf-h b{font-size:var(--fs-b);font-family:var(--serif)}.qf-h small{color:var(--ink3);font-size:var(--fs-s)}.qf-h .qf-due{margin-left:auto}
.qf-rec{font-size:var(--fs-s);color:var(--rust);white-space:nowrap}.qf-rec.peace{color:var(--moss)}.qf-rec .skulls{margin-left:4px}.qf-rec .skulls .ico{width:12px;height:12px}
.qf-story{margin:4px 0;font-size:13px;line-height:20px;color:var(--ink2);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;cursor:pointer}.qf-story.open{display:block;-webkit-line-clamp:unset;overflow:visible}
.qfull.free .qf-story{cursor:default}
.qf-steps{display:flex;flex-wrap:wrap;gap:2px 12px;font-size:13px;line-height:20px}.qf-steps .qs{display:inline-flex;min-height:0;gap:4px}.qf-steps .qs span{flex:none}
.qf-foot{display:flex;align-items:center;gap:8px;margin-top:4px;min-width:0}.qf-acts{flex:none;display:flex;gap:6px;margin-left:auto}
.cells.rew.row1{flex:1;min-width:0;display:flex;flex-wrap:nowrap;overflow-x:auto;gap:4px;margin:0}.cells.rew.row1 .cel{flex:none;width:40px;height:40px}.cells.rew.row1 .cel.txt b{font-size:12px}.cells.rew.row1 .cel.txt small{font-size:10px;max-width:38px;overflow:hidden;white-space:nowrap}
.irow.sel{background:#f5ebcb}.irow[onclick]{cursor:pointer}
.sheet .qfull{margin:6px 0}
/* ---- 刀 2v 商店格网：格 64（手机 6 列约 57）· 价格角标 · 可用 / 不可用 ---- */
.cells.bag.shopg{grid-template-columns:repeat(auto-fill,64px)}
.cells.shopg .cel em.price{right:1px;bottom:19px;font-size:11px;font-weight:700;color:#8a6a1c;background:rgba(255,250,235,.92);padding:0 2px;border:1px solid #d9c48a;line-height:13px}
.cells.shopg .cel em.price.poor{color:var(--rust2);border-color:var(--rust)}
.cells.shopg .cel .mks b.ok{color:#3f6b3a}.cells.shopg .cel .mks b.no{color:var(--rust2)}
.cells.shopg .cel.no{background:#f6e9e4}.cells.shopg .cel.no .ico{opacity:.55}
.cells.shopg .cel .own{position:absolute;right:1px;top:1px;font-size:10px;line-height:11px;color:var(--ink3);background:rgba(255,255,255,.85);padding:0 2px}
@media (max-width:820px){.cells.bag.shopg{grid-template-columns:repeat(6,1fr)}.cells.shopg .cel em.price{bottom:17px;font-size:10px}}
@media (max-width:820px){.cells.bag.shopg{gap:2px}}

/* ---- 刀 2y-1 战斗 v2：两排六格棋盘 / 指令卡 / 特效（代码画，≤600ms） ---- */
.bgrid{display:grid;grid-template-columns:minmax(0,1fr) 40px minmax(0,1fr);gap:4px;flex:none;margin-top:2px}
.bside{display:grid;grid-template-columns:1fr 1fr;gap:4px;min-width:0}.bcol{display:flex;flex-direction:column;gap:4px;min-width:0}.bcol>small{font-size:10px;color:var(--ink3);text-align:center;line-height:12px;letter-spacing:.2em}
.bmid{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--ink3);font-family:var(--serif)}.bmid .combo{font-style:normal;font-weight:700;color:var(--rust2);font-size:13px;writing-mode:vertical-rl;animation:pop .3s ease-out}
.bc{position:relative;height:64px;box-sizing:border-box;border:1px solid var(--line);background:#fff8;display:grid;grid-template-columns:30px minmax(0,1fr);gap:4px;align-items:center;padding:3px 5px;min-width:0;border-left:3px solid var(--moss)}
.bc.e{border-left-color:var(--rust)}.bc.empty{border:1px dashed var(--line);background:transparent}.bc.dead{opacity:.35}.bc.elite{border-color:#3978B8}.bc.boss{border-color:#7B52B4;border-width:2px}
.bc.act{box-shadow:0 0 0 2px var(--brass)}.bc.turn:not(.act){box-shadow:inset 0 0 0 1px var(--brass)}.bc.pick{cursor:pointer;outline:2px dashed var(--brass);outline-offset:1px;background:#f5ebcb}
.bc .uico{width:28px;height:28px;color:var(--ink2);transition:transform .3s}.bc.e .uico{color:#6b3a2e}.bc.stealth{opacity:.45}.bc.stealth .uico{filter:drop-shadow(3px 0 0 #0004)}.bc.knock .uico{transform:rotate(90deg)}
.bc.broken{background:#f8e3dc}.bc.burn{box-shadow:inset 0 0 8px #8b1a1a}
.bi{min-width:0}.bn{display:flex;align-items:center;gap:4px;min-width:0}.bn b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.bc .bar2{height:6px;margin:1px 0}.bc .bar2.mp{height:3px}.bs{display:flex;align-items:center;gap:4px;min-width:0;overflow:hidden;white-space:nowrap}.bs small{font-size:10px;color:var(--ink3);flex:none}.bs .sts{min-height:0;margin:0;overflow:hidden}.bs .st{font-size:9px;padding:0 2px}
.pips{display:inline-flex;gap:1px;flex:none}.pips i{width:6px;height:6px;border:1px solid var(--ink3);box-sizing:border-box;display:block}.pips.spp i{transform:rotate(45deg);margin:0 1px}.pips.spp i.on{background:#3978B8;border-color:#3978B8}
.pips.bpp i{border-radius:50%}.pips.bpp i.on{background:var(--brass);border-color:var(--brass2)}.pips.big i{width:10px;height:10px}
.weak{display:inline-flex;gap:2px;flex:none}.weak b{font-size:9px;line-height:12px;padding:0 2px;border:1px solid var(--line);font-weight:400}.weak b.wp{color:#6b3a2e}.weak b.el{color:#3978B8}.weak b.unk{color:var(--ink3)}
.vs .tip{color:var(--rust2)}.bt-log .brk{color:#ffd76a;font-weight:700}
.key.man h4 small{font-weight:400;color:var(--ink3)}.boostctl{display:flex;align-items:center;gap:6px;margin:4px 0 6px}.boostctl b{font-size:var(--fs-s);min-width:64px;text-align:center}
.sk10{display:grid;grid-template-columns:1fr 1fr;gap:4px}.skb{border:1px solid var(--line);background:#fff;padding:3px 6px;text-align:left;cursor:pointer;font-family:inherit;min-height:40px;min-width:0}.skb b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.skb small{display:block;font-size:10px;color:var(--ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.skb.dim{opacity:.45;cursor:default}.skb.ws{border-left:3px solid var(--brass)}.sk10.gold .skb:not(.dim){border-color:#c6a13a;box-shadow:0 0 6px #ffd76a;animation:goldp .8s ease-in-out infinite alternate}.goldtip{color:#8a6a1c;font-weight:700}
.intent .brk{color:var(--rust2)}
@keyframes goldp{from{box-shadow:0 0 2px #ffd76a}to{box-shadow:0 0 10px #ffc21a}}@keyframes pop{from{transform:scale(1.6)}to{transform:scale(1)}}
.stage.shake{animation:shake .12s linear}@keyframes shake{25%{margin-left:-4px}75%{margin-left:4px}}
.stage.m .bc{height:58px;grid-template-columns:22px minmax(0,1fr);padding:2px 3px;gap:3px}.stage.m .bc .uico{width:20px;height:20px}.stage.m .bn b{font-size:11px}.stage.m .bgrid{grid-template-columns:minmax(0,1fr) 14px minmax(0,1fr);gap:2px}.stage.m .bmid b{font-size:9px}.stage.m .bmid .combo{font-size:11px}
.stage.m .weak b{font-size:8px;padding:0 1px}.stage.m .bs small{font-size:9px}.stage.m .bt-log{height:310px}
#fxlayer{position:fixed;inset:0;pointer-events:none;z-index:60;overflow:hidden}.fx{position:absolute;inset:0}
.fxb{position:absolute;box-sizing:border-box;animation-duration:.55s;animation-fill-mode:both}.fxb svg{width:100%;height:100%;overflow:visible}
.fxb.flash{background:#fff;animation-name:fxflash}.fxb.flash.soft{background:#ffd76a}.fxb.boom{border-radius:50%;background:radial-gradient(circle,#ffb347,#d9480f 60%,transparent 70%);animation-name:fxboom}
.fxb.bump{background:#fff;animation-name:fxbump}.fxb.quakefx{border-bottom:4px solid #6b3a2e;animation-name:fxquake}.fxb.ring{border:3px solid #3978B8;border-radius:6px;animation-name:fxring}
.fxb.hex svg polygon{fill:#a8d8ff88;stroke:#3978B8;stroke-width:1}.fxb.hex{animation-name:fxfade}.fxb.whirl svg path{fill:none;stroke:#c6a13a;stroke-width:6;stroke-linecap:round}.fxb.whirl .spin{animation:fxspin .55s linear both;transform-origin:0 0}.fxb.whirl{animation-name:fxfade}
.fxb.slashfx svg path{fill:none;stroke:#fff;stroke-width:5;stroke-linecap:round;stroke-dasharray:140;stroke-dashoffset:140;animation:fxdraw .35s ease-out forwards;filter:drop-shadow(0 0 2px #b5563f)}.fxb.slashfx{animation-name:fxfade}
.fxb.stars svg{position:absolute;left:10%;top:-14px;width:80%;height:24px}.fxb.stars .star{fill:#ffd76a;stroke:#8a6a1c;stroke-width:.6}.fxb.stars .orbit{animation:fxorbit .9s linear both;transform-origin:0 0}.fxb.stars{animation-name:fxfade;animation-duration:.9s}
.fxb.shards i{position:absolute;left:50%;top:50%;width:8px;height:8px;background:#3978B8;transform:rotate(var(--a)) translateX(0) rotate(45deg);animation:fxshard .55s ease-out both}.fxflash{position:absolute;inset:0;background:#fff;animation:fxflash .3s ease-out both}
.fxb.healfx i{position:absolute;bottom:4px;width:5px;height:5px;border-radius:50%;background:#4caf50;animation:fxrise .6s ease-out both}.fxb.boostfx{display:flex;gap:3px;justify-content:center;align-items:flex-end}.fxb.boostfx i{width:10px;height:4px;border-radius:50%;background:#ffc21a;box-shadow:0 0 6px #ffc21a;animation:fxfade .6s both}
.fxb.burnfx{box-shadow:inset 0 0 12px #8b1a1a;animation-name:fxfade}
.fxs{position:absolute;left:0;top:0}.fxs line.arrow{stroke:#4a3a28;stroke-width:3;stroke-linecap:round;stroke-dasharray:24 2000;stroke-dashoffset:24;animation:fxarrow .35s linear both}
.fxm{position:absolute;margin:-10px 0 0 -10px;width:20px;height:20px;animation:fxmove .35s ease-in both}.fxm.orb{border-radius:50%;background:radial-gradient(circle,#fff,#ff9a3c 45%,#d9480f);box-shadow:0 0 12px #ff9a3c}.fxm.dash .ico{width:20px;height:20px;color:#4a3a28}
.fxn{position:absolute;transform:translateX(-50%);font:700 18px var(--serif);color:#fff;text-shadow:0 0 3px #000,0 1px 0 #000;animation:fxnum .7s ease-out both}.fxn.crit{font-size:22px;color:#ff5a3c}.fxn.heal{color:#7be07f}.fxn.shd{color:#8fc3ff}.fxn.onally{color:#ffb3a1}
@keyframes fxflash{0%{opacity:.85}100%{opacity:0}}@keyframes fxfade{0%{opacity:0}20%{opacity:1}80%{opacity:1}100%{opacity:0}}@keyframes fxboom{0%{transform:scale(.2);opacity:1}100%{transform:scale(1.3);opacity:0}}
@keyframes fxbump{0%{opacity:.9;transform:translateX(0)}50%{transform:translateX(8px)}100%{opacity:0;transform:translateX(0)}}@keyframes fxquake{0%,100%{transform:translateY(0);opacity:0}20%{opacity:1}30%{transform:translateY(-5px)}60%{transform:translateY(4px)}}
@keyframes fxring{0%{opacity:0;transform:scale(.8)}30%{opacity:1}100%{opacity:0;transform:scale(1.08)}}@keyframes fxspin{from{transform:rotate(0)}to{transform:rotate(540deg)}}@keyframes fxdraw{to{stroke-dashoffset:0}}
@keyframes fxorbit{from{transform:rotate(-20deg)}50%{transform:rotate(20deg)}to{transform:rotate(-20deg)}}@keyframes fxshard{to{transform:rotate(var(--a)) translateX(46px) rotate(200deg);opacity:0}}
@keyframes fxrise{0%{transform:translateY(0);opacity:0}30%{opacity:1}100%{transform:translateY(-44px);opacity:0}}@keyframes fxarrow{to{stroke-dashoffset:-2000}}
@keyframes fxmove{to{transform:translate(var(--dx),var(--dy))}}@keyframes fxnum{0%{transform:translate(-50%,8px) scale(.6);opacity:0}25%{transform:translate(-50%,-10px) scale(1.15);opacity:1}100%{transform:translate(-50%,-38px) scale(1);opacity:0}}
@media (prefers-reduced-motion:reduce){#fxlayer{display:none}}

/* ---- 刀 2y-2 探索 v2：房间地牢图（羊皮纸底、手绘通道、房间剪影图标、小人） ---- */
.stage[data-scene="field"]:not(.panel) .st-main{overflow:hidden}.stage[data-scene="field"]:not(.panel) .st-main>.body{height:100%;display:flex;flex-direction:column;padding-bottom:8px;box-sizing:border-box}
.rm-top{display:flex;align-items:center;gap:8px;flex:none;min-width:0;flex-wrap:wrap}.rm-top h3{margin:0;font-size:var(--fs-t);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rm-top h3 small{font-size:var(--fs-s);color:var(--ink3);font-weight:400}
.rm-top .depth{position:static;font-size:var(--fs-s);color:var(--ink2);white-space:nowrap}.rm-zoom{display:inline-flex;gap:2px}.rm-zoom .btn{min-width:28px;padding:2px 6px}
.rmv{position:relative;flex:1 1 auto;min-height:260px;margin-top:6px;overflow:hidden;border:1px solid #b9a67e;background:#eadcb8 radial-gradient(ellipse at 30% 20%,#f3e8c8 0,#e6d6ab 60%,#d9c696 100%);touch-action:none;cursor:grab;user-select:none}
.rmv:active{cursor:grabbing}.rm-pan{position:absolute;left:0;top:0;transform-origin:0 0}
.rm-svg{position:absolute;left:0;top:0;pointer-events:none}.rm-edge{fill:none;stroke:#9a8660;stroke-width:3;stroke-dasharray:2 5;stroke-linecap:round;opacity:.55}.rm-edge.walked{stroke:#5b4a2e;stroke-dasharray:none;opacity:.8}.rm-edge.on{stroke:var(--brass2);opacity:1}
.rm-room{position:absolute;width:46px;height:46px;border-radius:50%;border:2px solid #7a6844;background:#f6ecd0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;font-family:inherit;color:#4a3a28;cursor:default}
.rm-room.sq{border-radius:6px}.rm-room .ico{width:22px;height:22px}.rm-room small{position:absolute;top:100%;left:50%;transform:translateX(-50%);font-size:10px;line-height:12px;white-space:nowrap;color:#4a3a28;background:#f6ecd0cc;padding:0 2px}
.rm-room.can{cursor:pointer;border-color:var(--brass2);box-shadow:0 0 0 3px #c6a13a55;animation:rmcan 1.4s ease-in-out infinite alternate}.rm-room.can:hover{background:#fff}
.rm-room.here{border-color:#2b2119;box-shadow:0 0 0 3px #2b211933}.rm-room.done{opacity:.55;background:#e2d5b0}.rm-room.fog{border-style:dashed;background:#d8c9a0;color:#8a7a58}.rm-room.fog small{color:#8a7a58}
.rm-room.foe{border-color:var(--rust);color:var(--rust2);animation:rmfoe 1s ease-in-out infinite alternate}.rm-room.k-boss{border-color:#7B52B4}.rm-room.k-camp{border-color:#b5563f}.rm-room.k-exit,.rm-room.k-start{border-color:#35865B}
.rm-room .rate{position:absolute;right:-3px;top:-3px;width:10px;height:10px;border-radius:50%;border:1px solid #fff}.rm-room .rate.easy{background:#35865B}.rm-room .rate.mid{background:#C6A13A}.rm-room .rate.hard{background:#b5563f}
.rm-hero{position:absolute;width:26px;height:26px;margin:-36px 0 0 -13px;border-radius:50%;background:#2b2119;color:#f6ecd0;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px #0006;z-index:3;pointer-events:none}
.rm-hero::after{content:"";position:absolute;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:#2b2119}.rm-hero .ico{width:16px;height:16px}.rm-hero.flip .ico{transform:scaleX(-1)}
.rm-hero.walking{transition:left .6s linear,top .6s linear;animation:rmstep .3s ease-in-out infinite alternate}
@keyframes rmcan{from{box-shadow:0 0 0 2px #c6a13a33}to{box-shadow:0 0 0 5px #c6a13a88}}@keyframes rmfoe{from{transform:scale(1)}to{transform:scale(1.08)}}@keyframes rmstep{from{margin-top:-36px}to{margin-top:-40px}}
.stage.m[data-scene="field"]:not(.panel) .st-main{overflow:auto}.stage.m[data-scene="field"]:not(.panel) .st-main>.body{height:auto;display:block}.stage.m .rmv{height:330px;min-height:0}
.stage.nofx .rm-hero.walking,.stage.nofx .rm-room.can,.stage.nofx .rm-room.foe{animation:none;transition:none}
.st-acts .btn.big{font-size:var(--fs-b);padding:10px 22px;width:100%;background:var(--brass);color:var(--dark);font-weight:700}

/* ---- 刀 2y-3 样板局：标题、你是谁、黑屏字幕、对话场景、教学提示 ---- */
.stage.scene-title{background:#0d0b09}
.fh-title{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:36px;background:#0d0b09;color:#d8cdb6}
.fh-line{font-family:var(--serif);font-size:22px;letter-spacing:.2em;margin:0;text-align:center;padding:0 24px;animation:fhfade 1.8s ease-out both}.fh-start{animation:fhfade 1s ease-out both;background:transparent;border:1px solid #8c7a5c;color:#d8cdb6;padding:10px 40px;font-size:16px;letter-spacing:.4em}
.fh-create{position:absolute;inset:0;background:#14100c;color:#e6dcc6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;padding:20px;box-sizing:border-box;overflow:auto}
.who6{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;width:100%;max-width:1180px}.who{background:#1e1812;border:1px solid #5a4a36;color:#e6dcc6;padding:18px 12px;text-align:center;cursor:pointer;font-family:inherit;display:flex;flex-direction:column;align-items:center;gap:10px;min-height:220px}
.who .ico{width:44px;height:44px;color:#c6a13a}.who b{font-family:var(--serif);font-size:20px;letter-spacing:.2em}.who p{margin:0;font-size:14px;line-height:1.7;color:#b8ad96}.who.on{border-color:#c6a13a;background:#2a2118;box-shadow:0 0 0 2px #c6a13a55}.who:hover{border-color:#c6a13a}
.fh-name{display:flex;gap:8px;animation:fhfade .5s both}.fh-name input{background:#0d0b09;border:1px solid #8c7a5c;color:#e6dcc6;padding:10px 14px;font:16px var(--serif);width:200px;text-align:center}.fh-tip{color:#8c7a5c;letter-spacing:.3em}
.stage.m .who6{grid-template-columns:1fr}.stage.m .who{min-height:0;flex-direction:row;text-align:left;padding:10px;gap:10px}.stage.m .who .ico{width:30px;height:30px;flex:none}.stage.m .who b{font-size:16px;flex:none;width:64px}.stage.m .who p{font-size:12px;line-height:1.5}.stage.m .fh-create{justify-content:flex-start;gap:12px}.stage.m .fh-line{font-size:17px}
.fh-cut{position:absolute;inset:0;z-index:70;background:#0b0907;color:#d8cdb6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;cursor:pointer;padding:0 24px;text-align:center}
.fh-cut p{margin:0;font:20px var(--serif);letter-spacing:.15em;animation:fhfade 1.2s ease-out both}.fh-cut small{color:#6f624c;animation:fhfade 1s both;margin-top:20px}.stage.m .fh-cut p{font-size:16px}
@keyframes fhfade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.fh-hint{background:#2b2119;color:#ffd76a;padding:6px 10px;margin-bottom:6px;font-weight:700;animation:goldp .8s ease-in-out infinite alternate}.key.man.tut .skb:not(.dim){border-color:#c6a13a;animation:goldp .8s ease-in-out infinite alternate}
.st-acts .btn.glow{border-color:#ffd76a;box-shadow:0 0 8px #ffc21a;animation:goldp .8s ease-in-out infinite alternate}
.bld.closed{opacity:.45;cursor:default;filter:grayscale(1)}.bld.closed small{color:var(--ink3)}
.fh-dialog{display:grid;grid-template-columns:120px minmax(0,1fr);gap:16px;padding:16px;border:1px solid var(--line);background:rgba(255,255,255,.5);min-height:320px}
.fh-face{display:flex;flex-direction:column;align-items:center;gap:8px}.fh-face .ico{width:72px;height:72px;color:var(--ink2);border:2px solid var(--brass);border-radius:50%;padding:12px;background:#fff8}.fh-face b{font-family:var(--serif)}
.fh-say p{margin:0 0 10px;font-size:var(--fs-b);line-height:1.8;animation:fhfade .6s both}.stage.m .fh-dialog{grid-template-columns:1fr}.stage.m .fh-face{flex-direction:row}.stage.m .fh-face .ico{width:40px;height:40px;padding:6px}
[hidden]{display:none!important}
