:root{--ink:#e5e2d6;--paper:#f6f3e9;--green:#354d40}body{background:#171b18}#app{grid-template-columns:1fr;grid-template-rows:1fr;height:100dvh;min-height:320px}#app>.topbar,#app>footer{display:none}.viewport{grid-column:1}.sidebar{display:none;position:absolute;z-index:7;top:75px;bottom:auto;left:18px;max-height:calc(100dvh - 100px);overflow:auto;width:245px;padding:20px;border-radius:12px;background:#f6f3e9f2}.sidebar.open{display:block}.sidebar>.eyebrow,.sidebar h1,.intro,.metrics,.sidebar>.section-title,.settings,.assumption{display:none}.sidebar .text-button{position:static;width:100%;font-size:11px}#rooms{pointer-events:auto}.view-toolbar{top:20px}.view-caption,.compass,.scale-bar,.bottom-hint,#walk-hint{display:none!important}.minimap{width:115px;bottom:22px;right:18px;opacity:.8}.character-tools{top:78px}.home-menu{position:absolute;top:20px;left:18px;padding:11px 15px;background:#f6f3e9e8;border:1px solid #d2d8c9;border-radius:8px;color:#40533f;font:12px system-ui;z-index:5}.home-menu:focus-visible,button:focus-visible,select:focus-visible{outline:2px solid #8c977b;outline-offset:3px}
#welcome{position:fixed;inset:0;z-index:20;display:grid;place-items:center;background:#0c120ed9;color:var(--ink);transition:opacity .65s ease,background 1.4s ease;opacity:1}body.home-ready #welcome{background:#0c120e88}.welcome-copy{padding:30px;text-align:center;max-width:650px;animation:appear 1.2s .15s both}.welcome-brand{font-size:13px;letter-spacing:.3em;color:#d3d1bf;margin-bottom:34px}.welcome-copy h1{font-size:clamp(24px,4vw,40px);font-weight:450;letter-spacing:.02em;line-height:1.6;margin:0}.welcome-copy p{font-size:15px;color:#d9d7c9;font-weight:350;margin:14px 0 35px}.welcome-actions{display:flex;justify-content:center;gap:12px}.welcome-actions button{padding:13px 24px;font-size:13px;border:1px solid #ebe8d263;border-radius:5px;background:#e9e5d4;color:#26372a}.welcome-actions button+button{background:#1a241b55;color:#e7e4d4}.welcome-actions button:disabled{opacity:.4}.welcome-note{display:block;font-size:11px;color:#dedbca;margin-top:22px}#welcome.leaving{opacity:0;pointer-events:none}@keyframes appear{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
#p4-action{position:absolute;z-index:6;bottom:30px;left:50%;transform:translateX(-50%);padding:12px 23px;border-radius:24px;background:#f5f1e4ed;border:1px solid #cad2be;color:#3c503d;font:13px system-ui;box-shadow:0 4px 20px #0002}#p4-action:after{content:'  · E';font-size:10px;opacity:.6}#p4-notice{position:fixed;bottom:90px;left:50%;transform:translateX(-50%);z-index:16;color:#334e37;background:#f4efdf;max-width:85vw;padding:0 12px;border-radius:5px;font-size:12px}#p4-notice:empty{display:none}
#music-panel{position:fixed;right:24px;bottom:24px;z-index:18;width:310px;max-width:calc(100vw - 28px);padding:22px;border-radius:14px;background:#f5f1e7f7;color:#3e4d3e;border:1px solid #d1d5c4;box-shadow:0 10px 50px #0003;box-sizing:border-box}#music-panel h2{font-size:19px;font-weight:500;margin:0 0 6px}.music-close{position:absolute;right:12px;top:10px;font-size:24px;color:#66725e}#music-title{font-size:12px;margin:12px 0 4px}#music-status{font-size:11px;color:#78806b;min-height:17px}#music-panel label{display:block;font-size:11px;margin-top:13px}#music-panel select{display:block;width:100%;margin-top:5px;padding:8px;border:1px solid #cdd2c2;border-radius:5px;background:#fff9;color:#43523e;font:12px system-ui}#music-panel input{width:100%;accent-color:#5f765e}.music-transport{display:flex;justify-content:space-between;gap:7px;margin-top:16px}.music-transport button{font-size:12px;background:#e1e5d6;padding:9px;border-radius:5px;flex:1}#music-play{background:#425e49;color:#fff}.audio-note{font-size:10px;color:#8b8e7b;margin:12px 0 0}.orientation-note{display:none}
@media(max-width:760px),(pointer:coarse){.home-menu{top:12px;left:12px;padding:9px;font-size:10px}.view-toolbar{top:12px;left:auto;right:12px;transform:none}.mode-tabs button{padding:9px 11px;font-size:10px}.icon-button{width:32px}.minimap{width:88px;bottom:130px;right:12px;padding:7px}.character-tools{top:60px;max-width:260px}.sidebar{top:60px;bottom:auto;left:12px;right:auto;width:225px;pointer-events:auto}.sidebar #rooms{display:flex;flex-direction:column}.sidebar .room-button{justify-content:flex-start;padding:10px}.sidebar .room-text small{display:none}.sidebar .room-text b{font-size:12px}#joystick{left:24px;bottom:24px;width:92px;height:92px}.touch-look{display:none}#p4-action{left:auto;right:24px;transform:none;bottom:35px;max-width:200px;font-size:12px;padding:14px 20px}#p4-action:after{display:none}#music-panel{right:12px;bottom:12px;padding:18px;max-height:calc(100dvh - 24px);overflow:auto}#music-panel label{margin-top:8px}.music-transport{margin-top:10px}.audio-note{margin-bottom:0}.welcome-brand{margin-bottom:22px}.welcome-copy p{margin-bottom:23px}.welcome-copy{padding:22px}.welcome-actions button{padding:12px 18px}#info-button{top:auto}.walking .sidebar{bottom:auto}}
@media(orientation:portrait) and (max-width:760px){.orientation-note{display:block;position:absolute;bottom:12px;left:50%;transform:translateX(-50%);font-size:10px;color:#eeebdb;white-space:nowrap;z-index:4;pointer-events:none;text-shadow:0 1px 3px #000}.welcome-note{font-size:10px}.welcome-actions{flex-direction:column;max-width:210px;margin:auto}}
@media(prefers-reduced-motion:reduce){.welcome-copy{animation:none}#welcome{transition:opacity .1s}.welcome-copy{opacity:1}}
[hidden]{display:none!important}

body:not(.has-entered) .view-toolbar,body:not(.has-entered) .home-menu,body:not(.has-entered) .minimap,body:not(.has-entered) #touch-controls,body:not(.has-entered) .character-tools{visibility:hidden}

.music-shortcut{position:absolute;left:18px;bottom:22px;z-index:6;max-width:230px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:9px 13px;border:1px solid #cbd3c3;border-radius:18px;background:#f6f3e9e8;color:#41553f;font:11px system-ui}
@media(max-width:760px),(pointer:coarse){.music-shortcut{left:140px;bottom:20px;max-width:185px;font-size:10px;padding:9px 10px}}

/* Projected onto one real speaker; breathing changes opacity only. */
.speaker-marker{position:absolute;z-index:6;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center;background:none;border:0;padding:0 10px;color:#3e5142;cursor:pointer;touch-action:manipulation}
.speaker-badge{display:flex;align-items:center;gap:7px;border:1px solid #cbd1c2cc;border-radius:15px;background:#f5f1e7ed;padding:7px 10px;font:14px system-ui;white-space:nowrap;animation:speaker-breathe 3.6s ease-in-out infinite}
.speaker-caption{font:11px system-ui}.speaker-marker[data-selected="false"][data-touch="false"] .speaker-caption{display:none}
.speaker-leader{height:18px;width:1px;background:#e9e6d2bb;position:relative}.speaker-leader:after{content:'';position:absolute;bottom:-2px;left:-2px;width:5px;height:5px;border-radius:50%;background:#e9e6d2;border:1px solid #445a47}
@keyframes speaker-breathe{0%,100%{opacity:.84}50%{opacity:1}}
@media(pointer:coarse),(max-width:760px){.speaker-badge{min-height:34px;padding:5px 12px}.speaker-caption{font-size:11px}.speaker-marker{padding:0 8px}}
@media(prefers-reduced-motion:reduce){.speaker-badge{animation:none}}

/* Bathroom action reads in the requested order; touch keeps only the action. */
#p4-action[data-target="door-bathroom"]:before{content:'E · '}
#p4-action[data-target="door-bathroom"]:after{display:none}
@media(max-width:760px),(pointer:coarse){#p4-action[data-target="door-bathroom"]:before{display:none}}
