/* 返回只占屏幕底部中间五分之一的高度。 */
#backzone,.scene-sky #backzone{position:absolute;left:50%;bottom:0;top:auto;width:48%;width:min(48%,48vw);height:20%;transform:translateX(-50%);z-index:1;border:0;background:transparent;cursor:s-resize}
#transition{background:#241626;transition:opacity .32s ease;z-index:14}
#transition.cover{opacity:1}
#stage.leaving #scene-art{filter:none;opacity:1}
#stage.arriving #scene-art,#stage.arriving #objects,#stage.arriving #fx{transform:scale(1.065);transform-origin:50% 48%;opacity:1}
#scene-art,#objects,#fx{transition:transform .65s cubic-bezier(.22,.6,.3,1),opacity .32s ease}
.state-before{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none;z-index:0;opacity:1;transition:opacity .65s ease}
.state-before.faded{opacity:0}
.door-awakening #shade{background:radial-gradient(ellipse at 50% 50%,#ffe2a518,transparent 60%)}
/* 相框是具有真实透明孔的独立物件，照片在其后方。 */
.painted-frame-hit{border:0;border-radius:0;background:none;min-width:0;min-height:0;padding:0;filter:drop-shadow(0 4px 4px #54293866)}
.real-frame{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;margin:0;pointer-events:none}
.frame-border{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;width:100%;height:100%;object-fit:fill;z-index:2;pointer-events:none}
.photo-well{position:absolute;overflow:hidden;background:#f0d5b6;box-shadow:inset 0 0 20px #7c4c3840;display:flex;align-items:center;justify-content:center;z-index:1}
.real-frame.oval .photo-well{left:16.6%;top:20.8%;width:65.3%;height:60.7%;border-radius:50%}
.real-frame.rect .photo-well{left:23.6%;top:21.4%;width:52.8%;height:58.5%;border-radius:1px}
.photo-content{width:100%;height:100%;object-fit:cover}
.photo-pending{display:block;text-align:center;color:#96745f;font-size:12px;line-height:2;letter-spacing:1px}
.photo-pending small{display:block;font-size:10px;opacity:.65}
#object-sheet.photo-sheet{max-width:390px;overflow:visible;padding:0}
.photo-inspection{padding:18px 8px 8px;color:#f9e1d2;text-align:center}
.real-frame.standalone{position:relative;top:auto;right:auto;bottom:auto;left:auto;inset:auto;width:100%;height:0;filter:drop-shadow(0 15px 16px #11091b88)}
.real-frame.oval.standalone{padding-top:136.31%}
.real-frame.rect.standalone{padding-top:83.333%}
.photo-inspection p{font-size:13px;line-height:1.9;margin:14px 14px 0;text-shadow:0 2px 6px #180c24}
.photo-inspection h2,.photo-view h2{font-size:19px;line-height:1.6;font-weight:400;letter-spacing:1px;color:#f8dca6;margin:18px 12px 0;overflow-wrap:anywhere}
.photo-inspection h2+p{margin-top:7px}
#close{width:48px;height:48px;min-height:48px;top:3px;right:3px;padding:0;background:none;border:0;border-radius:0;box-shadow:none;filter:drop-shadow(0 3px 4px #25112666)}
#close img{display:block;width:100%;height:100%}
.photo-sheet #close{right:0;top:0}
@media(max-height:650px){#object-sheet.photo-sheet{max-width:300px}}
@media(prefers-reduced-motion:reduce){#scene-art,#objects,#fx,#transition,.state-before{transition-duration:.01ms!important}}
/* Claude review: consistent viewport ratio, matched motion and real-image decode. */
#world,#stage{height:var(--app-h,100vh)}
#stage{width:calc(var(--app-h,100vh) * .666667)}
#scene-art,#objects,#fx{transform-origin:var(--entry-x,50%) var(--entry-y,48%)}
#stage.arriving #scene-art,#stage.arriving #objects,#stage.arriving #fx{transform-origin:var(--entry-x,50%) var(--entry-y,48%);transform:scale(1.08)}
#stage.arriving.enter-up #scene-art,#stage.arriving.enter-up #objects,#stage.arriving.enter-up #fx{transform:translateY(4%) scale(1.07);transform-origin:65% 30%}
#stage.leave-up:not(.looking) #scene-art,#stage.leave-up:not(.looking) #objects,#stage.leave-up:not(.looking) #fx{transform:translateY(-6%) scale(1.12);transform-origin:65% 30%;transition:transform .34s ease}
#stage.leave-back #scene-art,#stage.leave-back #objects,#stage.leave-back #fx{transform:scale(.96);transition:transform .34s ease}
#stage.leave-forward #scene-art,#stage.leave-forward #objects,#stage.leave-forward #fx{transition:transform .34s ease}
.scene-pending #objects,.scene-pending #backzone{pointer-events:none}
.wish-star{position:absolute;top:0;left:0;display:block;width:110px;height:110px;font-size:110px;line-height:1;text-align:center;color:#ffedb8;text-shadow:0 0 9px #fff5d6,0 0 25px #f9c887,0 0 48px #e1a7ef}
.scene-upstairs .unlock-key{left:87.8%;top:calc(43.1% - 48px)}
.scene-upstairs .lock-occluder{left:87.8%;top:calc(43.1% - 12px)}
#controls{gap:0}#controls button+button{margin-left:9px}
#bag-panel{gap:0}.bag-slot+.bag-slot{margin-left:12px}
.gift-contents{gap:0}.gift-contents button+button{margin-left:18px}

.scene-upstairs .lock-occluder{width:6px;height:14px;top:calc(43.1% - 7px);border-radius:50%;background:#b58a50}
.box-loot{top:38.5%;width:9%}.box-key{left:38%}.box-note{left:47%}
.photo-nav{gap:0}.photo-nav button+button{margin-left:15px}

.art-retry{position:absolute;left:50%;top:25%;transform:translateX(-50%);z-index:16;min-height:44px;padding:12px 20px;background:#654052ed;color:#ffe2bd;border:1px solid #d3ad78;border-radius:8px;font-size:13px;white-space:nowrap}

/* 相框近景为标题、说明和关闭按钮留出手机可用空间。 */
#object-sheet.photo-sheet{overflow:auto;max-height:calc(var(--app-h,100vh) - 48px);-webkit-overflow-scrolling:touch}
.photo-inspection{padding-top:42px;padding-bottom:20px}
.photo-inspection h2{margin-top:12px}
