@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap');
:root{font-family:'IBM Plex Mono',monospace;color:#d6e5cf;background:#111914;font-synthesis:none;color-scheme:dark}*{box-sizing:border-box}body{margin:0;overflow:hidden}#stage{position:fixed;inset:0;touch-action:none;outline:none}canvas{display:block;width:100%;height:100%;cursor:grab}canvas:active{cursor:grabbing}header{position:fixed;top:30px;left:35px;right:35px;display:flex;align-items:flex-start;justify-content:space-between;pointer-events:none}h1{font-size:18px;letter-spacing:3px;font-weight:500;margin:0}h1 span{color:#7f917c;font-size:13px}header p{font-size:12px;color:#a2b49b;margin:9px 0}.status{font-size:10px;letter-spacing:1.5px;display:flex;align-items:center;gap:9px;color:#93a98b}.pulse{width:5px;height:5px;background:#b2ed91;box-shadow:0 0 8px #b2ed9170}footer{position:fixed;bottom:26px;left:35px;right:35px;display:flex;align-items:center;justify-content:space-between;gap:18px;pointer-events:none}.instructions{font-size:10px;letter-spacing:1px;color:#99ad91}.instructions span{margin:0 8px;color:#54684e}.controls{display:flex;align-items:center;background:#142018e8;border:1px solid #45583d;padding:3px;pointer-events:auto;backdrop-filter:blur(10px)}button{font:inherit;color:#d6e5cf;cursor:pointer;border:0;background:transparent}button:hover{background:#34462c;color:#c9ffa7}button:focus-visible{outline:2px solid #c9ffa7;outline-offset:3px}.controls button{height:35px;min-width:37px;font-size:21px}.controls #fit{font-size:10px;letter-spacing:1px;padding:0 12px}#pause{font-size:16px}.divider{height:20px;width:1px;background:#45583d;margin:0 4px}#zoom{font-size:10px;color:#91aa86;min-width:53px;text-align:center}.corner{position:fixed;width:12px;height:12px;border-color:#52644a;border-style:solid;pointer-events:none}.tl{top:12px;left:12px;border-width:1px 0 0 1px}.tr{top:12px;right:12px;border-width:1px 1px 0 0}.bl{bottom:12px;left:12px;border-width:0 0 1px 1px}.br{bottom:12px;right:12px;border-width:0 1px 1px 0}#tooltip{position:fixed;pointer-events:none;background:#0e180eea;padding:8px 12px;border:1px solid #688359;font-size:12px;max-width:260px;z-index:4}#signal{position:fixed;left:35px;bottom:95px;max-width:340px;background:#111c14e8;border-left:2px solid #a4d980;padding:19px 36px 20px 22px;backdrop-filter:blur(8px)}#signalNumber{font-size:10px;letter-spacing:1.4px;color:#a7d88a}h2{font-size:20px;font-weight:500;margin:10px 0}#signal p{font-size:13px;line-height:1.7;color:#b9c8b1;margin:0}#closeSignal{position:absolute;right:6px;top:5px;font-size:22px}#loading{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);font-size:14px;text-align:center;line-height:1.6;color:#b6d0a6;max-width:80vw}#loading[hidden]{display:none}@media(max-width:700px){header{top:25px;left:24px;right:24px}h1{font-size:14px;letter-spacing:2px}header p{font-size:10px}.status{display:none}footer{left:20px;right:20px;bottom:23px;flex-direction:column-reverse;gap:13px}.instructions{font-size:8px;letter-spacing:.3px}.instructions span{margin:0 3px}#signal{left:20px;bottom:120px;right:20px;max-width:320px}.controls button{height:38px;min-width:41px}#tooltip{display:none}}

:root{background:#090e13;color:#dbe3df}.status{color:#be8290}.pulse{background:#da526d;box-shadow:0 0 8px #d84b6450}header p{color:#a49b9f;letter-spacing:1.5px;font-size:11px}.world-key{position:fixed;top:83px;left:35px;display:flex;align-items:center;gap:8px;font-size:9px;letter-spacing:1px;color:#a0a6ad;pointer-events:none}.blue-pill,.red-pill{width:12px;height:6px;border-radius:5px;background:#5d9dde}.red-pill{background:#e25868;margin-left:12px}.guard-key{color:#dc3764;font-size:16px;margin-left:12px}.controls{background:#111b23e8;border-color:#40515c}.controls #sound{font-size:10px;letter-spacing:.5px;padding:0 10px;white-space:nowrap;min-width:99px}.controls #sound[aria-pressed="true"]{color:#e2818e}.volume{width:62px;padding-right:9px;display:flex}.volume input{width:100%;accent-color:#d9687e}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}#signal{background:#101820eb;border-left-color:#df647a}#signalNumber{color:#e8909e}button:hover{background:#35424e;color:#eff6f2}button:focus-visible{outline-color:#ee8795}.instructions{padding:6px;background:#091017c9}@media(max-width:700px){.world-key{left:24px;top:80px;font-size:8px;gap:5px}.controls{max-width:calc(100vw - 30px)}.controls button{min-width:29px}.controls #fit{padding:0 6px;font-size:9px}.controls #sound{min-width:80px;padding:0 5px;font-size:9px}.volume{width:42px}#zoom{min-width:40px}.divider{margin:0 2px}}

.controls #testSound{font-size:10px;min-width:39px;padding:0 6px;color:#d2a9b2}#audioFeedback{position:fixed;right:35px;bottom:78px;max-width:350px;background:#15212bee;border:1px solid #65717b;padding:12px 15px;font-size:12px;line-height:1.6;color:#dfe7e8}#audioFeedback[hidden]{display:none}@media(max-width:700px){.volume{width:32px}.controls #sound{min-width:70px;font-size:8px}.controls #testSound{min-width:30px;font-size:8px}.controls #fit{font-size:8px}.controls button{min-width:25px}#zoom{min-width:33px;font-size:9px}#audioFeedback{right:20px;left:20px;bottom:112px;max-width:none}}

/* Nearest-neighbor pixels and a restrained printed-dot surface. */
#stage canvas{image-rendering:pixelated}#stage::after{content:"";position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(#070c28 0.55px,transparent .8px);background-size:3px 3px;opacity:.14}body{background:#141c2d}.controls{box-shadow:0 4px 24px #080d1866}.world-key{color:#c0c6d3}header h1{color:#f1e5d4}header p{color:#c5a6ad}#audioNow{position:fixed;bottom:76px;right:35px;color:#ebce9c;font-size:10px;letter-spacing:.5px;background:#152033dd;padding:8px 12px;border-left:2px solid #efa58d;pointer-events:none}#audioFeedback{bottom:115px}@media(max-width:700px){#audioNow{bottom:113px;right:20px;left:20px;font-size:9px;text-align:center}#audioFeedback{bottom:154px}}

#mixer{position:relative;font-size:10px;color:#edcaa0}#mixer summary{cursor:pointer;list-style:none;padding:12px 9px}#mixer>div{position:absolute;bottom:48px;right:0;width:215px;background:#142133;border:1px solid #718197;padding:16px;box-shadow:0 8px 30px #0008}#mixer label{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:10px 0;font-size:10px}#mixer input{width:108px;accent-color:#edae82}@media(max-width:700px){#mixer summary{padding:10px 5px;font-size:8px}.volume{display:none}}

.controls #enterWorld{font-size:10px;padding:0 12px;color:#f5c894;background:#70504744;border-right:1px solid #665653;white-space:nowrap}
#exploreHud[hidden]{display:none}#exploreHud{position:fixed;inset:0;pointer-events:none;z-index:5}#exploreHud button{pointer-events:auto;border:1px solid #a8b8c344;background:#121e2bdc;font-size:10px;letter-spacing:1px;padding:11px 14px;border-radius:2px;backdrop-filter:blur(12px)}kbd{font:inherit;font-size:9px;opacity:.6;margin-left:8px}.walk-top{position:absolute;left:34px;right:34px;top:30px;display:flex;align-items:flex-start;justify-content:space-between}.walk-top>div{padding:14px 18px;background:linear-gradient(90deg,#0d1727dc,#0d172740);border-left:2px solid #edba8a;max-width:65%}#walkRoomNumber{font-size:10px;letter-spacing:2px;color:#eabb8e}#walkRoomName{font-size:23px;margin:8px 0;color:#f4eee0;text-shadow:0 2px 10px #000}#visitedCount{font-size:9px;letter-spacing:1px;color:#a7c2c7;margin:0}#crosshair{position:absolute;left:50%;top:50%;width:4px;height:4px;background:#f7e5c9bb;box-shadow:0 0 0 1px #07101c88;border-radius:50%}.walk-map{position:absolute;right:34px;top:132px;padding:12px;background:#0e1b2be8;border:1px solid #63758366;width:157px}.map-caption{display:flex;justify-content:space-between;font-size:9px;color:#a0b4bf;margin-bottom:9px}#walkCompass{color:#f9cc9c}#miniMap{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}#miniMap span{display:grid;place-items:center;height:20px;background:#29394a;color:#778e9d;font-size:8px}#miniMap .visited{background:#3f635e;color:#afdbca}#miniMap .current{background:#efc393;color:#182432;box-shadow:0 0 12px #efc39355}.walk-bottom{position:absolute;left:34px;bottom:98px;max-width:470px}#walkHint{font-size:10px;letter-spacing:1px;color:#f2dcc0;text-shadow:0 1px 5px #000;background:#101d2ac9;padding:9px 12px;margin:0 0 8px}.walk-actions{display:flex;gap:6px}#walkStory{background:#101c2be8;border-left:2px solid #edb786;padding:14px 18px;font-size:14px;line-height:1.6;max-width:410px;color:#e0e8e1;margin-bottom:0}.walk-pad{position:absolute;right:35px;bottom:142px;display:grid;grid-template-columns:repeat(3,42px);grid-template-rows:repeat(2,39px);gap:4px}.walk-pad button{font-size:20px!important;padding:5px!important;touch-action:none;user-select:none}.walk-pad button:first-child{grid-column:2}.walk-pad button:nth-child(2){grid-column:1;grid-row:2}.walk-pad button:nth-child(3){grid-column:2;grid-row:2}.walk-pad button:nth-child(4){grid-column:3;grid-row:2}.walk-pad button:active{background:#b8875b!important;color:#102031}.exploring header,.exploring .world-key,.exploring .instructions,.exploring .corner,.exploring #tooltip,.exploring #signal,.exploring #enterWorld,.exploring #minus,.exploring #plus,.exploring #fit,.exploring #zoom{display:none!important}.exploring #stage::after{opacity:.055}.exploring canvas{image-rendering:auto;cursor:crosshair}.exploring footer{justify-content:flex-end;z-index:8}.exploring #audioNow,.exploring #audioFeedback{z-index:8}.exploring #stage{background:#101724}.enter-vignette{position:absolute;inset:0;box-shadow:inset 0 0 100px #0b152755;pointer-events:none}.descending .walk-map,.descending .walk-bottom,.descending .walk-pad{opacity:0}.descending .enter-vignette{box-shadow:inset 0 0 220px #090e2199}.walk-map,.walk-bottom,.walk-pad{transition:opacity .5s}.exploring #pause{display:none}.exploring footer .divider{display:none}
@media(max-width:700px){.controls #enterWorld{font-size:8px;padding:0 5px}.walk-top{left:16px;right:16px;top:18px}.walk-top>div{padding:10px 12px;max-width:65%}#walkRoomName{font-size:16px}#walkRoomNumber{font-size:8px;letter-spacing:1px}#exploreHud button{padding:9px;font-size:8px}#returnMap kbd{display:none}.walk-map{right:16px;top:110px;width:117px;padding:8px}#miniMap{gap:3px}#miniMap span{height:15px;font-size:6px}.walk-bottom{left:16px;right:16px;bottom:162px;max-width:none}#walkHint{font-size:8px;width:fit-content}#mouseLook{display:none}#walkStory{font-size:12px;max-width:70%;padding:10px}.walk-pad{left:18px;right:auto;bottom:65px;grid-template-columns:repeat(3,44px);grid-template-rows:repeat(2,40px)}.exploring footer{left:auto;right:16px;bottom:20px;max-width:65vw}.exploring #audioNow{left:auto;right:16px;bottom:69px;max-width:52vw;font-size:8px}.exploring #audioFeedback{bottom:180px}.exploring .controls #testSound{display:none}.exploring #mixer>div{bottom:47px}}
/* Escape sequence UI shares the existing visual language. */
#escapeStart{position:fixed;left:35px;top:116px;width:290px;padding:13px 15px;background:#111d2ce8;border-left:2px solid #edba8a;z-index:3}#escapeStart button{font-size:12px;letter-spacing:1px;color:#f1ca99;padding:4px 0}#escapeSummary{font-size:10px;line-height:1.6;color:#bbc8cb;margin:7px 0 0}.exploring #escapeStart{display:none}
#missionPanel{position:absolute;left:34px;top:155px;width:285px;padding:13px 16px;background:#101e2bdc;border-left:2px solid #9ad6c3}#questStep{font-size:9px;letter-spacing:1.6px;color:#9ad6c3}#questObjective{font-size:12px;line-height:1.55;margin:8px 0 12px;color:#f2e5cf}#questInventory{font-size:9px;color:#bfdbd6;margin:0 0 7px}#questSave{font-size:8px;color:#96a7b5;display:block}#replayClue{margin-top:10px;padding:6px 8px!important;font-size:8px!important}#miniMap .objective{outline:1px solid #9edcc6;outline-offset:1px}
#interact{position:absolute;top:56%;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;max-width:85vw;background:#142b2bef!important;border-color:#acd4bf!important;font-size:12px!important;text-align:left}#interact kbd{margin:0;padding:6px 9px;background:#b1dec9;color:#173128;font-size:13px;opacity:1}#interact[hidden],#questCaption[hidden],#replayClue[hidden]{display:none}
#questCaption{position:absolute;left:50%;bottom:180px;transform:translateX(-50%);width:min(610px,70vw);background:#0c1825f2;border-top:2px solid #c5ddcd;padding:18px 40px 18px 22px;pointer-events:auto}#questSpeaker{font-size:10px;letter-spacing:1.5px;color:#abd9ca}#questLine{font-size:15px;line-height:1.6;color:#f0ede3;margin:9px 0 0}#exploreHud #dismissCaption{position:absolute;top:5px;right:5px;padding:3px 8px;background:transparent;border:0;font-size:20px}
#runToggle[aria-pressed="true"]{background:#345e52!important;color:#d8ffee!important;border-color:#9dcbb6!important}#movementMode{position:absolute;right:35px;bottom:232px;font-size:9px;letter-spacing:1px;background:#152333cf;padding:5px 8px;color:#e4c393}.walk-actions{flex-wrap:wrap}#portalFlash{position:absolute;inset:0;background:#afdccc;opacity:0;pointer-events:none;z-index:20}#portalFlash.flash{animation:portal-arrival .6s ease-out}@keyframes portal-arrival{from{opacity:.8}to{opacity:0}}.descending #missionPanel,.descending #movementMode{visibility:hidden}
@media(max-width:700px){#escapeStart{left:24px;top:110px;width:240px}#missionPanel{left:16px;top:116px;width:calc(100vw - 160px);padding:10px;max-width:230px}#questObjective{font-size:10px;margin:6px 0 9px}#questStep,#questInventory{font-size:8px;letter-spacing:.4px}#questSave{font-size:7px}#questCaption{width:calc(100vw - 32px);bottom:265px;padding:13px 32px 13px 15px;max-height:32vh;overflow:auto}#questLine{font-size:12px;line-height:1.5}#questSpeaker{font-size:8px}#interact{top:53%;font-size:10px!important;padding:8px!important}#movementMode{left:18px;right:auto;bottom:153px;font-size:8px}.walk-bottom{bottom:176px}.walk-actions{gap:4px}#runToggle{color:#bde8d6!important}#walkStory{max-width:100%;max-height:110px;overflow:auto}}
@media(prefers-reduced-motion:reduce){#portalFlash.flash{animation:none}}
