/* A single physical scene: the only bright object teaches the first action. */
#chamber{padding:0;min-height:740px;height:100svh;isolation:isolate;display:block;background:#050404;overflow:hidden}
#chamber .stage-footer{display:none}
#chamber .lantern-scene{position:absolute;inset:96px 0 0;overflow:hidden;touch-action:pan-y}
.lantern-set{position:absolute;width:var(--set-width,100%);height:var(--set-height,100%);right:0;top:0}
.lantern-set>img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:fill;pointer-events:none;-webkit-user-drag:none;-webkit-touch-callout:none}
/* The painted scene is an interaction surface, never a draggable image or text selection. */
.lantern-scene,.lantern-heading{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.room-lit{opacity:0;transition:opacity 1.8s ease}
.lantern-room-shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#050404d4 0%,#05040460 36%,transparent 63%),linear-gradient(0deg,#050404fa 0%,#05040400 26%);z-index:2}
.lantern-heading{position:absolute;z-index:3;left:var(--page-pad);top:26%;pointer-events:none;transition:opacity .8s,transform .8s;max-width:47%}
.lantern-chapter{font:12px var(--mina);color:#b59b81;margin-bottom:30px}
.lantern-heading h1{font:700 clamp(54px,6vw,106px)/.95 var(--bai);letter-spacing:-.055em;color:#f2e9df}
.lantern-narrative{font:17px/1.75 var(--mina);color:#b7a594;margin-top:28px}
.fleet-beacon,.lamp-target{position:absolute;z-index:4;background:transparent;padding:0;border:0;transform:translate(-50%,-50%);touch-action:none;color:#e5c7a2}
.fleet-beacon{left:90.97%;top:12.64%;width:64px;height:64px;cursor:grab}
.fleet-beacon:active{cursor:grabbing}
.beacon-core{position:absolute;left:50%;top:50%;width:6px;height:6px;transform:translate(-50%,-50%);border-radius:50%;background:#fff9e9;box-shadow:0 0 8px 3px #ffd68a,0 0 30px 12px #ffb25080;animation:beacon-breathe 3.8s ease-in-out infinite}
.beacon-core:before,.beacon-core:after{content:'';position:absolute;left:50%;top:50%;height:1px;width:50px;transform:translate(-50%,-50%);background:linear-gradient(90deg,transparent,#fff6d7,transparent);opacity:.7}
.beacon-core:after{transform:translate(-50%,-50%) rotate(90deg);width:27px}
.beacon-label{position:absolute;right:50%;top:70px;white-space:nowrap;font:11px/1.4 var(--mina);letter-spacing:.015em;opacity:.8;transition:opacity .5s;pointer-events:none}
.fleet-beacon:hover .beacon-label,.fleet-beacon:focus-visible .beacon-label{opacity:1;color:#fff3db}
.lamp-target{left:89.1%;top:40%;width:108px;height:135px;border-radius:50%;cursor:pointer;visibility:hidden}
.lamp-target:disabled{cursor:default}
.lamp-target-ring{position:absolute;inset:8px 18px;border:1px solid #efb76e55;border-radius:50%;box-shadow:0 0 25px #f8a54215;opacity:.6;transition:opacity .3s,box-shadow .3s}
.lamp-target-label{position:absolute;right:90%;top:74%;white-space:nowrap;font:12px var(--mina);color:#eed0a6;pointer-events:none}
.lamp-target.near .lamp-target-ring,.lamp-target:hover .lamp-target-ring{opacity:1;box-shadow:0 0 40px #ffa43688;border-color:#ffe5b2}
[data-lantern-state=carrying] .lamp-target{visibility:visible}
/* Keep the source rendered during pointer capture; visibility:hidden cancels native drags. */
[data-lantern-state=carrying] .fleet-beacon{opacity:0}
.lamp-bloom{position:absolute;pointer-events:none;left:89.1%;top:40%;width:60%;aspect-ratio:1;transform:translate(-50%,-50%);background:radial-gradient(circle,#fff3cf60 0,#ffb66125 8%,#b9682518 27%,transparent 66%);opacity:0;transition:opacity 1.4s ease;mix-blend-mode:screen}
.carried-light{position:absolute;left:0;top:0;width:0;height:0;z-index:5;pointer-events:none;opacity:0}
.carried-light>span{position:absolute;left:-5px;top:-5px;width:10px;height:10px;border-radius:50%;background:#fff7df;box-shadow:0 0 9px 5px #ffc67f,0 0 35px 16px #fb99175c,0 0 100px 40px #e88a2722}
.carried-light i{position:absolute;left:-1px;top:-1px;width:2px;height:2px;border-radius:50%;background:#fff1c5;animation:ember-drift 1.2s ease-out infinite}
.carried-light i:nth-child(2){animation-delay:-.3s;--drift:18px}.carried-light i:nth-child(3){animation-delay:-.6s;--drift:-24px}.carried-light i:nth-child(4){animation-delay:-.9s;--drift:8px}
[data-lantern-state=carrying] .carried-light{opacity:1}
[data-lantern-state=igniting] .carried-light{animation:ember-catch 1s ease both}
[data-lantern-state=igniting] .room-lit,[data-lantern-state=lit] .room-lit{opacity:1}
[data-lantern-state=igniting] .lamp-bloom,[data-lantern-state=lit] .lamp-bloom{opacity:1}
[data-lantern-state=lit] .fleet-beacon,[data-lantern-state=igniting] .fleet-beacon{visibility:hidden}
.lantern-direction{position:absolute;left:var(--page-pad);bottom:140px;z-index:3;max-width:460px;pointer-events:none}
.direction-line{display:block;width:45px;height:1px;background:#cb965c;margin-bottom:19px}
.lantern-direction p{font:16px/1.6 var(--mina);color:#ead4bc}
.lantern-direction>span:last-child{display:block;font:11px/1.7 var(--mina);margin-top:5px;color:#b9a18a}
.lantern-discovery{position:absolute;z-index:3;left:var(--page-pad);top:24%;max-width:min(520px,49%);animation:chart-emerges 1.6s ease both}
.lantern-discovery[hidden],.lantern-replay[hidden]{display:none}
.discovery-caption{color:#d8a15f;font:12px var(--mina);margin-bottom:22px}
.lantern-discovery h2:focus{outline:none}
.lantern-discovery h2{font:700 clamp(28px,3.2vw,47px)/1.1 var(--bai);letter-spacing:-.025em}
.discovery-coordinates{display:flex;flex-direction:column;gap:5px;margin:28px 0 23px;color:#ffd39e;font:400 clamp(29px,3.4vw,47px)/1.12 var(--bai);letter-spacing:-.025em;font-variant-numeric:tabular-nums}
.discovery-riddle{font:15px/1.75 var(--mina);color:#cdbba7;margin-bottom:24px}
.lantern-discovery .button{font-size:12px;min-height:50px}
#chamber[data-lit=true] .lantern-heading,#chamber[data-lit=true] .lantern-direction{opacity:0;visibility:hidden;transform:translateY(-8px)}
.lantern-bottom{position:absolute;left:var(--page-pad);right:var(--page-pad);bottom:49px;display:flex;align-items:center;gap:28px;z-index:4;padding-top:15px;border-top:1px solid #aa83512b}
.lantern-back,.lantern-replay{font:11px var(--mina);background:transparent;padding:10px 0;min-height:44px;color:#bca58f;display:flex;gap:10px;align-items:center}
.lantern-back:hover,.lantern-replay:hover{color:#ffe4bd}
.lantern-motto{display:none}
body[data-stage=chamber] .audio-dock{bottom:max(48px,calc(env(safe-area-inset-bottom) + 16px))}
body[data-stage=chamber] .preview-footer{display:none}
body[data-stage=chamber] .grain{opacity:.025}
@keyframes beacon-breathe{0%,100%{opacity:.65;scale:.85}45%{opacity:1;scale:1.12}}
@keyframes ember-drift{from{opacity:.85;transform:translate(0,0)}to{opacity:0;transform:translate(var(--drift,-15px),24px)}}
@keyframes ember-catch{0%{opacity:1;scale:1}35%{opacity:1;scale:3}100%{opacity:0;scale:1}}
@keyframes chart-emerges{from{opacity:0;filter:blur(3px);transform:translateY(8px)}to{opacity:1;filter:none;transform:none}}
@media(min-width:761px) and (max-height:800px){#chamber{min-height:650px}.lantern-heading{top:25%}.lantern-heading h1{font-size:74px}.lantern-discovery{top:21%}.lantern-discovery h2{font-size:35px}.discovery-coordinates{font-size:38px;margin:20px 0}.discovery-riddle{margin-bottom:17px}.lantern-direction{bottom:121px}.lantern-narrative{font-size:15px;margin-top:22px}}
@media(max-width:760px){
 #chamber{height:100svh;min-height:720px;padding:0}
 #chamber .lantern-scene{inset:180px 0 115px}
 .lantern-heading{left:24px;top:112px;max-width:calc(100% - 48px)}
 .lantern-chapter{font-size:11px;margin-bottom:15px}
 .lantern-heading h1{font-size:clamp(37px,9.1vw,58px);line-height:.98;letter-spacing:-.05em}
 .lantern-narrative{display:none}
 .lantern-room-shade{background:linear-gradient(0deg,#050404 0%,transparent 31%,transparent 70%,#050404 100%)}
 .beacon-label{font-size:10px;top:61px;right:0}
 .lamp-target-label{font-size:11px;right:98%;top:62%}
 .lantern-direction{left:24px;right:24px;bottom:210px;max-width:none;background:linear-gradient(90deg,#050404ce,transparent);padding-top:10px}
 .direction-line{width:30px;margin-bottom:12px}
 .lantern-direction p{font-size:14px}.lantern-direction>span:last-child{font-size:11px}
 .lantern-discovery{left:24px;right:24px;top:auto;bottom:208px;max-width:none;padding-top:70px;background:none;isolation:isolate}
 .lantern-discovery:before{content:"";position:absolute;inset:0 -24px;z-index:-1;background:linear-gradient(0deg,#050404f5 0%,#050404dd 65%,transparent);pointer-events:none}
 .discovery-caption{font-size:10px;margin-bottom:12px}
 .lantern-discovery h2{font-size:27px;max-width:340px}
 .discovery-coordinates{font-size:32px;gap:3px;margin:17px 0}
 .discovery-riddle{font-size:12px;margin-bottom:18px}
 .lantern-discovery .button{min-height:48px;font-size:12px}
 .lantern-bottom{left:24px;right:24px;bottom:146px;gap:18px;padding-top:0}
 .lantern-motto{display:none}.lantern-back,.lantern-replay{font-size:10px}
 body[data-stage=chamber] .audio-dock{bottom:max(20px,env(safe-area-inset-bottom));right:20px}
 #chamber[data-lit=true] .lantern-heading{opacity:0;visibility:hidden}
}
@media(max-width:370px){.lantern-discovery h2{font-size:24px}.discovery-coordinates{font-size:29px}.lantern-discovery{bottom:208px}.lantern-bottom{bottom:146px}.lantern-direction p{font-size:13px}}
@media(prefers-reduced-motion:reduce){.fleet-beacon *,.carried-light *,.carried-light,.lantern-discovery{animation:none!important}.room-lit,.lamp-bloom,.lantern-heading{transition:none!important}}

@media(max-width:760px) and (max-height:719px){body[data-stage=chamber]>.audio-dock{position:absolute;top:588px;bottom:auto}}
/* Short windows can scroll; sound controls must not cover the physical lantern. */
@media(min-width:761px) and (max-width:1100px){.lantern-heading{max-width:58%}.lantern-heading h1{font-size:clamp(50px,6.4vw,70px)}}
@media(min-width:761px) and (max-height:649px){body[data-stage=chamber]>.audio-dock{position:absolute;top:500px;bottom:auto}}
