/* The sanctum is a full scene: the room remains live behind its diegetic HUD. */
.rs-stage[data-mode=hall] .rs-shell{visibility:hidden;pointer-events:none}
.rs-hall{inset:0;background:transparent;display:block}
.rs-hall .rs-sanctum{background:radial-gradient(ellipse at 50% 40%,transparent 30%,#09071375 85%);pointer-events:none}
.rs-hall :is(.rs-sanct-win,.rs-sanct-pillar,.rs-sanct-drape,.rs-candle){display:none}
.rs-hall .rs-sanct-circle{left:50%;bottom:3%;width:min(72vh,72%);opacity:.32}
.rs-hall .rs-sanct-floor{height:22%;background:linear-gradient(transparent,#05040ba8)}
.rs-hall::after{background:radial-gradient(ellipse at 50% 42%,transparent 35%,#020208 100%);opacity:.65}
.rs-hall-in{display:block;padding:0}
.rs-hall-head{position:absolute;inset:26px 32px auto;display:flex;align-items:flex-start;gap:24px;z-index:6}
.rs-hall-head>.rs-btn{order:0;border:0;border-bottom:1px solid #d9b56a66;background:transparent;padding:8px 0;border-radius:0;font-size:13px}
.rs-hall-name{position:absolute;left:50%;transform:translateX(-50%);text-align:center;pointer-events:none}
.rs-hall-name small{font-size:10px;letter-spacing:.35em}
.rs-hall-name h2{font-size:clamp(24px,3vw,38px);letter-spacing:.25em;margin-top:8px}
.rs-hall-tabs{margin-left:auto;max-width:25vw}
.rs-hall-tabs button{border-radius:2px;padding:5px 9px;background:#08060d88}
.rs-hall-keys{position:absolute;right:0;top:48px;flex-wrap:wrap;justify-content:flex-end;max-width:240px;font-size:10px;opacity:.8}
.rs-hall-keys .rs-keys{display:none}
.rs-hall-cam{position:absolute;inset:7% 22% 13%;transform-origin:50% 40%;transition:transform 1.1s cubic-bezier(.2,.7,.2,1)}
.rs-hall-stage{inset:0}
.rs-hall-cam.is-zoom{transform:scale(1.17) translateY(1%)}
.rs-hall-cam.is-shake .rs-hall-stage{animation:none}
.rs-hall-burst{width:95%;top:53%}
.rs-hall .rs-seals{top:50%;left:42px;gap:22px}
.rs-hall .rs-seals li{background:#09071170;width:28px;height:28px}
.rs-hall .rs-seals i{font-size:10px}
.rs-hall-side{position:absolute;right:28px;top:23%;bottom:18%;width:min(280px,26vw);display:flex;gap:14px;justify-content:center;transition:opacity .5s,transform .65s;overflow:auto;scrollbar-width:thin}
.rs-hall .rs-rite{padding:14px 0;border:0;background:transparent;box-shadow:none}
.rs-hall .rs-rite h3{font-size:17px;margin:6px 0 17px;letter-spacing:.12em}
.rs-hall .rs-needs{gap:7px}
.rs-hall .rs-need{grid-template-columns:38px 1fr auto;gap:3px 9px;padding:7px;background:linear-gradient(90deg,#0c0912dc,#100d1880);border:1px solid #bba47830;backdrop-filter:blur(6px);border-radius:2px}
.rs-hall .rs-need-ico{width:36px;height:36px;border-color:#bc9b5e88}
.rs-hall .rs-need-ico .rs-ico{width:20px;height:20px}
.rs-hall .rs-need b{font-size:13px}
.rs-hall .rs-need em{font-size:10px}
.rs-hall .rs-bag-box{padding:10px 0;border:0;border-top:1px solid #d9b56a33;background:transparent;max-height:30%;flex-shrink:0}
.rs-hall .rs-bag-box>small{font-size:9px;letter-spacing:.1em}
.rs-hall .rs-bag .rs-empty{font-size:11px}
.rs-hall .rs-favor{background:#08060c77;border:0;border-top:1px solid #c4a36a55;border-radius:0;padding:10px 0}
.rs-hall .rs-hall-done{padding:12px;background:#21180788;font-size:12px}
.rs-hall-say{left:22%;right:22%;bottom:5%;max-width:820px;padding:16px 24px;background:linear-gradient(90deg,transparent,#08060de8 15%,#08060de8 85%,transparent);border:0;border-bottom:1px solid #d9b56a55;box-shadow:none;text-align:center}
.rs-hall-say b{position:static;display:block;padding:0 0 7px;border:0;background:none;font-size:12px;letter-spacing:.3em}
.rs-hall-say p{font-size:clamp(14px,1.3vw,19px);letter-spacing:.08em;line-height:1.8}
.rs-hall .rs-hall-pops{left:26%;right:26%;top:30%}
.rs-hall.is-press .rs-hall-side,.rs-hall.is-press .rs-seals{opacity:0;transform:translateX(18px);pointer-events:none}
.rs-hall.is-press .rs-hall-head{opacity:.3}
.rs-hall.is-replay .rs-hall-cam{inset:7% 22% 13%}
.rs-hall.is-replay .rs-hall-say{left:22%;right:22%}
.rs-hall .rs-seal-card{background:#05030cd9;backdrop-filter:blur(8px)}
.rs-passage{position:absolute;inset:0;z-index:46;perspective:1100px;overflow:hidden;background:#06050a;transition:background .8s;pointer-events:auto}
.rs-passage[hidden]{display:none}
.rs-door{position:absolute;top:-3%;bottom:-3%;width:50.2%;border:2px solid #b8985b66;box-shadow:inset 0 0 0 13px #0a0810,inset 0 0 0 14px #b8985b33,inset 0 0 100px #000;background:repeating-linear-gradient(90deg,transparent 0 18%,#b8985b16 18% 18.4%,transparent 18.4% 36%),linear-gradient(100deg,#1b1424,#0c0911 50%,#211a28);transition:transform 1.1s cubic-bezier(.4,0,.15,1)}
.rs-door::after{content:'✧';position:absolute;top:45%;color:#ddbd7d;font:70px Georgia;text-shadow:0 0 28px #d8ac56}
.rs-door-l{left:0;transform-origin:left center}.rs-door-l::after{right:20px}
.rs-door-r{right:0;transform-origin:right center}.rs-door-r::after{left:20px}
.rs-passage.is-open{background:transparent;pointer-events:none}
/* 门关着等加载时的进度(rescue.js walkScene): 门缝下方, 门一开就收 */
.rs-pass-load{position:absolute;left:50%;bottom:24%;z-index:1;width:min(420px,70%);transform:translateX(-50%);text-align:center;transition:opacity .25s}
.rs-pass-load[hidden]{display:none}
.rs-passage.is-open .rs-pass-load{opacity:0}
.rs-pass-load p{margin:0 0 4px;color:#e9dcc2;letter-spacing:.2em;font-size:14px;text-shadow:0 0 10px #000}
.rs-load-bar.rs-pass-bar i{width:0;animation:none;transition:width .2s ease-out}
.rs-pass-load b{color:#f2cf7c;font-variant-numeric:tabular-nums}
.rs-passage.is-open .rs-door-l{transform:translateX(-45%) rotateY(-85deg)}
.rs-passage.is-open .rs-door-r{transform:translateX(45%) rotateY(85deg)}
@media(max-width:800px){
 .rs-hall-head{inset:16px 16px auto;gap:8px}.rs-hall-head>.rs-btn{font-size:11px}.rs-hall-name{top:0}.rs-hall-name h2{font-size:21px;margin-top:4px}.rs-hall-name small{font-size:9px;letter-spacing:.1em}
 .rs-hall-tabs{max-width:25vw}.rs-hall-tabs button{font-size:10px;padding:4px}.rs-hall-tabs button b{display:none}.rs-hall-keys{top:42px;max-width:150px;font-size:9px}
 .rs-hall-cam,.rs-hall.is-replay .rs-hall-cam{inset:10% 9% 31%}.rs-hall-side{left:12px;right:12px;top:auto;bottom:2%;width:auto;max-height:26%;overflow:auto;display:block;background:linear-gradient(transparent,#05040be0)}
 .rs-hall .rs-rite{padding:8px 0}.rs-hall .rs-rite h3{font-size:13px;margin:3px 0 8px}.rs-hall .rs-rite>small{font-size:8px}.rs-hall .rs-needs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
 .rs-hall .rs-need{display:flex;flex-wrap:wrap;justify-content:center;text-align:center;gap:4px;padding:5px}.rs-hall .rs-need-ico{width:28px;height:28px}.rs-hall .rs-need b{font-size:10px}.rs-hall .rs-need em{width:100%;font-size:9px}.rs-hall .rs-need .rs-pips{width:100%;justify-content:center}
 .rs-hall .rs-bag-box{display:none}.rs-hall-say,.rs-hall.is-replay .rs-hall-say{left:10%;right:10%;top:auto;bottom:29%;padding:8px 10px}.rs-hall-say p{font-size:12px;line-height:1.5}.rs-hall-say b{font-size:10px}
 .rs-hall .rs-seals{left:16px;top:40%;gap:14px}.rs-hall .rs-seals li{width:21px;height:21px}.rs-hall .rs-hall-pops{left:10%;right:10%;top:35%}
}
@media(prefers-reduced-motion:reduce){.rs-door,.rs-passage,.rs-hall-cam,.rs-hall-side{transition:none}.rs-hall .rs-sanct-circle{animation:none}}
/* Keep the character grounded at the viewport edge, with subtitles over the scene. */
.rs-hall-cam,.rs-hall.is-replay .rs-hall-cam{inset:5% 18% 0;transform-origin:50% 100%}
.rs-hall-cam.is-zoom{transform:scale(1.12)}
.rs-hall .rs-sanct-circle{bottom:-12%;width:min(88vh,82%);opacity:.22}
.rs-hall .rs-sanct-floor{height:13%;background:linear-gradient(transparent,#05040b66)}
.rs-hall-say,.rs-hall.is-replay .rs-hall-say{bottom:2%;left:24%;right:24%;padding:10px 20px;background:linear-gradient(90deg,transparent,#08060dc9 18%,#08060dc9 82%,transparent)}
@media(max-width:800px){.rs-hall-cam,.rs-hall.is-replay .rs-hall-cam{inset:8% 25% 0 0}.rs-hall-side{top:23%;bottom:16%;left:auto;right:10px;width:41%;max-height:none;display:flex;background:none}.rs-hall .rs-needs{display:flex;flex-direction:column}.rs-hall .rs-need{display:grid;grid-template-columns:27px 1fr;gap:4px;text-align:left;padding:6px}.rs-hall .rs-need .rs-pips{grid-column:1/-1;justify-content:flex-start}.rs-hall .rs-need em{grid-column:1/-1;font-size:9px}.rs-hall-say,.rs-hall.is-replay .rs-hall-say{left:5%;right:5%;bottom:2%;padding:7px}.rs-hall .rs-sanct-circle{left:37%;bottom:-8%}}
@media(max-width:800px){.rs-hall-cam,.rs-hall.is-replay .rs-hall-cam{left:0;right:0}}
/* Floating offerings, arranged around illuminated ritual pedestals. */
.rs-hall-side{right:3.5%;top:20%;bottom:13%;width:min(350px,28vw);justify-content:flex-start;gap:10px;scrollbar-width:thin;scrollbar-color:#b99a5d55 transparent}
.rs-hall .rs-rite{padding:8px 5px;text-align:center;flex-shrink:0}
.rs-hall .rs-rite>small{color:#d9be83;font-size:10px;letter-spacing:.2em}
.rs-hall .rs-rite h3{font-size:21px;font-weight:400;letter-spacing:.12em;margin:8px 0}
.rs-rite-hint{font-size:11px;color:#c0afc6;letter-spacing:.1em;margin:0 0 16px}
.rs-hall .rs-needs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px 8px;padding:6px 0;margin:0;list-style:none}
.rs-hall .rs-needs>li:only-child{grid-column:1/-1;width:65%;justify-self:center}
.rs-hall .rs-need{position:relative;display:flex;flex-direction:column;justify-content:flex-start;gap:7px;min-height:151px;padding:8px 4px 12px;text-align:center;border:0;border-radius:0;background:radial-gradient(ellipse at 50% 40%,#b480cf12,transparent 68%);box-shadow:none;backdrop-filter:none;transition:filter .25s,transform .25s}
.rs-hall .rs-need:after{content:'✦';position:absolute;bottom:0;left:12%;right:12%;height:1px;background:linear-gradient(90deg,transparent,#bc985b90,transparent);font:9px/1 Georgia;color:#d8b96e;pointer-events:none}
.rs-hall .rs-need:hover:not(:disabled){background:radial-gradient(ellipse at 50% 38%,#b480cf24,transparent 70%);transform:translateY(-3px);filter:brightness(1.2)}
.rs-hall .rs-need-ico{position:relative;grid-row:auto;flex-shrink:0;width:65px;height:65px;border:1px solid #d7b873;border-radius:50%;background:radial-gradient(circle at 42% 35%,#6b487c80,#181024b0 65%,#07060bcc);box-shadow:inset 0 0 0 4px #100c1c,inset 0 0 0 5px #d7b87355,0 0 23px #b17bc82a,0 9px 16px #0008}
.rs-hall .rs-need-ico:before{content:'';position:absolute;inset:-7px;border:1px solid #b78c5b55;transform:rotate(45deg);border-radius:13px;pointer-events:none}
.rs-hall .rs-need-ico:after{content:'';position:absolute;left:-15%;right:-15%;bottom:-16px;height:11px;border:1px solid #d0a76a66;border-radius:50%;box-shadow:0 0 12px #c487e52b;pointer-events:none}
.rs-hall .rs-need-ico .rs-ico{width:34px;height:34px;filter:drop-shadow(0 1px 3px #000)}
.rs-hall .rs-need b{font-size:13px;font-weight:500;color:#eddec3;letter-spacing:.12em;margin-top:8px;text-shadow:0 2px 5px #000}
.rs-hall .rs-need em{font-size:10px;font-style:normal;color:#bfb0c9;grid-column:auto;width:auto}
.rs-hall .rs-need .rs-pips{justify-content:center;flex-wrap:wrap;gap:5px;width:auto;grid-column:auto}
.rs-hall .rs-pips i{width:6px;height:6px;border-color:#a38a69;box-shadow:none}
.rs-hall .rs-pips i.is-on{box-shadow:0 0 5px #ffd27a88}
.rs-hall .rs-need.is-full{opacity:1;background:radial-gradient(ellipse at 50% 37%,#d4aa4e12,transparent 70%)}
.rs-hall .rs-need.is-full em{color:#ddbf7c}.rs-hall .rs-need.is-empty{opacity:.58}
.rs-hall .rs-bag-box{max-height:none;flex-shrink:0;font-size:10px;color:#b9a38c;border-top:1px solid #b99a5d33}
.rs-hall .rs-bag-box summary{cursor:pointer;text-align:center;list-style:none;padding:5px}
.rs-hall .rs-bag-box summary:after{content:' ⌄';color:#cba566}
.rs-hall .rs-hall-done{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:7px;background:none;border:0;color:#d1b684;font-size:10px;padding:0}
.rs-hall .rs-hall-done[hidden]{display:none}.rs-hall-done .rs-key-big{display:none}.rs-hall-done b{font-weight:400}
.rs-hall #rs-replay{padding:4px 12px;font-size:10px;background:none;border-color:#bca16a66}
.rs-hall .rs-seals{left:3.5%;gap:28px}
.rs-hall .rs-seals li{width:34px;height:34px}
.rs-seals button{display:grid;place-items:center;width:100%;height:100%;padding:0;border:0;background:transparent;color:inherit;cursor:pointer}
.rs-seals button:focus-visible{outline:2px solid #ffe0a0;outline-offset:5px}.rs-seals button:disabled{cursor:default;opacity:.4}
.rs-seals button i{display:block;pointer-events:none}
.rs-seals li:has(button:disabled){border-color:#ffffff14;background:#0a080e55}
.rs-hall[data-view-phase="3"] .rs-sanct-circle{filter:hue-rotate(20deg)}
.rs-hall[data-view-phase="4"] .rs-sanct-circle{filter:hue-rotate(45deg)}
.rs-hall[data-view-phase="5"] .rs-sanct-circle{filter:hue-rotate(85deg)}
.rs-hall.is-busy .rs-need,.rs-hall.is-busy .rs-seals{pointer-events:none}
@media(max-width:800px){
 .rs-hall-side{left:auto;right:2%;top:20%;bottom:14%;width:37%;max-height:none;display:flex;background:none;gap:6px}
 .rs-hall .rs-rite{padding:6px 0}.rs-hall .rs-rite>small{font-size:8px;letter-spacing:.05em}.rs-hall .rs-rite h3{font-size:13px;letter-spacing:.03em;margin:7px 0}.rs-rite-hint{font-size:9px;margin-bottom:9px;letter-spacing:0}
 .rs-hall .rs-needs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 4px}
 .rs-hall .rs-needs>li:only-child{width:90%}.rs-hall .rs-need{display:flex;padding:7px 1px 10px;min-height:119px;gap:5px;text-align:center}
 .rs-hall .rs-need-ico{width:42px;height:42px}.rs-hall .rs-need-ico .rs-ico{width:23px;height:23px}.rs-hall .rs-need-ico:before{inset:-5px;border-radius:8px}.rs-hall .rs-need-ico:after{bottom:-12px;height:8px}
 .rs-hall .rs-need b{font-size:10px;letter-spacing:0;margin-top:7px}.rs-hall .rs-need em{font-size:8px;line-height:1.5;grid-column:auto;width:auto}.rs-hall .rs-need .rs-pips{width:auto;justify-content:center;gap:4px}.rs-hall .rs-pips i{width:5px;height:5px}
 .rs-hall .rs-bag-box{display:block}.rs-hall .rs-bag-box>summary small{font-size:8px}.rs-hall .rs-seals{left:4%;gap:23px}.rs-hall .rs-seals li{width:26px;height:26px}.rs-hall .rs-hall-done{font-size:9px}
}
.rs-hall::after{background:linear-gradient(90deg,transparent 55%,#05030a44 77%,#05030a99),radial-gradient(ellipse at 50% 42%,transparent 35%,#020208 100%)}
.rs-hall .rs-rite h3,.rs-hall .rs-need b,.rs-rite-hint,.rs-hall .rs-need em{text-shadow:0 1px 4px #000,0 0 10px #000}
@media(max-width:800px){.rs-hall::after{background:linear-gradient(90deg,transparent 52%,#05030aaa 76%,#05030acc)}.rs-hall .rs-need b{font-size:11px}.rs-hall .rs-need em{font-size:9px}.rs-hall .rs-rite h3{font-size:14px}}
.rs-hall:not(.is-rite) .rs-bag{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 10px;padding:10px 0}
.rs-hall:not(.is-rite) .rs-bag .rs-item{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:12px 4px;border:0;background:radial-gradient(ellipse at 50% 30%,#ac77c322,transparent 70%);box-shadow:none}
.rs-hall:not(.is-rite) .rs-bag .rs-item>.rs-ico{width:62px;height:62px;padding:13px;border:1px solid #d7b873;border-radius:50%;background:radial-gradient(circle,#59396b88,#100b1b);box-shadow:inset 0 0 0 4px #100c1c,inset 0 0 0 5px #d7b87355,0 0 23px #b17bc82a}
.rs-hall:not(.is-rite) .rs-bag .rs-item b{font-size:13px;color:#eddec3;font-weight:500}.rs-hall:not(.is-rite) .rs-bag .rs-item em{font-size:10px;line-height:1.6;color:#bfb0c9}.rs-hall:not(.is-rite) .rs-bag .rs-item>span{font:11px Georgia;color:#d8b879}.rs-hall:not(.is-rite) .rs-bag .rs-empty{grid-column:1/-1}
@media(max-width:800px){.rs-hall:not(.is-rite) .rs-bag .rs-item>.rs-ico{width:43px;height:43px;padding:9px}.rs-hall:not(.is-rite) .rs-bag .rs-item b{font-size:11px}.rs-hall:not(.is-rite) .rs-bag .rs-item em{font-size:9px}}
