/* 魅魔之战(类名一律 rs- 前缀: 站点模板有 .hp / .hero 之类, 撞名会把游戏元素藏掉)。
   画面: 最底下一张整舞台的 WebGL 画布(rescue-3d.js: 3D 大殿 + 宝石方块), 上面是 DOM 的 Boss / 猎手 / 按钮; 棋盘、暂存、下一块的 DOM 框是透明的, 只给 3D 量位置。
   字用衬线体。主色 --rs-acc / 金线 --rs-gold 跟着楼层换(rescue.js setRoom) */
.rs-frame{position:relative;width:min(100%,calc((100vh - 100px)*16/9));aspect-ratio:16/9;margin:0 auto;border-radius:18px;overflow:hidden;background:#07060a}
html.game-full,html.game-full body{overflow:hidden}
html.game-full .rs-frame{position:fixed;inset:0;z-index:50;width:100vw;height:100vh;height:100dvh;aspect-ratio:auto;border-radius:0}
html.game-full .chat-fab{display:none}
.rs-stage{--rs-acc:#9fb7e8;--rs-gold:#d9b56a;--rs-ink:#f3e9d6;--rs-dim:#b9ad98;--rs-cell:30px;position:relative;height:100%;overflow:hidden;color:var(--rs-ink);background:#07060a;color-scheme:dark;
  font-family:"Noto Serif SC","Source Han Serif SC","Songti SC","STSong",Georgia,serif;-webkit-user-select:none;user-select:none}
.rs-stage *{box-sizing:border-box}
.rs-stage button{font:inherit;color:inherit;cursor:pointer}
.rs-stage a{color:var(--rs-gold);text-decoration:none}
.rs-stage small{font-size:11px;letter-spacing:.18em;color:var(--rs-dim)}
.rs-stage h2,.rs-stage h3{margin:0;font-weight:600;letter-spacing:.12em}
.rs-room{position:absolute;inset:0;z-index:0}
.rs-room canvas{display:block;width:100%;height:100%}

/* ---------- 布局 ---------- */
.rs-shell{position:relative;z-index:1;display:grid;height:100%;grid-template-columns:62px minmax(0,1.05fr) auto minmax(0,.85fr) 62px;grid-template-rows:58px minmax(0,1fr);
  grid-template-areas:"top top top top top" "bbar boss center hunter hbar"}
.rs-top{grid-area:top;display:flex;align-items:center;justify-content:space-between;padding:0 22px;background:linear-gradient(#000000b0,transparent)}
.rs-title{text-align:center;line-height:1.25}.rs-title h2{font-size:22px;color:#f7e2b0}.rs-title span{display:block;font-size:12px;color:var(--rs-acc);letter-spacing:.14em}
.rs-top-btns{display:flex;gap:4px}.rs-top-btns button{border:0;background:none;padding:8px 10px;color:#efd7ae;display:inline-flex;align-items:center}.rs-top-btns button:hover{color:#fff}
.rs-top a{font-size:14px}

/* 竖着的能量柱(Boss 在左边, 猎手在右边) */
.rs-vbar{display:flex;flex-direction:column;align-items:center;gap:8px;padding:18px 0 22px}
.rs-bossbar{grid-area:bbar}.rs-hpbar{grid-area:hbar}
.rs-vbar-track{position:relative;flex:1;width:18px;border:1px solid var(--rs-gold);border-radius:10px;background:#0009;overflow:hidden;box-shadow:inset 0 0 0 3px #000a}
.rs-vbar-track span{--v:1;position:absolute;left:3px;right:3px;bottom:3px;height:calc((100% - 6px)*var(--v));border-radius:6px;transition:height .45s cubic-bezier(.2,.8,.2,1)}
.rs-bossbar .rs-vbar-track span{background:linear-gradient(#ffd27a,#c2273d 35%,#5a0b1e)}
.rs-hpbar .rs-vbar-track span{background:linear-gradient(#d9fff2,#3cb8a4 40%,#0d4d4b)}
.rs-vbar b{font:600 13px/1 Georgia,serif;color:#fff}
.rs-vbar.is-hit .rs-vbar-track{animation:rs-barhit .5s}
@keyframes rs-barhit{0%{box-shadow:inset 0 0 0 3px #000a,0 0 0 #f33}30%{box-shadow:inset 0 0 0 3px #000a,0 0 22px #ff3b4f;border-color:#ff5a6a}}

/* Boss */
.rs-boss{grid-area:boss;position:relative;display:flex;flex-direction:column;min-width:0;padding:14px 4px 10px 8px}
.rs-boss-head{position:relative;z-index:2}.rs-boss-head h3{font-size:24px;color:#f7e2b0}.rs-boss-head small{color:var(--rs-acc)}
.rs-boss-stage{position:relative;z-index:3;flex:1;min-height:0;pointer-events:none}
.rs-boss-stage canvas,.rs-hall-stage canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.rs-boss.is-hit .rs-boss-stage{animation:rs-bosshit .45s}
@keyframes rs-bosshit{0%{filter:none}20%{filter:brightness(1.6) sepia(1) saturate(6) hue-rotate(-30deg)}100%{filter:none}}
.rs-boss.is-cast .rs-boss-stage{animation:rs-cast .7s}
@keyframes rs-cast{30%{filter:drop-shadow(0 0 22px var(--rs-acc)) brightness(1.15)}}
.rs-intent{position:relative;z-index:2;display:flex;flex-wrap:wrap;gap:6px;align-items:center;justify-content:center;padding:8px 10px;border-top:1px solid #ffffff1f;font-size:14px;color:var(--rs-dim)}
.rs-intent b{font:700 22px/1 Georgia,serif;color:#ffcf7a;margin:0 2px}
.rs-intent i{font-style:normal;font-size:12px;padding:2px 8px;border:1px solid var(--rs-acc);border-radius:20px;color:var(--rs-acc)}
.rs-say{position:absolute;z-index:4;left:12%;top:16%;max-width:76%;padding:10px 14px;background:#0d0a10e6;border:1px solid var(--rs-gold);border-radius:4px 14px 14px 14px;font-size:15px;line-height:1.5;opacity:0;pointer-events:none}
.rs-say.is-on{animation:rs-say 3.2s forwards}
@keyframes rs-say{0%{opacity:0;transform:translateY(6px)}8%,82%{opacity:1;transform:none}100%{opacity:0}}
.rs-slash{position:absolute;z-index:3;inset:12% 6% 18%;pointer-events:none;opacity:0}
.rs-slash svg{width:100%;height:100%}.rs-slash path{fill:#fff6dc;filter:drop-shadow(0 0 8px #ffd27a)}
.rs-slash.is-on{animation:rs-slash .38s ease-out}.rs-slash.is-big{animation:rs-slash .55s ease-out}.rs-slash.is-big path{fill:#ffe2b0;filter:drop-shadow(0 0 14px #ff5a3a)}
@keyframes rs-slash{0%{opacity:0;clip-path:inset(0 100% 0 0)}25%{opacity:1}70%{opacity:1;clip-path:inset(0 0 0 0)}100%{opacity:0;clip-path:inset(0 0 0 0)}}

/* 中间: 彩窗 */
.rs-center{grid-area:center;position:relative;display:grid;grid-template-columns:auto auto auto;grid-template-rows:minmax(0,1fr) auto;column-gap:12px;padding:6px 6px 8px;touch-action:none}
.rs-window{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;min-height:0;min-width:calc(var(--rs-cell)*12 + 24px)}
.rs-arch{width:calc(var(--rs-cell)*12 + 24px);height:calc(var(--rs-cell)*1.6)}
.rs-glass{position:relative;padding:calc(var(--rs-cell)*.36)}
.rs-board{display:block}
.rs-tip{margin:8px 0 0;font-size:12px;color:var(--rs-dim);letter-spacing:.06em;text-align:center}
.rs-side{display:flex;flex-direction:column;gap:10px;padding-top:calc(var(--rs-cell)*1.6 + 12px);width:112px}
.rs-box{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 8px;border:1px solid #ffffff26;border-radius:4px;background:#0a090cb8;text-align:center}
.rs-mini{width:100%;aspect-ratio:5/4}.rs-mini-3{aspect-ratio:5/12}
#rs-hold-box,#rs-next-box{background:transparent;border-color:#e8c16755}
button.rs-box:hover{border-color:var(--rs-gold)}
.rs-stats b{font:600 20px/1 Georgia,serif;color:#fff;margin-bottom:4px}
#rs-next-box{position:relative}
.rs-fog{position:absolute;inset:26px 6px 6px;display:none;place-items:center;background:repeating-linear-gradient(135deg,#1a1520,#1a1520 6px,#100c14 6px,#100c14 12px);color:var(--rs-acc);font-size:13px;letter-spacing:.3em}
#rs-next-box.is-blind .rs-fog{display:grid}
/* 操作按钮(10-22 用户: 鼠标瞄准不顺手, 一直显示按钮) */
.rs-pad{grid-column:1/-1;display:flex;justify-content:center;gap:8px;padding-top:8px}
.rs-pad button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:64px;height:58px;padding:0 10px;border:1px solid #e8c16788;border-radius:12px;
  background:linear-gradient(#2a2232,#120e17);box-shadow:inset 0 1px 0 #ffffff26,inset 0 -3px 0 #00000080,0 4px 12px #0008;color:#f6e6c4;font-size:12px;letter-spacing:.12em;touch-action:none;transition:transform .06s,filter .06s}
.rs-pad svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.rs-pad button:hover{filter:brightness(1.2)}
.rs-pad button.is-down{transform:translateY(2px) scale(.97);box-shadow:inset 0 1px 0 #ffffff1a,inset 0 2px 6px #000a;filter:brightness(1.35)}
.rs-pad .rs-pad-sm{min-width:54px;opacity:.85}
.rs-pad .rs-pad-turn{position:relative;min-width:104px;height:66px;margin-top:-8px;border:2px solid #bfe9ff;border-radius:16px;font-size:14px;font-weight:700;color:#fff;
  background:radial-gradient(circle at 50% 30%,#6fc8ff,#2a5fd6 60%,#1a2c78);box-shadow:inset 0 1px 0 #ffffff80,inset 0 -4px 0 #0b1a4a,0 0 18px #4fb4ffaa,0 4px 14px #000a;text-shadow:0 1px 2px #0008;animation:rs-turn-glow 2.2s ease-in-out infinite}
.rs-pad .rs-pad-turn svg{width:30px;height:30px;stroke-width:2.6}
@keyframes rs-turn-glow{50%{box-shadow:inset 0 1px 0 #ffffff80,inset 0 -4px 0 #0b1a4a,0 0 28px #7fd0ffdd,0 4px 14px #000a}}
.rs-pad .rs-pad-drop{min-width:78px;background:linear-gradient(#f3d58f,#b8893f);border-color:#ffe6a8;color:#140f08;font-weight:600}
.rs-pad button:focus-visible{outline:2px solid #fff;outline-offset:2px}
.rs-pops{position:absolute;inset:0;pointer-events:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}
.rs-pop{font:700 18px/1.2 Georgia,"Noto Serif SC",serif;color:#fff3d6;text-shadow:0 2px 0 #000,0 0 14px #000;animation:rs-pop 1.4s forwards;white-space:nowrap}
.rs-pop-big{font-size:30px}.rs-pop-line{font-size:24px;color:#ffd27a}.rs-pop-combo{color:#ffb37a}.rs-pop-skill{color:#bfe9ff}.rs-pop-item{color:#ffe2a0;font-size:20px}
.rs-pop-warn{color:#ff9aa4;font-size:16px}.rs-pop-hurt{color:#ff5a6a}.rs-pop-heal{color:#8ff0c8}
@keyframes rs-pop{0%{opacity:0;transform:translateY(10px) scale(.9)}12%{opacity:1;transform:none}75%{opacity:1}100%{opacity:0;transform:translateY(-26px)}}
.rs-boss-pops,.rs-hunter-pops,.rs-hall-pops{position:absolute;z-index:4;left:0;right:0;top:34%;display:flex;flex-direction:column;align-items:center;pointer-events:none}

/* 猎手 */
.rs-hunter{grid-area:hunter;position:relative;display:flex;flex-direction:column;min-width:0;padding:14px 8px 10px 4px}
.rs-hunter-head{text-align:right}.rs-hunter-head h3{font-size:20px;color:#e9e2d4}
.rs-hunter-fig{position:relative;flex:1;min-height:0;display:flex;align-items:flex-end;justify-content:center}
.rs-hunter-svg{height:92%;max-width:100%;overflow:visible}
.rs-h-body{fill:#060509;transform-origin:150px 590px;animation:rs-breathe 4s ease-in-out infinite}
.rs-h-scarf{transform-origin:182px 180px;animation:rs-scarf 3.2s ease-in-out infinite}
.rs-h-blade{fill:#cfd8e6}
@keyframes rs-breathe{50%{transform:scaleY(1.012)}}
@keyframes rs-scarf{50%{transform:rotate(-5deg)}}
.rs-hunter.is-attack .rs-hunter-svg{animation:rs-lunge .4s ease-out}
@keyframes rs-lunge{30%{transform:translateX(-34px) skewX(-6deg)}}
.rs-hunter.is-hurt .rs-hunter-svg{animation:rs-hurt .5s}
@keyframes rs-hurt{20%{transform:translateX(16px) rotate(3deg);filter:drop-shadow(0 0 10px #ff2a3d)}}
.rs-hunter.is-heal .rs-hunter-svg{animation:rs-heal 1s}
@keyframes rs-heal{30%{filter:drop-shadow(0 0 18px #6ff2c0)}}
.rs-hunter.is-ward .rs-hunter-svg{animation:rs-ward 1s}
@keyframes rs-ward{30%{filter:drop-shadow(0 0 18px #9fd0ff)}}
.rs-shield{position:absolute;right:16px;top:64px;padding:3px 10px;border:1px solid #9fd0ff;border-radius:20px;color:#bfe4ff;font-size:13px}
.rs-loot-box{align-items:stretch;text-align:left;max-height:34%;overflow:auto}
.rs-loot-box.is-got{animation:rs-got .7s}
@keyframes rs-got{30%{border-color:#ffd27a;box-shadow:0 0 18px #ffd27a66}}
.rs-loot{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:13px}
.rs-loot li{display:flex;align-items:center;gap:6px}.rs-loot .rs-empty{color:var(--rs-dim);font-size:12px;line-height:1.5}
.rs-ico{width:20px;height:20px;flex:none;fill:none;stroke:var(--rs-gold);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

/* 震屏 / 红晕 */
.rs-stage.is-shake .rs-shell{animation:rs-shake .35s}
.rs-stage.is-quake .rs-shell{animation:rs-shake .6s 2}
@keyframes rs-shake{20%{transform:translate(-6px,3px)}40%{transform:translate(5px,-4px)}60%{transform:translate(-4px,2px)}80%{transform:translate(3px,-1px)}}
.rs-vignette{position:absolute;inset:0;z-index:5;pointer-events:none;opacity:0;background:radial-gradient(ellipse at center,transparent 45%,#c8102e88 100%)}
.rs-vignette.is-on{animation:rs-vig .7s}
@keyframes rs-vig{15%{opacity:1}100%{opacity:0}}

@media (prefers-reduced-motion:reduce){.rs-stage *{animation-duration:.01ms!important;animation-iteration-count:1!important}}

/* ---------- 覆盖层 ---------- */
.rs-layer{position:absolute;inset:58px 0 0;z-index:10;display:flex;align-items:center;justify-content:center;background:#07060ae8}
.rs-layer[hidden]{display:none}
/* 全游戏只有这一种按钮(10-22 第六轮): 两头尖的金边长牌; 主按钮暗红底亮金字, 次按钮深底金字。选关面板 / 准备界面 / 结算 / 解缚殿 / 终幕都用它 */
.rs-btn{--cut:12px;position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:120px;padding:9px calc(var(--cut) + 14px);border:0;
  background:linear-gradient(135deg,#f6dc9a,#9a6f2e 55%,#e9c77e);clip-path:polygon(var(--cut) 0,calc(100% - var(--cut)) 0,100% 50%,calc(100% - var(--cut)) 100%,var(--cut) 100%,0 50%);
  color:#f3e2bf;font-size:14px;letter-spacing:.2em;white-space:nowrap;transition:filter .15s,transform .15s}
.rs-btn::before{content:"";position:absolute;inset:1.5px;z-index:-1;clip-path:inherit;background:linear-gradient(#211a24,#0c0a0f)}
.rs-btn b{font-weight:600}
.rs-btn small{font-size:11px!important;letter-spacing:.06em!important;color:inherit!important;opacity:.75}
.rs-btn small:empty{display:none}
.rs-btn:hover:not(:disabled){filter:brightness(1.15) drop-shadow(0 0 10px #ffd27a66);transform:translateY(-1px)}
.rs-btn:active:not(:disabled){transform:translateY(1px)}
.rs-btn:focus-visible{outline:2px solid #fff;outline-offset:3px}
.rs-btn:disabled{filter:grayscale(1) brightness(.6);cursor:not-allowed}
.rs-btn[hidden]{display:none}
.rs-stage .rs-btn{color:#f3e2bf}
.rs-stage .rs-btn-gold{color:#fff4d6;text-shadow:0 0 8px #ffb84d,0 1px 2px #000}.rs-btn-gold::before{background:linear-gradient(#a32a3c,#5a0f1e 60%,#3a0814)}
.rs-btn-lg{--cut:16px;min-width:200px;padding:13px calc(var(--cut) + 20px);font-size:18px}
.rs-btn.is-busy{opacity:.6;pointer-events:none}
.rs-start{animation:rs-cta-glow 2.4s ease-in-out infinite}
@keyframes rs-cta-glow{50%{filter:drop-shadow(0 0 14px #ffd27a99)}}

/* 换场景的黑场(rescue.js scene) */
.rs-curtain{position:absolute;inset:0;z-index:45;background:#000;opacity:0;pointer-events:none;transition:opacity .32s ease}
.rs-curtain.is-on{opacity:1;pointer-events:auto}

/* 战斗界面(Boss / 棋盘 / 猎手)只在一关里(准备 / 战斗 / 结算)出现; 选关、解缚殿背后只有大殿, 不叠着一局棋盘 */
.rs-stage:is([data-mode=loading],[data-mode=select],[data-mode=hall],[data-mode=finale]) :is(.rs-bossbar,.rs-boss,.rs-center,.rs-hunter,.rs-hpbar){visibility:hidden}

/* 游戏名(加载界面 + 选关页共用): 衬线大字, 金色渐变 + 辉光, 两边各一道细金线 */
.rs-logo{display:flex;align-items:center;justify-content:center;gap:.5em;margin:0;font:700 clamp(34px,4.6vw,64px)/1.1 "Noto Serif SC","Songti SC",Georgia,serif;letter-spacing:.22em;margin-right:-.22em;
  background:linear-gradient(180deg,#fff6d8 0%,#f2cf7c 45%,#b7802f 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 18px #ffbf5a55) drop-shadow(0 3px 0 #2a1a08)}
.rs-logo::before,.rs-logo::after{content:"";width:clamp(30px,6vw,90px);height:1px;background:linear-gradient(90deg,transparent,#e8c167)}
.rs-logo::after{transform:scaleX(-1)}

/* 加载界面 */
.rs-loading{inset:0;z-index:20;text-align:center;background:radial-gradient(ellipse at 50% 40%,#1c1730,#06050a 70%);transition:opacity .6s ease}
.rs-loading.is-out{opacity:0;pointer-events:none}
.rs-loading-in{display:flex;flex-direction:column;align-items:center;gap:12px;width:min(520px,86%)}
.rs-loading small{letter-spacing:.5em}
.rs-load-bar{position:relative;width:100%;height:4px;border-radius:2px;background:#ffffff14;overflow:hidden;margin-top:14px}
.rs-load-bar i{position:absolute;inset:0 auto 0 0;width:40%;border-radius:2px;background:linear-gradient(90deg,transparent,#f2cf7c,#fff3cf);box-shadow:0 0 12px #f2cf7c;animation:rs-load 1.4s ease-in-out infinite}
@keyframes rs-load{0%{transform:translateX(-100%)}100%{transform:translateX(260%)}}
#rs-loading-txt{margin:0;color:#e9dcc2;letter-spacing:.2em;font-size:14px}
.rs-load-tip{margin:0;min-height:1.6em;color:var(--rs-dim);font-size:13px;animation:rs-tip 2.6s ease-in-out infinite}
@keyframes rs-tip{0%,100%{opacity:0}15%,85%{opacity:1}}

/* 顶栏随页面换: 中间标题和「选关」只在一关里有; 选关页 / 解缚殿各有自己的入口, 顶栏不重复放「解缚殿」 */
.rs-stage:is([data-mode=select],[data-mode=loading],[data-mode=hall]) :is(.rs-title,#rs-tower-btn,#rs-hall-btn){display:none}
.rs-stage:is([data-mode=select],[data-mode=loading],[data-mode=hall]) .rs-top{justify-content:space-between}
.rs-top-btns .rs-top-hall{gap:5px;margin-right:6px;padding:6px 14px;border:1px solid #ffd27a88;border-radius:16px;background:linear-gradient(#3a2a12cc,#1a120acc);color:#ffe2a0;letter-spacing:.12em}
.rs-top-btns .rs-top-hall:hover{border-color:#ffd27a;box-shadow:0 0 12px #ffd27a55;color:#fff}
.rs-top-btns .rs-top-hall[hidden]{display:none}
/* 结束游戏: 只在战斗中有 */
.rs-stage:not([data-mode=play]) #rs-end-btn{display:none}
.rs-top-btns .rs-top-end{margin-right:6px;padding:6px 14px;border:1px solid #ff8a9a88;border-radius:16px;background:linear-gradient(#5a1420cc,#2a0a10cc);color:#ffd0d6;letter-spacing:.12em}
.rs-top-btns .rs-top-end:hover{border-color:#ff8a9a;box-shadow:0 0 12px #ff5a7055;color:#fff}

/* 序章: 这个浏览器第一次来, 加载完先看故事(一行行从模糊到清晰), 点空白字全出来, 点「踏入星殿」进选关 */
.rs-prologue{inset:0;z-index:18;text-align:center;background:radial-gradient(ellipse at 50% 45%,#1a1528f0,#050408 75%)}
.rs-prologue-in{display:flex;flex-direction:column;align-items:center;gap:14px;max-width:760px;padding:20px;text-shadow:0 2px 10px #000}
.rs-eyebrow{letter-spacing:.5em!important;color:var(--rs-acc)!important}
.rs-story{margin:6px 0 18px;font-size:clamp(14px,1.25vw,18px);line-height:2.1;color:#e9dfcc;letter-spacing:.08em}
.rs-story p{margin:0}
.rs-story b{color:#ffd98a;font-weight:600;text-shadow:0 0 10px #ffb03a88}
.rs-story-end{margin-top:8px!important;color:#ffe2a0;font-style:italic;letter-spacing:.2em}
.rs-prologue .rs-story p,.rs-prologue .rs-btn{opacity:0;animation:rs-reveal 1.2s cubic-bezier(.2,.7,.2,1) forwards;animation-delay:calc(.4s + var(--i) * .8s)}
.rs-prologue.is-done .rs-story p,.rs-prologue.is-done .rs-btn{animation:none;opacity:1}
@keyframes rs-reveal{from{opacity:0;filter:blur(8px);transform:translateY(8px)}to{opacity:1;filter:none;transform:none}}

/* 选关: 上面游戏名, 中间七位女官站在一条星路上(只是可点的立绘, 不放按钮), 下面一块面板 = 选中那位的情况 + 按钮 */
.rs-tower{background:linear-gradient(#07060a66,#07060a22 30%,#07060a99 70%,#07060af0)}
.rs-tower-in{display:flex;flex-direction:column;align-items:center;width:100%;height:100%;padding:0 8px 34px;overflow:hidden auto}
.rs-tower-head{display:flex;flex-direction:column;align-items:center;gap:2px;text-shadow:0 2px 10px #000}
.rs-tower .rs-logo{font-size:clamp(28px,3.4vw,48px)}
.rs-tower.is-intro .rs-floor{opacity:0;animation:rs-rise .9s cubic-bezier(.2,.8,.2,1) forwards;animation-delay:calc(.25s + var(--d) * .1s)}
.rs-tower.is-intro .rs-pick{opacity:0;animation:rs-rise .8s cubic-bezier(.2,.8,.2,1) 1.1s forwards}
@keyframes rs-rise{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@keyframes rs-beam{50%{opacity:.5}}
.rs-keys{display:flex;gap:6px}.rs-keys i{display:grid;place-items:center;width:26px;height:26px;border:1px solid #ffffff2a;border-radius:50%;opacity:.4}
.rs-keys i.is-on{opacity:1;border-color:var(--rs-gold);box-shadow:0 0 12px #e8c16788;background:#3a2a1288}.rs-keys .rs-ico{width:14px;height:14px}

.rs-floors{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));width:100%;flex:1;min-height:320px;max-height:690px}
.rs-floor{position:relative;height:100%;padding:0 4px;text-align:center;text-shadow:0 2px 8px #000}
.rs-floor-pick{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px;width:100%;height:100%;padding:0;border:0;background:none;border-radius:8px}
.rs-floor-pick:focus-visible{outline:2px solid var(--rs-acc);outline-offset:2px}
.rs-floor-fig{position:relative;flex:1;width:100%;min-height:0;display:flex;align-items:flex-end;justify-content:center}
.rs-floor-fig::after{content:"";position:absolute;left:12%;right:12%;bottom:-6px;height:18px;border-radius:50%;background:radial-gradient(closest-side,color-mix(in srgb,var(--rs-acc) 60%,transparent),transparent);opacity:.5;transition:opacity .25s}
.rs-floor-fig img{position:relative;z-index:1;display:block;width:100%;height:100%;object-fit:contain;object-position:bottom;scale:1.06;transform-origin:bottom;filter:drop-shadow(0 14px 16px #0009) brightness(.72);transition:transform .25s,filter .25s}
.rs-floor:nth-child(4) .rs-floor-fig img,.rs-floor:nth-child(6) .rs-floor-fig img{scale:1.36;transform-origin:bottom}
.rs-floor.is-hover:not(.is-sel) .rs-floor-fig img{transform:scale(1.03);filter:drop-shadow(0 0 10px var(--rs-acc)) drop-shadow(0 16px 16px #0009) brightness(.95)}
.rs-floor.is-hover.is-locked .rs-floor-fig img{filter:brightness(0) drop-shadow(0 0 4px var(--rs-acc)) drop-shadow(0 0 10px #000);opacity:1}
.rs-floor.is-hover:not(.is-sel) .rs-floor-medal{transform:scale(1.08)}
/* 面板在预览(鼠标停着、还没点): 按钮淡一点, 提示点了才选中 */
.rs-pick.is-preview .rs-pick-btns{opacity:.45;pointer-events:none}
.rs-floor.is-sel .rs-floor-fig img{transform:scale(1.06);filter:drop-shadow(0 0 18px var(--rs-acc)) drop-shadow(0 16px 16px #0009)}
.rs-floor.is-sel .rs-floor-fig::after{opacity:1}
.rs-floor.is-locked .rs-floor-fig img{filter:brightness(0) drop-shadow(0 0 1px var(--rs-acc)) drop-shadow(0 0 10px #000);opacity:.8}
.rs-floor.is-next .rs-floor-fig::before{content:"";position:absolute;inset:-10% 18% 0;background:linear-gradient(#fff3cf55,transparent 80%);clip-path:polygon(40% 0,60% 0,100% 100%,0 100%);animation:rs-beam 3s ease-in-out infinite}
.rs-floor-q{position:absolute;z-index:2;left:50%;top:42%;transform:translate(-50%,-50%);font:600 46px/1 Georgia,serif;font-style:normal;color:var(--rs-acc);opacity:.7;text-shadow:0 0 14px var(--rs-acc)}
.rs-floor-node{position:relative;align-self:stretch;display:flex;justify-content:center;margin-top:6px}
.rs-floor-node::before,.rs-floor-node::after{content:"";position:absolute;top:50%;height:2px;width:50%;background:repeating-linear-gradient(90deg,#ffffff38 0 6px,transparent 6px 12px)}
.rs-floor-node::before{left:-4px}.rs-floor-node::after{right:-4px}
.rs-floor:first-child .rs-floor-node::before,.rs-floor:last-child .rs-floor-node::after{display:none}
.rs-floor:not(.is-locked) .rs-floor-node::before,.rs-floor.is-lit-next .rs-floor-node::after{background:linear-gradient(90deg,#b7802f,#ffe2a0);box-shadow:0 0 8px #ffd27a}
.rs-floor-medal{position:relative;z-index:2;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;border:2px solid #d9b56a;background:radial-gradient(circle at 50% 35%,color-mix(in srgb,var(--rs-acc) 70%,#1a1420),#0d0a12 75%);box-shadow:0 0 0 3px #0a080ecc,0 0 14px color-mix(in srgb,var(--rs-acc) 60%,transparent);transition:transform .2s}
.rs-floor.is-sel .rs-floor-medal{transform:scale(1.18);border-color:#fff3cf;box-shadow:0 0 0 3px #0a080ecc,0 0 22px var(--rs-acc)}
.rs-floor-medal b{font:700 17px/1 Georgia,serif;color:#fff6dc;text-shadow:0 0 8px var(--rs-acc)}
.rs-floor-medal .rs-ico{width:18px;height:18px;stroke:#ffffff88}
.rs-floor-medal .rs-floor-star{position:absolute;right:-8px;top:-6px;width:20px;height:20px;stroke:#ffd27a;fill:#ffd27a55;filter:drop-shadow(0 0 6px #ffd27a)}
.rs-floor.is-locked .rs-floor-medal{border-color:#ffffff33;background:#0d0a12;box-shadow:0 0 0 3px #0a080ecc}
.rs-floor-name{display:flex;flex-direction:column;gap:1px;margin-top:4px;font-size:clamp(14px,1.2vw,17px);font-weight:700;color:#e9dfcc;letter-spacing:.12em}
.rs-floor-name small{font-size:11px!important;font-weight:400;letter-spacing:.1em!important}
.rs-floor.is-sel .rs-floor-name{color:#fff3d6}.rs-floor.is-sel .rs-floor-name small{color:var(--rs-acc)}
.rs-floor.is-locked .rs-floor-name{opacity:.5}

.rs-pick{display:flex;align-items:center;gap:24px;width:min(980px,100%);margin-top:8px;padding:14px 30px;border-block:1px solid;border-image:linear-gradient(90deg,transparent,color-mix(in srgb,var(--rs-acc) 70%,#d9b56a),transparent) 1;
  background:linear-gradient(90deg,transparent,#0a080ee6 14%,#0a080ee6 86%,transparent)}
.rs-pick-info{flex:1;min-width:0;text-shadow:0 2px 8px #000}
.rs-pick-info small{color:var(--rs-acc)!important}
.rs-pick-info h2{margin:3px 0!important;font-size:clamp(18px,1.7vw,24px)!important;color:#fff3d6}
.rs-pick-info p{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0;font-size:13px;color:var(--rs-dim);letter-spacing:.08em}
.rs-pick-btns{display:flex;align-items:center;gap:12px}
.rs-floor-favor{position:relative;display:inline-block;width:120px;height:16px;border:1px solid #ffd27a66;border-radius:9px;background:#0009;overflow:hidden;vertical-align:middle}
.rs-floor-favor i{position:absolute;inset:0 auto 0 0;width:calc(var(--v) * 100%);background:linear-gradient(90deg,#7a2a4a,#e86a8a 60%,#ffd27a)}
.rs-floor-favor span{position:relative;display:block;font-size:10px;line-height:14px;color:#fff;letter-spacing:.1em;text-align:center}

/* 准备界面: 进了一关还没开局, 棋盘中间一块面板 + 「开始挑战」 */
.rs-ready{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:14px;text-align:center;background:radial-gradient(ellipse at 50% 45%,#0a080ee8,#0a080e99 70%);text-shadow:0 2px 8px #000}
.rs-ready[hidden]{display:none}
.rs-ready small{color:var(--rs-acc)!important}
.rs-ready h3{font-size:clamp(17px,1.6vw,22px);color:#fff3d6}
.rs-ready p{margin:0 0 12px;color:var(--rs-dim);font-size:13px;letter-spacing:.2em}
.rs-start{padding:14px 30px 12px 24px}.rs-start b{font-size:20px}.rs-start svg{width:22px;height:22px}
.rs-ready-keys{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:11px;color:#cfc3ad;letter-spacing:.04em}
.rs-ready-keys b{display:inline-block;min-width:3em;margin-right:6px;color:#ffd27a}
.rs-login{display:flex;align-items:center;justify-content:center;gap:10px;color:var(--rs-acc)}

/* 臣服殿(10-23 改版): 画出来的内殿(拱窗月光 + 北斗 + 烛火 + 地上转的符阵) + 大立绘 + 右侧心锁面板; 用道具时镜头推近、四周压暗、背后一圈光 */
.rs-hall{background:#07060a;overflow:hidden}
.rs-sanctum{position:absolute;inset:0;overflow:hidden;background:radial-gradient(ellipse 34% 50% at 36% 34%,color-mix(in srgb,var(--rs-acc) 22%,transparent),transparent 70%),linear-gradient(#0c0916,#150f22 58%,#08060c);transition:filter 1.5s}
.rs-sanct-win{position:absolute;left:36%;bottom:28%;height:70%;transform:translateX(-50%)}
.rs-sw-glass{fill:#120d22}.rs-sw-frame{fill:none;stroke:#2c2340;stroke-width:9}
.rs-sw-dipper path{fill:none;stroke:#cfc6ff55;stroke-width:1.4;stroke-dasharray:3 5}
.rs-sw-dipper circle{fill:#fff6d8;animation:rs-twinkle 3s ease-in-out infinite alternate}.rs-sw-dipper circle:nth-child(odd){animation-delay:-1.4s}
@keyframes rs-twinkle{to{opacity:.35}}
.rs-sanct-pillar{position:absolute;bottom:0;width:6%;height:100%;background:linear-gradient(90deg,#0b0911,#2a2236 40%,#141019 70%,#07060a)}
.rs-sp-l{left:9%}.rs-sp-r{left:57%}
.rs-sanct-drape{position:absolute;top:-2%;width:15%;height:84%;background:repeating-linear-gradient(90deg,#240b1a 0 14px,#45142c 22px,#240b1a 34px);-webkit-mask:linear-gradient(#000 55%,transparent);mask:linear-gradient(#000 55%,transparent)}
.rs-sd-l{left:-3%;transform:skewX(4deg)}.rs-sd-r{left:61%;width:9%;transform:skewX(-4deg)}
.rs-candle{position:absolute;left:var(--x);top:var(--y);width:calc(10px * var(--s));height:calc(46px * var(--s));border-radius:2px;background:linear-gradient(#f3e6c8,#a8956f)}
.rs-candle::before{content:"";position:absolute;left:50%;bottom:100%;width:calc(10px * var(--s));height:calc(22px * var(--s));transform:translateX(-50%);border-radius:50% 50% 45% 45%/60% 60% 40% 40%;background:radial-gradient(circle at 50% 70%,#fff 0 20%,#ffcf6a 45%,#ff7a2a00 75%);animation:rs-flick 2.2s ease-in-out infinite alternate}
.rs-candle::after{content:"";position:absolute;left:50%;bottom:40%;width:calc(200px * var(--s));aspect-ratio:1;transform:translateX(-50%);border-radius:50%;background:radial-gradient(closest-side,#ffb45a30,transparent);animation:rs-glow 3s ease-in-out infinite alternate}
@keyframes rs-flick{to{transform:translateX(-50%) scale(.88,1.1) skewX(4deg)}}
@keyframes rs-glow{to{opacity:.55}}
.rs-sanct-circle{position:absolute;left:36%;bottom:3%;width:min(64vh,46%);fill:none;stroke:var(--rs-acc);stroke-width:1.2;opacity:.45;transform:translateX(-50%) perspective(700px) rotateX(70deg);animation:rs-spin 80s linear infinite}
@keyframes rs-spin{to{transform:translateX(-50%) perspective(700px) rotateX(70deg) rotate(360deg)}}
.rs-sanct-floor{position:absolute;left:0;right:0;bottom:0;height:30%;background:linear-gradient(transparent,#0007 35%,#000d)}
.rs-hall::after{content:"";position:absolute;z-index:2;inset:0;pointer-events:none;background:radial-gradient(ellipse 58% 68% at 36% 45%,transparent 48%,#000d);opacity:.45;transition:opacity .45s}
.rs-hall.is-press::after{opacity:1}
.rs-hall.is-final .rs-sanctum{filter:brightness(1.5) saturate(1.2)}

.rs-hall-in{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 360px;grid-template-rows:auto minmax(0,1fr);width:100%;height:100%;padding:14px 22px 18px;gap:10px 28px}
.rs-hall-head{grid-column:1/-1;position:relative;z-index:3;display:flex;align-items:center;gap:16px;flex-wrap:wrap;transition:opacity .4s}
.rs-hall-name h2{font-size:24px;color:#f7e2b0;text-shadow:0 2px 12px #000}.rs-hall-name small{color:var(--rs-acc)}
.rs-hall-cam{position:relative;z-index:4;pointer-events:none;grid-row:2;min-height:0;transform-origin:50% 28%;transition:transform .45s cubic-bezier(.2,.8,.2,1)}
.rs-hall-cam.is-zoom{transform:scale(1.3) translateY(5%)}
.rs-hall-cam.is-shake .rs-hall-stage{animation:rs-shake .4s}
@keyframes rs-shake{20%{transform:translate(-7px,3px)}40%{transform:translate(6px,-4px)}60%{transform:translate(-3px,2px)}80%{transform:translate(2px,-1px)}}
.rs-hall-stage{position:absolute;inset:-6% -4% -3%;transition:opacity .3s}.rs-hall-stage.is-fade{opacity:0;transition-duration:.5s}
.rs-hall-burst{position:absolute;left:50%;top:40%;width:72%;aspect-ratio:1;border-radius:50%;opacity:0;pointer-events:none;transform:translate(-50%,-50%) scale(.4);
  background:radial-gradient(closest-side,color-mix(in srgb,var(--rs-acc) 60%,transparent),transparent),repeating-conic-gradient(#ffffff1c 0 4deg,transparent 4deg 14deg);-webkit-mask:radial-gradient(closest-side,#000 35%,transparent);mask:radial-gradient(closest-side,#000 35%,transparent)}
.rs-hall-burst.is-on{animation:rs-burst 1.1s ease-out}
@keyframes rs-burst{20%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(1.5) rotate(25deg)}}

/* 心锁: 左边一列五颗菱形, 碎掉的变金色, 当前那颗呼吸 */
.rs-seals{position:absolute;z-index:3;left:30px;top:50%;transform:translateY(-50%);list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:18px;transition:opacity .4s}
.rs-seals[hidden]{display:none}
.rs-seals li{display:grid;place-items:center;width:36px;height:36px;border:1px solid #ffffff33;background:#0a080ecc;transform:rotate(45deg)}
.rs-seals i{transform:rotate(-45deg);font:700 13px/1 Georgia,serif;font-style:normal;color:var(--rs-dim)}
.rs-seals li.is-cur{border-color:var(--rs-acc);box-shadow:0 0 14px var(--rs-acc);animation:rs-breathe 1.8s ease-in-out infinite}.rs-seals li.is-cur i{color:#fff}
.rs-seals li.is-broken{border-color:#ffd27a;background:linear-gradient(135deg,#4a3414,#1a120a)}.rs-seals li.is-broken i{color:#ffd27a}
@keyframes rs-breathe{50%{box-shadow:0 0 28px var(--rs-acc)}}

/* 台词: 立绘下方的字幕条, 左上角挂名牌 */
.rs-hall-say{position:absolute;z-index:5;left:90px;right:calc(360px + 50px);bottom:24px;max-width:760px;margin:0 auto;padding:16px 24px 16px;border:1px solid color-mix(in srgb,var(--rs-gold) 70%,transparent);border-radius:3px;background:linear-gradient(#140e1af2,#0a080ef2);box-shadow:0 12px 40px #000b;opacity:0}
.rs-hall-say[hidden]{display:none}
.rs-hall-say.is-on{animation:rs-sub .35s forwards}
.rs-hall-say b{position:absolute;top:-13px;left:18px;padding:3px 16px;border:1px solid var(--rs-gold);background:linear-gradient(#3a2a12,#1a120a);font-size:13px;letter-spacing:.24em;color:#ffe2a0}
.rs-hall-say p{margin:0;font-size:17px;line-height:1.65;color:#f6ecda;letter-spacing:.04em}
@keyframes rs-sub{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.rs-hall .rs-hall-pops{z-index:5;left:0;right:calc(360px + 50px);top:28%}

/* 右侧: 这一重心锁要献什么 */
.rs-hall-side{grid-column:2;grid-row:2;position:relative;z-index:3;display:flex;flex-direction:column;justify-content:flex-end;gap:12px;min-height:0;transition:opacity .4s}
.rs-rite{padding:16px 16px 14px;border:1px solid var(--rs-gold);background:linear-gradient(#15101cf2,#0b090ef2);box-shadow:0 0 0 4px #0008,0 20px 50px #000a}
.rs-rite[hidden]{display:none}
.rs-rite small{color:var(--rs-acc)!important}
.rs-rite h3{margin:4px 0 12px;font-size:20px;color:#f7e2b0;letter-spacing:.08em}
.rs-needs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.rs-need{display:grid;grid-template-columns:44px 1fr auto;grid-template-rows:auto auto;gap:3px 12px;align-items:center;width:100%;padding:8px 12px 8px 8px;border:1px solid #ffffff22;border-radius:4px;background:#120f15;color:inherit;text-align:left;cursor:pointer;transition:border-color .15s,background .15s,transform .15s}
.rs-need-ico{grid-row:1/3;display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--rs-gold);border-radius:50%;background:radial-gradient(circle at 50% 35%,color-mix(in srgb,var(--rs-acc) 35%,#1a1420),#0d0a12 75%)}
.rs-need-ico .rs-ico{width:24px;height:24px}
.rs-need b{font-size:15px;font-weight:600}
.rs-pips{display:flex;gap:5px;justify-self:end}
.rs-pips i{width:11px;height:11px;border:1px solid var(--rs-gold);background:#000;transform:rotate(45deg)}
.rs-pips i.is-on{background:linear-gradient(135deg,#fff3cf,#ffd27a);box-shadow:0 0 8px #ffd27a}
.rs-need em{grid-column:2/4;font-style:normal;font-size:12px;color:#8ff0c8}
.rs-need:hover:not(:disabled){border-color:var(--rs-gold);background:#1c1610;transform:translateX(-3px)}
.rs-need:focus-visible{outline:2px solid var(--rs-acc);outline-offset:2px}
.rs-need.is-off{cursor:not-allowed}.rs-need.is-off:not(.is-full){opacity:.55}.rs-need.is-off em{color:var(--rs-dim)}
.rs-need.is-empty{opacity:.7;border-style:dashed}.rs-need.is-empty em{color:#ffb38a}
.rs-need.is-full{border-color:#ffd27a55;background:#1a1408}.rs-need.is-full em{color:#ffd27a}
.rs-hall.is-busy :is(.rs-need,.rs-item,.rs-hall-tabs,#rs-hall-back){pointer-events:none}
.rs-favor{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border:1px solid var(--rs-gold);background:#0a090cd8}
.rs-favor[hidden]{display:none}
.rs-favor-track{height:14px;border:1px solid var(--rs-gold);border-radius:8px;overflow:hidden;background:#000}
.rs-favor-track span{--v:0;display:block;height:100%;width:calc(var(--v)*100%);background:linear-gradient(90deg,#7a2a4a,#e86a8a 60%,#ffd27a);transition:width .6s cubic-bezier(.2,.8,.2,1)}
.rs-favor b{font:600 15px/1 Georgia,serif;text-align:right}
.rs-hall-done{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--rs-gold);background:#2a2010e0;color:#ffe2a0}
.rs-hall-done[hidden]{display:none}.rs-key-big{width:32px;height:32px}
.rs-hall-done .rs-btn{margin-left:auto}.rs-hall-done .rs-btn[hidden]{display:none}
.rs-bag-box{display:flex;flex-direction:column;gap:8px;min-height:0;max-height:42%;padding:12px 14px;border:1px solid #ffffff26;background:#0a090cd8;overflow:auto}
.rs-hall.is-rite .rs-bag-box{max-height:24%}
.rs-bag{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}
.rs-item{display:grid;grid-template-columns:24px 1fr auto;grid-template-rows:auto auto;gap:2px 8px;width:100%;padding:8px 10px;border:1px solid #ffffff2a;border-radius:3px;background:#120f15;text-align:left}
.rs-item .rs-ico{grid-row:1/3;width:24px;height:24px;align-self:center}.rs-item b{font-size:14px;font-weight:600}.rs-item span{font:600 13px/1.4 Georgia,serif;color:var(--rs-gold)}
.rs-item em{grid-column:2/4;font-style:normal;font-size:11px;color:#8ff0c8}
.rs-item:hover:not(:disabled):not(span){border-color:var(--rs-gold);background:#1c1610}
.rs-item.is-rare{border-color:#c9a2ff66}.rs-item.is-rare .rs-ico{stroke:#d9b8ff}
.rs-item.is-off{opacity:.5;cursor:not-allowed}.rs-item.is-off em{color:var(--rs-dim)}
.rs-bag .rs-empty{grid-column:1/-1;font-size:13px;line-height:1.7;color:var(--rs-dim)}
.rs-hall.is-yield .rs-hall-done{animation:rs-yield 1.6s}
@keyframes rs-yield{0%{transform:scale(.6);opacity:0}40%{transform:scale(1.08);opacity:1;box-shadow:0 0 40px #ffd27a}100%{transform:none}}

/* 回放: 面板收起, 立绘居中 */
.rs-hall.is-replay :is(.rs-hall-side,.rs-hall-head,.rs-seals){opacity:0;pointer-events:none}
.rs-hall.is-replay .rs-hall-cam{grid-column:1/-1}
.rs-hall.is-replay .rs-hall-say{right:90px}
.rs-replay-skip{position:absolute;z-index:6;right:24px;top:18px}.rs-replay-skip[hidden]{display:none}

/* 一重心锁碎掉的过场 */
.rs-seal-card{position:absolute;inset:0;z-index:5;display:grid;place-items:center;align-content:center;gap:8px;text-align:center;pointer-events:none;background:radial-gradient(ellipse at center,#000b,#000f 70%)}
.rs-seal-card[hidden]{display:none}
.rs-seal-card.is-on{animation:rs-fade .35s both}
@keyframes rs-fade{from{opacity:0}}
.rs-seal-rune{width:190px;height:190px;fill:none;stroke:var(--rs-acc);stroke-width:1.5;filter:drop-shadow(0 0 10px var(--rs-acc))}
.rs-seal-card.is-on .rs-seal-rune{animation:rs-rune 1.8s ease-out both}
.rs-seal-crack{stroke:#fff;stroke-width:2.5;stroke-dasharray:420;stroke-dashoffset:420}
.rs-seal-card.is-on .rs-seal-crack{animation:rs-crack .6s .55s forwards}
.rs-seal-card small{color:var(--rs-acc)!important;letter-spacing:.4em!important}
.rs-seal-card h3{font-size:34px;color:#f7e2b0;letter-spacing:.2em;text-shadow:0 0 22px var(--rs-acc)}
@keyframes rs-rune{0%{transform:scale(.6) rotate(-30deg);opacity:0}35%{opacity:1}75%{transform:scale(1) rotate(0)}100%{transform:scale(1.18);opacity:.25}}
@keyframes rs-crack{to{stroke-dashoffset:0}}
.rs-fly{position:fixed;z-index:9999;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;pointer-events:none;background:radial-gradient(#ffd27a99,transparent 70%)}
.rs-fly .rs-ico{width:28px;height:28px;stroke:#fff3cf}
@media (prefers-reduced-motion:reduce){.rs-sanct-circle,.rs-candle::before,.rs-candle::after,.rs-sw-dipper circle,.rs-seals li.is-cur{animation:none}}

/* 解缚殿: 换一位女官 */
.rs-hall-keys{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--rs-dim);letter-spacing:.1em}
.rs-hall-tabs{display:flex;gap:6px;margin-left:auto;flex-wrap:wrap}
.rs-hall-tabs button{display:flex;align-items:center;gap:6px;padding:5px 12px;border:1px solid #ffffff2a;border-radius:16px;background:#0a080ecc;font-size:13px}
.rs-hall-tabs button b{font:700 12px/1 Georgia,serif;color:var(--rs-acc)}
.rs-hall-tabs button .rs-ico{width:14px;height:14px;stroke:#ffd27a}
.rs-hall-tabs button[aria-current]{border-color:var(--rs-acc);background:color-mix(in srgb,var(--rs-acc) 25%,#0a080e);box-shadow:0 0 10px color-mix(in srgb,var(--rs-acc) 50%,transparent)}

/* 结算 */
.rs-result-card{width:min(560px,92%);padding:28px 30px;border:1px solid var(--rs-gold);background:#0a090c;text-align:center;line-height:1.7}
.rs-result-card h2{font-size:26px;color:#f7e2b0;margin:6px 0 4px}
.rs-result.is-lost .rs-result-card{border-color:#a8333f}.rs-result.is-lost h2{color:#ff9aa4}
.rs-quote{color:var(--rs-acc);font-style:italic}
.rs-gold{color:#ffd27a}
.rs-loot-list{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:8px 0 14px;padding:0}
.rs-loot-list li{display:flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid #ffffff26;border-radius:20px;font-size:14px}
.rs-loot-list.is-lost li{opacity:.55;text-decoration:line-through}
.rs-btns{display:flex;justify-content:center;gap:10px;margin-top:14px}

/* 终幕 */
.rs-finale{inset:0;z-index:30;background:#000;flex-direction:column}
.rs-finale-stage{position:absolute;inset:0}.rs-finale-stage canvas{width:100%;height:100%}
.rs-finale-copy{position:absolute;left:0;right:0;bottom:0;padding:30px 20px 34px;text-align:center;background:linear-gradient(transparent,#000d 40%)}
.rs-finale-copy h2{font-size:30px;color:#f7e2b0;margin:4px 0}

/* 说明 */
/* 游戏内确认框 */
.rs-ask{width:min(440px,calc(100vw - 32px));padding:22px 30px 24px;border:1px solid var(--rs-gold,#d9b56a);background:radial-gradient(ellipse at 50% 0,#2a1a2ecc,transparent 70%),linear-gradient(#15101c,#0a080d);color:#f3e9d6;text-align:center;
  box-shadow:0 0 0 4px #000a,0 0 0 5px #d9b56a44,0 30px 80px #000;clip-path:polygon(14px 0,calc(100% - 14px) 0,100% 14px,100% calc(100% - 14px),calc(100% - 14px) 100%,14px 100%,0 calc(100% - 14px),0 14px)}
.rs-ask::backdrop{background:radial-gradient(ellipse at center,#0008,#000d);backdrop-filter:blur(2px)}
.rs-ask[open]{animation:rs-ask-in .28s cubic-bezier(.2,.8,.2,1)}
@keyframes rs-ask-in{from{opacity:0;transform:translateY(10px) scale(.97)}}
.rs-ask-rune{width:120px;height:24px;fill:none;stroke:#d9b56a;stroke-width:1.4}.rs-ask-rune circle{fill:#ffd27a;stroke:none}
.rs-ask h3{margin:10px 0 8px;font:600 22px/1.3 Georgia,"Songti SC","Noto Serif SC",serif;color:#f7e2b0;letter-spacing:.12em}
.rs-ask p{margin:0 0 20px;font-size:14px;line-height:1.8;color:#cfc3ad}
.rs-ask-btns{display:flex;justify-content:center;gap:14px;flex-wrap:wrap}
.rs-ask .rs-btn{color:#f3e2bf}.rs-ask .rs-btn-gold{color:#fff4d6;text-shadow:0 0 8px #ffb84d,0 1px 2px #000}
.rs-ask.is-danger{border-color:#c0475a}.rs-ask.is-danger .rs-ask-rune{stroke:#e0707f}.rs-ask.is-danger h3{color:#ffc2c8}
.rs-help{max-width:640px;padding:22px 26px;border:1px solid var(--rs-gold);background:#0c0a0f;color:var(--rs-ink);font-size:14px;line-height:1.8}
.rs-help::backdrop{background:#000a}.rs-help h2{color:#f7e2b0;margin-top:0}.rs-help b{color:#ffd27a}
.rs-close{position:absolute;right:10px;top:6px;border:0;background:none;font-size:24px;color:var(--rs-dim)}
.rs-credit{font-size:12px;color:var(--rs-dim)}

/* ---------- 窄屏 / 手机竖屏 ---------- */
@media (max-width:1100px){.rs-side{width:92px}.rs-shell{grid-template-columns:48px minmax(0,1fr) auto minmax(0,.7fr) 48px}.rs-boss-head h3{font-size:19px}}
@media (max-width:760px){
  .rs-frame{aspect-ratio:auto;height:calc(100dvh - 70px)}
  .rs-shell{grid-template-columns:1fr 1fr;grid-template-rows:48px 22px 104px minmax(0,1fr);grid-template-areas:"top top" "bbar hbar" "boss hunter" "center center"}
  .rs-layer{top:48px}.rs-loading,.rs-finale,.rs-prologue{top:0}
  .rs-top{padding:0 8px}.rs-title h2{font-size:17px}.rs-title small,.rs-top a{display:none}
  .rs-vbar{flex-direction:row;padding:0 10px}.rs-vbar small{display:none}.rs-vbar-track{height:12px;width:auto}
  .rs-vbar-track span{top:2px;bottom:2px;left:2px;right:auto;height:auto;width:calc((100% - 4px)*var(--v))}
  .rs-boss,.rs-hunter{padding:2px 8px;flex-direction:row;gap:6px}
  .rs-boss-head,.rs-hunter-head{position:absolute;z-index:2}.rs-boss-head h3,.rs-hunter-head h3{font-size:15px}
  .rs-intent{position:absolute;bottom:0;left:0;right:0;border:0;padding:2px;font-size:12px}.rs-intent b{font-size:16px}
  .rs-say{font-size:12px;top:auto;bottom:24px;left:4px;max-width:96%}
  .rs-loot-box,.rs-shield{display:none}
  .rs-center{grid-template-columns:62px auto 62px;column-gap:4px;padding:4px}
  .rs-pad{gap:4px}.rs-pad button{min-width:0;flex:1;height:52px;padding:0 4px;font-size:11px}.rs-pad .rs-pad-turn{min-width:0;flex:1.5;height:60px}.rs-tip{display:none}
  .rs-side{width:62px;padding-top:8px}.rs-box{padding:6px 4px}.rs-stats{display:none}
  .rs-tower-in{padding:8px}.rs-logo{font-size:30px}
  .rs-floors{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;min-height:260px}.rs-floor{flex:0 0 40vw;scroll-snap-align:center}
  .rs-pick{flex-direction:column;align-items:stretch;gap:10px;padding:10px 14px;text-align:center}.rs-pick-info p{justify-content:center}.rs-pick-btns{justify-content:center}
  .rs-btn-lg{min-width:150px;font-size:16px}
  .rs-hall-in{grid-template-columns:1fr;grid-template-rows:auto 44vh minmax(0,1fr);padding:10px;gap:8px}.rs-hall-side{grid-column:1;grid-row:3;justify-content:flex-start;overflow:auto}
  .rs-hall-say{left:10px;right:10px;bottom:auto;top:calc(44vh - 30px)}.rs-hall-say p{font-size:15px}.rs-hall .rs-hall-pops{right:0}
  .rs-seals{left:14px;top:30%;gap:12px}.rs-seals li{width:28px;height:28px}.rs-bag-box,.rs-hall.is-rite .rs-bag-box{max-height:none}
  .rs-sanct-win{left:50%}.rs-sanct-circle{left:50%;width:80%}.rs-sp-r,.rs-sd-r{display:none}
}
