:root{color-scheme:dark;font-family:'IBM Plex Mono',monospace;--beam-x:18vw;--beam-y:72vh;--beam-radius:180px}
*{box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;background:#000}body{margin:0;color:#e1e3d9;font-size:16px}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;border:0;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:1px solid #d8edb0;outline-offset:9px}button:hover,a:hover{color:#fff}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[hidden]{display:none!important}#dark-room{position:fixed;inset:0;background:#000}.entry{position:absolute;inset:0;display:grid;place-items:center;z-index:4;background:#000}.entry button{padding:24px;font-size:clamp(18px,2vw,23px);font-weight:400;letter-spacing:.11em;color:#e1e3d9;line-height:1.6;background:#000}.entry button:disabled{cursor:wait}.torch-view{position:absolute;inset:0;overflow:hidden;touch-action:none;outline:none;cursor:none}.torch-scene{position:absolute;inset:0;pointer-events:none;mask-image:radial-gradient(circle var(--beam-radius) at var(--beam-x) var(--beam-y),#000 0%,#000 37%,#000d 51%,#0006 66%,transparent 83%);-webkit-mask-image:radial-gradient(circle var(--beam-radius) at var(--beam-x) var(--beam-y),#000 0%,#000 37%,#000d 51%,#0006 66%,transparent 83%);mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat}.torch-scene img{width:100%;height:100%;object-fit:cover;object-position:68% center;filter:brightness(1.3);user-select:none;-webkit-user-drag:none}.room-controls{position:absolute;z-index:5;top:max(24px,env(safe-area-inset-top));left:5%;right:5%;display:flex;justify-content:space-between;align-items:center;gap:20px;pointer-events:none;font-size:14px;color:#c1c6b7}.room-controls button,.room-controls a{padding:12px 0;pointer-events:auto;background:transparent}.room-controls a span{margin-left:9px}.torch-help{position:absolute;bottom:max(16px,env(safe-area-inset-bottom));left:5%;right:5%;margin:0;text-align:center;font:14px/1.65 'IBM Plex Mono',monospace;color:#bac1ae;pointer-events:none}.no-script{position:absolute;bottom:10%;left:10%;right:10%;z-index:10;text-align:center;font-size:16px;line-height:1.8;background:#000}.no-script a{text-decoration:underline}@media(max-width:640px){:root{--beam-radius:145px}.entry button{font-size:20px}.room-controls{font-size:14px;top:max(15px,env(safe-area-inset-top))}.torch-help{max-width:300px;margin:auto;bottom:max(22px,env(safe-area-inset-bottom));font-size:14px}.torch-scene img{object-position:68% center}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}}

/* Changes occur behind the darkness, never as a full-screen reveal. */
.torch-scene img{transform:scale(var(--approach,1));transform-origin:var(--face-x,64%) var(--face-y,27%);transition:none}
.wall-message{position:absolute;left:8%;top:58%;max-width:220px;width:42%;margin:0;font:clamp(17px,2.2vw,27px)/1.6 'IBM Plex Mono',monospace;color:#c6c9b7;white-space:pre-line;text-shadow:0 1px 5px #000;transform:rotate(-3deg)}
.room-controls:has(#put-torch[hidden]){justify-content:flex-end}
.memory-mark{position:absolute;left:55%;top:72%;width:40%;max-width:260px;font:22px/1.5 'IBM Plex Mono',monospace;color:#d1d5c3;transform:rotate(2deg);margin:0;text-shadow:1px 2px 5px #000}.memory-mark span{display:block;font-size:13px;line-height:1.7;margin-top:6px}.room-finding{position:absolute;z-index:5;left:5%;right:5%;top:100px;text-align:center;font:13px/1.7 'IBM Plex Mono',monospace;color:#bcc7a7;padding:12px;background:#000b;max-width:550px;margin:auto;border:1px solid #4b5540}.room-finding[hidden]{display:none!important}
@media(max-width:640px){.memory-mark{left:50%;top:72%;width:45%;font-size:18px}.memory-mark span{font-size:12px}.room-finding{top:84px;font-size:12px}}
@media(max-width:640px){.wall-message{left:8%;top:64%;width:70%;max-width:260px;font-size:19px}}
