*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:#151424}body{display:grid;place-items:center}#room{position:relative;width:min(100vw,1000px);height:min(100vh,720px);overflow:hidden;background:linear-gradient(#f4e1d4 0 45%,#dba56e 45%);touch-action:none;user-select:none}.wall{position:absolute;inset:0 0 45% 0;background:linear-gradient(180deg,#f8eadf,#ead2c3);border-bottom:8px solid #b87852}.window{position:absolute;width:34%;height:54%;left:33%;top:8%;border:12px solid #9a664d;border-radius:8px;background:#bde3ff;box-shadow:0 8px 22px #0002}.sky{width:100%;height:100%;background:linear-gradient(#9dd9ff 0 62%,#b7d99b 62%)}.sky:before,.sky:after{content:"";position:absolute;background:white;border-radius:50%;width:60px;height:22px;top:28px;left:18%}.sky:after{left:64%;top:58px;width:72px}.shelf{position:absolute;right:5%;top:17%;width:14%;height:63%;background:repeating-linear-gradient(#825c49 0 6px,#6e4838 6px 58px);border:10px solid #674332;border-radius:6px}.poster{position:absolute;left:6%;top:18%;padding:14px 18px;border:5px solid #b97f68;background:#fff9f2;transform:rotate(-2deg);font-weight:800;letter-spacing:.08em;color:#6b66a5}.poster small{font-size:.58em;color:#9e92b6}.floor{position:absolute;inset:45% 0 0;background:repeating-linear-gradient(90deg,#d89a62 0 72px,#d3945d 72px 76px);box-shadow:inset 0 18px 35px #6d402322}.rug{position:absolute;width:42%;height:42%;left:29%;top:28%;border-radius:50%;background:#f3dfc0;box-shadow:inset 0 0 0 7px #ebccaa,0 10px 25px #75432124}.bed{position:absolute;left:3%;bottom:16%;width:24%;height:34%;background:#869ed6;border:10px solid #8a5f4a;border-radius:10px;transform:skewY(-5deg);box-shadow:0 12px 20px #0002}.pillow{position:absolute;left:7%;top:8%;width:36%;height:24%;background:#f5eee7;border-radius:45%}.desk{position:absolute;right:4%;bottom:17%;width:18%;height:28%;background:#9b6847;border-radius:6px;box-shadow:0 10px 0 #754b35}.plant{position:absolute;right:20%;bottom:38%;font-size:74px;filter:drop-shadow(0 5px 2px #0002)}#avatar{position:absolute;width:auto;height:140px;left:50%;top:65%;transform:translate(-50%,-100%);transform-origin:50% 100%;image-rendering:auto;object-fit:contain;pointer-events:none;will-change:left,top;filter:drop-shadow(0 7px 3px #422a1f45);z-index:5}.bubble{position:absolute;min-width:112px;max-width:190px;padding:9px 13px;border-radius:14px;background:#fff;color:#26253a;box-shadow:0 5px 18px #0003;border:1px solid #0001;transform:translate(-50%,-100%);z-index:6;text-align:left;line-height:1.2}.bubble:after{content:"";position:absolute;left:50%;bottom:-9px;transform:translateX(-50%);border:9px solid transparent;border-top-color:#fff;border-bottom:0}.bubble strong{display:block;font-size:14px}.bubble span{display:block;margin-top:4px;font-size:11px;color:#6d6b7c}#hint{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);background:#312d46d9;color:#fff;padding:9px 16px;border-radius:999px;font-size:13px;z-index:10}#virtualJoystick{display:none;position:absolute;left:max(18px,env(safe-area-inset-left));bottom:max(24px,calc(env(safe-area-inset-bottom) + 18px));width:112px;height:112px;border-radius:50%;background:#2f2b4559;border:2px solid #fff7;box-shadow:inset 0 0 0 14px #ffffff12,0 7px 20px #0003;z-index:20;touch-action:none;backdrop-filter:blur(3px)}#virtualJoystickKnob{position:absolute;left:50%;top:50%;width:50px;height:50px;margin:-25px 0 0 -25px;border-radius:50%;background:#fff9;border:2px solid #fff;box-shadow:0 4px 12px #0003;transform:translate(0,0);will-change:transform;pointer-events:none}@media (pointer:coarse),(max-width:700px){#virtualJoystick{display:block}}@media(max-width:520px){#room{width:100vw;height:100vh}.shelf{right:2%;width:18%}.poster{left:3%;font-size:12px}.plant{font-size:46px;right:18%}#avatar{height:128px}.bubble{max-width:154px}.bed{width:30%}.desk{width:22%}#hint{font-size:11px;white-space:nowrap;bottom:max(14px,calc(env(safe-area-inset-bottom) + 8px));left:auto;right:12px;transform:none}}@media(min-width:800px){#avatar{height:150px}}
