@import url('./lxgw-wenkai-local.css');
/* 墨线竞技：原生控件与轻量纸色，物理坐标与命中区域保持不变。 */
:root{color-scheme:light;font-family:"LXGW WenKai Lite",system-ui,-apple-system,"PingFang SC",sans-serif;color:#202b31;background:#e9e1d3;font-size:16px;--ink:#202b31;--paper:#faf5e9;--red:#a33329}
*{box-sizing:border-box}body{margin:0;padding:env(safe-area-inset-top) 12px env(safe-area-inset-bottom)}
.game{max-width:480px;margin:14px auto 24px;padding:14px;background:var(--paper);border:2px solid var(--ink);border-radius:8px 3px 10px 4px;box-shadow:4px 5px 0 #202b3120}header,.score,.actions{display:flex;align-items:center;justify-content:space-between;gap:8px}
header{font-size:.75rem}.header-meta{display:grid;justify-items:end;gap:3px;text-align:right}.release{color:var(--red);font-size:.7rem}.version-picker{display:flex;align-items:center;gap:5px;margin:0;font-size:.75rem}.version-picker select{width:auto;min-height:44px;padding:4px;font-size:.75rem}a{color:inherit;min-height:44px;display:inline-flex;align-items:center;text-underline-offset:4px}h1{font-family:"Kaiti SC","STKaiti",serif;font-size:2.5rem;letter-spacing:.09em;margin:12px 0 3px}.title{border-bottom:3px solid var(--ink);padding-bottom:10px}.title>span{font-size:.8rem;color:#665b52}.score{padding:12px 0}#turn{color:var(--red)}#count{font-variant-numeric:tabular-nums;font-size:.8rem}
canvas{display:block;width:100%;height:auto;aspect-ratio:612/692;border-radius:2px;touch-action:none;user-select:none;-webkit-user-select:none}
#status{min-height:3em;margin:12px 0;line-height:1.6;font-size:.875rem;color:#564d45}
button,select,input{font:inherit}button{min-height:44px;border:2px solid var(--ink);border-radius:3px 6px 2px 4px;background:var(--paper);color:var(--ink);padding:8px 10px;cursor:pointer;box-shadow:2px 2px 0 var(--ink)}.actions button{flex:1;padding:7px 3px;font-size:.8rem}#jump:not(:disabled),#fire:not(:disabled){background:var(--red);color:white}button:disabled{opacity:.4;cursor:default;box-shadow:none}button:not(:disabled):hover{filter:brightness(.93)}button:focus-visible,summary:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #177d91;outline-offset:3px}
details{border-top:1px solid #b8ac9c;margin-top:20px;padding-top:10px;font-size:.875rem;line-height:1.7}summary{cursor:pointer;min-height:44px}label{display:block;margin:12px 0}select{width:100%;min-height:44px;padding:8px;background:var(--paper);color:var(--ink);border:1px solid var(--ink);border-radius:3px}input[type=range]{display:block;width:100%;min-height:44px;accent-color:var(--red)}footer{font-size:.7rem;line-height:1.7;color:#6b6258;text-align:center;margin-top:14px}.notes-link{margin-top:14px;border-bottom:2px solid var(--ink);font-weight:700}
@media(max-width:360px){body{padding-left:6px;padding-right:6px}.game{padding:9px}h1{font-size:2.1rem}.actions{gap:5px}.actions button{font-size:.75rem}}
@media all{:where(html[data-game-motion="reduce"]) *{scroll-behavior:auto}}
/* v2.0：真实手绘贴图、漫画生命栏与结果演出。 */
body{background:#dfd7c8}.game{max-width:560px;padding:18px 20px 24px;background-color:#f8f0df;background-image:url('../assets/board.webp');background-size:1800px auto;background-position:center top;border:3px solid #202a2c;border-radius:13px 7px 17px 8px;box-shadow:7px 8px 0 #202b312b}header{font-size:.72rem}.header-meta>span:first-child{letter-spacing:.08em}.release{display:none}.title{position:relative;border-bottom:none;padding:0 0 8px}.title h1{margin:8px 0 0;line-height:0}.title h1 img{display:block;width:100%;height:auto;max-height:155px;object-fit:contain;object-position:left center}.title>span{display:block;color:#f8efd9;background:#24343b;clip-path:polygon(1% 10%,96% 0,100% 80%,3% 100%,0 60%);padding:7px 18px;font-size:.8rem;width:max-content;max-width:100%;letter-spacing:.13em}.score{padding:8px 2px;font-size:.82rem}.life-bar{display:flex;justify-content:space-between;align-items:center;border-top:2px solid #2a3436;border-bottom:1px solid #9b8a73;padding:10px 0 9px;margin-top:9px}.life{display:flex;gap:7px;align-items:center}.life div{display:grid;gap:1px}.life b{font-size:.72rem;letter-spacing:.12em}.life span{font-size:1.4rem;letter-spacing:.12em;line-height:1.15}.life.red span{color:#ae2b20}.life.black{text-align:right}.life.black span{color:#1b3344}.versus{font-family:serif;font-size:.9rem;color:#7a6d5e;transform:rotate(-7deg)}.arena{position:relative;isolation:isolate}canvas{border-radius:0}.impact{position:absolute;left:4%;right:4%;top:38%;z-index:2;padding:13px 10px;background:#202e36;color:#fff0d3;font-family:serif;font-weight:900;font-size:1.2rem;text-align:center;box-shadow:4px 5px 0 #b13224;transform:rotate(-3deg) scale(.9);opacity:0;transition:opacity .12s,transform .15s;pointer-events:none}.impact.visible{opacity:1;transform:rotate(-3deg) scale(1)}.impact.returning{background:#775a2d;box-shadow:4px 5px 0 #243641}.actions{gap:9px}.actions button{font-family:serif;font-weight:bold;font-size:.9rem;border:3px double #222e34;border-radius:2px;box-shadow:3px 4px 0 #202b313b;background-image:url('../assets/board.webp');background-size:900px auto}.actions #jump:not(:disabled),#playAgain{background:#a12e23;color:#fff4dd;box-shadow:3px 4px 0 #202b31}#status{min-height:2.8em;font-size:.82rem}details{margin-top:14px}#showResult{width:100%;margin-top:12px;background:#9c2b23;color:#fff0d5}button[hidden]{display:none}.notes-link{border-bottom:3px double #28353a}
#result{padding:0;border:0;max-width:min(440px,92vw);width:92vw;background:transparent;overflow:visible;color:#23343c}#result::backdrop{background:#0c1821c9;backdrop-filter:blur(5px)}.result-card{position:relative;isolation:isolate;text-align:center;padding:30px 22px 24px;background:#f4e7ce url('../assets/board.webp') center top/100% auto;border:4px solid #192b36;box-shadow:9px 10px 0 #a43125;animation:result-in .45s cubic-bezier(.2,.9,.2,1.2)}.result-card::before{content:'';position:absolute;inset:-30px;z-index:-1;background:repeating-conic-gradient(from 15deg,#d2a44a 0deg 3deg,transparent 3deg 22deg);clip-path:polygon(50% 0,58% 25%,77% 5%,75% 31%,100% 20%,83% 45%,100% 60%,77% 64%,95% 91%,65% 81%,53% 100%,43% 82%,15% 96%,23% 72%,0 62%,22% 48%,0 29%,30% 31%,27% 2%,43% 25%);animation:burst-in .65s ease-out}.result-eyebrow{font-size:.85rem;letter-spacing:.5em}.victory-emblem{margin:14px auto 8px;width:106px;height:106px;border-radius:50%;display:grid;place-items:center;background:url('../assets/red.webp') center/contain no-repeat;color:#fff0d1;font-family:serif;font-size:4.2rem;font-weight:900;transform:rotate(-8deg)}#result[data-winner=black] .victory-emblem{background-image:url('../assets/black.webp')}#result[data-winner=draw] .victory-emblem{display:none}#result h2{font-family:"Kaiti SC","STKaiti",serif;font-size:3rem;margin:12px 0;color:#9e2c21;letter-spacing:.06em}#result[data-winner=black] h2{color:#18354a}#resultDetail{line-height:1.7;font-size:.9rem}#resultScore{display:block;margin:16px 0;font-size:1.4rem;letter-spacing:.1em}.result-actions{display:grid;gap:10px;margin-top:24px}.result-actions button{min-height:48px;font-weight:bold}@keyframes result-in{from{transform:scale(.6) rotate(-8deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}@keyframes burst-in{from{transform:scale(.3) rotate(-20deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}
@media(max-width:430px){.game{padding:10px;margin-top:8px}.title h1 img{max-height:115px}.life-bar{padding:8px 0}.life img{width:30px;height:30px}.life span{font-size:1.2rem}.actions button{font-size:.8rem}.actions{gap:6px}.result-card{padding:24px 14px}#result h2{font-size:2.6rem}}
@media all{:where(html[data-game-motion="reduce"]) .result-card,:where(html[data-game-motion="reduce"]) .result-card::before{animation:none}:where(html[data-game-motion="reduce"]) .impact{transition:none;transform:none}:where(html[data-game-motion="reduce"]) .impact.visible{transform:none}}
/* 纸纹取空白区域，避免素材边框或河流压在按钮及正文上。 */
.game{background-position:center -110px}.actions button{background-image:none}.result-card{background-size:1500px auto;background-position:center -100px}.result-card::before{opacity:.18}
/* 单屏游戏布局；更新日志页保持普通可滚动文档。 */
html:has(.play-page){height:100%;overflow:hidden}
.play-page{height:100vh;height:100dvh;overflow:hidden;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);overscroll-behavior:none;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}
.play-page .game{height:100%;width:100%;max-width:560px;margin:0 auto;padding:6px 10px;display:grid;grid-template-rows:44px 44px 24px minmax(0,1fr) auto auto;gap:3px;border-width:2px;border-radius:7px;box-shadow:none;background-size:3000px auto;background-position:center -110px;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.play-page .game img{-webkit-user-drag:none;user-select:none;-webkit-user-select:none;pointer-events:none}
.play-page .compact-header{gap:8px;min-width:0}.play-page .compact-header h1{margin:0;line-height:0;min-width:0;width:clamp(100px,36vw,150px);font-size:0}.play-page .compact-header img{width:100%;height:42px;object-fit:contain;object-position:left center}
.play-page .top-controls{display:flex;align-items:center;gap:4px;min-width:0}.play-page #versionSelect{min-height:44px;width:auto;max-width:112px;font-size:12px;padding:4px;border:1px solid #7f776b;background:#f8efdf}.play-page .menu-toggle{position:relative;display:grid;place-items:center;min-width:48px;width:48px;height:44px;padding:0;border:0;background:none;box-shadow:none;overflow:visible}.play-page .menu-toggle>img{width:47px;height:47px;object-fit:contain;filter:drop-shadow(0 2px 1px #18252c55);transition:transform .12s,filter .12s}.play-page .menu-label{position:absolute;right:-1px;bottom:-4px;padding:1px 4px;border-radius:5px;background:#a92f24;color:#fff4d8;font-size:9px;font-weight:800;line-height:13px;letter-spacing:.08em;box-shadow:0 1px 0 #4c2720}.play-page .menu-toggle::after{content:"";position:absolute;z-index:2;width:72px;height:72px;background:url('../assets/menu-click-vfx.png') center/contain no-repeat;opacity:0;transform:scale(.45) rotate(-12deg);pointer-events:none}.play-page .menu-toggle.clicked>img{transform:scale(.88);filter:drop-shadow(0 0 7px #e1ad47)}.play-page .menu-toggle.clicked::after{animation:menu-click .32s ease-out both}
@keyframes menu-click{0%{opacity:0;transform:scale(.4) rotate(-12deg)}35%{opacity:.9}100%{opacity:0;transform:scale(1.25) rotate(8deg)}}
@media all{:where(html[data-game-motion="reduce"]) .play-page .menu-toggle>img{transition:none}:where(html[data-game-motion="reduce"]) .play-page .menu-toggle.clicked::after{animation:none;opacity:.72;transform:scale(1)}}
.play-page .life-bar{margin:0;padding:2px 0;border-top:1px solid #8b8171}.play-page .life img{width:26px;height:26px}.play-page .life span{font-size:1.08rem}.play-page .life b{font-size:10px}.play-page .score{padding:0 2px;font-size:12px}.play-page #count{display:flex;align-items:center;gap:4px;font-size:11px}.play-page #count b{font-weight:650}.play-page #count i{font-style:normal;color:#857663}
.play-page .mode-mark{display:grid;justify-items:center;gap:1px;min-width:76px;padding:3px 8px;border:1px solid #a98b55;border-radius:4px;background:#f7ead2;color:#263b47;box-shadow:1px 2px 0 #4d392922;line-height:1}.play-page .mode-mark b{font-family:"Kaiti SC","STKaiti",serif;font-size:12px;letter-spacing:.08em}.play-page .mode-mark small{font-size:9px;color:#a23629;letter-spacing:.12em}
.play-page #redCount.lost{animation:count-lost-red .62s ease-out}.play-page #blackCount.lost{animation:count-lost-black .62s ease-out}
@keyframes count-lost-red{0%{color:#a42c20;transform:scale(1)}35%{color:#e03b25;transform:scale(1.34)}100%{color:inherit;transform:scale(1)}}
@keyframes count-lost-black{0%{color:#203c52;transform:scale(1)}35%{color:#14719b;transform:scale(1.34)}100%{color:inherit;transform:scale(1)}}
.play-page .arena{min-height:0;min-width:0;display:grid;place-items:center;overflow:hidden}.play-page canvas{max-width:100%;max-height:100%;flex:none;touch-action:none}.play-page #status{margin:0;padding:4px 2px;min-height:34px;max-height:38px;line-height:15px;font-size:12px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.play-page .context-actions{display:flex;justify-content:center;gap:6px}.play-page .context-actions[hidden]{display:none}.play-page .context-actions button{min-height:44px;font-size:13px;padding:6px 12px;flex:1}.play-page #showResult{margin:0}
.play-page dialog{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:pan-y}.sheet{background:#faf2e2;color:#26343a;border:3px solid #26343a;border-radius:9px 3px 8px 4px;width:min(440px,calc(100vw - 24px));max-width:calc(100vw - 24px);max-height:calc(100dvh - 28px);overflow:auto;overscroll-behavior:contain;padding:16px;box-shadow:5px 6px 0 #a13226}.sheet::backdrop{background:#13232ba8;backdrop-filter:blur(3px)}.sheet h2{font-family:serif;font-size:1.4rem;margin:8px 0 12px}.sheet p{font-size:14px;line-height:1.6}.sheet .sheet-heading{display:flex;justify-content:space-between;align-items:center;gap:8px}.sheet .sheet-heading button{min-width:44px;box-shadow:none}.settings-brand{display:flex;align-items:center;gap:9px;min-width:0}.settings-brand img{width:40px;height:40px;flex:0 0 40px;border-radius:10px;filter:drop-shadow(0 2px 2px #26343a42)}.settings-brand h2{margin:0}.sheet select{font-size:16px}.sheet nav{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px}.sheet .wide{display:block;width:100%;margin:12px 0}.sheet .cannon-options{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:20px 0}.sheet #cannonJump{background:#a33329;color:#fff4dd}.sheet #release{display:inline;color:#9f3026}.sheet summary{min-height:44px}.cannon-sheet #cannonCancel{border:0;background:none;box-shadow:none;text-decoration:underline;text-underline-offset:4px}.developer-card{display:grid;grid-template-columns:48px 1fr;gap:9px;margin:18px 0 4px;padding:11px;border:1px solid #b7904b;border-radius:7px;background:#f4e7cbb8;box-shadow:inset 0 0 0 3px #fff6e780}.developer-card>img{width:48px;height:48px;border-radius:11px;filter:drop-shadow(0 2px 2px #26343a42)}.developer-card div{display:grid;align-content:center;gap:2px;min-width:0}.developer-card b{font-family:serif;font-size:16px}.developer-card small,.developer-card a{font-size:12px;color:#5b4a37}.developer-card a{width:max-content;max-width:100%;text-decoration-color:#b7904b;text-underline-offset:2px}.developer-card p{grid-column:1/-1;margin:2px 0 0;font-size:11px;line-height:1.5;color:#665543}
@media(max-height:480px){.play-page .game{grid-template-rows:44px 32px 20px minmax(0,1fr) auto auto;gap:1px}.play-page .life img{display:none}.play-page .life div{display:flex;align-items:center;gap:8px}.play-page #status{min-height:22px;max-height:22px;-webkit-line-clamp:1}.play-page .context-actions button{min-height:44px}.play-page .impact{font-size:14px;padding:8px}.play-page #result{max-height:calc(100dvh - 24px);overflow:auto}.play-page .result-card{padding:12px}.play-page .victory-emblem{width:52px;height:52px;font-size:32px;margin:4px auto}.play-page #result h2{font-size:28px;margin:4px}.play-page #resultScore{margin:6px}.play-page .result-actions{margin-top:10px}}
/* 描述性操作提示转为棋盘中央广播，不占据棋盘下方高度。 */
.play-page .game{grid-template-rows:44px 44px 24px minmax(0,1fr) auto}
.play-page #status{position:absolute;width:1px;height:1px;min-height:0;max-height:none;margin:-1px;padding:0;clip-path:inset(50%);overflow:hidden;white-space:nowrap}
.play-page .impact{top:50%;left:5%;right:5%;transform:translateY(-50%) scale(.96);font-size:clamp(14px,3.8vw,19px);line-height:1.6;padding:12px 14px;background:#202e36eb;box-shadow:3px 4px 0 #a43125;pointer-events:none}
.play-page .impact.visible{transform:translateY(-50%) scale(1)}.play-page .impact.red-turn{background:#8d2c23eb;box-shadow:3px 4px 0 #243743}.play-page .impact.black-turn{background:#21394beb;box-shadow:3px 4px 0 #bc8c48}
@media(max-height:480px){.play-page .game{grid-template-rows:44px 32px 20px minmax(0,1fr) auto;gap:1px}.play-page .impact{padding:7px;font-size:13px}}
@media all{:where(html[data-game-motion="reduce"]) .play-page .impact,:where(html[data-game-motion="reduce"]) .play-page .impact.visible{transform:translateY(-50%);transition:none}}
/* v0.2.1：回合常驻主视觉；短提示留在棋盘外，取消中央横幅。 */
.play-page .game{grid-template-rows:44px 44px 60px minmax(0,1fr) auto}
.play-page .turn-panel{min-width:0;padding:3px 8px 0;border-left:5px solid #ab3225;background:#ad322511;border-radius:3px}
.play-page .turn-panel[data-side=black]{border-color:#203c52;background-color:#203c5212}
.play-page .turn-panel .score{min-height:30px;padding:0;gap:6px}.play-page #turn{font-size:19px;line-height:1.25;font-weight:850;color:#a42c20}.play-page .turn-panel[data-side=black] #turn{color:#203c52}
.play-page .turn-hint{position:static;margin:0;min-height:20px;line-height:20px;font-size:12px;color:#625649;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0;transition:opacity .15s;pointer-events:none;background:none;box-shadow:none;transform:none;padding:0}.play-page .turn-hint.visible{opacity:1}
.play-page .life.active-side{filter:drop-shadow(0 1px 1px #806a4833)}.play-page .life.active-side b{text-decoration:underline;text-underline-offset:3px}
@media(max-height:480px){.play-page .game{grid-template-rows:44px 32px 52px minmax(0,1fr) auto}.play-page #turn{font-size:17px}.play-page .turn-panel .score{min-height:26px}}
@media all{:where(html[data-game-motion="reduce"]) .play-page .turn-hint{transition:none}}
/* 回合中的上下文操作统一放在顶部，不再改变棋盘可用高度。 */
.play-page .turn-panel{position:relative}.play-page .turn-actions{position:absolute;right:6px;top:7px;display:flex;gap:5px}.play-page .turn-actions button{min-height:44px;min-width:88px;margin:0;padding:6px 10px;background:#fff4dd;border:2px solid #a33329;color:#922b22;box-shadow:2px 2px 0 #a3332933;font-size:13px;font-weight:700}.play-page .turn-panel[data-jumping=true] .score,.play-page .turn-panel[data-shots=true] .score{padding-right:96px}.play-page .turn-panel[data-jumping=true] #count,.play-page .turn-panel[data-shots=true] #count{visibility:hidden;position:absolute;pointer-events:none}.play-page .turn-panel[data-jumping=true] .turn-hint,.play-page .turn-panel[data-shots=true] .turn-hint{padding-right:96px}
@media(max-height:480px){.play-page .turn-actions{top:3px}}
.play-page .turn-panel[data-faceoff=true] .score,.play-page .turn-panel[data-faceoff=true] .turn-hint{padding-right:104px}.play-page .turn-panel[data-faceoff=true] #count{display:none}
/* 技能令牌：墨底金边；冷却遮罩、数值和底部进度，消耗技能显示场上次数。 */
.play-page .arena{display:grid;grid-template-rows:52px minmax(0,1fr) 52px;align-items:stretch;justify-items:stretch;gap:3px}
.board-wrap{display:grid;place-items:center;min-width:0;min-height:0;overflow:hidden}
.skill-bar{display:flex;gap:8px;align-items:center;min-width:0}.skill-bar.red{justify-content:flex-end;--side:#a53a2c}.skill-bar.black{--side:#274b63}
.skill-button{position:relative;display:flex;align-items:center;gap:5px;min-height:48px;min-width:116px;padding:2px 6px 4px 2px;border:1px solid #b49055;background:#f4e8d4;color:var(--side);box-shadow:1px 2px 0 #513e2722;overflow:hidden;--fill:100%}
.skill-picture{position:relative;display:block;width:38px;height:38px;flex-shrink:0}.skill-picture img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 1px 1px #14232c55)}.skill-picture i{position:absolute;inset:0;background:conic-gradient(transparent var(--fill),#081c30bc 0);border-radius:9px;pointer-events:none}
.skill-picture::after{content:"";position:absolute;inset:-8px;background:url('../assets/ready-vfx-v052-r2.webp') center/contain no-repeat;opacity:0;pointer-events:none}
.skill-picture::before{content:"";position:absolute;inset:-5px;border-radius:50%;opacity:0;pointer-events:none;background:conic-gradient(from 0deg,transparent 0 55%,#d6a64c 62% 70%,transparent 77%);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 0);mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 0)}
.skill-button[data-cooling=true] .skill-picture::before{opacity:.95;animation:skill-cooldown-spin 1.15s linear infinite}.skill-button[data-cooling=true]{box-shadow:0 0 0 1px #b88a43aa}
.skill-button[data-castable=true]{border-color:#d7a23d;box-shadow:0 0 0 1px #fff0b9,0 0 10px #d8943566}.skill-button[data-castable=true] .skill-picture::after{opacity:.82;animation:skill-castable 1.65s ease-in-out infinite}.skill-button[data-castable=true] .skill-state{color:#a33a25;font-weight:800}
.skill-button b{display:block;font-family:serif;font-size:12px;white-space:nowrap}.skill-state{display:block;font-size:10px;line-height:15px;font-variant-numeric:tabular-nums}.skill-progress{position:absolute;bottom:0;left:0;height:3px;width:var(--fill);background:var(--side);transition:width .3s}.skill-button[data-dim=true] .skill-picture{filter:saturate(.2)}
#skillState{padding:8px;border-left:3px solid #b49055;background:#bc94551a}#castSkill:not(:disabled){background:#a43a2d;color:#fff1d6}
.sheet button[hidden]{display:none}
.controller-settings{display:grid;gap:9px;margin:10px 0 14px;padding:12px;border:1px solid #b79865;background:#e8d7ba55}.controller-settings>div:first-child{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.controller-settings>div:first-child small{color:#776858;font-size:11px}.controller-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px}.controller-buttons button{min-height:54px;padding:7px 10px;border:2px solid var(--controller-color);background:#faf0dd;color:var(--controller-color);box-shadow:2px 2px 0 #3c302523;text-align:left}.controller-buttons button b,.controller-buttons button small{display:block}.controller-buttons button small{margin-top:3px;font-size:11px}.controller-buttons button[data-ai=true]{background:var(--controller-color);color:#fff0d4;box-shadow:inset 0 0 0 1px #e8c77a,2px 2px 0 #3c302536}.swap-colors{display:flex;align-items:center;justify-content:space-between;min-height:44px;padding:7px 10px;background:#f7ead3;color:#273b47;border:1px solid #9e8459;box-shadow:none}.swap-colors small{color:#9a3428}
@keyframes skill-castable{0%,100%{opacity:.42;transform:scale(.88) rotate(-3deg)}50%{opacity:.95;transform:scale(1.12) rotate(3deg)}}
@keyframes skill-cooldown-spin{to{transform:rotate(1turn)}}
@media all{:where(html[data-game-motion="reduce"]) .skill-progress{transition:none}:where(html[data-game-motion="reduce"]) .skill-button[data-castable=true] .skill-picture::after,:where(html[data-game-motion="reduce"]) .skill-button[data-cooling=true] .skill-picture::before{animation:none}:where(html[data-game-motion="reduce"]) .skill-button[data-castable=true] .skill-picture::after{opacity:.72}}
@media all{:where(html[data-game-motion="reduce"]) .play-page #redCount.lost,:where(html[data-game-motion="reduce"]) .play-page #blackCount.lost{animation:none;text-decoration:underline 3px #b4452f}}

/* v0.3.4：压缩 HUD，把手机空间还给棋盘。 */
.play-page .game{padding:4px 3px;gap:2px;grid-template-rows:42px 40px 52px minmax(0,1fr) auto}
.play-page .compact-header img{height:40px}.play-page .life-bar{padding:0 2px}
.play-page .turn-panel{position:relative;padding:5px 22px 3px;border:0;border-radius:0;background:transparent;overflow:visible}
.play-page .turn-panel::before{content:"";position:absolute;z-index:0;inset:0 28% 0 0;background:url('../assets/turn-banner-red-v052-r2.webp') left center/100% 100% no-repeat;pointer-events:none}
.play-page .turn-panel[data-side=black]::before{background-image:url('../assets/turn-banner.png')}
.play-page .turn-panel[data-side=black]{border:0;background-color:transparent}
.play-page .turn-panel .score,.play-page .turn-panel .turn-hint{position:relative;z-index:1}.play-page .turn-panel .turn-actions{position:absolute;z-index:2;right:6px;top:4px}.play-page .turn-panel .score{min-height:27px}.play-page #turn{font-size:18px;color:#fff0d3;text-shadow:0 1px 2px #071722}.play-page .turn-panel[data-side=black] #turn{color:#fff0d3}.play-page .turn-panel #count,.play-page .turn-panel #count i{color:#26343a;text-shadow:none}.play-page .turn-hint{width:70%;height:16px;min-height:16px;line-height:16px;color:#fff0d3;text-shadow:0 1px 2px #071722}
.play-page .turn-actions #cancelJump{width:54px;height:49px;min-width:54px;min-height:49px;padding:0;border:0;background:transparent;box-shadow:none}.play-page .turn-actions #cancelJump img{display:block;width:39px;height:39px;margin:0 auto;object-fit:contain}.play-page .turn-actions #cancelJump span{display:block;margin-top:-3px;color:#243641;font-size:8px;line-height:10px;font-weight:850;white-space:nowrap}.play-page .turn-actions #cancelJump:active{transform:scale(.92)}
.play-page .turn-panel.turn-enter{animation:turn-banner-in .38s cubic-bezier(.18,.78,.24,1)}
.play-page .turn-panel.broadcast{animation:turn-banner-pulse .34s ease-out}
@keyframes turn-banner-in{from{opacity:.25;transform:translateX(-14px) scale(.97)}to{opacity:1;transform:none}}
@keyframes turn-banner-pulse{0%{filter:brightness(1);transform:scale(1)}45%{filter:brightness(1.1);transform:scale(1.012)}100%{filter:brightness(1);transform:scale(1)}}

.play-page .arena{display:flex;flex-direction:column;gap:0;min-height:0}
.play-page .board-wrap{position:relative;display:grid;place-items:center;width:100%;min-width:0;min-height:0;flex:1 1 auto;overflow:visible}
.skill-bar{height:38px;min-height:38px;gap:4px;padding:0 3px;flex:0 0 38px}
.skill-button{position:relative;display:grid;place-items:center;width:38px;height:38px;min-width:38px;min-height:38px;padding:0;border:1px solid #a8844b;border-radius:50%;background:#f3e5cd;box-shadow:0 1px 0 #26364255;overflow:visible;--fill:100%}
.skill-picture{width:34px;height:34px}.skill-picture img{border-radius:50%}.skill-copy{display:none}.skill-progress{display:none}
.skill-picture i{inset:-1px;border-radius:50%;background:conic-gradient(var(--side) var(--fill),#102737d8 0);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 4px),#000 0);mask:radial-gradient(farthest-side,transparent calc(100% - 4px),#000 0)}
.skill-button::after{content:attr(data-badge);position:absolute;right:-4px;bottom:-3px;display:grid;place-items:center;min-width:16px;height:16px;padding:0 3px;border-radius:9px;background:#233946;color:#fff2d5;border:1px solid #d4a457;font-size:9px;font-weight:850;line-height:1}.skill-button[data-badge=""]::after{display:none}
.skill-button[data-castable=true]{box-shadow:0 0 0 2px #f4d37c,0 0 11px #d99b39b0}.skill-button[data-castable=true] .skill-picture::after{inset:-7px}

.cancel-shot{position:absolute;z-index:5;right:5px;top:-18px;width:58px;height:66px;min-width:0;min-height:0;padding:0;border:0;background:none;box-shadow:none;opacity:.84;pointer-events:none;transform:scale(.9);transition:opacity .12s,transform .12s,filter .12s}.cancel-shot img{display:block;width:52px;height:52px;margin:auto}.cancel-shot span{display:block;margin-top:-5px;padding:1px 4px;border-radius:8px;background:#253743dc;color:#fff0d2;font-size:9px;font-weight:800;white-space:nowrap}.cancel-shot.armed{opacity:1;transform:scale(1.1);filter:drop-shadow(0 0 8px #d03d2c)}

@media(max-height:600px){.play-page .game{grid-template-rows:40px 32px 48px minmax(0,1fr) auto}.skill-bar{height:32px;min-height:32px;flex-basis:32px}.skill-button{width:32px;height:32px;min-width:32px;min-height:32px}.skill-picture{width:29px;height:29px}}
@media all{:where(html[data-game-motion="reduce"]) .play-page .turn-panel.turn-enter,:where(html[data-game-motion="reduce"]) .play-page .turn-panel.broadcast{animation:none}:where(html[data-game-motion="reduce"]) .cancel-shot{transition:none}}

/* v0.4.1 r9：当前版本全部资源整备完毕后才开放进入棋局。 */
.play-page:not(.assets-ready) .game{visibility:hidden}
.asset-loader{position:fixed;z-index:300;inset:0;display:grid;place-items:center;padding:24px;background:#eee3d0 url('../assets/board.webp') center -100px/2200px auto;transition:opacity .32s ease,visibility .32s ease}.asset-loader[hidden]{opacity:0;visibility:hidden;pointer-events:none}.loader-card{width:min(340px,88vw);padding:24px 22px 20px;background:#f8eedbbf;border:2px solid #26343a;box-shadow:6px 7px 0 #26343a24;text-align:center;backdrop-filter:blur(2px)}.loader-seal{display:block;width:64px;height:64px;margin:0 auto 12px;object-fit:contain;filter:drop-shadow(0 4px 4px #26343a42)}.loader-card p{margin:0;color:#9f3026;font-size:12px;letter-spacing:.28em}.loader-card strong{display:block;min-height:24px;margin:7px 0 15px;color:#213642;font-family:"STKaiti","KaiTi",serif;font-size:18px}.loader-track{height:11px;padding:2px;border:1px solid #9a7a46;background:#e4d2b4;clip-path:polygon(0 18%,98% 0,100% 78%,2% 100%)}.loader-track i{display:block;width:0;height:100%;background:linear-gradient(90deg,#8e2e25,#d29a43 70%,#f2d88b);transition:width .18s ease}.loader-meta{display:flex;justify-content:space-between;margin-top:7px;color:#536068;font-size:11px;font-variant-numeric:tabular-nums}.loader-enter{display:block;width:100%;margin-top:14px;padding:10px 16px;border:1px solid #7f291f;background:linear-gradient(135deg,#9f3026,#76231d);color:#fff1d2;font-family:"LXGW WenKai Lite","STKaiti","KaiTi",serif;font-size:16px;font-weight:800;letter-spacing:.16em;box-shadow:3px 4px 0 #26343a2b}.loader-enter[hidden]{display:none}.loader-enter:active{transform:translateY(1px);box-shadow:2px 2px 0 #26343a2b}
.play-page .turn-actions #cancelJump{width:62px;height:54px;min-width:62px;min-height:54px}.play-page .turn-actions #cancelJump img{width:47px;height:47px}.play-page .turn-actions #cancelJump span{margin-top:-6px;font-size:9px}
.play-page .horse-hint{display:grid;place-items:center;min-width:116px;min-height:38px;padding:4px 7px;border:2px solid #a33329;border-radius:7px 3px 7px 4px;background:#fff3dded;color:#81271f;box-shadow:2px 2px 0 #26343a33;font-size:10px;font-weight:850;letter-spacing:.02em;white-space:nowrap}.play-page .horse-hint[hidden]{display:none}.play-page .turn-panel[data-horse-hint=true] .score,.play-page .turn-panel[data-horse-hint=true] .turn-hint{padding-right:124px}.play-page .turn-panel[data-horse-hint=true] #count{visibility:hidden}
.faceoff-cinematic{position:fixed;z-index:100;inset:auto;container-type:inline-size;display:grid;place-items:center;pointer-events:auto;background:transparent;overflow:hidden}.faceoff-cinematic[hidden]{display:none}.faceoff-stage{position:relative;width:100%;height:min(64cqw,310px);min-height:min(205px,60cqw);display:grid;place-items:center;pointer-events:none}.faceoff-cinematic.playing .faceoff-stage{animation:faceoff-sweep 2.35s cubic-bezier(.18,.72,.18,1) both}.faceoff-backdrop{position:absolute;z-index:0;width:118%;max-width:none;height:100%;object-fit:fill;filter:drop-shadow(0 7px 9px #1b28312e);opacity:0}.faceoff-cinematic.playing .faceoff-backdrop{animation:faceoff-backdrop 2.35s ease both}.faceoff-portraits{position:absolute;z-index:1;inset:-10% 0 -4%;display:grid;place-items:center}.portrait-frame{position:absolute;height:112%;width:auto;max-width:92cqw;object-fit:contain;opacity:0;filter:drop-shadow(0 6px 8px #06121a52)}.faceoff-cinematic[data-side=red] .portrait-frame.red{height:120%}.faceoff-cinematic[data-side=red] .portrait-frame.black,.faceoff-cinematic[data-side=black] .portrait-frame.red{display:none}.faceoff-title-art{position:absolute;z-index:2;left:max(3cqw,18px);bottom:1%;width:min(48cqw,300px);height:auto;opacity:0;filter:drop-shadow(0 2px 3px #162833b8)}.faceoff-cinematic.playing .faceoff-title-art{animation:faceoff-title 2.35s ease both}.faceoff-cinematic.playing .portrait-frame.frame-1{animation:faceoff-frame-1 2.35s steps(1,end) both}.faceoff-cinematic.playing .portrait-frame.frame-2{animation:faceoff-frame-2 2.35s steps(1,end) both}.faceoff-cinematic.playing .portrait-frame.frame-3{animation:faceoff-frame-3 2.35s steps(1,end) both}.faceoff-cinematic.playing .portrait-frame.frame-4{animation:faceoff-frame-4 2.35s steps(1,end) both}.faceoff-cinematic.playing .portrait-frame.frame-5{animation:faceoff-frame-5 2.35s steps(1,end) both}.faceoff-cinematic.playing .portrait-frame.frame-6{animation:faceoff-frame-6 2.35s steps(1,end) both}.faceoff-cinematic.playing .portrait-frame.frame-7{animation:faceoff-frame-7 2.35s steps(1,end) both}.faceoff-cinematic.playing .portrait-frame.frame-8{animation:faceoff-frame-8 2.35s steps(1,end) both}
@keyframes faceoff-sweep{0%{opacity:0;transform:translateX(-108%)}18%{opacity:1;transform:translateX(0)}87%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(108%)}}
@keyframes faceoff-backdrop{0%,8%{opacity:0}18%,88%{opacity:.96}100%{opacity:0}}
@keyframes faceoff-title{0%,24%{opacity:0;transform:translateX(-28px) scale(.94)}34%,86%{opacity:1;transform:none}100%{opacity:0;transform:translateX(24px)}}
@keyframes faceoff-frame-1{0%,29.9%{opacity:1}30%,100%{opacity:0}}@keyframes faceoff-frame-2{0%,29.9%{opacity:0}30%,39.9%{opacity:1}40%,100%{opacity:0}}@keyframes faceoff-frame-3{0%,39.9%{opacity:0}40%,49.9%{opacity:1}50%,100%{opacity:0}}@keyframes faceoff-frame-4{0%,49.9%{opacity:0}50%,59.9%{opacity:1}60%,100%{opacity:0}}@keyframes faceoff-frame-5{0%,59.9%{opacity:0}60%,69.9%{opacity:1}70%,100%{opacity:0}}@keyframes faceoff-frame-6{0%,69.9%{opacity:0}70%,77.9%{opacity:1}78%,100%{opacity:0}}@keyframes faceoff-frame-7{0%,77.9%{opacity:0}78%,85.9%{opacity:1}86%,100%{opacity:0}}@keyframes faceoff-frame-8{0%,85.9%{opacity:0}86%,100%{opacity:1}}
@media(max-width:430px){.play-page .compact-header h1{width:94px}.play-page #versionSelect{max-width:98px}.play-page .menu-toggle{min-width:42px;width:42px}.faceoff-stage{height:min(72cqw,285px)}.faceoff-backdrop{width:132%}.faceoff-title-art{width:min(52cqw,230px);bottom:5%}}
@media all{:where(html[data-game-motion="reduce"]) .loader-track i{transition:none}:where(html[data-game-motion="reduce"]) .faceoff-cinematic.playing .faceoff-stage,:where(html[data-game-motion="reduce"]) .faceoff-cinematic.playing .faceoff-backdrop,:where(html[data-game-motion="reduce"]) .faceoff-cinematic.playing .faceoff-title-art,:where(html[data-game-motion="reduce"]) .faceoff-cinematic.playing .portrait-frame{animation-duration:.7s}}
.play-page .compact-header{position:relative;z-index:120}.play-page .top-controls{position:relative;z-index:121}
.play-page .life-general{position:relative;display:block;flex:0 0 34px;width:34px;height:34px;filter:drop-shadow(0 2px 2px #19272d42)}.play-page .life-general img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.play-page .life-general .life-general-glyph{inset:18%;width:64%;height:64%}.play-page .life-meter{display:flex;align-items:center;gap:1px;height:20px}.play-page .life-meter i{display:block;width:20px;height:20px;background:url('../assets/life-seal-break-v039-v052-r2.webp') 0 center/400% 100% no-repeat;opacity:.18;filter:grayscale(.45);transform:scale(.9)}.play-page .life-meter i.active{opacity:1;filter:drop-shadow(0 0 2px #c28b32);transform:scale(1)}.play-page .life-meter i.breaking{z-index:2;opacity:1;filter:none;animation:life-seal-break .68s steps(3,end) both}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important;border:0!important}.defeat-cinematic{position:fixed;z-index:110;inset:0;display:grid;place-items:center;overflow:hidden;pointer-events:none}.defeat-cinematic[hidden]{display:none}.defeat-stage{position:relative;width:min(760px,112vw);height:min(42vw,280px);min-height:148px;display:grid;place-items:center;transform-origin:center}.defeat-backdrop{position:absolute;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 5px 6px #2a1c0e4a)}.defeat-copy{position:relative;width:min(460px,72vw);height:76%;display:grid;place-items:center;line-height:1;color:#fff7d8;text-align:center;text-shadow:0 2px 2px #432b12,0 0 9px #9a6226}.defeat-rank-art{position:absolute;width:min(250px,48vw);height:auto;object-fit:contain;filter:drop-shadow(0 3px 3px #40270f8f)}.defeat-rank-art.rank-top{clip-path:polygon(0 0,100% 0,100% 51%,0 62%)}.defeat-rank-art.rank-bottom{clip-path:polygon(0 62%,100% 51%,100% 100%,0 100%)}.defeat-slash{position:absolute;z-index:4;width:min(390px,78vw);height:auto;object-fit:contain;opacity:0;filter:drop-shadow(0 0 8px #f6d77e)}.defeat-copy strong{position:absolute;margin:0;font:900 clamp(42px,11.5vw,64px)/1 "LXGW WenKai Lite","STKaiti","KaiTi",serif;letter-spacing:.05em;white-space:nowrap;opacity:0}.defeat-copy small{position:absolute;bottom:3%;font-size:clamp(9px,2.2vw,13px);letter-spacing:.12em;color:#5c4124;opacity:0}.defeat-cinematic.playing .defeat-stage{animation:defeat-stage-in 2.4s cubic-bezier(.18,.76,.2,1) both}.defeat-cinematic.playing .defeat-backdrop{animation:defeat-gold-sweep 2.4s ease both}.defeat-cinematic.playing .rank-top{animation:defeat-rank-top 2.4s ease both}.defeat-cinematic.playing .rank-bottom{animation:defeat-rank-bottom 2.4s ease both}.defeat-cinematic.playing .defeat-slash{animation:defeat-crescent 2.4s cubic-bezier(.2,.8,.2,1) both}.defeat-cinematic.playing .defeat-copy strong{animation:defeat-title-in 2.4s cubic-bezier(.16,.78,.2,1) both}.defeat-cinematic.playing .defeat-copy small{animation:defeat-detail-in 2.4s ease both}.defeat-cinematic.direct .defeat-copy strong{color:#fff2ae;text-shadow:0 2px 2px #4b2b0b,0 0 12px #dda33e}.defeat-cinematic.direct.playing .defeat-stage,.defeat-cinematic.direct.playing .defeat-backdrop,.defeat-cinematic.direct.playing .defeat-rank-art,.defeat-cinematic.direct.playing .defeat-slash,.defeat-cinematic.direct.playing .defeat-copy strong,.defeat-cinematic.direct.playing .defeat-copy small{animation-duration:2.7s}
@keyframes life-seal-break{0%{background-position:0 center;transform:scale(1)}33%{background-position:33.333% center;transform:scale(1.15)}66%{background-position:66.666% center;transform:scale(1.32)}100%{background-position:100% center;transform:scale(1.5);opacity:0}}
@keyframes defeat-stage-in{0%{transform:translateX(-108%) scale(.84);opacity:0}11%{opacity:1}22%,88%{transform:translateX(0) scale(1);opacity:1}100%{transform:translateX(94%) scale(1.03);opacity:0}}@keyframes defeat-gold-sweep{0%,5%{clip-path:inset(0 100% 0 0);filter:brightness(1.45) drop-shadow(0 5px 6px #2a1c0e4a)}23%,91%{clip-path:inset(0);filter:brightness(1) drop-shadow(0 5px 6px #2a1c0e4a)}100%{clip-path:inset(0);filter:brightness(1.25) drop-shadow(0 5px 6px #2a1c0e4a)}}@keyframes defeat-rank-top{0%,15%{opacity:0;transform:scale(1.38);filter:blur(5px)}24%,43%{opacity:1;transform:scale(1);filter:blur(0)}54%{opacity:0;transform:translate(-18px,-15px) rotate(-5deg) scale(1.06)}100%{opacity:0}}@keyframes defeat-rank-bottom{0%,15%{opacity:0;transform:scale(1.38);filter:blur(5px)}24%,43%{opacity:1;transform:scale(1);filter:blur(0)}54%{opacity:0;transform:translate(20px,17px) rotate(5deg) scale(1.08)}100%{opacity:0}}@keyframes defeat-crescent{0%,36%{opacity:0;transform:translate(-46px,28px) rotate(-22deg) scale(.3)}43%{opacity:1;transform:translate(0) rotate(8deg) scale(1)}55%{opacity:0;transform:translate(34px,-24px) rotate(24deg) scale(1.42)}100%{opacity:0}}@keyframes defeat-title-in{0%,48%{opacity:0;transform:scale(1.65);filter:blur(7px)}59%{opacity:1;transform:scale(.94);filter:blur(0)}66%,88%{opacity:1;transform:scale(1);filter:blur(0)}100%{opacity:0;transform:scale(1.12)}}@keyframes defeat-detail-in{0%,61%{opacity:0;transform:translateY(8px)}70%,88%{opacity:.9;transform:none}100%{opacity:0}}
@media(max-width:430px){.play-page .life-general{flex-basis:32px;width:32px;height:32px}.play-page .life-meter{gap:0}.play-page .life-meter i{width:18px;height:18px}.defeat-stage{width:118vw;height:46vw}.defeat-rank-art{width:min(230px,52vw)}.defeat-copy strong{letter-spacing:.06em}}
@media all{:where(html[data-game-motion="reduce"]) .play-page .life-meter i.breaking{animation-duration:.28s}:where(html[data-game-motion="reduce"]) .defeat-cinematic.playing .defeat-stage,:where(html[data-game-motion="reduce"]) .defeat-cinematic.playing .defeat-backdrop,:where(html[data-game-motion="reduce"]) .defeat-cinematic.playing .defeat-rank-art,:where(html[data-game-motion="reduce"]) .defeat-cinematic.playing .defeat-slash,:where(html[data-game-motion="reduce"]) .defeat-cinematic.playing .defeat-copy strong,:where(html[data-game-motion="reduce"]) .defeat-cinematic.playing .defeat-copy small{animation-duration:.8s}}
button,select,input,.sheet,.impact,.mode-mark,.skill-button,.loader-card,#result{font-family:"LXGW WenKai Lite",system-ui,sans-serif}

/* v0.4.0：完整回合计数与可配置的终局收束。 */
.play-page .round-meta{display:grid;justify-items:center;gap:1px;min-width:90px;color:#273a43;font-variant-numeric:tabular-nums;line-height:1.05;text-shadow:none}.play-page .round-meta b{font-size:11px}.play-page .round-meta small{max-width:128px;overflow:hidden;text-overflow:ellipsis;color:#8f3328;font-size:8px;white-space:nowrap}.settings-page[hidden]{display:none}.submenu-button{width:100%;min-height:58px;margin:9px 0 14px;padding:9px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #a98b55;background:#f4e7cbb8;color:#26343a;text-align:left;box-shadow:inset 0 0 0 3px #fff6e780}.submenu-button span{display:grid;gap:3px}.submenu-button b{font-size:16px}.submenu-button small{color:#7d5738;font-size:11px}.submenu-button i{font:normal 32px/1 serif;color:#a33329}.settings-back{min-height:42px;margin:5px 0 12px;padding:6px 10px;border:0;background:transparent;box-shadow:none;color:#8f3027;text-decoration:underline;text-underline-offset:4px}.endgame-panel>p:first-child{margin-top:0;color:#625446}.endgame-modes{display:grid;gap:8px}.endgame-modes button{display:grid;gap:3px;min-height:62px;padding:10px 12px;border:1px solid #9d8765;background:#f8eedc;color:#26343a;text-align:left;box-shadow:2px 2px 0 #2739431c}.endgame-modes button b{font-family:"LXGW WenKai Lite","STKaiti",serif;font-size:18px}.endgame-modes button small{font-size:11px;color:#6b5c49}.endgame-modes button[aria-pressed=true]{border:2px solid #a33329;background:#f2dfbd;box-shadow:3px 3px 0 #a3332930}.endgame-modes button[aria-pressed=true] b{color:#9e2f25}.endgame-round{margin-top:14px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 12px;border-top:1px solid #bdab8e;border-bottom:1px solid #bdab8e;font-weight:800}.endgame-round input{width:88px;min-height:42px;padding:5px 9px;border:1px solid #8f7751;background:#fff8e9;font-size:18px;text-align:center}.endgame-round input:disabled{opacity:.4}.endgame-panel #endgameModeHelp{min-height:3.2em;color:#7a5335}
@media(max-width:430px){.play-page .turn-panel{padding-left:12px;padding-right:12px}.play-page .round-meta{min-width:76px}.play-page .round-meta small{max-width:94px}.play-page #turn{font-size:16px}.play-page #count{font-size:10px}}
.play-page .round-meta{padding:2px 6px;border:1px solid #a98b5570;border-radius:4px;background:#f7ead2e8}

/* v0.4.1：战况条、手绘击杀题字与声音调音台。 */
.play-page .battle-stats{display:grid;justify-items:end;gap:2px;min-width:176px;color:#263943;font-variant-numeric:tabular-nums;text-shadow:none;line-height:1}
.play-page .round-line{display:flex;align-items:baseline;justify-content:flex-end;gap:7px;width:100%}
.play-page .round-line b{font-size:11px;color:#263943}.play-page .round-line small{max-width:126px;overflow:hidden;text-overflow:ellipsis;color:#8e3026;font-size:8px;white-space:nowrap}
.play-page .battle-stats #count{display:flex;align-items:center;justify-content:flex-end;gap:4px;width:100%;font-size:10px}
.play-page .battle-stats #count b{min-width:64px;padding:3px 7px;border:1px solid #8f7653;border-radius:11px;background:#f8edd9;color:#263943;text-align:center;box-shadow:inset 0 0 0 1px #fff8e9}
.play-page .battle-stats #redCount{border-color:#a74436;color:#982e25;background:#f8e4d5}.play-page .battle-stats #blackCount{border-color:#345568;color:#17384c;background:#e3ebeb}
.play-page .battle-stats #count i{font-style:normal;color:#96784e}
.play-page .turn-panel[data-jumping=true] .battle-stats,.play-page .turn-panel[data-horse-hint=true] .battle-stats{visibility:hidden}
.defeat-title-art{position:absolute;width:min(440px,76vw);height:auto;object-fit:contain;opacity:0;filter:drop-shadow(0 3px 3px #40270f99) drop-shadow(0 0 8px #e0a83c66)}
.defeat-copy small{bottom:1%;color:#f0c45e;font-size:clamp(11px,2.8vw,16px);font-weight:850;text-shadow:0 2px 2px #40270f,0 0 7px #35200dcc}
.defeat-cinematic.playing .defeat-title-art{animation:defeat-title-in var(--defeat-duration,2400ms) cubic-bezier(.16,.78,.2,1) both}
.defeat-cinematic.playing .defeat-stage,.defeat-cinematic.playing .defeat-backdrop,.defeat-cinematic.playing .defeat-rank-art,.defeat-cinematic.playing .defeat-slash,.defeat-cinematic.playing .defeat-copy small{animation-duration:var(--defeat-duration,2400ms)!important}
.audio-panel>p{margin-top:0;color:#625446}.audio-panel label{display:grid;grid-template-columns:minmax(110px,1fr) minmax(110px,1.25fr) 44px;align-items:center;gap:10px;padding:11px 2px;border-bottom:1px solid #c8b89c}.audio-panel label span{display:grid;gap:3px}.audio-panel label b{color:#263943;font-size:15px}.audio-panel label small{color:#79644b;font-size:10px}.audio-panel input{width:100%;accent-color:#a33329}.audio-panel output{color:#8f3027;font-weight:850;text-align:right;font-variant-numeric:tabular-nums}.audio-panel .wide{margin-top:16px}
@media(max-width:430px){.play-page .battle-stats{min-width:160px}.play-page .round-line small{max-width:105px}.play-page .battle-stats #count b{min-width:58px;padding-inline:5px}.defeat-title-art{width:min(450px,84vw)}.audio-panel label{grid-template-columns:100px 1fr 40px;gap:7px}}
/* v0.4.1 r1：命印说明与题字同色、同力度，移动端也保持可读。 */
.defeat-copy small{bottom:-1%;font-size:clamp(14px,3.7vw,20px);letter-spacing:.1em;color:#f1c45b;opacity:0;text-shadow:0 2px 2px #38210d,0 0 8px #4a2d12}
@keyframes defeat-detail-in{0%,61%{opacity:0;transform:translateY(8px)}70%,88%{opacity:1;transform:none}100%{opacity:0}}

/* v0.4.1 r2：击杀方将帅印与行草金墨题字。 */
.defeat-copy{width:min(560px,88vw)}
.defeat-title-art{width:min(430px,69vw);transform-origin:center}
.defeat-killer{position:absolute;z-index:3;left:-2%;top:50%;width:72px;height:72px;opacity:0;transform:translate(-18px,-50%) scale(.72);filter:drop-shadow(0 4px 4px #2b190d99)}
.defeat-killer img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.defeat-killer img+img{inset:18%;width:64%;height:64%}.defeat-killer span{position:absolute;inset:0;display:grid;place-items:center;color:#fff0d1;font:900 33px/1 "LXGW WenKai Lite","STKaiti",serif;text-shadow:0 2px 2px #351a0b,0 0 3px #351a0b}
.defeat-cinematic.playing .defeat-killer{animation:defeat-killer-in var(--defeat-duration,2400ms) cubic-bezier(.16,.78,.2,1) both}
@keyframes defeat-killer-in{0%,47%{opacity:0;transform:translate(-22px,-50%) scale(.7) rotate(-8deg)}58%,88%{opacity:1;transform:translate(0,-50%) scale(1) rotate(0)}100%{opacity:0;transform:translate(14px,-50%) scale(1.08)}}
@media(max-width:430px){.defeat-copy{width:94vw}.defeat-title-art{width:72vw}.defeat-killer{left:1%;width:58px;height:58px}}
@media all{:where(html[data-game-motion="reduce"]) .defeat-cinematic.playing .defeat-killer{animation-duration:.8s}}

/* v0.4.2：桌面战场使用独立三栏布局，移动端维持纵向操作。 */
.play-page .battle-stats #count b[data-display-side=red]{border-color:#b13a2e;background:#f8e1d2;color:#b52219;font-weight:900}
.play-page .battle-stats #count b[data-display-side=black]{border-color:#345568;background:#e3ebeb;color:#17384c;font-weight:900}
/* 金墨题字用多向暗影补出克制的墨色轮廓，小尺寸下仍能分清笔画。 */
.defeat-title-art{filter:drop-shadow(1px 0 0 #21170f) drop-shadow(-1px 0 0 #21170f) drop-shadow(0 1px 0 #21170f) drop-shadow(0 -1px 0 #21170f) drop-shadow(1px 1px 0 #21170fcc) drop-shadow(-1px -1px 0 #21170fcc) drop-shadow(0 3px 3px #40270faa) drop-shadow(0 0 8px #e0a83c55)}
@media(max-width:430px){.defeat-stage{left:-3vw}}

@media(min-width:900px) and (min-height:650px){
  .play-page{position:relative;padding:14px 18px;background:#d5c9b6;isolation:isolate}
  .play-page::before{content:"";position:fixed;z-index:-1;inset:0;background:url('../assets/faceoff-backdrop.webp') center bottom/max(2048px,100vw) auto no-repeat;opacity:.18;filter:saturate(.7) sepia(.18);-webkit-mask-image:linear-gradient(to bottom,transparent 0 34%,rgba(0,0,0,.16) 48%,rgba(0,0,0,.72) 68%,#000 82% 100%);mask-image:linear-gradient(to bottom,transparent 0 34%,rgba(0,0,0,.16) 48%,rgba(0,0,0,.72) 68%,#000 82% 100%);pointer-events:none}
  .play-page .game{height:calc(100dvh - 28px);max-width:1180px;padding:12px 22px 16px;grid-template-columns:220px minmax(560px,660px) 220px;grid-template-rows:58px 72px minmax(0,1fr);justify-content:center;column-gap:22px;row-gap:8px;border:2px solid #26343a;border-radius:3px;background-color:#f5ead8;background-size:2600px auto;background-position:center -150px;box-shadow:0 12px 36px #17262e30,inset 0 0 0 5px #fff7e45c}
  .play-page .compact-header{position:relative;grid-column:1/-1;grid-row:1;padding:0 8px 7px;border-bottom:1px solid #a88c61}
  .play-page .compact-header h1{width:210px}.play-page .compact-header img{height:54px}
  .play-page #versionSelect{max-width:180px;min-width:142px}.play-page .menu-toggle{width:58px;height:50px}.play-page .menu-toggle>img{width:54px;height:54px}
  .play-page .life-bar{display:contents}
  .play-page .mode-mark{z-index:2;grid-column:2;grid-row:1;align-self:center;justify-self:center;min-width:150px;padding:6px 18px;border:0;border-top:1px solid #b99556;border-bottom:1px solid #b99556;border-radius:0;background:linear-gradient(90deg,transparent,#f6ead2 16% 84%,transparent);box-shadow:none}.play-page .mode-mark b{font-size:17px}.play-page .mode-mark small{font-size:10px}
  .play-page .life{grid-row:2;align-self:center;width:210px;min-width:0;padding:7px 10px;background:linear-gradient(90deg,#f2e2c8d6,#faf1dfb8);border:1px solid #b79b6c;box-shadow:inset 0 0 0 2px #fff8e67d,2px 3px 0 #24364016}
  .play-page .life.red{--life-side:#a53a2c;grid-column:1;justify-self:end;border-inline-start:4px solid var(--life-side)}.play-page .life.black{--life-side:#274b63;grid-column:3;justify-self:start;justify-content:flex-end;border-inline-end:4px solid var(--life-side);text-align:right}
  .play-page .life b{font-size:13px}.play-page .life-general{width:44px;height:44px;flex-basis:44px}.play-page .life-meter i{width:23px;height:23px}
  .play-page .turn-panel{z-index:3;grid-column:2;grid-row:2;align-self:center;min-height:62px;padding:8px 14px;border:1px solid color-mix(in srgb,var(--turn-side,#a53a2c) 58%,#a98b55);background:linear-gradient(90deg,color-mix(in srgb,var(--turn-side,#a53a2c) 24%,#f8edda),#fff6e6e8 50%,color-mix(in srgb,var(--turn-side,#a53a2c) 15%,#f8edda));box-shadow:inset 0 0 0 2px #fff8e7,2px 3px 0 #26343a18;overflow:visible;transition:background .28s,border-color .28s}
  .play-page .turn-panel::before{display:none}.play-page .turn-panel .score{display:grid;grid-template-columns:minmax(180px,1fr) minmax(260px,auto);align-items:center;gap:12px}.play-page .turn-panel #turn{font-size:19px;color:var(--turn-side,#a23429);white-space:nowrap;text-shadow:0 1px #fff2d7}.play-page .turn-panel[data-side=black] #turn{color:var(--turn-side,#243f50)}.play-page .battle-stats{grid-template-rows:18px 18px;align-content:center;justify-items:end;min-width:0;gap:3px}.play-page .round-line{height:18px;justify-content:flex-end;gap:7px;line-height:18px}.play-page .round-line b{font-size:12px}.play-page .round-line small{max-width:150px;font-size:9px}
  .play-page .battle-stats #count{justify-content:flex-end;gap:12px}.play-page .battle-stats #count i{color:#a17d45}.play-page .battle-stats #count b{position:relative;min-width:auto;padding:1px 0 1px 12px;border:0;border-radius:0;background:transparent;box-shadow:none;font-size:11px}.play-page .battle-stats #count b::before{content:"";position:absolute;left:0;top:2px;bottom:2px;width:4px;background:var(--count-side);clip-path:polygon(34% 0,100% 8%,72% 100%,0 90%)}.play-page .battle-stats #count b[data-display-side=red]{--count-side:#a93327;color:#9c3026;background:transparent}.play-page .battle-stats #count b[data-display-side=black]{--count-side:#243f50;color:#243b49;background:transparent}
  .play-page .turn-panel .turn-actions{top:calc(100% + 15px);right:6px;bottom:auto;z-index:8}.play-page .turn-panel[data-jumping=true] .score,.play-page .turn-panel[data-horse-hint=true] .score{padding-right:0}.play-page .turn-panel[data-jumping=true] .battle-stats,.play-page .turn-panel[data-horse-hint=true] .battle-stats{visibility:visible}.play-page .turn-panel[data-jumping=true] #count,.play-page .turn-panel[data-horse-hint=true] #count{position:static;visibility:visible;pointer-events:auto}
  .play-page .arena{display:contents}
  .play-page .board-wrap{grid-column:2;grid-row:3;align-self:stretch;overflow:visible;border:1px solid #8d7754;background:#f5ead8;box-shadow:0 7px 22px #1828332b,inset 0 0 0 4px #fff8e66e}
  .play-page canvas{width:auto;height:100%;max-width:100%;max-height:100%;filter:drop-shadow(0 5px 6px #23343d24)}
  .play-page .skill-bar{grid-row:3;align-self:stretch;height:auto;min-height:0;align-content:center;justify-content:stretch;display:grid;gap:12px;padding:14px 12px 16px;border:1px solid #a88c6173;background:linear-gradient(180deg,#f7ebd7a8,#ead8bab8 72%,#f6ead7b0);box-shadow:inset 0 0 0 2px #fff8e87d;transition:filter .18s,box-shadow .18s}
  .play-page .skill-bar.red{grid-column:1;border-inline-start:5px solid var(--side)}.play-page .skill-bar.black{grid-column:3;border-inline-end:5px solid var(--side)}
  .play-page .skill-bar.active-side{box-shadow:inset 0 0 0 2px #fff8e8,0 0 0 1px var(--side),0 5px 18px #26343a1f}.play-page .skill-bar:not(.active-side){filter:saturate(.82)}
  .play-page .skill-button{display:flex;place-items:initial;width:100%;height:auto;min-width:0;min-height:74px;padding:7px 10px;gap:10px;border:1px solid #b99a66;border-radius:3px;background:#f7ecd8;box-shadow:2px 3px 0 #26343a1c;overflow:hidden}.play-page .skill-bar.red .skill-button{border-inline-start:4px solid var(--side)}.play-page .skill-bar.black .skill-button{flex-direction:row-reverse;border-inline-end:4px solid var(--side)}
  .play-page .skill-picture{width:54px;height:54px}.play-page .skill-copy{display:grid;gap:4px;text-align:left}.play-page .skill-bar.black .skill-copy{text-align:right}.play-page .skill-copy b{font-size:15px}.play-page .skill-copy small{font-size:11px}
  .play-page .context-actions{grid-column:3;grid-row:3;align-self:start;margin-top:0}
  .play-page .horse-hint{min-width:178px;font-size:12px;background:#f8ead0f2;box-shadow:2px 3px 0 #26343a30}.play-page .cancel-shot{right:-7px;top:-12px}
}

#scrollReward.is-closing .scroll-reward-card{pointer-events:none;animation:scroll-reward-fold-r15 .3s cubic-bezier(.55,.02,.82,.36) both}
@keyframes scroll-reward-fold-r15{to{opacity:0;transform:translateY(10px) scale(.96,.86);filter:saturate(.72) blur(1px)}}

/* v0.4.2 r5：山河试炼行军背包与布阵台。 */
.adventure-page .controller-settings,.adventure-page .skill-bar.black{display:none!important}
.adventure-page .arena{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr) 54px;gap:3px}
.adventure-page .board-wrap{position:relative;grid-column:1/-1;grid-row:1}.adventure-page .skill-bar.red{grid-column:2;grid-row:2;min-width:0;justify-content:flex-end;overflow:hidden}.adventure-page .skill-bar.red .skill-button{min-width:0;flex:0 1 122px}
.adventure-inventory{position:relative;z-index:9;grid-column:1;grid-row:2;min-width:0}.pack-toggle{display:flex;align-items:center;gap:5px;width:100%;height:54px;min-height:54px;padding:1px 6px 1px 1px;border:1px solid #aa8955;background:#f5e8d2;color:#283a43;box-shadow:1px 2px 0 #26343a24;text-align:left}.pack-toggle>img{width:49px;height:49px;flex:0 0 49px;object-fit:contain;filter:drop-shadow(0 2px 2px #1d2a3155)}.pack-toggle>span{display:grid;min-width:0;line-height:1.08}.pack-toggle b{color:#8f3026;font-size:12px}.pack-toggle small{overflow:hidden;color:#68563e;font-size:9px;text-overflow:ellipsis;white-space:nowrap}
.pack-panel{position:absolute;z-index:12;left:0;bottom:58px;display:none;width:min(350px,calc(100vw - 20px));padding:10px;border:2px solid #263943;border-radius:5px;background:#f7ecd8f5;box-shadow:5px 6px 0 #8d3026,0 10px 28px #15252d52;backdrop-filter:blur(4px)}.adventure-inventory.open .pack-panel{display:grid;gap:8px}.pack-panel header{display:grid;grid-template-columns:56px 1fr auto;align-items:center;justify-content:space-between;gap:7px;padding-bottom:7px;border-bottom:1px solid #b69968}.pack-open-art{width:56px;height:56px;object-fit:contain;filter:drop-shadow(0 2px 2px #17262f55)}.pack-panel header>div{display:grid}.pack-panel header b{font-size:17px;color:#263943}.pack-panel header small{font-size:10px;color:#746149}.pack-panel header>span{align-self:start;padding:3px 7px;border-radius:10px;background:#263943;color:#f8e7c4;font-size:9px;white-space:nowrap}
.inventory-pieces{display:grid;gap:6px}.inventory-pieces button{display:grid;grid-template-columns:42px 1fr 24px;align-items:center;gap:8px;min-height:54px;padding:5px 7px;border:1px solid #aa8c5c;background:#fbf1df;box-shadow:1px 2px 0 #26394317;text-align:left}.inventory-pieces button[aria-pressed=true]{border:2px solid #a6372b;background:#f4dfbd;box-shadow:2px 3px 0 #a6372b30}.inventory-pieces i{display:grid;place-items:center;width:39px;height:39px;border-radius:50%;background:#a93226;color:#fff2d3;font:normal 700 23px/1 "LXGW WenKai Lite",serif;box-shadow:inset 0 0 0 3px #e8b864,inset 0 0 0 5px #7c251e}.inventory-pieces span{display:grid;line-height:1.15}.inventory-pieces b{font-size:13px;color:#273a43}.inventory-pieces small{font-size:9px;color:#705d45}.inventory-pieces em{display:grid;place-items:center;width:23px;height:23px;border-radius:50%;background:#263943;color:#f5d58a;font-style:normal;font-size:11px}.inventory-pieces button:disabled{opacity:.43}
#confirmDeployment{width:100%;min-height:44px;background:#a33329;color:#fff1d5;border-color:#263943;font-weight:800}.adventure-choice-slot{display:grid;gap:2px;padding:8px 10px;border:1px dashed #a88b5f;color:#7a6750;background:#efe2ccb5}.adventure-choice-slot b{font-size:12px}.adventure-choice-slot small{font-size:9px}
.deployment-guide{position:absolute;z-index:5;left:8px;top:8px;display:grid;gap:1px;padding:5px 8px;border-left:4px solid #a33329;background:#f8ecd8e8;box-shadow:1px 2px 0 #2639432e;pointer-events:none}.deployment-guide b{color:#9d3026;font-size:12px}.deployment-guide span{font-size:9px;color:#4e493f}.adventure-page:not(.deploying) .deployment-guide{display:none}.adventure-inventory.invalid{animation:pack-invalid .34s ease}@keyframes pack-invalid{35%{transform:translateX(-5px)}70%{transform:translateX(5px)}}
.enemy-intel{position:absolute;z-index:8;left:10px;top:52px;display:grid;gap:3px;width:128px;padding:7px 8px;border:1px solid #8e7250;border-left:4px solid #284f50;background:#f7ecd8e8;box-shadow:2px 3px 0 #23363d26;pointer-events:none}.enemy-intel>span{color:#9b3227;font-size:8px;letter-spacing:.18em}.enemy-intel>b{color:#263943;font-size:13px}.enemy-intel>div{display:flex;flex-wrap:wrap;gap:3px 7px}.enemy-intel i{color:#564b3d;font:normal 9px/1.25 "LXGW WenKai Lite",serif}.enemy-intel i b{color:#183f3e}.enemy-intel small{padding-top:3px;border-top:1px solid #a98c6155;color:#75634d;font-size:7px;line-height:1.3}.adventure-page:not(.deploying) .enemy-intel{display:none}
@media(max-width:430px){.adventure-page .skill-bar.red{gap:3px}.adventure-page .skill-bar.red .skill-button{min-width:0;padding-inline:2px}.adventure-page .skill-bar.red .skill-copy{display:none}}
@media(min-width:900px) and (min-height:650px){
  .adventure-page .arena{display:contents}
  .adventure-page .adventure-inventory{grid-column:3;grid-row:3;align-self:stretch;display:block;min-height:0;padding:14px 12px 16px;border:1px solid #a88c6173;border-inline-end:5px solid #a53a2c;background:linear-gradient(180deg,#f7ebd7a8,#ead8bab8 72%,#f6ead7b0);box-shadow:inset 0 0 0 2px #fff8e87d;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;scrollbar-color:#9b7949 #ead9bd}
  .adventure-page .pack-toggle{display:none}.adventure-page .pack-panel,.adventure-page .adventure-inventory.open .pack-panel{position:static;display:grid;width:auto;padding:0;border:0;background:transparent;box-shadow:none;backdrop-filter:none;gap:12px}.adventure-page .pack-panel header{position:relative;grid-template-columns:64px 1fr;padding:4px 2px 10px}.adventure-page .pack-open-art{width:64px;height:64px}.adventure-page .pack-panel header>div{padding-right:32px}.adventure-page .pack-panel header>span{position:absolute;right:0;top:4px}.adventure-page .pack-panel header b{font-size:17px;white-space:nowrap}.adventure-page .inventory-pieces button{grid-template-columns:46px 1fr 25px;min-height:66px}.adventure-page .inventory-pieces i{width:43px;height:43px}.adventure-page #confirmDeployment{margin-top:2px}.adventure-page .adventure-choice-slot{margin-top:auto;padding:11px}
  .adventure-page .board-wrap{grid-column:2;grid-row:3}.adventure-page .skill-bar.red{grid-column:1;grid-row:3;border-inline-start:5px solid var(--side);border-inline-end:0}.adventure-page .skill-bar.red .skill-button{flex-direction:row;border-inline-start:4px solid var(--side);border-inline-end:0}.adventure-page .skill-bar.red .skill-copy{text-align:left}.adventure-page .deployment-guide{left:12px;top:12px;padding:7px 10px}.adventure-page .deployment-guide b{font-size:14px}.adventure-page .deployment-guide span{font-size:10px}
  .adventure-page .enemy-intel{left:12px;top:66px;width:144px;padding:9px 10px}.adventure-page .enemy-intel>b{font-size:15px}.adventure-page .enemy-intel i{font-size:10px}
}

/* v0.4.3：冒险布阵带、移动技能坞与键盘技能位。 */
.adventure-page .arena{isolation:auto}.adventure-page .adventure-inventory{z-index:95}.adventure-page .skill-bar.red{position:relative;z-index:92}.adventure-page .compact-header{z-index:120}
.adventure-page .life.black .life-meter i:not(.active){display:none}
.adventure-page .adventure-enemy-general b{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff0d2;font:900 20px/1 "LXGW WenKai Lite","STKaiti","KaiTi",serif;text-shadow:-1px 0 #173a37,1px 0 #173a37,0 -1px #173a37,0 1px #173a37,0 1px 2px #102e2b;transform:translateY(-1px)}.adventure-page .adventure-enemy-general .life-general-base{inset:-5%;width:110%;height:110%}
@media(max-width:899px), (max-height:649px){
  .adventure-page .arena{grid-template-columns:40% 60%;grid-template-rows:minmax(0,1fr) 56px;column-gap:0;row-gap:3px;overflow:visible}
  .adventure-page .arena::after{content:"";position:absolute;z-index:94;left:40%;bottom:4px;width:1px;height:48px;background:linear-gradient(transparent,#9a7944 18% 82%,transparent);box-shadow:1px 0 #fff2d2;pointer-events:none}
  .adventure-page .adventure-inventory{grid-column:1;grid-row:2;padding-right:7px}.adventure-page .pack-toggle{height:56px;min-height:56px;border:1px solid #a98651;border-inline-width:3px;background:linear-gradient(90deg,#f4e4c9,#f8edda);box-shadow:inset 0 0 0 1px #fff5df,1px 2px 0 #26343a2b}.adventure-page .pack-toggle>img{width:46px;height:46px;flex-basis:46px}.adventure-page .pack-toggle b{font-size:11px}.adventure-page .pack-toggle small{font-size:8px}
  .adventure-page .pack-panel,.adventure-page .adventure-inventory.open .pack-panel{position:fixed;z-index:95;left:var(--adventure-board-left,8px);top:var(--adventure-river-y,50%);bottom:auto;display:none;width:var(--adventure-board-width,calc(100vw - 16px));height:82px;padding:5px 6px;transform:translateY(-50%);border:1px solid #263943;border-radius:4px;background:#f5e7cce8;box-shadow:0 3px 0 #8d3026,0 7px 18px #15252d42;backdrop-filter:blur(3px);overflow:hidden}
  .adventure-page .adventure-inventory.open .pack-panel{display:flex;align-items:center;gap:5px}.adventure-page .pack-panel header{flex:0 0 70px;display:grid;grid-template-columns:34px 1fr;align-items:center;gap:3px;height:66px;padding:0 5px 0 0;border:0;border-right:1px solid #aa8c5d}.adventure-page .pack-open-art{width:34px;height:52px}.adventure-page .pack-panel header b{font-size:10px;line-height:1.1}.adventure-page .pack-panel header small,.adventure-page .pack-panel header>span{display:none}
  .adventure-page .inventory-pieces{display:flex;flex:1 1 auto;gap:5px;min-width:0;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;scrollbar-width:none;touch-action:pan-x}.adventure-page .inventory-pieces::-webkit-scrollbar{display:none}.adventure-page .inventory-pieces button{flex:0 0 82px;grid-template-columns:34px 1fr;grid-template-rows:1fr;gap:4px;min-height:62px;height:62px;padding:3px 4px;scroll-snap-align:start}.adventure-page .inventory-pieces i{width:32px;height:32px;font-size:18px}.adventure-page .inventory-pieces span{display:block}.adventure-page .inventory-pieces span b{font-size:10px}.adventure-page .inventory-pieces span small{display:none}.adventure-page .inventory-pieces em{position:absolute;right:2px;top:2px;width:17px;height:17px;font-size:8px}.adventure-page .inventory-pieces button{position:relative}
  .adventure-page #confirmDeployment{flex:0 0 68px;width:68px;min-height:62px;height:62px;margin:0;padding:4px;font-size:10px;line-height:1.25}.adventure-page .adventure-choice-slot{display:none}
  .adventure-page .skill-bar.red{grid-column:2;grid-row:2;height:56px;min-height:56px;padding:0 3px 0 8px;display:flex;justify-content:stretch;gap:5px;overflow:visible;background:linear-gradient(90deg,#f8edda,#f2dfc2);box-shadow:inset 0 1px #c3a574,inset 0 -1px #c3a574}.adventure-page .skill-bar.red .skill-button{display:flex;flex:1 1 0;width:auto;height:50px;min-width:0;min-height:50px;padding:2px 4px;border:0;border-radius:3px;background:#f7ebd6;box-shadow:inset 3px 0 var(--side),1px 1px 0 #735f3d38}.adventure-page .skill-bar.red .skill-picture{width:34px;height:34px;flex:0 0 34px}.adventure-page .skill-bar.red .skill-copy{display:grid;gap:1px;min-width:0;text-align:left;line-height:1.05}.adventure-page .skill-bar.red .skill-copy b{overflow:hidden;font-size:9px;text-overflow:ellipsis;white-space:nowrap}.adventure-page .skill-bar.red .skill-copy small{overflow:hidden;font-size:8px;text-overflow:ellipsis;white-space:nowrap}
  .adventure-page .battle-stats #count b{min-width:auto;padding:1px 5px;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;font-weight:850}.adventure-page .battle-stats #redCount[data-display-side]{color:#a12e24;background:transparent}.adventure-page .battle-stats #blackCount[data-display-side]{color:#203d50;background:transparent}.adventure-page .battle-stats #count i{color:#a28251}
}

/* r16：兵粮与辎重并列为资源徽记；背包使用纸页分隔，不再套深色阴影框。 */
.pack-heading small,.pack-toggle small{flex-wrap:wrap}.pack-supply{display:inline-flex;align-items:center;gap:2px;white-space:nowrap}.pack-supply::before{content:"·";margin-right:1px}.pack-supply i{display:block;width:18px;height:18px;flex:0 0 18px;background:url('../assets/supply-token-v048-r17.webp') center/contain no-repeat}.pack-supply b{color:#315866!important;font:800 9px/1 system-ui!important}.pack-folder,.guigu-folder,.scroll-folder{border-color:#b3976b80;box-shadow:none}.guigu-folder{border-left:2px solid #64877f}.scroll-folder{border-left:2px solid #b08a4f}.troop-folder{border-left:2px solid #a75143}.pack-toggle{box-shadow:none}.open-camp-shop{width:100%;min-height:34px;margin-top:5px;border:1px solid #967645;background:#f2e1c5;color:#6e4f2d;font:800 10px/1 "LXGW WenKai Lite",serif;box-shadow:none}.open-camp-shop[hidden]{display:none}
@media(max-width:899px), (max-height:649px){.adventure-page.deploying .pack-panel,.adventure-page.deploying .adventure-inventory.open .pack-panel{border-color:#b49668;box-shadow:none}}

/* v0.4.5：胜后兵粮与点兵闭环。 */
.inventory-pieces button[hidden]{display:none!important}
#recruitment{width:min(560px,94vw);max-height:90dvh;padding:0;border:0;background:transparent;color:#263943;overflow:auto}#recruitment::backdrop{background:#101d24cc;backdrop-filter:blur(5px)}
.recruitment-card{padding:24px;border:3px solid #263943;background:#f5e7cf url('../assets/recruitment-panel-v045-r6.jpg') center/cover no-repeat;box-shadow:7px 8px 0 #9c3127;text-align:center}.recruitment-card>span{display:inline-block;padding:3px 10px;border:1px solid #a98148;border-radius:12px;background:#f8edd9d9;color:#9d3328;font-size:12px;letter-spacing:.35em}.recruitment-card h2{margin:6px 0 4px;color:#263943;font:800 30px/1.2 "LXGW WenKai Lite","STKaiti",serif}.recruitment-card p{margin:0 0 10px;color:#6f5a40;font-size:12px}.recruitment-card>strong{display:flex;align-items:center;justify-content:center;gap:5px;margin-bottom:14px;color:#9b3026;font-size:16px}.recruitment-card>strong::before,.recruitment-offers small::before{content:"";display:inline-block;width:20px;height:20px;flex:0 0 20px;background:url('../assets/grain-token-v045-r6.png') center/contain no-repeat;vertical-align:-5px;filter:drop-shadow(0 1px 1px #46321f55)}
.recruitment-offers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.recruitment-offers button{display:grid;grid-template-rows:auto 1fr auto;gap:9px;min-width:0;min-height:168px;padding:13px 8px;overflow:hidden;border:2px solid #9b7848;background:#fff5dfe8;color:#273943;backdrop-filter:blur(1px)}.recruitment-offers button:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 4px 0 #a4382c}.recruitment-offers button:disabled{filter:grayscale(.5);opacity:.55}.recruitment-offers b{font-size:14px}.recruitment-offers small{display:flex;align-items:center;justify-content:center;gap:3px;color:#786247;font-size:10px}.recruitment-offers small::before{width:16px;height:16px;flex-basis:16px}.recruitment-pieces{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:7px}.recruitment-piece{display:inline-flex;align-items:center;gap:2px;white-space:nowrap}.recruitment-piece i{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:url('../assets/red.webp') center/contain no-repeat;color:#fff0d1;font:normal 800 21px/1 "LXGW WenKai Lite",serif;text-shadow:0 1px #641813}.recruitment-piece em{color:#673b2c;font:normal 800 13px/1 system-ui}#skipRecruitment{width:100%;margin-top:12px;min-height:42px;border:1px solid #9c8158;background:#efe0c6e8;color:#604f3b;font-weight:700;backdrop-filter:blur(1px)}
@media(max-width:520px){.recruitment-card{padding:18px 12px}.recruitment-offers{grid-template-columns:1fr}.recruitment-offers button{grid-template-columns:auto minmax(0,1fr) auto;grid-template-rows:1fr;align-items:center;min-height:72px;text-align:left}.recruitment-piece i{width:34px;height:34px;font-size:17px}.recruitment-piece em{font-size:11px}.recruitment-offers small{text-align:right}}
@media(min-width:900px) and (min-height:650px){
  .adventure-page .game{max-width:1250px;grid-template-columns:240px minmax(540px,660px) 240px}
  .adventure-page .context-actions{position:relative;z-index:96;pointer-events:none}.adventure-page .context-actions #showResult{pointer-events:auto}
  .adventure-page .skill-bar.red{padding:18px 16px;overflow:visible}
  .adventure-page .skill-bar.red .skill-button{min-height:88px;padding:9px 36px 9px 12px;gap:12px;overflow:visible}
  .adventure-page .skill-bar.red .skill-picture{width:58px;height:58px;flex-basis:58px}
  .adventure-page .skill-bar.red .skill-button[data-shortcut]::before{left:auto;right:6px;top:6px}
  .play-page .skill-button[data-shortcut]::before{content:attr(data-shortcut);position:absolute;z-index:3;left:4px;top:4px;display:grid;place-items:center;width:18px;height:18px;border:1px solid #c39a51;border-radius:2px;background:#273b47;color:#f5dc9a;font:800 10px/1 system-ui;box-shadow:1px 1px 0 #1a272e52}.play-page .skill-bar.black .skill-button[data-shortcut]::before{left:auto;right:4px}
}

/* v0.4.3 r2：冒险入口收进对局菜单。 */
.adventure-menu-entry{display:grid;grid-template-columns:58px 1fr auto;text-decoration:none;background:linear-gradient(100deg,#edf0e5d9,#f4e7cbb8 58%);border-color:#8b805d}.adventure-menu-entry>img{width:56px;height:56px;object-fit:contain;filter:drop-shadow(0 2px 2px #182a3155)}.adventure-menu-entry span{justify-self:start}.adventure-menu-entry b{color:#243e45;font-family:"LXGW WenKai Lite","STKaiti",serif;font-size:18px}.adventure-menu-entry small{color:#8b6333}.adventure-menu-entry:hover{filter:brightness(.96)}

/* v0.4.3 r6：手绘卷轴、原棋子贴图与同步结算。 */
.inventory-pieces i{position:relative;isolation:isolate;background:transparent;box-shadow:none}.inventory-pieces i img{position:absolute;z-index:-1;inset:0;width:100%;height:100%;object-fit:contain}.inventory-pieces i b{color:#fff0d1;font:800 .9em/1 "LXGW WenKai Lite","STKaiti",serif;text-shadow:0 1px 1px #641813}
.inventory-future{display:none}
.play-page .battle-stats #count{gap:10px}.play-page .battle-stats #count b{position:relative;min-width:auto;padding:1px 0 1px 10px;border:0;border-radius:0;background:transparent;box-shadow:none;font-weight:850}.play-page .battle-stats #count b::before{content:"";position:absolute;left:0;top:2px;bottom:2px;width:3px;background:var(--count-side)}.play-page .battle-stats #count b[data-display-side=red]{--count-side:#a93327;color:#9c3026;background:transparent}.play-page .battle-stats #count b[data-display-side=black]{--count-side:#243f50;color:#243b49;background:transparent}
@media(max-width:899px), (max-height:649px){
  .adventure-page.deploying .deployment-guide{display:none}
  .adventure-page.deploying .pack-panel,.adventure-page.deploying .adventure-inventory.open .pack-panel{position:fixed;z-index:95;left:var(--adventure-board-left,8px);top:var(--adventure-pack-top,180px);bottom:auto;display:none;width:min(350px,calc(100vw - 16px));height:76px;padding:8px 31px 7px;border:0;border-radius:0;background:transparent;box-shadow:none;backdrop-filter:none;overflow:visible}
  .adventure-page.deploying .adventure-inventory.open .pack-panel{display:flex;align-items:center;gap:5px}.adventure-page.deploying .pack-panel::before{content:"";position:absolute;z-index:-1;inset:0;background:url('../assets/adventure-scroll-v043-r6-v052-r2.webp') center/100% 100% no-repeat;transform-origin:left center;animation:scroll-unfurl .3s cubic-bezier(.18,.8,.25,1) both}
  .adventure-page.deploying .pack-panel header{flex:0 0 82px;height:52px;display:block;padding:5px 5px 0 0;border:0;border-right:1px solid #9f7b486b}
  .adventure-page.deploying .pack-panel header>div{display:grid;gap:3px}.adventure-page.deploying .pack-panel header b{font-size:10px;line-height:1.05;color:#713126;white-space:nowrap}.adventure-page.deploying .pack-panel header b i{color:#ad8a50;font-style:normal}.adventure-page.deploying .pack-panel header b span{color:#7b7060}.adventure-page.deploying .pack-panel header small{display:block;font-size:7px;line-height:1.2;color:#786248}
  .adventure-page.deploying .inventory-pieces{flex:1 1 auto;gap:3px;overflow-x:auto;overflow-y:hidden;padding:3px 2px;scroll-snap-type:x proximity;scrollbar-width:none}
  .adventure-page.deploying .inventory-pieces::-webkit-scrollbar{display:none}
  .adventure-page.deploying .inventory-pieces button{position:relative;flex:0 0 45px;display:grid;grid-template-columns:1fr;place-items:center;min-height:50px;height:50px;padding:0;border:0;background:transparent;box-shadow:none;scroll-snap-align:start;transition:filter .16s,transform .16s}
  .adventure-page.deploying .inventory-pieces button[aria-pressed=true]{z-index:2;transform:translateY(-2px) scale(1.06);border:0;background:transparent;box-shadow:none;filter:drop-shadow(0 3px 2px #77312d55)}
  .adventure-page.deploying .inventory-pieces i{width:43px;height:43px;font-size:22px}
  .adventure-page.deploying .inventory-pieces span{display:none}
  .adventure-page.deploying .inventory-pieces em{right:-1px;top:-1px;width:16px;height:16px;border:1px solid #f2cf80;background:#263943;color:#f5dc9a;font-size:8px;box-shadow:1px 1px 0 #f8e8c533}
  .adventure-page.deploying #confirmDeployment{position:fixed;z-index:96;left:var(--adventure-board-center,50%);top:calc(var(--adventure-board-bottom,70vh) - 10px);display:block;width:min(300px,calc(100vw - 32px));min-height:52px;height:52px;margin:0;padding:5px 10px;transform:translateX(-50%);font-size:12px;line-height:1.2;box-shadow:2px 3px 0 #2639432e}
  .adventure-page.deploying #confirmDeployment:disabled{background:#bd8b7c;color:#fff2da;opacity:1}
}
@keyframes scroll-unfurl{from{opacity:.35;transform:translateX(-10px) scaleX(.08)}to{opacity:1;transform:none}}
@media all{:where(html[data-game-motion="reduce"]) .adventure-page.deploying .pack-panel::before{animation-duration:.01ms}}

/* v0.4.3 r7：卷轴按“兵种→棋子→技能”铺满，移动技能收为 MMO 快捷栏。 */
@media(max-width:899px), (max-height:649px){
  .adventure-page .arena{grid-template-columns:minmax(145px,1fr) auto}.adventure-page .arena::after{display:none}
  .adventure-page .adventure-inventory{width:min(180px,100%);padding-right:0}.adventure-page .pack-toggle{padding-right:8px}
  .adventure-page .skill-bar.red{width:auto;height:56px;min-height:56px;padding:3px 7px;justify-content:flex-end;gap:8px;background:transparent;box-shadow:none;overflow:visible}
  .adventure-page .skill-bar.red .skill-button{flex:0 0 48px;width:48px;height:48px;min-width:48px;min-height:48px;padding:2px;border:2px solid #c9a45d;border-radius:50%;background:#1d303b;box-shadow:inset 0 0 0 2px #10212b,0 2px 4px #15273366;overflow:visible}
  .adventure-page .skill-bar.red .skill-picture{width:42px;height:42px;flex-basis:42px}.adventure-page .skill-bar.red .skill-copy{display:none}
  .adventure-page.deploying .pack-panel,.adventure-page.deploying .adventure-inventory.open .pack-panel{left:0;width:100vw;height:70px;padding:8px 32px 7px;overflow:visible}
  .adventure-page.deploying .pack-panel header{flex:0 0 34px;height:auto;display:grid;place-items:center;padding:0 5px 0 0;border-right:1px solid #9f7b486b}.adventure-page.deploying .pack-panel header b{font-size:11px;color:#713126;white-space:nowrap}
  .adventure-page.deploying .inventory-pieces{flex:0 1 auto;gap:1px;padding:3px 4px;overflow-x:auto}
  .adventure-page.deploying .inventory-pieces button{flex-basis:37px;min-height:42px;height:42px}.adventure-page.deploying .inventory-pieces i{width:33px;height:33px;font-size:18px}
  .adventure-page.deploying .inventory-future{display:grid;flex:0 0 52px;place-content:center;padding-left:5px;border-left:1px solid #9f7b486b;color:#756b5c;font-size:10px;line-height:1.05;text-align:center;white-space:nowrap}.adventure-page.deploying .inventory-future small{margin-top:3px;color:#90785a;font-size:7px}
  .adventure-page.deploying #confirmDeployment{top:var(--adventure-board-bottom,70vh)}
}

/* v0.4.3 r8：兵种与技能共用卷轴滚动，布阵提示归入回合栏。 */
.adventure-page.deploying .deployment-guide{display:none}
.adventure-page:not(.deploying) #confirmDeployment{display:none}
@media(max-width:899px), (max-height:649px){
  .adventure-page.deploying .pack-panel,.adventure-page.deploying .adventure-inventory.open .pack-panel{display:none;align-items:center;gap:3px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;scrollbar-width:none}
  .adventure-page.deploying .adventure-inventory.open .pack-panel{display:flex}.adventure-page.deploying .pack-panel::-webkit-scrollbar{display:none}
  .adventure-page.deploying .pack-panel::before{z-index:0}.adventure-page.deploying .pack-panel header,.adventure-page.deploying .inventory-pieces,.adventure-page.deploying .inventory-future{position:relative;z-index:1}
  .adventure-page.deploying .pack-panel header{flex:0 0 29px;border:0}.adventure-page.deploying .pack-panel header b,.adventure-page.deploying .inventory-future{padding:2px 4px;border:1px solid #b89a6a80;border-radius:7px;background:#fff9e7c9;box-shadow:0 1px 2px #59472b24;font-size:8px}
  .adventure-page.deploying .inventory-pieces{flex:0 0 auto;overflow:visible;scroll-snap-type:none}.adventure-page.deploying .inventory-future{display:grid;flex:0 0 43px;border-left:1px solid #b89a6a80;scroll-snap-align:end}.adventure-page.deploying .inventory-future small{font-size:6px}
  .adventure-page.deploying #confirmDeployment{left:var(--adventure-board-center,50%);top:var(--adventure-river-y,50%);width:132px;min-height:0;height:40px;padding:0 18px;transform:translate(-50%,-50%);border:0;background:transparent url('../assets/adventure-start-v043-r8.png') center/100% 100% no-repeat;color:#273943;font-size:12px;letter-spacing:.12em;box-shadow:none;text-shadow:0 1px #fff5df}
  .adventure-page.deploying #confirmDeployment:disabled{background:transparent url('../assets/adventure-start-v043-r8.png') center/100% 100% no-repeat;color:#65584a;filter:grayscale(.25);opacity:.86}
  .adventure-page.deploying .turn-panel::before{right:0}.adventure-page.deploying .turn-hint{width:94%;padding-right:0;font-size:10px}
}

/* v0.4.5 r5：回合副标题与移动端兵力信息保持清晰。 */
.play-page .turn-hint{font-weight:750;text-shadow:0 1px 1px #071722,0 0 3px #071722}
@media(min-width:900px) and (min-height:650px){.play-page .turn-hint{color:#514538;text-shadow:0 1px #fff8e8}}
@media(max-width:899px), (max-height:649px){
  .play-page .battle-stats #count{width:auto;margin-left:auto;padding:2px 5px;gap:5px;border:1px solid #a98b5580;border-radius:13px;background:#f8edd9e8;box-shadow:0 1px 2px #26343a26,inset 0 0 0 1px #fff8e9}
  .play-page .battle-stats #count b,.adventure-page .battle-stats #count b{padding:1px 2px;border:0!important;background:transparent!important;box-shadow:none!important}
  .play-page .battle-stats #count b::before{display:none}
  .play-page .turn-hint.visible{width:max-content;max-width:70%;padding:0 6px;border-radius:9px;background:#172b35a8}
  .adventure-page.deploying .turn-hint.visible{max-width:94%}
}

/* v0.4.5 r7：山河试炼只使用我方/敌方语义，敌军统一为青铜铜绿主题。 */
.adventure-page .life.active-side b{text-decoration:none}
.adventure-page .life.black,.adventure-page #blackCount[data-display-side=black]{color:#315d57}
.adventure-page .turn-panel[data-side=black]::before{background-image:url('../assets/turn-banner.png')}
.adventure-page .turn-panel[data-side=black] #turn{color:#eef0da}
.adventure-page .battle-stats #blackCount[data-display-side=black]{--count-side:#55786d;color:#315d57!important}
@media(min-width:900px) and (min-height:650px){
  .adventure-page .life.black{--life-side:#55786d}
  .adventure-page .turn-panel[data-side=black] #turn{color:var(--turn-side,#55766b)}
}

/* v0.4.6：兵书残卷三选一与单格重抽。 */
#scrollReward{width:min(720px,94vw);max-height:92dvh;padding:0;border:0;background:transparent;color:#263943;overflow:auto}#scrollReward::backdrop{background:#101d24cc;backdrop-filter:blur(5px)}
.scroll-reward-card{padding:24px;border:3px solid #263943;background:#f5e7cf url('../assets/recruitment-panel-v045-r6.jpg') center/cover no-repeat;box-shadow:7px 8px 0 #315d57;text-align:center}.scroll-reward-card>span{display:inline-block;padding:3px 11px;border:1px solid #8d744b;border-radius:12px;background:#fff5dfd9;color:#8d3027;font-size:12px;letter-spacing:.3em}.scroll-reward-card h2{margin:7px 0 4px;font:800 30px/1.2 "LXGW WenKai Lite","STKaiti",serif}.scroll-reward-card>p{margin:0 0 14px;color:#66563f;font-size:12px}.scroll-offers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.scroll-offers article{display:grid;grid-template-rows:auto auto 1fr auto auto;gap:7px;min-width:0;min-height:230px;padding:14px 12px;border:2px solid #9b7848;background:#fff6e3e8;box-shadow:2px 3px 0 #26394322}.scroll-offers article[data-rarity=彩]{border-color:#8d3027;box-shadow:inset 0 0 0 2px #d5a44c66,2px 3px 0 #26394322}.scroll-offers article>span{color:#9b3026;font-size:11px;letter-spacing:.2em}.scroll-offers h3{margin:0;font:800 18px/1.25 "LXGW WenKai Lite","STKaiti",serif}.scroll-offers p{margin:0;color:#655540;font-size:12px;line-height:1.55}.scroll-offers button{min-height:38px;padding:6px 8px;border:1px solid #263943;box-shadow:1px 2px 0 #2639432c;background:#9f3027;color:#fff2d7;font-size:12px}.scroll-offers .scroll-reroll{background:#f2e2c7;color:#604d36;border-color:#9b7c4b}.scroll-offers .scroll-reroll:disabled{opacity:.5}
@media(max-width:620px){.scroll-reward-card{padding:18px 12px}.scroll-offers{grid-template-columns:1fr}.scroll-offers article{grid-template-columns:52px minmax(0,1fr) auto;grid-template-rows:auto auto;align-items:center;min-height:0;text-align:left}.scroll-offers article>span{grid-row:1/3}.scroll-offers h3{font-size:15px}.scroll-offers p{font-size:10px;line-height:1.35}.scroll-offers button{grid-column:3;grid-row:1}.scroll-offers .scroll-reroll{grid-column:3;grid-row:2}.scroll-reward-card h2{font-size:25px}}

/* v0.4.6 r4：开局按钮移出棋盘命中区，桌面背包恢复手绘图标。 */
@media(max-width:899px), (max-height:649px){
  .adventure-page.deploying .board-wrap{box-sizing:border-box;padding-bottom:44px}
  .adventure-page.deploying .pack-panel .pack-open-art{display:none}
  .adventure-page.deploying #confirmDeployment{left:var(--adventure-board-center,50%);top:var(--adventure-confirm-top,calc(var(--adventure-board-bottom,70vh) + 4px));width:min(188px,52vw);min-height:36px;height:36px;padding:0 18px;transform:translateX(-50%);border:1px solid #74251e;border-radius:5px;background:linear-gradient(180deg,#b94334,#90291f);color:#fff1d3;font-size:12px;letter-spacing:.16em;box-shadow:inset 0 0 0 2px #d985665c,0 3px 0 #2639434d;text-shadow:0 1px #5d1c17;filter:none}
  .adventure-page.deploying #confirmDeployment:disabled{pointer-events:none;background:linear-gradient(180deg,#98463b,#74332d);color:#ead9c3;box-shadow:inset 0 0 0 2px #d7a28a4d,0 2px 0 #26394338;filter:saturate(.75);opacity:.82}
}
@media(min-width:900px) and (min-height:650px){
  .adventure-page .pack-panel header{grid-template-columns:64px 1fr}
  .adventure-page .pack-panel .pack-open-art{display:block}
}

/* v0.4.6 r7：行军背包改为父目录，兵种、鬼谷奇术、兵书各自折叠。 */
.pack-heading{display:grid;grid-template-columns:58px 1fr;align-items:center;gap:8px}.pack-heading>div{display:grid;gap:2px}.pack-heading small{color:#7a6548;font-size:9px}
.pack-heading small,.pack-toggle small{display:flex;align-items:center;gap:5px}.pack-grain{display:inline-flex;align-items:center;gap:2px;white-space:nowrap}.pack-grain::before{content:"·";margin-right:1px}.pack-grain i{width:15px;height:15px;flex:0 0 15px;background:url('../assets/grain-token-v045-r6.png') center/contain no-repeat;filter:drop-shadow(0 1px 1px #46321f55)}.pack-grain b{color:#8f3026!important;font:800 9px/1 system-ui!important}
.pack-folder{border:1px solid #aa8a5d80;background:#f8edd9a6;box-shadow:inset 3px 0 #9c3328}.pack-folder+ .pack-folder{margin-top:5px}.pack-folder summary{position:relative;display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:7px;min-height:38px;padding:4px 24px 4px 7px;color:#273c46;cursor:pointer;list-style:none}.pack-folder summary::-webkit-details-marker{display:none}.pack-folder summary::after{content:"›";position:absolute;right:8px;top:50%;transform:translateY(-50%) rotate(90deg);color:#8c7048;font-size:17px;transition:transform .16s}.pack-folder[open] summary::after{transform:translateY(-50%) rotate(-90deg)}.pack-folder summary>span{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:#263d48;color:#f3d795;font:800 13px/1 "LXGW WenKai Lite",serif;box-shadow:inset 0 0 0 2px #c19753}.pack-folder summary>b{font-size:13px}.pack-folder summary>small{color:#7b674b;font-size:9px}.pack-folder[open]>summary{border-bottom:1px solid #af916365;background:#fff5e2a8}.pack-empty{margin:0;padding:10px;color:#8a7558;font-size:9px;line-height:1.4}.guigu-folder{box-shadow:inset 3px 0 #315d57}.guigu-folder summary>span{background:#315d57}.scroll-folder{box-shadow:inset 3px 0 #9a7135}.scroll-folder summary>span{background:#8d6a38}.pack-alert{position:absolute;right:21px;top:2px;display:grid;place-items:center;min-width:25px;height:15px;padding:0 4px;border-radius:9px;background:#ae3027;color:#fff0d0;font:normal 800 7px/1 system-ui;box-shadow:0 0 0 2px #f7e8c8,0 2px 3px #401b1747}.pack-alert[hidden]{display:none}.has-pending-scroll .pack-toggle{box-shadow:inset 0 1px #c3a574,inset 0 -1px #c3a574,0 0 0 2px #a8302766}.has-pending-scroll .pack-toggle::after{content:"待阅";align-self:flex-start;margin:5px 0 0 auto;padding:2px 5px;border-radius:8px;background:#ae3027;color:#fff0d0;font:800 7px/1 system-ui}
.scroll-inventory{display:grid;gap:5px;padding:7px}.scroll-keepsake{--quality:#707b80;--quality-soft:#d9ddda;display:grid;grid-template-columns:38px 1fr;gap:7px;align-items:center;padding:7px;border:1px solid var(--quality);background:linear-gradient(105deg,var(--quality-soft),#fff5df 44%);box-shadow:1px 2px 0 #2639431f}.scroll-keepsake>span{display:grid;place-items:center;height:30px;border-radius:50%;background:var(--quality);color:#fff6de;font-size:9px;font-weight:850;box-shadow:inset 0 0 0 2px #fff8e577}.scroll-keepsake>div{display:grid;gap:2px;min-width:0}.scroll-keepsake b{overflow:hidden;color:#263943;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.scroll-keepsake small{overflow:hidden;color:#6e5d48;font-size:8px;text-overflow:ellipsis;white-space:nowrap}.scroll-keepsake[data-rarity=金]{--quality:#ae772b;--quality-soft:#f1d894}.scroll-keepsake[data-rarity=彩]{--quality:#7d454e;--quality-soft:#e0c7a5;background:linear-gradient(105deg,#b94b4350,#d6ae5452 28%,#5b877a4a 58%,#666a9b45 78%,#fff5df)}
.scroll-keepsake{width:100%;text-align:left;font-family:inherit;cursor:pointer}.scroll-keepsake:hover,.scroll-keepsake:focus-visible{outline:2px solid #315d57;outline-offset:2px}
.scroll-info{box-sizing:border-box;width:min(440px,calc(100vw - 28px));max-height:calc(100dvh - 28px);padding:0;border:2px solid #a87a38;border-radius:6px;background:#f8edd7;color:#293b3c;box-shadow:0 16px 55px #1724228c}.scroll-info::backdrop{background:#172422b9}.scroll-info article{padding:22px;background:linear-gradient(145deg,#fff9eb,#ecd8b6)}.scroll-info header{display:flex;align-items:center;justify-content:space-between}.scroll-info header small{color:#a36b24;font-weight:800;letter-spacing:.12em}.scroll-info header button{width:36px;height:36px;border:1px solid #a88b5c;border-radius:50%;background:#f8edd7;color:#644e36;font-size:25px;line-height:1}.scroll-info h2{margin:12px 0;color:#273f43;font-size:clamp(23px,5vw,30px);line-height:1.3}.scroll-info blockquote{margin:0 0 12px;padding:8px 12px;border-left:3px solid #a33f34;background:#f2e0c6;color:#7c4536}.scroll-info p{margin:10px 0;line-height:1.7}.scroll-info #scrollInfoProgress{padding:9px 12px;border:1px solid #d2ba8b;background:#fff7e5;color:#315b50;font-weight:750}.scroll-info #acknowledgeScrollInfo{width:100%;min-height:44px;margin-top:12px;border:1px solid #2b5550;border-radius:4px;background:#315b50;color:#fff5de;font-size:15px;font-weight:800;font-family:inherit;line-height:1.2}
.scroll-offers article[data-hero-scroll=GUAN_YU],.scroll-keepsake[data-hero-scroll=GUAN_YU]{position:relative;isolation:isolate;overflow:hidden;border-color:transparent;background:linear-gradient(#fff8e7e8,#fff1cee8) padding-box,linear-gradient(115deg,#3b806e,#d9b452,#8e557f,#49758c,#e4c86d,#3b806e) border-box;background-size:100% 100%,260% 100%;box-shadow:0 0 22px #d7b44b55,inset 0 0 22px #fff7ca99,2px 3px 0 #26394322;animation:hero-scroll-flow 4.8s linear infinite}.scroll-offers article[data-hero-scroll=GUAN_YU]::before,.scroll-keepsake[data-hero-scroll=GUAN_YU]::before{content:"";position:absolute;z-index:-1;inset:-60% -30%;background:conic-gradient(from 15deg,transparent 0 18%,#8ad5c72e 25%,transparent 34% 50%,#d8a3cf33 59%,transparent 70% 100%);animation:hero-scroll-glint 7s linear infinite;pointer-events:none}.scroll-offers article[data-hero-scroll=GUAN_YU]>span,.scroll-keepsake[data-hero-scroll=GUAN_YU]>span{background:linear-gradient(135deg,#315d52,#b48432 52%,#654a70);color:#fff5cf;box-shadow:inset 0 0 0 1px #ffe8a0,0 0 10px #d3ad48aa}.scroll-keepsake[data-hero-scroll=GUAN_YU]{--quality:#8e7136;--quality-soft:#f3dfac}@keyframes hero-scroll-flow{to{background-position:100% 100%,260% 0}}@keyframes hero-scroll-glint{to{transform:rotate(360deg)}}@media all{:where(html[data-game-motion="reduce"]) .scroll-offers article[data-hero-scroll=GUAN_YU],:where(html[data-game-motion="reduce"]) .scroll-keepsake[data-hero-scroll=GUAN_YU],:where(html[data-game-motion="reduce"]) .scroll-offers article[data-hero-scroll=GUAN_YU]::before,:where(html[data-game-motion="reduce"]) .scroll-keepsake[data-hero-scroll=GUAN_YU]::before{animation:none}}
.review-pending-scroll,.defer-scroll-reward{width:calc(100% - 14px);min-height:34px;margin:0 7px 8px;border:1px solid #8c3026;background:#9f3329;color:#fff1d3;font-size:10px;box-shadow:1px 2px 0 #26394330}.review-pending-scroll[hidden]{display:none}.defer-scroll-reward{width:auto;min-width:180px;margin:14px auto 0;padding:8px 18px;background:#f1e1c7;color:#665138;border-color:#a48759}
.scroll-offers article{--rarity:#737e83;--rarity-soft:#dce0dc;border-color:var(--rarity);background:linear-gradient(145deg,var(--rarity-soft),#fff6e3 42%,#efe7d9);box-shadow:inset 0 0 0 1px #fff9ec,2px 3px 0 #26394322}.scroll-offers article[data-rarity=金]{--rarity:#b17a2b;--rarity-soft:#f3d78c;box-shadow:inset 0 0 0 1px #fff4ca,0 0 14px #d39d3a2e,2px 3px 0 #26394322}.scroll-offers article[data-rarity=彩]{--rarity:#82404b;--rarity-soft:#e1c19d;border-color:transparent;background:linear-gradient(#fff3dfea,#fff3dfea) padding-box,linear-gradient(125deg,#9c3730,#d2a43c,#47796e,#5d5f91,#9c3730) border-box;box-shadow:0 0 16px #89659b36,2px 3px 0 #26394322}.scroll-offers article>span{justify-self:center;padding:3px 8px;border:1px solid var(--rarity);border-radius:12px;background:var(--rarity);color:#fff5dd;letter-spacing:.16em;box-shadow:inset 0 0 0 1px #fff8e66b}
@media(min-width:900px) and (min-height:650px){
  .adventure-page .pack-panel{align-content:start;gap:6px}.adventure-page .pack-panel>.pack-heading{grid-template-columns:64px 1fr;padding:2px 2px 10px;border-bottom:1px solid #a98a59}.adventure-page .pack-panel>.pack-heading b{color:#263943;font-size:18px}.adventure-page .pack-panel>.pack-heading small{display:flex}.adventure-page .pack-folder .inventory-pieces{padding:7px}.adventure-page .pack-folder .inventory-pieces button{min-height:58px}.adventure-page #confirmDeployment{margin-top:6px}
}
@media(max-width:899px), (max-height:649px){
  .adventure-page:not(.deploying) .pack-panel,.adventure-page:not(.deploying) .adventure-inventory.open .pack-panel{display:none;flex-direction:column;align-items:stretch;width:min(310px,calc(100vw - 20px));height:auto;max-height:min(430px,70dvh);padding:8px;overflow:auto}.adventure-page:not(.deploying) .adventure-inventory.open .pack-panel{display:flex}.adventure-page:not(.deploying) .pack-heading{display:grid}.adventure-page:not(.deploying) .pack-folder{display:block;width:100%}
  .adventure-page.deploying .pack-heading,.adventure-page.deploying .guigu-folder,.adventure-page.deploying .scroll-folder,.adventure-page.deploying .troop-folder>summary{display:none}.adventure-page.deploying .troop-folder{display:contents}.adventure-page.deploying .troop-folder>.inventory-pieces{position:relative;z-index:1}
}

/* v0.4.6 r8：结果入口在技能栏之上保持可点，并恢复明确的朱砂按钮。 */
@media(min-width:900px) and (min-height:650px){.play-page .context-actions{position:relative;z-index:96;pointer-events:none}.play-page .context-actions #showResult{pointer-events:auto;border:2px solid #263943;background:linear-gradient(180deg,#b94334,#87271f);color:#fff1d3;box-shadow:inset 0 0 0 2px #d985665c,3px 4px 0 #26394355}}
.confirmation-dialog{width:min(390px,calc(100vw - 28px));max-width:none;padding:0;border:0;background:transparent;color:#23343c;overflow:visible}.confirmation-dialog::backdrop{background:#101d24b8;backdrop-filter:blur(4px) saturate(.8)}.confirmation-card{position:relative;isolation:isolate;display:grid;justify-items:center;padding:26px 24px 22px;border:3px solid #253842;border-radius:7px 3px 9px 4px;background:#f7ecd7 url('../assets/board.webp') center/1050px auto;box-shadow:7px 8px 0 #8f3026,0 18px 50px #08141c66;text-align:center;animation:confirmation-in .24s cubic-bezier(.18,.82,.25,1.12)}.confirmation-card::before,.confirmation-card::after{content:"";position:absolute;z-index:-1;pointer-events:none}.confirmation-card::before{inset:8px;border:1px solid #b8955b}.confirmation-card::after{left:8%;right:8%;top:69px;height:8px;background:linear-gradient(90deg,transparent,#9e3026 12% 88%,transparent);opacity:.18;clip-path:polygon(0 35%,93% 0,100% 42%,72% 64%,8% 100%)}.confirmation-eyebrow{color:#94713c;font-size:10px;font-weight:800;letter-spacing:.38em}.confirmation-mark{display:grid;place-items:center;width:58px;height:58px;margin:10px 0 5px;border:3px double #d1a445;border-radius:50%;background:radial-gradient(circle at 38% 32%,#c24b35,#8f251e 68%,#5d1815);box-shadow:0 3px 0 #26394355,0 0 0 4px #f2d28d42;color:#fff1ca;font:900 30px/1 "LXGW WenKai Lite","STKaiti",serif;font-style:normal;text-shadow:0 2px 1px #4b1714;transform:rotate(-4deg)}.confirmation-card[data-tone=danger] .confirmation-mark{background:radial-gradient(circle at 38% 32%,#344d5b,#1c3442 68%,#10232e)}.confirmation-card h2{margin:7px 0 6px;font:800 24px/1.3 "LXGW WenKai Lite","STKaiti",serif;letter-spacing:.06em}.confirmation-card p{max-width:31em;min-height:3.2em;margin:0;color:#665640;font-size:13px;line-height:1.65}.confirmation-actions{display:grid;grid-template-columns:1fr 1.25fr;gap:10px;width:100%;margin-top:18px}.confirmation-actions button{min-height:46px;border:1px solid #8c714a;border-radius:3px;background:#f8edda;color:#35434a;font-weight:800;box-shadow:inset 0 0 0 2px #fff8e7,2px 3px 0 #2639432e}.confirmation-actions #confirmationAccept{border-color:#76251e;background:linear-gradient(145deg,#ad392d,#80251f);color:#fff0d2;box-shadow:inset 0 0 0 2px #d8795d66,2px 3px 0 #2639434d}.confirmation-actions button:focus-visible{outline:3px solid #d2a34a;outline-offset:2px}.confirmation-actions button:active{transform:translateY(1px);box-shadow:inset 0 0 0 2px #fff8e7,1px 1px 0 #2639432e}@keyframes confirmation-in{from{opacity:0;transform:translateY(14px) scale(.94) rotate(-1deg)}to{opacity:1;transform:none}}@media(max-width:430px){.confirmation-card{padding:22px 18px 18px}.confirmation-card h2{font-size:21px}.confirmation-card p{font-size:12px}.confirmation-actions button{min-height:48px}}@media all{:where(html[data-game-motion="reduce"]) .confirmation-card{animation:none}}
/* r15：移动布阵使用真正的行军背包菜单；兵种、奇术、兵书共用同一折叠面板。 */
@media(max-width:899px), (max-height:649px){
  .adventure-page.deploying .pack-panel,.adventure-page.deploying .adventure-inventory.open .pack-panel{box-sizing:border-box;left:8px;top:var(--adventure-pack-top,180px);display:none;width:calc(100vw - 16px);height:auto;max-height:min(330px,46dvh);padding:6px;border:1px solid #263943;border-radius:5px;background:#f6e9d2f2;box-shadow:0 3px 0 #8d3026,0 8px 20px #15252d38;backdrop-filter:blur(4px);overflow:auto}
  .adventure-page.deploying .adventure-inventory.open .pack-panel{display:block}.adventure-page.deploying .pack-panel::before{display:none}
  .adventure-page.deploying .pack-heading{display:none}.adventure-page.deploying .pack-folder{display:block!important;width:100%;margin:0 0 5px}.adventure-page.deploying .pack-folder>summary{display:grid!important}
  .adventure-page.deploying .troop-folder{display:block}.adventure-page.deploying .troop-folder>.inventory-pieces{position:relative;display:flex;padding:6px;overflow-x:auto}
  .adventure-page.deploying .technique-inventory,.adventure-page.deploying .scroll-inventory{display:grid;max-height:164px;padding:6px;overflow:auto}
  .adventure-page.deploying .technique-keepsake{grid-template-columns:38px minmax(0,1fr) auto;width:auto;padding:5px}.adventure-page.deploying .technique-keepsake>.technique-art-button{width:36px;height:36px}
  .adventure-page.deploying .review-pending-scroll{width:calc(100% - 12px);margin:0 6px 6px}
}

/* v0.4.8 r24：移动端棋盘禁用缩放、选词与系统翻译菜单，背包和弹窗保留定向滚动。 */
.play-page .board-wrap{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.play-page button,.play-page a,.play-page summary,.play-page select,.play-page label{touch-action:manipulation}

/* v0.4.8 r33：背包资源逐行排布；胜负入口在桌面端归入左侧操作栏。 */
.adventure-page .pack-heading small.pack-resources,.adventure-page .pack-toggle small.pack-resources{display:grid!important;grid-template-columns:1fr;align-items:start;justify-items:start;gap:2px;white-space:normal;overflow:visible}
.pack-resources>#packTroopSummary,.pack-resources>#packTroopMeta{display:block;width:100%;color:#5f513e;line-height:1.2}
.pack-resources>.pack-resource{display:grid;grid-template-columns:15px auto 1fr;align-items:center;gap:4px;min-width:0;line-height:15px;white-space:nowrap}
.pack-resources>.pack-resource::before{display:none!important;content:none!important}
.pack-resources>.pack-resource>span{color:#6e5b41;font-size:8px}
.pack-resources>.pack-resource>b{justify-self:start;font-size:9px!important}
.pack-resources>.pack-resource>i{width:15px;height:15px;filter:none}
@media(min-width:900px) and (min-height:650px){.adventure-page .context-actions{grid-column:1;justify-self:stretch;padding:14px 12px}.adventure-page .context-actions #showResult{width:100%}.adventure-page .pack-panel>.pack-heading{align-items:start}.adventure-page .pack-panel>.pack-heading small.pack-resources{margin-top:3px}}
@media(max-width:899px), (max-height:649px){.adventure-page .pack-toggle{height:64px;min-height:64px}.adventure-page .arena{grid-template-rows:minmax(0,1fr) 64px}.adventure-page .pack-toggle small.pack-resources{gap:0}.adventure-page .pack-toggle .pack-resources>#packTroopSummary{font-size:8px}.adventure-page .pack-toggle .pack-resource{line-height:12px}.adventure-page .pack-toggle .pack-resource>i{width:12px;height:12px}.adventure-page .pack-toggle .pack-resource>span,.adventure-page .pack-toggle .pack-resource>b{font-size:7px!important}}
.play-page .pack-panel,.play-page .sheet{overscroll-behavior:contain}

/* v0.4.8 r30：高清资产本体不参与 CSS 模糊合成；阴影由容器承担。 */
.play-page canvas{filter:none;image-rendering:auto}
.play-page .board-wrap{filter:none}
.play-page img,.skill-picture img{image-rendering:auto}
.skill-picture{filter:none}
.skill-picture img{filter:saturate(1.06) contrast(1.055)}
.skill-button[data-dim=true] .skill-picture img{filter:saturate(.2) contrast(1.03)}
.skill-button.combination-skill{--combo-accent:#9a7139}.skill-button.combination-skill .skill-picture{background:radial-gradient(circle,#fff9e9 22%,#ead7ad 72%,transparent 74%)}
.skill-button.combination-skill .skill-picture img{width:100%;height:100%;object-fit:contain;filter:none}.skill-button[data-passive=true]{opacity:.9}
@media(max-width:899px),(max-height:649px){.adventure-page .skill-bar.red{justify-content:flex-start;overflow-x:auto;overflow-y:visible;scrollbar-width:none;-webkit-overflow-scrolling:touch}.adventure-page .skill-bar.red::-webkit-scrollbar{display:none}.adventure-page .skill-bar.red .skill-button{flex:0 0 48px}.adventure-page .skill-bar.red .skill-button[hidden]{display:none}}

/* v0.4.9 r7：移动技能不再用墨色底条。朱砂手绘框承载冷却与就绪态，原画和文字保持干净。 */
@media(max-width:899px),(max-height:649px){
  .adventure-page .skill-bar.red .skill-button{isolation:isolate;flex:0 0 58px;width:58px;height:48px;min-width:58px;min-height:48px;padding:2px 7px;border:0;border-radius:5px;background:#f7ebd6;box-shadow:none;overflow:visible}
  .adventure-page .skill-bar.red .skill-picture{width:38px;height:38px;flex-basis:38px}
  .adventure-page .skill-bar.red .skill-picture i{inset:0;border-radius:50%;background:conic-gradient(var(--side) var(--fill),#d9bf8c9c 0);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 0);mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 0)}
  .adventure-page .skill-bar.red .skill-button::after{right:-1px;bottom:-2px;background:#a1392c;color:#fff4dc;border-color:#e4bd69;box-shadow:0 1px 0 #6e271d55}
  .adventure-page .skill-bar.red .skill-button[data-cooling=true]{box-shadow:none;filter:saturate(.82)}
  .adventure-page .skill-bar.red .skill-button[data-castable=true]{box-shadow:none;filter:drop-shadow(0 1px 2px #a63b2870) brightness(1.05);animation:mobile-skill-ready 1.5s ease-in-out infinite}
  .adventure-page .skill-bar.red .skill-button[data-castable=true] .skill-picture::after{inset:-6px;opacity:.72}
}
@keyframes mobile-skill-ready{0%,100%{transform:translateY(0)}50%{transform:translateY(-1px)}}

/* v0.4.9 r13：移动端用水墨 PNG 一比一替换旧红环，并恢复紧凑尺寸；桌面纸卡压回原高度。 */
@media(max-width:899px),(max-height:649px){
  .adventure-page .skill-bar.red{height:56px;min-height:56px;padding:3px 7px;gap:8px;align-items:center;overflow-x:auto;overflow-y:visible}
  .adventure-page .skill-bar.red .skill-button{position:relative;isolation:isolate;display:grid;place-items:center;flex:0 0 58px;width:58px;height:48px;min-width:58px;min-height:48px;padding:2px 7px;border:0;border-radius:5px;background:transparent;box-shadow:none;overflow:visible}
  .adventure-page .skill-bar.red .skill-picture{position:relative;isolation:isolate;width:38px;height:38px;flex:0 0 38px;border-radius:50%;background:transparent;overflow:visible;box-shadow:none}
  .adventure-page .skill-bar.red .skill-picture::before{opacity:0;background:none}
  .adventure-page .skill-bar.red .skill-picture img{position:absolute;z-index:1;inset:9%;width:82%;height:82%;border-radius:0;object-fit:contain;filter:saturate(1.06) contrast(1.055)}
  .adventure-page .skill-bar.red .skill-picture i{z-index:4;inset:-3px;border-radius:50%;background:url('../assets/ui-skill-frame-ink-gold-v049-r12-v052-r2.webp') center/contain no-repeat;-webkit-mask:none;mask:none}
  .adventure-page .skill-bar.red .skill-copy{display:none}
  .adventure-page .skill-bar.red .skill-button::after{z-index:6;right:-1px;bottom:-2px;display:grid;min-width:17px;width:17px;height:17px;padding:0;border:1px solid #e4bd69;border-radius:50%;background:#a1392c;color:#fff4dc;box-shadow:0 1px 0 #6e271d55;font-size:9px;line-height:17px;text-align:center}
  .adventure-page .skill-bar.red .skill-button[data-badge=""]::after{display:none}
  .adventure-page .skill-bar.red .skill-button[data-shortcut]::before{z-index:6;left:-1px;top:-1px;width:15px;height:15px;border:1px solid #c39a51;border-radius:50%;background:#273b47;color:#f5dc9a;box-shadow:none;font:800 8px/15px system-ui;text-align:center}
  .adventure-page .skill-bar.red .skill-button[data-castable=true]{filter:none;animation:mobile-skill-ready 1.5s ease-in-out infinite}
  .adventure-page .skill-bar.red .skill-button[data-castable=true] .skill-picture::after{inset:-7px;opacity:.64;filter:none}
  .adventure-page .skill-bar.red .skill-button[data-cooling=true]{filter:saturate(.82)}
}
@media(min-width:900px){
  .adventure-page .skill-bar.red{display:grid;grid-template-columns:1fr;align-content:start;gap:8px;padding:12px;overflow:visible}
  .adventure-page .skill-bar.red .skill-button{position:relative;isolation:isolate;display:flex;place-items:initial;align-items:center;box-sizing:border-box;width:100%;height:auto;min-width:0;min-height:74px;padding:7px 30px 7px 10px;gap:10px;border:1px solid #b99a66;border-inline-start:4px solid var(--side);border-radius:3px;background:#f7ecd8;box-shadow:inset 0 0 0 2px #fff8e77d,2px 3px 0 #26343a1c;overflow:visible}
  .adventure-page .skill-bar.red .skill-picture{position:relative;width:54px;height:54px;flex:0 0 54px;border-radius:0;background:transparent;box-shadow:none}
  .adventure-page .skill-bar.red .skill-picture::before{opacity:0;background:none}
  .adventure-page .skill-bar.red .skill-picture img{position:static;inset:auto;width:100%;height:100%;border-radius:0;object-fit:contain;filter:saturate(1.06) contrast(1.055)}
  .adventure-page .skill-bar.red .skill-picture i{z-index:4;inset:0;border-radius:9px;background:conic-gradient(transparent var(--fill),#081c30bc 0);-webkit-mask:none;mask:none}
  .adventure-page .skill-bar.red .skill-copy{display:grid;gap:2px;min-width:0;color:var(--side);text-align:left}
  .adventure-page .skill-bar.red .skill-copy b{font-size:12px;white-space:nowrap}
  .adventure-page .skill-bar.red .skill-copy small{font-size:9px;white-space:nowrap}
  .adventure-page .skill-bar.red .skill-button::after{display:none}
  .adventure-page .skill-bar.red .skill-button[data-shortcut]::before{left:auto;right:6px;top:6px;width:18px;height:18px;border-radius:2px;box-shadow:1px 1px 0 #1a272e52;font:800 10px/18px system-ui;text-align:center}
}

/* v0.4.9 r15：技能槽只保留图标需要的宽度，连续技能紧邻排列。 */
@media(max-width:899px),(max-height:649px){
  .adventure-page .skill-bar.red{gap:0;padding-inline:2px}
  .adventure-page .skill-bar.red .skill-button{flex-basis:50px;width:50px;min-width:50px;padding-inline:4px}
}

/* v0.4.10 r3：徐州城战前、战后播片。画幅略宽于棋盘，保留原声与片内字幕。 */
.story-cinematic{width:min(780px,94vw);max-width:94vw;padding:0;border:0;background:transparent;color:#f4e5c5;overflow:visible}
.story-cinematic::backdrop{background:radial-gradient(circle at 50% 48%,#2d2114a8 0 22%,#10171ddf 72%);backdrop-filter:blur(4px);animation:story-backdrop-in .38s ease-out both}
.story-cinematic-stage{position:relative;isolation:isolate;padding:9px 9px 11px;border:2px solid #b88a42;background:linear-gradient(145deg,#1a2528,#111719 72%);box-shadow:0 0 0 3px #ead29a24,0 16px 46px #05090bc7;animation:story-stage-in .46s cubic-bezier(.18,.84,.28,1.08) both}
.story-cinematic-stage::before,.story-cinematic-stage::after{content:'';position:absolute;z-index:-1;inset:-12px 6%;border-block:1px solid #d6ad5c70;transform:skewX(-8deg);opacity:.72}
.story-cinematic-stage::after{inset:6% -12px;border-block:0;border-inline:1px solid #d6ad5c52;transform:skewY(-2deg)}
.story-cinematic-stage>span{display:block;margin:0 0 2px;color:#d9b86e;font-size:10px;letter-spacing:.34em;text-align:center}
.story-cinematic-stage h2{margin:0 0 7px;color:#f4e4bd;font:700 17px/1.25 "LXGW WenKai Lite","STKaiti",serif;letter-spacing:.12em;text-align:center;text-shadow:0 1px 4px #000}
.story-cinematic video{display:block;width:100%;max-height:68dvh;object-fit:contain;background:#090d0e;border:1px solid #6e5633;box-shadow:inset 0 0 24px #0009}
.story-cinematic-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:7px}
.story-cinematic-actions button{min-height:32px;padding:5px 12px;border:1px solid #93723f;background:#efe0bd;color:#4c3924;font-size:11px;box-shadow:0 2px 0 #05090b66}
.story-cinematic-actions #skipStoryCinematic{background:#1d292b;color:#d8c295;border-color:#6d5d40}
#result[data-awaiting-cinematic=true] .result-actions{opacity:.5}
@keyframes story-backdrop-in{from{opacity:0}to{opacity:1}}
@keyframes story-stage-in{from{opacity:0;transform:scale(.9) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}
@media(max-width:620px){.story-cinematic{width:95vw;max-width:95vw}.story-cinematic-stage{padding:6px 6px 8px}.story-cinematic-stage>span{font-size:8px}.story-cinematic-stage h2{margin-bottom:5px;font-size:14px}.story-cinematic video{max-height:56dvh}.story-cinematic-actions{margin-top:5px}.story-cinematic-actions button{min-height:30px;padding:4px 10px;font-size:10px}}
@media(max-height:520px){.story-cinematic-stage>span,.story-cinematic-stage h2{position:absolute;z-index:2;left:12px;padding:2px 7px;background:#101719c7}.story-cinematic-stage>span{top:12px}.story-cinematic-stage h2{top:31px;margin:0}.story-cinematic video{max-height:72dvh}.story-cinematic-actions{position:absolute;right:14px;bottom:14px}}

/* v0.4.10 r8：移动战况条只显示关卡信息；两侧将领与生命始终保持单行。 */
@media(max-width:899px),(max-height:649px){
  .adventure-page .life-bar{gap:3px;min-width:0}
  .adventure-page .life{flex:1 1 0;min-width:0;gap:3px}
  .adventure-page .life>div{min-width:0;gap:0}
  .adventure-page .life>div>b{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9px;letter-spacing:.04em}
  .adventure-page .life.black{justify-content:flex-end}
  .adventure-page .life.black>div{justify-items:end;align-items:end}
  .adventure-page .life-meter{flex:0 0 auto;min-width:54px}
  .adventure-page .mode-mark{flex:0 1 42%;min-width:0;max-width:42%;padding-inline:5px}
  .adventure-page .mode-mark b,.adventure-page .mode-mark small{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .adventure-page .pack-toggle .pack-resource{grid-template-columns:13px auto 1fr}
  .adventure-page .pack-toggle .pack-resource>i{width:13px;height:13px;flex:0 0 13px;background-size:13px 13px;background-position:center}
}

/* 背包两种货币共用同一图标盒，避免辎重图占位比兵粮宽。 */
.adventure-page .pack-resources>.pack-resource>i{box-sizing:border-box;flex:0 0 15px;width:15px;height:15px;background-size:15px 15px;background-position:center}
@media(max-width:899px),(max-height:649px){.adventure-page .pack-toggle .pack-resources>.pack-resource>i{flex-basis:13px;width:13px;height:13px;background-size:13px 13px}}

/* 玩家交流群二维码：后台热更新，菜单只承担展示。 */
.developer-card:has(.community-codes){grid-template-columns:48px minmax(0,1fr) minmax(116px,142px)}
.developer-card .community-codes{grid-column:3;grid-row:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;align-self:start}
.community-code{display:grid;gap:3px;margin:0;text-align:center;color:#a3342b;font-size:11px;font-weight:800}
.community-code-button{display:block;width:100%;min-height:0;padding:0;border:1px solid #b7904b;border-radius:4px;background:#25262b;box-shadow:none;overflow:hidden;cursor:zoom-in}.community-code-button img{display:block;width:100%;aspect-ratio:1;object-fit:contain}.community-code-dialog{width:min(92vw,720px);max-width:92vw;padding:0;border:0;background:transparent;overflow:visible}.community-code-dialog::backdrop{background:#13232bd9;backdrop-filter:blur(5px)}.community-code-dialog article{padding:18px;border:3px solid #26343a;border-radius:12px 4px 10px;background:#faf2e2;box-shadow:7px 8px 0 #a13226}.community-code-dialog header{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:12px}.community-code-dialog h2{margin:2px 0 0;font-family:serif;font-size:clamp(22px,5vw,34px)}.community-code-dialog small{color:#a13226}.community-code-dialog header button{flex:0 0 48px;width:48px;height:48px;min-height:48px;padding:0;background:#faf2e2;color:#26343a;font-size:32px;box-shadow:3px 3px 0 #168198}.community-code-dialog>article>img{display:block;width:min(78vmin,600px);max-width:100%;aspect-ratio:1;object-fit:contain;margin:auto;background:#25262b;border:1px solid #b7904b}.community-code-dialog p{margin:12px 0 0;text-align:center;color:#665543;font-size:13px}
@media(max-width:420px){.developer-card:has(.community-codes){grid-template-columns:42px minmax(0,1fr) 112px;padding:9px;gap:7px}.developer-card:has(.community-codes)>img{width:42px;height:42px}.developer-card .community-codes{gap:5px}.community-code{font-size:10px}}

/* EP.05：山河行军房间图。路线与房间均由种子生成，地图只呈现玩家已经探明的情报。 */
.open-shanhe-map{position:fixed;z-index:92;left:max(10px,env(safe-area-inset-left));top:clamp(92px,14vh,142px);display:flex;align-items:center;gap:7px;min-height:42px;padding:6px 12px 6px 7px;border:1px solid #a87b3d;border-radius:24px 5px 5px 24px;background:linear-gradient(135deg,#233c3c,#345953);color:#f7e7bd;box-shadow:3px 4px 0 #17282b66,0 7px 20px #17282b2e;font-family:"LXGW WenKai Lite",serif;letter-spacing:.08em}.open-shanhe-map[hidden]{display:none}.open-shanhe-map i{display:grid;place-items:center;width:29px;height:29px;border:1px solid #d6b46d;border-radius:50%;background:#f2e2bc;color:#29453f;font-style:normal;font-weight:900}.open-shanhe-map span{font-size:12px;font-weight:800}
.shanhe-map{width:min(900px,96vw);max-width:96vw;max-height:94dvh;padding:0;border:0;background:transparent;color:#263b3d;overflow:visible}.shanhe-map::backdrop{background:#16262bce;backdrop-filter:blur(5px)}.shanhe-map>article{position:relative;isolation:isolate;padding:16px;border:2px solid #263f40;background:radial-gradient(circle at 20% 16%,#fff9e9a8 0 5%,transparent 21%),radial-gradient(circle at 76% 77%,#bb905420 0 4%,transparent 23%),linear-gradient(145deg,#fbf1dc,#ead6ad);box-shadow:7px 8px 0 #9d3529,0 18px 60px #0c1519b8}.shanhe-map>article::before{content:'';position:absolute;z-index:-1;inset:8px;border:1px solid #aa8348;pointer-events:none}.shanhe-map header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:4px 8px 11px;border-bottom:1px solid #af884b}.shanhe-map header small{color:#a13a2d;font-size:10px;letter-spacing:.24em}.shanhe-map header h2{margin:2px 0 1px;font:800 clamp(22px,4vw,34px)/1.1 "LXGW WenKai Lite",serif;letter-spacing:.12em}.shanhe-map header p{margin:4px 0 0;color:#766044;font-size:11px}.shanhe-map header button{flex:0 0 42px;width:42px;height:42px;min-height:42px;padding:0;border:1px solid #9b7944;background:#f6e9ce;color:#263b3d;font-size:29px;box-shadow:2px 3px 0 #1c6874}
.shanhe-map-canvas{position:relative;width:min(100%,520px,calc((94dvh - 150px) * .7778));aspect-ratio:7/9;margin:8px auto 4px;overflow:hidden;background:radial-gradient(circle at 50% 52%,#f7ecd7d9 0 32%,transparent 72%),repeating-linear-gradient(0deg,transparent 0 calc(11.111% - 1px),#6f674612 calc(11.111% - 1px) 11.111%),repeating-linear-gradient(90deg,transparent 0 calc(14.285% - 1px),#6f674612 calc(14.285% - 1px) 14.285%),linear-gradient(145deg,#e9ddc2,#d9c49b);border:1px solid #b08d5790}.shanhe-map-canvas::before,.shanhe-map-canvas::after{content:'';position:absolute;inset:auto -4% 0;height:21%;background:radial-gradient(ellipse at 13% 100%,#33545074 0 13%,transparent 14%),radial-gradient(ellipse at 34% 110%,#6f745d6b 0 18%,transparent 19%),radial-gradient(ellipse at 63% 105%,#405d5870 0 16%,transparent 17%),radial-gradient(ellipse at 89% 110%,#796a4b69 0 15%,transparent 16%);opacity:.34;pointer-events:none}.shanhe-map-canvas::after{inset:0 -4% auto;height:14%;transform:scaleY(-1);opacity:.16}
.shanhe-room{position:absolute;z-index:3;display:grid;place-items:center;width:calc(14.285% - 7px);min-width:0;aspect-ratio:1;height:auto;min-height:0;padding:4px 2px;border:2px solid #705b3d;border-radius:3px;background:linear-gradient(145deg,#fff6df,#dec28d);color:#263b3d;box-shadow:inset 0 0 0 2px #fff8e782,2px 3px 0 #25383c4f;transform:translate(-50%,-50%);overflow:visible}.shanhe-room::before{content:'';position:absolute;inset:4px;border:1px solid #9c815654;pointer-events:none}.shanhe-room b{position:relative;z-index:2;display:grid;place-items:center;min-width:24px;min-height:24px;padding:1px;border:1px solid #8d7048;border-radius:50%;background:#f5e6c5;font:900 clamp(10px,1.6vw,15px)/1 "LXGW WenKai Lite",serif}.shanhe-room small{position:relative;z-index:2;display:block;max-width:100%;color:#5f4b34;font-size:clamp(6px,.85vw,9px);line-height:1.05;white-space:nowrap}.shanhe-room:disabled{opacity:.72}.shanhe-room:not(:disabled){cursor:pointer;filter:drop-shadow(0 0 7px #d7ab42);animation:shanhe-room-ready 1.7s ease-in-out infinite}.shanhe-room[data-state=cleared]{border-color:#35665f;background:linear-gradient(145deg,#eef3de,#b6cfae)}.shanhe-room[data-state=active]{border-color:#a43b2e;background:linear-gradient(145deg,#fff0c5,#d99a58)}.shanhe-room[data-type=boss]{border-color:#7b2823;background:linear-gradient(145deg,#f0d6a0,#d9ad68);color:#6d2923}.shanhe-room[data-type=boss] b{border:0;background:transparent;color:#6d2923;font-size:clamp(8px,1.25vw,11px);white-space:nowrap}.shanhe-room[data-type=boss] small{color:#6d2923}.shanhe-room[data-type=hidden]{border-style:dashed;background:linear-gradient(145deg,#eee6d9,#b6b2a8)}.shanhe-room i[data-door]{position:absolute;z-index:4;display:block;background:#e8d5aa;border:1px solid #705b3d;pointer-events:none}.shanhe-room i[data-door=east],.shanhe-room i[data-door=west]{top:50%;width:9px;height:28%;transform:translateY(-50%);border-inline:0}.shanhe-room i[data-door=east]{right:-9px}.shanhe-room i[data-door=west]{left:-9px}.shanhe-room i[data-door=north],.shanhe-room i[data-door=south]{left:50%;width:28%;height:9px;transform:translateX(-50%);border-block:0}.shanhe-room i[data-door=north]{top:-9px}.shanhe-room i[data-door=south]{bottom:-9px}.shanhe-map footer{display:flex;justify-content:space-between;gap:14px;padding:10px 8px 3px;border-top:1px solid #af884b;color:#6a5438;font-size:11px}.shanhe-map footer b{color:#294e49}.shanhe-map footer span{text-align:right}
@keyframes shanhe-room-ready{0%,100%{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.07)}}
@media(max-width:620px){.open-shanhe-map{top:78px;min-height:36px;padding:4px 8px 4px 5px}.open-shanhe-map i{width:25px;height:25px}.open-shanhe-map span{font-size:10px}.shanhe-map{width:97vw;max-width:97vw}.shanhe-map>article{padding:10px 7px}.shanhe-map header{padding:3px 6px 7px}.shanhe-map header button{flex-basis:36px;width:36px;height:36px;min-height:36px;font-size:24px}.shanhe-map-canvas{width:min(100%,calc((94dvh - 132px) * .7778));margin-top:4px}.shanhe-room{width:calc(14.285% - 4px);padding:2px 1px;border-width:1px}.shanhe-room::before{inset:2px}.shanhe-room b{min-width:18px;min-height:18px;font-size:9px}.shanhe-room small{font-size:5.5px}.shanhe-room i[data-door=east],.shanhe-room i[data-door=west]{width:6px}.shanhe-room i[data-door=east]{right:-6px}.shanhe-room i[data-door=west]{left:-6px}.shanhe-room i[data-door=north],.shanhe-room i[data-door=south]{height:6px}.shanhe-room i[data-door=north]{top:-6px}.shanhe-room i[data-door=south]{bottom:-6px}.shanhe-map footer{display:grid;gap:3px;padding-top:7px;font-size:9px}.shanhe-map footer span{text-align:left}}

/* EP.05 r2：十行房间图、待领取标记与 DNF/暗黑式透明小地图。 */
.shanhe-map-canvas{width:min(100%,490px,calc((94dvh - 150px) * .7));aspect-ratio:7/10;background:radial-gradient(circle at 50% 52%,#f7ecd7d9 0 32%,transparent 72%),repeating-linear-gradient(0deg,transparent 0 calc(10% - 1px),#6f674612 calc(10% - 1px) 10%),repeating-linear-gradient(90deg,transparent 0 calc(14.285% - 1px),#6f674612 calc(14.285% - 1px) 14.285%),linear-gradient(145deg,#e9ddc2,#d9c49b)}
.shanhe-reward-alert{position:absolute;z-index:6;right:-5px;top:-7px;display:grid;place-items:center;width:18px;height:18px;border:1px solid #f2ca71;border-radius:50%;background:#ae3128;color:#fff4cf;font:900 13px/1 sans-serif;box-shadow:0 2px 5px #17282b66}
.shanhe-mini-toggle{position:fixed;z-index:93;right:max(10px,env(safe-area-inset-right));top:78px;display:grid;place-items:center;width:38px;height:38px;min-height:38px;padding:0;border:1px solid #d2ad65;border-radius:50%;background:#203a3dde;color:#f5e6be;box-shadow:2px 3px 0 #14282ba6}.shanhe-mini-toggle[hidden]{display:none}.shanhe-mini-toggle[aria-pressed=true]{background:#a43a2e;color:#fff2ce}.shanhe-mini-toggle i{font-style:normal;font-weight:900}.shanhe-mini-toggle span{display:none}
.shanhe-mini-map{position:fixed;z-index:91;right:max(9px,env(safe-area-inset-right));top:122px;width:min(31vw,178px);padding:7px 8px 9px;border:1px solid #d2ad6590;border-radius:6px;background:#172b2eba;color:#f6e5b9;box-shadow:0 10px 28px #08121770;backdrop-filter:blur(2px);pointer-events:none}.shanhe-mini-map[hidden]{display:none}.shanhe-mini-map header{display:flex;justify-content:space-between;gap:8px;margin-bottom:4px;font-size:9px;letter-spacing:.08em}.shanhe-mini-map header span{opacity:.76}.shanhe-mini-map-canvas{position:relative;width:100%;aspect-ratio:7/10}.shanhe-mini-room{position:absolute;display:grid;place-items:center;width:calc(14.285% - 3px);aspect-ratio:1;border:1px solid #d2bc87;border-radius:2px;background:#243f42d9;color:#f6e7bd;transform:translate(-50%,-50%);box-shadow:0 0 5px #09131680}.shanhe-mini-room b{font:800 clamp(6px,1.6vw,9px)/1 serif}.shanhe-mini-room[data-state=cleared]{background:#6a896cda}.shanhe-mini-room[data-state=available]{border-color:#ffe49b;background:#94612ae8;box-shadow:0 0 8px #f3c65ac9}.shanhe-mini-room[data-current=true]{outline:2px solid #fff2af;outline-offset:1px}.shanhe-mini-room[data-type=boss]{background:#e3bd78;color:#6d2923;border-color:#8e3b2d}.shanhe-mini-room[data-type=hidden]{border-style:dashed;background:#776d7de6}.shanhe-mini-room i[data-door]{position:absolute;display:block;background:#d8c28a;border:0}.shanhe-mini-room i[data-door=east],.shanhe-mini-room i[data-door=west]{top:50%;width:4px;height:25%;transform:translateY(-50%)}.shanhe-mini-room i[data-door=east]{right:-4px}.shanhe-mini-room i[data-door=west]{left:-4px}.shanhe-mini-room i[data-door=north],.shanhe-mini-room i[data-door=south]{left:50%;width:25%;height:4px;transform:translateX(-50%)}.shanhe-mini-room i[data-door=north]{top:-4px}.shanhe-mini-room i[data-door=south]{bottom:-4px}.shanhe-mini-room .shanhe-reward-alert{right:-4px;top:-5px;width:11px;height:11px;font-size:8px}
@media(max-width:620px){.shanhe-map-canvas{width:min(100%,calc((94dvh - 132px) * .7))}.shanhe-mini-map{width:148px;top:119px}.shanhe-mini-toggle{top:76px}}
@media(min-width:900px) and (min-height:650px){
  .adventure-page .skill-bar.red{align-content:start;grid-template-rows:auto;overflow:hidden}
  .adventure-page .skill-bar.red>.open-shanhe-map{position:static;order:-10;display:flex;width:100%;min-height:44px;margin:0 0 2px;padding:5px 9px;border-radius:4px;background:linear-gradient(135deg,#233c3c,#345953);box-shadow:2px 3px 0 #17282b4d}
  .adventure-page .skill-bar.red>.open-shanhe-map i{width:27px;height:27px;flex:0 0 27px}.adventure-page .skill-bar.red>.open-shanhe-map span{font-size:11px}
  .adventure-page .skill-bar.red>.shanhe-mini-map{position:static;order:10;display:block;width:100%;margin-top:3px;padding:7px;background:#172b2ed9;box-shadow:0 5px 12px #08121742;pointer-events:none}
  .adventure-page .skill-bar.red>.shanhe-mini-map[hidden]{display:none}
  .adventure-page .skill-bar.red>.shanhe-mini-map header{font-size:8px}.adventure-page .skill-bar.red>.shanhe-mini-map-canvas{max-height:176px;margin:auto}
  .shanhe-mini-toggle{display:none!important}
}

/* EP.05 r2b：以撒式 9×9 树状楼层。 */
.shanhe-map-canvas{width:min(100%,560px,calc(94dvh - 150px));aspect-ratio:1;background:radial-gradient(circle at 50% 52%,#f7ecd7d9 0 32%,transparent 72%),repeating-linear-gradient(0deg,transparent 0 calc(11.111% - 1px),#6f674612 calc(11.111% - 1px) 11.111%),repeating-linear-gradient(90deg,transparent 0 calc(11.111% - 1px),#6f674612 calc(11.111% - 1px) 11.111%),linear-gradient(145deg,#e9ddc2,#d9c49b)}
.shanhe-room{width:calc(11.111% - 6px)}
.shanhe-mini-map-canvas{aspect-ratio:1}.shanhe-mini-room{width:calc(11.111% - 3px)}
@media(max-width:620px){.shanhe-map-canvas{width:min(100%,calc(94dvh - 132px))}}

/* EP.05 r3：山河图专属图标、残图、逐格行军与清爽奖励面板。 */
.shanhe-map header p{display:flex;align-items:center;flex-wrap:wrap;gap:5px 10px}
.shanhe-fragments{display:inline-flex;align-items:center;gap:2px;padding:2px 7px 2px 3px;border:1px solid #9c75485c;border-radius:14px;background:#fff8e3a6}.shanhe-fragments i,.shanhe-mini-fragment{display:inline-block;width:22px;height:22px;background:url('../assets/map-fragment-v050-r3-v052-r2.webp') center/contain no-repeat;filter:grayscale(1);opacity:.22}.shanhe-fragments i:first-child{clip-path:polygon(0 0,64% 0,54% 100%,0 100%)}.shanhe-fragments i:nth-child(2){margin-left:-12px;clip-path:polygon(46% 0,100% 0,100% 100%,36% 100%)}.shanhe-fragments i[data-earned=true]{filter:none;opacity:1}.shanhe-fragments b{margin-left:2px;color:#704f2f;font-size:10px;white-space:nowrap}.shanhe-mini-fragment{width:13px;height:13px;filter:none;opacity:.9;vertical-align:-3px}
.shanhe-room[data-known=true] b,.shanhe-mini-room[data-known=true] b{border:0;border-radius:0;background-color:transparent!important;background-position:center;background-size:contain;background-repeat:no-repeat;color:transparent!important;text-shadow:none;overflow:visible}
.shanhe-room[data-known=true] b{width:38px;height:38px;min-width:0;min-height:0}.shanhe-mini-room[data-known=true] b{width:92%;height:92%}
.shanhe-room[data-known=false] b,.shanhe-mini-room[data-known=false] b{display:grid;place-content:center;padding:0;line-height:1;text-align:center;text-indent:0}.shanhe-room[data-known=false] b{padding-bottom:2px}
.shanhe-room[data-known=true][data-type=combat] b,.shanhe-mini-room[data-known=true][data-type=combat] b{background-image:url('../assets/map-room-combat-v050-r3.png')}.shanhe-room[data-known=true][data-type=elite] b,.shanhe-mini-room[data-known=true][data-type=elite] b{background-image:url('../assets/map-room-elite-v050-r3.png')}.shanhe-room[data-known=true][data-type=treasure][data-reward=available] b,.shanhe-mini-room[data-known=true][data-type=treasure][data-reward=available] b{background-image:url('../assets/map-room-treasure-v050-r3.png')}.shanhe-room[data-known=true][data-type=treasure][data-reward=claimed] b,.shanhe-mini-room[data-known=true][data-type=treasure][data-reward=claimed] b{background-image:url('../assets/map-room-treasure-open-v050-r3.png')}.shanhe-room[data-known=true][data-type=camp] b,.shanhe-mini-room[data-known=true][data-type=camp] b{background-image:url('../assets/map-room-camp-v050-r3.png')}.shanhe-room[data-known=true][data-type=event] b,.shanhe-mini-room[data-known=true][data-type=event] b{background-image:none;color:#456451;text-shadow:none}.shanhe-room[data-known=true][data-type=boss] b,.shanhe-mini-room[data-known=true][data-type=boss] b{background-image:url('../assets/map-room-boss-v050-r3.png')}.shanhe-room[data-known=true][data-type=hidden] b,.shanhe-mini-room[data-known=true][data-type=hidden] b{background-image:url('../assets/map-room-hidden-v050-r3.png')}.shanhe-room[data-known=true][data-type=start] b,.shanhe-mini-room[data-known=true][data-type=start] b{background-image:url('../assets/map-room-start-v050-r3.png')}
.shanhe-player-flag{position:absolute;z-index:8;right:-13px;bottom:-10px;width:30px;height:30px;background:url('../assets/map-room-current-v050-r3.png') center/contain no-repeat;filter:drop-shadow(0 2px 2px #16282a88);pointer-events:none;animation:shanhe-flag-breathe 1.8s ease-in-out infinite}.shanhe-mini-room .shanhe-player-flag{right:-7px;bottom:-6px;width:17px;height:17px}.shanhe-map-canvas.is-marching .shanhe-room{pointer-events:none}.shanhe-room.is-march-step{z-index:7;animation:shanhe-march-step .18s ease-out both!important}.shanhe-room i[data-door].is-lit{background:#b63b2c;box-shadow:0 0 8px #e4a640,0 0 3px #fff0b2;animation:shanhe-ink-light .32s ease-out both}
@keyframes shanhe-flag-breathe{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-2px) rotate(2deg)}}@keyframes shanhe-march-step{0%{filter:brightness(1)}50%{filter:brightness(1.55) drop-shadow(0 0 10px #bf452e)}100%{filter:brightness(1)}}@keyframes shanhe-ink-light{0%{opacity:.25}100%{opacity:1}}

.recruitment-card,.scroll-reward-card{position:relative;isolation:isolate;background:radial-gradient(circle at 12% 8%,#fffdf2 0 2%,transparent 18%),radial-gradient(circle at 88% 92%,#cda86518 0 5%,transparent 24%),linear-gradient(145deg,#fff8e9 0%,#f4e7cf 56%,#ecd8b6 100%)}
.recruitment-card::before,.scroll-reward-card::before{content:'';position:absolute;z-index:-1;inset:8px;border:1px solid #b28b5145;pointer-events:none}.recruitment-card h2,.recruitment-card p,.recruitment-card strong,.scroll-reward-card h2,.scroll-reward-card>p{position:relative;z-index:1;text-shadow:0 1px 0 #fffdf0}.scroll-offers article,.camp-section{background:#fffaf0f2;box-shadow:inset 0 0 20px #bd955017,2px 3px 0 #26394322}.scroll-offers article p,.camp-section p{color:#574631}
.recruitment.camp{background:transparent}.camp .recruitment-card{border:0;border-radius:10px 4px 12px;background:radial-gradient(circle at 10% 7%,#fffef5 0 2%,transparent 19%),linear-gradient(145deg,#fff9eb 0%,#f4e6cc 68%,#ead4af 100%);box-shadow:0 16px 48px #111d2466}.camp .recruitment-card::before{display:none}.camp .camp-section{border:1px solid #b697665c;border-radius:5px;padding:10px 11px;background:#fffaf2e8;box-shadow:0 3px 10px #5f482518}.camp .camp-section+ .camp-section{margin-top:9px}
@media(max-width:620px){.shanhe-room[data-known=true] b{width:28px;height:28px}.shanhe-player-flag{right:-9px;bottom:-8px;width:22px;height:22px}.shanhe-fragments b{font-size:9px}.shanhe-map header p{gap:3px 7px}}

/* v0.5.0 r5：三类地图商店共用营地笔触，以中央小篆区分库存职责。 */
.shanhe-room[data-known=true][data-type=troop_shop] b,.shanhe-mini-room[data-known=true][data-type=troop_shop] b,.shanhe-room[data-known=true][data-type=element_shop] b,.shanhe-mini-room[data-known=true][data-type=element_shop] b,.shanhe-room[data-known=true][data-type=mystic_shop] b,.shanhe-mini-room[data-known=true][data-type=mystic_shop] b,.shanhe-room[data-known=true][data-type=scroll_shop] b,.shanhe-mini-room[data-known=true][data-type=scroll_shop] b{position:relative;background-image:url('../assets/map-room-camp-v050-r3.png')}
.shanhe-room[data-known=true][data-type=troop_shop] b::after,.shanhe-mini-room[data-known=true][data-type=troop_shop] b::after,.shanhe-room[data-known=true][data-type=element_shop] b::after,.shanhe-mini-room[data-known=true][data-type=element_shop] b::after,.shanhe-room[data-known=true][data-type=mystic_shop] b::after,.shanhe-mini-room[data-known=true][data-type=mystic_shop] b::after,.shanhe-room[data-known=true][data-type=scroll_shop] b::after,.shanhe-mini-room[data-known=true][data-type=scroll_shop] b::after{position:absolute;inset:0;display:grid;place-items:center;padding-top:1px;color:#f4e2b8;font:900 10px/1 "LXGW WenKai Lite",serif;text-shadow:0 1px 2px #17282b}
.shanhe-room[data-known=true][data-type=troop_shop] b::after,.shanhe-mini-room[data-known=true][data-type=troop_shop] b::after{content:'兵'}.shanhe-room[data-known=true][data-type=element_shop] b::after,.shanhe-mini-room[data-known=true][data-type=element_shop] b::after{content:'契'}.shanhe-room[data-known=true][data-type=mystic_shop] b::after,.shanhe-mini-room[data-known=true][data-type=mystic_shop] b::after{content:'术';color:#f1ca70}.shanhe-room[data-known=true][data-type=scroll_shop] b::after,.shanhe-mini-room[data-known=true][data-type=scroll_shop] b::after{content:'书'}
/* EP.05 r7 — 山河图改用宣纸与水墨行军线，去除房间闪烁。 */
.shanhe-map>article{border:1px solid #806743;border-radius:7px;background:radial-gradient(ellipse at 16% 14%,#c7a36724 0 12%,transparent 34%),radial-gradient(ellipse at 84% 82%,#36534a18 0 10%,transparent 35%),linear-gradient(150deg,#fff8e8,#ead8b7);box-shadow:inset 6px 0 #a43b2e,inset 0 0 0 6px #f8e9c9,0 18px 60px #0c1519a8}
.shanhe-map>article::before{inset:10px;border-color:#ad8a5266;border-radius:3px}
.shanhe-map-canvas{isolation:isolate;overflow:visible;background:radial-gradient(ellipse at 52% 50%,#fff9e8 0 34%,#efe0c3 74%,#dfc9a2 100%);border:0;border-radius:46% 3% 42% 4%/3% 43% 4% 40%;box-shadow:inset 0 0 36px #7e633c1d}
.shanhe-map-canvas::before,.shanhe-map-canvas::after{opacity:.18}
.shanhe-ink-routes{position:absolute;z-index:1;inset:0;width:100%;height:100%;overflow:hidden;pointer-events:none}.shanhe-ink-route{fill:none;stroke:#594b38;stroke-width:.085;stroke-linecap:round;opacity:.54}.shanhe-ink-route.is-cleared{stroke:#315c56;opacity:.72}.shanhe-ink-route.is-travelling{stroke:#9e3329;stroke-width:.14;opacity:1;stroke-dasharray:1;stroke-dashoffset:1;animation:shanhe-ink-march .2s ease-out forwards}.shanhe-ink-route.is-travelled{stroke:#315c56;opacity:.86}
.shanhe-room{border:1px solid #765f40;border-radius:8% 3% 10% 4%;background:linear-gradient(145deg,#fff7df,#e3c99c);box-shadow:inset 0 0 0 2px #fff9e890,1px 2px 0 #25383c42}.shanhe-room::before{inset:3px;border-color:#9c815638;border-radius:inherit}.shanhe-room:not(:disabled){filter:drop-shadow(0 0 5px #bf8e39aa);animation:none;outline:1px solid #c69a4a66;outline-offset:2px}.shanhe-room.is-march-step{animation:none!important;filter:drop-shadow(0 0 8px #a33b2e)}.shanhe-room i[data-door]{display:none}.shanhe-room[data-state=cleared]{background:linear-gradient(145deg,#eff0dc,#b9c9aa)}
@keyframes shanhe-ink-march{to{stroke-dashoffset:0}}
.adventure-page #result[data-winner=black] .victory-emblem{color:#efe2c6;filter:saturate(.7)}
@media(max-width:620px){.shanhe-map>article{box-shadow:inset 4px 0 #a43b2e,inset 0 0 0 4px #f8e9c9,0 14px 38px #0c151999}.shanhe-ink-route{stroke-width:.11}.shanhe-ink-route.is-travelling{stroke-width:.2}}

/* v0.5.3：三路只做克制的墨色区分；已侦察路径可见，但未知房仍保留问号。 */
.shanhe-room[data-route=shortcut]{--route-ink:#9f3b2f}.shanhe-room[data-route=resource]{--route-ink:#9a7433}.shanhe-room[data-route=danger]{--route-ink:#314b48}
.shanhe-room[data-route]:not([data-route=""]){box-shadow:inset 0 0 0 2px #fff9e890,1px 2px 0 #25383c42,0 0 0 2px color-mix(in srgb,var(--route-ink) 42%,transparent)}
.shanhe-room[data-scouted=true][data-known=false]{border-style:dashed;opacity:.82}
.shanhe-room[data-scouted=true][data-known=true]:not([data-state=cleared]){filter:drop-shadow(0 0 8px #d49d3c)}
.room-interaction{position:absolute;z-index:14;inset:0;display:grid;place-items:center;overflow:hidden;background:radial-gradient(circle at 50% 42%,#fff9e7 0 24%,#ead8b7 66%,#c8aa7d 100%);isolation:isolate}.room-interaction[hidden]{display:none}.room-interaction::before,.room-interaction::after{content:'';position:absolute;z-index:-1;inset:5%;border:1px solid #785f3f70;border-radius:48% 3% 46% 4%/4% 44% 3% 40%;transform:rotate(-.6deg)}.room-interaction::after{inset:9%;border-color:#a43b2e42;transform:rotate(.7deg)}.room-interaction>button{display:grid;justify-items:center;gap:5px;width:min(76%,370px);padding:18px 24px 20px;border:0;background:transparent;color:#273b40;box-shadow:none}.room-interaction>button>i{position:absolute;width:min(68%,330px);aspect-ratio:1;border-radius:50%;background:repeating-conic-gradient(from 7deg,#aa81392b 0 3deg,transparent 3deg 24deg);animation:room-ink-wheel 12s linear infinite}.room-interaction img{position:relative;width:min(76%,280px);aspect-ratio:1;object-fit:contain;margin-bottom:-16px;filter:drop-shadow(0 9px 12px #28353238);animation:room-icon-breathe 2.4s ease-in-out infinite}.room-interaction span{margin-top:4px;color:#9b352b;font-size:10px;letter-spacing:.32em}.room-interaction b{font:900 29px/1.2 "LXGW WenKai Lite",serif}.room-interaction small{max-width:280px;color:#6c5b42;font-size:11px;line-height:1.55}.room-interaction em{margin-top:8px;padding:9px 24px;border:1px solid #8d6d3d;border-radius:3px;background:#a53b2d;color:#fff0d4;font-style:normal;font-weight:800;box-shadow:2px 3px 0 #2b4140}.room-interaction>button:hover img,.room-interaction>button:focus-visible img{transform:translateY(-4px) scale(1.04)}.room-interaction.is-opening img{animation:room-icon-open .36s cubic-bezier(.2,.85,.2,1) both}.room-interaction.is-opening em{filter:brightness(1.15)}@keyframes room-icon-breathe{50%{transform:translateY(-5px) scale(1.025)}}@keyframes room-ink-wheel{to{transform:rotate(360deg)}}@keyframes room-icon-open{45%{transform:scale(.88) rotate(-4deg)}100%{transform:scale(1.16);opacity:0}}@media(max-width:620px){.room-interaction>button{width:82%;padding:10px}.room-interaction img{width:min(70%,210px);margin-bottom:-12px}.room-interaction b{font-size:24px}.room-interaction small{font-size:10px}.room-interaction em{padding:8px 20px}}

/* v0.5.1：宣纸舞台不再使用细黑/朱砂框；战斗特效严格留在棋盘内，商店与房间舞台始终完整遮盖。 */
body.room-interaction-active #battle-pieces,body.room-interaction-active #battle-effects,body.room-interaction-active #battle-status{display:none}
.room-interaction::before{inset:-12%;border:0;border-radius:50%;background:radial-gradient(ellipse at 34% 42%,#60746d22 0 18%,transparent 54%);filter:blur(16px);transform:none}
.room-interaction::after{inset:-14%;border:0;border-radius:50%;background:radial-gradient(ellipse at 72% 66%,#a8673422 0 16%,transparent 52%);filter:blur(20px);transform:none}
.shanhe-map-canvas{background:radial-gradient(circle at 47% 48%,#faf1dd 0 28%,#eadbbd 70%,#d7bf91 100%)}
.shanhe-map-canvas::after{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 15% 18%,#3f575315,transparent 24%),radial-gradient(ellipse at 82% 78%,#9b563014,transparent 26%);mix-blend-mode:multiply}
.shanhe-room[data-known=false] b,.shanhe-mini-room[data-known=false] b{font-size:0!important;display:grid!important;place-items:center!important;padding:0!important;transform:none!important}
.shanhe-room[data-known=false] b::after,.shanhe-mini-room[data-known=false] b::after{content:'?';display:block;font:900 15px/1 "LXGW WenKai Lite",serif;transform:translateY(-.03em)}
.shanhe-mini-room[data-known=false] b::after{font-size:9px}
/* 未探索房使用独立手绘路标；保持地图与小地图正方形。 */
.shanhe-room[data-known=false] b,.shanhe-mini-room[data-known=false] b{box-sizing:border-box;min-width:0;min-height:0;padding:0;border:0;border-radius:0;background:transparent url('../assets/map-room-unknown-ink-v063-r4.webp') center/contain no-repeat;color:transparent;aspect-ratio:1;flex:0 0 auto}
.shanhe-room[data-known=false] b{width:42px;height:42px}.shanhe-mini-room[data-known=false] b{width:100%;height:100%}
.shanhe-room[data-known=false] b::after,.shanhe-mini-room[data-known=false] b::after{content:none}
@media(max-width:620px){.shanhe-room[data-known=false] b{width:32px;height:32px}}
.shanhe-mini-map{overflow:hidden;pointer-events:auto;width:min(36vw,205px)}
.shanhe-mini-map-canvas{touch-action:none;cursor:grab;transform:translate(var(--mini-pan-x,0),var(--mini-pan-y,0)) scale(1.2);transform-origin:center;transition:transform .16s ease-out}
.shanhe-mini-map-canvas.is-panning{cursor:grabbing;transition:none}
@media(max-width:620px){.shanhe-mini-map{width:176px}.shanhe-mini-map-canvas{transform:translate(var(--mini-pan-x,0),var(--mini-pan-y,0)) scale(1.16)}}
@media(min-width:900px) and (min-height:650px){.adventure-page .skill-bar.red>.shanhe-mini-map{pointer-events:auto}.adventure-page .skill-bar.red>.shanhe-mini-map-canvas{max-height:214px}}
/* 手机端地图入口拥有独立工具栏，不覆盖标题、回合信息、棋盘、背包或技能。 */
.mobile-map-dock{display:none}
@media(max-width:620px){
  .mobile-map-dock{display:flex;align-items:center;justify-content:flex-end;gap:7px;min-height:40px;padding:4px max(9px,env(safe-area-inset-right)) 4px max(9px,env(safe-area-inset-left));border-bottom:1px solid #9a7d5255;background:linear-gradient(90deg,transparent,#f6ead7aa 38%,#f6ead7dd)}
  .mobile-map-dock .open-shanhe-map,.mobile-map-dock .shanhe-mini-toggle{position:static;inset:auto;display:flex;align-items:center;gap:5px;width:auto;height:32px;min-height:32px;padding:3px 8px 3px 4px;border:1px solid #b18a4c;border-radius:18px;background:linear-gradient(135deg,#233c3c,#345953);color:#f6e7bd;box-shadow:1px 2px 0 #17282b59}
  .mobile-map-dock .open-shanhe-map[hidden],.mobile-map-dock .shanhe-mini-toggle[hidden]{display:none}
  .mobile-map-dock .open-shanhe-map i,.mobile-map-dock .shanhe-mini-toggle i{display:grid;place-items:center;width:23px;height:23px;flex:0 0 23px;border:1px solid #d6b46d;border-radius:50%;background:#f2e2bc;color:#29453f;font:900 12px/1 serif}
  .mobile-map-dock .open-shanhe-map span,.mobile-map-dock .shanhe-mini-toggle span{display:block;font:800 10px/1 "LXGW WenKai Lite",serif;letter-spacing:.06em}
  .mobile-map-dock .shanhe-mini-toggle[aria-pressed=true]{background:#9f382d}
  .shanhe-mini-map{top:154px;bottom:auto;right:max(9px,env(safe-area-inset-right));width:min(48vw,184px)}
}

/* v0.5.2 · 盘渊虬双枢与敌行动 HUD */
.panyuan-hud{position:absolute;z-index:10;left:50%;top:calc(var(--adventure-board-top,250px) + 9px);display:flex;align-items:center;gap:7px;min-height:42px;padding:5px 10px;border:1px solid #a77b3f;border-radius:4px 13px 4px 12px;background:linear-gradient(100deg,#162927ed,#27483fe8 55%,#1b2829e8);color:#f3dfad;box-shadow:0 5px 16px #111d22a8,inset 0 0 0 1px #dab76a33;transform:translateX(-50%);pointer-events:none}.panyuan-hud[hidden]{display:none}.panyuan-hud>span{display:grid;line-height:1.05}.panyuan-hud small{color:#c5a768;font-size:8px;letter-spacing:.15em}.panyuan-hud b{font:900 15px/1.2 "LXGW WenKai Lite","STKaiti",serif;white-space:nowrap}.panyuan-hud>i{display:grid;place-items:center;width:27px;height:27px;border:2px double #d0a950;border-radius:50%;background:radial-gradient(circle,#e9c864 0 12%,#795525 14% 38%,#213d37 40%);color:#fff1bf;font:900 14px/1 serif;box-shadow:0 0 8px #e1ad3f88}.panyuan-hud>i.is-broken{filter:grayscale(1);opacity:.28;box-shadow:none;text-decoration:line-through}.panyuan-hud>em,.panyuan-hud>strong{padding:3px 6px;border-left:1px solid #d6b86f4d;font-size:9px;font-style:normal;white-space:nowrap}.panyuan-hud>strong{color:#d9c491}
.panyuan-hud.is-abyssal{border-color:#81c8cf;background:linear-gradient(100deg,#102e39f2,#345763ec 55%,#173040f2);box-shadow:0 0 22px #56d8e088,0 5px 18px #071c27bc,inset 0 0 0 1px #b2e3e655}.panyuan-hud.is-abyssal::before{content:'异变';display:grid;place-items:center;white-space:nowrap;flex-shrink:0;padding:3px 5px;border:1px solid #e9ba76;border-radius:4px;background:#632824;color:#ffe9ad;font:900 10px/1.2 "STKaiti",serif;letter-spacing:.08em}.panyuan-hud.is-abyssal>i{border-color:#a3e6e7;background:radial-gradient(circle,#c5f4ed 0 12%,#427f82 14% 38%,#163a4d 40%);box-shadow:0 0 9px #79d9e6bb}
@media(max-width:620px){
 .panyuan-hud{position:fixed;top:calc(var(--adventure-board-top,250px) + 6px);display:grid;grid-template-columns:24px 24px minmax(0,1fr);width:max-content;max-width:calc(100vw - 32px);min-height:0;gap:4px 7px;padding:7px 10px;border-radius:10px;box-sizing:border-box;box-shadow:0 3px 10px #10252755,inset 0 0 0 1px #dab76a33}
 .panyuan-hud>span{display:none}
 .panyuan-hud>i{width:24px;height:24px;font-size:12px;box-sizing:border-box}
 .panyuan-hud>em{font-size:11px;padding:2px 0 2px 7px;text-align:right;white-space:nowrap}
 .panyuan-hud>strong{grid-column:1/-1;min-width:0;max-width:100%;border-left:0;border-top:1px solid #d6b86f35;padding:5px 0 0;font-size:11px;line-height:1.45;text-align:center;white-space:normal;overflow-wrap:anywhere}
 .panyuan-hud.is-abyssal{grid-template-columns:auto 24px 24px minmax(0,1fr);box-shadow:0 3px 12px #123e4d66,inset 0 0 0 1px #b2e3e644}
 .panyuan-hud.is-abyssal::before{font-size:11px;padding:4px 6px;letter-spacing:.04em}
}
/* EP.05 山河彩蛋收集与解锁演出 */
.achievement-collection{margin:12px 0 4px;padding-top:0;border:1px solid #a88952;border-radius:8px;background:#f6ead1c7;box-shadow:inset 0 0 0 3px #fff7e8}.achievement-collection summary{display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:9px;padding:10px 11px;cursor:pointer;list-style:none}.achievement-collection summary::-webkit-details-marker{display:none}.achievement-collection summary span{display:grid;gap:2px}.achievement-collection summary b{font-family:"LXGW WenKai Lite","STKaiti",serif;font-size:17px}.achievement-collection summary small{color:#845a37;font-size:11px}.achievement-folder-icon{display:block;width:48px;height:48px;object-fit:contain;filter:drop-shadow(0 2px 2px #26343a55)}.achievement-folder-arrow{font:normal 28px/1 serif;color:#a23227;transition:transform .2s}.achievement-collection[open] .achievement-folder-arrow{transform:rotate(90deg)}.achievement-collection>p{margin:0 12px 9px;color:#755d44;font-size:11px}.achievement-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:0 10px 11px}.achievement-grid article{display:grid;grid-template-columns:38px 1fr;align-items:center;gap:7px;min-height:60px;padding:7px;border:1px solid #b99b68;background:#fff7e7}.achievement-grid article>i{display:grid;place-items:center;width:36px;height:36px;border:2px double #9a743e;border-radius:50%;font:900 20px/1 "LXGW WenKai Lite","STKaiti",serif}.achievement-grid article span{display:grid;gap:2px;min-width:0}.achievement-grid article b{font-size:13px}.achievement-grid article small{font-size:9px;line-height:1.35;color:#72583d}.achievement-grid .is-locked{filter:grayscale(1);opacity:.58}.achievement-grid .is-locked>i{background:#28363a;color:#efe3c8}.achievement-grid .is-unlocked{border-color:#bc7d2a;background:linear-gradient(135deg,#fff6d8,#edc77b52);box-shadow:inset 0 0 11px #d89c3340}
.achievement-toast{position:fixed;left:50%;top:max(18px,env(safe-area-inset-top));z-index:10000;display:flex;align-items:center;gap:13px;width:min(520px,calc(100vw - 28px));padding:11px 18px 11px 12px;overflow:hidden;border:2px solid #b88935;border-radius:4px;background:linear-gradient(90deg,#17262eea,#2d241be8 72%,#17262eea);color:#fff1cc;box-shadow:0 8px 32px #080e12b8,inset 0 0 0 2px #e1bd6350;pointer-events:none;opacity:0;transform:translate(-50%,-26px) scale(.96)}.achievement-toast[hidden]{display:none}.achievement-toast::before,.achievement-toast::after{content:"";position:absolute;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,#f0c866,transparent)}.achievement-toast::before{top:4px}.achievement-toast::after{bottom:4px}.achievement-toast>i{display:grid;place-items:center;flex:0 0 50px;width:50px;height:50px;border:3px double #e2bd62;border-radius:50%;background:#9d3226;color:#fff3d3;font:900 27px/1 "LXGW WenKai Lite","STKaiti",serif;box-shadow:0 0 16px #e6b64c88}.achievement-toast>span{display:grid;gap:1px;min-width:0}.achievement-toast small{color:#d5b66e;font-size:10px;letter-spacing:.18em}.achievement-toast b{font-family:"LXGW WenKai Lite","STKaiti",serif;font-size:24px;letter-spacing:.16em;text-shadow:0 2px 0 #000}.achievement-toast em{color:#eadfca;font-size:11px;font-style:normal}.achievement-toast.is-showing{animation:achievement-reveal 4.2s both}@keyframes achievement-reveal{0%{opacity:0;transform:translate(-50%,-28px) scale(.94)}8%,82%{opacity:1;transform:translate(-50%,0) scale(1)}90%{opacity:1;filter:brightness(1.2)}100%{opacity:0;transform:translate(-50%,-18px) scale(.98)}}
@media(max-width:480px){.achievement-grid{grid-template-columns:1fr}.achievement-toast{top:max(10px,env(safe-area-inset-top));padding:9px 12px 9px 9px}.achievement-toast>i{flex-basis:43px;width:43px;height:43px;font-size:23px}.achievement-toast b{font-size:20px}.achievement-toast em{font-size:10px}}@media all{:where(html[data-game-motion="reduce"]) .achievement-toast.is-showing{animation:achievement-reveal-reduced 1.8s both}@keyframes achievement-reveal-reduced{0%,100%{opacity:0}12%,86%{opacity:1;transform:translate(-50%,0)}}}
/* 武圣彩卷置于通用卡片最终样式之后，保留独立流光底与金翠边。 */
.scroll-offers article[data-hero-scroll=GUAN_YU],.scroll-keepsake[data-hero-scroll=GUAN_YU]{border:2px solid transparent;background:linear-gradient(145deg,#fff8e7ed,#f1e2c2e8) padding-box,linear-gradient(115deg,#3b806e,#d9b452,#8e557f,#49758c,#e4c86d,#3b806e) border-box;background-size:100% 100%,260% 100%;box-shadow:0 0 22px #d7b44b55,inset 0 0 22px #fff7ca99,2px 3px 0 #26394322}
/* v0.5.1 r5 · 点将台与命名武将 */
.hero-selection{width:min(930px,calc(100vw - 24px));max-width:calc(100vw - 24px);height:min(760px,calc(100dvh - 24px));max-height:calc(100dvh - 24px);padding:0;border:0;background:transparent;color:#26363a;overflow:visible}.hero-selection::backdrop{background:radial-gradient(circle at 50% 40%,#29413eb8,#111d22ed);backdrop-filter:blur(7px) saturate(.78)}.hero-selection>article{position:relative;isolation:isolate;display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:100%;overflow:hidden;border:3px solid #263a3d;border-radius:13px 4px 11px;background:linear-gradient(135deg,#fff7e4f4,#ead7b8f2),url('../assets/board.webp') center/1000px auto;box-shadow:9px 10px 0 #8f3228,0 28px 80px #07131799}.hero-selection>article::before{content:"";position:absolute;z-index:-1;inset:9px;border:1px solid #aa8956;pointer-events:none}.hero-selection header{padding:25px 28px 15px;text-align:center}.hero-selection header small{color:#9d3227;font-size:11px;font-weight:800;letter-spacing:.35em}.hero-selection header h2{margin:6px 0 4px;font:900 clamp(28px,5vw,48px)/1.1 "LXGW WenKai Lite","STKaiti",serif;letter-spacing:.08em}.hero-selection header p{margin:0;color:#66543e;font-size:13px}.hero-selection-list{display:grid;gap:15px;min-height:0;padding:8px 26px 18px;overflow-y:auto;scroll-snap-type:y mandatory;overscroll-behavior:contain}.hero-selection-list>button{position:relative;display:grid;grid-template-columns:minmax(150px,31%) minmax(0,1fr) 76px;align-items:stretch;min-height:260px;padding:0;overflow:hidden;border:2px solid #8f7650;border-radius:6px 2px 8px;background:linear-gradient(110deg,#17292bd9 0 31%,#fff8e9ee 31% 100%);color:#26363a;box-shadow:inset 0 0 0 4px #fff7e67a,3px 4px 0 #263a3d2c;text-align:left;scroll-snap-align:center}.hero-selection-list>button.is-selected{border-color:#b7372d;box-shadow:inset 0 0 0 4px #e0b65766,0 0 0 3px #b7372d38,4px 5px 0 #263a3d42;transform:translateY(-1px)}.hero-card-art{position:relative;display:block;overflow:hidden;background:radial-gradient(circle at 50% 40%,#446054,#152426 70%)}.hero-card-art img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 8px 7px #07121499)}.hero-card-copy{display:grid;align-content:center;gap:7px;padding:24px}.hero-card-copy>small{color:#9d3329;font-size:11px;letter-spacing:.25em}.hero-card-copy>b{font:900 31px/1 "LXGW WenKai Lite","STKaiti",serif}.hero-card-copy>p{margin:0;color:#5c4d3b;font-size:13px;line-height:1.65}.hero-card-copy>em{display:flex;flex-wrap:wrap;gap:6px;font-style:normal}.hero-card-copy>em i{padding:3px 8px;border:1px solid #8f7650;border-radius:11px;background:#f5e3c6;font-size:10px;font-style:normal}.hero-card-copy>strong{color:#315c4b;font-size:11px}.hero-card-glyph{display:grid;place-items:center;border-left:1px solid #aa895655;background:linear-gradient(#efe0c5aa,#d8bd8c55);color:#9b3329;font:900 50px/1 "LXGW WenKai Lite","STKaiti",serif;text-shadow:0 2px #fff4df}.hero-selection footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 27px 23px;border-top:1px solid #aa895666}.hero-selection footer span{color:#715c43;font-size:12px}.hero-selection footer button{min-width:220px;min-height:48px;background:#9f3329;color:#fff2d7}.hero-selection footer button:disabled{filter:grayscale(1);opacity:.56}.hero-life-glyph{position:absolute;inset:0;display:grid;place-items:center;color:#fff0d2;font:900 21px/1 "LXGW WenKai Lite","STKaiti",serif;text-shadow:-1px 0 #7e1f19,1px 0 #7e1f19,0 -1px #7e1f19,0 1px #7e1f19;transform:translateY(-1px)}
@media(max-width:620px){.hero-selection{height:calc(100dvh - 14px);max-width:calc(100vw - 12px)}.hero-selection header{padding:20px 16px 10px}.hero-selection header h2{font-size:27px}.hero-selection header p{font-size:11px}.hero-selection-list{padding:7px 12px 13px}.hero-selection-list>button{grid-template-columns:43% minmax(0,1fr) 44px;min-height:250px}.hero-card-copy{gap:6px;padding:16px 12px}.hero-card-copy>b{font-size:25px}.hero-card-copy>p{font-size:11px;line-height:1.5}.hero-card-copy>strong{font-size:9px}.hero-card-glyph{font-size:34px}.hero-selection footer{display:grid;grid-template-columns:1fr;padding:11px 14px 16px}.hero-selection footer span{text-align:center}.hero-selection footer button{width:100%;min-width:0}.hero-life-glyph{font-size:19px}}
.hero-selection>article>header{display:block}.hero-selection>article>footer{display:flex}
@media(max-width:620px){.hero-selection>article>footer{display:grid}}

/* v0.5.2 r3：手机 HUD 与点将台收束；被动技能统一使用“被”角标。 */
.skill-button[data-passive=true]::after{content:'被';display:grid!important;background:#315d57;color:#fff1cf;border-color:#d8b566}.skill-button[data-passive=true]{cursor:help}
@media(min-width:900px) and (min-height:650px){.adventure-page .skill-bar.red{overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#9b7447 #ead9ba}.adventure-page .skill-bar.red::-webkit-scrollbar{width:5px}.adventure-page .skill-bar.red::-webkit-scrollbar-thumb{background:#9b7447;border-radius:4px}}
@media(max-width:620px){
  .mobile-map-dock{top:calc(var(--adventure-board-top,250px) - 18px)}
  .adventure-page .hero-life-glyph{font-size:23px;transform:translateY(-1px)}
  .adventure-page .life.black>div{transform:translateX(-9px)}
  .hero-selection header{padding:10px 14px 5px}.hero-selection header h2{margin:3px 0 2px;font-size:24px}.hero-selection header p{font-size:10px;line-height:1.35}
  .hero-selection-list{padding:4px 10px 8px}.hero-selection-list>button{min-height:218px}.hero-card-art img{inset:-7% 0 0;transform:scale(1.1);transform-origin:center bottom}.hero-selection footer{padding:7px 12px 10px;gap:5px}.hero-selection footer button{min-height:42px}
}

/* v0.5.1 r7：地图工具改为不参与棋盘排版的悬浮层；手机技能条保留可见滚动轨。 */
@media(max-width:620px){
  .mobile-map-dock{position:fixed;z-index:121;right:max(8px,env(safe-area-inset-right));top:calc(var(--adventure-board-top,250px) - 37px);display:flex;align-items:center;justify-content:flex-end;gap:6px;width:auto;min-height:0;height:33px;padding:0;border:0;background:transparent;pointer-events:none}
  .mobile-map-dock .open-shanhe-map,.mobile-map-dock .shanhe-mini-toggle{position:static;display:flex;align-items:center;justify-content:center;height:31px;min-height:31px;margin:0;border:1px solid #b8965f88;color:#f6e7bd;box-shadow:0 2px 5px #15272c35;backdrop-filter:blur(4px);pointer-events:auto}
  .mobile-map-dock .open-shanhe-map{gap:5px;width:auto;padding:3px 9px 3px 4px;border-radius:17px;background:linear-gradient(135deg,#203b38d9,#315b52c7)}
  .mobile-map-dock .shanhe-mini-toggle{width:31px;padding:0;border:0;border-radius:50%;background:transparent;box-shadow:none;backdrop-filter:none}
  .mobile-map-dock .open-shanhe-map i,.mobile-map-dock .shanhe-mini-toggle i{display:grid;place-items:center;width:23px;height:23px;flex:0 0 23px;border:1px solid #d6b46d99;border-radius:50%;background:#f2e2bcd9;color:#29453f;font:900 12px/1 serif}.mobile-map-dock .shanhe-mini-toggle i{background:#203c3ba8;color:#f6e7bd;box-shadow:0 2px 5px #15272c42}
  .mobile-map-dock .open-shanhe-map span{display:block;font:800 10px/1 "LXGW WenKai Lite",serif;letter-spacing:.06em}.mobile-map-dock .shanhe-mini-toggle span{display:none}
  .mobile-map-dock .shanhe-mini-toggle[aria-pressed=true]{background:#315d52b8}
  .adventure-page .skill-bar.red{padding-bottom:5px;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:#a53a2c #cfb27a66;background-image:linear-gradient(90deg,#b9985d55,#b9985d55);background-repeat:no-repeat;background-position:7px calc(100% - 1px);background-size:calc(100% - 14px) 2px}
  .adventure-page .skill-bar.red::-webkit-scrollbar{display:block;height:4px}.adventure-page .skill-bar.red::-webkit-scrollbar-track{background:#cfb27a66;border-radius:2px}.adventure-page .skill-bar.red::-webkit-scrollbar-thumb{background:#a53a2c;border-radius:2px}
  .adventure-page .life-general{width:38px;height:38px;flex:0 0 38px}.adventure-page .hero-life-glyph,.adventure-page .adventure-enemy-general b{font-size:19px;transform:translateY(-1px)}
  .adventure-page .adventure-enemy-general .life-general-base{inset:0;width:100%;height:100%}
  .adventure-page .life.black{margin-left:auto;justify-self:end}.adventure-page .life.black>div{width:100%;justify-items:end}.adventure-page .life.black .life-meter{width:76px;min-width:76px;justify-content:flex-end}
}
/* v0.5.2 r3 final mobile HUD override */
@media(max-width:620px){.mobile-map-dock{top:calc(var(--adventure-board-top,250px) - 18px)}.adventure-page .hero-life-glyph{font-size:25px;transform:translateY(-1px)}.adventure-page .life.black>div{transform:translateX(-9px)}}

/* v0.5.3 r3：技能分组、地图连线和武将头像统一。 */
.achievement-toast{z-index:10000}
.skill-divider{display:block;align-self:stretch;height:1px;margin:2px 0;border:0;background:linear-gradient(90deg,transparent,#8f7650 14% 86%,transparent);opacity:.72;pointer-events:none}
.shanhe-mini-room i[data-door]{display:none!important}
.shanhe-mini-room[data-current=true]{outline-color:#d9aa52;box-shadow:0 0 0 1px #263d3d,0 0 8px #d8aa5299}
.adventure-page .hero-life-glyph{font-size:28px!important;line-height:1;transform:translateY(-1px);text-shadow:-1.5px 0 #153d35,1.5px 0 #153d35,0 -1.5px #153d35,0 1.5px #153d35,0 2px 2px #152a25}
.cancel-shot.direct-action{pointer-events:auto;cursor:pointer;opacity:1;transform:scale(1)}
@media(max-width:899px),(max-height:649px){
  .skill-divider{flex:0 0 1px;width:1px;height:42px;margin:4px 7px;background:linear-gradient(transparent,#8f7650 15% 85%,transparent)}
}

/* v0.5.3 r4：山河空间背景、顶层成就与无边框房间底图。 */
.asset-loader{background:linear-gradient(180deg,#f4ead9b8,#ded0b7d8),url('../assets/loading-backdrop-v053-r4.webp') center/cover no-repeat}
.loader-card{border:1px solid #735f415c;border-radius:8px;background:#fff8e9d9;box-shadow:0 18px 58px #24302d42,inset 0 0 0 1px #fff9df;backdrop-filter:blur(5px)}
.loader-alt{display:block;width:100%;min-height:44px;margin-top:8px;padding:8px 12px;border:1px solid #9b876454;border-radius:6px;background:#f8ecd785;color:#516762;font-size:14px}
.loader-alt[hidden]{display:none}
.shanhe-map>article{background:linear-gradient(180deg,#fff9e4e8,#efe0c5e6),url('../assets/shanhe-map-backdrop-v053-r4.webp') center/cover no-repeat}
.shanhe-map-canvas{background:linear-gradient(180deg,#fff9e0a8,#ead8b69c),url('../assets/shanhe-map-backdrop-v053-r4.webp') center/cover no-repeat;box-shadow:inset 0 0 48px #60492826,0 12px 28px #3e332229}
.recruitment-card,.camp .recruitment-card{background:linear-gradient(145deg,#fff9e9d9,#eed9b9d9),url('../assets/camp-backdrop-v053-r4.webp') center/cover no-repeat}
.room-interaction{background:linear-gradient(180deg,#fff9e2b8,#dcc59dad),url('../assets/shanhe-map-backdrop-v053-r4.webp') center/cover no-repeat}
.room-interaction[data-type="CAMP"],.room-interaction[data-type*="SHOP"]{background:linear-gradient(180deg,#fff7dfb5,#d8b98fb8),url('../assets/camp-backdrop-v053-r4.webp') center/cover no-repeat}
.achievement-toast[popover]{inset:max(18px,env(safe-area-inset-top)) auto auto 50%;margin:0;border:2px solid #b88935}.achievement-toast::backdrop{background:transparent;pointer-events:none}
@media(max-width:480px){.achievement-toast[popover]{inset:max(10px,env(safe-area-inset-top)) auto auto 50%}}

/* v0.5.4 · 随机军令、点将台收束与武将头像比例 */
.adventure-page .hero-life-glyph{font-size:20px!important;text-shadow:-1px 0 #153d35,1px 0 #153d35,0 -1px #153d35,0 1px #153d35,0 1px 2px #152a25}
.combat-objective-hud{position:absolute;z-index:11;left:50%;top:calc(var(--adventure-board-top,250px) + 8px);display:flex;align-items:center;gap:8px;min-height:46px;padding:5px 12px 5px 6px;border:1px solid #b88c48;border-radius:24px 5px 17px 24px;background:linear-gradient(105deg,#fff4dbea,#ead6b7e8);color:#263b3b;box-shadow:0 6px 18px #24302d52,inset 0 0 0 1px #fff8df;transform:translateX(-50%);pointer-events:none}.combat-objective-hud[hidden]{display:none}.combat-objective-hud img{width:38px;height:38px;object-fit:contain;filter:drop-shadow(0 2px 3px #1f2d2c55)}.combat-objective-hud span{display:grid;gap:1px;line-height:1.05}.combat-objective-hud small{color:#9c392d;font-size:8px;letter-spacing:.18em}.combat-objective-hud b{font:900 14px/1.15 "LXGW WenKai Lite","STKaiti",serif;white-space:nowrap}.combat-objective-hud em{color:#6d583e;font-size:9px;font-style:normal;white-space:nowrap}
.hero-selection{height:min(620px,calc(100dvh - 24px))}.hero-selection>article{background:linear-gradient(145deg,#fff9e9e8,#ead8bce8),url('../assets/loading-backdrop-v053-r4.webp') center/cover no-repeat}.hero-selection header{padding:14px 24px 8px}.hero-selection header h2{margin:3px 0 2px;font-size:clamp(25px,4vw,38px)}.hero-selection-list{padding:5px 22px 10px}.hero-selection-list>button{min-height:225px;background:#f5ead5e8;grid-template-columns:minmax(145px,29%) minmax(0,1fr) 62px}.hero-card-art{background:radial-gradient(circle at 52% 42%,#49645a7d,#eee1c9 72%),url('../assets/loading-backdrop-v053-r4.webp') center/cover no-repeat}.hero-card-copy{gap:5px;padding:16px 20px}.hero-card-glyph{font-size:42px}.hero-selection footer{padding:9px 22px 13px}
@media(max-width:620px){.adventure-page .hero-life-glyph{font-size:18px!important}.combat-objective-hud{position:fixed;top:calc(var(--adventure-board-top,250px) + 4px);max-width:calc(100vw - 22px);min-height:39px;padding:3px 8px 3px 4px}.combat-objective-hud img{width:32px;height:32px}.combat-objective-hud b{font-size:12px}.combat-objective-hud em{max-width:190px;overflow:hidden;text-overflow:ellipsis}.hero-selection{height:min(560px,calc(100dvh - 12px))}.hero-selection header{padding:8px 12px 4px}.hero-selection header h2{font-size:22px}.hero-selection-list{padding:3px 8px 6px}.hero-selection-list>button{grid-template-columns:40% minmax(0,1fr) 38px;min-height:192px}.hero-card-art img{inset:0;transform:scale(1.04)}.hero-card-copy{padding:11px 9px}.hero-card-copy>b{font-size:22px}.hero-card-copy>p{font-size:10px;line-height:1.42}.hero-card-glyph{font-size:29px}.hero-selection footer{padding:5px 10px 8px}.hero-selection footer button{min-height:38px}}

/* v0.5.5：张飞御驾亲征六帧与点将台主题。 */
.portrait-frame[hidden]{display:none!important}

.hero-selection-list>button[data-hero-id="ZHANG_FEI"] .hero-card-copy>strong{color:#762d25}

/* v0.5.5 r2：专属将帅棋面、六帧张飞亲征节奏与技能图标可见度。 */
.life-general[data-hero-token] .life-general-base{inset:-6%;width:112%;height:112%;object-fit:contain}.life-general[data-hero-token] .hero-life-glyph{display:grid!important;z-index:2}
.inventory-pieces button[data-hero-token] i{position:relative}.inventory-pieces button[data-hero-token] i b{display:grid;position:relative;z-index:2;place-items:center;width:100%;height:100%;font-size:1em}.inventory-pieces button[data-hero-token] i img{z-index:1;inset:-4%;width:108%;height:108%}
.skill-button.hero-skill[data-passive=true][data-dim=true] .skill-picture img{filter:saturate(.86) contrast(1.08);opacity:.92}
.skill-bar .skill-button[hidden]{display:none!important}
.faceoff-cinematic[data-hero="ZHANG_FEI"].playing .portrait-frame.frame-1{animation:zhang-faceoff-frame-1 2.35s steps(1,end) both}.faceoff-cinematic[data-hero="ZHANG_FEI"].playing .portrait-frame.frame-2{animation:zhang-faceoff-frame-2 2.35s steps(1,end) both}.faceoff-cinematic[data-hero="ZHANG_FEI"].playing .portrait-frame.frame-3{animation:zhang-faceoff-frame-3 2.35s steps(1,end) both}.faceoff-cinematic[data-hero="ZHANG_FEI"].playing .portrait-frame.frame-4{animation:zhang-faceoff-frame-4 2.35s steps(1,end) both}.faceoff-cinematic[data-hero="ZHANG_FEI"].playing .portrait-frame.frame-5{animation:zhang-faceoff-frame-5 2.35s steps(1,end) both}.faceoff-cinematic[data-hero="ZHANG_FEI"].playing .portrait-frame.frame-6{animation:zhang-faceoff-frame-6 2.35s steps(1,end) both}
@keyframes zhang-faceoff-frame-1{0%,24.9%{opacity:1}25%,100%{opacity:0}}@keyframes zhang-faceoff-frame-2{0%,24.9%{opacity:0}25%,39.9%{opacity:1}40%,100%{opacity:0}}@keyframes zhang-faceoff-frame-3{0%,39.9%{opacity:0}40%,54.9%{opacity:1}55%,100%{opacity:0}}@keyframes zhang-faceoff-frame-4{0%,54.9%{opacity:0}55%,69.9%{opacity:1}70%,100%{opacity:0}}@keyframes zhang-faceoff-frame-5{0%,69.9%{opacity:0}70%,84.9%{opacity:1}85%,100%{opacity:0}}@keyframes zhang-faceoff-frame-6{0%,84.9%{opacity:0}85%,100%{opacity:1}}

/* v0.5.5 r4：武将视觉规范。左上头像使用立绘裁切；棋盘与背包使用专属圆形棋面并叠加居中文字。 */
.life-general[data-hero-token]{overflow:hidden;border-radius:50%;background:#173d35}.life-general[data-hero-token] .life-general-base{object-fit:cover;object-position:center 27%;border-radius:50%}.inventory-pieces button[data-hero-token] i b{color:#fff0d2;text-shadow:-1px 0 #5d201b,1px 0 #5d201b,0 -1px #5d201b,0 1px #5d201b}

/* v0.5.5 r6：点将台统一底图、棋面贴在名字前，并避免滚轮触发吸附闪烁。 */
.hero-selection-list{scroll-snap-type:none;overflow-anchor:none;contain:layout paint}
.hero-selection>article{contain:paint}
.hero-card-name{display:flex;align-items:center;gap:8px;min-width:0}
.hero-card-name>img{width:38px;height:38px;flex:0 0 38px;object-fit:contain;filter:drop-shadow(0 2px 2px #1b2c2b42)}
.hero-card-name>b{display:block;min-width:0}
@media(max-width:620px){.hero-card-name{gap:5px}.hero-card-name>img{width:30px;height:30px;flex-basis:30px}.hero-card-name>b{font-size:21px}}

/* v0.5.5 r6：手机技能图直接铺满原画，去掉缩进去的手绘圆框。 */
@media(max-width:899px),(max-height:649px){
  .adventure-page .skill-bar.red .skill-picture{width:48px;height:48px;flex-basis:48px}
  .adventure-page .skill-bar.red .skill-picture i{display:none!important;background:none!important;-webkit-mask:none!important;mask:none!important}
  .adventure-page .skill-bar.red .skill-picture::before,.adventure-page .skill-bar.red .skill-picture::after{display:none!important}
  .adventure-page .skill-bar.red .skill-picture img{inset:0!important;width:100%!important;height:100%!important;object-fit:contain!important}
  .adventure-page .skill-bar.red .skill-button{flex-basis:62px;width:62px;min-width:62px;height:52px;min-height:52px;padding:0 4px}
}


/* v0.5.6：武将 HUD 与状态贴图收口。 */
.life-general[data-hero-token] .life-general-base{object-fit:contain!important;object-position:center!important;inset:-4%!important;width:108%!important;height:108%!important}
.life-general[data-hero-token]{cursor:zoom-in}
.hero-portrait-preview{width:min(520px,calc(100vw - 28px));max-width:calc(100vw - 28px);padding:0;border:0;background:transparent;overflow:visible}
.hero-portrait-preview::backdrop{background:#102227c9;backdrop-filter:blur(5px)}
.hero-portrait-preview article{position:relative;display:grid;place-items:center;padding:12px;border:3px solid #263b3d;border-radius:10px 4px 12px 5px;background:linear-gradient(145deg,#fff5df,#e6d1ab);box-shadow:8px 9px 0 #8e3028}
.hero-portrait-preview img{display:block;width:min(78vw,460px);max-height:78vh;object-fit:contain;filter:drop-shadow(0 8px 8px #172b2b66)}
.hero-portrait-preview span{display:block;margin:8px 0 2px;color:#263b3d;font:900 21px/1.2 "LXGW WenKai Lite","STKaiti",serif;letter-spacing:.12em}
.hero-portrait-preview>article>button{position:absolute;z-index:2;right:8px;top:7px;width:40px;height:40px;min-height:40px;padding:0;border:1px solid #8b6c40;border-radius:50%;background:#fff1d8;color:#6f2d27;font-size:25px;line-height:1;box-shadow:2px 3px 0 #263b3d38}

/* v0.5.6 r4: six independent complete cut-in frames share one contain box. */
.faceoff-cinematic[data-hero="ZHANG_FEI"] .portrait-frame.black{inset:auto;width:min(88cqw,470px);height:100%;max-width:88cqw;object-fit:contain;object-position:center;transform:none}
.faceoff-cinematic[data-hero="ZHANG_FEI"] .faceoff-portraits{inset:-16% 0 -10%}

/* v0.5.7 r1：首次加载提示与分步新手教学 */
.loader-first-note{display:block;margin:2px auto 10px;max-width:270px;color:#765b42;font-size:11px;line-height:1.45}
.defeat-killer img[hidden]{display:none!important}
.tutorial-setting i{min-width:30px;color:#8d392b;font-style:normal;font-weight:800;text-align:center}
/* v0.5.7 r2：手机技能槽常驻显示充能/CD，就绪时给出清晰的可用提醒。 */
@media(max-width:899px),(max-height:649px){
  .play-page .skill-button:not([data-passive="true"])::after{
    content:attr(data-mobile-status)!important;display:grid!important;place-items:center;position:absolute!important;z-index:9!important;
    top:-5px!important;right:-5px!important;left:auto!important;bottom:auto!important;width:auto!important;min-width:25px!important;height:17px!important;
    padding:0 5px!important;border:1px solid #f0d79c!important;border-radius:9px!important;background:#5d4938!important;color:#fff8df!important;
    font:900 9px/1 system-ui,sans-serif!important;letter-spacing:0!important;box-shadow:0 2px 5px #1b17125c!important;transform:none!important;opacity:1!important;
  }
  .play-page .skill-button[data-mobile-status=""]::after{display:none!important}
  .play-page .skill-button[data-cooling="true"]::after{border-color:#9cb3bd!important;background:#33474f!important;color:#eef8f6!important}
  .play-page .skill-button[data-castable="true"]{animation:skill-ready-r2 1.05s ease-in-out infinite!important;filter:none!important}
  .play-page .skill-button[data-castable="true"]::after{min-width:29px!important;border-color:#fff0a8!important;background:#a73527!important;color:#fff8cf!important;box-shadow:0 0 0 2px #7c241f,0 0 12px #ffc85fcc!important}
  .play-page .skill-button[data-castable="true"] .skill-picture::after{opacity:.9!important;animation:skill-ready-vfx-r2 1.05s ease-in-out infinite!important}
}
@keyframes skill-ready-r2{50%{transform:translateY(-2px);box-shadow:0 0 0 3px #f4ce68,0 0 18px #e9a735b5}}
@keyframes skill-ready-vfx-r2{50%{opacity:.42;transform:scale(1.12)}}
@media all{:where(html[data-game-motion="reduce"]) .play-page .skill-button[data-castable="true"],:where(html[data-game-motion="reduce"]) .play-page .skill-button[data-castable="true"] .skill-picture::after{animation:none!important}}

/* v0.5.7 r6: understated paper scenery for troop selection and camp. */
.recruitment-card,.camp .recruitment-card{background:linear-gradient(180deg,#fff9edb9,#f7ead8c9 42%,#f4e5cfe6),url('../assets/recruitment-panel-v045-r6.jpg') center top/100% auto no-repeat,#f5e7cf;box-shadow:5px 6px 0 #6d554766}
.camp .recruitment-card{border:2px solid #334744;border-radius:2px;box-shadow:4px 5px 0 #6d554766}
.camp .camp-section{background:#fffaf0db;box-shadow:none}

/* v0.5.7 r7：背包折叠栏回到水墨纸签的层次。 */
.adventure-page .pack-panel .pack-folder{--folder-ink:#924c37;margin-top:5px;border:1px solid #b6a17d;border-radius:3px;background:#fff9edc9;box-shadow:none}
.adventure-page .pack-panel .guigu-folder{--folder-ink:#376a60}.adventure-page .pack-panel .scroll-folder{--folder-ink:#9b7937}.adventure-page .pack-panel .tempering-folder{--folder-ink:#9a5a39}
.adventure-page .pack-panel .pack-folder>summary{grid-template-columns:34px minmax(0,1fr) auto;gap:8px;min-height:48px;padding:6px 29px 6px 9px;border-left:3px solid var(--folder-ink);background:linear-gradient(100deg,#f0e1c8ed,#fff9edee 55%,#f7e8d2ed);color:#294148}
.adventure-page .pack-panel .pack-folder>summary>span{width:30px;height:30px;border:1px solid var(--folder-ink);border-radius:3px;background:#f4ead4;color:var(--folder-ink);box-shadow:none;font-size:15px}
.adventure-page .pack-panel .pack-folder>summary>b{font:800 14px/1.25 "LXGW WenKai Lite","STKaiti",serif;letter-spacing:.06em}
.adventure-page .pack-panel .pack-folder>summary>small{padding-left:8px;border-left:1px solid #bca68488;color:#745e42;font-size:10px;white-space:nowrap}
.adventure-page .pack-panel .pack-folder>summary::after{content:"⌄";right:8px;color:var(--folder-ink);font-size:19px;line-height:1;transform:translateY(-56%);transition:transform .17s}
.adventure-page .pack-panel .pack-folder[open]>summary{border-bottom:1px solid #b6a17d;background:linear-gradient(100deg,#e9d8ba,#fff6e4 62%,#f2dfbf)}
.adventure-page .pack-panel .pack-folder[open]>summary::after{transform:translateY(-45%) rotate(180deg)}
.adventure-page .pack-panel .pack-folder>summary:focus-visible{outline:2px solid var(--folder-ink);outline-offset:2px}
.adventure-page .pack-panel .pack-folder>.inventory-pieces,.adventure-page .pack-panel .pack-folder>.technique-inventory,.adventure-page .pack-panel .pack-folder>.scroll-inventory,.adventure-page .pack-panel .pack-folder>.tempering-inventory{background:#fffaf2a8}
@media(max-width:899px),(max-height:649px){
  .adventure-page .pack-toggle{border-top:1px solid #a98b5f;border-right:1px solid #b3966860;background:linear-gradient(155deg,#f3e4ca,#fff5e4 48%,#ead8b8);box-shadow:inset 0 0 0 2px #fff9edaa}
  .adventure-page .pack-toggle>img{filter:drop-shadow(0 1px 1px #43332273)}
  .adventure-page .pack-panel,.adventure-page .adventure-inventory.open .pack-panel{border-color:#aa8759;border-radius:10px 10px 3px 3px;background:linear-gradient(165deg,#fff7e8,#f4e5cb);box-shadow:0 -7px 24px #2f2a2540,inset 0 0 0 2px #fffaf0}
  #closeMobilePack{border-bottom:1px solid #ac8c5f;background:linear-gradient(90deg,#fff7e8,#f1ddbd);color:#78513a;font-family:"LXGW WenKai Lite","STKaiti",serif;font-weight:800}
}

/* v0.5.8 r3：军令开局展开，随后收在棋盘左上角；背包操作集中于顶部。 */
.combat-objective-hud{position:fixed;z-index:125;left:max(8px,calc(var(--adventure-board-left,8px) + 6px));top:max(8px,calc(var(--adventure-board-top,250px) - 51px));width:auto;max-width:min(315px,calc(100vw - 20px));min-height:44px;padding:4px 10px 4px 5px;transform:none;cursor:pointer;pointer-events:auto;text-align:left;transition:width .2s,padding .2s,opacity .25s,box-shadow .25s}
.combat-objective-hud i{margin-left:auto;color:#8d5937;font:900 16px/1 serif;font-style:normal;transform:rotate(180deg)}
.combat-objective-hud.is-collapsed{width:44px;min-width:44px;height:44px;min-height:44px;padding:3px;border-radius:50%;background:#f3e3c4ee;box-shadow:0 2px 7px #24302d57,inset 0 0 0 2px #fff8df}
.combat-objective-hud.is-collapsed img{width:36px;height:36px;flex:0 0 36px}
.combat-objective-hud.is-collapsed span,.combat-objective-hud.is-collapsed i{display:none}
.combat-objective-hud:focus-visible{outline:3px solid #1e5f58;outline-offset:2px}
@media(min-width:900px) and (min-height:650px){
  .adventure-page .adventure-inventory .pack-context-actions{position:sticky;z-index:10;top:-14px;display:grid;gap:6px;margin:-14px -12px 10px;padding:9px 12px;border-bottom:1px solid #b89a6c;background:linear-gradient(180deg,#fbf0dbf5,#f2e2c9f5);box-shadow:0 3px 8px #49362520}
  .adventure-page .pack-context-actions button{width:100%;min-height:42px;margin:0;font:800 13px/1.2 "LXGW WenKai Lite","STKaiti",serif}
  .adventure-page .pack-context-actions button[hidden],.adventure-page:not(.deploying) .pack-context-actions #confirmDeployment{display:none!important}
}
@media(max-width:899px),(max-height:649px){
  .adventure-page .pack-context-actions{display:contents}
  .adventure-page .pack-context-actions #openCampShop:not([hidden]),.adventure-page .pack-context-actions #reviewPendingScroll:not([hidden]),.adventure-page .pack-context-actions #reviewTechniqueReward:not([hidden]),.adventure-page .pack-context-actions #reviewTemperingReward:not([hidden]){position:fixed;z-index:139;left:50%;bottom:calc(74px + env(safe-area-inset-bottom));width:min(280px,85vw);min-height:44px;transform:translateX(-50%)}
  .adventure-page .combat-objective-hud{position:fixed;top:calc(var(--adventure-board-top,126px) + 3px);left:max(6px,calc(var(--adventure-board-left,6px) + 4px));max-width:min(300px,calc(100vw - 20px));min-height:44px;padding:4px 9px 4px 4px;pointer-events:auto;transform:none}
  .adventure-page .combat-objective-hud.is-collapsed{width:44px;min-width:44px;height:44px;min-height:44px;padding:3px}
  .adventure-page .combat-objective-hud.is-collapsed img{width:34px;height:34px;flex-basis:34px}
}
/* 结果盖章取代“已清”：房间图标保持足够亮度，读图时可直接辨胜败。 */
.shanhe-map-stage .shanhe-room[data-known=true] b{width:47px;height:47px;filter:drop-shadow(0 2px 1px #30291d67)}
.shanhe-map-stage .shanhe-room small{font-size:11px;font-weight:900;color:#33291e;text-shadow:0 1px #fff9e9,0 0 3px #fff9e9}
.shanhe-map-stage .shanhe-room:disabled[data-known=true]{opacity:.96}
.shanhe-map-stage .shanhe-room[data-outcome=loss]{border-color:#9f3b30;background:linear-gradient(145deg,#f8e7d6,#d6a58f)}
.shanhe-map-stage .shanhe-room[data-outcome=win]{border-color:#416d58}
.shanhe-outcome-seal{position:absolute;z-index:9;right:-8px;top:-8px;display:grid;place-items:center;width:23px;height:23px;border:2px double #d5ba7d;border-radius:50%;background:radial-gradient(circle at 40% 35%,#386657,#193c37);color:#fff4d3;font:900 13px/1 "LXGW WenKai Lite","STKaiti",serif;text-shadow:0 1px #152e28;box-shadow:0 2px 3px #1e322c66;pointer-events:none}
.shanhe-room[data-outcome=loss] .shanhe-outcome-seal{border-color:#e0ba87;background:radial-gradient(circle at 40% 35%,#b45843,#763124)}

@media(min-width:900px) and (min-height:650px){.adventure-page:not(.deploying) .pack-context-actions:not(:has(#openCampShop:not([hidden]),#reviewPendingScroll:not([hidden]),#reviewTechniqueReward:not([hidden]),#reviewTemperingReward:not([hidden]))){display:none}}
@media(min-width:900px) and (min-height:650px){
  .adventure-page .combat-objective-hud{top:calc(var(--adventure-board-top,250px) + 8px)}
  .adventure-page .combat-objective-hud.is-collapsed{left:max(8px,calc(var(--adventure-board-left,320px) - 299px));top:max(8px,calc(var(--adventure-board-top,250px) - 51px))}
}
@media(max-width:899px),(max-height:649px){.adventure-page .skill-bar.red{overflow-x:auto!important;overflow-y:hidden!important;touch-action:pan-x;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;scrollbar-width:thin}.adventure-page .skill-bar.red .skill-button{scroll-snap-align:start}.play-page .skill-button[data-passive="true"]::after{content:'被'!important;display:grid!important;place-items:center;z-index:9;right:-1px;bottom:-2px;min-width:17px;width:17px;height:17px;border:1px solid #d8b566;border-radius:50%;background:#315d57;color:#fff1cf;font:900 9px/1 system-ui,sans-serif}}
/* Endgame switch follows the three selectable four-beast hazards. */
.endgame-panel .endgame-toggle{width:100%;min-height:58px;margin-top:14px;padding:9px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #aa9270;border-radius:7px;background:#fbefda;color:#26343a;text-align:left;box-shadow:2px 3px 0 #785d3430}
.endgame-toggle span{display:grid;gap:3px}.endgame-toggle b{font-size:16px}.endgame-toggle small{font-size:11px;color:#765f46}
.endgame-toggle i{position:relative;flex:none;width:46px;height:25px;border-radius:15px;background:#a59685;box-shadow:inset 0 1px 3px #3c281955;transition:background .18s}
.endgame-toggle i:before{content:"";position:absolute;top:3px;left:3px;width:19px;height:19px;border-radius:50%;background:#fff6e5;box-shadow:0 1px 3px #32231370;transition:transform .18s}
.endgame-toggle[aria-checked=true] i{background:#9c4330}.endgame-toggle[aria-checked=true] i:before{transform:translateX(21px)}

/* v0.5.10: enlarge the life seals independently of the general tokens. */
.play-page .life-general{width:38px;height:38px;flex-basis:38px;animation:life-token-breathe 3.4s ease-in-out infinite;will-change:transform}
.play-page .life-meter{height:27px;gap:2px}
.play-page .life-meter i{width:26px;height:26px}
.play-page .life-meter i.active:not(.breaking){animation:life-seal-breathe 2.8s ease-in-out infinite}
.play-page .life-meter i.active:nth-child(2){animation-delay:.4s}
.play-page .life-meter i.active:nth-child(3){animation-delay:.8s}
.play-page .life-meter i.breaking{animation:life-seal-break-slow var(--life-loss-duration,2400ms) steps(1,end) both}
@keyframes life-token-breathe{0%,100%{transform:scale(1);filter:brightness(1)}50%{transform:scale(1.045);filter:brightness(1.12)}}
@keyframes life-seal-breathe{0%,100%{transform:scale(1);filter:brightness(1)}50%{transform:scale(1.09);filter:brightness(1.18)}}
@keyframes life-seal-break-slow{0%,15%{background-position:0 center;transform:scale(1);opacity:1}28%,43%{background-position:33.333% center;transform:scale(1.18);opacity:1}55%,70%{background-position:66.666% center;transform:scale(1.34);opacity:1}82%,94%{background-position:100% center;transform:scale(1.5);opacity:.9}100%{background-position:100% center;transform:scale(1.6);opacity:0}}
@media(min-width:900px){.play-page .life-general{width:44px;height:44px;flex-basis:44px}.play-page .life-meter{height:32px}.play-page .life-meter i{width:31px;height:31px}}
@media(max-width:430px){.play-page .life-general{width:34px;height:34px;flex-basis:34px}.play-page .life-meter{height:23px;gap:0}.play-page .life-meter i{width:22px;height:22px}}
@media all{:where(html[data-game-motion="reduce"]) .play-page .life-general,:where(html[data-game-motion="reduce"]) .play-page .life-meter i.active:not(.breaking){animation:none}:where(html[data-game-motion="reduce"]) .play-page .life-meter i.breaking{animation-duration:.45s}}

/* Keep both life cards aligned with their side columns and use identical token slots. */
@media(min-width:900px) and (min-height:650px){
  .play-page .life{width:100%;height:72px;min-width:0;gap:9px;padding:8px 10px;align-self:stretch;justify-self:stretch}
  .play-page .life.red{justify-self:stretch}
  .play-page .life.black{justify-self:stretch;margin:0}
  .play-page .life>div{min-width:0;gap:2px}
  .play-page .life.black>div{width:auto;transform:none;justify-items:end}
  .play-page .life-general{width:44px;height:44px;flex:0 0 44px}
  .play-page .life-general .life-general-base{inset:0!important;width:100%!important;height:100%!important}
  .play-page .life.red .life-general[data-hero-token]{background:transparent;overflow:visible}
  .play-page .life-meter{height:32px;gap:2px}
  .play-page .life-meter i{flex:0 0 31px;width:31px;height:31px}
}

.combat-pace-setting{display:grid;gap:7px;margin:12px 0;padding:12px;border:1px solid #baa27d;border-radius:6px;background:#fbf0dd;color:#26383b}
.combat-pace-setting>b{font-size:16px}.combat-pace-setting>small{font-size:11px;line-height:1.4;color:#78634a}
.combat-pace-setting>div{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.combat-pace-setting button{min-height:45px;border:1px solid #a98b65;border-radius:5px;background:#fff8ea;color:#344445;font-family:inherit;font-size:15px;font-weight:700;line-height:1.1}
.combat-pace-setting button[aria-pressed=true]{background:#8e352b;color:#fff4df;border-color:#67251f;box-shadow:inset 0 0 0 2px #f7d48d66}
.realtime-gauges{position:absolute;z-index:12;inset:0;pointer-events:none}
.realtime-gauges[hidden]{display:none}
.realtime-gauge{position:absolute;left:50%;display:grid;grid-template-columns:34px minmax(0,1fr) 27px;align-items:center;gap:6px;width:176px;height:31px;padding:4px 8px;border:1px solid #cba967;border-radius:18px;background:#203637df;color:#fff1cf;box-shadow:0 2px 7px #182d3066;font:700 10px/1 system-ui,sans-serif;transform:translateX(-50%)}
.realtime-gauge[data-placement=top]{top:8px}.realtime-gauge[data-placement=bottom]{bottom:8px}
.realtime-gauge .realtime-cells{display:flex;gap:3px;min-width:0}
.realtime-gauge i{height:13px;flex:1 1 0;display:block;border:1px solid #bda981;border-radius:3px;background:linear-gradient(to right,#cc7b3a var(--fill,0%),#324342 var(--fill,0%));box-shadow:inset 0 0 2px #fff2cc88}
.realtime-gauge.black i{background:linear-gradient(to right,#5daca1 var(--fill,0%),#324342 var(--fill,0%))}
.realtime-gauge b{font:700 10px/1 system-ui,sans-serif;text-align:right}
@media(max-width:899px),(max-height:649px){.realtime-gauge{width:min(164px,54vw);height:28px;padding:3px 7px;font-size:9px}.realtime-gauge[data-placement=top]{top:4px}.realtime-gauge[data-placement=bottom]{bottom:4px}.realtime-gauge i{height:11px}}
.scroll-piece-preview{width:39px;height:39px;vertical-align:middle;margin-right:5px;object-fit:contain;filter:drop-shadow(0 2px 3px #4d321a55)}

/* v0.5.10 r6：行动力避开首领名牌，棋盘授箓只占棋盘下沿。 */
.realtime-gauge[data-placement=top]{left:auto;right:8px;transform:none}
.realtime-gauge[data-placement=bottom]{left:8px;right:auto;transform:none}
.has-pan-yuan-hud .realtime-gauge[data-placement=top]{top:53px}
.technique-board-bind{position:absolute;z-index:94;left:50%;bottom:13px;display:flex;align-items:center;gap:8px;width:min(560px,calc(100% - 18px));min-height:50px;padding:6px 9px;border:1px solid #98743d;border-radius:8px;background:linear-gradient(105deg,#203c3bea,#31594fea);color:#fff2d6;box-shadow:0 6px 19px #1022248c,inset 0 0 0 1px #d9bf7780;transform:translateX(-50%);pointer-events:auto}
.technique-board-bind[hidden]{display:none}.technique-board-bind>span{display:grid;gap:2px;flex:1;min-width:0}.technique-board-bind b{overflow:hidden;font:800 14px/1.1 "LXGW WenKai Lite","STKaiti",serif;text-overflow:ellipsis;white-space:nowrap}.technique-board-bind small{font:700 9px/1.2 system-ui,sans-serif;color:#ead3a2}.technique-board-bind button{flex:0 0 auto;min-height:38px;padding:5px 9px;border:1px solid #d2ad72;border-radius:5px;background:#f6e9d0;color:#36514b;font:800 11px/1.1 "LXGW WenKai Lite","STKaiti",serif}.technique-board-bind #techniqueBoardBindCancel{background:transparent;color:#fff1d2}
@media(max-width:899px),(max-height:649px){
  .has-pan-yuan-hud .realtime-gauge[data-placement=top]{top:47px}
  .technique-board-bind{position:fixed;left:8px;right:8px;top:min(calc(var(--adventure-board-bottom,70vh) - 26px),calc(100dvh - 150px));bottom:auto;width:auto;transform:none;min-height:58px;padding:7px}
  .technique-board-bind small{font-size:9px}.technique-board-bind button{min-height:44px;padding:5px 8px}
  .adventure-page:not(.deploying) .pack-panel,.adventure-page:not(.deploying) .adventure-inventory.open .pack-panel,
  .adventure-page.deploying .pack-panel,.adventure-page.deploying .adventure-inventory.open .pack-panel{box-sizing:border-box;left:50%;top:50%;width:min(480px,calc(100vw - 16px));height:auto;max-height:min(76dvh,700px);padding:12px;transform:translate(-50%,-50%);border:1px solid #9c8055;border-radius:10px;background:linear-gradient(165deg,#fff7e8,#f1e0c3);box-shadow:0 14px 42px #121e22a1,inset 0 0 0 2px #fffaf0;overflow:auto}
  .adventure-page .pack-panel>.pack-heading{grid-template-columns:54px 1fr;gap:10px}.adventure-page .pack-panel>.pack-heading b{font-size:18px}.adventure-page .pack-panel>.pack-heading small{font-size:11px}
  .adventure-page .pack-folder>summary{min-height:52px}.adventure-page .pack-folder>summary>b{font-size:15px}.adventure-page .pack-folder>summary>small{font-size:11px}
  .adventure-page .technique-inventory{max-height:none}.adventure-page .technique-keepsake{grid-template-columns:48px minmax(0,1fr) auto;gap:9px;min-height:64px;padding:8px}.adventure-page .technique-keepsake>.technique-art-button{width:46px;height:46px}.adventure-page .technique-keepsake b{font-size:13px}.adventure-page .technique-keepsake small{font-size:10px;line-height:1.3}.adventure-page .technique-keepsake-actions>button{width:auto;min-width:52px;min-height:36px;font-size:10px}
  .adventure-page.deploying .technique-inventory,.adventure-page.deploying .scroll-inventory{max-height:none;overflow:visible}
}

/* 武将金卷以克制的鎏金区分于流光彩卷。 */
.scroll-offers article[data-hero-scroll]:not([data-hero-scroll=""])[data-rarity=金],.scroll-keepsake[data-hero-scroll]:not([data-hero-scroll=""])[data-rarity=金]{border:2px solid #b98838;background:linear-gradient(140deg,#f7edd4,#fff7e8 48%,#e7d09e);box-shadow:inset 0 0 0 1px #fff9e1,0 5px 14px #7d592925;animation:none}
.scroll-offers article[data-hero-scroll=GUAN_YU][data-rarity=金],.scroll-keepsake[data-hero-scroll=GUAN_YU][data-rarity=金]{border-color:#9a8a49;background:linear-gradient(135deg,#e5ead5,#fff5dc 52%,#d7c894)}
.scroll-offers article[data-hero-scroll=ZHANG_FEI][data-rarity=金],.scroll-keepsake[data-hero-scroll=ZHANG_FEI][data-rarity=金]{border-color:#b27a3c;background:linear-gradient(135deg,#f4dfbe,#fff5e5 52%,#e9c28a)}
.scroll-offers article[data-hero-scroll=GUAN_YU][data-rarity=金]::before,.scroll-keepsake[data-hero-scroll=GUAN_YU][data-rarity=金]::before{display:none}
.scroll-offers article[data-hero-scroll]:not([data-hero-scroll=""])[data-rarity=金]>span,.scroll-keepsake[data-hero-scroll]:not([data-hero-scroll=""])[data-rarity=金]>span{background:#a87935;color:#fff8df;box-shadow:inset 0 0 0 1px #f8dfa3}
@media(max-width:620px){.scroll-offers article[data-hero-scroll]:not([data-hero-scroll=""])[data-rarity=金]{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto auto auto auto;gap:7px;padding:12px}.scroll-offers article[data-hero-scroll]:not([data-hero-scroll=""])[data-rarity=金]>span{grid-column:1/-1;grid-row:1;justify-self:start}.scroll-offers article[data-hero-scroll]:not([data-hero-scroll=""])[data-rarity=金]>h3{grid-column:1/-1;grid-row:2;font-size:18px}.scroll-offers article[data-hero-scroll]:not([data-hero-scroll=""])[data-rarity=金]>p{grid-column:1/-1;grid-row:3;font-size:12px;line-height:1.45}.scroll-offers article[data-hero-scroll]:not([data-hero-scroll=""])[data-rarity=金]>button{grid-column:1;grid-row:4}.scroll-offers article[data-hero-scroll]:not([data-hero-scroll=""])[data-rarity=金]>.scroll-reroll{grid-column:2;grid-row:4}}

/* r9: the two modes remain one tap from the board, without taking board height. */
.play-page .mode-entry{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-width:68px;min-height:42px;margin:0;padding:4px 9px;border:1px solid #a88d5c;border-radius:22px;background:#f7edd9;color:#31534e;box-shadow:inset 0 0 0 2px #fffaf0,0 2px 0 #9e825443;font-size:13px;font-weight:800;white-space:nowrap}
.play-page .mode-entry i{font-size:14px;font-style:normal;line-height:1}.play-page .mode-entry[aria-expanded=true]{background:#31534e;color:#fff5dd}
.mode-switcher[hidden]{display:none}.mode-switcher{position:fixed;z-index:360;top:calc(62px + env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));width:min(310px,calc(100vw - 24px));padding:13px;border:1px solid #a78a59;border-radius:12px;background:#fbf2e1;box-shadow:0 12px 35px #172b2db0,inset 0 0 0 3px #fff8ec;display:grid;gap:8px}.mode-switcher>span{padding:1px 4px 5px;color:#8b5636;font-size:11px;font-weight:800;letter-spacing:.15em}.mode-switcher a{min-height:63px;padding:9px 12px;display:grid;align-content:center;gap:3px;border:1px solid #b49b70;border-radius:8px;background:#f5e9d5;color:#284549;text-decoration:none}.mode-switcher a b{font-size:16px}.mode-switcher a small{font-size:11px;color:#77654c}.mode-switcher a[aria-current=page]{border-color:#31534e;background:#31534e;color:#fff4da}.mode-switcher a[aria-current=page] small{color:#e0d2aa}.mode-switcher a:focus-visible,.home-shortcut-guide button:focus-visible{outline:2px solid #b33a2b;outline-offset:2px}
.home-shortcut-entry{border-color:#628278;background:#edf1e6}.home-shortcut-entry i{font-size:21px}
.home-shortcut-guide{width:min(440px,calc(100vw - 24px));max-height:calc(100dvh - 30px);padding:0;overflow:auto;border:1px solid #9e8152;border-radius:14px;background:#fbf2e2;color:#263b3d;box-shadow:0 20px 60px #142a2da8}.home-shortcut-guide::backdrop{background:#132329ae}.home-shortcut-guide article{position:relative;padding:24px;display:grid;gap:12px}.home-shortcut-guide article>small{color:#9e4632;font-size:11px;font-weight:800;letter-spacing:.14em}.home-shortcut-guide h2{margin:0;font:800 24px/1.25 "LXGW WenKai Lite","STKaiti",serif}.home-shortcut-guide p{margin:0;color:#615947;font-size:14px;line-height:1.65}.home-shortcut-guide label{display:grid;gap:5px;color:#5e513d;font-size:11px;font-weight:800}.home-shortcut-guide input{width:100%;min-height:42px;padding:9px;border:1px solid #b29a6f;border-radius:6px;background:#fffaf0;color:#31534e;font-size:12px}.home-shortcut-guide #copyHomeShortcut{min-height:44px;border:1px solid #31534e;border-radius:7px;background:#31534e;color:#fff5dd;font-size:14px;font-weight:800}.home-shortcut-guide .home-shortcut-close{position:absolute;top:10px;right:10px;width:40px;height:40px;border:0;background:transparent;box-shadow:none;color:#743e30;font-size:25px}.home-shortcut-guide #homeShortcutStatus{min-height:1.4em;color:#31534e;font-size:12px}
@media(max-width:899px),(max-height:649px){.play-page .mode-entry{min-width:56px;height:36px;min-height:36px;padding:3px 7px;font-size:11px}.mode-switcher{top:calc(48px + env(safe-area-inset-top))}}
@media(max-width:360px){.play-page .mode-entry{min-width:48px;padding-inline:5px}.play-page .mode-entry i{display:none}}
.adventure-page #settingsMain .controller-settings{display:none}
/* r5: one scroll layout for every quality, no absolute/floating actions. */
#scrollOffers article.scroll-card{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr) auto auto;gap:10px;padding:16px;min-width:0;align-content:start}
#scrollOffers article.scroll-card>span{grid-column:1;grid-row:1;justify-self:start}
#scrollOffers article.scroll-card>h3{grid-column:1;grid-row:2;margin:0;font-size:22px;line-height:1.25;overflow-wrap:anywhere}
#scrollOffers article.scroll-card>p{grid-column:1;grid-row:3;margin:0;align-self:start;font-size:15px;line-height:1.55;overflow-wrap:anywhere}
#scrollOffers article.scroll-card>button{position:static;grid-column:1;grid-row:4;min-height:44px;width:100%;margin:0;transform:none;align-self:stretch}
#scrollOffers article.scroll-card>.scroll-reroll{grid-row:5;background:#f1e2c4;color:#654d30}
#scrollOffers article.scroll-card>select{grid-column:1;grid-row:4;align-self:start;margin-top:0;max-width:100%}
@media(max-width:620px){#scrollOffers article.scroll-card{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto auto auto auto;gap:8px;padding:13px}#scrollOffers article.scroll-card>span{grid-column:1/-1;grid-row:1}#scrollOffers article.scroll-card>h3{grid-column:1/-1;grid-row:2;font-size:20px}#scrollOffers article.scroll-card>p{grid-column:1/-1;grid-row:3;font-size:14px}#scrollOffers article.scroll-card>button{grid-column:1;grid-row:4;font-size:15px}#scrollOffers article.scroll-card>.scroll-reroll{grid-column:2;grid-row:4}#scrollOffers article.scroll-card>select{grid-column:1/-1}}
.shanhe-room[data-known=true][data-type=event] b,.shanhe-mini-room[data-known=true][data-type=event] b{background-image:url('../assets/map-room-event-v050-r3.png');color:transparent;text-shadow:none}
.shanhe-room[data-known=true][data-type=scroll_shop] b,.shanhe-mini-room[data-known=true][data-type=scroll_shop] b{background-image:url('../assets/ui-tempering-seal-v057.webp');color:transparent}
.shanhe-room[data-known=true][data-type=scroll_shop] b::after,.shanhe-mini-room[data-known=true][data-type=scroll_shop] b::after{content:none}
.shanhe-room[data-known=true][data-type=book_shop] b,.shanhe-mini-room[data-known=true][data-type=book_shop] b{background-image:url('../assets/map-room-camp-v050-r3.png');color:transparent}
.shanhe-room[data-type=book_shop][data-reward=claimed]{opacity:.6}

/* 地图与缩略图共用正方形图标位，画面留白由图标位统一控制。 */
.shanhe-map-stage .shanhe-room[data-known=true] b{box-sizing:border-box;display:grid;place-items:center;place-self:center;width:43px;height:43px;min-width:0;min-height:0;margin:0;padding:0;background-position:50% 50%;background-size:contain}
.shanhe-map-stage .shanhe-room[data-known=false] b{box-sizing:border-box;place-self:center;width:33px;height:33px;min-width:0;min-height:0;margin:0;padding:0;background-position:50% 50%;background-size:contain}
.shanhe-mini-room[data-known=true] b{box-sizing:border-box;display:grid;place-items:center;place-self:center;width:78%;height:78%;min-width:0;min-height:0;margin:0;padding:0;background-position:50% 50%;background-size:contain}
.shanhe-mini-room[data-known=false] b{box-sizing:border-box;place-self:center;width:63%;height:63%;min-width:0;min-height:0;margin:0;padding:0;background-position:50% 50%;background-size:contain}
@media(max-width:620px){.shanhe-map-stage .shanhe-room[data-known=true] b{width:34px;height:34px}.shanhe-map-stage .shanhe-room[data-known=false] b{width:27px;height:27px}}
.pack-folder summary .pack-alert{position:static;display:inline-grid;place-items:center;flex:0 0 auto;min-width:21px;height:21px;padding:0 5px;border:1px solid #fff0d1;border-radius:12px;background:#a83d2d;color:#fff5e0;font:700 12px/1 system-ui;cursor:pointer;box-shadow:0 1px 2px #704b2933}
.pack-folder summary .pack-alert[hidden]{display:none}
#reviewPendingScroll,#reviewTechniqueReward,#reviewTemperingReward{display:none!important}
.play-page .life.black{justify-content:flex-end;text-align:right}
.play-page .life.black>div{margin-left:auto;justify-items:end;transform:none!important}
.play-page .life.black .life-general{justify-self:end}
body.play-page{touch-action:manipulation;-webkit-text-size-adjust:100%}

#scrollOffers article.scroll-card:has(>select)>button{grid-row:5}
#scrollOffers article.scroll-card:has(>select)>.scroll-reroll{grid-row:6}
@media(max-width:620px){#scrollOffers article.scroll-card:has(>select)>.scroll-reroll{grid-row:5}}

.play-page button,.play-page a,.play-page summary,.play-page [role=button],dialog{touch-action:manipulation}

/* r6: grant banner sits above the deployment action, with its own clear gap. */
@media(max-width:760px){
 .adventure-page .technique-board-bind{z-index:97;top:min(calc(var(--adventure-board-bottom,70dvh) + 8px),calc(100dvh - 142px));bottom:auto;min-height:62px;max-height:90px;box-sizing:border-box}
 .binding-technique-on-board #confirmDeployment{visibility:hidden;pointer-events:none}
 .technique-board-bind>span>small:last-child{line-height:1.4;white-space:normal}
}

/* r7: continuous paper across the board's physical out-of-bounds margin. */
@media(min-width:761px){
 .play-page .board-wrap{background:transparent;border-color:#9b805747;box-shadow:none;align-items:center;justify-content:center}
 .play-page canvas{filter:none}
}

.admin-scenario-panel{position:fixed;left:12px;bottom:12px;z-index:260;width:min(430px,calc(100vw - 24px));display:grid;gap:7px;padding:12px;background:#fff4dfed;border:1px solid #9c7b43;border-radius:8px;box-shadow:0 4px 18px #20363040;color:#274441;font:12px/1.5 system-ui;backdrop-filter:blur(5px)}
.admin-scenario-panel select,.admin-scenario-actions button{min-height:36px;padding:5px 10px;font:inherit}
.admin-scenario-actions{display:flex;flex-wrap:wrap;gap:6px}.admin-scenario-output{max-height:90px;overflow:auto;overflow-wrap:anywhere}.admin-scenario-panel.collapsed select,.admin-scenario-panel.collapsed output{display:none}
@media(max-width:760px){.admin-scenario-panel{top:8px;bottom:auto;left:8px;width:min(340px,calc(100vw - 16px));padding:8px}}

/* 关闭钮在窄屏仍保持几何正圆，不随标题挤压。 */
.play-page dialog :is(#closeShanheMap,#closeBaixi,#closeSkill,button[aria-label*="关闭"]){box-sizing:border-box;display:grid;place-items:center;flex:0 0 42px;width:42px;min-width:42px;max-width:42px;height:42px;min-height:42px;max-height:42px;aspect-ratio:1;padding:0;border-radius:50%;line-height:1}

/* Phoenix impacts are felt at landing; the optional haptic follows the same setting. */
.impact-feedback-setting i{min-width:30px;color:#8d392b;font-style:normal;font-weight:800;text-align:center}
.play-page .arena.impact-shake{animation:meteor-board-shake .42s ease-out both}
@keyframes meteor-board-shake{0%,100%{transform:translate3d(0,0,0)}12%{transform:translate3d(-5px,2px,0)}26%{transform:translate3d(5px,-3px,0)}43%{transform:translate3d(-4px,2px,0)}62%{transform:translate3d(3px,-1px,0)}82%{transform:translate3d(-1px,0,0)}}
.crossbow-cue{position:absolute;z-index:16;left:50%;top:48%;display:grid;place-items:center;gap:2px;min-width:102px;padding:8px 10px;border:1px solid #d6aa59;border-radius:14px;background:radial-gradient(circle,#1e4037ea,#18352edb 67%,#18352d99);color:#ffdfa3;text-shadow:0 1px 2px #091e1a;box-shadow:0 0 0 2px #fbdaa345,0 0 27px #dba74e99;pointer-events:none;transform:translate(-50%,-50%)}
.crossbow-cue[hidden]{display:none}.crossbow-cue img{width:58px;height:58px;object-fit:contain;filter:drop-shadow(0 0 8px #ffd678)}.crossbow-cue b{font:900 12px/1.2 "LXGW WenKai Lite","STKaiti",serif;white-space:nowrap;letter-spacing:.12em}
.crossbow-cue.playing img{animation:crossbow-cock 1.1s ease-out both}.crossbow-cue.playing{animation:crossbow-flash 1.1s ease-out both}
@keyframes crossbow-cock{0%{transform:scale(.68) rotate(-9deg)}20%{transform:scale(1.24) rotate(10deg)}28%{transform:scale(1.1) rotate(-10deg)}36%{transform:scale(1.16) rotate(7deg)}48%,100%{transform:scale(1) rotate(0)}}
@keyframes crossbow-flash{0%{opacity:0;transform:translate(-50%,-50%) scale(.72)}17%,73%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.06)}}
@media all{:where(html[data-game-motion="reduce"]) .play-page .arena.impact-shake,:where(html[data-game-motion="reduce"]) .crossbow-cue.playing,:where(html[data-game-motion="reduce"]) .crossbow-cue.playing img{animation:none}}
@media(min-width:900px) and (min-height:650px){.adventure-page .combat-objective-hud.is-collapsed{left:calc(var(--adventure-board-left,320px) + 10px);top:calc(var(--adventure-board-top,250px) + 10px)}}

/* r7: compact backpack headings, aligned controls, and a scrollable desktop skill rail. */
.adventure-page .pack-panel .pack-folder>summary{grid-template-columns:34px max-content minmax(0,1fr)}
.adventure-page .pack-panel .pack-folder>summary>b{white-space:nowrap;letter-spacing:0}
.adventure-page .pack-panel .pack-folder>summary>small{overflow:hidden;text-overflow:ellipsis;min-width:0}
.play-page .mode-entry{gap:7px}
.play-page .mode-entry i{display:grid;place-items:center;width:12px;height:12px;flex:0 0 12px;font-size:0;line-height:1}
.play-page .mode-entry i::after{content:"";display:block;width:6px;height:6px;margin-top:-3px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg)}
.play-page .skill-button[data-passive="true"]::after{top:6px;right:6px;bottom:auto;left:auto;width:18px;min-width:18px;height:18px;padding:0;border-radius:2px;font:800 10px/1 system-ui,sans-serif}
@media(max-width:899px),(max-height:649px){.play-page .skill-button[data-passive="true"]::after{top:0!important;right:0!important;bottom:auto!important;width:17px;height:17px;border-radius:3px}}
@media(min-width:900px) and (min-height:650px){
  .adventure-page .skill-bar.red{align-content:start;grid-auto-rows:max-content;overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#a98b58 #f3e6d2}
  .adventure-page .skill-bar.red>.mobile-map-dock{position:static;order:-20;display:flex;align-items:center;justify-content:stretch;gap:5px;width:100%;min-height:42px;height:42px;margin:0 0 5px;padding:0;border:0;background:none}
  .adventure-page .skill-bar.red>.mobile-map-dock .open-shanhe-map,.adventure-page .skill-bar.red>.mobile-map-dock .shanhe-mini-toggle{position:static;display:flex!important;align-items:center;justify-content:center;gap:4px;height:40px;min-height:40px;margin:0;padding:4px 5px;border:1px solid #9f8556;border-radius:4px;background:#284b46;color:#f8e6be;box-shadow:1px 2px 0 #192b2b43}
  .adventure-page .skill-bar.red>.mobile-map-dock .open-shanhe-map[hidden],.adventure-page .skill-bar.red>.mobile-map-dock .shanhe-mini-toggle[hidden]{display:none!important}
  .adventure-page .skill-bar.red>.mobile-map-dock .open-shanhe-map{flex:1 1 55%;width:auto}.adventure-page .skill-bar.red>.mobile-map-dock .shanhe-mini-toggle{flex:1 1 45%;width:auto}
  .adventure-page .skill-bar.red>.mobile-map-dock i{display:grid;place-items:center;width:22px;height:22px;flex:0 0 22px;border-radius:50%;background:#f3e5c5;color:#31544b;font:800 11px/1 serif}
  .adventure-page .skill-bar.red>.mobile-map-dock span{display:block;font:800 10px/1 "LXGW WenKai Lite",serif;white-space:nowrap}
  .adventure-page .skill-bar.red>.shanhe-mini-map{order:-19;flex:0 0 auto;width:100%;margin:0 0 6px;pointer-events:auto}
  .adventure-page .skill-bar.red>.shanhe-mini-map[hidden]{display:none}
}
/* 0.6.4 r11: meme-book quotations live between the rule and the actions. */
.scroll-card>.scroll-quote{margin:0;padding:8px 10px;border-left:3px solid #b38243;background:#f4e5c6a8;color:#684a32;font:600 13px/1.5 "LXGW WenKai Lite",serif;text-align:left;overflow-wrap:anywhere}
#scrollOffers article.scroll-card:has(>.scroll-quote){grid-template-rows:auto auto auto auto auto auto}
#scrollOffers article.scroll-card>.scroll-quote{grid-column:1;grid-row:4}
#scrollOffers article.scroll-card:has(>.scroll-quote)>button{grid-row:5}
#scrollOffers article.scroll-card:has(>.scroll-quote)>.scroll-reroll{grid-row:6}
@media(max-width:620px){#scrollOffers article.scroll-card>.scroll-quote{grid-column:1/-1}#scrollOffers article.scroll-card:has(>.scroll-quote)>.scroll-reroll{grid-row:5;grid-column:2}}
.skill-button.active-scroll .skill-picture{filter:drop-shadow(0 0 5px #d9a84d88)}
.skill-button.active-scroll[data-castable=true] .skill-picture{animation:active-scroll-breathe 1.8s ease-in-out infinite alternate}
@keyframes active-scroll-breathe{to{filter:drop-shadow(0 0 11px #f1cb71)}}
@media all{:where(html[data-game-motion="reduce"]) .skill-button.active-scroll[data-castable=true] .skill-picture{animation:none}}
/* r13: secret keepsakes and continuous folder headers. */
.adventure-page .pack-panel .pack-folder{margin-top:0;border-radius:2px;overflow:hidden;background:#ead8b6}
.adventure-page .pack-panel .pack-folder+ .pack-folder{margin-top:6px}
.adventure-page .pack-panel .pack-folder>summary{box-sizing:border-box;margin:0;min-height:58px;padding-top:4px;padding-bottom:4px;background:linear-gradient(100deg,#e9d9b9,#f5e8ce 60%,#ead5af);border-top:0;border-bottom:0}
.adventure-page .pack-panel .keepsake-folder{--folder-ink:#6f704e}
.keepsake-inventory{display:grid;gap:7px;padding:8px;background:#fff8e8}
.keepsake-card{display:grid;grid-template-columns:58px 1fr;align-items:center;gap:8px;min-height:70px;padding:5px 8px;border:1px solid #b79a67;background:#fff8e8}
.keepsake-card img{width:58px;height:58px;object-fit:contain;filter:drop-shadow(0 3px 3px #4e392f60)}.keepsake-card span{display:grid;gap:3px;min-width:0}.keepsake-card b{color:#344b49;font:800 12px 'STKaiti',serif}.keepsake-card small{color:#6d5a43;font:10px/1.4 'STKaiti',serif}
.keepsake-card[data-element=thunder]{border-left:3px solid #4777aa}.keepsake-card[data-element=earth]{border-left:3px solid #9d7048}.keepsake-card[data-element=wind]{border-left:3px solid #649a8b}.keepsake-card[data-element=fire]{border-left:3px solid #b64b36}
/* Keep a fallen general's occasional battle quote on its own line. */
#result[data-winner=black] #resultDetail{white-space:pre-line}

/* Zhang Jiao uses six actual painted poses, with the established cut-in timing. */
.faceoff-cinematic[data-hero="ZHANG_JIAO"].playing .portrait-frame.frame-1{animation:zhang-faceoff-frame-1 2.35s steps(1,end) both}.faceoff-cinematic[data-hero="ZHANG_JIAO"].playing .portrait-frame.frame-2{animation:zhang-faceoff-frame-2 2.35s steps(1,end) both}.faceoff-cinematic[data-hero="ZHANG_JIAO"].playing .portrait-frame.frame-3{animation:zhang-faceoff-frame-3 2.35s steps(1,end) both}.faceoff-cinematic[data-hero="ZHANG_JIAO"].playing .portrait-frame.frame-4{animation:zhang-faceoff-frame-4 2.35s steps(1,end) both}.faceoff-cinematic[data-hero="ZHANG_JIAO"].playing .portrait-frame.frame-5{animation:zhang-faceoff-frame-5 2.35s steps(1,end) both}.faceoff-cinematic[data-hero="ZHANG_JIAO"].playing .portrait-frame.frame-6{animation:zhang-faceoff-frame-6 2.35s steps(1,end) both}
.faceoff-cinematic[data-hero="ZHANG_JIAO"] .portrait-frame.black{inset:auto;width:min(88cqw,470px);height:100%;max-width:88cqw;object-fit:contain;object-position:center;transform:none}
.faceoff-cinematic[data-hero="ZHANG_JIAO"] .faceoff-portraits{inset:-16% 0 -10%}

/* Shared passives retain clear counters without using full-height skill cards. */
.adventure-page .skill-bar.red .global-skill[data-passive="true"]{min-height:76px;height:auto;padding:7px 10px;gap:9px}
.adventure-page .skill-bar.red .global-skill[data-passive="true"] .skill-picture{width:54px;height:54px;flex:0 0 54px}
.adventure-page .skill-bar.red .global-skill[data-passive="true"] .skill-copy b{font-size:17px}
.adventure-page .skill-bar.red .global-skill[data-passive="true"]::after{content:attr(data-count)!important;border-radius:4px}
.boss-banner-choice{display:flex;flex-direction:column;min-width:0;padding:24px 18px;border:2px solid #b18135;background:#fff9ec;box-shadow:4px 5px 0 #715b3233;text-align:center}
.boss-banner-choice h3{font-size:26px;color:#29484b;margin:8px 0 18px}
.boss-banner-choice p{flex:1;font-size:18px;line-height:1.65;margin:0 0 22px;color:#60482c}
.boss-banner-choice button{background:#99362d;color:#fff8e9;min-height:48px;border:1px solid #27484b;border-radius:5px}
@media(max-width:899px),(max-height:649px){.adventure-page .skill-bar.red .global-skill[data-passive="true"]{min-height:0;padding:4px;gap:3px}.adventure-page .skill-bar.red .global-skill[data-passive="true"] .skill-picture{width:42px;height:42px;flex:0 0 42px}.boss-banner-choice{padding:12px}.boss-banner-choice h3{font-size:20px;margin:5px 0 8px}.boss-banner-choice p{font-size:14px;margin-bottom:12px}}

@media(min-width:900px) and (min-height:650px){
.adventure-page .skill-bar.red .global-passive-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;width:100%;flex:none;padding:3px}
.adventure-page .skill-bar.red .global-passive-grid .skill-button[data-passive="true"]{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-width:0;width:100%;height:94px;min-height:94px;margin:0;padding:6px 3px;border-width:1px}
.adventure-page .skill-bar.red .global-passive-grid .skill-button[data-passive="true"] .skill-picture{width:46px;height:46px;flex:0 0 46px}
.adventure-page .skill-bar.red .global-passive-grid .skill-button[data-passive="true"] .skill-copy{display:block;min-width:0;max-width:100%;text-align:center}
.adventure-page .skill-bar.red .global-passive-grid .skill-button[data-passive="true"] .skill-copy b{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.adventure-page .skill-bar.red .global-passive-grid .skill-button[data-passive="true"] .skill-state{font-size:10px;line-height:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.adventure-page .skill-bar.red .global-passive-grid .skill-button[data-passive="true"]::after{top:0;right:0;bottom:auto;font-size:11px;min-width:19px;height:19px;border-radius:4px}
}
@media(max-width:899px),(max-height:649px){.adventure-page .skill-bar.red .global-passive-grid{display:flex;gap:7px;flex:0 0 auto;align-items:center}}

/* Global passives use the same compact type as mobile hero skills. */
@media(max-width:899px),(max-height:649px){
  .adventure-page .skill-bar.red .global-passive-grid .skill-button[data-passive="true"]{flex:0 0 54px;min-width:54px;width:54px;height:52px;min-height:44px;padding:0 3px;gap:0}
  .adventure-page .skill-bar.red .global-passive-grid .skill-button[data-passive="true"] .skill-picture{width:38px;height:38px;flex:0 0 38px}
  .adventure-page .skill-bar.red .global-passive-grid .skill-button[data-passive="true"] .skill-copy b{display:block;font-size:9px;line-height:12px;max-width:48px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}
@media(max-width:899px),(max-height:649px){.adventure-page .skill-bar.red .hero-skill[data-passive="true"]{order:0!important}}

/* Source pills stay inside the art corner and never widen a skill card. */
.skill-source-tag{position:absolute;top:3px;left:5px;padding:1px 4px;border-radius:3px;font-size:9px;line-height:1.35;font-weight:600;color:#fbf1d7;background:#375e57;pointer-events:none;letter-spacing:0}
[data-skill-source="book"] .skill-source-tag{background:#99702e}
[data-skill-source="curio"] .skill-source-tag{background:#88634b}
[data-skill-source="art"] .skill-source-tag{background:#62577e}
[data-skill-source="element"] .skill-source-tag{background:#377d87}
.scroll-burn{background:#ead9bb!important;color:#87372a!important;border:1px solid #ba8560!important;margin-top:8px;font-size:14px}
@media(max-width:760px){.skill-source-tag{top:1px;left:1px;padding:0 2px;font-size:7px;line-height:1.3;border-radius:2px}.scroll-burn{font-size:12px}}

/* v0.6.7 r2: 凤凰首领与捷胜额外奖励。主体文字始终保持完整对比度。 */
.phoenix-boss-hud{margin:6px 0;padding:7px 12px;border:1px solid #bd8a49;border-radius:5px;background:linear-gradient(110deg,#f7e7c9,#ead7b6);color:#67472d;font-size:12px}
.phoenix-boss-hud[hidden]{display:none}.phoenix-boss-hud summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px}.phoenix-boss-hud b{color:#923d2b}.phoenix-boss-hud p{margin:8px 0 2px;line-height:1.6}.phoenix-boss-hud[data-mode=exposed]{border-color:#579da6;background:#e8eee0}.phoenix-boss-hud[data-mode=fire]{border-color:#b34c31;background:#f4dfbc}
[data-floor="2"] .shanhe-room[data-known=true][data-type=boss] b,[data-floor="2"] .shanhe-mini-room[data-known=true][data-type=boss] b{background-image:url('../assets/boss-phoenix-copper-v067-r2.webp');background-size:contain}
.quick-clear-reward{width:min(1040px,calc(100vw - 28px));max-height:calc(100dvh - 28px);border:1px solid #be9657;border-radius:9px;overflow:auto;background:#f6e7c9;box-shadow:0 20px 90px #09191680}
.quick-clear-reward::backdrop{background:#172b2dbd;backdrop-filter:blur(4px)}
.quick-clear-reward .technique-reward-card{position:relative;padding:32px 28px 22px;isolation:isolate;overflow:hidden;background:radial-gradient(ellipse at 50% 0,#fff9e7 0,#f5e7ca 55%,#e5cda4 100%);text-align:center}
.quick-clear-reward .technique-reward-card::before{content:'';position:absolute;inset:9px;border:1px solid #b989445e;pointer-events:none;z-index:-1}
.quick-clear-reward .technique-reward-card>span{display:block;color:#94632e;font-size:13px;letter-spacing:.2em}.quick-clear-reward h2{margin:12px 0 8px;color:#314943;font-size:clamp(25px,4vw,38px)}.quick-clear-reward #bossBannerRewardHint{margin:0 0 22px;font-size:14px;color:#776041;line-height:1.65}
.quick-clear-seal{display:grid;place-items:center;width:58px;height:58px;margin:0 auto 14px;border:3px double #a3422e;border-radius:4px;color:#a3422e;font:bold 23px 'LXGW WenKai Lite',serif;transform:rotate(-9deg);box-shadow:3px 3px 0 #c89a5540}
.quick-clear-reward .technique-offers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:stretch}
.quick-clear-reward .boss-banner-choice{position:relative;padding:22px 18px 18px;min-height:270px;overflow:hidden;background:linear-gradient(155deg,#fff8e3,#efddb4);border:2px solid #b98939;border-radius:5px;box-shadow:0 8px 18px #66502524,inset 0 0 0 4px #fff9e94f}
.quick-clear-category{display:block;color:#745128;font-size:12px;letter-spacing:.25em}.quick-clear-rarity{align-self:center;margin-top:9px;padding:4px 11px;border:1px solid #b58a43;border-radius:20px;color:#99662d;background:#fff8e9a6;font-size:12px}
.quick-clear-reward .boss-banner-choice h3{margin:17px 0 12px;font-size:25px;line-height:1.35;overflow-wrap:anywhere}.quick-clear-reward .boss-banner-choice p{font-size:15px;line-height:1.65;margin:0 0 20px}.quick-clear-reward .boss-banner-choice button{font-size:15px;min-height:46px;background:#315e58;border-color:#254b47;box-shadow:2px 3px 0 #163f3938}
.quick-clear-reward .boss-banner-choice[data-rarity="彩"],.quick-clear-reward .boss-banner-choice[data-rarity="臻彩"]{border-color:#927796;background:linear-gradient(150deg,#f9ecdd,#eee4dc 40%,#e0ebe4 100%);box-shadow:0 0 0 1px #e3c789,0 8px 26px #85507735,inset 0 0 0 4px #fff7eb88}
.quick-clear-reward [data-rarity="彩"] .quick-clear-rarity,.quick-clear-reward [data-rarity="臻彩"] .quick-clear-rarity{color:#704e78;border-color:#92749a;background:#faf2ee}
.quick-clear-reward #bossBannerLater{margin:20px auto 0;padding:10px 20px;background:transparent;border:1px solid #ab8a55;border-radius:4px;color:#786040;font-size:13px}
.quick-clear-reveal .quick-clear-seal{animation:quick-seal .65s ease-out both}.quick-clear-reveal .boss-banner-choice{animation:quick-prize .75s cubic-bezier(.2,.8,.2,1) var(--reveal-delay) both}
.quick-clear-reveal .boss-banner-choice::after{content:'';position:absolute;inset:-40% -80%;background:linear-gradient(110deg,transparent 35%,#fff5c2a6 50%,transparent 65%);transform:translateX(-65%);pointer-events:none;animation:quick-glint 1.15s ease-out calc(var(--reveal-delay) + .2s) both}
@keyframes quick-seal{0%{opacity:0;transform:rotate(-18deg) scale(1.7)}60%{opacity:1;transform:rotate(-9deg) scale(.96)}100%{transform:rotate(-9deg) scale(1)}}
@keyframes quick-prize{0%{opacity:0;transform:translateY(32px) perspective(600px) rotateX(-16deg)}100%{opacity:1;transform:none}}
@keyframes quick-glint{0%{transform:translateX(-65%)}100%{transform:translateX(65%)}}
@media(max-width:600px){.quick-clear-reward .technique-reward-card{padding:20px 15px 16px}.quick-clear-seal{width:42px;height:42px;font-size:18px;margin-bottom:10px}.quick-clear-reward .technique-offers{grid-template-columns:1fr;gap:12px}.quick-clear-reward .boss-banner-choice{display:grid;grid-template-columns:1fr auto;gap:3px 12px;padding:14px;min-height:0;text-align:left}.quick-clear-category,.quick-clear-rarity{grid-row:1;margin:0;align-self:center}.quick-clear-rarity{justify-self:end}.quick-clear-reward .boss-banner-choice h3{grid-column:1/-1;font-size:21px;margin:8px 0}.quick-clear-reward .boss-banner-choice p{grid-column:1/-1;font-size:14px;margin-bottom:9px}.quick-clear-reward .boss-banner-choice button{grid-column:1/-1}.quick-clear-reward #bossBannerRewardHint{margin-bottom:14px}.phoenix-boss-hud{font-size:11px;margin:3px 0;padding:5px 9px}}
@media all{:where(html[data-game-motion="reduce"]) .quick-clear-reveal .quick-clear-seal,:where(html[data-game-motion="reduce"]) .quick-clear-reveal .boss-banner-choice,:where(html[data-game-motion="reduce"]) .quick-clear-reveal .boss-banner-choice::after{animation:none}}

.adventure-page .global-passive-grid .skill-source-tag{top:4px;left:4px;height:18px;box-sizing:border-box;display:flex;align-items:center;padding:0 4px;line-height:1}
.adventure-page .global-passive-grid .skill-button[data-passive="true"]::after{top:4px!important;right:4px!important;bottom:auto!important;display:grid!important;place-items:center;width:18px;min-width:18px;height:18px;padding:0;line-height:1}
@media(max-width:899px),(max-height:649px){.adventure-page .global-passive-grid .skill-source-tag{top:0;left:0;height:13px;padding:0 2px}.adventure-page .global-passive-grid .skill-button[data-passive="true"]::after{top:0!important;right:0!important;width:13px;min-width:13px;height:13px;font-size:8px}.adventure-page .global-passive-grid .skill-copy{text-align:center;max-width:48px}.adventure-page .global-passive-grid .skill-state{font-size:9px;line-height:11px}}

.boss-banner-choice[data-rarity="银"]{border-color:#7a8a87}.boss-banner-choice[data-rarity="银"] .quick-clear-rarity{color:#eaf0e8;background:#758580;border-color:#aebcb5}

/* Shared skill details: large art, readable title, and restrained foil pills. */
#skillInfo{box-sizing:border-box;width:min(540px,calc(100vw - 28px));padding:26px;border:1px solid #a68a5e;border-radius:8px;background:linear-gradient(145deg,#fff8e8,#efdfc1);box-shadow:0 18px 55px #122a2870,inset 0 0 0 4px #fff4dc}
.detail-hero{display:grid;grid-template-columns:128px minmax(0,1fr);align-items:center;gap:20px;padding:12px 32px 20px 0;border-bottom:1px solid #b69b6c;margin-bottom:18px;text-align:left}
.detail-hero>img,.detail-hero .technique-info-art{display:block;width:128px;height:128px;margin:0;object-fit:contain;filter:drop-shadow(0 5px 5px #5c3b2926)}
.detail-hero>div{min-width:0}.detail-eyebrow{display:block;margin:0 0 8px;color:#8b724f;font:700 11px/1.4 'LXGW WenKai Lite',serif;letter-spacing:.12em}
#skillInfo .detail-hero h2,#techniqueInfo .technique-info-card .detail-hero h2{margin:0 0 13px;font:800 clamp(23px,4vw,30px)/1.35 'LXGW WenKai Lite',serif;color:#2b4444;overflow-wrap:anywhere}
.detail-pills{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:0;min-width:0}.detail-pill{position:relative;isolation:isolate;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:25px;padding:4px 11px;border:1px solid #b6a183;border-radius:999px;color:#665943;background:#f8edda;font:700 12px/1.2 'LXGW WenKai Lite',serif;white-space:nowrap;letter-spacing:0}
.detail-pill-type{color:#365b56;background:#e4ece3;border-color:#93b0a2}.detail-pill-mode{color:#6b6684;background:#eee8f0;border-color:#b4a7bf}.detail-pill-price{color:#7e5434;background:#f0e0c4}
.detail-pill-rarity[data-rarity=银]{color:#465e60;border-color:#a4b7b4;background:linear-gradient(125deg,#f1f3ed,#cddbd7,#edf1e9)}
.detail-pill-rarity[data-rarity=金]{color:#754918;border-color:#b38938;background:linear-gradient(125deg,#f0ce72,#fff3c0 48%,#d9af52);box-shadow:0 1px 5px #ac773333}
.detail-pill-rarity[data-rarity=彩],.detail-pill-rarity[data-rarity=臻彩]{color:#493953;border-color:#ad829e;background:linear-gradient(110deg,#efd7dc,#f6e2b3,#cbe5d5,#d2d9f4,#edd4e8);background-size:220% 100%;animation:detail-iridescence 6s ease-in-out infinite;box-shadow:0 1px 6px #9374a733}
.detail-pill-rarity[data-rarity=臻彩]{border-color:#af853c;box-shadow:0 0 0 1px #f1d794,0 1px 8px #a074a844}
.detail-pill-rarity[data-rarity=金]::after,.detail-pill-rarity[data-rarity=彩]::after,.detail-pill-rarity[data-rarity=臻彩]::after{content:'';position:absolute;inset:-4px -50%;background:linear-gradient(110deg,transparent 43%,#fffefa99 49%,#ffffffba 52%,transparent 59%);transform:translateX(-100%);animation:detail-foil 4.8s ease-in-out infinite;pointer-events:none}
@keyframes detail-foil{0%,55%{transform:translateX(-100%)}85%,100%{transform:translateX(100%)}}@keyframes detail-iridescence{0%,100%{background-position:0 50%}50%{background-position:100% 50%}}
#skillInfo .detail-close,.technique-info-close{position:absolute;top:12px;right:12px;display:grid;place-items:center;flex:none;box-sizing:border-box;width:36px;height:36px;min-width:36px;min-height:36px;padding:0;border:1px solid #af976c;border-radius:50%;background:#f9efd9;color:#405954;box-shadow:none;font:24px/1 sans-serif}
#skillInfo #skillDescription{margin:0;font-size:15px;line-height:1.85;white-space:pre-line}#skillInfo #skillState{margin:18px 0 12px;padding:12px 14px;border-left:3px solid #b88d47;border-radius:0 4px 4px 0;background:#e9d8b966;color:#4e6256;font-size:13px;line-height:1.7}
#skillInfo #castSkill{min-height:44px;background:#315b54;color:#fff1d3;border:1px solid #284c46;border-radius:5px}
#techniqueInfo{box-sizing:border-box;width:min(540px,calc(100vw - 28px));max-height:calc(100dvh - 28px);overflow:auto}#techniqueInfo .technique-info-card{display:block;padding:26px;text-align:left;border:1px solid #a68a5e;border-radius:8px;box-shadow:none}#techniqueInfo .technique-info-card .detail-hero .technique-info-art{width:128px;height:128px}#techniqueInfo .technique-info-card .detail-hero #techniqueInfoMeta{margin:0}.technique-info-description{font-size:15px;line-height:1.85}.technique-info-tags{flex-wrap:wrap;margin:12px 0}#techniqueInfo .technique-info-card ul{font-size:13px;line-height:1.8}#techniqueInfo .technique-info-card>#acknowledgeTechniqueInfo{width:100%;min-height:44px;border-radius:5px;margin-top:12px}#techniqueInfo .technique-info-card .technique-info-lore{font-size:14px;line-height:1.8}
.scroll-info .scroll-info-heading{gap:12px}.scroll-info .detail-pill{letter-spacing:0}
@media(max-width:600px){#skillInfo,#techniqueInfo .technique-info-card{padding:22px 18px}.detail-hero{grid-template-columns:104px minmax(0,1fr);gap:14px;padding:18px 0 18px}.detail-hero>img,.detail-hero .technique-info-art,#techniqueInfo .technique-info-card .detail-hero .technique-info-art{width:104px;height:104px}#skillInfo .detail-hero h2,#techniqueInfo .technique-info-card .detail-hero h2{font-size:23px}.detail-eyebrow{font-size:10px}.detail-pills{gap:5px}.detail-pill{font-size:11px;padding:4px 9px}#skillInfo #skillDescription,.technique-info-description{font-size:14px;line-height:1.8}}
@media all{:where(html[data-game-motion="reduce"]) .detail-pill-rarity,:where(html[data-game-motion="reduce"]) .detail-pill-rarity::after{animation:none!important}}
.scroll-info{width:min(540px,calc(100vw - 28px));overflow:auto}.scroll-info .detail-hero{margin-top:8px}.scroll-info .detail-hero h2{margin:0;font-size:clamp(23px,4vw,30px);line-height:1.4}.scroll-info .detail-hero img{object-fit:contain}

/* v0.6.7 r4: folders cannot shrink below their title in a scrollable mobile panel. */
.adventure-page .pack-panel .pack-folder{flex:0 0 auto;padding:0}
.adventure-page .pack-panel .pack-folder>summary{display:block!important;min-height:0;padding:9px 29px 9px 9px}
.adventure-page .pack-panel .folder-title{display:grid;grid-template-columns:32px max-content minmax(0,1fr) auto;align-items:center;gap:8px;min-height:34px}
.adventure-page .pack-panel .folder-title>span{display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--folder-ink);border-radius:4px;background:#f4ead4;color:var(--folder-ink);font:800 15px/1 "LXGW WenKai Lite",serif}
.adventure-page .pack-panel .folder-title>b{font:800 14px/1.25 "LXGW WenKai Lite",serif;white-space:nowrap;color:#294148}
.adventure-page .pack-panel .folder-title>small{min-width:0;padding-left:7px;border-left:1px solid #bca68488;color:#745e42;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.adventure-page .pack-panel .folder-title>.pack-alert{position:static;min-width:20px;height:20px;padding:0 4px;font:700 11px/1 system-ui}
.adventure-page:has(#recruitment[open]) .pack-panel{display:none!important}
.result-quote{margin:12px auto 18px;padding:14px 18px;border-block:1px solid #aa875877;color:#5d3c2b;font:700 clamp(22px,4vw,34px)/1.55 "LXGW WenKai Lite",serif;max-width:28em;text-wrap:balance}
.result-quote[hidden]{display:none}
.spatial-art-hint{position:fixed;z-index:96;left:50%;transform:translateX(-50%);top:clamp(120px,20vh,210px);display:flex;align-items:center;gap:12px;width:min(440px,92vw);padding:10px 12px;border:1px solid #987c52;border-radius:8px;background:#f8ecd8f5;box-shadow:0 5px 20px #243b3f40;color:#304c53}
.spatial-art-hint[hidden]{display:none}.spatial-art-hint>div{display:grid;gap:5px;flex:1}.spatial-art-hint b{font-size:16px}.spatial-art-hint small{font-size:12px;line-height:1.5}.spatial-art-hint button{flex:0 0 auto;min-height:42px;padding:7px 12px;background:#345e57;color:#fff1d7;border-radius:5px}
[data-meme=true]{--meme-ink:#76589a}[data-meme=true].scroll-card{border:2px dashed var(--meme-ink)!important;background:linear-gradient(135deg,#eee0f0,#fcf3dc)!important}[data-meme=true].scroll-card::before{content:'整蛊卷';color:#76589a;font:800 11px/1.3 serif;justify-self:start;border:1px solid #76589a;padding:3px 7px;border-radius:10px}
.skill-button[data-meme=true]{outline:1px dashed #76589a;outline-offset:-2px}.skill-button[data-meme=true] .skill-picture{filter:drop-shadow(0 0 4px #aa80d050)}
.mode-entry>span{white-space:nowrap;font-size:12px}.mode-entry{min-width:94px}
.technique-info-lore .lore-source{display:block;width:fit-content;margin-top:10px;font-size:12px;line-height:1.5;color:#6c745d;text-decoration:underline;text-underline-offset:3px}
#skillInfo[data-meme="true"],#scrollInfo[data-meme="true"]{border-color:#655282}
#skillInfo[data-meme="true"] .detail-eyebrow::after,#scrollInfo[data-meme="true"] .detail-eyebrow::after{content:' · 天公错频';color:#665087}

/* v0.6.8: defeat quotation is the focal point; the cause remains readable beneath it. */
.adventure-page #result[data-adventure-defeat=true]{width:min(560px,92vw);max-width:560px}
.adventure-page #result[data-adventure-defeat=true] .result-card{padding:28px 30px 25px;text-align:left;border:2px solid #7c7968;box-shadow:0 14px 48px #101b2966;background-size:1300px;background-position:42% 28%}
.adventure-page #result[data-adventure-defeat=true] .result-card::before{inset:0;clip-path:none;background:linear-gradient(155deg,#fff8e3dc,#f3e5cace);opacity:1;animation:none}
.adventure-page #result[data-adventure-defeat=true] .result-eyebrow{color:#8d7657;font-size:11px;letter-spacing:.28em}
.adventure-page #result[data-adventure-defeat=true] .victory-emblem{position:absolute;right:25px;top:23px;width:48px;height:48px;margin:0;font-size:28px;opacity:.8}
.adventure-page #result[data-adventure-defeat=true] #resultTitle{margin:8px 60px 0 0;font-size:28px;letter-spacing:.15em}
.adventure-page #result[data-adventure-defeat=true] .result-quote{position:relative;margin:27px 0 22px;padding:24px 12px 22px;border-block:1px solid #a08b6677;text-align:center;color:#473c32;font:600 clamp(21px,2.4vw,29px)/1.75 'LXGW WenKai Lite','STKaiti',serif;letter-spacing:.045em;text-wrap:balance}
.adventure-page #result[data-adventure-defeat=true] .result-quote::before{content:'“';position:absolute;left:0;top:-12px;color:#a5493833;font:90px/1 Georgia,serif;pointer-events:none}
.adventure-page #result[data-adventure-defeat=true] #resultDetail{margin:0;text-align:center;color:#746752;font-size:13px;line-height:1.65;text-wrap:balance}
.adventure-page #result[data-adventure-defeat=true] #resultScore{display:flex;justify-content:center;flex-wrap:wrap;gap:7px;margin:16px 0 20px;color:#596258;font-size:12px;font-weight:400;letter-spacing:0}
.adventure-page #result[data-adventure-defeat=true] #resultScore span{padding:4px 7px;border:1px solid #b8a37b66;border-radius:3px;background:#ebdec366;white-space:nowrap}
.adventure-page #result[data-adventure-defeat=true] .result-actions{margin:0}
.adventure-page #result[data-adventure-defeat=true] .result-actions button{font-size:16px;letter-spacing:.05em;min-height:48px;box-shadow:0 3px 0 #6f3528}
@media(max-width:480px){
 .adventure-page #result[data-adventure-defeat=true] .result-card{padding:23px 18px 20px}
 .adventure-page #result[data-adventure-defeat=true] .victory-emblem{right:18px;top:20px;width:43px;height:43px;font-size:25px}
 .adventure-page #result[data-adventure-defeat=true] #resultTitle{font-size:25px}
 .adventure-page #result[data-adventure-defeat=true] .result-quote{margin:24px 0 19px;padding:20px 7px;font-size:21px;line-height:1.75}
 .adventure-page #result[data-adventure-defeat=true] #resultDetail{font-size:12px;letter-spacing:0}
 .adventure-page #result[data-adventure-defeat=true] #resultScore{gap:5px;font-size:11px;margin:14px 0 17px}
 .adventure-page #result[data-adventure-defeat=true] #resultScore span{padding:3px 5px}
}

.adventure-page #result[data-adventure-defeat=true] .result-quote span{display:block}
@media(max-width:360px){.adventure-page #result[data-adventure-defeat=true] .result-quote{font-size:18px;letter-spacing:0}}

.result-grain{display:flex;justify-content:center;align-items:center;gap:8px;flex-wrap:wrap;margin:12px auto;padding:12px;border-block:1px solid #ad8d5c55}
.result-grain[hidden]{display:none}.result-grain>small{flex-basis:100%;color:#786346;font-size:13px}
.result-grain>button{width:auto!important;min-height:42px!important;margin:0!important;padding:8px 16px!important;background:#f4e3bd!important;border:1px solid #ae8145!important;color:#74532b!important;font-size:14px!important;box-shadow:inset 0 0 0 2px #fff6dd!important}

/* White Tiger: desktop board first; physics coordinates remain identical. */
@media(min-width:900px) and (min-height:650px){
 .adventure-page .game{width:calc(100vw - 24px);max-width:1800px;grid-template-columns:clamp(185px,17vw,230px) minmax(0,1fr) clamp(205px,19vw,255px);column-gap:12px;padding:10px 14px;grid-template-rows:52px 66px minmax(0,1fr)}
 .adventure-page .life{width:100%;box-sizing:border-box}.adventure-page .turn-panel{padding:8px 12px}.adventure-page .board-wrap{padding:0;box-shadow:inset 0 0 0 1px #fff8e67d}.adventure-page .skill-bar.red{padding:10px 8px;gap:8px}.adventure-page .skill-bar.red .skill-button{min-height:75px;padding:7px 29px 7px 8px;gap:7px}.adventure-page .skill-bar.red .skill-picture{width:48px;height:48px;flex-basis:48px}.adventure-page .pack-panel{padding:10px 8px}
}
.shanhe-room.third-map-room>img{position:absolute;left:23%;top:12%;width:54%;height:54%;object-fit:contain;pointer-events:none}
.shanhe-mini-room.third-map-room>img{position:absolute;left:18%;top:18%;width:64%;height:64%;object-fit:contain;pointer-events:none}.third-map-room>b{background-image:none!important}.third-clue-journal{display:grid;gap:10px}.third-clue-journal article{display:grid;grid-template-columns:72px minmax(0,1fr);gap:12px;padding:12px;border:1px solid #b69764;background:#fff6e4}.third-clue-journal img{width:72px;height:72px;object-fit:contain}.third-clue-journal b{color:#963a2d}.third-clue-journal p{margin:5px 0;font-size:13px;line-height:1.6}

.combat-objective-hud .third-rule-detail{grid-column:1/-1;margin:6px 0 0;font-size:12px;line-height:1.55;font-style:normal;color:#604f38;max-width:440px;white-space:normal}.combat-objective-hud.is-collapsed .third-rule-detail{display:none}

.combat-objective-hud .third-rule-detail{display:block;max-width:250px;text-align:left}.combat-objective-hud.is-collapsed .third-rule-detail{display:none}

.third-archery-controls{position:absolute;inset:auto 10px 10px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 12px;background:#f8ecd6f5;border:1px solid #a98351;border-radius:8px;box-shadow:0 4px 12px #33271828;z-index:7}.third-archery-controls[hidden]{display:none}.third-archery-controls b{color:#953c2d}.third-archery-controls span{flex:1;min-width:140px;font-size:12px;line-height:1.5}.third-archery-controls button{padding:8px 12px;border:1px solid #ae8b50;border-radius:6px;background:#315a52;color:#fff0d1;font-size:12px}.third-archery-controls button[hidden]{display:none}

/* The sacrifice cut-in pauses the board; no separate battle surface. */
.lubu-cinematic{position:fixed;inset:0;z-index:11000;display:flex;align-items:center;justify-content:center;gap:2vw;padding:5vh 5vw;background:radial-gradient(ellipse at 32% 50%,#77382de8,#11171bf5 75%);color:#f7e5ba;overflow:hidden;animation:lubu-reveal .45s ease-out}
.lubu-cinematic>img{height:90vh;max-width:48vw;object-fit:contain;filter:drop-shadow(0 10px 22px #0008)}
.lubu-cinematic>div{max-width:560px;display:grid;gap:22px}.lubu-cinematic small{font-size:16px;letter-spacing:.15em;color:#dfb271}.lubu-cinematic strong{font-size:clamp(26px,3.3vw,54px);line-height:1.65;text-shadow:2px 3px 4px #000;letter-spacing:.08em}.lubu-cinematic span{color:#d7aa67;font-size:20px}.lubu-cinematic button{justify-self:start;background:#87372e;color:#fff0cf;border:1px solid #bb8d54;padding:12px 28px;border-radius:8px;font:inherit;cursor:pointer}
@keyframes lubu-reveal{from{opacity:0;transform:scale(1.04)}to{opacity:1;transform:scale(1)}}
@media(max-width:680px){.lubu-cinematic{flex-direction:column;padding:3vh 7vw;gap:12px}.lubu-cinematic>img{height:48vh;max-width:85vw}.lubu-cinematic>div{gap:12px}.lubu-cinematic strong{font-size:26px}.third-boss-hud summary{gap:8px}.third-boss-hud summary span{white-space:normal}}

/* 首领军令附在行动条下，不新增棋盘布局行。 */
.adventure-page .third-boss-hud{position:absolute;z-index:8;top:calc(100% + 5px);left:0;box-sizing:border-box;width:100%;max-width:100%;margin:0;padding:6px 10px;background:linear-gradient(110deg,#f7e7c9f5,#ead7b6f5);box-shadow:0 3px 8px #26343a26}
.adventure-page .third-boss-hud summary{font-size:11px;line-height:1.4}.adventure-page .third-boss-hud summary b{white-space:nowrap}.adventure-page .third-boss-hud p{font-size:12px;max-height:180px;overflow:auto}
@media(max-width:680px){.adventure-page .third-boss-hud{top:calc(100% + 3px);padding:4px 8px}.adventure-page .third-boss-hud summary{font-size:10px}.adventure-page .third-boss-hud summary span{white-space:nowrap}}

/* Six painted bust frames share a fixed camera; last frame holds through the exit. */
.faceoff-cinematic[data-hero="LU_BU"] .faceoff-portraits{inset:-30% 0 -24%}
.faceoff-cinematic[data-hero="LU_BU"] .portrait-frame.black{inset:auto;width:auto;height:100%;max-width:88cqw;object-fit:contain;object-position:center;transform:none;-webkit-mask-image:linear-gradient(to right,transparent,#000 7%,#000 94%,transparent),linear-gradient(to bottom,#000 0 87%,transparent 100%);mask-image:linear-gradient(to right,transparent,#000 7%,#000 94%,transparent),linear-gradient(to bottom,#000 0 87%,transparent 100%);-webkit-mask-composite:source-in;mask-composite:intersect}
.faceoff-cinematic[data-hero="LU_BU"].playing .portrait-frame.frame-1{animation:zhang-faceoff-frame-1 2.35s steps(1,end) both}
.faceoff-cinematic[data-hero="LU_BU"].playing .portrait-frame.frame-2{animation:zhang-faceoff-frame-2 2.35s steps(1,end) both}
.faceoff-cinematic[data-hero="LU_BU"].playing .portrait-frame.frame-3{animation:zhang-faceoff-frame-3 2.35s steps(1,end) both}
.faceoff-cinematic[data-hero="LU_BU"].playing .portrait-frame.frame-4{animation:zhang-faceoff-frame-4 2.35s steps(1,end) both}
.faceoff-cinematic[data-hero="LU_BU"].playing .portrait-frame.frame-5{animation:zhang-faceoff-frame-5 2.35s steps(1,end) both}
.faceoff-cinematic[data-hero="LU_BU"].playing .portrait-frame.frame-6{animation:zhang-faceoff-frame-6 2.35s steps(1,end) both}
@media all{:where(html[data-game-motion="reduce"]) .faceoff-cinematic[data-hero="LU_BU"].playing .portrait-frame{animation-duration:.7s}}

.adventure-page .third-boss-hud summary{min-height:20px;padding:0;border:0;background:none;box-shadow:none;white-space:nowrap}
@media(max-width:680px){.adventure-page .third-boss-hud summary{min-height:32px}}

/* Dialogue belongs to its piece; it cannot intercept aiming or cover modal UI. */
.battle-banter-layer{position:fixed;inset:0;z-index:25;pointer-events:none}
.battle-banter-layer[hidden]{display:none}
.battle-banter-bubble{position:absolute;display:grid;gap:5px;width:max-content;max-width:min(240px,calc(100vw - 32px));padding:10px 16px 12px;border:1px solid #997845;border-radius:15px 15px 15px 4px;background:linear-gradient(135deg,#fff9e9,#f1e3c3);color:#273b40;box-shadow:inset 0 0 0 3px #fff7e680,0 4px 12px #34250e30;animation:battle-banter-enter .24s ease-out both}
.battle-banter-bubble small{font-size:11px;line-height:1;letter-spacing:.12em;color:#954131}
.battle-banter-bubble strong{font:700 20px/1.4 "LXGW WenKai Lite","STKaiti",serif;overflow-wrap:anywhere}
.battle-banter-bubble::after{content:"";position:absolute;left:var(--tail-x,50%);bottom:-7px;width:12px;height:12px;background:#f1e3c3;border-right:1px solid #997845;border-bottom:1px solid #997845;transform:translateX(-50%) rotate(45deg)}
.battle-banter-bubble[data-below=true]::after{top:-7px;bottom:auto;background:#fff6e3;border-top:1px solid #997845;border-left:1px solid #997845;border-right:0;border-bottom:0}
.battle-banter-bubble[data-side=black] small{color:#365d63}
@keyframes battle-banter-enter{from{opacity:0;translate:0 5px}to{opacity:1;translate:0 0}}
@media(max-width:760px){.battle-banter-bubble{padding:8px 13px 10px;max-width:190px}.battle-banter-bubble strong{font-size:17px}}
@media(prefers-reduced-motion:reduce){.battle-banter-bubble{animation:none}}

/* v0.7.3 r3: one shared foldable row instead of independent floating HUDs. */
.adventure-page .battle-info-dock{position:fixed;z-index:126;--battle-info-left:max(8px,calc(var(--adventure-board-left,8px) + 56px));left:var(--battle-info-left);top:calc(var(--adventure-board-top,250px) + 6px);width:min(calc(var(--adventure-board-width,100vw) - 68px),calc(100vw - var(--battle-info-left) - 8px));display:flex;flex-wrap:wrap;align-items:flex-start;gap:6px;pointer-events:none}
.adventure-page .battle-info-dock>*{pointer-events:auto;box-sizing:border-box}
.adventure-page .battle-info-dock>[hidden]{display:none!important}
.adventure-page .battle-info-dock>#momentumHud{position:static;transform:none;flex:0 0 58px;width:58px;min-height:44px;display:grid;grid-template-columns:1fr auto;gap:1px 3px;margin:0;padding:4px 7px;border:1px solid #a5814f;border-radius:15px 4px;background:linear-gradient(145deg,#fcf2d8,#ead5a6);box-shadow:inset 0 0 0 2px #fff6dd,0 2px 5px #243e3926;color:#765534;text-align:center}
.adventure-page .battle-info-dock>#momentumHud span{display:block;grid-column:1/-1;font:700 9px/1 'STKaiti',serif;letter-spacing:.1em}
.adventure-page .battle-info-dock>#momentumHud b{font-size:20px;line-height:1;color:#983b31}
.adventure-page .battle-info-dock>#momentumHud i{font-size:13px;font-style:normal;line-height:1;color:#785730}
.adventure-page .battle-info-dock>#momentumHud[aria-expanded=true] i{transform:rotate(180deg)}
.adventure-page .battle-info-dock>#momentumWheel{position:static;order:20;transform:none;flex:1 0 100%;width:100%;height:auto;max-height:min(46dvh,390px);margin:0;padding:12px;overflow:auto;border-radius:7px;background:linear-gradient(140deg,#fff7e7,#ead8b8);box-shadow:0 5px 14px #20332f44}
.adventure-page .battle-info-dock>details{position:static;transform:none;flex:1 1 190px;min-width:0;width:auto;max-width:100%;margin:0;padding:5px 10px;border:1px solid #b58b4c;border-radius:5px 15px 5px 10px;box-shadow:inset 0 0 0 1px #fff4ce55,0 2px 5px #243e3926}
.adventure-page .battle-info-dock>details summary{min-height:32px;display:flex;align-items:center;gap:7px;cursor:pointer;list-style:none;background:none;border:0;padding:0;box-shadow:none;white-space:normal}
.adventure-page .battle-info-dock>details summary::-webkit-details-marker{display:none}
.adventure-page .battle-info-dock>details summary::after{content:'⌄';flex:none;margin-left:auto;font:700 16px/1 serif}
.adventure-page .battle-info-dock>details[open] summary::after{transform:rotate(180deg)}
.adventure-page .battle-info-dock>details summary>b{flex:none;font-size:12px;white-space:nowrap}
.adventure-page .battle-info-dock>details summary>span{min-width:0;font-size:10px;line-height:1.4;white-space:normal}
.adventure-page .battle-info-dock>details p{max-height:180px;overflow:auto;margin:8px 0 3px;padding-top:8px;border-top:1px solid #b58b4c55;font:12px/1.6 'LXGW WenKai Lite','STKaiti',serif;white-space:normal}
.adventure-page .battle-info-dock>.panyuan-hud{display:block;color:#f3dfad;background:linear-gradient(110deg,#193c37,#294a44)}
.adventure-page .battle-info-dock>.panyuan-hud::before{content:none}
.adventure-page .battle-info-dock>.panyuan-hud.is-abyssal{background:linear-gradient(110deg,#193b4b,#345a66);border-color:#83bac2}
.adventure-page .battle-info-dock>.panyuan-hud summary>span{display:grid;flex:1 1 auto;min-width:0;gap:2px}
.adventure-page .battle-info-dock>.panyuan-hud summary b{font-size:12px;white-space:normal}.adventure-page .battle-info-dock>.panyuan-hud summary small{font-size:8px}
.adventure-page .battle-info-dock>.panyuan-hud summary i{display:grid;place-items:center;flex:0 0 22px;width:22px;height:22px;border:2px double #d0a950;border-radius:50%;background:#244b42;color:#ffe6a1;font:900 12px/1 serif;font-style:normal}
.adventure-page .battle-info-dock>.panyuan-hud summary i.is-broken{opacity:.3;filter:grayscale(1);text-decoration:line-through}
.adventure-page .battle-info-dock>.panyuan-hud summary em{margin-left:auto;font-size:10px;font-style:normal;white-space:nowrap}
@media(max-width:420px){.adventure-page .battle-info-dock>details{flex-basis:155px;padding:4px 7px}.adventure-page .battle-info-dock>.panyuan-hud summary>span small{display:none}.adventure-page .battle-info-dock>.panyuan-hud summary i{flex-basis:18px;width:18px;height:18px;font-size:10px}.adventure-page .battle-info-dock>.panyuan-hud summary em{font-size:9px}.adventure-page .battle-info-dock>details summary{gap:4px}.adventure-page .battle-info-dock>details summary>b{font-size:11px}}

/* r3: objective and all briefings occupy the same flow, including expanded cards. */
.adventure-page .battle-info-dock{--battle-info-left:max(8px,calc(var(--adventure-board-left,8px) + 6px));width:min(calc(var(--adventure-board-width,100vw) - 16px),calc(100vw - var(--battle-info-left) - 8px))}
.adventure-page .battle-info-dock>#combatObjectiveHud{position:static;transform:none;order:0;flex:1 0 100%;width:100%;max-width:100%;margin:0;min-height:44px;max-height:min(42dvh,340px);overflow-y:auto;align-items:flex-start;border-radius:10px;box-sizing:border-box}
.adventure-page .battle-info-dock>#combatObjectiveHud.is-collapsed{flex:0 0 44px;width:44px;max-width:44px;order:-10;height:44px;overflow:hidden;align-items:center;border-radius:50%}
.adventure-page .battle-info-dock>#combatObjectiveHud:not(.is-collapsed){order:19;padding:10px}
.adventure-page .battle-info-dock>#combatObjectiveHud>span{flex:1;min-width:0;gap:5px;line-height:1.4}
.adventure-page .battle-info-dock>#combatObjectiveHud em{max-width:none;white-space:normal;overflow:visible;font-size:11px;line-height:1.5}
.adventure-page .battle-info-dock>#combatObjectiveHud .third-rule-detail{max-width:none;width:auto;margin:0;font-size:12px;line-height:1.55}
.adventure-page .battle-info-dock>#combatObjectiveHud b{white-space:normal}
.adventure-page .battle-info-dock>#combatObjectiveHud i{flex:none}
.item-lore{margin:14px 0 8px;padding:12px 14px;border-left:3px solid #a98145;border-radius:0 8px 8px 0;background:#b88b4320;color:#6a573d}
.item-lore>b{font-size:12px}.item-lore a{color:#796039;text-underline-offset:3px}.item-lore p{margin:6px 0 0!important;font-size:13px!important;line-height:1.7!important;color:#67543c!important}
.third-archery-active .skill-bar.red{visibility:hidden;pointer-events:none}
.third-archery-controls{inset:10px auto auto 10px;width:min(250px,40%);display:grid;gap:7px;box-sizing:border-box;max-height:30%;overflow-y:auto}
.third-archery-controls span{min-width:0}.third-archery-controls b{font-size:15px}.third-archery-controls button{min-height:44px}
@media(max-width:899px),(max-height:649px){.third-archery-controls{position:fixed;inset:auto 8px max(8px,env(safe-area-inset-bottom));width:auto;max-height:22dvh;grid-template-columns:1fr auto;gap:4px 8px;z-index:128;padding:9px 12px}.third-archery-controls span{grid-column:1/-1;grid-row:2;font-size:12px}.third-archery-controls b{font-size:13px}.third-archery-controls button{grid-column:2;grid-row:1;padding:6px 10px}.third-archery-controls button[hidden]{display:none}}

/* r7: selected-piece facts share the existing battle information dock. */
/* r8: grouped settings, bounded viewport, one scrolling surface. */
#settings{width:min(620px,calc(100vw - 24px));padding:18px 22px 24px;border:1px solid #a48a58;border-radius:18px;background:#faf3e4;box-shadow:0 18px 70px #0b1b2366,inset 0 0 0 5px #fff8e8;scroll-padding-top:128px;}
#settings .sheet-heading{position:sticky;top:-18px;z-index:2;background:#faf3e4;padding:14px 0 12px;margin-top:-14px;border-bottom:1px solid #b8a17455;}
#settings .sheet-heading button{width:42px;height:42px;border-radius:50%;border:1px solid #a48a58;background:#f6ead3;color:#2b4c4a;}
#settings .settings-tabs{position:sticky;top:52px;z-index:2;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;padding:10px 0;background:#faf3e4;margin-bottom:8px;}
#settings .settings-tabs button{min-width:0;min-height:42px;padding:6px 4px;border:1px solid transparent;box-shadow:none;background:transparent;color:#766247;font-size:14px;border-radius:8px;}
#settings .settings-tabs button[aria-pressed=true]{background:#2b5751;color:#fff0d0;border-color:#b9985b;box-shadow:inset 0 0 0 2px #426b61;}
#settings .settings-group[hidden]{display:none;}#settings .settings-group{display:grid;gap:14px;}#settings h3{font:700 18px 'LXGW WenKai Lite',serif;color:#284b48;margin:4px 0;}
#settings .settings-group>.visual-quality,#settings .settings-group>.controller-settings,#settings .settings-group>.combat-pace-setting{margin:0;padding:14px;border:1px solid #baa47b77;border-radius:10px;background:#fffaf033;}
#settings .visual-quality{display:grid;gap:9px;font-size:15px;font-weight:700;}#settings .visual-quality select{width:100%;min-width:0;min-height:44px;padding:8px;font-size:14px;border-radius:6px;}#settings .visual-quality small{font-size:12px;line-height:1.6;font-weight:400;}
#settings .submenu-button{margin:0;border-radius:10px;min-height:65px;box-shadow:none;background:#fffaf080;border-color:#baa47b77;}#settings .submenu-button span{min-width:0;}#settings .submenu-button small{line-height:1.6;font-size:12px;}#settings .submenu-button i{flex:0 0 auto;font-size:16px;border-radius:20px;background:#dfd6c0;color:#645740;padding:4px 10px;}#settings .submenu-button[aria-pressed=true] i{background:#2b5751;color:#fff0d0;}
#settings .settings-restart{padding:12px;border-top:1px solid #baa47b55;}#settings .settings-restart summary{color:#913d31;cursor:pointer;}#settings .settings-restart p{font-size:12px;}#settings .settings-page{padding-bottom:max(14px,env(safe-area-inset-bottom));}
#settings .audio-panel label{grid-template-columns:minmax(90px,1fr) minmax(80px,1.2fr) 40px;gap:8px;}#settings .audio-panel input{min-width:0;width:100%;}#settings .settings-group>details:not(.settings-restart){padding:12px;border:1px solid #baa47b77;border-radius:10px;}
@media(max-width:600px){#settings{padding:14px 14px 22px;max-height:calc(100dvh - 24px);}#settings .sheet-heading{top:-14px;}#settings .settings-tabs{top:56px;}#settings .settings-tabs button{font-size:13px;}#settings .settings-group{gap:10px;}#settings .audio-panel label{grid-template-columns:minmax(85px,1fr) minmax(60px,1fr) 36px;}#settings .audio-panel label small{font-size:10px;}}

#settings [hidden]{display:none!important;}

/* r9: shared binary switch, including the endgame toggle. */
#settings .settings-switch{touch-action:manipulation;}
#settings .settings-switch i{position:relative;display:block;flex:0 0 46px;width:46px;height:26px;min-width:46px;padding:0;border:1px solid #a99b80;border-radius:999px;background:#d6ceba;box-shadow:inset 0 1px 3px #59462e26;transition:background-color .18s ease,border-color .18s ease;}
#settings .settings-switch i::before{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fffaf0;box-shadow:0 1px 3px #2c352c50;transform:translateX(0);transition:transform .18s ease;}
#settings .settings-switch[aria-checked=true] i{background:#2b5751;border-color:#234940;}
#settings .settings-switch[aria-checked=true] i::before{transform:translateX(20px);}
#settings .settings-switch:focus-visible{outline:2px solid #257685;outline-offset:3px;}
#settings .settings-switch:disabled{opacity:.5;}
@media(prefers-reduced-motion:reduce){#settings .settings-switch i,#settings .settings-switch i::before{transition:none;}}

/* Compact reference in settings; no extra battle HUD. */
#settings .status-icon-guide{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 14px;padding-top:8px;}
#settings .status-icon-guide>div{display:flex;align-items:center;gap:8px;min-width:0;}
#settings .status-icon-guide img,#settings .status-icon-guide i{width:32px;height:32px;flex:0 0 32px;object-fit:contain;}
#settings .status-icon-guide i{display:grid;place-items:center;font-style:normal;color:#aa8642;font-size:27px;}
#settings .status-icon-guide span{display:grid;gap:3px;min-width:0;}
#settings .status-icon-guide b{font-size:14px;color:#284b48;}
#settings .status-icon-guide small{font-size:11px;line-height:1.5;color:#766247;}
@media(max-width:360px){#settings .status-icon-guide{grid-template-columns:1fr;}}

/* Opening preferences are two separate settings, with the shared card rhythm. */
#settings .opening-settings{display:grid;gap:14px;}
@media(max-width:600px){#settings .opening-settings{gap:10px;}}

/* Selection occupies only the content it needs; footer remains scrollable on phones. */
.reincarnation-sheet{width:min(960px,calc(100vw - 28px));max-height:calc(100dvh - 28px);margin:auto;padding:24px;overflow:auto;border:1px solid #a99262;border-radius:16px;background:#fbf4e6;color:#2e4543;box-shadow:0 24px 70px #172b2d88;}
.reincarnation-sheet header h2{margin:6px 0 10px;font-size:28px;}.reincarnation-sheet header p{font-size:14px;color:#786245;line-height:1.7;}
.reincarnation-groups{display:grid;gap:20px;}.reincarnation-groups h3{display:flex;justify-content:space-between;gap:12px;font-size:18px;}.reincarnation-groups h3 small{font-size:12px;color:#8e5d35;}
.reincarnation-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}.reincarnation-options button{display:flex;align-items:center;gap:10px;min-width:0;padding:12px;text-align:left;background:#fffaf0;border:1px solid #c0ac82;border-radius:10px;color:#294947;box-shadow:none;}
.reincarnation-options button[aria-pressed=true]{background:#e0ece3;border:2px solid #315c53;padding:11px;}.reincarnation-options img{width:54px;height:54px;object-fit:contain;flex-shrink:0;}.reincarnation-options span{flex:1;min-width:0;display:grid;gap:5px;}.reincarnation-options b{font-size:17px;}.reincarnation-options small{font-size:12px;line-height:1.6;color:#756448;}.reincarnation-options i{font-style:normal;font-size:22px;}
.reincarnation-sheet footer{display:grid;gap:12px;margin-top:24px;}.reincarnation-sheet footer small{font-size:12px;color:#796849;}.reincarnation-sheet #confirmReincarnation{background:linear-gradient(#a43b30,#7b2c27);color:#fff2d7;border:1px solid #9d5e40;border-radius:8px;min-height:48px;}.reincarnation-sheet #cancelReincarnation{background:transparent;color:#4d625b;border:1px solid #b5aa8c;border-radius:8px;min-height:42px;}
.reincarnation-sheet footer button{font-size:16px;font-weight:600;line-height:1.4;padding:10px 16px;}
@media(max-width:600px){.reincarnation-sheet{padding:18px 14px 24px;}.reincarnation-options{grid-template-columns:minmax(0,1fr);}.reincarnation-options small{font-size:12px;}.reincarnation-groups h3{align-items:baseline;}}

/* Diao Chan: graceful six-frame sleeve cut-in; same board bounds and timing. */
.faceoff-cinematic[data-hero="DIAO_CHAN"] .faceoff-portraits{inset:-18% 0 -15%}
.faceoff-cinematic[data-hero="DIAO_CHAN"] .portrait-frame.black{inset:auto;width:auto;height:100%;max-width:90cqw;object-fit:contain;object-position:center;transform:none;-webkit-mask-image:linear-gradient(to bottom,#000 0 85%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0 85%,transparent 100%)}
.faceoff-cinematic[data-hero="DIAO_CHAN"].playing .portrait-frame.frame-1{animation:zhang-faceoff-frame-1 2.35s steps(1,end) both}
.faceoff-cinematic[data-hero="DIAO_CHAN"].playing .portrait-frame.frame-2{animation:zhang-faceoff-frame-2 2.35s steps(1,end) both}
.faceoff-cinematic[data-hero="DIAO_CHAN"].playing .portrait-frame.frame-3{animation:zhang-faceoff-frame-3 2.35s steps(1,end) both}
.faceoff-cinematic[data-hero="DIAO_CHAN"].playing .portrait-frame.frame-4{animation:zhang-faceoff-frame-4 2.35s steps(1,end) both}
.faceoff-cinematic[data-hero="DIAO_CHAN"].playing .portrait-frame.frame-5{animation:zhang-faceoff-frame-5 2.35s steps(1,end) both}
.faceoff-cinematic[data-hero="DIAO_CHAN"].playing .portrait-frame.frame-6{animation:zhang-faceoff-frame-6 2.35s steps(1,end) both}
:where(html[data-game-motion="reduce"]) .faceoff-cinematic[data-hero="DIAO_CHAN"].playing .portrait-frame{animation-duration:.7s}
