/* ══════════════════════════════════════════════════════════
   月幕 MOON CURTAIN — 页游风格样式表
   主题变量集中在 :root
   ══════════════════════════════════════════════════════════ */

:root{
  --bg:        #070a12;
  --bg-2:      #0c1120;

  --panel-1:   #182135;
  --panel-2:   #1c2740;
  --panel-3:   #24314c;

  --line:      #2b3a55;
  --line-2:    #3a4b6b;
  --line-gold: rgba(217,180,92,.42);

  --gold:      #d9b45c;
  --gold-2:    #f3dfa0;
  --gold-dark: #6d5420;

  --txt:       #e8eefb;
  --txt-2:     #98a6c0;
  --txt-3:     #5f6d88;

  --rose:      #d9557a;
  --green:     #4fd39a;
  --blue:      #6ea8fe;

  --r:         8px;
  --font: "PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;
  --serif: "Songti SC","STSong","SimSun","Noto Serif SC",serif;
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:var(--font);font-size:14px;line-height:1.6;
  color:var(--txt);background:var(--bg);overflow:hidden;
  -webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;
}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
img{display:block;max-width:100%}
b{font-weight:600}
em{font-style:normal}

/* ── 启动加载画面 ── */
.loading-screen{
  position:fixed;inset:0;z-index:10000;display:grid;place-items:center;overflow:hidden;
  padding:24px;background:
    radial-gradient(ellipse at 50% 34%,rgba(69,136,142,.2),transparent 38%),
    radial-gradient(ellipse at 50% 100%,rgba(195,151,77,.12),transparent 42%),
    linear-gradient(145deg,#101a27 0%,#172638 48%,#0c1420 100%);
  opacity:1;visibility:visible;transition:opacity .48s ease,visibility .48s ease;
}
.loading-screen[hidden]{display:none}
.loading-screen.is-leaving{opacity:0;visibility:hidden;pointer-events:none}
.loading-screen__glow{position:absolute;width:min(42vw,520px);aspect-ratio:1;border:1px solid rgba(226,199,135,.08);border-radius:50%;pointer-events:none}
.loading-screen__glow::before,.loading-screen__glow::after{content:"";position:absolute;inset:9%;border:1px solid rgba(226,199,135,.06);border-radius:50%}
.loading-screen__glow::after{inset:20%}
.loading-screen__glow--one{left:-18%;top:-25%;animation:loading-drift 14s ease-in-out infinite alternate}
.loading-screen__glow--two{right:-17%;bottom:-34%;animation:loading-drift 18s ease-in-out infinite alternate-reverse}
.loading-screen__card{position:relative;display:flex;flex-direction:column;align-items:center;width:min(100%,390px);padding:28px 30px 26px;border:1px solid rgba(226,199,135,.3);border-radius:22px;background:linear-gradient(155deg,rgba(248,247,238,.97),rgba(235,242,232,.97));box-shadow:0 28px 90px rgba(0,0,0,.4),inset 0 1px 0 #fff;color:#23333b;text-align:center;animation:loading-arrive .65s cubic-bezier(.2,.8,.2,1) both}
.loading-screen__mascot-wrap{position:relative;display:grid;place-items:center;width:204px;height:204px;margin:0 0 19px;border:1px solid #d1dfd3;border-radius:50%;background:radial-gradient(circle at 50% 40%,#fff 0 53%,#eef5ef 75%,#deebe1 100%);box-shadow:inset 0 0 0 7px rgba(255,255,255,.75),0 8px 26px rgba(30,69,67,.12)}
.loading-screen__mascot{position:relative;z-index:1;width:176px;height:176px;max-width:none;object-fit:contain;border-radius:50%}
.loading-screen__orbit{position:absolute;inset:-8px;border:1px solid rgba(58,131,120,.22);border-radius:50%;animation:loading-orbit 8s linear infinite}
.loading-screen__orbit::before{content:"";position:absolute;left:50%;top:-3px;width:7px;height:7px;border-radius:50%;background:#d4a74f;box-shadow:0 0 12px rgba(212,167,79,.7)}
.loading-screen__eyebrow{font-size:10px;letter-spacing:.2em;color:#68847d}
.loading-screen__card h1{margin-top:5px;font-family:var(--serif);font-size:23px;letter-spacing:.12em;color:#233b40}
.loading-screen__hint{margin-top:4px;font-size:13px;color:#71817d}
.loading-screen__progress{width:180px;height:4px;margin-top:21px;overflow:hidden;border-radius:9px;background:#dce7df}
.loading-screen__progress span{display:block;width:42%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#68b6a4,#d2a84f);animation:loading-progress 1.45s ease-in-out infinite}
.loading-screen__dots{display:flex;gap:5px;margin-top:13px}
.loading-screen__dots i{width:4px;height:4px;border-radius:50%;background:#8ca39a;animation:loading-dot 1s ease-in-out infinite alternate}
.loading-screen__dots i:nth-child(2){animation-delay:.2s}.loading-screen__dots i:nth-child(3){animation-delay:.4s}
@keyframes loading-orbit{to{transform:rotate(360deg)}}
@keyframes loading-progress{0%{transform:translateX(-110%)}100%{transform:translateX(340%)}}
@keyframes loading-dot{to{opacity:.35;transform:translateY(-3px)}}
@keyframes loading-drift{to{transform:translate3d(5%,4%,0) rotate(18deg)}}
@keyframes loading-arrive{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(max-width:520px){.loading-screen__card{padding:24px 20px}.loading-screen__mascot-wrap{width:178px;height:178px}.loading-screen__mascot{width:154px;height:154px}.loading-screen__card h1{font-size:20px}}
@media(prefers-reduced-motion:reduce){.loading-screen__glow,.loading-screen__orbit,.loading-screen__progress span,.loading-screen__dots i,.loading-screen__card{animation:none!important}.loading-screen{transition-duration:.15s}}

::-webkit-scrollbar{width:7px;height:7px}
::-webkit-scrollbar-thumb{background:#2c3a54;border-radius:7px}
::-webkit-scrollbar-thumb:hover{background:#3d4f6e}
::-webkit-scrollbar-track{background:transparent}

/* ═══════════ 骨架 ═══════════ */
.app{height:100vh;display:flex;flex-direction:column;
  background:
    radial-gradient(900px 500px at 78% -6%, rgba(110,140,220,.10), transparent 62%),
    radial-gradient(700px 500px at 6% 106%, rgba(160,90,140,.08), transparent 60%),
    var(--bg);
}

/* ── 顶部资源条 ── */
.hud{
  flex:none;height:62px;display:flex;align-items:center;gap:16px;padding:0 14px;
  background:linear-gradient(180deg,#16203a 0%,#0a1020 100%);
  border-bottom:1px solid var(--line-gold);
  box-shadow:0 3px 16px rgba(0,0,0,.65), inset 0 1px 0 rgba(255,255,255,.05);
  z-index:5;
}
.hud-brand{display:flex;align-items:center;gap:10px;flex:none}
.hud-logo{
  width:38px;height:38px;border-radius:9px;display:grid;place-items:center;
  font-family:var(--serif);font-size:19px;font-weight:700;color:#3a2a08;
  background:linear-gradient(160deg,#fdf0c4,#d9b45c 55%,#a8802f);
  border:1px solid var(--gold-dark);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.7), 0 2px 8px rgba(0,0,0,.5);
}
.hud-title{font-family:var(--serif);font-size:16px;letter-spacing:.2em;color:var(--gold-2);line-height:1.2}
.hud-sub{font-size:10.5px;color:var(--txt-3)}
.hud-sub b{color:var(--gold)}

.hud-res{display:flex;gap:8px;flex:1;flex-wrap:wrap}
.hres{
  position:relative;display:flex;align-items:center;gap:8px;padding:5px 13px 5px 10px;
  border-radius:6px;min-width:104px;
  background:linear-gradient(180deg,#1b2540,#121a2c);
  border:1px solid var(--line);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
}
.hres.gold{border-color:var(--line-gold)}
.hres-ico{font-size:14px;color:var(--gold);opacity:.9}
.hres-body{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.hres-body b{font-size:14px;color:var(--txt)}
.hres.gold .hres-body b{color:var(--gold-2)}
.hres.resource-heat .hres-body b{color:#ffb0bf}.hres.resource-faith .hres-body b{color:#d9b4ff}
.hres-body i{font-size:9.5px;color:var(--txt-3);font-style:normal;white-space:nowrap}
.hres-bar{position:absolute;left:10px;right:13px;bottom:3px;height:2px;border-radius:2px;background:rgba(255,255,255,.08);overflow:hidden}
.hres-bar i{display:block;height:100%;background:linear-gradient(90deg,#3d6fd0,#8fc0ff);transition:width .3s}

.hud-actions{display:flex;gap:7px;flex:none}
.ghost-btn{
  padding:6px 13px;border-radius:6px;font-size:12px;color:var(--txt-2);
  background:linear-gradient(180deg,#1b2540,#121a2c);border:1px solid var(--line);transition:.16s;
}
.ghost-btn:hover{color:var(--gold-2);border-color:var(--line-gold)}
.ghost-btn.danger:hover{color:#ffb0bf;border-color:rgba(217,85,122,.5)}

.body{flex:1;display:flex;min-height:0}

/* ── 左侧导航 ── */
.dock{
  width:76px;flex:none;display:flex;flex-direction:column;gap:6px;padding:12px 8px;
  background:linear-gradient(180deg,#101829,#0a0f1b);
  border-right:1px solid var(--line);
}
.dock-btn{
  display:flex;flex-direction:column;align-items:center;gap:5px;padding:10px 2px;
  border-radius:7px;font-size:11.5px;color:var(--txt-3);
  border:1px solid transparent;transition:.16s;
}
.dock-btn:hover{color:var(--txt-2);background:rgba(255,255,255,.04)}
.dock-btn.active{
  color:var(--gold-2);
  background:linear-gradient(180deg,rgba(217,180,92,.16),rgba(217,180,92,.04));
  border-color:var(--line-gold);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06);
}
.dock-ico{display:block;line-height:0;opacity:.8}
.dock-ico svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.dock-btn.active .dock-ico{opacity:1}

.main{flex:1;min-width:0;position:relative}
#screensRoot{position:absolute;inset:0;min-width:0;min-height:0}
.page{position:absolute;inset:0;display:none;padding:12px;min-height:0}
.page.active{display:flex;flex-direction:column;animation:fade .22s ease}
@keyframes fade{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}

/* ── 右侧栏 ── */
.rail{width:236px;flex:none;padding:12px 12px 12px 0;display:flex;flex-direction:column;min-height:0}
.rail-panel{flex:1;min-height:0}

/* ═══════════ 面板 ═══════════ */
.panel{
  display:flex;flex-direction:column;min-height:0;
  background:linear-gradient(180deg,var(--panel-1) 0%,#101728 100%);
  border:1px solid var(--line);border-radius:var(--r);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.045), 0 6px 18px rgba(0,0,0,.42);
}
.panel-head{
  flex:none;display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:9px 13px;border-bottom:1px solid var(--line);
  background:linear-gradient(180deg,rgba(217,180,92,.09),rgba(217,180,92,.01));
}
.panel-head.standalone{border:1px solid var(--line);border-radius:var(--r);
  background:linear-gradient(180deg,rgba(217,180,92,.09),rgba(217,180,92,.01)),linear-gradient(180deg,var(--panel-1),#101728);}
.panel-title{display:flex;align-items:center;gap:9px;font-size:13px;letter-spacing:.1em;color:var(--gold-2)}
.panel-sub{font-size:10.5px;color:var(--txt-3);letter-spacing:0}
.panel-sub b{color:var(--gold)}
.panel-head-right{display:flex;align-items:center;gap:8px}
.panel-body{padding:12px 13px;overflow-y:auto;min-height:0}
.full-flag{font-size:10px;color:#ffb0bf;border:1px solid rgba(217,85,122,.4);border-radius:4px;padding:0 5px}

/* ═══════════ 按钮 ═══════════ */
.big-btn{
  padding:9px 20px;border-radius:6px;font-size:13.5px;font-weight:600;
  color:#0d1524;
  background:linear-gradient(180deg,#a9c8f5,#6ea8fe 48%,#3f76c8);
  border:1px solid #2c4f80;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55), 0 3px 0 #2c4f80, 0 6px 14px rgba(0,0,0,.45);
  text-shadow:0 1px 0 rgba(255,255,255,.3);
  transition:.14s;white-space:nowrap;
}
.big-btn:hover:not(:disabled){filter:brightness(1.08);transform:translateY(-1px)}
.big-btn:active:not(:disabled){transform:translateY(2px);box-shadow:inset 0 1px 0 rgba(255,255,255,.4),0 1px 0 #2c4f80}
.big-btn:disabled{filter:grayscale(.75) brightness(.72);cursor:not-allowed}
.big-btn em{font-size:11px;opacity:.8;margin-left:4px}
.big-btn.gold{
  color:#3a2a08;
  background:linear-gradient(180deg,#fbe9b4,#d9b45c 48%,#a8802f);
  border-color:var(--gold-dark);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.7), 0 3px 0 var(--gold-dark), 0 6px 16px rgba(180,140,50,.28);
}
.big-btn.gold:active:not(:disabled){box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 1px 0 var(--gold-dark)}
.big-btn.full{width:100%;margin-top:11px}

.mini-btn{
  padding:5px 10px;border-radius:5px;font-size:11px;color:var(--txt-2);
  background:linear-gradient(180deg,#22304a,#18223a);border:1px solid var(--line);transition:.16s;
}
.mini-btn:hover:not(:disabled){color:var(--gold-2);border-color:var(--line-gold)}
.mini-btn:disabled{opacity:.4;cursor:not-allowed}
.mini-btn.wide{flex:none}
.mini-btn.eq{border-color:rgba(79,211,154,.35);color:#9ff0d8}

/* ═══════════ 挂机页 ═══════════ */
.idle-page{flex:1;display:flex;flex-direction:column;gap:11px;min-height:0}

.idle-top{flex:none;display:flex;gap:10px;align-items:stretch}
.ibox{
  display:flex;flex-direction:column;justify-content:center;gap:3px;padding:9px 15px;min-width:130px;
  border-radius:var(--r);
  background:linear-gradient(180deg,var(--panel-1),#101728);
  border:1px solid var(--line);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.045), 0 4px 14px rgba(0,0,0,.4);
}
.ibox.grow{flex:1;min-width:200px}
.ibox i{font-style:normal;font-size:10.5px;color:var(--txt-3);letter-spacing:.06em}
.ibox-v{display:flex;align-items:center;gap:9px}
.ibox-v b{font-size:19px;color:var(--gold-2);font-weight:600;letter-spacing:.02em}
.ibox-v em{font-size:11px;color:var(--txt-3)}
.ibox-bar{flex:1;height:7px;border-radius:5px;background:#1a2438;overflow:hidden;border:1px solid var(--line)}
.ibox-bar i{display:block;height:100%;background:linear-gradient(90deg,#3d6fd0,#8fc0ff);transition:width .3s}

.idle-body{flex:1;display:flex;flex-direction:column;gap:11px;min-height:0}
.member-panel{flex:none}
.member-panel .member-grid{padding:11px;display:grid;
  grid-template-columns:repeat(auto-fill,minmax(288px,1fr));gap:9px;align-content:start}

.mcard{
  display:flex;flex-direction:column;gap:6px;padding:10px 11px;border-radius:7px;
  background:linear-gradient(180deg,#1d2841,#141d30);
  border:1px solid var(--line);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
  transition:.16s;
}
.mcard:hover{border-color:var(--line-2)}
.mcard.locked{opacity:.4;filter:grayscale(.7)}
.mc-top{display:flex;align-items:center;gap:10px}
.mc-av{
  width:42px;height:42px;flex:none;border-radius:7px;display:grid;place-items:center;
  font-size:16px;overflow:hidden;border:1px solid var(--line-2);
  background:#1f2937;background:color-mix(in srgb, var(--c, #6ea8fe) 26%, #141d30);
  color:#cbd6ea;color:color-mix(in srgb, var(--c, #6ea8fe) 72%, #ffffff);
}
.mc-av img{width:100%;height:100%;object-fit:cover;object-position:top center}
.av-hero{border-color:rgba(217,85,122,.55)}
.locked-av{border-style:dashed;color:var(--txt-3);background:transparent}
.mc-id{min-width:0;flex:1}
.mc-name{font-size:14px;color:var(--txt);line-height:1.3}
.mc-title{font-size:10.5px;color:var(--txt-3)}
.mc-tend{font-size:10px;color:var(--txt-3);border-top:1px dashed var(--line);padding-top:5px}
.mc-bars{display:flex;flex-direction:column;gap:5px}
.mc-row{display:grid;grid-template-columns:26px 1fr 36px;align-items:center;gap:7px;
  font-size:10px;color:var(--txt-3)}
.mc-row b{color:var(--txt-2);font-weight:500;text-align:right;font-variant-numeric:tabular-nums}
.mc-bar{height:6px;border-radius:4px;background:#131c2e;overflow:hidden;border:1px solid rgba(255,255,255,.05)}
.mc-bar i{display:block;height:100%;transition:width .3s}
.mc-bar.aff i{background:linear-gradient(90deg,#a83f5f,#e0708f)}
.mc-bar.prod i{background:linear-gradient(90deg,#3f76c8,#8fc0ff)}
.mc-train{
  margin-top:2px;padding:6px;border-radius:5px;font-size:11.5px;color:#3a2a08;
  background:linear-gradient(180deg,#e8d094,#c9a44e 50%,#9a7628);
  border:1px solid var(--gold-dark);transition:.14s;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5);
}
.mc-train:hover:not(:disabled){filter:brightness(1.08)}
.mc-train:disabled{filter:grayscale(.8) brightness(.75);cursor:not-allowed}
.mc-train em{font-size:10px;opacity:.85;margin-left:3px}

.pending-panel{flex:1;min-height:130px}
.pending-grid{
  flex:1;padding:10px 11px;display:flex;flex-wrap:wrap;gap:7px;overflow-y:auto;
  align-content:flex-start;min-height:74px;
}
/* 细滚动条：让"还有内容"一眼可见 */
.pending-grid::-webkit-scrollbar,.bag-grid::-webkit-scrollbar,.log-list::-webkit-scrollbar,
.stage-list::-webkit-scrollbar,.archive-list::-webkit-scrollbar,.hero-info::-webkit-scrollbar,
.pm-scroll::-webkit-scrollbar,.picker-list::-webkit-scrollbar,.modal-body::-webkit-scrollbar,
.help-body::-webkit-scrollbar,.battle-log::-webkit-scrollbar{width:7px;height:7px}
.pending-grid::-webkit-scrollbar-thumb,.bag-grid::-webkit-scrollbar-thumb,.log-list::-webkit-scrollbar-thumb,
.stage-list::-webkit-scrollbar-thumb,.archive-list::-webkit-scrollbar-thumb,.hero-info::-webkit-scrollbar-thumb,
.pm-scroll::-webkit-scrollbar-thumb,.picker-list::-webkit-scrollbar-thumb,.modal-body::-webkit-scrollbar-thumb,
.help-body::-webkit-scrollbar-thumb,.battle-log::-webkit-scrollbar-thumb{
  background:rgba(217,180,92,.28);border-radius:4px}
.pending-grid::-webkit-scrollbar-thumb:hover,.log-list::-webkit-scrollbar-thumb:hover,
.bag-grid::-webkit-scrollbar-thumb:hover{background:rgba(217,180,92,.5)}
.pending-grid::-webkit-scrollbar-track,.bag-grid::-webkit-scrollbar-track,.log-list::-webkit-scrollbar-track,
.stage-list::-webkit-scrollbar-track,.archive-list::-webkit-scrollbar-track,.hero-info::-webkit-scrollbar-track,
.battle-log::-webkit-scrollbar-track{background:rgba(255,255,255,.03)}
.pending-empty{font-size:11.5px;color:var(--txt-3);padding:14px 4px}
.pcell{
  position:relative;width:84px;padding:8px 6px;border-radius:6px;text-align:center;
  background:linear-gradient(180deg,#1e2942,#151e30);
  border:1px solid var(--line);transition:.14s;overflow:hidden;
}
.pcell::before{content:"";position:absolute;left:0;top:0;right:0;height:2px;background:var(--qc,var(--line-2))}
.pcell:hover{transform:translateY(-2px);border-color:var(--qc);box-shadow:0 6px 16px rgba(0,0,0,.5)}
.pc-ico{display:block;font-size:15px;margin-bottom:2px;opacity:.85}
.pc-name{display:block;font-size:11px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pc-q{display:block;font-size:9px;color:var(--txt-3)}

.action-row{flex:none;display:flex;gap:10px}
.action-row .big-btn{flex:1;padding:12px 20px;font-size:14.5px}

/* ── 群动态 ── */
.log-list{flex:1;overflow-y:auto;padding:8px 11px;display:flex;flex-direction:column;gap:5px;min-height:0}
.log-item{font-size:11.5px;color:var(--txt-2);line-height:1.55;display:flex;gap:7px}
.log-item span{color:var(--txt-3);font-size:10px;flex:none;padding-top:1px}
.log-item.good{color:#9ff0d8}
.log-item.item{color:var(--gold-2)}
.log-item.chat{color:#b9c6dd}
.log-item.chat .log-who{color:var(--gold-2);font-weight:600;margin-right:6px}
.log-empty{font-size:11.5px;color:var(--txt-3);padding:12px 4px}

/* ═══════════ 角色 ═══════════ */
.hero-layout{flex:1;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(360px,.75fr);gap:16px;min-height:0}
.hero-art{
  position:relative;align-items:center;justify-content:center;overflow:hidden;min-height:0;
  background:
    radial-gradient(560px 400px at 50% 6%, rgba(217,85,122,.10), transparent 62%),
    radial-gradient(700px 500px at 50% 100%, rgba(110,168,254,.07), transparent 60%),
    linear-gradient(180deg,var(--panel-1),#0d1422);
}
.hero-art img{height:min(91vh,1040px);width:auto;max-width:94%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 18px 34px rgba(0,0,0,.24))}
.hero-plate{position:absolute;left:24px;bottom:22px;padding:13px 18px;border:1px solid rgba(255,255,255,.72);border-radius:13px;background:rgba(255,255,255,.84);backdrop-filter:blur(12px);box-shadow:0 8px 28px rgba(30,60,43,.1)}
.hero-name{font-size:26px;letter-spacing:.2em;font-family:var(--serif);color:var(--gold-2)}
.hero-desc{font-size:11.5px;color:var(--txt-3);margin-top:2px}
.hero-desc b{color:var(--gold)}

.hero-info{display:flex;flex-direction:column;gap:10px;min-height:0;overflow-y:auto;padding-right:2px}
.hero-info .panel-body{padding:11px 13px}
.hero-profile .panel-body p{font-size:13px;line-height:1.8;color:var(--txt-2);margin:0 0 12px}
.profile-tags{display:flex;flex-wrap:wrap;gap:7px}.profile-tags span{font-size:10px;padding:5px 8px;border-radius:999px;color:var(--gold-2);background:#edf5ea;border:1px solid #dce9d9}

.lv-row{display:flex;align-items:center;gap:11px}
.lv-badge{font-size:13px;padding:4px 11px;border-radius:6px;white-space:nowrap;
  background:linear-gradient(180deg,#22304a,#18223a);border:1px solid var(--line-2);color:var(--gold-2)}
.lv-bar{flex:1;height:8px;border-radius:5px;background:#131c2e;overflow:hidden;border:1px solid var(--line)}
.lv-bar i{display:block;height:100%;background:linear-gradient(90deg,#a83f5f,#e0708f);transition:width .35s}
.lv-num{font-size:11px;color:var(--txt-3);white-space:nowrap}

.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.stat{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;border-radius:5px;
  background:linear-gradient(180deg,#1d2841,#151e30);border:1px solid var(--line)}
.stat-l{font-size:11.5px;color:var(--txt-3)}
.stat-v{font-size:13px;color:var(--gold-2)}

.skill-list{display:flex;flex-direction:column;gap:5px}
.skill{display:flex;align-items:center;gap:9px;padding:6px 10px;border-radius:5px;
  background:linear-gradient(180deg,#1d2841,#151e30);border:1px solid var(--line)}
.skill.locked{opacity:.42}
.skill-ico{width:24px;height:24px;border-radius:6px;display:grid;place-items:center;font-size:12px;flex:none;
  background:linear-gradient(140deg,rgba(217,180,92,.2),rgba(110,168,254,.12));border:1px solid var(--line-2);color:var(--gold-2)}
.skill-info{flex:1;min-width:0}
.skill-name{font-size:12px}
.skill-desc{font-size:10px;color:var(--txt-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.skill-cost{font-size:10px;color:var(--blue);flex:none}

.slot-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.slot{min-height:52px;border-radius:5px;padding:8px 9px;border:1px dashed var(--line-2);
  background:rgba(255,255,255,.012);display:flex;flex-direction:column;justify-content:center;transition:.16s}
.slot.filled{border-style:solid;cursor:pointer;background:linear-gradient(180deg,#1d2841,#151e30)}
.slot.filled:hover{border-color:var(--line-gold)}
.slot-label{font-size:10px;color:var(--txt-3);letter-spacing:.1em;margin-bottom:3px}
.slot-item{font-size:12px}
.slot-bonus{font-size:9.5px;color:var(--green);margin-top:3px}
.slot-empty{font-size:12px;color:var(--txt-3)}

/* ═══════════ 背包 ═══════════ */
.bag-layout{flex:1;display:flex;flex-direction:column;gap:12px;min-height:0}
.bag-filters{display:flex;gap:6px}
.filter-btn{padding:5px 12px;border-radius:20px;font-size:11.5px;color:var(--txt-3);
  background:linear-gradient(180deg,#1d2841,#151e30);border:1px solid var(--line);transition:.16s}
.filter-btn:hover{color:var(--txt-2)}
.filter-btn.active{color:#3a2a08;border-color:var(--gold-dark);
  background:linear-gradient(180deg,#e8d094,#c9a44e);font-weight:600}

.bag-grid{flex:1;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));
  gap:9px;align-content:start;padding-right:3px}
.item-card{position:relative;overflow:hidden;border-radius:7px;padding:10px 11px;
  background:linear-gradient(180deg,var(--panel-1),#101728);border:1px solid var(--line);transition:.16s}
.item-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--qc,var(--line-2))}
.item-card:hover{transform:translateY(-2px);border-color:var(--line-2)}
.item-card.equipped{box-shadow:inset 0 0 0 1px rgba(79,211,154,.3)}
.item-top{display:flex;align-items:center;gap:7px;margin-bottom:5px}
.item-ico{width:24px;height:24px;border-radius:6px;display:grid;place-items:center;font-size:12px;flex:none;
  background:rgba(255,255,255,.05);border:1px solid var(--line)}
.item-name{font-size:12.5px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item-q{font-size:9px;padding:1px 6px;border-radius:4px;flex:none;border:1px solid var(--qc);color:var(--qc)}
.eq-flag{font-size:9px;color:var(--green);border:1px solid rgba(79,211,154,.4);border-radius:4px;padding:0 5px}
.item-bonus{font-size:10.5px;color:var(--green);line-height:1.7}
.item-desc{font-size:10px;color:var(--txt-3);margin-top:5px;line-height:1.55;
  border-top:1px solid var(--line);padding-top:5px}
.item-actions{display:flex;gap:6px;margin-top:8px}
.item-actions .mini-btn{flex:1}
.empty-tip{text-align:center;color:var(--txt-3);font-size:12px;padding:40px 0}

/* ═══════════ 关卡 ═══════════ */
.stage-layout{flex:1;display:flex;flex-direction:column;gap:12px;min-height:0}
.stage-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding-right:3px}
.chapter{border-radius:var(--r);padding:13px;
  background:linear-gradient(180deg,var(--panel-1),#101728);border:1px solid var(--line);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.chapter.locked{opacity:.5}
.chapter-head{display:flex;align-items:baseline;gap:10px;margin-bottom:4px}
.chapter-no{font-size:10px;letter-spacing:.18em;color:var(--gold);opacity:.9}
.chapter-name{font-size:17px;letter-spacing:.14em;font-family:var(--serif);color:var(--gold-2)}
.chapter-prog{margin-left:auto;font-size:11px;color:var(--txt-3)}
.chapter-desc{font-size:11.5px;color:var(--txt-3);margin-bottom:11px;line-height:1.7}
.stage-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(182px,1fr));gap:8px}
.stage-card{position:relative;overflow:hidden;text-align:left;padding:10px 12px;border-radius:6px;
  background:linear-gradient(180deg,#1d2841,#151e30);border:1px solid var(--line);transition:.16s}
.stage-card:not(.locked):hover{transform:translateY(-2px);border-color:var(--line-gold)}
.stage-card.locked{opacity:.4;cursor:not-allowed}
.stage-card.cleared{border-color:rgba(79,211,154,.3)}
.stage-card.boss{background:linear-gradient(140deg,rgba(217,85,122,.18),rgba(110,168,254,.08))}
.stage-id{font-size:9.5px;color:var(--txt-3);letter-spacing:.14em}
.stage-name{font-size:13px;margin:2px 0 7px}
.stage-meta{display:flex;justify-content:space-between;font-size:10px;color:var(--txt-3)}
.stage-clear{color:var(--green)}
.stage-lock{position:absolute;right:9px;top:9px;font-size:11px;opacity:.6}

/* ═══════════ 档案 ═══════════ */
.archive-layout{flex:1;display:flex;flex-direction:column;gap:12px;min-height:0}
.archive-list{flex:1;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(248px,1fr));
  gap:10px;align-content:start;padding-right:3px}
.archive-card{text-align:left;border-radius:7px;padding:13px;
  background:linear-gradient(180deg,var(--panel-1),#101728);border:1px solid var(--line);transition:.16s}
.archive-card:hover{transform:translateY(-2px);border-color:var(--line-gold)}
.a-ch{font-size:9.5px;letter-spacing:.2em;color:var(--gold);opacity:.85}
.a-t{font-size:15px;letter-spacing:.1em;margin:3px 0 6px;font-family:var(--serif);color:var(--gold-2)}
.a-s{font-size:11px;color:var(--txt-3);line-height:1.6;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ═══════════ 浮层 ═══════════ */
.overlay{position:fixed;inset:0;z-index:50;display:grid;place-items:center;
  background:rgba(4,6,12,.82);animation:fadeIn .18s ease}
.overlay[hidden]{display:none}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

.modal{
  width:min(600px,92vw);max-height:86vh;display:flex;flex-direction:column;border-radius:10px;
  background:linear-gradient(180deg,#182135,#0d1422);
  border:1px solid var(--line-gold);
  box-shadow:0 24px 60px rgba(0,0,0,.7), inset 0 1px 0 rgba(255,255,255,.06);
  animation:popIn .22s cubic-bezier(.2,.9,.3,1);overflow:hidden;
}
.modal.narrow{width:min(400px,92vw)}
@keyframes popIn{from{opacity:0;transform:scale(.95) translateY(12px)}to{opacity:1;transform:none}}
.modal-head{flex:none;display:flex;align-items:center;justify-content:space-between;padding:12px 16px;
  border-bottom:1px solid var(--line);background:linear-gradient(180deg,rgba(217,180,92,.1),transparent)}
.pm-title{font-size:13.5px;letter-spacing:.08em;color:var(--gold-2)}
.pm-title b{color:var(--gold-2)}
.close-btn{width:26px;height:26px;border-radius:6px;color:var(--txt-3);font-size:12px;display:grid;place-items:center;transition:.16s}
.close-btn:hover{color:var(--txt);background:rgba(255,255,255,.07)}

.pm-scroll{flex:1;overflow-y:auto;padding:15px 17px;display:flex;flex-direction:column;gap:13px;min-height:180px}
.pm-chips{flex:none;padding:12px 17px 15px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:7px;background:rgba(8,12,20,.5)}

/* ── 私聊对话 ── */
.msg{display:flex;gap:9px;align-items:flex-start;animation:msgIn .2s ease}
.msg.self{flex-direction:row-reverse}
@keyframes msgIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.msg .avatar{width:32px;height:32px;flex:none;border-radius:7px;display:grid;place-items:center;
  font-size:12px;overflow:hidden;border:1px solid var(--line-2);
  background:#1f2937;background:color-mix(in srgb, var(--c, #6ea8fe) 26%, #141d30);
  color:#cbd6ea;color:color-mix(in srgb, var(--c, #6ea8fe) 72%, #ffffff)}
.msg .avatar img{width:100%;height:100%;object-fit:cover;object-position:top center}
.msg .avatar.av-me{background:linear-gradient(180deg,#3f76c8,#2c4f80);color:#e8eefb;border-color:#4d7fc4}
.msg-main{min-width:0;max-width:76%;display:flex;flex-direction:column;gap:3px}
.msg.self .msg-main{align-items:flex-end}
.msg-name{font-size:10px;color:var(--txt-3);padding:0 3px}
.bubble{padding:8px 11px;border-radius:8px;font-size:12px;line-height:1.6;color:var(--txt);
  background:linear-gradient(180deg,#232f4a,#1a2338);border:1px solid var(--line);
  word-break:break-word;white-space:pre-wrap}
.msg.self .bubble{background:linear-gradient(180deg,#3f76c8,#2f5c9e);border-color:#4d7fc4;color:#f2f6ff}

/* 私聊选项 */
.chip{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:6px;text-align:left;
  font-size:12px;color:var(--txt);background:linear-gradient(180deg,#1d2841,#151e30);
  border:1px solid var(--line);transition:.15s;width:100%}
.chip:hover{border-color:var(--line-gold);transform:translateX(3px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 4px 12px rgba(0,0,0,.4)}
.chip-tone{flex:none;font-size:10px;padding:1px 6px;border-radius:4px;border:1px solid currentColor;opacity:.9}
.modal-body{padding:17px 20px 22px;overflow-y:auto;font-size:12.5px;line-height:1.8;color:var(--txt-2)}

.picker-list{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:7px}
.picker-item{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:6px;
  background:linear-gradient(180deg,#1d2841,#151e30);border:1px solid var(--line);transition:.16s;text-align:left;width:100%}
.picker-item:hover{border-color:var(--line-gold);transform:translateX(3px)}
.member-av{width:30px;height:30px;flex:none;border-radius:7px;display:grid;place-items:center;font-size:12px;
  overflow:hidden;border:1px solid var(--line-2);
  background:#1f2937;background:color-mix(in srgb, var(--c, #6ea8fe) 26%, #141d30);
  color:#cbd6ea;color:color-mix(in srgb, var(--c, #6ea8fe) 72%, #ffffff)}
.member-av img{width:100%;height:100%;object-fit:cover;object-position:top center}
.member-info{flex:1;min-width:0}
.member-top{display:flex;align-items:center;gap:5px}
.member-name{font-size:12.5px}
.member-sub{font-size:10.5px;color:var(--txt-3)}

.help-body{padding:16px 20px 22px;overflow-y:auto;font-size:12.5px;line-height:1.85;color:var(--txt-2)}
.help-body h4{font-size:14px;color:var(--gold-2);letter-spacing:.1em;margin:15px 0 7px;font-family:var(--serif)}
.help-body h4:first-child{margin-top:0}
.help-body ul{margin:6px 0 6px 18px}
.help-body li{margin-bottom:4px}
.help-body b{color:var(--gold)}
.help-body p{margin-bottom:4px}

/* 离线收益 */
.offline-box{text-align:center}
.off-title{font-size:15px;color:var(--gold-2);letter-spacing:.1em;margin-bottom:4px;font-family:var(--serif)}
.off-cap{font-size:10.5px;color:var(--txt-3);margin-bottom:10px}
.off-rows{display:flex;flex-direction:column;gap:8px;margin:14px 0}
.off-row{display:flex;justify-content:space-between;padding:9px 14px;border-radius:6px;
  background:linear-gradient(180deg,#1d2841,#151e30);border:1px solid var(--line);font-size:12.5px;color:var(--txt-2)}
.off-row b{color:var(--gold-2);font-size:14px}
.off-tip{font-size:11px;color:var(--txt-3)}

/* ── 剧情 ── */
.dialog-scene{position:relative;width:100%;height:100%;display:flex;align-items:flex-end;justify-content:center;cursor:pointer}
.dialog-bg{position:absolute;inset:0;background:
  radial-gradient(900px 600px at 50% 10%, rgba(217,85,122,.09), transparent 62%),
  radial-gradient(700px 500px at 20% 90%, rgba(110,168,254,.08), transparent 60%), #070b14}
.dialog-sprite{position:relative;z-index:2;height:76vh;width:auto;object-fit:contain;margin-bottom:120px;
  filter:drop-shadow(0 18px 36px rgba(0,0,0,.8));animation:fade .4s ease}
.dialog-box{position:absolute;z-index:3;left:50%;transform:translateX(-50%);bottom:32px;width:min(920px,90vw);
  padding:19px 25px 23px;border-radius:9px;
  background:linear-gradient(180deg,rgba(24,33,53,.96),rgba(13,20,34,.97));
  border:1px solid var(--line-gold);box-shadow:0 -8px 50px rgba(0,0,0,.7)}
.dialog-name{font-size:15px;letter-spacing:.2em;color:var(--gold-2);margin-bottom:8px;font-family:var(--serif)}
.dialog-name:empty{display:none}
.dialog-text{font-size:15px;line-height:2;letter-spacing:.03em;min-height:58px}
.dialog-next{position:absolute;right:21px;bottom:9px;font-size:10px;color:var(--txt-3);animation:blink 1.8s infinite}
@keyframes blink{0%,100%{opacity:.35}50%{opacity:.9}}

/* ═══════════ 战斗 ═══════════ */
.battle-overlay{background:rgba(4,6,12,.95)}
.battle-scene{position:relative;width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}
.battle-bg{position:absolute;inset:0;background:
  radial-gradient(700px 440px at 74% 14%, rgba(217,85,122,.14), transparent 60%),
  radial-gradient(860px 540px at 20% 86%, rgba(110,168,254,.13), transparent 62%), #080d18}
.battle-top{position:relative;z-index:3;flex:none;display:flex;align-items:center;justify-content:space-between;
  padding:14px 26px;border-bottom:1px solid var(--line-gold);
  background:linear-gradient(180deg,rgba(217,180,92,.08),transparent)}
.battle-stage-name{font-size:16px;letter-spacing:.16em;font-family:var(--serif);color:var(--gold-2)}
.battle-turn{font-size:11.5px;color:var(--txt-3)}
.battle-turn b{color:var(--gold);font-size:14px}

.battle-field{position:relative;z-index:3;flex:1;display:grid;grid-template-columns:1fr 1fr;gap:20px;
  padding:18px 40px;align-items:stretch;min-height:0}
.battle-side{display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;
  height:100%;min-height:0}
.unit{width:100%;max-width:310px;transition:.25s;display:flex;flex-direction:column;min-height:0}
.unit-card{flex:none}
.unit.dead{opacity:.22;filter:grayscale(1)}
.unit.hit{animation:shake .32s ease}
@keyframes shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-9px)}40%{transform:translateX(8px)}60%{transform:translateX(-5px)}80%{transform:translateX(3px)}}

/* 多敌人时横向排布，单体时居中放大 */
.battle-side.enemies{flex-direction:row;flex-wrap:wrap;gap:14px;align-content:center}
.battle-side.enemies .unit{flex:1 1 30%;max-width:270px}
.battle-side.enemies.n1{flex-direction:column}
.battle-side.enemies.n1 .unit{flex:none;width:100%;max-width:310px}

.unit-card{border-radius:8px;padding:11px 13px;background:rgba(24,33,53,.94);border:1px solid var(--line-2);
  box-shadow:0 12px 30px rgba(0,0,0,.5)}
.unit-head{display:flex;align-items:center;gap:9px;margin-bottom:7px}
.unit-face{width:36px;height:36px;border-radius:7px;display:grid;place-items:center;font-size:15px;flex:none;
  overflow:hidden;background:rgba(255,255,255,.05);border:1px solid var(--line-2)}
.unit-face img{width:100%;height:100%;object-fit:cover;object-position:top center}
.unit-name{font-size:13px}
.unit-lv{font-size:9.5px;color:var(--txt-3)}
/* ── 战斗状态条（生命 / 灵力 / 怒气） ── */
.stat-rows{display:flex;flex-direction:column;gap:5px}
.stat-row{display:grid;grid-template-columns:30px 1fr 66px;align-items:center;gap:8px}
.sr-lb{font-size:9.5px;color:var(--txt-3);letter-spacing:.06em}
.sr-lb.mp{color:#8fc0ff}
.sr-lb.sp{color:#ffe08a}
.sr-v{font-size:9.5px;color:var(--txt-2);text-align:right;font-variant-numeric:tabular-nums}
.hp-bar{height:9px;border-radius:5px;background:rgba(255,255,255,.08);overflow:hidden;border:1px solid rgba(255,255,255,.06)}
.hp-bar i{display:block;height:100%;background:linear-gradient(90deg,#2fa870,#7ff0b8);transition:width .42s cubic-bezier(.3,1,.4,1)}
.hp-bar.enemy i{background:linear-gradient(90deg,#a83f5f,#ff8fa6)}
.block-bar{height:7px;border-radius:4px;background:rgba(255,255,255,.07);overflow:hidden;border:1px solid rgba(255,255,255,.05)}
.block-bar i{display:block;height:100%;background:linear-gradient(90deg,#8b6ad9,#c5a7ff);transition:width .35s}
.sr-lb.block{color:#c5a7ff}
.intent{margin-left:5px;font-size:9px;padding:1px 4px;border-radius:3px;border:1px solid currentColor}.intent.attack{color:#ff8fa6}.intent.block{color:#c5a7ff}.intent.buff{color:#f2c879}
.mp-bar,.sp-bar{height:7px;border-radius:4px;background:rgba(255,255,255,.07);overflow:hidden;
  border:1px solid rgba(255,255,255,.05)}
.mp-bar i{display:block;height:100%;background:linear-gradient(90deg,#3d6fd0,#8fc0ff);transition:width .42s}
.sp-bar i{display:block;height:100%;background:linear-gradient(90deg,#c9a227,#ffe08a);transition:width .42s}
.sp-bar.full i{animation:spGlow 1.1s infinite}
@keyframes spGlow{0%,100%{box-shadow:0 0 0 0 rgba(255,224,138,.5)}50%{box-shadow:0 0 10px 2px rgba(255,224,138,.75)}}
.unit-status{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px;min-height:15px}
.st{font-size:9px;padding:1px 6px;border-radius:4px;border:1px solid var(--line-2);color:var(--txt-3)}
.st.buff{color:#9ff0d8;border-color:rgba(79,211,154,.4)}
.st.debuff{color:#ffb0bf;border-color:rgba(217,85,122,.4)}

.ally-unit{max-width:340px;height:100%}
.ally-figure{position:relative;flex:1 1 0;min-height:0;max-height:min(48vh,440px);
  display:flex;align-items:flex-end;justify-content:center;margin-bottom:9px}
.ally-figure img{height:100%;width:auto;max-width:100%;object-fit:contain;filter:drop-shadow(0 14px 28px rgba(0,0,0,.75))}
.ally-figure .aura{position:absolute;bottom:-2px;left:50%;transform:translateX(-50%);width:180px;height:24px;
  border-radius:50%;background:radial-gradient(ellipse,rgba(217,85,122,.3),transparent 70%);filter:blur(7px)}

.enemy-figure{flex:none;height:min(32vh,300px);display:flex;align-items:flex-end;justify-content:center;margin-bottom:9px}
.battle-side.enemies .enemy-figure{height:min(25vh,230px)}
.battle-side.enemies.n1 .enemy-figure{height:min(37vh,350px)}
.battle-side.enemies .unit-card{padding:9px 10px}
.battle-side.enemies .unit-head{margin-bottom:5px}
.battle-side.enemies .unit-face{width:28px;height:28px;font-size:12px}
.battle-side.enemies .stat-row{grid-template-columns:26px 1fr 58px;gap:6px}

.orb{width:104px;height:104px;border-radius:50%;display:grid;place-items:center;font-size:38px;
  border:1px solid var(--line-2);
  background:radial-gradient(circle at 36% 30%,rgba(255,255,255,.14),rgba(217,85,122,.12) 50%,rgba(16,22,36,.8));
  box-shadow:0 0 40px rgba(217,85,122,.2) inset,0 12px 26px rgba(0,0,0,.5)}
.enemy-figure.boss .orb{width:134px;height:134px;font-size:50px;box-shadow:0 0 60px rgba(217,85,122,.4) inset,0 16px 36px rgba(0,0,0,.6)}
/* 多敌人同屏时整体缩小一档，避免溢出 */
.battle-side.enemies:not(.n1) .orb{width:78px;height:78px;font-size:30px}
.battle-side.enemies:not(.n1) .enemy-figure.boss .orb{width:96px;height:96px;font-size:36px}

.battle-bottom{position:relative;z-index:3;flex:none;display:grid;grid-template-columns:1fr 320px;gap:13px;padding:0 26px 18px}
.battle-log{height:116px;overflow-y:auto;border-radius:6px;padding:10px 13px;background:rgba(10,15,26,.7);
  border:1px solid var(--line);font-size:11.5px;line-height:1.9;color:var(--txt-2)}
.battle-log .lg-crit{color:#ffe08a}
.battle-log .lg-heal{color:#9ff0d8}
.battle-log .lg-hurt{color:#ffb0bf}
.battle-log .lg-sys{color:#b98cff}
.battle-cmd{display:flex;flex-direction:column;gap:8px;align-content:start;min-width:0}
.hand{display:flex;gap:7px;min-height:142px;align-items:stretch}
.card{position:relative;flex:1;min-width:0;padding:13px 9px 9px;border-radius:8px;text-align:left;color:var(--txt);
  background:linear-gradient(155deg,#263654,#151e31 70%);border:1px solid #45587b;
  box-shadow:0 5px 0 #111a2b,0 10px 18px rgba(0,0,0,.35);transition:.15s;display:flex;flex-direction:column;gap:4px}
.card:hover:not(:disabled){transform:translateY(-8px);border-color:var(--gold);box-shadow:0 10px 0 #111a2b,0 16px 24px rgba(0,0,0,.42)}
.card:disabled{opacity:.4;filter:saturate(.5);cursor:not-allowed}
.card.attack{background:linear-gradient(155deg,#4d2c42,#1d2036 72%);border-color:#8d516f}
.card.skill{background:linear-gradient(155deg,#263e57,#172236 72%);border-color:#4c7399}
.card.r2{border-color:#b07bff}.card.r3{border-color:#ffa94d}
.card-cost{position:absolute;left:-6px;top:-9px;width:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:#e8d094;color:#3a2a08;border:1px solid #846628;font-weight:700}
.card-ico{font-size:22px;color:var(--gold-2);line-height:1.2}.card strong{font-size:12px;color:var(--txt)}
.card small{font-size:10px;line-height:1.45;color:var(--txt-2);margin-top:auto}.card em{font-size:9px;color:#ffb0bf}
.battle-actions{display:flex;align-items:center;gap:8px}.energy-badge{padding:7px 10px;border-radius:6px;background:linear-gradient(180deg,#e8d094,#b8882f);color:#3a2a08;font-size:11px;white-space:nowrap}.energy-badge b{font-size:15px}.deck-count{font-size:10px;color:var(--txt-3);flex:1;text-align:right}
.cmd-btn{padding:9px 11px;border-radius:6px;font-size:12px;text-align:left;
  background:linear-gradient(180deg,#22304a,#18223a);border:1px solid var(--line);transition:.14s;color:var(--txt-2)}
.cmd-btn:hover:not(:disabled){color:var(--gold-2);border-color:var(--line-gold);transform:translateY(-1px)}
.cmd-btn:disabled{opacity:.32;cursor:not-allowed}
.cmd-btn .c-cost{display:block;font-size:9.5px;color:var(--blue);margin-top:2px}
.cmd-btn.ult{border-color:rgba(255,224,138,.45);background:linear-gradient(140deg,rgba(255,224,138,.14),rgba(217,85,122,.1))}
.cmd-btn.wide{grid-column:span 2}.end-turn{flex:none;padding:8px 14px;color:#3a2a08;background:linear-gradient(180deg,#fbe9b4,#d9b45c);border-color:#8d6c28}

.damage-layer{position:absolute;inset:0;z-index:9;pointer-events:none}
.dmg{position:absolute;font-size:26px;font-weight:700;font-family:var(--serif);
  text-shadow:0 3px 14px rgba(0,0,0,.95);animation:dmgFloat 1s ease forwards}
.dmg.crit{font-size:34px;color:#ffe08a}
.dmg.hurt{color:#ff8fa6}
.dmg.heal{color:#8ff0c8}
@keyframes dmgFloat{
  0%{opacity:0;transform:translateY(14px) scale(.7)}
  22%{opacity:1;transform:translateY(0) scale(1.12)}
  100%{opacity:0;transform:translateY(-52px) scale(1)}
}

.battle-result{position:absolute;inset:0;z-index:12;display:grid;place-items:center;background:rgba(4,6,12,.9);animation:fadeIn .3s}
.battle-result[hidden]{display:none}
.result-card{text-align:center;padding:34px 52px;border-radius:10px;
  background:linear-gradient(180deg,#182135,#0d1422);border:1px solid var(--line-gold);
  box-shadow:0 24px 60px rgba(0,0,0,.7);animation:popIn .3s ease}
.result-title{font-size:34px;letter-spacing:.3em;margin-bottom:6px;font-family:var(--serif)}
.result-title.win{color:#9ff0d8;text-shadow:0 0 40px rgba(79,211,154,.45)}
.result-title.lose{color:#ff8fa6;text-shadow:0 0 40px rgba(217,85,122,.4)}
.result-sub{font-size:12px;color:var(--txt-3);margin-bottom:19px}
.result-rewards{display:flex;flex-direction:column;gap:6px;margin-bottom:21px;font-size:12.5px;color:var(--txt-2)}
.result-rewards .rw{color:var(--gold-2)}
.result-btns{display:flex;gap:10px;justify-content:center}

/* ═══════════ Toast ═══════════ */
.toasts{position:fixed;right:18px;bottom:18px;z-index:99;display:flex;flex-direction:column;gap:8px;align-items:flex-end}
.toast{padding:9px 15px;border-radius:6px;font-size:12.5px;
  background:linear-gradient(180deg,#22304a,#18223a);border:1px solid var(--line-2);
  box-shadow:0 10px 26px rgba(0,0,0,.55);animation:toastIn .24s ease;max-width:320px}
.toast.out{animation:toastOut .24s ease forwards}
.toast.good{border-color:rgba(79,211,154,.45);color:#9ff0d8}
.toast.bad{border-color:rgba(217,85,122,.45);color:#ffb0bf}
.toast.gold{border-color:var(--line-gold);color:var(--gold-2)}
@keyframes toastIn{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateX(20px)}}

/* ═══════════ 响应式 ═══════════ */
@media (max-width:1280px){
  .rail{width:200px}
  .hero-layout{grid-template-columns:minmax(0,1.15fr) minmax(330px,.85fr)}
}
@media (max-width:1080px){
  .rail{display:none}
  .hud-res .hres:nth-child(n+4){display:none}
  .hero-layout{grid-template-columns:1fr}
  .hero-art{min-height:40vh}
  .battle-bottom{grid-template-columns:1fr}
  .battle-log{height:76px}
  .battle-field{padding:14px 18px}
}
@media (max-width:820px){
  .hud-res .hres:nth-child(n+3){display:none}
  .member-panel .member-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}
}

/* 月幕物语 · 清爽的纸面与灵田主题 */
:root{--bg:#f7f8f5;--bg-2:#fff;--panel-1:#fff;--panel-2:#fbfcf9;--panel-3:#f1f5ed;--line:#e5eae3;--line-2:#ced9cc;--line-gold:#d9e7c5;--gold:#56835b;--gold-2:#285c42;--gold-dark:#326848;--txt:#25382e;--txt-2:#627469;--txt-3:#89998d;--rose:#cb7982;--green:#3f9569;--blue:#5d8d9d;--r:15px}
body{background:#fff;color:var(--txt)}
.app{background:#f8faf7}
.hud{height:76px;padding:0 24px;background:#fff;border-bottom:1px solid var(--line);box-shadow:none;gap:25px}
.hud-logo{width:44px;height:44px;border:0;border-radius:13px;background:#e7f0e2;color:#346b4d;box-shadow:none;font-size:22px}
.hud-title{color:#244b39;font-size:18px;letter-spacing:.1em;font-weight:700}
.hud-sub{font-size:11px;color:#95a399}.hud-sub b{color:#407552}
.hud-res{gap:8px;justify-content:flex-end;flex-wrap:nowrap;min-width:0}
.hres,.hres.gold{background:#f7faf5;border:1px solid #edf1ea;box-shadow:none;border-radius:11px;min-width:0;padding:7px 11px}
.hres-ico{color:#5a9065}.hres-body b,.hres.gold .hres-body b,.hres.resource-heat .hres-body b,.hres.resource-faith .hres-body b{color:#2c5140}
.hres-body i{color:#92a195}.hres-bar{background:#e5eee5}.hres-bar i,.ibox-bar i{background:#7caf7b}
.ghost-btn,.mini-btn{background:#fff;border:1px solid #dae5d8;color:#54705e;box-shadow:none;border-radius:9px}
.ghost-btn:hover,.mini-btn:hover:not(:disabled){background:#f0f6ee;color:#285c42;border-color:#afcbb0}
.dock{width:90px;background:#fff;border-right:1px solid var(--line);padding:22px 9px;gap:8px}
.dock-btn{border-radius:13px;color:#91a096;padding:12px 4px}
.dock-btn:hover{color:#487452;background:#f4f8f3}
.dock-btn.active{background:#eaf3e9;color:#2e704b;box-shadow:none;border-color:transparent}
.dock-txt{font-size:11px;font-weight:600}
.page{padding:22px}.rail{padding:22px 22px 22px 0;width:270px}
.panel,.panel-head.standalone,.chapter,.archive-card,.item-card,.mcard,.pcell,.stage-card,.stat,.skill,.slot,.picker-item,.chip,.off-row{background:#fff;border:1px solid var(--line);box-shadow:0 4px 20px rgba(35,66,45,.035);border-radius:var(--r)}
.panel-head,.modal-head{background:#fff;border-bottom:1px solid var(--line);padding:13px 17px}
.panel-head.standalone{padding:14px 18px}.panel-title{color:#2c5140;font-size:14px;font-weight:700;letter-spacing:.02em}.panel-sub{font-size:11px;color:#92a196}.panel-sub b{color:#437856}
.big-btn,.big-btn.gold,.mc-train{background:#4c8760;color:#fff;border:1px solid #4c8760;border-radius:11px;box-shadow:none;font-weight:600;text-shadow:none}
.big-btn:hover:not(:disabled),.mc-train:hover:not(:disabled){filter:none;background:#39744d;transform:translateY(-1px);box-shadow:0 6px 15px rgba(48,107,68,.14)}
.big-btn:disabled,.mc-train:disabled{filter:none;background:#c9d5c9;border-color:#c9d5c9;color:#fff;opacity:.75}
.big-btn:active:not(:disabled),.big-btn.gold:active:not(:disabled){transform:translateY(0);box-shadow:none}
.idle-page{gap:14px}.idle-top{gap:10px}.ibox{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:none}.ibox-v b{color:#315b42}.ibox-bar,.mc-bar,.lv-bar{background:#eaf0e9;border-color:#eaf0e9}
.idle-body{overflow-y:auto;padding-right:3px}.member-panel,.farm-panel,.pending-panel{flex:none}.pending-panel{min-height:180px}.pending-grid{min-height:110px;max-height:250px}.member-panel .member-grid{gap:9px}
.mcard.locked{opacity:.5;filter:none;background:#f9faf8}.mc-name{color:#2f4d3c}.mc-tend{border-color:#e8eee7}.mc-bar.aff i{background:#d8a8a9}.mc-bar.prod i,.lv-bar i{background:#87b68f}.mc-train{border-radius:8px}
.pcell:hover,.stage-card:not(.locked):hover,.item-card:hover,.archive-card:hover{border-color:#adcbb0;box-shadow:0 9px 20px rgba(55,102,62,.08)}
.pcell::before{height:3px;border-radius:10px}.pc-q,.item-desc,.stage-id,.chapter-desc,.stage-meta,.chapter-prog,.a-s,.a-ch{color:#849588}.log-item.good,.log-item.item,.log-item.chat,.log-item.chat .log-who{color:#477d57}
.hero-art{background:#f2f7ef}.hero-art img{filter:drop-shadow(0 15px 22px rgba(55,82,57,.15))}.hero-name,.chapter-name,.a-t{color:#315e42}.hero-desc b,.stat-v,.off-row b{color:#427854}.stat,.skill,.slot{background:#fbfcfa}.slot.filled{background:#f5faf4}.skill-ico,.item-ico{background:#e9f3e8;color:#568665}.slot-bonus,.item-bonus{color:#409468}
.filter-btn{background:#fff;color:#6d8573;border-color:#dfe9dd}.filter-btn.active{background:#e7f3e6;color:#32724c;border-color:#b6d1b8}.eq-flag,.mini-btn.eq{color:#41865b;border-color:#b8d8be}
.chapter.locked{opacity:.68}.stage-card.locked{opacity:.55}.stage-card.cleared{border-color:#bdddc1;background:#f6fbf5}.stage-card.boss{background:#fffaf5}.stage-clear{color:#438b5f}
.overlay{background:rgba(28,46,35,.42)}.modal,.dialog-box,.unit-card,.result-card{background:#fff;color:var(--txt);border-color:#dfe9dc;box-shadow:0 22px 60px rgba(31,61,39,.18)}.pm-title,.pm-title b,.help-body h4,.dialog-name,.battle-stage-name{color:#315e42}.modal-body,.help-body{color:#5e7565}.help-body b{color:#3d7954}.pm-chips{background:#fafcf9}.bubble,.msg .avatar,.picker-item,.chip{background:#f5f9f4;color:#315440;border-color:#e4ede2}.msg.self .bubble{background:#e4f2e5;color:#315440;border-color:#c4dfc8}.msg .avatar.av-me{background:#70a981;color:#fff;border-color:#70a981}
.dialog-bg,.battle-bg{background:#eef5eb}.battle-overlay{background:#eef5eb}.battle-top{background:#fff;border-bottom:1px solid #e4ebe1}.battle-log,.card,.cmd-btn,.toast{background:#fff;color:#315440;border-color:#dce7dc;box-shadow:0 4px 14px rgba(30,61,38,.08)}.card.attack{background:#fff7f6;border-color:#eacbc7}.card.skill{background:#f4faf7;border-color:#cae0d0}.card strong{color:#315440}.card-cost,.energy-badge,.end-turn{background:#e6f2e5;color:#2c6845;border-color:#bbd8bc}.card-ico,.result-rewards .rw{color:#45835a}.battle-result{background:rgba(239,246,238,.9)}.result-title.win{color:#398559;text-shadow:none}.result-title.lose{color:#bb6b71;text-shadow:none}.toast.good,.toast.gold{color:#398559}.toast.bad{color:#bd6972}

.welcome-card{display:flex;align-items:center;justify-content:space-between;gap:20px;flex:none;padding:20px 25px;border:1px solid #dfeada;border-radius:18px;background:#fff;box-shadow:0 9px 28px rgba(43,81,48,.045)}
.eyebrow{display:block;color:#70a278;font-size:10px;font-weight:700;letter-spacing:.2em;margin-bottom:5px}.welcome-card h1{font-family:var(--serif);font-size:24px;letter-spacing:.06em;color:#244d37;line-height:1.3}.welcome-card p,.relic-panel p{color:#7f9281;font-size:11px;max-width:650px;margin-top:6px;line-height:1.65}.welcome-action{flex:none;background:#e9f4e7;color:#39714d;border:1px solid #d1e6d0;border-radius:10px;padding:10px 15px;font-weight:700}.welcome-action:hover{background:#dceedd}.welcome-action span{margin-left:12px}
.farm-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:13px}.farm-plot{min-height:105px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;text-align:left;padding:13px 15px;border-radius:12px;border:1px solid #e1e9dd;background:#f9fbf7;transition:.18s}.farm-plot:hover{transform:translateY(-2px);border-color:#afcdad;box-shadow:0 8px 16px rgba(51,105,60,.07)}.farm-plot.ready{background:#f1f9eb;border-color:#abd2a7}.farm-icon{font-size:23px;line-height:1.2;color:#7ca981}.farm-plot strong{color:#3e6647;font-size:12px;margin-top:6px}.farm-plot small{color:#91a18d;font-size:10px}.farm-progress{width:100%;height:4px;background:#e6eee3;border-radius:10px;overflow:hidden;margin-top:8px}.farm-progress i{display:block;height:100%;background:#7db987}
.relic-panel{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 22px;background:#fff;border:1px solid var(--line);border-radius:15px}.relic-panel h2{font-family:var(--serif);font-size:20px;color:#285740}.relic-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;min-width:53%}.relic{display:flex;align-items:center;gap:8px;padding:8px;border:1px solid #e4ebe1;border-radius:10px;background:#fafbf9;opacity:.65}.relic.obtained{opacity:1;background:#f0f8ed;border-color:#b7d8b2}.relic-icon{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:#edf2e9;color:#73a179;font-size:17px;flex:none}.relic strong{display:block;font-size:10px;color:#345b42;white-space:nowrap}.relic small{display:block;font-size:9px;color:#94a293;white-space:nowrap}
@media(max-width:1150px){.hud-res .hres:nth-child(n+4){display:none}.relic-panel{align-items:flex-start;flex-direction:column}.relic-grid{width:100%}}
@media(max-width:820px){body{overflow:auto}.app{min-height:100vh;height:auto}.hud{height:auto;min-height:70px;flex-wrap:wrap;padding:12px 15px;gap:10px}.hud-res{order:3;width:100%;flex:1 1 100%;justify-content:flex-start}.hud-actions{margin-left:auto}.body{display:block}.dock{position:sticky;top:0;z-index:10;width:100%;display:flex;flex-direction:row;padding:6px 8px;border-right:0;border-bottom:1px solid var(--line)}.dock-btn{flex:1;padding:8px 2px}.main{min-height:calc(100vh - 150px)}.page{position:relative;display:none;padding:12px;min-height:calc(100vh - 150px)}.page.active{display:flex}.idle-page{overflow:visible}.idle-body{overflow:visible}.idle-top{flex-wrap:wrap}.ibox{flex:1 1 42%}.ibox.grow{min-width:180px}.farm-grid{grid-template-columns:repeat(2,1fr)}.member-panel .member-grid{grid-template-columns:repeat(2,1fr)}.action-row{flex-wrap:wrap}.welcome-card{align-items:flex-start;flex-direction:column}.hero-layout{display:flex;flex-direction:column}.hero-art{min-height:360px}.hero-info{overflow:visible}.stage-list,.archive-list,.bag-grid{overflow:visible}.relic-grid{grid-template-columns:repeat(2,1fr)}.rail{display:none}.battle-field{min-height:340px}.battle-bottom{padding:10px}.hand{overflow-x:auto}.card{min-width:100px}}

/* 游戏主画面与战斗美术 */
.home-scene{position:relative;flex:none;height:330px;overflow:hidden;border-radius:18px;border:1px solid #d7dfd2;background:#b8d5ae url('../assets/scene/jaska-borderlands-dawn-v1.png') center 57%/cover no-repeat;box-shadow:0 15px 30px rgba(48,79,51,.12)}
.scene-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(20,42,31,.78),rgba(29,57,38,.38) 48%,transparent 76%),linear-gradient(0deg,rgba(17,37,25,.28),transparent 45%)}
.scene-copy{position:absolute;z-index:2;left:34px;top:38px;max-width:460px;color:#fff;text-shadow:0 2px 10px rgba(5,27,9,.28)}
.scene-chapter{display:inline-block;background:rgba(255,255,255,.17);border:1px solid rgba(255,255,255,.36);border-radius:30px;padding:4px 10px;font-size:10px;letter-spacing:.14em;backdrop-filter:blur(8px)}
.scene-copy h1{font-family:var(--serif);font-size:32px;font-weight:700;letter-spacing:.06em;margin-top:14px;color:#fff}.scene-copy p{font-size:12px;line-height:1.8;color:#edf7e8;max-width:390px;margin-top:6px}
.scene-quest{margin-top:22px;padding:11px 17px;border-radius:9px;background:#f2d895;color:#4c391d;font-size:13px;font-weight:700;box-shadow:0 5px 0 #ae8744,0 12px 25px rgba(22,27,10,.23);text-shadow:none;transition:.15s}.scene-quest:hover{transform:translateY(-2px);background:#ffe4a0}.scene-quest span{font-size:10px;margin-left:15px;opacity:.8}
.scene-hero{position:absolute;right:8%;bottom:-88px;height:450px;max-width:none;width:auto;z-index:1;filter:drop-shadow(0 16px 20px rgba(6,20,14,.45))}.scene-location{position:absolute;right:18px;bottom:14px;color:#fff;background:rgba(24,46,31,.48);font-size:11px;padding:4px 10px;border-radius:20px;backdrop-filter:blur(6px)}
.battle-bg{background:linear-gradient(0deg,rgba(8,16,28,.36),rgba(8,16,28,.08)),url('../assets/scene/ruined-shrine.png') center/cover no-repeat}.battle-top{background:rgba(14,27,37,.55);border-bottom:1px solid rgba(255,255,255,.18);backdrop-filter:blur(8px)}.battle-stage-name,.battle-turn,.battle-turn b{color:#fff}.battle-bottom{grid-template-columns:230px minmax(0,1fr);align-items:end}.battle-log{height:150px;background:rgba(16,30,38,.82);color:#e9f3f0;border:1px solid rgba(255,255,255,.18);backdrop-filter:blur(8px)}.battle-cmd{background:rgba(15,29,39,.7);padding:12px;border:1px solid rgba(255,255,255,.22);border-radius:14px;backdrop-filter:blur(10px)}.hand{min-height:150px;overflow-x:auto;overflow-y:visible;padding:9px 5px}.card{min-width:122px;max-width:170px;min-height:136px;flex:1 0 122px;box-shadow:0 5px 0 rgba(5,17,28,.28);display:flex;flex-direction:column;gap:6px}.card:hover:not(:disabled){box-shadow:0 8px 0 rgba(5,17,28,.28),0 16px 22px rgba(0,0,0,.22)}.card-cost{background:#f7dc97}.deck-count{color:#e3eee9}.energy-badge{background:#e7e0ad}.unit-card{background:rgba(255,255,255,.93);backdrop-filter:blur(8px)}.enemy-figure{align-items:center}.enemy-art{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 18px 20px rgba(8,13,33,.48))}.battle-side.enemies.n1 .enemy-art{max-height:200px}.unit.targeted .unit-card{border:2px solid #f5d88b;box-shadow:0 0 0 4px rgba(244,211,133,.25),0 8px 28px rgba(0,0,0,.25)}.unit.targeted .enemy-art{filter:drop-shadow(0 0 16px rgba(247,213,132,.7))}.battle-side.enemies .unit:not(.dead){cursor:pointer}.battle-side.enemies .unit:not(.dead):hover .unit-card{border-color:#f4d991}
@media(max-width:1080px){.battle-bottom{grid-template-columns:1fr}.battle-log{height:72px}.scene-hero{right:0}}
@media(max-width:820px){.home-scene{height:330px}.scene-copy{left:20px;top:26px;max-width:65%}.scene-copy h1{font-size:24px}.scene-hero{height:340px;bottom:-55px;right:-60px}.scene-quest span{display:none}.scene-location{display:none}.battle-cmd{padding:7px}.battle-field{min-height:330px}.battle-bottom{padding:7px}.card{min-width:105px;flex-basis:105px}}

/* 1-2 战场：双方立于同一地面线，南北洛从左侧发起近身攻击。 */
.battle-scene.field-battle .battle-field{align-items:stretch;padding:12px 5vw 14px;}
.battle-scene.field-battle .battle-side{height:100%;justify-content:flex-end;align-items:center;}
.battle-scene.field-battle .ally-unit,
.battle-scene.field-battle .battle-side.enemies.n1 .unit{height:100%;align-self:stretch;display:grid;grid-template-rows:minmax(0,1fr) auto;}
.battle-scene.field-battle .ally-figure,
.battle-scene.field-battle .battle-side.enemies.n1 .enemy-figure{height:100%;min-height:0;max-height:none;align-self:stretch;flex:none;margin-bottom:10px;align-items:flex-end;}
.battle-scene.field-battle .ally-figure img{height:88%;max-height:52vh;max-width:94%;object-fit:contain;object-position:center bottom;transform-origin:52% 78%;}
.battle-scene.field-battle .battle-side.enemies.n1 .enemy-art{height:78%;max-height:43vh;width:100%;object-fit:contain;object-position:center bottom;}
.battle-scene.field-battle .ally-figure::after{content:"";position:absolute;z-index:2;left:56%;bottom:34%;width:5px;height:0;border-radius:5px;background:linear-gradient(90deg,#64778a,#fff,#9fc8e3);box-shadow:0 0 9px rgba(208,239,255,.9);transform:rotate(22deg);transform-origin:50% 100%;opacity:0;}
.battle-scene.field-battle .ally-figure::before{content:"";position:absolute;z-index:3;left:43%;top:37%;width:0;height:7px;border-radius:100%;background:linear-gradient(90deg,transparent,rgba(230,248,255,.95),#fff,transparent);filter:drop-shadow(0 0 8px #bdeaff);transform:rotate(-18deg);opacity:0;}
.battle-scene.field-battle .ally-unit.attack-draw .ally-figure img{animation:heroDraw 170ms ease-out both;}
.battle-scene.field-battle .ally-unit.attack-draw .ally-figure::after{height:25%;opacity:1;transition:height .14s ease;}
.battle-scene.field-battle .ally-unit.attack-slash .ally-figure img{animation:heroLunge 360ms cubic-bezier(.2,.75,.2,1) both;}
.battle-scene.field-battle .ally-unit.attack-slash .ally-figure::after{height:31%;opacity:1;animation:bladeSwing 360ms ease-in both;}
.battle-scene.field-battle .ally-unit.attack-slash .ally-figure::before{animation:slashFlash 360ms ease-out both;}
@keyframes heroDraw{0%{transform:translateX(0) rotate(0)}45%{transform:translateX(-2%) rotate(-3deg)}100%{transform:translateX(0) rotate(0)}}
@keyframes heroLunge{0%{transform:translateX(0) rotate(0)}32%{transform:translateX(-2%) rotate(-3deg)}62%{transform:translateX(9%) rotate(2deg)}100%{transform:translateX(0) rotate(0)}}
@keyframes bladeSwing{0%{transform:rotate(22deg) scaleY(.8)}35%{transform:rotate(-38deg) scaleY(1.1)}70%,100%{transform:rotate(55deg) scaleY(.25);opacity:0}}
@keyframes slashFlash{0%,25%{left:39%;top:42%;width:0;opacity:0}48%{left:44%;top:36%;width:44%;opacity:1}100%{left:58%;top:32%;width:18%;opacity:0}}

/* 角色页只保留一个滚动区，档案、等级和属性不再被挤成内部小窗口。 */
.hero-info{scrollbar-gutter:stable;scroll-padding-top:8px;padding-bottom:18px;}
.hero-info>.panel{flex:0 0 auto;overflow:visible;}
.hero-info .panel-body{overflow:visible;flex:none;}
.hero-info .deck-panel .panel-body{max-height:none;}
@media(max-width:820px){.battle-scene.field-battle .battle-field{padding:8px 3vw}.battle-scene.field-battle .ally-figure img{height:76%;max-height:38vh}.battle-scene.field-battle .battle-side.enemies.n1 .enemy-art{height:66%;max-height:32vh}.hero-info{overflow:visible;}}

/* 战斗攻击改为两张角色立绘切换：拔剑起手 → 攻击姿势 → 受击目标震动。 */
.battle-scene.field-battle .ally-figure .hero-idle-pose,
.battle-scene.field-battle .ally-figure .hero-attack-pose{position:absolute;left:50%;bottom:0;height:88%;max-height:52vh;width:auto;max-width:94%;object-fit:contain;object-position:center bottom;transform:translateX(-50%);transform-origin:center bottom;}
.battle-scene.field-battle .ally-figure .hero-attack-pose{display:none;}
.battle-scene.field-battle .ally-unit.attack-draw .hero-idle-pose{animation:draw-sword-beat .17s ease-out both;}
.battle-scene.field-battle .ally-unit.attack-slash .hero-idle-pose{display:none;}
.battle-scene.field-battle .ally-unit.attack-slash .hero-attack-pose{display:block;animation:attack-pose-cut .36s cubic-bezier(.2,.72,.25,1) both;}
.battle-scene.field-battle .ally-figure::before,.battle-scene.field-battle .ally-figure::after{content:none;}
@keyframes draw-sword-beat{0%{transform:translateX(-50%) rotate(0)}45%{transform:translateX(-52%) rotate(-2deg)}100%{transform:translateX(-50%) rotate(0)}}
@keyframes attack-pose-cut{0%{opacity:0;transform:translateX(-57%) translateY(0) scale(.98)}20%{opacity:1}58%{transform:translateX(-41%) translateY(-4px) scale(1.035)}100%{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}
.battle-scene.field-battle .battle-side.enemies .unit.hit{animation:shake .34s cubic-bezier(.36,.07,.19,.97) both;filter:brightness(1.35);}

/* Chapter 1-4: the stable floor keeps the hero and both guards on one plane. */
.battle-scene.castle-stable-battle .battle-bg{background:linear-gradient(180deg,rgba(14,20,26,.08),rgba(9,13,17,.5)),url('../assets/scene/jaska-stable-night-v1.png') center 62%/cover}
.battle-scene.castle-stable-battle .battle-field{align-items:stretch;padding:10px 4vw 12px}
.battle-scene.castle-stable-battle .battle-side{height:100%;justify-content:flex-end;align-items:center}
.battle-scene.castle-stable-battle .ally-unit,.battle-scene.castle-stable-battle .battle-side.enemies.n2 .unit{height:100%;align-self:stretch;display:grid;grid-template-rows:minmax(0,1fr) auto}
.battle-scene.castle-stable-battle .ally-figure,.battle-scene.castle-stable-battle .battle-side.enemies.n2 .enemy-figure{height:100%;min-height:0;max-height:none;align-self:stretch;flex:none;margin-bottom:8px;align-items:flex-end}
.battle-scene.castle-stable-battle .ally-figure img{height:86%;max-height:52vh;max-width:96%;object-fit:contain;object-position:center bottom;transform-origin:center bottom}
.battle-scene.castle-stable-battle .battle-side.enemies.n2{align-items:stretch;justify-content:flex-end;gap:8px}
.battle-scene.castle-stable-battle .battle-side.enemies.n2 .unit{flex:0 1 46%;max-width:270px;min-width:0}
.battle-scene.castle-stable-battle .battle-side.enemies.n2 .enemy-figure{width:100%}
.battle-scene.castle-stable-battle .battle-side.enemies.n2 .enemy-art{height:78%;max-height:44vh;width:100%;object-fit:contain;object-position:center bottom}
.battle-scene.castle-stable-battle .ally-figure .hero-idle-pose,.battle-scene.castle-stable-battle .ally-figure .hero-attack-pose{position:absolute;left:50%;bottom:0;height:86%;max-height:52vh;width:auto;max-width:96%;transform:translateX(-50%);object-fit:contain;object-position:center bottom;transform-origin:center bottom}
.battle-scene.castle-stable-battle .ally-figure .hero-attack-pose{display:none}
.battle-scene.castle-stable-battle .ally-unit.attack-draw .hero-idle-pose{animation:unarmed-set .18s ease-out both}
.battle-scene.castle-stable-battle .ally-unit.attack-slash .hero-idle-pose{display:none}
.battle-scene.castle-stable-battle .ally-unit.attack-slash .hero-attack-pose{display:block;animation:unarmed-punch .42s cubic-bezier(.2,.75,.2,1) both}
@keyframes unarmed-set{0%,100%{transform:translateX(-50%)}45%{transform:translateX(-54%) rotate(-4deg) translateY(4px)}}
@keyframes unarmed-punch{0%{opacity:0;transform:translateX(-57%) translateY(3px) scale(.97)}20%{opacity:1}60%{transform:translateX(-39%) translateY(-5px) scale(1.035)}100%{opacity:1;transform:translateX(-50%)}}
.battle-scene.castle-stable-battle .battle-side.enemies .unit.attacking{z-index:4;animation:guard-rush .36s cubic-bezier(.2,.75,.25,1) both}
.battle-scene.castle-stable-battle .battle-side.enemies .unit.attacking .enemy-art{filter:drop-shadow(0 0 18px rgba(255,212,133,.78))}
.battle-scene.castle-stable-battle .battle-side.enemies .unit.guarding .enemy-figure::after,.battle-scene.castle-stable-battle .battle-side.enemies .unit.buffing .enemy-figure::after{content:"";position:absolute;inset:12% 17%;border:2px solid rgba(232,205,133,.82);border-radius:48%;background:rgba(234,206,132,.12);animation:guard-glint .38s ease-out both}
@keyframes guard-rush{0%,100%{transform:translateX(0)}36%{transform:translateX(-38px) translateY(-8px)}70%{transform:translateX(-20px) translateY(1px)}}
@keyframes guard-glint{from{opacity:0;transform:scale(.72)}45%{opacity:1;transform:scale(1.08)}to{opacity:0;transform:scale(1.18)}}
/* 1-7 晶角兽：先蓄力压低身体，再朝南北洛扑击；晶角闪光与掠过的冲击线让攻击读得清楚。 */
.battle-scene.forest-camp-battle .battle-side.enemies .unit.attacking{z-index:5;transform-origin:center bottom;animation:crystal-beast-lunge .36s cubic-bezier(.18,.72,.24,1) both}
.battle-scene.forest-camp-battle .battle-side.enemies .unit.attacking .enemy-art{animation:crystal-horn-flare .36s ease-out both}
.battle-scene.forest-camp-battle .battle-side.enemies .unit.attacking .enemy-figure{position:relative}
.battle-scene.forest-camp-battle .battle-side.enemies .unit.attacking .enemy-figure::after{content:"";position:absolute;z-index:2;left:-5%;top:34%;width:92%;height:18%;opacity:0;pointer-events:none;background:linear-gradient(90deg,transparent,rgba(119,238,255,.1) 24%,rgba(218,253,255,.95) 52%,rgba(86,209,255,.42) 72%,transparent);filter:drop-shadow(0 0 12px rgba(113,231,255,.95));transform:skewX(-28deg) scaleX(.2);animation:crystal-charge-line .36s ease-out both}
@keyframes crystal-beast-lunge{0%,100%{transform:translateX(0) translateY(0) rotate(0) scale(1)}18%{transform:translateX(12px) translateY(5px) rotate(2deg) scale(.96)}58%{transform:translateX(-clamp(38px,5vw,82px)) translateY(-13px) rotate(-3deg) scale(1.08)}78%{transform:translateX(-12px) translateY(2px) rotate(1deg) scale(1.02)}}
@keyframes crystal-horn-flare{0%,100%{filter:drop-shadow(0 18px 20px rgba(8,13,33,.48))}28%{filter:drop-shadow(0 0 9px rgba(91,225,255,.9)) drop-shadow(0 18px 20px rgba(8,13,33,.48))}58%{filter:drop-shadow(0 0 22px rgba(130,244,255,1)) drop-shadow(0 18px 20px rgba(8,13,33,.48))}}
@keyframes crystal-charge-line{0%,25%{opacity:0;transform:translateX(18%) skewX(-28deg) scaleX(.1)}48%{opacity:.95;transform:translateX(0) skewX(-28deg) scaleX(1)}82%,100%{opacity:0;transform:translateX(-18%) skewX(-28deg) scaleX(.72)}}
.ally-figure .defense-aura{position:absolute;z-index:1;left:50%;bottom:8%;width:58%;height:78%;transform:translateX(-50%);opacity:0;pointer-events:none;background:linear-gradient(110deg,transparent 4%,rgba(113,222,232,.12) 16%,rgba(170,242,237,.45) 49%,rgba(117,191,223,.15) 82%,transparent 96%);border:2px solid rgba(180,236,238,.58);border-radius:48% 48% 38% 38%;clip-path:polygon(50% 0,91% 18%,100% 57%,77% 91%,50% 100%,23% 91%,0 57%,9% 18%);filter:drop-shadow(0 0 12px rgba(103,222,231,.65));transition:opacity .18s}
.ally-unit.guard-up .defense-aura{opacity:.44}
.ally-unit.guard-impact .defense-aura{opacity:1;animation:shield-impact .46s ease-out both}
.ally-unit.guard-impact .ally-figure{animation:guard-recoil .34s ease-out}
@keyframes shield-impact{0%{opacity:.45;transform:translateX(-50%) scale(.88)}32%{opacity:1;transform:translateX(-50%) scale(1.08);filter:drop-shadow(0 0 24px #a9f5ff)}100%{opacity:.25;transform:translateX(-50%) scale(1)}}
@keyframes guard-recoil{0%,100%{translate:0 0}40%{translate:-9px 0;rotate:-2deg}72%{translate:3px 0;rotate:1deg}}
@media(max-width:820px){.battle-scene.castle-stable-battle .battle-field{padding:8px 2vw}.battle-scene.castle-stable-battle .battle-side.enemies.n2{gap:4px}.battle-scene.castle-stable-battle .battle-side.enemies.n2 .unit{flex-basis:49%}.battle-scene.castle-stable-battle .battle-side.enemies.n2 .enemy-art{height:65%;max-height:32vh}.battle-scene.castle-stable-battle .ally-figure .hero-idle-pose,.battle-scene.castle-stable-battle .ally-figure .hero-attack-pose{height:76%;max-height:38vh}}

/* Q版分镜逐句贴合 1-1 苏醒和 1-2 探索、遭遇、战斗后被捕的剧本。 */
.opening-cutscene .chibi-actor{z-index:2;}
.opening-cutscene .cutscene-beast{display:none;position:absolute;z-index:2;right:5%;bottom:1%;left:auto;height:60%;width:auto;max-width:42%;object-fit:contain;object-position:center bottom;opacity:0;filter:drop-shadow(0 12px 14px rgba(13,23,30,.55));}
.opening-cutscene .system-popup{display:none;position:absolute;z-index:4;right:11%;top:24%;width:min(300px,38%);padding:14px 16px;border:1px solid rgba(217,244,255,.9);border-radius:10px;background:linear-gradient(145deg,rgba(232,250,255,.94),rgba(215,239,242,.84));box-shadow:0 8px 36px rgba(141,229,242,.36);color:#23484e;}
.system-popup small,.system-popup b,.system-popup span{display:block}.system-popup small{font-size:9px;letter-spacing:.16em;color:#508a91}.system-popup b{font-size:17px;margin:5px 0}.system-popup span{font-size:11px;color:#42656a;}
.opening-cutscene .patrol-guards{display:none;position:absolute;z-index:3;}
.opening-cutscene .cart-window{display:none;}

.cutscene-active[data-beat="wake"] .opening-cutscene .chibi-actor{left:31%;opacity:1;transform:translateX(-50%) rotate(68deg) scale(.78);animation:chibi-found-in-grass .65s ease-out both;}
.cutscene-active[data-beat="wake-open-eyes"] .opening-cutscene .chibi-actor{left:38%;opacity:1;animation:chibi-sit-up .8s cubic-bezier(.3,.7,.2,1) both;}
.cutscene-active[data-beat="look-around"] .opening-cutscene .chibi-actor{left:42%;opacity:1;animation:chibi-look-fields 1.1s ease-in-out both;}
.cutscene-active[data-beat="system-appears"] .opening-cutscene .chibi-actor,.cutscene-active[data-beat="system-fades"] .opening-cutscene .chibi-actor{left:38%;opacity:1;animation:chibi-notice .75s ease-out both;}
.cutscene-active[data-beat="system-appears"] .opening-cutscene .system-popup,.cutscene-active[data-beat="system-window"] .opening-cutscene .system-popup,.cutscene-active[data-beat="inspect-system"] .opening-cutscene .system-popup{display:block;animation:system-window-enter .45s ease-out both;}
.cutscene-active[data-beat="system-fades"] .opening-cutscene .system-popup{display:block;animation:system-window-fade .48s ease-in both;}
.cutscene-active[data-beat="small-smile"] .opening-cutscene .chibi-actor{left:40%;opacity:1;animation:chibi-relieved .72s ease-out both;}
@keyframes chibi-found-in-grass{from{transform:translateX(-50%) rotate(76deg) scale(.68);opacity:.5}to{transform:translateX(-50%) rotate(68deg) scale(.78);opacity:1}}
@keyframes chibi-sit-up{0%{transform:translateX(-50%) rotate(68deg) scale(.78)}60%{transform:translateX(-50%) rotate(-8deg) translateY(-12px) scale(1.02)}100%{transform:translateX(-50%) rotate(0) translateY(0) scale(1)}}
@keyframes chibi-look-fields{0%,100%{transform:translateX(-50%)}28%{transform:translateX(-50%) rotate(-8deg) translateY(-3px)}60%{transform:translateX(-50%) rotate(9deg)}78%{transform:translateX(-50%) rotate(0) translateY(-6px)}}
@keyframes system-window-enter{from{opacity:0;transform:translateY(16px) scale(.92)}to{opacity:1;transform:none}}
@keyframes system-window-fade{to{opacity:0;transform:translateY(-9px) scale(.96)}}
@keyframes chibi-relieved{0%,100%{transform:translateX(-50%)}35%{transform:translateX(-50%) translateY(-12px) rotate(-6deg)}70%{transform:translateX(-50%) translateY(1px) rotate(4deg)}}

.cutscene-active[data-beat="field-walk"] .opening-cutscene .chibi-actor{opacity:1;animation:chibi-walk-field 2s ease-in-out both;}
.cutscene-active[data-beat="track-inspect"] .opening-cutscene .chibi-actor{left:49%;opacity:1;animation:chibi-inspect-tracks .8s ease-in-out both;}
.cutscene-active[data-beat="carriage-sound"] .opening-cutscene .chibi-actor{left:54%;opacity:1;animation:chibi-hear-carriage .8s ease-in-out both;}
.cutscene-active[data-beat="grass-rustle"] .opening-cutscene .chibi-actor{left:54%;opacity:1;animation:chibi-grass-alert .65s ease-out both;}
.cutscene-active[data-beat="beast-reveal"] .opening-cutscene .chibi-actor{left:39%;opacity:1;animation:chibi-recoil .65s ease-out both;}
.cutscene-active[data-beat="beast-reveal"] .opening-cutscene .cutscene-beast{display:block;opacity:1;left:auto;right:7%;animation:beast-from-wheat .8s cubic-bezier(.15,.75,.2,1) both;}
.cutscene-active[data-beat="beast-charge"] .opening-cutscene .chibi-actor{left:39%;opacity:1;animation:chibi-dodge .78s cubic-bezier(.2,.75,.2,1) both;}
.cutscene-active[data-beat="beast-charge"] .opening-cutscene .cutscene-beast{display:block;opacity:1;right:7%;animation:beast-charge-by .78s cubic-bezier(.35,.05,.65,.95) both;}
.cutscene-active[data-beat="bait-beast"] .opening-cutscene .chibi-actor{left:29%;opacity:1;animation:chibi-regain-stance .75s ease-out both;}
.cutscene-active[data-beat="bait-beast"] .opening-cutscene .cutscene-beast{display:block;opacity:1;right:17%;transform:scaleX(-1);}
.cutscene-active[data-beat="battle-ready"] .opening-cutscene .chibi-actor{left:29%;opacity:1;animation:chibi-guard-twig .6s ease-out both;}
.cutscene-active[data-beat="battle-ready"] .opening-cutscene .cutscene-beast{display:block;opacity:1;right:17%;transform:scaleX(-1);}
@keyframes chibi-walk-field{0%{left:24%;transform:translate(-50%,0)}18%{left:30%;transform:translate(-50%,-9px) rotate(3deg)}36%{left:36%;transform:translate(-50%,0) rotate(-3deg)}54%{left:42%;transform:translate(-50%,-9px) rotate(3deg)}72%{left:48%;transform:translate(-50%,0) rotate(-3deg)}100%{left:53%;transform:translate(-50%,0)}}
@keyframes chibi-inspect-tracks{0%,100%{transform:translateX(-50%)}45%{transform:translateX(-50%) translateY(8px) rotate(7deg)}72%{transform:translateX(-50%) translateY(5px) rotate(4deg)}}
@keyframes chibi-hear-carriage{0%,100%{transform:translateX(-50%)}22%{transform:translateX(-50%) rotate(-8deg)}52%{transform:translateX(-50%) translateY(-7px) rotate(5deg)}76%{transform:translateX(-50%) rotate(0)}}
@keyframes chibi-grass-alert{0%,100%{transform:translateX(-50%)}18%,48%{transform:translateX(-50%) translateY(-10px) rotate(-7deg)}33%,65%{transform:translateX(-50%) rotate(5deg)}}
@keyframes chibi-recoil{0%,100%{transform:translateX(-50%)}20%{transform:translateX(-50%) translateY(-14px) rotate(-12deg)}42%{transform:translateX(-50%) translateY(3px) rotate(8deg)}65%{transform:translateX(-50%) translateY(-3px) rotate(-4deg)}}
@keyframes beast-from-wheat{0%{right:-16%;opacity:0;transform:translateY(15px) scale(.75)}45%{opacity:1}100%{right:7%;opacity:1;transform:translateY(0) scale(1)}}
@keyframes chibi-dodge{0%{left:39%;transform:translateX(-50%)}18%{left:39%;transform:translateX(-50%) translateY(-18px) rotate(-18deg)}58%{left:27%;transform:translateX(-50%) translateY(9px) rotate(82deg)}100%{left:27%;transform:translateX(-50%) translateY(5px) rotate(68deg)}}
@keyframes beast-charge-by{0%{right:7%;transform:translateX(0) scale(1)}48%{right:40%;transform:translateX(0) scale(1.18)}68%{right:51%;transform:translateX(4%) scale(1.08)}100%{right:51%;transform:translateX(0) scale(1)}}
@keyframes chibi-regain-stance{0%{transform:translateX(-50%) translateY(6px) rotate(68deg)}65%{transform:translateX(-50%) translateY(-8px) rotate(-5deg)}100%{transform:translateX(-50%) rotate(0)}}
@keyframes chibi-guard-twig{0%,100%{transform:translateX(-50%)}35%{transform:translateX(-50%) translateY(-5px) rotate(-5deg)}70%{transform:translateX(-50%) rotate(4deg)}}

.cutscene-active[data-beat="beast-down"] .opening-cutscene .chibi-actor,.cutscene-active[data-beat="check-beast"] .opening-cutscene .chibi-actor{left:31%;opacity:1;animation:chibi-cautious-approach .8s ease-out both;}
.cutscene-active[data-beat="beast-down"] .opening-cutscene .cutscene-beast,.cutscene-active[data-beat="check-beast"] .opening-cutscene .cutscene-beast{display:block;opacity:1;right:17%;transform:rotate(90deg) scale(.86);filter:grayscale(.4) drop-shadow(0 8px 10px rgba(0,0,0,.4));}
.cutscene-active[data-beat="beast-down"] .opening-cutscene .cutscene-beast{animation:beast-fall 1s ease-out both;}
.cutscene-active[data-beat="patrol-arrive"] .opening-cutscene .chibi-actor,.cutscene-active[data-beat="arrested"] .opening-cutscene .chibi-actor{left:36%;opacity:1;animation:chibi-cornered .7s ease-out both;}
.cutscene-active[data-beat="patrol-arrive"] .opening-cutscene .cutscene-beast,.cutscene-active[data-beat="arrested"] .opening-cutscene .cutscene-beast{display:block;opacity:.82;right:24%;transform:rotate(90deg) scale(.8);filter:grayscale(.55);}
.cutscene-active[data-beat="cart-departs"] .opening-cutscene .chibi-actor{left:53%;opacity:1;animation:chibi-taken-away 1.05s ease-in both;}
.cutscene-active[data-beat="cart-departs"] .opening-cutscene{animation:cart-departure-scene 1.1s ease-in both;}
@keyframes chibi-cautious-approach{0%{transform:translateX(-50%)}55%{transform:translateX(-50%) translateY(3px) rotate(5deg)}100%{transform:translateX(-50%)}}
@keyframes beast-fall{0%{transform:rotate(0) scale(1)}34%{transform:rotate(-14deg) translateY(-6px)}100%{transform:rotate(90deg) scale(.86)}}
@keyframes chibi-cornered{0%,100%{transform:translateX(-50%)}35%{transform:translateX(-50%) translateX(-10px) rotate(-8deg)}68%{transform:translateX(-50%) translateX(7px) rotate(6deg)}}
@keyframes chibi-taken-away{0%,60%{transform:translateX(-50%);opacity:1}100%{transform:translateX(-7%) scale(.68);opacity:0}}
@keyframes cart-departure-scene{0%{background-position:center 54%}100%{background-position:64% 54%;filter:brightness(.72)}}
@media(max-width:820px){.battle-scene.field-battle .ally-figure .hero-idle-pose,.battle-scene.field-battle .ally-figure .hero-attack-pose{height:76%;max-height:38vh}.cutscene-active[data-beat="field-walk"] .opening-cutscene .chibi-actor{animation:chibi-walk-field 1.6s ease-in-out both}.opening-cutscene .system-popup{right:5%;top:19%;width:46%;padding:10px}}
.dialog-bg{background:linear-gradient(0deg,rgba(13,27,24,.55),rgba(13,27,24,.12) 65%),url('../assets/scene/jaska-borderlands-dawn-v1.png') center/cover no-repeat}.dialog-sprite{filter:drop-shadow(0 20px 26px rgba(0,0,0,.45))}.dialog-box{background:rgba(18,35,32,.92);color:#fff;border:1px solid rgba(255,255,255,.3);box-shadow:0 18px 50px rgba(0,0,0,.3);backdrop-filter:blur(12px)}.dialog-name{color:#f7dc98}.dialog-text{color:#fff}.dialog-next{color:#d7e7dc}

/* 1-1：用独立的开场场景呈现苏醒与月幕初次连接。 */
.opening-scene{background:#101a19}
.opening-kicker,.opening-light,.dialog-audio{display:none}
.opening-scene .opening-kicker,.opening-scene .opening-light,.opening-scene .dialog-audio{display:flex}
.opening-scene .opening-light{display:block}
.opening-scene .dialog-scene{overflow:hidden;isolation:isolate}
.opening-scene .dialog-bg{background-image:linear-gradient(0deg,rgba(8,18,16,.88),rgba(8,18,16,.08) 56%,rgba(10,22,27,.16)),linear-gradient(90deg,rgba(8,18,16,.24),transparent 55%),url('../assets/scene/jaska-borderlands-dawn-v1.png');background-position:center,center,center 54%;background-size:cover;animation:opening-pan 34s ease-in-out infinite alternate;will-change:transform}
@keyframes opening-pan{from{transform:scale(1.02) translate3d(0,0,0)}to{transform:scale(1.11) translate3d(-1.2%,1%,0)}}
.opening-scene .dialog-scene::before,.opening-scene .dialog-scene::after{content:"";position:absolute;left:0;right:0;height:clamp(20px,5vh,56px);z-index:4;background:linear-gradient(180deg,rgba(7,13,15,.82),rgba(7,13,15,.28));pointer-events:none}
.opening-scene .dialog-scene::before{top:0}.opening-scene .dialog-scene::after{bottom:0;transform:rotate(180deg)}
.opening-light{position:absolute;z-index:1;top:8%;left:25%;width:30vw;height:30vw;max-width:520px;max-height:520px;border-radius:50%;background:radial-gradient(circle,rgba(249,231,178,.22),rgba(249,231,178,.04) 45%,transparent 72%);opacity:0;animation:opening-light-in 3.2s .5s ease-out forwards;pointer-events:none}
@keyframes opening-light-in{0%{opacity:0;transform:scale(.5)}55%{opacity:.78}100%{opacity:.44;transform:scale(1.2)}}
.opening-kicker{position:absolute;z-index:3;left:clamp(22px,5vw,88px);top:clamp(25px,7vh,76px);display:flex;flex-direction:column;gap:6px;color:#fff;text-shadow:0 2px 16px rgba(0,0,0,.65);animation:fadeIn .9s ease both;pointer-events:none}
.opening-kicker span{font:700 10px/1.2 Arial,sans-serif;letter-spacing:.24em;color:#f4d997}.opening-kicker b{font-size:13px;font-weight:500;letter-spacing:.12em}
.dialog-audio{position:absolute;z-index:8;right:clamp(20px,4vw,58px);top:clamp(22px,6vh,52px);width:40px;height:40px;border:1px solid rgba(255,255,255,.4);border-radius:50%;background:rgba(20,36,34,.45);color:#fff;font-size:18px;cursor:pointer;backdrop-filter:blur(8px);transition:transform .2s,background .2s}
.dialog-audio:hover{transform:scale(1.08);background:rgba(20,36,34,.8)}
.dialog-fast-forward{position:absolute;z-index:8;right:calc(clamp(20px,4vw,58px) + 52px);top:clamp(22px,6vh,52px);min-width:74px;height:40px;padding:0 12px;border:1px solid rgba(255,255,255,.5);border-radius:20px;background:rgba(20,36,34,.62);color:#fff;font-size:13px;letter-spacing:.04em;cursor:pointer;backdrop-filter:blur(8px);transition:background .18s,transform .18s,border-color .18s}
.dialog-fast-forward:hover{transform:translateY(-1px);background:rgba(20,36,34,.88)}
.dialog-fast-forward.active{background:rgba(218,180,92,.9);border-color:#f5e4b0;color:#26382d;box-shadow:0 0 18px rgba(248,219,145,.32)}
.opening-scene .dialog-sprite{position:absolute;left:clamp(5%,10vw,180px);bottom:-3vh;height:min(87vh,920px);max-width:48vw;margin:0;object-position:bottom;filter:drop-shadow(0 18px 36px rgba(12,22,24,.42));opacity:0;animation:hero-wake 1.35s .2s cubic-bezier(.18,.72,.24,1) forwards;transition:filter .25s}
@keyframes hero-wake{0%{opacity:0;transform:translateY(38px) scale(.97);filter:blur(5px)}100%{opacity:1;transform:translateY(0) scale(1);filter:drop-shadow(0 18px 36px rgba(12,22,24,.42))}}
.opening-scene .dialog-sprite.speaking{filter:drop-shadow(0 18px 38px rgba(12,22,24,.35)) brightness(1.045)}
.opening-scene .dialog-box{left:50%;bottom:clamp(32px,6vh,70px);width:min(1120px,84vw);min-height:178px;padding:24px 34px 34px 36px;border:1px solid rgba(248,226,169,.58);border-top:3px solid #d9bb75;border-radius:13px;background:linear-gradient(110deg,rgba(17,34,34,.96),rgba(16,30,32,.91));box-shadow:0 18px 70px rgba(4,12,14,.46),inset 0 1px rgba(255,255,255,.12);backdrop-filter:blur(12px);animation:dialog-rise .45s cubic-bezier(.2,.75,.25,1) both}
@keyframes dialog-rise{from{opacity:0;transform:translate(-50%,18px)}to{opacity:1;transform:translate(-50%,0)}}
.opening-scene .dialog-box.line-enter{animation:dialog-rise .38s cubic-bezier(.2,.75,.25,1) both}
.opening-scene .dialog-name{display:block;width:max-content;max-width:100%;min-width:86px;padding:5px 13px;margin:-42px 0 14px -8px;border:1px solid rgba(242,216,155,.62);border-radius:7px;background:#283b35;color:#f3d991;font-family:inherit;font-size:13px;font-weight:700;letter-spacing:.14em;box-shadow:0 5px 16px rgba(4,12,14,.24)}
.opening-scene .dialog-name[data-speaker="旁白"]{display:none}
.opening-scene .dialog-name[data-speaker="月幕系统"]{background:linear-gradient(110deg,#163f4b,#275568);border-color:rgba(154,227,235,.75);color:#a8eff1;box-shadow:0 0 24px rgba(72,208,220,.22)}
.opening-scene .dialog-text{min-height:76px;color:#f6f4e9;font-size:clamp(16px,1.45vw,22px);line-height:1.95;letter-spacing:.045em;text-shadow:0 1px 8px rgba(0,0,0,.42)}
.opening-scene .dialog-text.typing::after{content:"▍";display:inline-block;margin-left:3px;color:#f3d991;animation:blink .7s infinite}
.opening-scene[data-speaker="月幕系统"] .dialog-box{border-color:rgba(119,221,231,.72);border-top-color:#74d6e0;box-shadow:0 18px 80px rgba(4,12,14,.55),0 0 46px rgba(69,198,217,.16),inset 0 1px rgba(255,255,255,.16)}
.opening-scene[data-speaker="月幕系统"] .dialog-text{color:#e2fbfa}
.opening-scene .dialog-next{right:28px;bottom:12px;color:#e9dba9;font-size:11px;letter-spacing:.08em}
@media(max-width:820px){.opening-scene .dialog-bg{background-position:center,center,58% center}.opening-scene .dialog-sprite{left:-8%;bottom:13vh;height:58vh;max-width:67vw}.opening-scene .dialog-box{left:50%;bottom:28px;width:92vw;min-height:160px;padding:20px 20px 30px}.opening-scene .dialog-name{margin-top:-38px}.opening-scene .dialog-text{font-size:15px;line-height:1.8}.opening-kicker{top:55px}.dialog-audio{top:50px;right:18px}.dialog-fast-forward{top:50px;right:66px;min-width:68px;padding:0 9px}}
@media(prefers-reduced-motion:reduce){.opening-scene .dialog-bg,.opening-scene .dialog-sprite,.opening-light{animation:none;opacity:1;transform:none}}

/* 选中章节后只保留居中的关卡地图。 */
.stage-layout.map-mode{justify-content:center}
.stage-layout.map-mode .chapter-select,.stage-layout.map-mode .chapter-select[hidden]{display:none!important}
.stage-layout.map-mode .chapter-map{width:min(100%,1500px);margin:auto;flex:1;max-height:calc(100vh - 230px)}
.stage-layout.map-mode .chapter-map-canvas{min-height:min(430px,55vh);max-height:calc(100vh - 320px)}

/* Q版过场：采用 VN 的中央舞台构图，底部对白与角色演出分区。 */
.opening-cutscene[hidden]{display:none!important}
.opening-cutscene{position:absolute;z-index:3;top:10%;left:50%;width:min(1240px,88vw);height:min(59vh,640px);overflow:hidden;transform:translateX(-50%);pointer-events:none;border:1px solid rgba(255,255,255,.82);border-radius:9px;background:linear-gradient(180deg,rgba(25,43,42,.04),rgba(10,24,24,.18)),url('../assets/scene/jaska-borderlands-dawn-v1.png') center 54%/cover no-repeat;box-shadow:0 18px 52px rgba(5,19,18,.35),inset 0 0 0 5px rgba(255,255,255,.2)}
.opening-cutscene::after{content:"";position:absolute;inset:0;border:1px solid rgba(246,228,185,.36);box-shadow:inset 0 -70px 100px rgba(15,31,27,.2);pointer-events:none}
.opening-cutscene img{position:absolute;left:50%;bottom:1%;height:84%;max-width:55%;object-fit:contain;object-position:bottom;opacity:0;filter:drop-shadow(0 8px 12px rgba(18,37,34,.35));transform:translateX(-50%);transform-origin:center bottom}
.opening-cutscene .chibi-lingling,.opening-cutscene .cutscene-horse,.opening-cutscene .mounted-rider,.opening-cutscene .travel-duo{display:none}
.cutscene-active .dialog-bg{filter:blur(3px) brightness(.58)}
.cutscene-active .dialog-sprite{visibility:hidden!important;opacity:0!important}
.cutscene-active .opening-cutscene .chibi-actor{opacity:1}
/* 分镜信息由对白呈现，隐藏画面上方的小字幕标签。 */
.cutscene-label{display:none!important}
.cutscene-active[data-beat="marker-approach"] .opening-cutscene .chibi-actor{animation:chibi-arrive 1.45s cubic-bezier(.2,.75,.22,1) both,chibi-idle 1.8s 1.45s ease-in-out infinite}
.cutscene-active[data-beat="marker-read"] .opening-cutscene .chibi-actor{opacity:1;animation:chibi-notice .9s ease-out both,chibi-idle 1.8s .9s ease-in-out infinite}
@keyframes chibi-arrive{0%{left:27%;opacity:0;transform:translate(-50%,16px) scale(.84)}15%{opacity:1}100%{left:50%;opacity:1;transform:translate(-50%,0) scale(1)}}
@keyframes chibi-notice{0%{left:50%;transform:translate(-50%,0) rotate(0) scale(1)}25%{left:50%;transform:translate(-50%,-8px) rotate(-7deg) scale(1.08)}48%{left:50%;transform:translate(-50%,2px) rotate(5deg) scale(1.05)}70%,100%{left:50%;transform:translate(-50%,0) rotate(0) scale(1)}}
@keyframes chibi-idle{0%,100%{translate:0 0}50%{translate:0 -7px}}
.cutscene-active[data-beat="road-walk"] .opening-cutscene .chibi-actor{opacity:1;animation:chibi-walk 2.8s cubic-bezier(.36,.03,.62,.98) both}
@keyframes chibi-walk{0%{left:50%;transform:translate(-50%,0)}12%{left:53%;transform:translate(-50%,-13px) rotate(4deg)}24%{left:56%;transform:translate(-50%,0) rotate(-3deg)}36%{left:59%;transform:translate(-50%,-13px) rotate(4deg)}48%{left:62%;transform:translate(-50%,0) rotate(-3deg)}60%{left:65%;transform:translate(-50%,-13px) rotate(4deg)}72%{left:68%;transform:translate(-50%,0) rotate(-3deg)}84%{left:70%;transform:translate(-50%,-13px) rotate(4deg)}100%{left:72%;transform:translate(-50%,0) rotate(0)}}
.cutscene-active[data-beat="startle"] .opening-cutscene{animation:scene-startle .56s ease-out both}
.cutscene-active[data-beat="startle"] .opening-cutscene .chibi-actor{opacity:1;animation:chibi-startle .62s cubic-bezier(.32,.07,.54,1.3) both}
.cutscene-active[data-beat="beast-reveal"] .opening-cutscene .chibi-actor{opacity:1;animation:chibi-startle .72s cubic-bezier(.32,.07,.54,1.3) both}
.cutscene-active[data-beat="castle-escape"] .opening-cutscene .chibi-actor{opacity:1;animation:chibi-walk 2.8s cubic-bezier(.36,.03,.62,.98) both}
.stage-cinematic .opening-kicker,.stage-cinematic .opening-light,.stage-cinematic .dialog-audio{display:none}
.stage-cinematic .dialog-scene{overflow:hidden;isolation:isolate}
.stage-cinematic .dialog-bg{background-image:linear-gradient(0deg,rgba(8,18,16,.88),rgba(8,18,16,.08) 56%,rgba(10,22,27,.16)),url('../assets/scene/jaska-borderlands-dawn-v1.png');background-position:center,center 54%;background-size:cover}
.stage-cinematic .dialog-box{left:50%;bottom:clamp(28px,5vh,64px);width:min(1080px,84vw);min-height:150px;padding:23px 30px 32px;border:1px solid rgba(248,226,169,.58);border-top:3px solid #d9bb75;border-radius:12px;background:linear-gradient(110deg,rgba(17,34,34,.96),rgba(16,30,32,.91));box-shadow:0 18px 70px rgba(4,12,14,.46);backdrop-filter:blur(10px)}
.stage-cinematic .dialog-name{padding:5px 13px;color:#f3d991;background:#283b35;border:1px solid rgba(242,216,155,.62);border-radius:6px;font-size:14px}
.stage-cinematic .dialog-text{color:#f6f4e9;font-size:clamp(16px,1.4vw,21px);line-height:1.9;text-shadow:0 1px 7px rgba(0,0,0,.45)}
.stage-cinematic .dialog-next{color:#f3d991;font-size:13px}
.stage-cinematic .opening-cutscene{pointer-events:none}
.castle-cinematic .dialog-bg{background:linear-gradient(180deg,rgba(9,14,21,.72),rgba(9,13,19,.86)),repeating-linear-gradient(90deg,transparent 0 78px,rgba(12,20,27,.66) 79px 84px),linear-gradient(160deg,#56606a,#252d34 45%,#111820)}
.castle-cinematic .opening-cutscene{background:linear-gradient(180deg,rgba(23,31,39,.28),rgba(7,13,18,.5)),repeating-linear-gradient(90deg,transparent 0 13%,rgba(29,37,43,.78) 13.2% 13.7%),linear-gradient(160deg,#67717a,#303b42 52%,#1a242b)}
.castle-cinematic.cutscene-active[data-beat="system-return"] .opening-cutscene .chibi-actor{opacity:1;animation:chibi-notice .8s ease-out both,chibi-idle 1.8s .8s ease-in-out infinite}
@keyframes chibi-startle{0%,100%{left:72%;transform:translate(-50%,0)}18%{left:72%;transform:translate(-50%,-13px) rotate(-7deg)}36%{left:72%;transform:translate(-50%,3px) rotate(6deg)}54%{left:72%;transform:translate(-50%,-5px) rotate(-4deg)}}
@keyframes scene-startle{0%,100%{translate:0 0}20%{translate:-5px 2px}40%{translate:5px -2px}60%{translate:-3px 1px}80%{translate:2px 0}}
@media(max-width:820px){.stage-layout.map-mode .chapter-map{max-height:none}.stage-layout.map-mode .chapter-map-canvas{max-height:none}.opening-cutscene{top:12%;width:92vw;height:48vh}.opening-cutscene .chibi-actor{height:88%;max-width:76%}.cutscene-active[data-beat="marker-approach"] .opening-cutscene .chibi-actor{animation:chibi-arrive-small 1.35s cubic-bezier(.2,.75,.22,1) both,chibi-idle 1.8s 1.35s ease-in-out infinite}@keyframes chibi-arrive-small{0%{left:25%;opacity:0;transform:translate(-50%,12px) scale(.84)}15%{opacity:1}100%{left:50%;opacity:1;transform:translate(-50%,0) scale(1)}}.cutscene-active[data-beat="marker-read"] .opening-cutscene .chibi-actor{animation:chibi-notice-small .85s ease-out both,chibi-idle 1.8s .85s ease-in-out infinite}@keyframes chibi-notice-small{0%,100%{left:50%;transform:translate(-50%,0)}28%{left:50%;transform:translate(-50%,-7px) rotate(-7deg) scale(1.07)}55%{left:50%;transform:translate(-50%,1px) rotate(5deg)}}.cutscene-active[data-beat="road-walk"] .opening-cutscene .chibi-actor{animation:chibi-walk-small 2.5s ease-in-out both}@keyframes chibi-walk-small{0%{left:50%;transform:translate(-50%,0)}20%{left:55%;transform:translate(-50%,-9px) rotate(4deg)}40%{left:60%;transform:translate(-50%,0) rotate(-3deg)}60%{left:65%;transform:translate(-50%,-9px) rotate(4deg)}80%{left:69%;transform:translate(-50%,0) rotate(-3deg)}100%{left:73%;transform:translate(-50%,0)}}.cutscene-active[data-beat="startle"] .opening-cutscene .chibi-actor{animation:chibi-startle-small .62s ease both}@keyframes chibi-startle-small{0%,100%{left:73%;transform:translate(-50%,0)}22%{left:73%;transform:translate(-50%,-10px) rotate(-7deg)}44%{left:73%;transform:translate(-50%,0) rotate(6deg)}}}
.chapter:first-child{position:relative;overflow:hidden;background:linear-gradient(90deg,rgba(255,255,255,.97),rgba(255,255,255,.9) 72%,rgba(255,255,255,.74)),url('../assets/scene/jaska-borderlands-dawn-v1.png') center/cover no-repeat}.chapter:first-child .chapter-head{position:relative}.chapter:first-child .chapter-desc,.chapter:first-child .stage-row{position:relative}
.chapter-focus{padding:16px 20px;border-radius:15px;background:#f1f7ed;border:1px solid #d8e8d4}.chapter-focus h2{font-family:var(--serif);font-size:19px;color:#285740}.chapter-focus p{color:#718875;font-size:11px;margin-top:4px}.chapter-focus[hidden],.relic-panel[hidden]{display:none}

/* 主菜单：角色立绘与游戏功能入口 */
body.home-active .dock,body.home-active .rail{display:none}
body.home-active .hud{position:absolute;top:0;left:0;right:0;z-index:20;background:rgba(14,26,28,.72);border-bottom:1px solid rgba(255,255,255,.15);backdrop-filter:blur(16px)}
body.home-active .hud-title,body.home-active .hud-sub,body.home-active .hud-sub b,body.home-active .hres-body b,body.home-active .hres-body i{color:#fff}
body.home-active .hud-logo{background:#f3d79a;color:#4d351a}
body.home-active .hres{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.16)}
body.home-active .hres-ico{color:#f5d995}
body.home-active .ghost-btn{background:rgba(255,255,255,.14);color:#fff;border-color:rgba(255,255,255,.24)}
body.home-active .body{height:100vh;flex:none}
body.home-active .main{height:100%}
#page-home{padding:0}
.game-home{position:relative;width:100%;height:100%;min-height:650px;display:grid;grid-template-columns:minmax(0,52%) minmax(470px,48%);overflow:hidden;isolation:isolate;background:#17272a url('../assets/scene/jaska-borderlands-dawn-v1.png') center 55%/cover no-repeat;animation:homeReveal .8s both}
.game-home::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(12,22,23,.03) 0%,rgba(14,27,29,.08) 38%,rgba(10,22,28,.62) 72%,rgba(9,18,26,.76)),linear-gradient(0deg,rgba(7,16,19,.62),transparent 38%,rgba(9,19,24,.14));pointer-events:none}
.game-home::after{content:"";position:absolute;z-index:-1;inset:8% 4%;border:1px solid rgba(245,227,174,.18);clip-path:polygon(0 0,17% 0,19% 1%,81% 1%,83% 0,100% 0,100% 100%,83% 100%,81% 99%,19% 99%,17% 100%,0 100%);pointer-events:none}
.home-character{position:relative;min-width:0;height:100%;overflow:hidden;z-index:1}
.home-character::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 60%,rgba(8,20,25,.25)),linear-gradient(0deg,rgba(8,18,21,.45),transparent 38%);pointer-events:none}
.home-character-glow{position:absolute;left:15%;bottom:11%;width:65%;height:62%;border-radius:50%;background:radial-gradient(ellipse,rgba(247,219,151,.55),rgba(172,205,190,.13) 42%,transparent 70%);filter:blur(30px);animation:homeGlow 5s ease-in-out infinite}
.home-character>img{position:absolute;z-index:1;left:14%;bottom:-23%;height:106%;max-width:none;width:auto;filter:drop-shadow(0 22px 28px rgba(0,0,0,.58));transform-origin:50% 90%;animation:heroEntrance 1.1s cubic-bezier(.18,.72,.22,1) both,heroFloat 5.5s 1.2s ease-in-out infinite}
.home-nameplate{position:absolute;z-index:3;left:6%;bottom:9%;display:flex;flex-direction:column;padding:15px 20px 13px 18px;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.7);border-left:2px solid #edd28a;background:linear-gradient(90deg,rgba(14,26,29,.72),transparent);animation:menuRise .65s .28s both}
.home-nameplate span{font-size:11px;letter-spacing:.2em;color:#f2dcab}.home-nameplate strong{font-family:var(--serif);font-size:40px;letter-spacing:.16em;line-height:1.25}.home-nameplate small{font-size:11px;color:#dbe8e2}
.home-menu{position:relative;z-index:2;align-self:center;margin:66px 7% 22px 0;max-height:calc(100vh - 112px);overflow-y:auto;padding:31px 34px 25px;border:1px solid rgba(246,229,185,.48);border-radius:3px 18px 3px 18px;background:linear-gradient(140deg,rgba(250,251,245,.96),rgba(229,239,229,.91));box-shadow:0 28px 90px rgba(5,14,19,.48),inset 0 0 0 5px rgba(255,255,255,.28);backdrop-filter:blur(16px);animation:menuRise .65s .12s both}
.home-menu::before{content:"";position:absolute;inset:8px;border:1px solid rgba(111,145,127,.24);border-radius:1px 12px 1px 12px;pointer-events:none}
.home-menu-heading{position:relative;padding:0 0 17px 5px;border-bottom:1px solid rgba(89,120,103,.22)}
.home-menu-heading::after{content:"";position:absolute;left:5px;bottom:-1px;width:70px;height:2px;background:#bf9b54}
.home-menu-heading span{font-size:9px;font-weight:700;letter-spacing:.28em;color:#698573}.home-menu-heading h1{font-family:var(--serif);font-size:36px;color:#243d36;margin-top:4px;letter-spacing:.1em;text-shadow:0 2px #fff}.home-menu-heading p{font-size:12px;color:#70878b;margin:3px 0 15px}
.home-menu-grid{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:9px;padding-top:16px}.home-menu-card{position:relative;display:flex;align-items:center;gap:14px;min-height:92px;padding:14px 16px;text-align:left;overflow:hidden;background:linear-gradient(115deg,rgba(255,255,255,.94),rgba(244,248,240,.86));border:1px solid rgba(118,146,129,.3);border-left:3px solid rgba(94,137,113,.56);border-radius:3px 12px 3px 12px;box-shadow:0 4px 0 rgba(48,77,62,.13),0 9px 18px rgba(34,61,48,.08);transition:transform .24s,box-shadow .24s,border-color .24s,background .24s;animation:menuRise .55s both}
.home-menu-card:nth-child(1){animation-delay:.18s}.home-menu-card:nth-child(2){animation-delay:.24s}.home-menu-card:nth-child(3){animation-delay:.3s}.home-menu-card:nth-child(4){animation-delay:.36s}.home-menu-card:nth-child(5){animation-delay:.42s}.home-menu-card:nth-child(6){animation-delay:.48s}
.home-menu-card::after{content:"";position:absolute;top:-80%;left:-65%;width:38%;height:260%;transform:rotate(24deg);background:linear-gradient(90deg,transparent,rgba(255,255,255,.65),transparent);transition:left .5s}
.home-menu-card:hover{transform:translateY(-3px) translateX(2px);box-shadow:0 6px 0 rgba(48,77,62,.14),0 15px 26px rgba(34,61,48,.16);border-color:#8aae91;border-left-color:#b28e49;background:#fff}
.home-menu-card:hover::after{left:125%}.home-menu-card.primary{background:linear-gradient(115deg,#f4f8e9,#e4f0df);border-color:#bdcfab;border-left-color:#a77d32}.home-menu-card.summon{background:linear-gradient(115deg,#fff9ec,#f8edcf);border-color:#ddc996;border-left-color:#bf9847}
.menu-symbol{position:relative;display:grid;place-items:center;flex:none;width:44px;height:44px;border:1px solid rgba(98,135,109,.27);border-radius:50%;background:radial-gradient(circle at 35% 28%,#fff,#dce9d9);color:#527c5e;font-size:22px;box-shadow:0 3px 9px rgba(42,75,51,.12)}.home-menu-card.summon .menu-symbol{background:radial-gradient(circle at 35% 28%,#fff9e9,#ead39e);border-color:#d9c183;color:#9b7739}
.home-menu-card strong{display:block;color:#2b4436;font-family:var(--serif);font-size:21px;line-height:1.2;letter-spacing:.05em}.home-menu-card small{display:block;margin-top:8px;color:#7f9698;font-size:10px;white-space:nowrap}.home-menu-card em{position:absolute;right:11px;top:8px;font-size:9px;font-style:normal;letter-spacing:.12em;color:#95a698}
.home-status{position:relative;display:flex;align-items:center;justify-content:space-between;margin:16px 4px 0;padding-top:12px;border-top:1px solid rgba(89,120,103,.18);font-size:10px;color:#557462}.home-status span::before{content:"";display:inline-block;width:7px;height:7px;margin-right:7px;border-radius:50%;background:#66b589;box-shadow:0 0 10px #6cc895;animation:statusPulse 2s infinite}.home-status strong{font-weight:500;color:#7b8f7e}
@keyframes homeReveal{from{opacity:0}to{opacity:1}}@keyframes menuRise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes heroEntrance{from{opacity:0;transform:translateX(-30px) scale(.97)}to{opacity:1;transform:translateX(0) scale(1)}}@keyframes heroFloat{0%,100%{translate:0 0}50%{translate:0 -7px}}@keyframes homeGlow{0%,100%{opacity:.6;scale:.96}50%{opacity:1;scale:1.04}}@keyframes statusPulse{0%,100%{opacity:.65;box-shadow:0 0 5px #6cc895}50%{opacity:1;box-shadow:0 0 12px #6cc895}}
@media(prefers-reduced-motion:reduce){.game-home,.home-nameplate,.home-menu,.home-menu-card,.home-character>img,.home-character-glow,.home-status span::before{animation:none!important;transition:none!important}}
.system-banner{flex:none;padding:20px 26px;min-height:125px;border-radius:16px;color:#fff;background:linear-gradient(90deg,rgba(22,43,53,.86),rgba(22,43,53,.24)),url('../assets/scene/ruined-shrine.png') center/cover no-repeat;box-shadow:0 10px 22px rgba(38,70,78,.12)}.system-banner span{font-size:10px;letter-spacing:.2em;color:#bce3e9}.system-banner h1{font-family:var(--serif);font-size:25px;color:#fff;margin:4px 0}.system-banner p{font-size:11px;color:#e1eff0;max-width:600px}
.mc-actions{display:flex;gap:6px}.mc-actions .mc-train,.mc-deploy{flex:1;padding:6px 4px;border-radius:8px;font-size:11px}.mc-deploy{background:#eff7f6;border:1px solid #b9d9d6;color:#367e7b}.mc-deploy:hover{background:#e3f1ef}.mcard.deployed{border-color:#7fbfba;box-shadow:0 0 0 2px rgba(81,175,165,.12)}.deploy-badge{font-size:10px;color:#3f9a87;white-space:nowrap}
.summon-page{flex:1;display:flex;flex-direction:column;gap:14px;min-height:0}.summon-hero{position:relative;flex:none;height:320px;border-radius:17px;overflow:hidden;background:linear-gradient(90deg,rgba(21,28,48,.89),rgba(29,31,54,.54),rgba(29,31,54,.15)),url('../assets/scene/ruined-shrine.png') center/cover no-repeat;color:#fff}.summon-hero>img{position:absolute;right:5%;bottom:-100px;height:400px;max-width:none;filter:drop-shadow(0 18px 22px rgba(0,0,0,.36))}.summon-copy{position:absolute;z-index:2;top:35px;left:34px;max-width:520px}.summon-copy>span{font-size:10px;letter-spacing:.2em;color:#f7dcab}.summon-copy h1{font-family:var(--serif);font-size:33px;color:#fff;margin:5px 0}.summon-copy p{font-size:12px;line-height:1.75;color:#e8e9f4;max-width:400px}.summon-balance{margin:18px 0 12px;color:#f7e4b3;font-size:12px}.summon-balance b{font-size:21px;margin-left:5px}.summon-actions{display:flex;gap:10px}.summon-actions .big-btn{padding:10px 16px}.summon-roster{flex:1;min-height:0}.summon-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;padding:14px;overflow-y:auto}.summon-member{display:flex;gap:9px;align-items:center;padding:10px;border:1px solid #e3e8ec;border-radius:10px;background:#fff}.summon-member-avatar,.summon-result-avatar{display:grid;place-items:center;width:38px;height:38px;flex:none;border-radius:10px;background:var(--c,#849bb5);color:#fff;font-size:15px}.summon-member strong,.summon-member small{display:block}.summon-member strong{font-size:12px}.summon-member small{font-size:10px;color:#91a0aa}.summon-member>span{margin-left:auto;font-size:10px;color:#a5afb5}.summon-member.owned{border-color:#a7d6c2}.summon-member.owned>span{color:#409974}.summon-result-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px}.summon-result-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:5px;padding:12px;border:1px solid #dfe5eb;border-radius:10px}.summon-result-card strong{color:#315b68}.summon-result-card small{font-size:10px;color:#81949e}.summon-result-note{margin-top:15px;color:#748a91}
@media(max-width:1050px){.game-home{grid-template-columns:40% 60%}.home-character>img{left:-8%;height:98%}.home-menu{margin-right:14px;padding:24px}.home-menu-card{min-height:82px;padding:10px}.home-menu-card strong{font-size:18px}}
@media(max-width:820px){body.home-active .hud{position:relative;background:#203739}body.home-active .body{height:auto}body.home-active .main{min-height:0}.game-home{display:flex;flex-direction:column;min-height:100vh;height:auto;padding:8px 12px 24px;background-position:42% center}.game-home::after{inset:7px}.home-character{flex:none;height:350px;margin:-8px -12px 0}.home-character>img{height:450px;left:12%;bottom:-105px}.home-nameplate{left:8%;bottom:25px}.home-nameplate strong{font-size:30px}.home-menu{align-self:stretch;margin:0;max-height:none;padding:24px 22px 19px}.home-menu-heading h1{font-size:29px}.home-menu-card{min-height:76px;padding:9px;gap:8px}.home-menu-card strong{font-size:16px}.home-menu-card small{white-space:normal;font-size:9px}.menu-symbol{width:34px;height:34px;font-size:18px}.home-status{gap:8px;font-size:9px}.summon-hero{height:350px}.summon-hero>img{right:-75px;opacity:.6}.summon-copy{left:18px;top:25px}.summon-copy h1{font-size:26px}.summon-actions{flex-wrap:wrap}}

/* 主菜单统一场景，清除人物列与菜单面板形成的硬分界。 */
.game-home{background-position:center 55%;background-size:cover}
.game-home::before{background:linear-gradient(90deg,rgba(9,20,25,.04) 0%,rgba(9,20,25,.12) 42%,rgba(9,20,25,.32) 66%,rgba(9,20,25,.48) 100%),linear-gradient(0deg,rgba(7,16,19,.52),transparent 40%,rgba(9,19,24,.08));}
.game-home::after{display:none}
.home-character::after{background:linear-gradient(0deg,rgba(8,18,21,.34),transparent 34%)}
.home-nameplate{left:5%;bottom:8%;padding:13px 24px 12px 16px;max-width:80%;}
.home-menu{border:1px solid rgba(255,255,255,.30);border-radius:12px;background:rgba(244,248,240,.89);box-shadow:0 18px 54px rgba(5,14,19,.30);}
.home-menu::before{display:none}
.home-menu-grid{gap:8px}
.home-menu-card{box-shadow:0 3px 10px rgba(34,61,48,.07);border-radius:8px 3px 8px 3px}
.home-menu-card:hover{box-shadow:0 7px 17px rgba(34,61,48,.14)}
@media(max-width:820px){.game-home::before{background:linear-gradient(0deg,rgba(7,16,19,.55),rgba(7,16,19,.06) 68%,rgba(9,19,24,.2))}.game-home::after{display:none}.home-character::after{background:linear-gradient(0deg,rgba(8,18,21,.34),transparent 34%)}.home-nameplate{left:8%;bottom:25px}.home-menu{border-radius:12px}}

/* Additional scene art for the long-running game screens. */
.system-banner{background-image:linear-gradient(90deg,rgba(22,35,42,.84),rgba(22,35,42,.45) 55%,rgba(22,35,42,.18)),url('../assets/scene/moon-curtain-lounge.webp');background-position:center 54%;background-size:cover;}
#page-stage{background:linear-gradient(180deg,rgba(239,246,236,.79),rgba(239,246,236,.91)),url('../assets/scene/jaska-borderlands-dawn-v1.png') center 48%/cover;}
#page-stage.active{animation:none}
#page-stage .chapter:first-child{background-image:linear-gradient(90deg,rgba(255,255,255,.94),rgba(255,255,255,.84) 70%,rgba(255,255,255,.64)),url('../assets/scene/jaska-borderlands-dawn-v1.png');background-position:center 58%;background-size:cover;}
.summon-hero{background-image:linear-gradient(90deg,rgba(18,29,49,.9),rgba(26,37,58,.68) 48%,rgba(26,37,58,.18)),url('../assets/scene/summon-gateway.webp');background-position:center 54%;background-size:cover;}
.summon-hero::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 78% 48%,rgba(125,205,255,.13),transparent 34%);animation:portal-breathe 5s ease-in-out infinite alternate;}
@keyframes portal-breathe{from{opacity:.48}to{opacity:1}}

/* Keep skill and battle card explanations readable on the light panels. */
.skill-desc{color:#506b59;font-size:11px;line-height:1.55;white-space:normal;overflow:visible;text-overflow:clip;}
.skill.locked{opacity:1;background:#f5f8f3;border-color:#d8e3d7;}
.skill.locked .skill-name{color:#586e5d;}
.skill.locked .skill-desc{color:#617967;}
.card small{color:#506b59;}

/* Campaign selection: enter the released chapter, then advance along its map. */
.chapter-select{flex:1;min-height:0;display:grid;place-items:center;padding:clamp(12px,4vw,42px);}
.chapter-launch-card{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:12px;width:min(100%,920px);min-height:330px;padding:clamp(24px,5vw,52px);overflow:hidden;text-align:left;color:#fff;border:1px solid rgba(255,255,255,.7);border-radius:18px;background:linear-gradient(90deg,rgba(20,42,40,.88),rgba(24,52,48,.61) 56%,rgba(24,52,48,.12)),url('../assets/scene/jaska-borderlands-dawn-v1.png') center 53%/cover no-repeat;box-shadow:0 18px 45px rgba(31,62,42,.2);transition:transform .22s,box-shadow .22s;}
.chapter-launch-card:hover{transform:translateY(-3px);box-shadow:0 24px 52px rgba(31,62,42,.26);}
.chapter-launch-card .eyebrow{color:#d8e8d7;font-size:11px;letter-spacing:.18em;}
.chapter-launch-card>strong{font-family:var(--serif);font-size:clamp(27px,4vw,42px);letter-spacing:.06em;text-shadow:0 2px 12px rgba(0,0,0,.2);}
.chapter-launch-desc{max-width:540px;color:#f0f6eb;font-size:14px;line-height:1.9;text-shadow:0 1px 5px rgba(0,0,0,.42);}
.chapter-launch-progress{margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.35);color:#e1eee0;font-size:12px;}
.chapter-launch-action{position:absolute;right:28px;bottom:25px;padding:10px 16px;border:1px solid rgba(255,255,255,.55);border-radius:8px;background:rgba(255,255,255,.18);color:#fff;font-size:13px;backdrop-filter:blur(8px);}
.chapter-map{flex:1;min-height:0;display:flex;flex-direction:column;gap:10px;}
.chapter-map[hidden]{display:none;}
.chapter-map-head{flex:none;display:flex;align-items:center;gap:18px;padding:8px 2px;}
.chapter-map-head>div{flex:1;}
.chapter-map-head .eyebrow{font-size:10px;letter-spacing:.14em;color:#5e7b68;}
.chapter-map-head h2{font-family:var(--serif);font-size:20px;color:#2f5e42;}
.chapter-map-progress{color:#4b7658;font-size:12px;}
.chapter-map-canvas{position:relative;flex:1;min-height:430px;overflow:hidden;border:1px solid rgba(255,255,255,.8);border-radius:16px;background:linear-gradient(180deg,rgba(24,47,39,.12),rgba(24,47,39,.28)),url('../assets/scene/jaska-borderlands-dawn-v1.png') center 56%/cover no-repeat;box-shadow:0 14px 36px rgba(36,69,47,.17);}
.map-route{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;}
.map-route-shadow{fill:none;stroke:rgba(34,57,53,.35);stroke-width:19;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;}
.map-route-line{fill:none;stroke:rgba(255,255,255,.9);stroke-width:9;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;filter:drop-shadow(0 2px 3px rgba(24,43,34,.3));}
.map-node{position:absolute;left:var(--node-x);top:var(--node-y);z-index:1;display:flex;flex-direction:column;align-items:flex-start;width:clamp(150px,19vw,205px);min-height:91px;padding:19px 12px 9px 48px;transform:translate(-50%,-50%);text-align:left;color:#263b34;border:1px solid #d5dfd9;border-radius:3px;background:rgba(255,255,255,.97);box-shadow:0 7px 18px rgba(22,39,32,.25);transition:transform .18s,box-shadow .18s,border-color .18s;}
.map-node:hover:not(:disabled){transform:translate(-50%,-53%);border-color:#73a784;box-shadow:0 11px 24px rgba(22,39,32,.3);}
.map-node-label{position:absolute;left:-1px;right:-1px;top:-1px;height:17px;padding:1px 7px;color:#fff;background:#273b3b;font-size:9px;letter-spacing:.08em;line-height:15px;}
.map-node-number{position:absolute;left:8px;top:27px;display:grid;place-items:center;width:31px;height:35px;clip-path:polygon(25% 0,75% 0,100% 25%,100% 75%,75% 100%,25% 100%,0 75%,0 25%);color:#fff;background:#3898b2;font-size:13px;font-weight:700;}
.map-node strong{font-size:20px;line-height:1.15;color:#263a36;}
.map-node-name{margin-top:2px;font-size:11px;font-weight:600;color:#456653;}
.map-node small{margin-top:3px;font-size:9px;color:#667b6e;}
.map-node.locked{opacity:.72;background:rgba(246,248,246,.94);}
.map-node.locked .map-node-number{background:#87958c;}
.map-node.cleared{border-color:#84b798;}
.map-node.cleared .map-node-number{background:#55916a;}
@media(max-width:700px){.chapter-select{padding:8px}.chapter-launch-card{min-height:300px;padding:23px}.chapter-launch-action{right:18px;bottom:17px}.chapter-map-canvas{min-height:500px}.map-node{width:142px;padding-left:41px}.map-node-number{left:6px;width:28px}.map-node strong{font-size:17px}.chapter-map-head{gap:9px}.chapter-map-head .mini-btn{padding:5px 8px}.chapter-map-progress{font-size:10px}}

/* 大厅入口按页游主界面重排：大立绘、无底板菜单、入口错落排布。 */
.game-home{grid-template-columns:minmax(0,48%) minmax(0,52%);}
.home-character{overflow:visible}
.home-character>img{left:10%;bottom:-27%;height:126%;filter:drop-shadow(0 22px 28px rgba(0,0,0,.48));}
.home-character::after{display:none}
.home-character-glow{left:5%;width:82%;bottom:9%;}
.home-nameplate{left:5%;bottom:7%;padding:12px 24px 12px 16px;background:linear-gradient(90deg,rgba(10,23,26,.72),rgba(10,23,26,.22) 75%,transparent);}
.home-menu{width:min(850px,94%);justify-self:center;align-self:center;margin:46px 3% 10px 0;padding:8px 12px;max-height:calc(100vh - 105px);overflow:visible;border:0;border-radius:0;background:transparent;box-shadow:none;backdrop-filter:none;}
.home-menu-heading{padding:8px 4px 17px 10px;border:0;border-left:2px solid #e6cb83;}
.home-menu-heading::after{display:none}
.home-menu-heading span{color:#ead7a5;text-shadow:0 2px 8px #102229;}
.home-menu-heading h1{font-size:40px;color:#fff;letter-spacing:.16em;text-shadow:0 3px 16px rgba(4,15,20,.75);}
.home-menu-heading h1 small{display:inline-block;margin-left:10px;vertical-align:middle;font:600 13px/1 var(--font);letter-spacing:.08em;color:#f4dfaa;text-shadow:0 2px 8px rgba(4,15,20,.7)}
.home-menu-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}
.home-heading-title{flex:none}
.home-hud-dock{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
body.home-active .hud{display:none}
body.home-active .home-hud-dock .hud-res{display:flex;flex:0 1 auto;justify-content:flex-end;gap:6px;flex-wrap:wrap}
body.home-active .home-hud-dock .hres,body.home-active .home-hud-dock .hres.gold{display:flex;align-items:center;gap:7px;min-width:0;padding:6px 9px;border:1px solid rgba(255,255,255,.38);border-radius:5px 2px 5px 2px;background:rgba(13,31,35,.36);box-shadow:0 2px 8px rgba(0,0,0,.12)}
body.home-active .home-hud-dock .hres-ico{font-size:12px;color:#f0d994}
body.home-active .home-hud-dock .hres-body{flex-direction:row;align-items:baseline;gap:5px}
body.home-active .home-hud-dock .hres-body b{font-size:12px;color:#fff}
body.home-active .home-hud-dock .hres-body i{font-size:9px;color:rgba(255,255,255,.76)}
body.home-active .home-hud-dock .hud-actions{display:flex;gap:5px}
body.home-active .home-hud-dock .ghost-btn{padding:6px 9px;font-size:10px;background:rgba(13,31,35,.34);border-color:rgba(255,255,255,.32)}
.home-character>img{left:22%;}
.home-menu{width:min(900px,96%);margin-right:2%;padding:4px 3px;}
.home-menu-heading{min-height:92px;padding:10px 13px 16px;border:0;background:linear-gradient(90deg,rgba(18,43,47,.60),rgba(18,43,47,.16));}
.home-menu-heading span{font-size:10px;letter-spacing:.12em;color:rgba(255,255,255,.8)}
.home-menu-heading h1{font-family:var(--font);font-size:34px;font-weight:800;letter-spacing:.04em;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.6)}
.home-menu-heading h1 small{font-size:12px;padding:4px 8px;border-radius:4px;background:rgba(12,31,35,.52);border:1px solid rgba(255,255,255,.27)}
.home-menu-grid{grid-template-columns:1.15fr 1fr 1fr;grid-template-rows:repeat(2,minmax(135px,1fr));gap:10px;padding-top:10px}
.home-menu-card{min-height:135px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:10px;padding:17px 18px;background:rgba(246,249,247,.91);border:1px solid rgba(255,255,255,.85);border-left:0;border-radius:2px;box-shadow:0 8px 20px rgba(5,17,21,.2);}
.home-menu-card:nth-child(1){grid-column:1;grid-row:1 / span 2;min-height:280px}
.home-menu-card:nth-child(2){grid-column:2;grid-row:1}
.home-menu-card:nth-child(3){grid-column:3;grid-row:1}
.home-menu-card:nth-child(4){grid-column:2;grid-row:2}
.home-menu-card:nth-child(5){grid-column:3;grid-row:2}
.home-menu-card.primary{background:rgba(228,245,247,.94);border-color:rgba(207,237,238,.96)}
.home-menu-card.summon{background:rgba(255,247,227,.96);border-color:rgba(255,236,190,.95)}
.home-menu-card .menu-symbol,.home-menu-card.summon .menu-symbol,.home-menu-card:nth-child(1) .menu-symbol{width:42px;height:42px;border-radius:7px;background:rgba(86,146,151,.12);border:0;box-shadow:none;color:#47868a;font-size:23px}
.home-menu-card.summon .menu-symbol{background:rgba(201,155,69,.14);color:#ae8438}
.home-menu-card strong,.home-menu-card:nth-child(1) strong{font-family:var(--font);font-size:22px;font-weight:750;letter-spacing:0;color:#243b3b}
.home-menu-card em{top:10px;right:12px;color:#9caeaa}
.home-status{margin:10px 8px 0;padding:10px 8px 0;font-size:11px}
@media(max-width:1050px) and (min-width:821px){.home-character>img{left:12%}.home-menu-grid{grid-template-columns:1.1fr 1fr 1fr;grid-template-rows:repeat(2,minmax(105px,1fr))}.home-menu-card{min-height:105px;padding:12px}.home-menu-card:nth-child(1){min-height:220px}}
@media(max-width:820px){.home-character>img{left:22%}.home-menu{width:100%;margin:0;padding:8px}.home-menu-heading{min-height:0;padding:7px 8px 12px}.home-menu-heading h1{font-size:26px}.home-menu-grid{grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,minmax(78px,1fr));gap:8px}.home-menu-card{min-height:78px;padding:10px}.home-menu-card:nth-child(1){grid-column:1;grid-row:1 / span 2;min-height:164px}.home-menu-card:nth-child(2){grid-column:2;grid-row:1}.home-menu-card:nth-child(3){grid-column:2;grid-row:2}.home-menu-card:nth-child(4){grid-column:1;grid-row:3}.home-menu-card:nth-child(5){grid-column:2;grid-row:3}.home-menu-card strong,.home-menu-card:nth-child(1) strong{font-size:16px}.home-menu-card .menu-symbol,.home-menu-card:nth-child(1) .menu-symbol{width:32px;height:32px;font-size:17px}}
.home-menu-grid{grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,minmax(105px,1fr));gap:12px;padding:6px 0 0;}
.home-menu-card{min-height:105px;padding:17px 18px;background:linear-gradient(115deg,rgba(249,251,245,.94),rgba(229,239,229,.84));border:1px solid rgba(255,255,255,.62);border-left:4px solid rgba(143,174,142,.85);border-radius:4px 14px 4px 14px;box-shadow:0 10px 24px rgba(4,16,20,.25),inset 0 1px rgba(255,255,255,.85);}
.home-menu-card:nth-child(1){grid-column:1;grid-row:1 / span 2;min-height:220px;}
.home-menu-card:nth-child(2){grid-column:2;grid-row:1;}
.home-menu-card:nth-child(3){grid-column:2;grid-row:2;}
.home-menu-card:nth-child(4){grid-column:1;grid-row:3;}
.home-menu-card:nth-child(5){grid-column:2;grid-row:3;}
.home-menu-card.primary{background:linear-gradient(135deg,rgba(241,248,225,.97),rgba(213,233,204,.91));border-left-color:#c5a45d;}
.home-menu-card.summon{background:linear-gradient(135deg,rgba(255,249,231,.97),rgba(242,222,170,.92));border-left-color:#d1a443;}
.home-menu-card:nth-child(1) .menu-symbol{width:62px;height:62px;font-size:31px}
.home-menu-card:nth-child(1) strong{font-size:30px}
.home-menu-card:nth-child(4) strong{font-size:20px}
.home-menu-card em{color:#748a7a}
.home-status{margin-top:13px;padding:12px 8px 0;color:#edf3e8;border-color:rgba(255,255,255,.24);text-shadow:0 1px 8px #102229}
.home-status strong{color:#edf3e8}
@media(max-width:1050px) and (min-width:821px){.game-home{grid-template-columns:42% 58%}.home-character>img{left:0;height:116%}.home-menu{width:98%;margin-right:1%;padding:8px}.home-menu-card{min-height:88px}.home-menu-card:nth-child(1){min-height:188px}.home-menu-grid{grid-template-rows:repeat(3,minmax(88px,1fr))}}
@media(max-width:820px){.game-home{display:flex;flex-direction:column;min-height:100vh;height:auto;padding:8px 12px 24px;background-position:42% center}.home-character{flex:none;height:390px;margin:-8px -12px 0;overflow:hidden}.home-character>img{height:500px;left:15%;bottom:-112px}.home-nameplate{left:7%;bottom:20px}.home-menu{width:100%;align-self:stretch;margin:0;padding:12px 7px;max-height:none;overflow:visible}.home-menu-heading{align-items:flex-start;padding:5px 8px 12px}.home-menu-heading h1{font-size:30px}.home-hud-dock{max-width:58%;gap:4px}.home-hud-dock .hud-res{gap:4px!important}.home-hud-dock .hres{padding:4px 6px!important}.home-hud-dock .hres-body i{display:none}.home-hud-dock .hud-actions{display:none!important}.home-menu-grid{grid-template-rows:repeat(3,minmax(78px,1fr));gap:8px}.home-menu-card{min-height:78px;padding:9px;gap:7px}.home-menu-card:nth-child(1){min-height:164px}.home-menu-card:nth-child(1) .menu-symbol{width:40px;height:40px;font-size:21px}.home-menu-card:nth-child(1) strong{font-size:21px}.home-menu-card strong{font-size:16px}.home-menu-card:nth-child(4) strong{font-size:15px}.menu-symbol{width:32px;height:32px;font-size:17px}.home-status{font-size:9px}}

/* 主界面大厅：顶部资源、等级与主线、功能入口、召唤横幅。 */
.home-menu{width:min(900px,98%);height:calc(100% - 160px);max-height:none;align-self:stretch;display:flex;flex-direction:column;gap:11px;margin:160px 2% 0 0;padding:0 8px 18px;overflow-y:auto;background:transparent;border:0;border-radius:0;box-shadow:none;backdrop-filter:none}
.home-menu-heading{flex:none;min-height:60px;padding:3px 8px 7px;border:0;background:transparent}
.home-heading-title{border-left:3px solid #e4c77f;padding-left:13px}
.home-heading-title>span{font-size:10px;letter-spacing:.22em;color:#e4d8bd;text-shadow:0 1px 5px #21363c}
.home-menu-heading h1{font-size:29px;letter-spacing:.07em}
.home-menu-heading h1 small{margin-left:8px;font-size:11px;padding:4px 7px;background:rgba(34,47,51,.64);border-color:rgba(255,255,255,.4)}
.home-hud-dock{position:absolute;z-index:8;top:12px;left:48%;right:3%;display:flex;justify-content:flex-end;align-items:center;gap:8px;}
body.home-active .home-hud-dock .hud-res{flex-wrap:nowrap;gap:7px}
body.home-active .home-hud-dock .hres,body.home-active .home-hud-dock .hres.gold{min-height:40px;padding:5px 9px;background:rgba(237,245,246,.88);border-color:rgba(255,255,255,.72);box-shadow:0 3px 12px rgba(9,24,29,.16)}
body.home-active .home-hud-dock .hres-ico{color:#398b94}
body.home-active .home-hud-dock .hres-body{flex-direction:column;gap:0}
body.home-active .home-hud-dock .hres-body b{font-size:12px;color:#253d40}
body.home-active .home-hud-dock .hres-body i{font-size:8px;color:#6f8581}
body.home-active .home-hud-dock .ghost-btn{color:#315453;background:rgba(242,247,244,.82);border-color:rgba(255,255,255,.7)}
.home-overview{flex:none;display:grid;grid-template-columns:.88fr 1.3fr;gap:10px;min-height:142px}
.home-level-card{display:flex;align-items:center;gap:15px;padding:16px;background:rgba(247,250,248,.94);border:1px solid rgba(255,255,255,.94);box-shadow:0 7px 18px rgba(7,25,29,.18)}
.home-level-num{position:relative;flex:none;width:112px;height:100px;display:flex;align-items:center;justify-content:center;background:linear-gradient(145deg,#f4f6f2,#d7e3de);color:#293f3e}
.home-level-num::before{content:"✦";position:absolute;left:7px;top:4px;color:rgba(84,117,111,.16);font-size:29px}
.home-level-num small{position:absolute;left:10px;top:9px;font-size:9px;color:#718682;writing-mode:vertical-rl;letter-spacing:.1em}
.home-level-num b{font-size:63px;font-weight:800;line-height:1}
.home-level-num>span{align-self:flex-end;margin:0 0 14px 4px;font-size:10px;font-weight:700;color:#608379}
.home-exp-info{flex:1;min-width:0}.home-exp-info>div{display:flex;justify-content:space-between;gap:6px;align-items:center}.home-exp-info b{font-size:17px;color:#263b39}.home-exp-info span{font-size:10px;color:#6a827b;white-space:nowrap}.home-exp-info>i{display:block;height:9px;margin:11px 0 8px;background:#dfe9e2;border-radius:2px;overflow:hidden}.home-exp-info em{display:block;width:0;height:100%;background:linear-gradient(90deg,#23a6c4,#65d4de);transition:width .4s}.home-exp-info>small{font-size:9px;color:#849690}
.home-story-card{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:7px;padding:18px 23px;text-align:left;color:#fff;background:linear-gradient(90deg,rgba(22,42,48,.86),rgba(22,42,48,.38)),url('../assets/scene/ruined-shrine.png') center 47%/cover;border:1px solid rgba(255,255,255,.66);box-shadow:0 7px 18px rgba(7,25,29,.18);transition:filter .2s,transform .2s}
.home-story-card:hover{filter:brightness(1.1);transform:translateY(-2px)}.home-story-card>span{font-size:10px;letter-spacing:.15em;color:#d7e5d9}.home-story-card>b{font-size:24px;letter-spacing:.04em}.home-story-card>small{font-size:11px;color:#d9e4df}.home-story-card>i{position:absolute;right:14px;top:5px;font-size:58px;font-style:normal;font-weight:800;color:rgba(255,255,255,.15)}
.home-shortcuts{flex:none;display:grid;grid-template-columns:1fr 1fr;gap:10px;min-height:93px}
.home-shortcut{position:relative;display:flex;align-items:center;gap:13px;padding:12px 19px;text-align:left;background:rgba(246,249,248,.94);border:1px solid rgba(255,255,255,.86);box-shadow:0 6px 17px rgba(8,24,28,.15);transition:transform .2s,filter .2s}
.home-shortcut:hover{transform:translateY(-2px);filter:brightness(1.06)}.home-shortcut>i{display:grid;place-items:center;width:46px;height:46px;background:#e6eeea;color:#61837a;font-size:25px;font-style:normal}.home-shortcut>b{font-size:22px;color:#293d3c}.home-shortcut>small{margin-left:auto;color:#83928c;font-size:10px}
.home-recruit{flex:none;min-height:142px;display:grid;grid-template-columns:1.1fr 1fr 1fr;align-items:stretch;gap:1px;padding:0;background:#16a7c7;border:1px solid rgba(199,247,250,.76);box-shadow:0 9px 22px rgba(4,28,39,.27)}
.home-recruit-title{display:flex;flex-direction:column;justify-content:center;padding:15px 19px;color:#fff;background:linear-gradient(140deg,#087d9e,#10a4c2)}.home-recruit-title>span{font-size:9px;letter-spacing:.18em;color:#b8edf0}.home-recruit-title>b{font-size:24px;margin:5px 0}.home-recruit-title>small{font-size:10px;color:rgba(255,255,255,.78)}
.home-recruit>button{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:5px;padding:15px 18px;text-align:left;color:#fff;background:linear-gradient(145deg,#20b6d2,#078db3);transition:background .2s}.home-recruit>button:hover{background:linear-gradient(145deg,#37c9df,#0799bd)}.home-recruit>button+button{border-left:1px solid rgba(216,251,252,.28)}.home-recruit>button>i{position:absolute;right:13px;top:9px;font-size:40px;color:rgba(224,251,255,.19);font-style:normal}.home-recruit>button>b{font-size:19px}.home-recruit>button>span{font-size:10px;color:#c6f5f6}
.home-bottom-links{flex:none;display:grid;grid-template-columns:.8fr 1.2fr;gap:10px;min-height:70px}.home-bottom-links>button{display:flex;align-items:center;gap:10px;padding:11px 17px;background:rgba(247,249,247,.94);border:1px solid rgba(255,255,255,.83);box-shadow:0 5px 14px rgba(8,24,28,.13);text-align:left}.home-bottom-links>button:hover{filter:brightness(1.06)}.home-bottom-links>button>i{font-size:20px;color:#578f96;font-style:normal}.home-bottom-links>button>b{font-size:18px;color:#304544}.home-bottom-links>button>small{margin-left:auto;font-size:10px;color:#85938e}.home-status{display:flex;align-items:center;justify-content:space-between;margin:0;padding:0 14px;border:1px solid rgba(255,255,255,.28);background:rgba(18,39,44,.43);color:#eff7f1;font-size:10px;text-shadow:0 1px 5px #173238}.home-status strong{color:#eff7f1}
@media(max-width:1050px) and (min-width:821px){.home-menu{gap:8px;margin-top:132px;height:calc(100% - 132px);padding-left:3px;padding-right:3px}.home-hud-dock{left:42%;right:2%;gap:4px}.home-overview{min-height:122px}.home-level-card{padding:10px;gap:9px}.home-level-num{width:82px;height:86px}.home-level-num b{font-size:51px}.home-exp-info b{font-size:14px}.home-story-card{padding:13px}.home-story-card>b{font-size:20px}.home-shortcuts{min-height:76px}.home-shortcut{padding:9px}.home-shortcut>b{font-size:18px}.home-shortcut>small{font-size:9px}.home-recruit{min-height:120px}.home-recruit-title{padding:10px}.home-recruit>button{padding:10px}.home-recruit>button>b{font-size:16px}.home-bottom-links{min-height:58px}}
@media(max-width:820px){.home-menu{height:auto;max-height:none;margin:0;padding:8px;overflow:visible}.home-menu-heading{display:block;min-height:54px;padding:5px 8px}.home-hud-dock{position:relative;inset:auto;justify-content:flex-start;margin:6px 0 10px}.home-hud-dock .hud-res{width:100%;justify-content:flex-start;flex-wrap:wrap!important}.home-hud-dock .hud-actions{display:flex!important}.home-overview{grid-template-columns:1fr 1.1fr;min-height:112px;gap:6px}.home-level-card{gap:7px;padding:8px}.home-level-num{width:63px;height:79px}.home-level-num b{font-size:43px}.home-level-num small{left:5px;font-size:7px}.home-level-num>span{font-size:8px;margin-bottom:11px}.home-exp-info b{font-size:12px}.home-exp-info span{font-size:8px}.home-exp-info>small{font-size:8px}.home-story-card{padding:10px}.home-story-card>b{font-size:16px}.home-story-card>span,.home-story-card>small{font-size:8px}.home-shortcuts{min-height:68px;gap:6px}.home-shortcut{gap:7px;padding:7px}.home-shortcut>i{width:32px;height:32px;font-size:18px}.home-shortcut>b{font-size:16px}.home-shortcut>small{font-size:8px}.home-recruit{grid-template-columns:1fr 1fr;min-height:106px}.home-recruit-title{grid-column:1/-1;padding:8px 12px}.home-recruit-title>b{font-size:18px;margin:2px 0}.home-recruit-title>small{display:none}.home-recruit>button{padding:8px 10px}.home-recruit>button>b{font-size:14px}.home-recruit>button>i{font-size:28px}.home-bottom-links{grid-template-columns:1fr;min-height:0;gap:6px}.home-bottom-links>button{min-height:48px;padding:7px 12px}.home-status{min-height:40px;padding:7px 10px}.home-hud-dock .hres-body i{display:block!important}}
@media(max-width:820px){.hud-res{flex-wrap:wrap}.hud-res .hres:nth-child(n+3){display:flex}.hud-res .hres{flex:1 1 30%}}

/* Readability pass: supporting copy across the light game UI. */
.panel-sub,.mc-title,.mc-tend,.mc-row,.ibox i,.ibox-v em,.stat-l,.slot-label,.slot-empty,.lv-num,
.pc-q,.item-desc,.stage-id,.stage-meta,.chapter-desc,.chapter-prog,.a-s,.a-ch,
.summon-member small,.summon-member>span,.summon-result-card small,.summon-result-note,
.welcome-card p,.relic-panel p,.farm-plot small,.relic small,
.home-menu-card small,.home-shortcut>small,.home-bottom-links>button>small,.home-exp-info>small{
  color:#52695a;
}
.panel-sub{font-size:12px}
.mc-title{font-size:12px}
.mc-tend{font-size:11.5px;line-height:1.5}
.mc-row{font-size:11.5px}
.ibox i,.ibox-v em,.stat-l,.slot-label,.slot-empty,.lv-num{font-size:11.5px}
.item-desc,.chapter-desc,.a-s,.welcome-card p,.relic-panel p{font-size:12px;line-height:1.65}
.stage-id,.stage-meta,.chapter-prog,.a-ch{font-size:11.5px}
.pc-q,.summon-member small,.summon-member>span,.summon-result-card small,.summon-result-note,.farm-plot small,.relic small{font-size:11px}
.mcard.locked{opacity:1;background:#f7f9f6;border-color:#dce5dc}
.mcard.locked .mc-name,.mcard.locked .mc-title{color:#5b7060}
.home-menu-card small,.home-shortcut>small,.home-bottom-links>button>small,.home-exp-info>small{color:#52695a}

/* Large, high contrast labels remain legible at the game's common zoom levels. */
body{font-size:15px}
.hud-sub,.hres-body i,.dock-txt,.panel-sub,.panel-title,.home-menu-heading span,.home-shortcut>small,
.home-story-card>span,.home-story-card>small,.home-status,.home-menu-card small,.home-bottom-links>button>small,
.home-exp-info>small,.ibox i,.ibox-v em,.mc-title,.mc-tend,.mc-row,.skill-desc,.skill-cost,.slot-label,
.slot-bonus,.slot-empty,.item-q,.eq-flag,.item-bonus,.item-desc,.stage-id,.stage-meta,.chapter-desc,
.chapter-prog,.map-node-label,.map-node-name,.map-node small,.a-ch,.a-s,.pc-q,.summon-member small,
.summon-member>span,.summon-result-card small,.summon-result-note,.welcome-card p,.relic-panel p,
.farm-plot small,.relic small,.card small,.card em,.battle-turn,.deck-count,.dialog-next,.msg-name,
.chip-tone,.off-cap,.off-tip,.reward-explainer{font-size:12px;line-height:1.55}
.skill-name,.slot-item,.item-name,.stage-name,.map-node strong,.member-name,.bubble{font-size:14px}
.map-node strong{font-size:21px}.chapter-name{font-size:20px}.chapter-launch-desc,.chapter-launch-progress{font-size:14px}
.skill{padding:9px 11px;gap:12px}.skill-ico{width:30px;height:30px;font-size:16px}
.card strong{font-size:14px}.card small{font-size:12px;color:#e0e8f4}.card-cost{width:29px;height:29px;font-size:15px}
.reward-explainer{padding:10px 14px;color:#405d4c;background:#f3f7f2;border-bottom:1px solid #dce7dd}
.deck-access-hint{padding:11px 13px;margin-bottom:12px;border-left:3px solid #4b9270;background:#edf5ef;color:#315a43;font-size:14px;line-height:1.65}
.deck-access-hint.locked{border-color:#c29438;background:#fcf5e5;color:#624f28}
.library-title{margin:18px 0 10px;font-size:17px;color:#26433a}
.card-library-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.library-card{min-width:0;padding:12px;border:1px solid #d5e0d7;border-radius:7px;background:#fbfcfa;color:#263d35}
.library-card.owned{border-color:#91b99c;background:#f4f9f4}
.library-card-top{display:flex;align-items:center;gap:8px}.library-card-icon{display:grid;place-items:center;width:28px;height:28px;border-radius:5px;background:#e5efe8;color:#47795c;font-size:18px}.library-card-top b{font-size:14px}.library-card-cost{margin-left:auto;color:#4b6c58;font-size:12px;white-space:nowrap}
.library-card p{min-height:38px;margin:8px 0;color:#4b5f55;font-size:13px;line-height:1.55}.library-card-status{color:#536b5d;font-size:12px;line-height:1.5}.library-card-actions{display:flex;gap:7px;margin-top:9px}.library-card-actions button{min-height:34px;flex:1;font-size:12px}.deck-adjust{display:flex;gap:5px}.deck-adjust button{width:34px;height:34px;border:1px solid #9bb9a3;border-radius:5px;background:#f5faf5;color:#315b43;font-size:20px;font-weight:700}.deck-adjust button:disabled,.library-card-actions button:disabled{opacity:.45;cursor:not-allowed}.deck-empty{padding:12px;color:#52695a;font-size:13px}
.battle-scene.field-battle .battle-bg{background:linear-gradient(180deg,rgba(13,29,31,.24),rgba(8,18,22,.68)),url('../assets/scene/jaska-borderlands-dawn-v1.png') center 55%/cover}
.idle-top{display:grid;grid-template-columns:repeat(5,minmax(0,1fr)) auto;gap:10px}.idle-top .ibox{min-width:0;padding:11px 13px}.idle-top .ibox.grow{min-width:0}.idle-top>#btnGroupUp{min-width:130px}
@media(max-width:820px){.card-library-grid{grid-template-columns:1fr}.library-card p{min-height:0}}
@media(max-width:1080px) and (min-width:821px){.idle-top{grid-template-columns:repeat(3,minmax(0,1fr))}.idle-top>#btnGroupUp{min-width:0}}
@media(max-width:820px){.idle-top{grid-template-columns:repeat(2,minmax(0,1fr))}.idle-top .ibox.grow{min-width:0}.idle-top>#btnGroupUp{min-height:62px}}

/* Final legibility pass for compact status labels and battle controls. */
.log-item,.log-item span,.pc-name,.pc-q,.profile-tags span,.filter-btn,.chapter-map-progress,
.unit-lv,.sr-lb,.sr-v,.intent,.pending-empty,.dock-txt,.home-level-num small,.home-level-num>span,
.home-exp-info span,.home-status,.chapter-launch-card .eyebrow{font-size:12px;line-height:1.55}
.log-item{color:#3f594a}.log-item span{color:#5e7467}.log-item.chat,.log-item.good{color:#3f7851}
.pcell{width:142px;min-height:86px;padding:9px}.pc-name{white-space:normal;overflow-wrap:anywhere;color:#315b42}.pc-q{color:#52695a}
.unit-lv,.sr-lb,.sr-v,.intent{color:#e0e8f4}.stat-row{grid-template-columns:42px minmax(60px,1fr) 78px;gap:8px}.intent{display:inline-block}
.chapter-map-progress{font-size:13px}.profile-tags span{font-size:12px}.filter-btn{font-size:13px}
.home-level-num small{font-size:10px}.home-level-num>span{font-size:12px}.home-exp-info span{font-size:12px}

/* Remove the retired vertical label even if an older saved page template is cached. */
.home-level-num small{display:none!important}

/* Battle card rules text must stay readable even when a card is currently unaffordable. */
.card small{color:#405b4a!important;font-size:12px;font-weight:600;text-shadow:none;opacity:1}
.card:disabled{opacity:.86;filter:saturate(.78)}

/* 1-2 victory epilogue: dedicated patrol and carriage backgrounds with new guard art. */
.field-arrest-cinematic[data-beat="patrol-arrive"] .dialog-bg,.field-arrest-cinematic[data-beat="arrested"] .dialog-bg{background-image:linear-gradient(0deg,rgba(8,18,16,.84),rgba(8,18,16,.1) 60%),url('../assets/scene/field-road-aftermath-v2.png');background-position:center,center 54%;background-size:cover}
.field-arrest-cinematic[data-beat="patrol-arrive"] .opening-cutscene,.field-arrest-cinematic[data-beat="arrested"] .opening-cutscene{background:linear-gradient(180deg,rgba(25,43,42,.03),rgba(10,24,24,.18)),url('../assets/scene/field-road-aftermath-v2.png') center 56%/cover no-repeat}
.field-arrest-cinematic[data-beat="cart-departs"] .dialog-bg{background-image:linear-gradient(0deg,rgba(8,18,16,.8),rgba(8,18,16,.12) 60%),url('../assets/scene/jaska-carriage-interior.png');background-position:center,center 54%;background-size:cover}
.field-arrest-cinematic[data-beat="cart-departs"] .opening-cutscene{background:linear-gradient(180deg,rgba(16,24,25,.05),rgba(8,15,18,.18)),url('../assets/scene/jaska-carriage-interior.png') center/cover no-repeat}
.field-arrest-cinematic.cutscene-active .opening-cutscene img{opacity:0}
.field-arrest-cinematic.cutscene-active .opening-cutscene .chibi-actor{opacity:1;left:38%;height:63%;max-width:30%;animation:patrol-hero-idle 1.6s ease-in-out infinite}
.field-arrest-cinematic.cutscene-active .opening-cutscene .cutscene-beast{opacity:1;left:auto;right:8%;height:60%;max-width:34%;animation:none;filter:grayscale(.35) brightness(.78) drop-shadow(0 8px 12px rgba(18,37,34,.4))}
.field-arrest-cinematic.cutscene-active[data-beat="patrol-arrive"] .opening-cutscene .chibi-actor{left:34%;animation:patrol-notice .8s ease-out both}
.field-arrest-cinematic.cutscene-active[data-beat="patrol-arrive"] .opening-cutscene .patrol-guards,
.field-arrest-cinematic.cutscene-active[data-beat="arrested"] .opening-cutscene .patrol-guards{display:block;opacity:1;left:auto;right:3%;bottom:0;height:58%;width:39%;max-width:none;object-fit:contain;transform:none;animation:guards-arrive .7s cubic-bezier(.2,.75,.22,1) both}
.field-arrest-cinematic.cutscene-active[data-beat="arrested"] .opening-cutscene .chibi-actor{left:34%;animation:hero-resist .62s ease-in-out infinite}
.field-arrest-cinematic.cutscene-active[data-beat="cart-departs"] .opening-cutscene .chibi-actor{left:27%;height:61%;max-width:31%;animation:cart-ride 2.2s ease-in-out infinite}
.field-arrest-cinematic.cutscene-active[data-beat="cart-departs"] .opening-cutscene .cutscene-beast{display:none}
@keyframes patrol-notice{0%{transform:translateX(-50%) rotate(0)}35%{transform:translate(-50%,-8px) rotate(-7deg) scale(1.04)}65%{transform:translate(-50%,2px) rotate(4deg)}100%{transform:translateX(-50%) rotate(0)}}
@keyframes guards-arrive{0%{opacity:0;translate:36px 0}100%{opacity:1;translate:0 0}}
@keyframes hero-resist{0%,100%{transform:translateX(-50%) rotate(0)}25%{transform:translate(calc(-50% - 7px),0) rotate(-5deg)}55%{transform:translate(calc(-50% + 5px),2px) rotate(4deg)}}
@keyframes patrol-hero-idle{0%,100%{translate:0 0}50%{translate:0 -5px}}
@keyframes cart-ride{0%,100%{transform:translateX(-50%) rotate(0)}25%{transform:translate(-50%,2px) rotate(-1deg)}70%{transform:translate(-50%,-2px) rotate(1deg)}}
@media(max-width:820px){.field-arrest-cinematic.cutscene-active[data-beat="patrol-arrive"] .opening-cutscene .chibi-actor,.field-arrest-cinematic.cutscene-active[data-beat="arrested"] .opening-cutscene .chibi-actor{left:29%;height:57%;max-width:32%}.field-arrest-cinematic.cutscene-active[data-beat="patrol-arrive"] .opening-cutscene .patrol-guards,.field-arrest-cinematic.cutscene-active[data-beat="arrested"] .opening-cutscene .patrol-guards{right:-3%;width:49%;height:50%}}
.battle-scene .unit-card{color:#294738}
.battle-scene .unit-card .unit-name{color:#284b39;font-size:14px;font-weight:700}
.battle-scene .unit-card .unit-lv{color:#526d5d!important;font-size:12px;font-weight:600}
.battle-scene .unit-card .sr-lb{color:#536c5d!important;font-size:12px;font-weight:600}
.battle-scene .unit-card .sr-v{color:#2b6546!important;font-size:12px;font-weight:700}
.battle-scene .unit-card .sr-lb.block{color:#66528b!important}
.battle-scene .unit-card .st{color:#466151;border-color:#c9d9cc;background:#f4f8f4}
.battle-scene .unit-card .st.buff{color:#28714e;border-color:#aad3b6}
.battle-scene .unit-card .st.debuff{color:#a5485e;border-color:#e1b4be}
.battle-scene .unit-card .intent.attack{color:#a5485e}
.battle-scene .unit-card .intent.block{color:#65508e}
.battle-scene .unit-card .intent.buff{color:#8a681e}
.battle-scene.castle-stable-battle .battle-bg{background:linear-gradient(180deg,rgba(12,17,20,.12),rgba(8,12,15,.52)),url('../assets/scene/jaska-stable-night-v1.png') center 62%/cover no-repeat}
.cutscene-active .opening-cutscene .chibi-actor{height:68%;max-width:34%}
.cutscene-active[data-beat="patrol-arrive"] .opening-cutscene .patrol-guards,.cutscene-active[data-beat="arrested"] .opening-cutscene .patrol-guards{filter:drop-shadow(0 8px 10px rgba(19,34,28,.34))}

/* 1-3：城堡牢房与月幕系统重新接入。 */
.castle-cinematic .dialog-bg{background:linear-gradient(180deg,rgba(8,14,22,.24),rgba(8,14,22,.56)),url('../assets/scene/castle-cell-v1.png') center/cover no-repeat}
.castle-cinematic .opening-cutscene{background:linear-gradient(180deg,rgba(8,12,17,.04),rgba(8,12,17,.16)),url('../assets/scene/castle-cell-v1.png') center/cover no-repeat}
.castle-cinematic.cutscene-active .opening-cutscene .chibi-actor{left:50%;bottom:0;height:94%;max-width:39%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 10px 15px rgba(0,0,0,.42));animation:prison-idle 2.4s ease-in-out infinite}
.castle-cinematic.cutscene-active[data-beat="cell-arrive"] .opening-cutscene .chibi-actor{animation:prison-arrive .72s cubic-bezier(.2,.75,.24,1) both,prison-idle 2.4s .72s ease-in-out infinite}
.castle-cinematic.cutscene-active[data-beat="prison-look"] .opening-cutscene .chibi-actor{animation:prison-look 1.1s ease-in-out both}
.castle-cinematic.cutscene-active[data-beat="grip-bars"] .opening-cutscene .chibi-actor{animation:prison-grip .68s ease-out both,prison-idle 2.4s .68s ease-in-out infinite}
.castle-cinematic.cutscene-active[data-beat="system-return"] .opening-cutscene .chibi-actor{animation:prison-notice .68s ease-out both,prison-idle 2.4s .68s ease-in-out infinite}
.castle-cinematic.cutscene-active[data-beat="system-identifies"] .opening-cutscene .system-popup,.castle-cinematic.cutscene-active[data-beat="system-mission"] .opening-cutscene .system-popup,.castle-cinematic.cutscene-active[data-beat="system-guide"] .opening-cutscene .system-popup,.castle-cinematic.cutscene-active[data-beat="system-connect"] .opening-cutscene .system-popup{display:block;right:8%;top:16%;width:min(340px,38%);animation:system-window-enter .45s ease-out both}
.castle-cinematic.cutscene-active[data-beat="system-identifies"] .opening-cutscene .system-popup{border-color:rgba(119,221,231,.9);box-shadow:0 0 34px rgba(69,198,217,.34)}
.castle-cinematic.cutscene-active[data-beat="system-mission"] .opening-cutscene .system-popup{background:linear-gradient(145deg,rgba(23,40,53,.96),rgba(19,31,45,.93));color:#edf6ff;border-color:rgba(139,176,226,.88)}
.castle-cinematic.cutscene-active[data-beat="system-mission"] .opening-cutscene .system-popup small,.castle-cinematic.cutscene-active[data-beat="system-mission"] .opening-cutscene .system-popup span{color:#d2deef}
@keyframes prison-arrive{0%{left:82%;opacity:0;transform:translateX(-50%) translateY(10px)}100%{left:50%;opacity:1;transform:translateX(-50%)}}
@keyframes prison-look{0%,100%{transform:translateX(-50%) translateY(0)}28%{transform:translateX(-53%) translateY(-3px) rotate(-2deg)}56%{transform:translateX(-47%) translateY(0) rotate(2deg)}}
@keyframes prison-grip{0%,100%{transform:translateX(-50%) translateY(0)}25%{transform:translateX(-50%) translateY(-7px) scale(1.025)}48%{transform:translateX(-50%) translateY(0) scale(1)}}
@keyframes prison-notice{0%,100%{transform:translateX(-50%) translateY(0)}34%{transform:translateX(-50%) translateY(-10px) scale(1.035)}65%{transform:translateX(-50%) translateY(1px)}}
@keyframes prison-idle{0%,100%{translate:0 0}50%{translate:0 -4px}}
@media(max-width:820px){.castle-cinematic.cutscene-active .opening-cutscene .chibi-actor{height:90%;max-width:58%}.castle-cinematic.cutscene-active .opening-cutscene .system-popup{right:4%;top:8%;width:48%;padding:10px}.castle-cinematic.cutscene-active .opening-cutscene .system-popup b{font-size:14px}}

/* 1-4 escape cutscene: cell inspection, the hidden passage, then the stable and horse escape. */
.stable-escape-cinematic .dialog-bg{background:linear-gradient(180deg,rgba(8,14,22,.32),rgba(8,14,22,.72)),url('../assets/scene/castle-cell-v1.png') center/cover no-repeat}
.stable-escape-cinematic .opening-cutscene{overflow:hidden;background:linear-gradient(180deg,rgba(8,12,17,.08),rgba(8,12,17,.34)),url('../assets/scene/castle-cell-v1.png') center/cover no-repeat}
.stable-escape-cinematic .opening-cutscene .chibi-actor{z-index:2;left:29%;bottom:0;height:76%;max-width:32%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 9px 12px rgba(0,0,0,.42));animation:prison-idle 2.2s ease-in-out infinite}
.stable-escape-cinematic .opening-cutscene .cutscene-horse{display:none;position:absolute;z-index:2;right:7%;bottom:8%;height:55%;width:auto;max-width:48%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 12px 14px rgba(0,0,0,.55))}
.stable-escape-cinematic[data-beat="wall-inspect"] .opening-cutscene .chibi-actor{left:38%;animation:chibi-wall-listen .72s ease-in-out both}
.stable-escape-cinematic[data-beat="wall-windup"] .opening-cutscene .chibi-actor{left:34%;animation:chibi-wall-windup .78s ease-out both}
.stable-escape-cinematic[data-beat="wall-impact"] .opening-cutscene{animation:wall-shake .34s linear 2}
.stable-escape-cinematic[data-beat="wall-impact"] .opening-cutscene::after{content:"";position:absolute;z-index:1;left:25%;bottom:19%;width:20%;height:38%;background:radial-gradient(ellipse,rgba(17,19,21,.96) 20%,rgba(24,25,25,.75) 46%,transparent 72%);clip-path:polygon(20% 8%,53% 0,88% 19%,100% 48%,84% 69%,95% 92%,59% 100%,26% 88%,0 63%,9% 36%);animation:wall-hole-open .38s ease-out both}
.stable-escape-cinematic[data-beat="wall-impact"] .opening-cutscene .chibi-actor{left:36%;animation:chibi-punch-wall .34s ease-out both}
.stable-escape-cinematic[data-beat="wall-break"] .opening-cutscene .chibi-actor{left:36%;animation:chibi-wall-recoil .55s ease-out both}
.stable-escape-cinematic[data-beat="service-tunnel"] .dialog-bg,.stable-escape-cinematic[data-beat="searching-guards"] .dialog-bg{background-image:linear-gradient(90deg,rgba(7,11,15,.9),rgba(12,17,20,.75)),url('../assets/scene/castle-cell-v1.png');background-position:center;background-size:cover}
.stable-escape-cinematic[data-beat="service-tunnel"] .opening-cutscene,.stable-escape-cinematic[data-beat="searching-guards"] .opening-cutscene{background:linear-gradient(90deg,rgba(13,17,20,.86),rgba(19,22,23,.6)),repeating-linear-gradient(0deg,transparent 0 56px,rgba(1,5,7,.38) 58px 63px),linear-gradient(145deg,#41494a,#202628 58%,#141b1d)}
.stable-escape-cinematic[data-beat="service-tunnel"] .opening-cutscene .chibi-actor,.stable-escape-cinematic[data-beat="searching-guards"] .opening-cutscene .chibi-actor{left:50%;height:72%;animation:chibi-tunnel-run 1.2s ease-in-out both}
.stable-escape-cinematic[data-beat="stable-reveal"] .dialog-bg,.stable-escape-cinematic[data-beat="guard-alert"] .dialog-bg,.stable-escape-cinematic[data-beat="guard-standoff"] .dialog-bg,.stable-escape-cinematic[data-beat="guards-down"] .dialog-bg,.stable-escape-cinematic[data-beat="horse-approach"] .dialog-bg,.stable-escape-cinematic[data-beat="mount-horse"] .dialog-bg,.stable-escape-cinematic[data-beat="ride-away"] .dialog-bg{background-image:linear-gradient(180deg,rgba(7,13,18,.3),rgba(7,13,18,.72)),url('../assets/scene/jaska-stable-night-v1.png');background-position:center;background-size:cover}
.stable-escape-cinematic[data-beat="stable-reveal"] .opening-cutscene,.stable-escape-cinematic[data-beat="guard-alert"] .opening-cutscene,.stable-escape-cinematic[data-beat="guard-standoff"] .opening-cutscene,.stable-escape-cinematic[data-beat="guards-down"] .opening-cutscene,.stable-escape-cinematic[data-beat="horse-approach"] .opening-cutscene,.stable-escape-cinematic[data-beat="mount-horse"] .opening-cutscene,.stable-escape-cinematic[data-beat="ride-away"] .opening-cutscene{background:linear-gradient(180deg,rgba(10,15,17,.08),rgba(8,12,15,.18)),url('../assets/scene/jaska-stable-night-v1.png') center 66%/cover no-repeat}
.stable-escape-cinematic[data-beat="stable-reveal"] .opening-cutscene .chibi-actor{left:35%;height:72%;animation:chibi-stable-sneak .82s ease-out both}
.stable-escape-cinematic[data-beat="guard-alert"] .opening-cutscene .chibi-actor,.stable-escape-cinematic[data-beat="guard-standoff"] .opening-cutscene .chibi-actor{left:34%;height:70%;animation:chibi-guard-ready .65s ease-out both}
.stable-escape-cinematic[data-beat="guard-alert"] .opening-cutscene .patrol-guards,.stable-escape-cinematic[data-beat="guard-standoff"] .opening-cutscene .patrol-guards{display:block;left:auto;right:5%;bottom:1%;height:58%;width:42%;max-width:none;object-fit:contain;filter:drop-shadow(0 9px 12px rgba(0,0,0,.6));animation:guards-arrive .72s ease-out both}
.stable-escape-cinematic[data-beat="guard-standoff"] .opening-cutscene .chibi-actor{animation:chibi-standoff .56s ease-in-out infinite}
.stable-escape-cinematic[data-beat="guards-down"] .opening-cutscene .chibi-actor{left:34%;height:70%;animation:chibi-catch-breath .72s ease-out both}
.stable-escape-cinematic[data-beat="guards-down"] .opening-cutscene .patrol-guards{display:block;left:auto;right:5%;bottom:0;height:42%;width:42%;max-width:none;object-fit:contain;filter:grayscale(.55) brightness(.75);transform:rotate(4deg);opacity:.8}
.stable-escape-cinematic[data-beat="horse-approach"] .opening-cutscene .chibi-actor,.stable-escape-cinematic[data-beat="mount-horse"] .opening-cutscene .chibi-actor,.stable-escape-cinematic[data-beat="ride-away"] .opening-cutscene .chibi-actor{left:27%;height:64%;max-width:28%}
.stable-escape-cinematic[data-beat="horse-approach"] .opening-cutscene .cutscene-horse,.stable-escape-cinematic[data-beat="mount-horse"] .opening-cutscene .cutscene-horse{display:block;animation:horse-nervous 1.4s ease-in-out infinite}
.stable-escape-cinematic[data-beat="mount-horse"] .opening-cutscene .chibi-actor{animation:hero-mount .86s ease-out both}
.stable-escape-cinematic[data-beat="mount-horse"] .opening-cutscene .cutscene-horse{right:13%;height:63%;animation:horse-startle .65s ease-out both}
.stable-escape-cinematic[data-beat="ride-away"] .opening-cutscene{animation:stable-ride-scene 2.1s ease-in both}
.stable-escape-cinematic[data-beat="ride-away"] .opening-cutscene .cutscene-horse{display:block;right:27%;bottom:2%;height:68%;animation:horse-gallop-out 2.1s cubic-bezier(.3,.05,.75,.4) both}
.stable-escape-cinematic[data-beat="ride-away"] .opening-cutscene .chibi-actor{animation:hero-ride-out 2.1s cubic-bezier(.3,.05,.75,.4) both}
@keyframes chibi-wall-listen{0%,100%{transform:translateX(-50%)}45%{transform:translateX(-54%) translateY(8px) rotate(-7deg)}70%{transform:translateX(-50%) rotate(3deg)}}
@keyframes chibi-wall-windup{0%{transform:translateX(-50%)}55%{transform:translateX(-50%) translateY(8px) rotate(-9deg)}100%{transform:translateX(-50%) translateY(0)}}
@keyframes chibi-punch-wall{0%{transform:translateX(-50%) translateY(0)}38%{transform:translateX(-38%) translateY(1px) rotate(8deg)}65%{transform:translateX(-36%) translateY(0) rotate(4deg)}100%{transform:translateX(-50%)}}
@keyframes chibi-wall-recoil{0%{transform:translateX(-36%) rotate(4deg)}42%{transform:translateX(-58%) translateY(-5px) rotate(-10deg)}72%{transform:translateX(-46%) rotate(6deg)}100%{transform:translateX(-50%)}}
@keyframes wall-shake{0%,100%{transform:translate(0)}25%{transform:translate(-8px,3px)}50%{transform:translate(7px,-3px)}75%{transform:translate(-4px,2px)}}
@keyframes wall-hole-open{from{opacity:0;transform:scale(.2)}to{opacity:1;transform:scale(1)}}
@keyframes chibi-tunnel-run{0%{left:28%;transform:translate(-50%,0)}45%{left:43%;transform:translate(-50%,-6px) rotate(4deg)}100%{left:57%;transform:translate(-50%,0)}}
@keyframes chibi-stable-sneak{0%{left:57%;opacity:.4}100%{left:35%;opacity:1}}
@keyframes chibi-guard-ready{0%{transform:translateX(-50%) translateY(0)}35%{transform:translateX(-50%) translateY(-9px) rotate(-7deg)}100%{transform:translateX(-50%)}}
@keyframes chibi-standoff{0%,100%{transform:translateX(-50%) rotate(0)}50%{transform:translateX(calc(-50% - 3px)) rotate(-2deg)}}
@keyframes chibi-catch-breath{0%,100%{transform:translateX(-50%)}45%{transform:translateX(-50%) translateY(8px) rotate(4deg)}}
@keyframes horse-nervous{0%,100%{transform:translateX(0) rotate(0)}38%{transform:translateX(3px) rotate(-1deg)}70%{transform:translateX(-2px)}}
@keyframes horse-startle{0%,100%{transform:translateX(0)}32%{transform:translateX(-13px) rotate(-3deg)}70%{transform:translateX(7px)}}
@keyframes hero-mount{0%{transform:translateX(-50%) translateY(0)}45%{transform:translateX(10%) translateY(-50%) rotate(-12deg)}100%{transform:translateX(20%) translateY(-25%) rotate(2deg)}}
@keyframes stable-ride-scene{to{filter:brightness(.45);transform:scale(1.04)}}
@keyframes horse-gallop-out{0%{transform:translateX(0) translateY(0)}15%{transform:translateX(3%) translateY(-8px)}100%{transform:translateX(100vw) translateY(-8px)}}
@keyframes hero-ride-out{0%{transform:translateX(-50%)}100%{transform:translateX(100vw)}}
@media(max-width:820px){.stable-escape-cinematic .opening-cutscene .chibi-actor{height:66%;max-width:42%}.stable-escape-cinematic[data-beat="guard-alert"] .opening-cutscene .patrol-guards,.stable-escape-cinematic[data-beat="guard-standoff"] .opening-cutscene .patrol-guards{right:0;width:49%;height:50%}.stable-escape-cinematic[data-beat="horse-approach"] .opening-cutscene .cutscene-horse,.stable-escape-cinematic[data-beat="mount-horse"] .opening-cutscene .cutscene-horse{right:2%;max-width:58%}}

/* Battle guard: a readable sword-raise pose and a compact parry flash, never a full-body overlay. */
.battle-scene .ally-figure .hero-defense-pose{display:none;position:absolute;z-index:3;left:50%;bottom:0;height:88%;max-height:52vh;width:auto;max-width:94%;object-fit:contain;object-position:center bottom;transform:translateX(-50%);transform-origin:center bottom;pointer-events:none}
.battle-scene .ally-unit.defending .hero-idle-pose,.battle-scene .ally-unit.defending .hero-attack-pose{display:none}
.battle-scene .ally-unit.defending .hero-defense-pose{display:block;animation:hero-guard-raise .68s cubic-bezier(.18,.72,.2,1) both}
.battle-scene .ally-unit.guard-up .defense-aura{opacity:0;animation:none}
.battle-scene .ally-figure .defense-aura{z-index:4;left:59%;top:27%;bottom:auto;width:24%;height:34%;border:0;border-radius:0;clip-path:polygon(50% 0,94% 21%,100% 62%,69% 100%,22% 88%,0 50%,12% 17%);background:linear-gradient(135deg,rgba(238,255,255,.98),rgba(110,222,240,.54) 45%,rgba(78,139,213,.17));box-shadow:inset 0 0 0 2px rgba(232,255,255,.9);filter:drop-shadow(0 0 8px rgba(125,231,255,.9));transform:scale(.58) rotate(-12deg);opacity:0}
.battle-scene .ally-unit.defending .defense-aura{animation:parry-flash .52s cubic-bezier(.2,.76,.2,1) both}
.battle-scene .ally-unit.guard-impact .defense-aura{animation:parry-impact .4s cubic-bezier(.16,.72,.22,1) both}
.battle-scene .ally-unit.defending .ally-figure{animation:guard-body-brace .68s cubic-bezier(.2,.7,.2,1) both}
.battle-scene .ally-unit.guard-impact .ally-figure{animation:guard-body-impact .38s ease-out both}
.battle-scene.castle-stable-battle .ally-figure .hero-defense-pose{height:86%;max-height:52vh;max-width:96%}
@keyframes hero-guard-raise{0%{opacity:0;transform:translateX(-50%) translateY(12px) scale(.96)}24%{opacity:1}55%{transform:translateX(-50%) translateY(-3px) scale(1.025)}100%{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}
@keyframes guard-body-brace{0%,100%{translate:0 0}30%{translate:3px 4px}58%{translate:-2px -2px}}
@keyframes guard-body-impact{0%{translate:0 0}28%{translate:-12px 2px;rotate:-2deg}62%{translate:4px 0;rotate:1deg}100%{translate:0 0;rotate:0}}
@keyframes parry-flash{0%{opacity:0;transform:scale(.45) rotate(-12deg)}28%{opacity:.96;transform:scale(1.08) rotate(4deg)}68%{opacity:.76;transform:scale(.96) rotate(0)}100%{opacity:0;transform:scale(1.28) rotate(8deg)}}
@keyframes parry-impact{0%{opacity:0;transform:scale(.62) rotate(-16deg)}32%{opacity:1;transform:scale(1.12) rotate(4deg)}100%{opacity:0;transform:scale(1.38) rotate(12deg)}}
@media(max-width:820px){.battle-scene .ally-figure .hero-defense-pose{height:76%;max-height:38vh}.battle-scene.castle-stable-battle .ally-figure .hero-defense-pose{height:76%;max-height:38vh}}

/* 1-5: horseback escape into a quiet woodland camp, then a sharp call from the dark. */
.forest-camp-cinematic .dialog-bg{background:linear-gradient(180deg,rgba(5,11,20,.12),rgba(5,10,16,.34)),url('../assets/scene/forest-camp-night-v1.png') center 54%/cover no-repeat}
.forest-camp-cinematic .dialog-sprite{display:none!important}
.forest-camp-cinematic .opening-cutscene:not([hidden]){display:block;position:absolute;z-index:2;top:4%;left:50%;width:min(1480px,94vw);height:min(68vh,780px);transform:translateX(-50%);overflow:hidden;border:1px solid rgba(222,231,238,.56);border-radius:14px;background:linear-gradient(180deg,rgba(5,10,18,.04),rgba(5,10,16,.14)),url('../assets/scene/forest-camp-night-v1.png') center 58%/cover no-repeat;box-shadow:0 22px 65px rgba(0,0,0,.48);isolation:isolate}
.forest-camp-cinematic .opening-cutscene .chibi-actor{position:absolute;z-index:3;left:43%;bottom:1%;height:61%;width:auto;max-width:35%;object-fit:contain;object-position:center bottom;opacity:1;filter:drop-shadow(0 12px 12px rgba(0,0,0,.45));transform:translateX(-50%)}
.forest-camp-cinematic .opening-cutscene .cutscene-horse{display:none;position:absolute;z-index:2;right:5%;bottom:2%;left:auto;height:47%;width:auto;max-width:38%;object-fit:contain;object-position:center bottom;opacity:.96;filter:drop-shadow(0 9px 10px rgba(0,0,0,.5))}
.forest-camp-cinematic .opening-cutscene .mounted-rider{display:none;position:absolute;z-index:3;left:15%;bottom:0;width:72%;height:auto;max-height:90%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 12px 12px rgba(0,0,0,.48))}
.forest-camp-cinematic[data-beat="road-ride"] .opening-cutscene .mounted-rider,.forest-camp-cinematic[data-beat="road-bump"] .opening-cutscene .mounted-rider,.forest-camp-cinematic[data-beat="forest-arrive"] .opening-cutscene .mounted-rider{display:block}
.forest-camp-cinematic[data-beat="road-ride"] .opening-cutscene .mounted-rider{animation:forest-rider-travel 1.1s ease-in-out infinite alternate}
.forest-camp-cinematic[data-beat="road-bump"] .opening-cutscene .mounted-rider{animation:forest-rider-bump .55s ease-in-out both}
.forest-camp-cinematic[data-beat="road-ride"] .opening-cutscene .chibi-actor,.forest-camp-cinematic[data-beat="road-bump"] .opening-cutscene .chibi-actor,.forest-camp-cinematic[data-beat="forest-arrive"] .opening-cutscene .chibi-actor{display:none}
.forest-camp-cinematic[data-beat="camp-arrive"] .opening-cutscene .chibi-actor{left:38%;height:58%;animation:camp-dismount .7s ease-out both}
.forest-camp-cinematic[data-beat="campfire"] .opening-cutscene .chibi-actor,.forest-camp-cinematic[data-beat="horse-snack"] .opening-cutscene .chibi-actor,.forest-camp-cinematic[data-beat="rest"] .opening-cutscene .chibi-actor,.forest-camp-cinematic[data-beat="system-chat"] .opening-cutscene .chibi-actor{left:40%;height:64%;animation:camp-sit-breathe 2.2s ease-in-out infinite}
.forest-camp-cinematic[data-beat="horse-snort"] .opening-cutscene .chibi-actor{left:40%;height:60%;animation:camp-startle .52s ease-out both}
.forest-camp-cinematic[data-beat="horse-snort"] .opening-cutscene .cutscene-horse,.forest-camp-cinematic[data-beat="camp-arrive"] .opening-cutscene .cutscene-horse,.forest-camp-cinematic[data-beat="campfire"] .opening-cutscene .cutscene-horse,.forest-camp-cinematic[data-beat="horse-snack"] .opening-cutscene .cutscene-horse,.forest-camp-cinematic[data-beat="rest"] .opening-cutscene .cutscene-horse,.forest-camp-cinematic[data-beat="system-chat"] .opening-cutscene .cutscene-horse,.forest-camp-cinematic[data-beat="help-call"] .opening-cutscene .cutscene-horse{display:block}
.forest-camp-cinematic[data-beat="horse-snack"] .opening-cutscene .cutscene-horse{animation:horse-sniff-bag 1.05s ease-in-out infinite alternate}
.forest-camp-cinematic[data-beat="help-call"] .opening-cutscene .chibi-actor{left:40%;height:64%;animation:camp-hear-call .6s cubic-bezier(.15,.75,.2,1) both}
.forest-camp-cinematic[data-beat="forest-call-end"] .opening-cutscene .chibi-actor{left:45%;height:60%;animation:camp-step-into-woods 1s ease-in both}
.forest-camp-cinematic[data-beat="system-chat"] .opening-cutscene .system-popup{display:block;left:auto;right:9%;top:14%;width:min(340px,36%);animation:system-window-enter .42s ease-out both}
.forest-camp-cinematic[data-beat="help-call"] .opening-cutscene::after{content:"";position:absolute;z-index:1;inset:0;pointer-events:none;background:radial-gradient(ellipse at 78% 56%,transparent 0 15%,rgba(4,8,15,.2) 78%);animation:forest-call-shadow 1.2s ease-in-out infinite alternate}
.forest-camp-cinematic .opening-cutscene .chibi-lingling{display:none;position:absolute;z-index:3;left:66%;bottom:0;height:56%;width:auto;max-width:31%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 10px 12px rgba(0,0,0,.5));transform:translateX(-50%);transform-origin:50% 92%}
.forest-camp-cinematic[data-beat="pack-approach"] .opening-cutscene .chibi-actor{left:40%;height:60%;animation:camp-startle .58s ease-out both}
.forest-camp-cinematic[data-beat="pack-approach"] .opening-cutscene .cutscene-beast{display:block;opacity:.98;left:auto;right:3%;height:54%;max-width:34%;animation:beast-from-wheat .72s cubic-bezier(.15,.75,.2,1) both}
.forest-camp-cinematic .opening-cutscene .cutscene-beast-echo{display:none!important}
.forest-camp-cinematic[data-beat="pack-approach"] .opening-cutscene .cutscene-beast-echo{display:block!important;left:0;right:auto;height:42%;max-width:28%;opacity:.88;transform:scaleX(-1);animation:pack-beast-from-left .82s .12s cubic-bezier(.15,.75,.2,1) both}
.forest-camp-cinematic[data-beat="camp-chat"] .opening-cutscene .chibi-actor,.forest-camp-cinematic[data-beat="camp-praise"] .opening-cutscene .chibi-actor,.forest-camp-cinematic[data-beat="home-wish"] .opening-cutscene .chibi-actor,.forest-camp-cinematic[data-beat="promise-help"] .opening-cutscene .chibi-actor{left:44%;height:59%;animation:camp-sit-breathe 2.2s ease-in-out infinite}
.forest-camp-cinematic[data-beat="camp-chat"] .opening-cutscene .chibi-lingling,.forest-camp-cinematic[data-beat="camp-praise"] .opening-cutscene .chibi-lingling,.forest-camp-cinematic[data-beat="home-wish"] .opening-cutscene .chibi-lingling,.forest-camp-cinematic[data-beat="promise-help"] .opening-cutscene .chibi-lingling{display:block;animation:lingling-camp-breathe 2.1s ease-in-out infinite}
.forest-camp-cinematic[data-beat="camp-praise"] .opening-cutscene .chibi-lingling{animation:lingling-awed .68s ease-out both}
.forest-camp-cinematic[data-beat="home-wish"] .opening-cutscene .chibi-actor{animation:camp-listen 1.1s ease-in-out infinite}
.forest-camp-cinematic[data-beat="home-wish"] .opening-cutscene .chibi-lingling{animation:lingling-worry 1.6s ease-in-out infinite}
.forest-camp-cinematic[data-beat="promise-help"] .opening-cutscene .chibi-actor{animation:camp-promise-nod .72s ease-in-out both}
.forest-camp-cinematic[data-beat="promise-help"] .opening-cutscene .chibi-lingling{animation:lingling-relief .8s ease-out both}
.forest-camp-cinematic[data-beat="camp-chat"] .opening-cutscene::before,.forest-camp-cinematic[data-beat="camp-praise"] .opening-cutscene::before,.forest-camp-cinematic[data-beat="home-wish"] .opening-cutscene::before,.forest-camp-cinematic[data-beat="promise-help"] .opening-cutscene::before{content:"";position:absolute;z-index:1;left:12%;bottom:2%;width:27%;height:36%;pointer-events:none;background:radial-gradient(ellipse,rgba(255,164,73,.28),rgba(255,143,50,.08) 46%,transparent 73%);animation:fire-glow-pulse 1.4s ease-in-out infinite alternate}
.forest-camp-cinematic[data-beat="camp-chat"] .opening-cutscene .cutscene-horse,.forest-camp-cinematic[data-beat="camp-praise"] .opening-cutscene .cutscene-horse,.forest-camp-cinematic[data-beat="home-wish"] .opening-cutscene .cutscene-horse,.forest-camp-cinematic[data-beat="promise-help"] .opening-cutscene .cutscene-horse{display:none}
.forest-camp-cinematic[data-beat="pack-approach"] .opening-cutscene .cutscene-label,.forest-camp-cinematic[data-beat="camp-chat"] .opening-cutscene .cutscene-label,.forest-camp-cinematic[data-beat="camp-praise"] .opening-cutscene .cutscene-label,.forest-camp-cinematic[data-beat="home-wish"] .opening-cutscene .cutscene-label,.forest-camp-cinematic[data-beat="promise-help"] .opening-cutscene .cutscene-label{display:block}
@keyframes lingling-camp-breathe{0%,100%{transform:translateX(-50%) translateY(0) rotate(0)}50%{transform:translateX(-50%) translateY(-4px) rotate(1deg)}}
@keyframes lingling-awed{0%,100%{transform:translateX(-50%) translateY(0) rotate(0)}28%{transform:translateX(-50%) translateY(-12px) rotate(-5deg)}56%{transform:translateX(-50%) translateY(1px) rotate(4deg)}78%{transform:translateX(-50%) translateY(-4px) rotate(-2deg)}}
@keyframes lingling-worry{0%,100%{transform:translateX(-50%) translateY(0) rotate(0)}45%{transform:translateX(-50%) translateY(2px) rotate(-3deg)}75%{transform:translateX(-50%) translateY(0) rotate(-1deg)}}
@keyframes lingling-relief{0%{transform:translateX(-50%) translateY(2px) scale(.98)}45%{transform:translateX(-50%) translateY(-10px) scale(1.035)}75%{transform:translateX(-50%) translateY(2px) scale(.99)}100%{transform:translateX(-50%) translateY(0) scale(1)}}
@keyframes camp-listen{0%,100%{transform:translateX(-50%) translateY(0) rotate(0)}45%{transform:translateX(-50%) translateY(-2px) rotate(-2deg)}}
@keyframes camp-promise-nod{0%,100%{transform:translateX(-50%) translateY(0)}40%{transform:translateX(-50%) translateY(-5px) rotate(-4deg)}75%{transform:translateX(-50%) translateY(1px) rotate(2deg)}}
@keyframes fire-glow-pulse{from{opacity:.42;transform:scale(.92)}to{opacity:1;transform:scale(1.08)}}
@keyframes pack-beast-from-left{0%{opacity:0;transform:translate(-18%,12%) scale(.76) scaleX(-1)}48%{opacity:1}100%{opacity:.88;transform:translate(0,0) scale(1) scaleX(-1)}}
@media(max-width:820px){.forest-camp-cinematic .opening-cutscene .chibi-lingling{left:69%;height:49%;max-width:38%}.forest-camp-cinematic[data-beat="camp-chat"] .opening-cutscene .chibi-actor,.forest-camp-cinematic[data-beat="home-wish"] .opening-cutscene .chibi-actor,.forest-camp-cinematic[data-beat="promise-help"] .opening-cutscene .chibi-actor{left:38%;height:52%}.forest-camp-cinematic[data-beat="pack-approach"] .opening-cutscene .cutscene-beast{height:40%;max-width:48%}.forest-camp-cinematic[data-beat="pack-approach"] .opening-cutscene .cutscene-beast-echo{height:32%;max-width:38%}}

/* 主界面菜单向视口中心微调；窄屏布局仍保持原位。 */
@media(min-width:821px){body.home-active .home-menu{left:clamp(-64px,-4vw,-28px)}}
@media(max-width:820px){body.home-active .home-menu{left:0}}
.forest-camp-cinematic .cutscene-label{position:absolute;z-index:5;top:14px;left:17px;padding:7px 11px;border:1px solid rgba(230,238,245,.42);border-radius:5px;background:rgba(8,15,22,.68);color:#f5e5bc;font-size:12px;letter-spacing:.12em;text-shadow:0 1px 5px #000}
@keyframes forest-rider-travel{from{transform:translateY(0)}to{transform:translateY(-8px)}}
@keyframes forest-rider-bump{0%,100%{transform:translateY(0) rotate(0)}30%{transform:translateY(-20px) rotate(-2deg)}58%{transform:translateY(4px) rotate(2deg)}78%{transform:translateY(-4px)}}
@keyframes camp-dismount{0%{opacity:0;transform:translate(-50%,-18px)}55%{opacity:1;transform:translate(-50%,5px)}100%{transform:translate(-50%,0)}}
@keyframes camp-sit-breathe{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(-4px)}}
@keyframes camp-startle{0%,100%{transform:translateX(-50%) rotate(0)}26%{transform:translateX(-50%) translateY(-7px) rotate(-5deg)}58%{transform:translateX(-50%) rotate(3deg)}}
@keyframes camp-hear-call{0%{transform:translateX(-50%) rotate(0)}22%{transform:translateX(-50%) translateY(-12px) rotate(-6deg)}55%{transform:translateX(-50%) translateY(2px) rotate(3deg)}100%{transform:translateX(-50%) rotate(0)}}
@keyframes horse-sniff-bag{from{transform:translateY(0) rotate(0)}to{transform:translateY(7px) rotate(-2deg)}}
.forest-camp-battle .battle-bg{background:linear-gradient(180deg,rgba(8,13,29,.14),rgba(5,10,18,.72)),url('../assets/scene/forest-camp-night-v1.png') center 59%/cover no-repeat}
@keyframes camp-step-into-woods{0%{transform:translateX(-50%);opacity:1}100%{transform:translateX(18%);opacity:.25}}
@keyframes forest-call-shadow{from{opacity:.22}to{opacity:.76}}
@media(max-width:820px){.forest-camp-cinematic .opening-cutscene:not([hidden]){top:5%;width:96vw;height:55vh}.forest-camp-cinematic .opening-cutscene .chibi-actor{height:53%;max-width:48%}.forest-camp-cinematic .opening-cutscene .cutscene-horse{height:39%;max-width:48%;right:0}.forest-camp-cinematic .opening-cutscene .mounted-rider{left:4%;width:92%;max-height:82%}.forest-camp-cinematic[data-beat="system-chat"] .opening-cutscene .system-popup{right:3%;top:8%;width:48%;padding:10px}}

/* 1-4 mount sequence: one joined rider-and-horse sprite keeps the seat and legs aligned. */
.stable-escape-cinematic .opening-cutscene .mounted-rider{display:none;position:absolute;z-index:3;left:27%;bottom:0;width:72%;height:auto;max-height:88%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 12px 14px rgba(0,0,0,.55));transform-origin:center bottom}
.stable-escape-cinematic[data-beat="mount-horse"] .opening-cutscene .chibi-actor,.stable-escape-cinematic[data-beat="mount-horse"] .opening-cutscene .cutscene-horse,.stable-escape-cinematic[data-beat="ride-away"] .opening-cutscene .chibi-actor,.stable-escape-cinematic[data-beat="ride-away"] .opening-cutscene .cutscene-horse{display:none}
.stable-escape-cinematic[data-beat="mount-horse"] .opening-cutscene .mounted-rider,.stable-escape-cinematic[data-beat="ride-away"] .opening-cutscene .mounted-rider{display:block}
.stable-escape-cinematic[data-beat="mount-horse"] .opening-cutscene .mounted-rider{left:28%;animation:rider-mount-settle .72s cubic-bezier(.16,.7,.22,1) both}
.stable-escape-cinematic[data-beat="ride-away"] .opening-cutscene .mounted-rider{left:25%;animation:rider-gallop-out .95s cubic-bezier(.2,.7,.2,1) both, rider-gallop-bob .42s ease-in-out .95s infinite alternate}
@keyframes rider-mount-settle{0%{opacity:0;transform:translate(0,16px) scale(.97)}22%{opacity:1}62%{transform:translate(0,-7px) scale(1.015)}100%{opacity:1;transform:translate(0,0) scale(1)}}
@keyframes rider-gallop-out{0%{transform:translateX(-7%) translateY(0) scale(.96)}58%{transform:translateX(7%) translateY(-5px) scale(1.02)}100%{transform:translateX(12%) translateY(0) scale(1.035)}}
@keyframes rider-gallop-bob{from{transform:translateX(12%) translateY(0) scale(1.035)}to{transform:translateX(12%) translateY(-7px) scale(1.035)}}
@media(max-width:820px){.stable-escape-cinematic[data-beat="mount-horse"] .opening-cutscene .mounted-rider,.stable-escape-cinematic[data-beat="ride-away"] .opening-cutscene .mounted-rider{left:8%;width:88%;max-height:84%}}

/* Foundation card animation: focus and recovery effects lift around the character. */
.battle-scene .ally-figure .buff-aura{position:absolute;z-index:2;left:50%;bottom:2%;width:86%;height:82%;transform:translateX(-50%);opacity:0;pointer-events:none;filter:drop-shadow(0 0 12px rgba(132,230,210,.55))}
.battle-scene .ally-figure .buff-aura::before,.battle-scene .ally-figure .buff-aura::after{content:"";position:absolute;bottom:4%;width:3px;height:48%;border-radius:8px;background:linear-gradient(0deg,transparent,rgba(170,255,224,.95),rgba(255,226,143,.82),transparent);box-shadow:0 -22px 0 -1px rgba(172,246,237,.84),0 -47px 0 -1px rgba(243,224,156,.7)}
.battle-scene .ally-figure .buff-aura::before{left:24%;transform:rotate(-12deg)}
.battle-scene .ally-figure .buff-aura::after{right:24%;transform:rotate(12deg);animation-delay:.12s}
.battle-scene .ally-unit.buffing .ally-figure .buff-aura{animation:buff-rise .78s ease-out both}
.battle-scene .ally-unit.buffing .ally-figure .hero-idle-pose{animation:hero-power-cast .72s cubic-bezier(.2,.72,.2,1) both}
.battle-scene .ally-unit.buffing .ally-figure{animation:power-body-lift .72s ease-out both}
.battle-scene.castle-stable-battle .ally-unit.attack-draw .hero-idle-pose{animation:draw-sword-beat .17s ease-out both}
.battle-scene.castle-stable-battle .ally-unit.attack-slash .hero-attack-pose{display:block;animation:attack-pose-cut .36s cubic-bezier(.2,.72,.25,1) both}
@keyframes buff-rise{0%{opacity:0;transform:translateX(-50%) translateY(10px) scale(.8)}24%{opacity:.88}72%{opacity:.65;transform:translateX(-50%) translateY(-8px) scale(1.02)}100%{opacity:0;transform:translateX(-50%) translateY(-14px) scale(1.05)}}
@keyframes hero-power-cast{0%,100%{transform:translateX(-50%) translateY(0)}36%{transform:translateX(-50%) translateY(-7px) scale(1.015)}68%{transform:translateX(-50%) translateY(-2px)}}
@keyframes power-body-lift{0%,100%{filter:none}38%{filter:drop-shadow(0 0 14px rgba(163,242,214,.45))}}

/* 1-6 first-meeting CG reveal */
.forest-meeting-cinematic .dialog-bg{background:linear-gradient(180deg,rgba(5,11,20,.18),rgba(5,10,16,.5)),url('../assets/scene/forest-camp-night-v1.png') center 54%/cover no-repeat}
.forest-meeting-cinematic .opening-cutscene:not([hidden]){display:block;position:absolute;z-index:2;top:4%;left:50%;width:min(1480px,94vw);height:min(68vh,780px);transform:translateX(-50%);overflow:hidden;border:1px solid rgba(222,231,238,.56);border-radius:14px;background:linear-gradient(180deg,rgba(5,10,18,.08),rgba(5,10,16,.2)),url('../assets/scene/forest-camp-night-v1.png') center 58%/cover no-repeat;box-shadow:0 22px 65px rgba(0,0,0,.48);isolation:isolate}
.forest-meeting-cinematic .opening-cutscene .chibi-actor{position:absolute;z-index:3;left:54%;bottom:1%;height:69%;width:auto;max-width:35%;object-fit:contain;object-position:center bottom;opacity:1;filter:drop-shadow(0 12px 12px rgba(0,0,0,.45));transform:translateX(-50%)}
.first-meeting-cg{display:none;position:absolute;z-index:2;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 43%;opacity:0}
.forest-meeting-cinematic .opening-cutscene{display:none!important}
.forest-meeting-cinematic[data-beat="lingling-cg"] .first-meeting-cg,.forest-meeting-cinematic[data-beat="lingling-cg-plea"] .first-meeting-cg,.forest-meeting-cinematic[data-beat="forest-noise"] .first-meeting-cg,.forest-meeting-cinematic[data-beat="beast-appears"] .first-meeting-cg{display:block;animation:first-meeting-reveal .85s cubic-bezier(.2,.75,.25,1) both}
.forest-meeting-cinematic[data-beat="forest-noise"] .first-meeting-cg{animation:first-meeting-reveal .85s cubic-bezier(.2,.75,.25,1) both,first-meeting-shake .32s 1.1s ease-out}
.meeting-beast{display:none;position:absolute;z-index:2;right:1.5%;bottom:21%;width:min(38vw,560px);height:53%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 12px 22px rgba(0,0,0,.78));transform-origin:center bottom}
.forest-meeting-cinematic[data-beat="beast-appears"] .first-meeting-cg{filter:brightness(.74) saturate(.85)}
.forest-meeting-cinematic[data-beat="beast-appears"] .meeting-beast{display:block;animation:meeting-beast-reveal .9s cubic-bezier(.12,.78,.2,1) both}
.forest-meeting-cinematic[data-beat^="lingling-cg"] .dialog-box,.forest-meeting-cinematic[data-beat="forest-noise"] .dialog-box,.forest-meeting-cinematic[data-beat="beast-appears"] .dialog-box{background:linear-gradient(110deg,rgba(12,23,28,.96),rgba(12,23,28,.84));border-color:rgba(229,211,176,.72);box-shadow:0 18px 70px rgba(0,0,0,.55)}
@keyframes first-meeting-reveal{0%{opacity:0;transform:scale(1.035);filter:brightness(.72)}100%{opacity:1;transform:scale(1);filter:brightness(1)}}
@keyframes first-meeting-shake{0%,100%{transform:scale(1)}20%,60%{transform:translateX(-5px) scale(1.008)}40%,80%{transform:translateX(5px) scale(1.008)}}
@keyframes meeting-beast-reveal{0%{opacity:0;transform:translate(10%,12%) scale(.86)}55%{opacity:1;transform:translate(-2%,-1%) scale(1.035)}76%{transform:translate(1%,1%) scale(.99)}100%{opacity:1;transform:translate(0,0) scale(1)}}
@media(max-width:820px){.forest-meeting-cinematic .opening-cutscene:not([hidden]){top:8%;width:94vw;height:50vh}.forest-meeting-cinematic .opening-cutscene .chibi-actor{height:64%;max-width:48%}.forest-meeting-cinematic .first-meeting-cg{object-position:center 42%}.meeting-beast{right:0;bottom:23%;width:54vw;height:42%}.forest-meeting-cinematic .dialog-box{bottom:20px;width:94vw;min-height:160px;padding:18px 20px 28px}}

/* 信仰商城、重复群友升星、同行伙伴与扭蛋召唤 */
.hres.resource-devotion .hres-ico,.hres.resource-devotion .hres-body b{color:#8a62b6}
.idle-page{overflow-y:auto;scrollbar-gutter:stable;padding:2px 3px 16px}
.idle-top{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr)) auto;gap:8px}
.idle-top .ibox,.idle-top .ibox.grow{min-width:0;padding:10px 12px}
.idle-top .ibox-v b{font-size:18px}.idle-top .devotion-box .ibox-v b{color:#8758ad}
.idle-top>#btnGroupUp{align-self:stretch;min-width:135px}
.idle-body{flex:none;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(270px,.65fr);gap:10px}
.member-panel{min-width:0}.member-panel .member-grid{grid-template-columns:repeat(auto-fill,minmax(310px,1fr));max-height:370px;overflow-y:auto;align-content:start}
.mcard{background:linear-gradient(145deg,#fff,#f4f8f3);border-color:#dfe8dd;color:#284436;box-shadow:0 4px 12px rgba(40,75,52,.07)}
.mc-name{color:#284436}.mc-title,.mc-tend,.mc-row{color:#687e70}.mc-av.portrait,.partner-avatar.portrait,.summon-member-avatar img{padding:0;background:#e6eee7}.mc-av.portrait img,.partner-avatar.portrait img,.summon-member-avatar img{width:100%;height:100%;object-fit:cover;object-position:center 22%;border-radius:inherit}
.member-rarity{font-size:9px;color:#82978a;border:1px solid #d6e2d6;border-radius:4px;padding:1px 4px}.member-rarity.ssr{color:#a85b22;background:#fff1de;border-color:#e9c18c}
.mc-stars{display:flex;align-items:center;justify-content:space-between;color:#c28c2c;font-size:12px}.mc-stars span{font-size:10px;color:#708478}
.mc-actions{flex-wrap:wrap}.mc-actions button{min-height:29px;padding:4px 8px;border-radius:6px;font-size:10px}
.mc-role,.mc-deploy{background:#eef6ef;color:#396d4c;border:1px solid #caddc9}.mc-role.active{background:#397e5b;color:#fff;border-color:#397e5b}.mc-star-up{background:#fff7e8;color:#996c20;border:1px solid #e6cf9f}.mc-star-up:disabled{opacity:.48;cursor:not-allowed}
.member-panel .mc-actions .mc-train{background:#f1f6f0;border:1px solid #d2e2d0;color:#47764f}
.idle-loot-panel{min-width:0}.idle-drop-list{padding:10px 12px;display:flex;flex-direction:column;gap:7px;min-height:210px}.idle-drop-row{display:grid;grid-template-columns:20px 68px minmax(0,1fr);align-items:center;gap:7px;padding:8px 9px;border:1px solid #e5ece3;border-radius:8px;background:#fbfdf9;font-size:11px}.idle-drop-row>span{color:#bb934d}.idle-drop-row>b{color:#3f7654}.idle-drop-row>small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#566d5e;font-size:11px}.idle-drop-empty{margin:auto;color:#708579;font-size:12px;text-align:center;padding:25px 8px}.reward-explainer{padding:0 12px 12px;color:#596f60;line-height:1.6;font-size:11px}
.faith-shop-panel{flex:none}.faith-shop-panel .panel-head{background:linear-gradient(100deg,#fbf8ff,#fff)}.faith-balance{color:#7f56a3;background:#f5effb;border:1px solid #e6d8f2;border-radius:8px;padding:7px 12px;font-size:12px;white-space:nowrap}.faith-balance b{font-size:17px}.faith-shop-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(205px,1fr));gap:9px;padding:11px}
.faith-product{display:flex;flex-direction:column;gap:9px;padding:11px;border:1px solid #e5e0ec;border-radius:10px;background:linear-gradient(145deg,#fff,#faf8fc);box-shadow:0 4px 12px rgba(65,43,83,.05)}.faith-product-head{display:flex;align-items:center;gap:9px}.faith-item-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:9px;color:var(--qc);background:color-mix(in srgb,var(--qc) 12%,white);font-size:19px}.faith-product-head>div{display:grid;gap:2px;min-width:0}.faith-product-head small{color:#8a7899;font-size:10px}.faith-product-head b{color:#3e3349;font-size:13px}.faith-product-head em{margin-left:auto;color:#78897a;font-size:9px;font-style:normal;white-space:nowrap}.faith-product p{flex:1;min-height:38px;margin:0;color:#5f5866;font-size:10px;line-height:1.5}.faith-buy{display:flex;justify-content:space-between;align-items:center;padding:7px 10px;border:1px solid #d7c6e8;border-radius:7px;background:#f5effb;color:#70508e;font-size:11px}.faith-buy:hover:not(:disabled){background:#ede1f8}.faith-buy b{font-size:12px}.faith-buy:disabled{opacity:.46;cursor:not-allowed}
.partner-page{flex:1;min-height:0;display:flex;flex-direction:column;gap:12px;overflow-y:auto;padding:2px 3px 16px}.partner-banner{position:relative;flex:none;min-height:140px;padding:23px 28px;border:1px solid #dfe9df;border-radius:14px;background:linear-gradient(110deg,rgba(21,52,49,.88),rgba(25,63,60,.56)),url('../assets/scene/moon-curtain-lounge.webp') center 52%/cover;color:#fff;box-shadow:0 10px 24px rgba(31,65,49,.12)}.partner-banner>span{font-size:10px;letter-spacing:.2em;color:#d5e8d5}.partner-banner h1{margin:5px 0;font-size:27px}.partner-banner p{max-width:700px;color:#e5eee6;font-size:12px;line-height:1.65}.partner-team-panel,.partner-roster-panel{flex:none}.partner-power{color:#577862;font-size:11px}.partner-slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:12px}.partner-slot,.partner-roster-card{display:flex;align-items:center;gap:12px;min-height:86px;padding:12px;border:1px solid #e1e9e0;border-radius:10px;background:linear-gradient(140deg,#fff,#f5f9f4)}.partner-slot.empty{justify-content:center;flex-direction:column;gap:3px;background:#f8faf7;color:#839487;border-style:dashed}.partner-slot.empty>span{font-size:10px;color:#ac9864}.partner-slot.empty>b{font-size:13px;color:#627968}.partner-slot.empty>small{font-size:10px}.partner-avatar{display:grid;place-items:center;width:54px;height:54px;flex:none;overflow:hidden;border-radius:11px;background:var(--c,#e5eee4);color:#396749;font-size:20px}.partner-copy{display:grid;gap:3px;min-width:0}.partner-copy>small{font-size:10px;color:#9a783c}.partner-copy>b{font-size:15px;color:#304c3b}.partner-copy>span{font-size:10px;color:#66796c}.partner-slot>button,.partner-roster-card>button{margin-left:auto;padding:6px 10px;border:1px solid #d5e2d4;border-radius:6px;background:#f5f9f4;color:#4d7656;font-size:10px;white-space:nowrap}.partner-slot>button:hover,.partner-roster-card>button:hover{background:#eaf3e9}.partner-roster{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:9px;padding:12px}.partner-roster-card.active{border-color:#9bc5a0;box-shadow:0 0 0 2px rgba(91,150,93,.1)}.partner-roster-card>button.active{background:#477e58;color:#fff}.partner-empty{grid-column:1/-1;padding:25px;text-align:center;border:1px dashed #d7e3d5;border-radius:9px;color:#687d6d;background:#f8fbf7;font-size:12px;line-height:1.7}
.summon-featured-banner{position:relative;flex:none;min-height:315px;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(260px,.75fr);overflow:hidden;border:1px solid rgba(245,216,156,.8);border-radius:15px;background:radial-gradient(ellipse at 78% 42%,rgba(255,173,89,.28),transparent 35%),linear-gradient(112deg,#20273b,#35324b 60%,#5c3b37);box-shadow:0 12px 30px rgba(58,39,43,.18);color:#fff}.summon-featured-copy{position:relative;z-index:2;align-self:center;padding:24px 30px}.summon-featured-copy>span{color:#f6dcae;font-size:10px;letter-spacing:.2em}.summon-featured-copy h1{margin:6px 0;font-size:29px;color:#fff}.summon-featured-copy p{max-width:560px;color:#e4e4e8;font-size:12px;line-height:1.7}.summon-rates{display:flex;align-items:baseline;gap:12px;margin:13px 0;color:#f4d48e}.summon-rates b{font-size:17px}.summon-rates span{font-size:10px;color:#ded2bb}.summon-balance{margin:8px 0 12px;color:#f5e1b3;font-size:12px}.summon-balance>b{font-size:22px}.summon-balance small{font-size:10px;color:#ddd4c5}.summon-balance strong{color:#f0dbad}.summon-actions{display:flex;gap:9px;flex-wrap:wrap}.summon-featured-art{position:relative;display:grid;place-items:center;min-width:0;overflow:hidden}.summon-featured-art>img{position:relative;z-index:1;height:300px;max-width:100%;object-fit:contain;object-position:center 24%;filter:drop-shadow(0 8px 24px rgba(255,171,80,.55));animation:zero-zero-float 4s ease-in-out infinite}.featured-orbit{position:absolute;width:220px;height:220px;border:1px solid rgba(255,219,156,.4);border-radius:50%;box-shadow:0 0 38px rgba(255,175,99,.18),inset 0 0 28px rgba(255,203,139,.12);animation:orbit-turn 18s linear infinite}.featured-orbit.orbit-two{width:275px;height:275px;border-color:rgba(205,189,255,.23);animation-direction:reverse}.featured-nameplate{position:absolute;z-index:2;right:12px;bottom:12px;display:grid;gap:2px;padding:8px 12px;border:1px solid rgba(250,225,180,.5);border-radius:8px;background:rgba(26,28,38,.82);backdrop-filter:blur(6px)}.featured-nameplate small{color:#f5cc7b;font-size:9px}.featured-nameplate b{color:#fff;font-size:16px}.featured-nameplate span{color:#e5d9c4;font-size:9px}.summon-guarantee{padding:6px 9px;border-radius:6px;background:#fff6e3;color:#80602a;font-size:10px}.summon-member-avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit}.summon-result-card.ssr{border-color:#e8bf79;background:linear-gradient(150deg,#fff8ea,#fff)}.summon-result-avatar img{width:100%;height:100%;object-fit:cover;object-position:center 20%;border-radius:inherit}.summon-pity-note{margin:8px 0 0;text-align:center;color:#876b39;font-size:11px}
.summon-machine-result{min-height:280px;display:grid;place-items:center}.gacha-machine{display:grid;justify-items:center;gap:15px}.machine-window{position:relative;display:grid;place-items:center;width:150px;height:150px;border:8px solid #e7d5a5;border-radius:50%;background:radial-gradient(circle,#fff7d9,#b76f59 63%,#40394d 66%);box-shadow:0 0 0 10px #38394a,0 0 45px rgba(243,177,97,.55);overflow:hidden}.gacha-machine.rolling .machine-window{animation:capsule-shake .34s ease-in-out infinite alternate}.capsule{display:grid;place-items:center;width:76px;height:76px;border-radius:50%;border:3px solid #fff1cf;background:linear-gradient(135deg,#f9d785 0 49%,#df7758 50%);color:#fff;font-size:29px;box-shadow:0 7px 18px rgba(44,31,39,.32)}.gacha-machine.rolling .capsule{animation:capsule-bounce .5s ease-in-out infinite alternate}.capsule-shine{position:absolute;inset:15px;border-radius:50%;background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.6),transparent 70%);animation:capsule-shine 1s linear infinite}.machine-base{padding:7px 19px;border-radius:6px;background:#343644;color:#f4dbac;font-size:12px;letter-spacing:.15em}.gacha-machine p{color:#75664d;font-size:12px}.summon-result-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(116px,1fr));gap:9px}.summon-result-card{min-height:126px}.summon-result-card strong{color:#315b68}.summon-result-card small{line-height:1.45}.summon-reveal .summon-result-note{line-height:1.6;text-align:center;color:#687a6d}
@keyframes zero-zero-float{0%,100%{transform:translateY(2px)}50%{transform:translateY(-8px)}}@keyframes orbit-turn{to{transform:rotate(360deg)}}@keyframes capsule-shake{from{transform:rotate(-4deg) scale(1)}to{transform:rotate(4deg) scale(1.04)}}@keyframes capsule-bounce{from{transform:translateY(-9px) rotate(-10deg)}to{transform:translateY(8px) rotate(11deg)}}@keyframes capsule-shine{to{transform:rotate(360deg)}}
.partner-bonus-summary{margin-top:10px;padding:8px 10px;border-radius:7px;background:#f2f7f0;color:#43724d;font-size:11px}.idle-drop-row,.faith-product,.partner-slot,.partner-roster-card{transition:transform .18s,border-color .18s,box-shadow .18s}.faith-product:hover,.partner-roster-card:hover{transform:translateY(-2px);border-color:#b8d0b5;box-shadow:0 8px 18px rgba(49,89,59,.08)}
.idle-income-panel{min-width:0;align-self:start}.income-rules{display:grid;grid-template-columns:1fr;gap:8px;padding:12px}.income-rules article{display:grid;gap:3px;padding:11px 12px;border:1px solid #e3ebe1;border-radius:8px;background:linear-gradient(110deg,#fbfdf9,#f3f7f1)}.income-rules b{color:#365b43;font-size:12px}.income-rules small{color:#657b69;font-size:10px}.idle-income-panel>p{margin:0;padding:0 12px 14px;color:#607367;font-size:10px;line-height:1.6}
@media(max-width:1100px){.idle-top{grid-template-columns:repeat(3,minmax(100px,1fr))}.idle-top>#btnGroupUp{grid-column:span 1}.idle-body{grid-template-columns:1fr}.member-panel .member-grid{max-height:340px}.summon-featured-banner{grid-template-columns:1.2fr .8fr}}
@media(max-width:820px){.idle-page{overflow:visible}.idle-top{grid-template-columns:repeat(2,minmax(0,1fr))}.idle-top .ibox,.idle-top .ibox.grow{padding:8px}.idle-top>#btnGroupUp{grid-column:1/-1;min-height:44px}.idle-body{display:flex;flex-direction:column}.member-panel .member-grid{grid-template-columns:1fr;max-height:none}.faith-shop-grid{grid-template-columns:repeat(2,minmax(0,1fr));padding:8px}.faith-product{padding:8px}.faith-product-head em{display:none}.partner-slots{grid-template-columns:1fr}.partner-banner{padding:17px}.partner-roster{grid-template-columns:1fr}.partner-roster-card{gap:8px;padding:8px}.partner-copy>span{font-size:9px}.summon-featured-banner{grid-template-columns:1fr;min-height:510px}.summon-featured-copy{padding:20px 17px 8px}.summon-featured-art{min-height:230px}.summon-featured-art>img{height:260px}.featured-nameplate{right:8px;bottom:6px}.summon-actions .big-btn{flex:1;padding:8px}.summon-result-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.item-desc,.item-bonus{font-size:14px;line-height:1.7;color:#304b39}.item-bonus{font-weight:700}.faith-product p,.mc-tend,.partner-copy>span{font-size:13px;line-height:1.65;color:#405846}.panel-sub{font-size:12px;color:#52685a}

/* Keep member affinity and partner details readable at a glance. */
.mc-title,.mc-tend,.mc-row,.mc-stars,.mc-stars span,.mc-row b,
.partner-copy>span,.partner-bonus-summary{
  font-family:"LXGW WenKai Screen","LXGW WenKai","Microsoft YaHei",sans-serif;
  font-size:13px;
  font-weight:600;
  line-height:1.6;
  color:#344f3d;
  letter-spacing:.01em;
}
.mc-title{font-size:12.5px;color:#496451}
.mc-tend{font-size:13px;color:#344f3d}
.mc-row{grid-template-columns:38px minmax(40px,1fr) 42px;gap:8px}
.mc-row b,.mc-aff-num{font-size:13px;font-weight:700;color:#284936}
.mc-stars{font-size:14px;color:#9a6712}
.mc-stars span{font-size:12.5px;color:#435f4b}
.mc-actions button{font-family:"LXGW WenKai Screen","LXGW WenKai","Microsoft YaHei",sans-serif;font-size:12px;font-weight:600}
.partner-copy>span{font-size:13px;color:#3e5946}
.partner-bonus-summary{font-size:13px;font-weight:600;color:#315c3e}

/* Chapter 1 route panel: use a purpose-made mainland scene; map.png is reference material only. */
.chapter-launch-card{background-image:linear-gradient(90deg,rgba(14,34,42,.78),rgba(17,44,49,.34) 56%,rgba(17,44,49,.03)),url('../assets/scene/jaska-borderlands-dawn-v1.png');background-position:center 57%}
.chapter-map-canvas{isolation:isolate;background-color:#899d81;background-image:linear-gradient(180deg,rgba(24,47,39,.16),rgba(24,47,39,.3)),url('../assets/scene/jaska-borderlands-dawn-v1.png');background-size:cover;background-position:center 58%;border-color:rgba(255,248,222,.88);box-shadow:0 18px 44px rgba(47,59,42,.22)}
.chapter-map-canvas::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(90deg,rgba(16,35,31,.12),transparent 24% 76%,rgba(16,35,31,.12)),linear-gradient(180deg,rgba(13,30,27,.02),transparent 52%,rgba(16,32,26,.18))}
.chapter-map-head .eyebrow{font-size:12px;color:#52674d;letter-spacing:.12em}.chapter-map-head h2{font-family:"LXGW WenKai Screen","LXGW WenKai",var(--serif);font-size:24px;color:#263f35}
.map-compass{position:absolute;z-index:3;top:17px;right:18px;display:grid;justify-items:center;gap:1px;width:43px;padding:5px 4px;border:1px solid rgba(242,229,187,.9);border-radius:9px;background:rgba(29,47,48,.88);color:#fff1c7;box-shadow:0 5px 16px rgba(18,31,30,.24)}.map-compass span{font-size:11px;font-weight:800;letter-spacing:.08em}.map-compass b{font-size:16px;line-height:1;color:#edcc72}
.map-place-label{position:absolute;z-index:3;left:16px;top:15px;display:flex;align-items:center;gap:9px;padding:8px 12px;border:1px solid rgba(215,197,147,.92);border-radius:8px;background:rgba(255,250,232,.94);box-shadow:0 4px 14px rgba(44,52,35,.18);color:#344c3c}.map-place-dot{width:11px;height:11px;border:2px solid #fff;border-radius:50%;background:#c46f4c;box-shadow:0 0 0 3px rgba(196,111,76,.24)}.map-place-label b,.map-place-label small{display:block}.map-place-label b{font-size:13px}.map-place-label small{margin-top:2px;font-size:11px;color:#61725c}.map-route-caption{position:absolute;z-index:3;right:73px;top:20px;padding:6px 11px;border:1px solid rgba(241,222,162,.62);border-radius:20px;background:rgba(34,54,49,.8);color:#fff2c9;font-size:12px;letter-spacing:.08em}
.map-route-shadow{stroke:rgba(58,55,34,.48);stroke-width:15}.map-route-line{stroke:#f4d781;stroke-width:6;stroke-dasharray:2 12;stroke-linecap:round;filter:drop-shadow(0 2px 3px rgba(47,45,25,.68))}.map-node{width:clamp(128px,11vw,154px);min-height:83px;padding:19px 8px 7px 41px;border:1px solid #e1d2a6;border-radius:9px;background:rgba(255,251,236,.96);box-shadow:0 7px 19px rgba(35,42,31,.32);backdrop-filter:blur(4px);color:#2b4035}.map-node-label{background:#314c49;font-size:9px}.map-node-number{left:6px;width:29px;height:32px;background:#ba9148}.map-node strong{font-size:17px;color:#243f37}.map-node-name{font-size:12px;color:#405d48;line-height:1.3}.map-node small{font-size:10px;color:#536653}.map-node.cleared{border-color:#82ad79;background:rgba(245,255,238,.97)}.map-node.cleared .map-node-number{background:#54865d}.map-node.locked{opacity:.82}.map-node.locked small{color:#675f50}
.map-node:hover:not(:disabled){transform:translate(-50%,-54%) scale(1.025)}

/* 1-8 dawn departure sequence. The horse and both chibi travelers animate on the matching story beats. */
.northbound-cinematic .opening-cutscene:not([hidden]){display:block;position:absolute;z-index:2;top:4%;left:50%;width:min(1480px,94vw);height:min(68vh,780px);transform:translateX(-50%);overflow:hidden;border:1px solid rgba(236,241,225,.72);border-radius:14px;background:linear-gradient(180deg,rgba(8,24,28,.04),rgba(8,22,19,.13)),url('../assets/scene/jaska-borderlands-dawn-v1.png') center 55%/cover no-repeat;box-shadow:0 22px 65px rgba(0,0,0,.42);isolation:isolate}
.northbound-cinematic .opening-cutscene .chibi-actor{display:none;position:absolute;z-index:3;left:42%;bottom:0;height:57%;width:auto;max-width:30%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 9px 9px rgba(22,31,27,.42));transform:translateX(-50%)}
.northbound-cinematic .opening-cutscene .chibi-lingling{display:none;position:absolute;z-index:3;left:64%;bottom:0;height:52%;width:auto;max-width:27%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 9px 9px rgba(22,31,27,.42));transform:translateX(-50%)}
.northbound-cinematic .opening-cutscene .cutscene-horse{display:none;position:absolute;z-index:2;left:73%;right:auto;bottom:1%;height:44%;width:auto;max-width:30%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 9px 10px rgba(22,31,27,.42))}
.northbound-cinematic .opening-cutscene .travel-duo{display:none;position:absolute;z-index:4;left:51%;bottom:0;width:min(74%,980px);height:84%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 12px 14px rgba(18,28,26,.48));transform:translateX(-50%)}
.northbound-cinematic .opening-cutscene .mounted-rider,.northbound-cinematic .opening-cutscene .cutscene-beast,.northbound-cinematic .opening-cutscene .cutscene-beast-echo,.northbound-cinematic .opening-cutscene .patrol-guards{display:none!important}
.northbound-cinematic[data-beat="morning-wake"] .opening-cutscene .chibi-actor,.northbound-cinematic[data-beat="horse-snack"] .opening-cutscene .chibi-actor,.northbound-cinematic[data-beat="morning-chat"] .opening-cutscene .chibi-actor,.northbound-cinematic[data-beat="horse-nibble"] .opening-cutscene .chibi-actor,.northbound-cinematic[data-beat="pack-check"] .opening-cutscene .chibi-actor,.northbound-cinematic[data-beat="leave-camp"] .opening-cutscene .chibi-actor,.northbound-cinematic[data-beat="north-talk"] .opening-cutscene .chibi-actor,.northbound-cinematic[data-beat="find-north"] .opening-cutscene .chibi-actor{display:block}
.northbound-cinematic .opening-cutscene .system-popup{display:none!important}
.northbound-cinematic[data-beat="morning-wake"] .opening-cutscene .chibi-actor{left:42%;animation:camp-wake-stretch .8s ease-out both}
.northbound-cinematic[data-beat="horse-snack"] .opening-cutscene .chibi-actor,.northbound-cinematic[data-beat="horse-nibble"] .opening-cutscene .chibi-actor{left:39%;animation:chibi-snatch-breakfast .55s ease-out both}
.northbound-cinematic[data-beat="morning-chat"] .opening-cutscene .chibi-actor,.northbound-cinematic[data-beat="pack-check"] .opening-cutscene .chibi-actor,.northbound-cinematic[data-beat="leave-camp"] .opening-cutscene .chibi-actor,.northbound-cinematic[data-beat="north-talk"] .opening-cutscene .chibi-actor,.northbound-cinematic[data-beat="find-north"] .opening-cutscene .chibi-actor{left:40%;animation:chibi-idle 1.8s ease-in-out infinite}
.northbound-cinematic[data-beat="morning-chat"] .opening-cutscene .chibi-lingling,.northbound-cinematic[data-beat="pack-check"] .opening-cutscene .chibi-lingling,.northbound-cinematic[data-beat="leave-camp"] .opening-cutscene .chibi-lingling,.northbound-cinematic[data-beat="north-talk"] .opening-cutscene .chibi-lingling,.northbound-cinematic[data-beat="find-north"] .opening-cutscene .chibi-lingling{display:block;animation:lingling-camp-breathe 2.1s ease-in-out infinite}
.northbound-cinematic[data-beat="horse-nibble"] .opening-cutscene .cutscene-horse,.northbound-cinematic[data-beat="horse-snack"] .opening-cutscene .cutscene-horse{display:block;animation:horse-sniff-bag 1.05s ease-in-out infinite alternate}
.northbound-cinematic[data-beat="system-vanish"] .opening-cutscene::after{content:"";position:absolute;z-index:5;inset:0;pointer-events:none;background:radial-gradient(ellipse at 51% 38%,rgba(227,249,249,.52),transparent 26%);animation:moon-window-fade .8s ease-out both}
.northbound-cinematic[data-beat="find-north"] .opening-cutscene .chibi-actor{animation:chibi-point-north .65s ease-out both}
.northbound-cinematic[data-beat="mount-together"] .opening-cutscene .chibi-actor,.northbound-cinematic[data-beat="horse-start"] .opening-cutscene .chibi-actor,.northbound-cinematic[data-beat="northbound-ride"] .opening-cutscene .chibi-actor,.northbound-cinematic[data-beat="northbound-end"] .opening-cutscene .chibi-actor,.northbound-cinematic[data-beat="mount-together"] .opening-cutscene .chibi-lingling,.northbound-cinematic[data-beat="horse-start"] .opening-cutscene .chibi-lingling,.northbound-cinematic[data-beat="northbound-ride"] .opening-cutscene .chibi-lingling,.northbound-cinematic[data-beat="northbound-end"] .opening-cutscene .chibi-lingling{display:none}
.northbound-cinematic[data-beat="mount-together"] .opening-cutscene .travel-duo,.northbound-cinematic[data-beat="horse-start"] .opening-cutscene .travel-duo,.northbound-cinematic[data-beat="northbound-ride"] .opening-cutscene .travel-duo,.northbound-cinematic[data-beat="northbound-end"] .opening-cutscene .travel-duo{display:block}
.northbound-cinematic[data-beat="mount-together"] .opening-cutscene .travel-duo{animation:travel-duo-mount .72s cubic-bezier(.18,.75,.22,1) both}
.northbound-cinematic[data-beat="horse-start"] .opening-cutscene .travel-duo{animation:travel-duo-start .72s cubic-bezier(.18,.75,.22,1) both}
.northbound-cinematic[data-beat="northbound-ride"] .opening-cutscene .travel-duo,.northbound-cinematic[data-beat="northbound-end"] .opening-cutscene .travel-duo{animation:travel-duo-bob .52s ease-in-out infinite alternate}
.northbound-cinematic[data-beat="northbound-end"] .opening-cutscene .travel-duo{animation:travel-duo-depart 2.1s ease-in-out both,travel-duo-bob .52s 2.1s ease-in-out infinite alternate}
.northbound-cinematic .opening-cutscene .cutscene-label{display:block}
@keyframes camp-wake-stretch{0%{opacity:0;transform:translate(-50%,20px) scale(.9)}50%{transform:translate(-50%,-9px) scale(1.04)}100%{opacity:1;transform:translate(-50%,0) scale(1)}}
@keyframes chibi-snatch-breakfast{0%,100%{transform:translateX(-50%)}35%{transform:translateX(-45%) rotate(-8deg) translateY(-12px)}70%{transform:translateX(-53%) rotate(6deg) translateY(2px)}}
@keyframes chibi-point-north{0%,100%{transform:translateX(-50%)}40%{transform:translateX(-50%) translateY(-9px) rotate(-7deg) scale(1.05)}70%{transform:translateX(-50%) translateY(1px) rotate(3deg)}}
@keyframes moon-window-fade{0%{opacity:.72;transform:scale(.6)}65%{opacity:.35}100%{opacity:0;transform:scale(1.4)}}
@keyframes travel-duo-mount{from{opacity:.25;transform:translate(-50%,35px) scale(.9)}to{opacity:1;transform:translate(-50%,0) scale(1)}}
@keyframes travel-duo-start{0%,100%{transform:translate(-50%,0) rotate(0)}32%{transform:translate(-50%,-10px) rotate(-2deg)}66%{transform:translate(-50%,3px) rotate(2deg)}}
@keyframes travel-duo-bob{from{transform:translate(-50%,0)}to{transform:translate(-50%,-7px)}}
@keyframes travel-duo-depart{0%{left:51%;opacity:1}100%{left:68%;opacity:.12;transform:translate(-50%,-8px) scale(.62)}}
@media(max-width:820px){.chapter-map-canvas{min-height:560px;background-position:53% 58%}.map-node{width:132px;min-height:77px;padding-left:37px}.map-node strong{font-size:16px}.map-node-name{font-size:11px}.map-place-label{left:8px;top:8px;padding:6px 8px}.map-route-caption{right:58px;top:14px;font-size:10px}.northbound-cinematic .opening-cutscene:not([hidden]){top:8%;width:94vw;height:55vh}.northbound-cinematic .opening-cutscene .chibi-actor{height:48%;max-width:40%}.northbound-cinematic .opening-cutscene .chibi-lingling{height:44%;max-width:35%}.northbound-cinematic .opening-cutscene .travel-duo{width:92%;height:75%}.northbound-cinematic .dialog-box{width:94vw;bottom:20px}}

/* 手动结算的月幕经营界面 */
.business-page{width:min(1500px,100%);margin:0 auto;display:flex;flex-direction:column;gap:16px;padding:8px 12px 28px;color:#223d36;font-family:"LXGW WenKai Screen","LXGW WenKai","Microsoft YaHei",sans-serif}
.business-banner{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px 28px;border:1px solid #b8cbb7;border-radius:16px;background:linear-gradient(112deg,rgba(21,55,50,.96),rgba(35,86,71,.9)),url('../assets/scene/jaska-borderlands-dawn-v1.png') center 54%/cover;color:#f5f7e9;box-shadow:0 10px 28px rgba(33,58,46,.18)}
.business-banner .eyebrow{font-size:11px;letter-spacing:.16em;color:#e4ca7a}.business-banner h1{margin:6px 0;font-size:clamp(25px,3vw,34px);letter-spacing:.06em}.business-banner p{margin:0;color:#e4eee2;font-size:14px}.business-day{min-width:105px;display:grid;justify-items:center;padding:10px 16px;border:1px solid rgba(237,215,143,.55);border-radius:12px;background:rgba(9,31,29,.58)}.business-day small,.business-day span{font-size:12px;color:#e2e9d8}.business-day b{font-family:Georgia,serif;font-size:36px;color:#f0d77e;line-height:1.2}
.business-ledger{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr)) minmax(190px,.9fr);gap:10px}.business-ledger>div,.business-ledger>#btnGroupUp{min-height:83px;padding:13px 16px;border:1px solid #d4e0d4;border-radius:12px;background:linear-gradient(145deg,#fff,#f2f7f0);box-shadow:0 4px 13px rgba(40,66,49,.07)}.business-ledger>div{display:flex;flex-direction:column;gap:3px}.business-ledger small{color:#60796b;font-size:12px}.business-ledger b{font-size:22px;color:#214e3d}.business-ledger span{font-size:12px;color:#60796b}.business-ledger>#btnGroupUp{align-self:stretch;display:flex;flex-direction:column;justify-content:center;gap:4px;font-weight:700}.business-ledger>#btnGroupUp em{font-size:11px;font-style:normal;font-weight:500}
.business-page .panel{border:1px solid #d2dfd2;border-radius:14px;background:rgba(255,255,251,.96);box-shadow:0 5px 17px rgba(41,63,47,.07)}.business-page .panel-head{min-height:58px;padding:12px 17px;border-bottom:1px solid #e2e9de}.business-page .panel-title{font-size:17px;color:#234a3b}.business-page .panel-sub{margin-top:3px;font-size:12px;color:#667d6c}.business-page .focus-label{padding:6px 11px;border-radius:20px;background:#e8f1e7;color:#315f46;font-size:13px;font-weight:700}
.business-focus-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:14px}.business-focus-option{display:grid;grid-template-columns:30px 1fr;align-items:center;column-gap:9px;text-align:left;padding:11px;border:1px solid #d8e2d7;border-radius:11px;background:#f8faf6;color:#29493a;cursor:pointer;transition:transform .16s,border-color .16s,box-shadow .16s}.business-focus-option>span{grid-row:span 2;display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:#e8f1e7;color:#578568;font-size:18px}.business-focus-option b{font-size:14px}.business-focus-option small{font-size:11px;color:#68806f}.business-focus-option:hover{transform:translateY(-2px);border-color:#83af8e}.business-focus-option.active{border-color:#528967;background:#edf5e9;box-shadow:inset 0 0 0 1px #87ae8c,0 5px 12px rgba(64,111,72,.1)}
.facility-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:14px}.business-facility{display:flex;flex-direction:column;gap:10px;min-width:0;padding:14px;border:1px solid #d8e2d6;border-radius:12px;background:linear-gradient(150deg,#fff,#f5f8f1);transition:transform .16s,box-shadow .16s}.business-facility:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(38,73,50,.1)}.business-facility.locked{background:#f6f6f0;border-style:dashed}.facility-top{display:flex;align-items:center;gap:10px}.facility-icon{display:grid;place-items:center;flex:none;width:42px;height:42px;border-radius:12px;background:#e5efe5;color:#397452;font-size:23px}.facility-top small{font-size:11px;color:#718271}.facility-top h3{margin:2px 0 0;font-size:16px;color:#284538}.facility-kind{margin-left:auto;padding:4px 8px;border-radius:20px;background:#edf2e8;color:#60725d;font-size:11px}.business-facility p{min-height:36px;margin:0;color:#536a5d;font-size:12.5px;line-height:1.55}.facility-forecast{display:flex;flex-direction:column;gap:4px;min-height:48px;padding:8px 10px;border-radius:8px;background:#edf4ed}.facility-forecast small{font-size:11px;color:#687f6e}.facility-forecast b{font-size:12px;color:#2f6947;line-height:1.5}.facility-staff{display:flex;align-items:center;justify-content:space-between;gap:9px;color:#4c6555;font-size:12px}.facility-staff select{max-width:65%;padding:7px 9px;border:1px solid #cfddcf;border-radius:7px;background:white;color:#294a39;font:inherit}.facility-upgrade{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:9px 10px;border:1px solid #6a9a74;border-radius:8px;background:#407c53;color:white;font:600 12px inherit;cursor:pointer}.facility-upgrade span{color:#e5f2dc;font-size:11px;font-weight:500}.facility-upgrade:disabled{border-color:#cbd5ca;background:#e5eae2;color:#758477;cursor:not-allowed}.facility-upgrade:disabled span{color:#758477}
.business-controls{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 14px 14px;padding:14px 16px;border:1px solid #d6e0ce;border-radius:11px;background:linear-gradient(100deg,#eff5e8,#fbf7e8)}.business-controls>div{display:flex;flex-direction:column;gap:4px}.business-controls b{color:#294a38;font-size:14px}.business-controls span{color:#607567;font-size:12px}.business-controls .big-btn{min-width:220px;min-height:46px;font-size:15px;box-shadow:0 4px 0 #876b31}.business-controls .big-btn:disabled{box-shadow:none}
.business-bottom{display:grid;grid-template-columns:minmax(250px,.8fr) minmax(400px,1.4fr);gap:14px}.business-report{display:flex;flex-direction:column;gap:8px;padding:12px}.business-report-entry{padding:10px 12px;border:1px solid #e0e8dc;border-radius:9px;background:#fafbf7}.business-report-entry>div{display:flex;justify-content:space-between;gap:10px;padding-bottom:6px;border-bottom:1px solid #e7ece4;color:#345b43}.business-report-entry>div span{font-size:12px;color:#76836e}.business-report-entry ul{display:grid;gap:4px;margin:7px 0 0;padding-left:18px;color:#4d6654;font-size:12px;line-height:1.5}.report-empty{padding:24px 12px;text-align:center;color:#718070;font-size:13px}.business-page .member-grid{padding:12px;gap:10px}.business-page .member-panel{min-width:0}.business-page .member-panel .member-grid{max-height:480px;overflow:auto}.business-page .faith-shop-panel{padding-bottom:12px}.business-social-actions{justify-content:flex-end}.business-social-actions .big-btn{max-width:240px}
@media(max-width:1050px){.business-ledger{grid-template-columns:repeat(2,minmax(0,1fr))}.business-ledger>#btnGroupUp{min-height:65px}.facility-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.business-bottom{grid-template-columns:1fr}.business-focus-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.business-page{padding:4px 2px 20px;gap:11px}.business-banner{padding:18px 15px}.business-day{min-width:76px;padding:8px}.business-day b{font-size:29px}.business-banner p{max-width:34ch;font-size:12px}.business-ledger{gap:7px}.business-ledger>div{min-height:72px;padding:10px}.business-ledger b{font-size:19px}.business-focus-grid,.facility-grid{grid-template-columns:1fr;padding:10px}.business-page .panel-head{padding:10px 12px}.business-controls{align-items:stretch;flex-direction:column;margin:0 10px 10px}.business-controls .big-btn{width:100%;min-width:0}.business-bottom{display:flex;flex-direction:column}.business-page .member-panel .member-grid{max-height:none}.business-social-actions{justify-content:stretch}.business-social-actions .big-btn{max-width:none;flex:1}}

.facility-upgrade{font-family:inherit}

.business-combos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 14px 12px}.business-combo{display:grid;grid-template-columns:25px 1fr;column-gap:8px;padding:9px 10px;border:1px dashed #d3ddd0;border-radius:9px;background:#f6f7f1;color:#536858}.business-combo>span{grid-row:span 2;display:grid;place-items:center;font-size:17px;color:#8b9b84}.business-combo b,.business-combo small{display:block}.business-combo b{font-size:12px;color:#526351}.business-combo small{margin-top:2px;font-size:10px;color:#788474}.business-combo em{grid-column:2;font-size:10px;font-style:normal;color:#74806f}.business-combo.active{border-style:solid;border-color:#85aa7f;background:#edf5e8}.business-combo.active>span,.business-combo.active em{color:#3b794e}@media(max-width:1050px){.business-combos{grid-template-columns:1fr 1fr}}@media(max-width:620px){.business-combos{grid-template-columns:1fr;margin:0 10px 10px}.business-combo{padding:8px}}
.business-ledger>.business-member-entry{min-height:83px;padding:13px 16px;border:1px solid #d4e0d4;border-radius:12px;background:linear-gradient(145deg,#fff,#f2f7f0);box-shadow:0 4px 13px rgba(40,66,49,.07);display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;text-align:left;cursor:pointer;transition:transform .16s,border-color .16s}.business-member-entry:hover{transform:translateY(-2px);border-color:#83af8e}.business-member-entry small{font-size:12px;color:#60796b}.business-member-entry b{font-size:18px;color:#214e3d}.business-member-entry span{font-size:11px;color:#60796b}.members-page{width:min(1480px,100%);margin:0 auto;display:flex;flex-direction:column;gap:16px;padding:8px 12px 28px;color:#223d36;font-family:'LXGW WenKai Screen','LXGW Wen Kai','Microsoft YaHei',sans-serif}.members-banner{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px 28px;border:1px solid #b8cbb7;border-radius:16px;background:linear-gradient(112deg,rgba(21,55,50,.96),rgba(35,86,71,.9)),url('../assets/scene/jaska-borderlands-dawn-v1.png') center 54%/cover;color:#f5f7e9;box-shadow:0 10px 28px rgba(33,58,46,.18)}.members-banner .eyebrow{font-size:11px;letter-spacing:.16em;color:#e4ca7a}.members-banner h1{margin:6px 0;font-size:clamp(25px,3vw,34px);letter-spacing:.06em}.members-banner p{margin:0;color:#e4eee2;font-size:14px}.members-count{min-width:125px;display:grid;justify-items:center;padding:10px 16px;border:1px solid rgba(237,215,143,.55);border-radius:12px;background:rgba(9,31,29,.58)}.members-count small,.members-count>span{font-size:12px;color:#e2e9d8}.members-count b{font-family:Georgia,serif;font-size:32px;color:#f0d77e}.members-count i{font-size:17px;font-style:normal;color:#d6dfcb}.members-roster-panel .member-grid{padding:14px;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,310px),1fr));gap:11px;max-height:none;overflow:visible;align-content:start}.members-roster-panel .mcard{min-height:198px}.members-roster-panel .panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px}@media(max-width:620px){.members-page{padding:4px 2px 20px;gap:11px}.members-banner{padding:18px 15px}.members-banner p{max-width:32ch;font-size:12px}.members-count{min-width:82px;padding:8px}.members-roster-panel .member-grid{grid-template-columns:1fr;padding:10px}.members-roster-panel .panel-head .mini-btn{padding:6px}.business-ledger>.business-member-entry{min-height:72px;padding:10px}}

/* Prevent shared cinematic sprites from leaking into unrelated scenes. */
.cutscene-active .opening-cutscene .chibi-lingling,
.cutscene-active .opening-cutscene .cutscene-horse,
.cutscene-active .opening-cutscene .mounted-rider,
.cutscene-active .opening-cutscene .travel-duo,
.cutscene-active .opening-cutscene .patrol-guards{opacity:1}


/* Moon Curtain management: playable frontier outpost instead of a dashboard grid. */
.business-page{width:min(1680px,100%);margin:0 auto;display:flex;flex-direction:column;gap:16px;padding:8px 12px 30px;color:#203c35;font-family:"LXGW WenKai Screen","LXGW Wen Kai","Microsoft YaHei",sans-serif}
.business-banner{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:10px 8px 2px;border:0;border-radius:0;background:transparent;color:#234638;box-shadow:none}
.business-banner .eyebrow,.business-world-title .eyebrow{font-size:11px;letter-spacing:.17em;color:#8c7040}.business-banner h1{margin:2px 0;font-size:clamp(26px,3vw,38px);color:#213c32;letter-spacing:.05em}.business-banner p{margin:0;color:#5c7364;font-size:14px}.business-day{min-width:108px;display:grid;justify-items:center;padding:9px 16px;border:1px solid rgba(224,198,131,.75);border-radius:12px;background:linear-gradient(145deg,#fff9e9,#fff);box-shadow:0 5px 14px rgba(74,82,53,.1)}.business-day small,.business-day span{font-size:11px;color:#71806a}.business-day b{font:700 32px/1.1 Georgia,serif;color:#bd8a38}
.business-town{overflow:hidden;border:1px solid #a6b39b;border-radius:18px;background:#263c32;box-shadow:0 15px 38px rgba(29,48,39,.19)}.business-world{position:relative;min-height:660px;overflow:hidden;isolation:isolate;background:linear-gradient(180deg,rgba(18,34,29,.46),transparent 30%,transparent 55%,rgba(13,26,22,.38)),url('../assets/scene/moon-curtain-hub-v1.png') center 57%/cover no-repeat}.business-world::before{content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(90deg,rgba(13,29,26,.23),transparent 60%);pointer-events:none}.business-world::after{content:"";position:absolute;z-index:0;inset:auto 0 0;height:16%;background:linear-gradient(0deg,rgba(15,28,23,.56),transparent);pointer-events:none}
.business-world-title{position:absolute;z-index:3;left:22px;top:20px;display:grid;gap:3px;padding:10px 14px;border:1px solid rgba(248,234,193,.3);border-radius:10px;background:rgba(19,39,35,.74);color:#fff9e7;box-shadow:0 6px 18px rgba(13,27,25,.24);backdrop-filter:blur(8px)}.business-world-title span{font-size:11px;color:#e7d39a;letter-spacing:.08em}.business-world-title b{font-size:17px;letter-spacing:.07em}
.business-ledger{position:absolute;z-index:5;top:18px;right:20px;display:flex;align-items:stretch;gap:7px;padding:7px;border:1px solid rgba(255,255,255,.42);border-radius:14px;background:rgba(246,249,237,.92);box-shadow:0 9px 28px rgba(12,27,25,.25);backdrop-filter:blur(9px)}.resource-chip{display:grid;grid-template-columns:auto auto;align-content:center;column-gap:8px;min-width:110px;padding:5px 11px;border-right:1px solid #dae2d2}.resource-chip small{grid-column:1/-1;color:#677965;font-size:10px}.resource-chip b{color:#24483c;font-size:19px;line-height:1.3}.resource-chip span{align-self:end;padding-bottom:3px;color:#85917f;font-size:9px}.resource-chip.heat b{color:#ad7d36}.resource-chip.research b{color:#52789a}.resource-chip.faith b{color:#8863ae}.business-ledger>.business-member-entry{min-width:124px;min-height:auto;padding:5px 10px;border:1px solid #d7e1d1;border-radius:9px;background:#fff;text-align:left;box-shadow:none;gap:1px}.business-member-entry small{font-size:10px;color:#71806a}.business-member-entry b{font-size:15px;color:#28543f}.business-member-entry span{font-size:10px;color:#71806a}.business-ledger>#btnGroupUp{min-width:114px;min-height:48px;align-self:center;justify-content:center;border:1px solid #b88943;border-radius:9px;background:linear-gradient(145deg,#e6c36f,#c99743);color:#49371d;box-shadow:0 3px 0 #936a31;font-weight:800;font-size:12px}.business-ledger>#btnGroupUp em{font-size:9px;color:#5c4826}.business-ledger>#btnGroupUp:disabled{background:#e1e5dc;border-color:#cbd3c4;color:#778270;box-shadow:none}
.facility-map-nodes{position:absolute;z-index:4;inset:0;pointer-events:none}.facility-plot{--plot-scale:1;position:absolute;display:grid;justify-items:center;gap:2px;min-width:108px;padding:5px 8px 6px;border:1px solid rgba(255,255,255,.74);border-radius:13px;background:rgba(249,251,241,.93);color:#28463a;box-shadow:0 6px 17px rgba(24,42,32,.28);cursor:pointer;pointer-events:auto;transform:translate(-50%,-50%) scale(var(--plot-scale));transition:transform .18s,border-color .18s,box-shadow .18s,background .18s}.facility-plot:hover{--plot-scale:1.06;z-index:2;border-color:#e6c36c;box-shadow:0 12px 24px rgba(24,42,32,.34)}.facility-plot.selected{border-color:#f0d385;outline:3px solid rgba(240,211,133,.46);box-shadow:0 7px 22px rgba(18,38,27,.35)}.facility-plot.unbuilt{background:rgba(235,235,219,.89);filter:saturate(.66)}.facility-plot b{max-width:130px;font-size:12px;line-height:1.35}.facility-plot small{font-size:10px;color:#6b806c}.facility-plot-art{position:relative;display:block;width:60px;height:53px;background-image:url('../assets/scene/moon-curtain-facilities-v1.png');background-repeat:no-repeat;background-size:300% 200%;filter:drop-shadow(0 3px 3px rgba(43,50,36,.18))}.sprite-lobby{background-position:0 0}.sprite-archive{background-position:50% 0}.sprite-prayer{background-position:100% 0}.sprite-workshop{background-position:0 100%}.sprite-training{background-position:50% 100%}.facility-plot-art i{position:absolute;right:-9px;top:-4px;min-width:31px;padding:2px 5px;border:1px solid #eedda4;border-radius:10px;background:#fff7db;color:#795b2e;font-size:9px;font-style:normal;font-weight:800;box-shadow:0 2px 6px rgba(25,39,27,.17)}.plot-pin{position:absolute;right:-6px;bottom:37px;display:grid;place-items:center;width:22px;height:22px;border:2px solid white;border-radius:50%;background:#40845d;color:white;font-size:11px;box-shadow:0 2px 7px rgba(13,29,20,.3)}.facility-plot.unbuilt .plot-pin{background:#9b8251}.plot-prayer{left:11%;top:50%}.plot-archive{left:28%;top:37%}.plot-lobby{left:50%;top:39%}.plot-training{left:78%;top:36%}.plot-workshop{left:89%;top:67%}
.facility-inspector{position:absolute;z-index:6;left:20px;bottom:19px;width:min(430px,42vw)}.facility-detail-card{display:grid;grid-template-columns:132px 1fr;gap:12px;padding:12px;border:1px solid rgba(247,232,187,.74);border-radius:15px;background:linear-gradient(130deg,rgba(250,250,237,.97),rgba(242,246,228,.94));color:#284236;box-shadow:0 12px 32px rgba(14,29,24,.4);animation:facility-card-arrive .22s ease-out both;backdrop-filter:blur(10px)}@keyframes facility-card-arrive{from{opacity:0;transform:translateY(9px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}.facility-detail-art{position:relative;min-height:190px;border:1px solid #d2dbc6;border-radius:12px;background-color:#e9efdf;background-image:url('../assets/scene/moon-curtain-facilities-v1.png');background-repeat:no-repeat;background-size:300% 200%;overflow:hidden}.facility-detail-art>span{position:absolute;left:8px;top:8px;padding:4px 7px;border:1px solid rgba(255,255,255,.76);border-radius:7px;background:rgba(40,61,49,.82);color:white;font-size:10px;font-weight:800}.facility-detail-art>i{position:absolute;right:9px;bottom:7px;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#fff4cc;color:#8a6630;font-size:16px;font-style:normal}.facility-detail-copy{min-width:0}.facility-detail-heading{display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:8px}.facility-detail-heading small{grid-column:1/-1;color:#8c7549;font-size:10px;letter-spacing:.08em}.facility-detail-heading h2{margin:2px 0;color:#234634;font-size:18px}.facility-detail-heading>span{color:#788371;font-size:10px}.facility-detail-copy>p{margin:3px 0 7px;color:#5c6e5d;font-size:11px;line-height:1.5}.facility-yield{display:grid;gap:3px;padding:7px 9px;border-radius:8px;background:#e7efe1}.facility-yield small{color:#6e7d68;font-size:10px}.facility-yield b{color:#306747;font-size:11px;line-height:1.45}.facility-staff{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:7px;color:#425f4a;font-size:11px}.facility-staff select{max-width:62%;padding:6px 8px;border:1px solid #ccd8c5;border-radius:7px;background:white;color:#284a38;font:inherit}.facility-note{display:block;margin:8px 0;color:#7d806d;font-size:10px}.facility-upgrade{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;margin-top:8px;padding:8px 9px;border:1px solid #97703a;border-radius:8px;background:linear-gradient(105deg,#dfbc6c,#c89743);color:#3e311c;font:700 11px inherit;cursor:pointer;box-shadow:0 3px 0 #94703a}.facility-upgrade span{color:#634b27;font-size:9px;font-weight:600}.facility-upgrade:disabled{border-color:#cbd2c4;background:#e2e6db;color:#778171;box-shadow:none;cursor:not-allowed}
.world-signpost{position:absolute;z-index:3;right:23px;bottom:18px;display:flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid rgba(245,230,183,.43);border-radius:20px;background:rgba(19,38,31,.68);color:#fff8dc;font-size:11px;box-shadow:0 5px 14px rgba(13,27,20,.28)}.world-signpost i{width:7px;height:7px;border-radius:50%;background:#f0cb70;box-shadow:0 0 10px #f0cb70;animation:outpost-light 1.8s ease-in-out infinite alternate}@keyframes outpost-light{to{opacity:.35;box-shadow:0 0 2px #f0cb70}}
.business-turnbar{display:grid;grid-template-columns:minmax(150px,.78fr) minmax(450px,2.5fr) 170px;align-items:center;gap:12px;padding:13px 15px;border-top:1px solid #dae2d0;background:linear-gradient(110deg,#fbfcf5,#f0f4e9)}.turnbar-copy{display:grid;gap:4px}.turnbar-copy .eyebrow{color:#a17b3f;font-size:9px;letter-spacing:.12em}.turnbar-copy>b{font-size:15px;color:#2b4b39}.turnbar-copy>small{font-size:10px;color:#73806b}.turnbar-focus{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.business-focus-option{position:relative;display:grid;grid-template-columns:26px 1fr;align-items:center;column-gap:6px;min-height:49px;padding:6px 8px;border:1px solid #d8dfd0;border-radius:9px;background:#fff;color:#385442;text-align:left;cursor:pointer;transition:transform .16s,border-color .16s,box-shadow .16s}.business-focus-option>span{grid-row:span 2;display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:#edf2e6;color:#8a713c;font-size:15px}.business-focus-option b{font-size:11px}.business-focus-option small{font-size:9px;color:#73806f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.business-focus-option:hover{transform:translateY(-2px);border-color:#ba9a57}.business-focus-option.active{border-color:#b99245;background:#fff7e2;box-shadow:inset 0 0 0 1px #e3c77d,0 3px 9px rgba(103,81,36,.11)}.business-open-btn{display:grid;grid-template-columns:34px 1fr;align-items:center;column-gap:7px;min-height:58px;padding:8px 11px;border:1px solid #87602d;border-radius:11px;background:linear-gradient(135deg,#eccb78,#c99742);color:#473319;box-shadow:0 4px 0 #926735;cursor:pointer;transition:transform .14s,filter .14s}.business-open-btn:hover:not(:disabled){transform:translateY(-2px);filter:brightness(1.06)}.business-open-btn:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px 0 #926735}.business-open-btn>span{grid-row:span 2;display:grid;place-items:center;width:33px;height:33px;border-radius:50%;background:rgba(255,248,217,.62);font-size:21px}.business-open-btn>b{font-size:13px}.business-open-btn>small{font-size:9px;color:#69502c}.business-open-btn:disabled{border-color:#c5cdc0;background:#e3e7dd;color:#768071;box-shadow:none;cursor:not-allowed}
.business-combos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:0 14px 13px;background:#f0f4e9}.business-combo{display:grid;grid-template-columns:25px 1fr;column-gap:7px;padding:8px 10px;border:1px dashed #cbd5c1;border-radius:9px;background:rgba(255,255,255,.62);color:#62735e}.business-combo>span{grid-row:span 2;display:grid;place-items:center;color:#a5a993;font-size:16px}.business-combo b{font-size:10px;color:#65745f}.business-combo small{font-size:9px;color:#82907e}.business-combo em{grid-column:2;font-size:9px;font-style:normal;color:#77836f}.business-combo.active{border-style:solid;border-color:#c6ac66;background:#fff9e8}.business-combo.active>span,.business-combo.active em{color:#927038}
.business-lower-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,.8fr);align-items:start;gap:14px}.business-page .panel{border:1px solid #d6dfd0;border-radius:14px;background:#fffef9;box-shadow:0 5px 17px rgba(41,63,47,.08)}.business-page .panel-head{min-height:55px;padding:11px 15px;border-bottom:1px solid #e5eadf}.business-page .panel-title{font-size:15px;color:#294d3c}.business-page .panel-sub{margin-top:3px;font-size:11px;color:#71806d}.business-page .faith-shop-panel{padding-bottom:10px}.faith-shop-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px;padding:10px}.faith-product{padding:10px;border:1px solid #e1e4d6;border-radius:10px;background:linear-gradient(150deg,#fff,#f6f4ea)}.faith-product-head{display:grid;grid-template-columns:32px 1fr;gap:8px;align-items:center}.faith-product-head em{grid-column:2;font-size:9px}.faith-product>p{min-height:35px;font-size:10px;line-height:1.5}.faith-buy{padding:7px 10px;border-radius:7px;font-size:10px}.business-report{display:flex;flex-direction:column;gap:7px;max-height:360px;overflow:auto;padding:10px}.business-report-entry{padding:9px 10px;border:1px solid #e3e8dc;border-radius:9px;background:#fbfcf6}.business-report-entry>div{display:flex;justify-content:space-between;gap:8px;padding-bottom:5px;border-bottom:1px solid #e7ece4;color:#3e654b;font-size:11px}.business-report-entry>div span{font-size:10px;color:#829078}.business-report-entry ul{display:grid;gap:4px;margin:6px 0 0;padding-left:17px;color:#556b57;font-size:10px;line-height:1.5}.report-empty{padding:28px 12px;text-align:center;color:#788573;font-size:11px}.business-social-actions{justify-content:flex-end}.business-social-actions .big-btn{max-width:190px;min-height:40px;font-size:11px}.business-social-actions .big-btn em{font-size:9px}.faith-balance{padding:6px 10px;border:1px solid #e4d8b8;border-radius:8px;background:#fbf7e9;color:#896d37;font-size:11px}.faith-balance b{font-size:15px}
@media(max-width:1050px){.business-world{min-height:690px}.business-ledger{left:14px;right:14px;top:14px;justify-content:space-between}.business-world-title{top:87px;left:15px}.plot-prayer{left:12%;top:47%}.plot-archive{left:29%;top:35%}.plot-lobby{left:50%;top:36%}.plot-training{left:78%;top:34%}.facility-inspector{left:14px;bottom:14px;width:min(430px,52vw)}.business-turnbar{grid-template-columns:140px 1fr 155px}.business-focus-option{grid-template-columns:23px 1fr;padding:5px}.business-focus-option>span{width:22px;height:22px}.business-lower-grid{grid-template-columns:1fr}.business-report{max-height:280px}}
@media(max-width:620px){.business-page{padding:4px 2px 20px;gap:10px}.business-banner{align-items:flex-start;padding:8px 5px 2px}.business-banner h1{font-size:25px}.business-banner p{max-width:31ch;font-size:11px}.business-day{min-width:73px;padding:7px}.business-day b{font-size:25px}.business-world{min-height:790px;background-position:54% center}.business-world-title{top:100px;left:10px;padding:7px 10px}.business-world-title b{font-size:14px}.business-ledger{top:10px;left:8px;right:8px;flex-wrap:wrap;gap:3px;padding:5px}.resource-chip{flex:1;min-width:70px;padding:3px 5px;column-gap:4px}.resource-chip small{font-size:8px}.resource-chip b{font-size:15px}.resource-chip span{display:none}.business-ledger>.business-member-entry{flex:1;min-width:88px;padding:3px 6px}.business-ledger>#btnGroupUp{flex:1;min-width:82px;min-height:38px;padding:4px;font-size:10px}.business-ledger>#btnGroupUp em{font-size:8px}.facility-plot{min-width:78px;padding:3px 4px}.facility-plot-art{width:47px;height:42px}.facility-plot b{font-size:9px}.facility-plot small{font-size:8px}.plot-prayer{left:15%;top:35%}.plot-archive{left:76%;top:37%}.plot-lobby{left:48%;top:35%}.plot-training{left:81%;top:55%}.plot-workshop{left:73%;top:76%}.facility-inspector{left:8px;right:8px;bottom:10px;width:auto}.facility-detail-card{grid-template-columns:90px 1fr;gap:8px;padding:8px}.facility-detail-art{min-height:173px}.facility-detail-heading h2{font-size:15px}.facility-detail-copy>p{font-size:10px}.facility-yield{padding:6px}.facility-yield b{font-size:10px}.facility-upgrade{padding:7px;font-size:10px}.facility-upgrade span{font-size:8px}.world-signpost{right:9px;bottom:194px;font-size:9px}.business-turnbar{grid-template-columns:1fr 112px;gap:7px;padding:10px}.turnbar-copy{grid-column:1/-1}.turnbar-focus{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.business-focus-option{min-height:43px}.business-focus-option small{font-size:8px}.business-open-btn{grid-column:2;grid-row:2;grid-template-columns:1fr;justify-items:center;min-height:91px;padding:6px}.business-open-btn>span{grid-row:auto;width:27px;height:27px;font-size:17px}.business-open-btn>b{font-size:11px}.business-open-btn>small{text-align:center;font-size:8px}.business-combos{grid-template-columns:1fr;padding:0 9px 10px}.business-combo{padding:6px 8px}.business-lower-grid{display:flex;flex-direction:column}.faith-shop-grid{grid-template-columns:repeat(2,minmax(0,1fr));padding:8px}.faith-product{padding:7px}.faith-product-head em{display:none}.business-report{max-height:260px}.business-page .panel-head{padding:9px 10px}.business-social-actions{justify-content:stretch}.business-social-actions .big-btn{max-width:none;flex:1;padding:8px}}

/* 系统页面内容较长，滚轮在主视图内滚动，避免被视口裁掉。 */
.page#page-group{overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-gutter:stable}
.page#page-group>.business-page{flex:0 0 auto}
.business-ledger .resource-chip>span{font-size:10px;color:#697d6c;white-space:nowrap}
.business-turnbar{grid-template-columns:minmax(180px,.7fr) minmax(420px,2.3fr) minmax(150px,.6fr)}
.turnbar-focus{grid-template-columns:repeat(3,minmax(0,1fr))}
.business-live-status{display:grid;grid-template-columns:16px 1fr;align-content:center;column-gap:8px;min-height:57px;padding:8px 12px;border:1px solid #d4e0d1;border-radius:10px;background:linear-gradient(145deg,#f8fbf3,#edf4e9);color:#315b43}
.business-live-status i{grid-row:span 2;align-self:center;width:10px;height:10px;border-radius:50%;background:#56a56b;box-shadow:0 0 0 4px rgba(86,165,107,.14);animation:business-live-pulse 1.8s ease-in-out infinite}
.business-live-status b{font-size:12px}.business-live-status small{font-size:10px;color:#6e806e}
@keyframes business-live-pulse{50%{box-shadow:0 0 0 7px rgba(86,165,107,.04);opacity:.72}}
.business-lower-grid{grid-template-columns:1fr}
.facility-inspector.is-store{left:20px;right:20px;bottom:19px;width:auto;max-height:calc(100% - 150px);overflow:auto;border-radius:16px;box-shadow:0 16px 38px rgba(14,29,24,.4)}
.facility-store-card{padding:14px;border:1px solid rgba(247,232,187,.8);border-radius:15px;background:linear-gradient(145deg,rgba(252,252,242,.98),rgba(240,246,231,.98));color:#284236}
.facility-store-heading{display:grid;grid-template-columns:64px minmax(180px,1fr) auto auto;align-items:center;gap:12px;padding:2px 2px 12px;border-bottom:1px solid #dce5d7}
.facility-store-mark{width:60px;height:58px;border:1px solid #d3dfce;border-radius:11px;background-color:#edf3e8;background-image:url('../assets/scene/moon-curtain-facilities-v1.png');background-repeat:no-repeat;background-size:300% 200%;background-position:0 100%}
.facility-store-heading small{font-size:10px;color:#907b4d;letter-spacing:.05em}.facility-store-heading h2{margin:2px 0;color:#284b3d;font-size:17px}.facility-store-heading p{margin:0;color:#617565;font-size:11px}
.facility-store-heading .faith-balance{justify-self:end;white-space:nowrap}.store-back{padding:8px 11px;border:1px solid #c8d7c5;border-radius:7px;background:#fff;color:#4b6c53;font-size:11px}.store-back:hover{background:#edf5e9}
.facility-store-card .faith-shop-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:12px 0 0}
.facility-store-card .faith-product{min-width:0;padding:10px;border-color:#dbe3d5;background:linear-gradient(145deg,#fff,#f7f9f2)}
@media(max-width:1050px){.facility-inspector.is-store{left:14px;right:14px;bottom:14px;width:auto;max-height:calc(100% - 140px)}.facility-store-card .faith-shop-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.business-turnbar{grid-template-columns:140px 1fr 160px}}
@media(max-width:620px){.facility-inspector.is-store{left:8px;right:8px;bottom:10px;max-height:72%}.facility-store-card{padding:9px}.facility-store-heading{grid-template-columns:42px 1fr auto;gap:7px;padding-bottom:8px}.facility-store-mark{width:40px;height:40px}.facility-store-heading h2{font-size:14px}.facility-store-heading p{font-size:9px}.facility-store-heading .faith-balance{grid-column:2;justify-self:start;font-size:9px;padding:3px 6px}.facility-store-heading .faith-balance b{font-size:12px}.store-back{grid-column:3;grid-row:1/3;padding:6px;font-size:9px}.facility-store-card .faith-shop-grid{grid-template-columns:1fr;gap:6px;padding-top:8px}.facility-store-card .faith-product{display:grid;grid-template-columns:1fr auto;gap:5px;padding:7px}.facility-store-card .faith-product-head{grid-column:1/-1}.facility-store-card .faith-product>p{grid-column:1/-1;min-height:0;margin:0;font-size:10px}.facility-store-card .faith-buy{grid-column:1/-1}}
.library-card.unique-card{grid-column:1/-1;position:relative;order:-1;isolation:isolate;overflow:hidden;padding:17px 19px;border:2px solid #bd7b27;background:radial-gradient(ellipse at 94% 0,rgba(255,198,82,.36),transparent 38%),linear-gradient(112deg,#fff0c9 0%,#fff8e7 50%,#f4e7ff 100%);box-shadow:0 7px 20px rgba(133,84,25,.18),inset 0 0 0 1px rgba(255,255,255,.85)}
.library-card.unique-card::before{content:"";position:absolute;z-index:-1;inset:0 auto 0 0;width:6px;background:linear-gradient(#f3c354,#d88a32 52%,#9561be)}
.library-card.unique-card .library-card-icon{width:36px;height:36px;background:linear-gradient(145deg,#f8cf68,#dfb3ed);color:#663a80;font-size:22px}
.library-card.unique-card .library-card-top b{color:#492c5d;font-size:17px}
.unique-card-label{padding:4px 9px;border:1px solid #c28f44;border-radius:20px;background:#fff1c4;color:#744b14;font-size:11px;font-weight:800;white-space:nowrap}
.library-card.unique-card .library-card-cost{padding:5px 10px;border-radius:6px;background:#5e3b76;color:#fff4c8;font-weight:800}
.library-card.unique-card p{color:#382c43;font-size:14px;font-weight:600}
.library-card.unique-card .library-card-status{color:#604516;font-weight:700}
.library-card.unique-card .library-card-actions .mini-btn.eq{border-color:#80509c;background:linear-gradient(120deg,#65417c,#a067ad);color:#fff}
@media(max-width:820px){.library-card.unique-card{grid-column:1;padding:12px}}
.home-menu-heading h1 small{display:inline-flex;align-items:center;gap:5px;margin-left:12px;padding:5px 10px;border:1px solid #d4b767;border-radius:999px;background:linear-gradient(135deg,rgba(24,48,48,.96),rgba(47,83,69,.94));box-shadow:inset 0 0 0 1px rgba(255,255,255,.1),0 3px 10px rgba(5,19,22,.28);color:#f3d77f;font:700 11px/1.1 var(--font);letter-spacing:.06em;text-shadow:none}
.home-menu-heading h1 small::before{content:"✦";color:#f3d77f;font-size:10px}
.home-menu-heading h1 small b{color:#fff6d6;font-size:12px;font-weight:800}
@media(max-width:820px){.home-menu-heading h1 small{margin:3px 0 0 8px;padding:4px 8px;font-size:10px}}
.business-day-result{display:grid;gap:11px;padding:3px}.business-result-banner{display:grid;gap:3px;padding:13px 15px;border:1px solid #e2d3a7;border-radius:10px;background:linear-gradient(105deg,#f8f1d9,#fffdf3)}.business-result-banner span{color:#8c7540;font-size:10px;letter-spacing:.08em}.business-result-banner b{color:#36553d;font-size:18px}.business-result-banner small{color:#6b7863;font-size:11px}.business-result-gains{display:grid;grid-template-columns:repeat(auto-fit,minmax(105px,1fr));gap:7px}.business-result-gains>div{display:grid;grid-template-columns:24px 1fr;align-items:center;column-gap:5px;padding:8px;border:1px solid #dce4d5;border-radius:9px;background:#f8faf3}.business-result-gains i{grid-row:span 2;display:grid;place-items:center;width:23px;height:23px;border-radius:50%;background:#edf0dd;color:#997537;font-style:normal}.business-result-gains span{font-size:9px;color:#76816e}.business-result-gains b{font-size:14px;color:#356b49}.business-result-items{padding:9px 11px;border:1px solid #e4dbbd;border-radius:9px;background:#fffaf0}.business-result-items h3{margin:0 0 7px;color:#725d34;font-size:12px}.business-result-items ul,.business-result-events{display:grid;gap:5px;margin:0;padding:0;list-style:none}.business-result-items li{display:flex;gap:8px;align-items:center;padding:5px 7px;border-radius:7px;background:#fff}.business-result-items li span{color:#bd943e}.business-result-items li b{flex:1;color:#3d5f44;font-size:11px}.business-result-items li em{color:#7c846e;font-size:10px;font-style:normal}.business-result-events{max-height:210px;overflow:auto;padding:9px 11px;border-left:3px solid #c6ad67;border-radius:0 8px 8px 0;background:#f4f7ee;color:#5b705b;font-size:10px;line-height:1.55}
@media(max-width:620px){.business-result-gains{grid-template-columns:repeat(2,minmax(0,1fr))}.business-result-events{max-height:180px}}

.facility-upgrade{font-family:inherit;font-size:11px;font-weight:700}

/* 战斗界面：明确的战场层次、清楚的卡牌信息与抽牌入场演出 */
.battle-scene{background:#10191d;color:#f4f5e9}
.battle-bg{filter:saturate(.88) brightness(.78)}
.battle-top{padding:13px clamp(16px,3vw,42px);background:linear-gradient(180deg,rgba(9,20,23,.92),rgba(13,26,27,.72));border-bottom:1px solid rgba(231,199,119,.42);box-shadow:0 8px 24px rgba(0,0,0,.2)}
.battle-stage-name{font:700 17px/1.2 "Microsoft YaHei UI","Microsoft YaHei",system-ui,sans-serif;letter-spacing:.04em;text-shadow:0 2px 8px #07110f}
.battle-turn{padding:7px 12px;border:1px solid rgba(241,218,158,.32);border-radius:999px;background:rgba(6,18,18,.72);color:#eef1df;font-size:13px}
.battle-turn b{margin-left:3px;color:#f4d27a;font-size:17px}
.battle-field{gap:clamp(12px,3vw,42px);padding:16px clamp(14px,4vw,60px);background:linear-gradient(90deg,rgba(6,14,17,.16),transparent 40%,rgba(6,14,17,.12))}
.battle-side.ally{position:relative;isolation:isolate}
.battle-side.ally::before{content:"南北洛";position:absolute;z-index:-1;left:2%;bottom:8%;padding:6px 12px;border-left:3px solid #e6c77b;background:linear-gradient(90deg,rgba(11,24,25,.78),transparent);color:rgba(255,246,211,.72);font-size:12px;letter-spacing:.18em}
.battle-side.enemies .unit{position:relative;filter:drop-shadow(0 15px 25px rgba(0,0,0,.24))}
.unit-card{border:1px solid rgba(238,222,174,.3);border-radius:12px;background:linear-gradient(145deg,rgba(18,34,34,.96),rgba(10,20,23,.94));box-shadow:0 12px 30px rgba(0,0,0,.34),inset 0 1px rgba(255,255,255,.07)}
.unit-name{color:#fbf5e6;font-size:15px;font-weight:750}
.unit-lv{color:#c6d0c7;font-size:11px}
.sr-lb,.sr-v{color:#d2ddd3;font-size:11px}
.unit-face{background:#263d39;border-color:rgba(235,222,179,.35)}
.st{font-size:10px}
.battle-bottom{grid-template-columns:minmax(180px,.65fr) minmax(0,2.1fr);align-items:end;gap:14px;padding:0 clamp(12px,2vw,28px) 16px}
.battle-log{height:146px;border:1px solid rgba(228,217,174,.3);border-radius:12px;background:rgba(8,20,22,.88);color:#eef2e9;font-size:12px;line-height:1.8;box-shadow:0 12px 25px rgba(0,0,0,.22)}
.battle-cmd{gap:8px;padding:11px 13px;border:1px solid rgba(230,218,174,.4);border-radius:16px;background:linear-gradient(145deg,rgba(13,29,29,.96),rgba(9,20,24,.95));box-shadow:0 16px 32px rgba(0,0,0,.3)}
.hand{gap:10px;min-height:156px;padding:8px 6px 12px;perspective:900px}
.card{flex:1 0 126px;max-width:180px;min-height:137px;padding:15px 12px 11px;border:1px solid #78917c;border-radius:12px;background:linear-gradient(155deg,#f4f0df,#dfe9dd 75%);color:#203c32;box-shadow:0 5px 0 #344f45,0 12px 20px rgba(0,0,0,.27);transition:transform .2s cubic-bezier(.2,.8,.2,1),box-shadow .2s,border-color .2s;overflow:visible}
.card.attack{border-color:#c57f69;background:linear-gradient(155deg,#fff0e7,#f1d8d1 78%);box-shadow:0 5px 0 #744b43,0 12px 20px rgba(0,0,0,.25)}
.card.skill{border-color:#6c9b9a;background:linear-gradient(155deg,#e9f6ec,#d2e9df 78%);box-shadow:0 5px 0 #365f59,0 12px 20px rgba(0,0,0,.25)}
.card.r2{border-color:#9274bd}.card.r3{border-color:#c79d43}
.card strong{color:#20392f;font-size:14px;font-weight:800;line-height:1.35}
.card small{color:#3e574b;font-size:12px;font-weight:650;line-height:1.5}
.card-ico{color:#477461;font-size:23px}
.card-cost{left:-5px;top:-7px;width:28px;height:28px;border:2px solid #fff8df;background:linear-gradient(145deg,#f3d984,#cf9e43);color:#382e16;box-shadow:0 2px 7px rgba(34,39,24,.26);font-size:14px}
.card:hover:not(:disabled){z-index:5;transform:translateY(-11px) rotate(-1deg);box-shadow:0 7px 0 #344f45,0 20px 26px rgba(0,0,0,.34)}
.card:disabled{opacity:.66;filter:saturate(.58)}
.card.unique{border:2px solid #c79842;background:radial-gradient(ellipse at 92% 2%,rgba(255,215,119,.52),transparent 43%),linear-gradient(145deg,#fff3c9,#e8dfef);box-shadow:0 5px 0 #735b34,0 0 20px rgba(248,206,111,.19)}
.card.unique strong{color:#4c315d}.card.unique .card-ico{color:#8056a0}
.battle-actions{min-height:41px;padding:3px 2px 0}
.energy-badge{display:grid;grid-template-columns:20px auto auto;align-items:center;gap:5px;padding:7px 11px;border:1px solid #d9bb65;border-radius:9px;background:linear-gradient(145deg,#f5e2a1,#d8b85e);color:#3a321d;box-shadow:inset 0 1px rgba(255,255,255,.75)}
.energy-badge b{font-size:17px}.energy-badge b small{font-size:12px}
.deck-count{display:flex;justify-content:center;gap:12px;color:#e4eadf;font-size:11px;text-align:left}
.deck-count b{color:#f2d785;font-size:13px}
.cmd-btn.end-turn{padding:10px 16px;border:1px solid #d6b960;border-radius:9px;background:linear-gradient(140deg,#dfc16d,#b79242);color:#302a19;font-size:13px;font-weight:800;box-shadow:0 3px 0 #705c32}
.cmd-btn.end-turn:hover:not(:disabled){color:#171c15;border-color:#f2dc8c;filter:brightness(1.08)}
.draw-enter{transform-origin:50% 110%;animation:battle-card-deal .48s cubic-bezier(.16,.8,.22,1) both;animation-delay:calc(var(--deal-index,0)*85ms)}
@keyframes battle-card-deal{0%{opacity:0;transform:translate(100px,90px) rotate(12deg) scale(.58);filter:brightness(1.9)}62%{opacity:1;transform:translate(-4px,-12px) rotate(-2deg) scale(1.04);filter:brightness(1.15)}100%{opacity:1;transform:translate(0,0) rotate(0) scale(1);filter:none}}

/* 灵界斩：蓄势符印、独立斩击立绘、冲击停顿与目标受击光弧 */
.battle-scene .ally-figure .zero-cut-rune,.battle-scene .ally-figure .zero-cut-arc,.battle-scene .ally-figure .zero-cut-flare{position:absolute;z-index:4;left:50%;pointer-events:none;opacity:0}
.battle-scene .ally-figure .zero-cut-rune{bottom:15%;display:grid;place-items:center;width:clamp(78px,13vh,138px);aspect-ratio:1;border:2px solid rgba(172,238,229,.86);border-radius:50%;background:radial-gradient(circle,rgba(107,245,227,.2),rgba(27,77,79,.06) 62%,transparent 68%);color:#f5fff0;text-shadow:0 0 14px #8effed;box-shadow:0 0 16px rgba(115,255,233,.76),inset 0 0 24px rgba(115,255,233,.36);transform:translateX(-50%) scale(.4)}
.battle-scene .ally-figure .zero-cut-rune span{font:800 clamp(30px,6vh,56px)/1 "Microsoft YaHei UI","Microsoft YaHei",sans-serif}
.battle-scene .ally-figure .zero-cut-arc{bottom:30%;width:0;height:9px;border-radius:50%;background:linear-gradient(90deg,transparent,#b8fff1 20%,#fff 49%,#85f3e6 70%,transparent);filter:drop-shadow(0 0 14px #8effed);transform:translateX(-50%) rotate(-24deg)}
.battle-scene .ally-figure .zero-cut-flare{inset:0;left:0;background:radial-gradient(ellipse at 55% 48%,rgba(193,255,239,.9),rgba(99,244,221,.25) 22%,transparent 62%);mix-blend-mode:screen}
.battle-scene .ally-unit.zero-cut-charge .ally-figure{animation:zero-cut-gather .36s ease-out both}
.battle-scene .ally-unit.zero-cut-charge .hero-idle-pose{filter:drop-shadow(0 0 16px rgba(111,249,229,.72)) brightness(1.12)}
.battle-scene .ally-unit.zero-cut-charge .zero-cut-rune{animation:zero-cut-rune-open .42s cubic-bezier(.16,.8,.22,1) both}
.battle-scene .ally-unit.zero-cut-strike .hero-idle-pose{display:none}
.battle-scene .ally-unit.zero-cut-strike .hero-attack-pose{position:absolute;left:50%;bottom:0;display:block;width:auto;height:88%;max-height:52vh;max-width:96%;object-fit:contain;object-position:center bottom;transform:translateX(-50%);transform-origin:55% 78%;filter:drop-shadow(0 0 20px rgba(133,255,238,.82));animation:zero-cut-rush .42s cubic-bezier(.16,.76,.18,1) both}
.battle-scene .ally-unit.zero-cut-strike .zero-cut-rune{animation:zero-cut-rune-burst .44s ease-out both}
.battle-scene .ally-unit.zero-cut-strike .zero-cut-arc{animation:zero-cut-arc-draw .4s ease-out both}
.battle-scene .ally-unit.zero-cut-impact .ally-figure{animation:zero-cut-impact-beat .28s steps(2,end) 2}
.battle-scene .ally-unit.zero-cut-impact .zero-cut-flare{animation:zero-cut-flash .32s ease-out both}
.battle-scene .battle-side.enemies .unit.zero-cut-hit{animation:zero-cut-target-hit .62s cubic-bezier(.2,.75,.22,1) both;filter:brightness(1.55) drop-shadow(0 0 18px rgba(122,255,238,.72))}
.battle-scene .battle-side.enemies .unit.zero-cut-hit::after{content:"";position:absolute;z-index:8;left:12%;right:12%;top:43%;height:3px;background:linear-gradient(90deg,transparent,#d2fff3,#fff,rgba(111,255,229,.92),transparent);box-shadow:0 0 18px 5px rgba(115,255,229,.68);transform:rotate(-19deg);animation:zero-cut-impact-line .5s ease-out both;pointer-events:none}
@keyframes zero-cut-gather{0%{transform:translateY(0)}55%{transform:translateY(7px) scale(.98)}100%{transform:translateY(-2px)}}
@keyframes zero-cut-rune-open{0%{opacity:0;transform:translateX(-50%) scale(.4) rotate(-40deg)}65%{opacity:1;transform:translateX(-50%) scale(1.08) rotate(8deg)}100%{opacity:.82;transform:translateX(-50%) scale(1) rotate(0)}}
@keyframes zero-cut-rune-burst{0%{opacity:.85;transform:translateX(-50%) scale(1)}100%{opacity:0;transform:translateX(-50%) scale(2.25) rotate(45deg)}}
@keyframes zero-cut-rush{0%{transform:translateX(-50%) translate(0,0) scale(1);filter:drop-shadow(0 0 12px rgba(133,255,238,.7))}32%{transform:translateX(-50%) translate(-15px,3px) scale(1.04)}58%{transform:translateX(-50%) translate(68px,-8px) scale(1.08) rotate(-5deg);filter:drop-shadow(0 0 28px #b8fff1) brightness(1.35)}100%{transform:translateX(-50%) translate(0,0) scale(1);filter:drop-shadow(0 0 16px rgba(133,255,238,.82))}}
@keyframes zero-cut-arc-draw{0%{opacity:0;width:0;transform:translateX(-50%) rotate(-24deg)}35%{opacity:1;width:42%}100%{opacity:0;width:80%;transform:translateX(-50%) rotate(-18deg) translateY(-18px)}}
@keyframes zero-cut-impact-beat{0%,100%{transform:translate(0)}35%{transform:translate(-7px,2px)}70%{transform:translate(5px,-1px)}}
@keyframes zero-cut-flash{0%{opacity:0}28%{opacity:.95}100%{opacity:0}}
@keyframes zero-cut-target-hit{0%{transform:translateX(0);filter:brightness(1)}16%{transform:translateX(-12px);filter:brightness(2.2)}35%{transform:translateX(9px)}55%{transform:translateX(-5px);filter:brightness(1.7)}100%{transform:translateX(0);filter:brightness(1)}}
@keyframes zero-cut-impact-line{0%{opacity:0;transform:scaleX(.1) rotate(-19deg)}22%{opacity:1;transform:scaleX(1.1) rotate(-19deg)}100%{opacity:0;transform:scaleX(1.4) rotate(-19deg)}}

/* 经营页说明文案：覆盖旧的 9px 淡字规则，保证截图尺寸下也容易读。 */
.business-page .business-focus-option b{font-family:"霞鹜文楷","LXGW WenKai","Microsoft YaHei UI","Microsoft YaHei",system-ui,sans-serif;font-size:13px;font-weight:800;line-height:1.35;color:#263f32}
.business-page .business-focus-option small{font-family:"霞鹜文楷","LXGW WenKai","Microsoft YaHei UI","Microsoft YaHei",system-ui,sans-serif;font-size:12px;font-weight:600;line-height:1.4;color:#405a47}
.business-page .business-combo b{font-family:"霞鹜文楷","LXGW WenKai","Microsoft YaHei UI","Microsoft YaHei",system-ui,sans-serif;font-size:14px;font-weight:800;line-height:1.4;color:#263f32}
.business-page .business-combo small,.business-page .business-combo em{font-family:"霞鹜文楷","LXGW WenKai","Microsoft YaHei UI","Microsoft YaHei",system-ui,sans-serif;font-size:12px;font-weight:600;line-height:1.5;color:#405a47}
.business-page .turnbar-copy .eyebrow{font-size:11px;font-weight:700;color:#70562e}
.business-page .turnbar-copy>b{font-size:17px;font-weight:800;color:#263f32}
.business-page .turnbar-copy>small,.business-page .business-live-status small{font-size:12px;font-weight:600;line-height:1.5;color:#405a47}
.business-page .business-open-btn>small{font-size:11px;font-weight:700;color:#4e4022}
@media(max-width:820px){.battle-bottom{grid-template-columns:1fr;padding:8px}.battle-log{height:70px}.business-page .business-focus-option{min-height:52px}.business-page .business-focus-option small{font-size:11px}}
@media(max-width:620px){.battle-stage-name{font-size:14px}.battle-field{min-height:310px;padding:9px 10px}.battle-bottom{gap:7px}.battle-log{height:58px;font-size:11px}.battle-cmd{padding:8px}.hand{min-height:136px;gap:8px}.card{min-width:112px;flex-basis:112px;min-height:124px;padding:13px 10px 9px}.card strong{font-size:13px}.card small{font-size:11px}.deck-count{gap:6px;font-size:10px}.battle-scene .ally-unit.zero-cut-strike .hero-attack-pose{height:76%;max-height:38vh}}
@media(prefers-reduced-motion:reduce){.draw-enter,.battle-scene .ally-unit.zero-cut-charge .ally-figure,.battle-scene .ally-unit.zero-cut-charge .zero-cut-rune,.battle-scene .ally-unit.zero-cut-strike .hero-attack-pose,.battle-scene .ally-unit.zero-cut-strike .zero-cut-rune,.battle-scene .ally-unit.zero-cut-strike .zero-cut-arc,.battle-scene .ally-unit.zero-cut-impact .ally-figure,.battle-scene .ally-unit.zero-cut-impact .zero-cut-flare,.battle-scene .battle-side.enemies .unit.zero-cut-hit,.battle-scene .battle-side.enemies .unit.zero-cut-hit::after{animation-duration:.01ms!important;animation-iteration-count:1!important}}


