:root{font-family:"Microsoft YaHei UI","Microsoft YaHei","PingFang SC",sans-serif;color:#302f2a;background:#ece8df;font-synthesis:none;--ink:#302f2a;--muted:#625f56;--line:#d8d3c8;--paper:#f9f7f1;--accent:#4b5d4f}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}button,a,input{touch-action:manipulation}button,a{font:inherit}button{border:0;color:inherit;background:transparent;cursor:pointer}button:active{transform:translateY(1px)}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #4b5d4f;outline-offset:4px}::selection{background:#c6d1c2;color:#243323}#viewport{position:absolute;inset:0}#viewport canvas{display:block;width:100%;height:100%;touch-action:none}button,a{transition:background-color .16s ease,color .16s ease}.topbar{position:absolute;top:22px;left:30px;right:30px;display:flex;align-items:center;justify-content:space-between;gap:20px;pointer-events:none}.topbar>*{pointer-events:auto}.identity{display:flex;gap:13px;align-items:center;background:rgba(249,247,241,.94);padding:12px 18px;border-radius:12px}.identity svg{width:34px;height:34px;fill:none;stroke:#4b5d4f;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}h1{font-size:20px;font-weight:600;letter-spacing:.06em;line-height:1.4;margin:0}.identity span{font-size:11px;color:var(--muted);letter-spacing:.06em}.modes{display:flex;padding:5px;background:var(--paper);border-radius:10px;box-shadow:0 3px 18px #3533260c}.modes button{padding:11px 24px;font-size:13px;border-radius:7px}.modes button.active{background:var(--accent);color:#fff}.subtle{padding:12px 16px;background:var(--paper);border-radius:8px;font-size:12px}.sidebar{position:absolute;left:30px;top:119px;bottom:96px;width:248px;padding:21px 19px;background:rgba(249,247,241,.96);border-radius:12px;display:flex;flex-direction:column;box-shadow:0 6px 30px #4540330a}.panel-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}h2{font-size:15px;font-weight:600;margin:0}.icon-button{font-size:22px;line-height:24px;width:28px;height:28px;color:var(--muted)}#panel-content{overflow:auto;scrollbar-width:thin;scrollbar-color:#c4bfb1 transparent}.floor-tabs{display:flex;border-bottom:1px solid var(--line);gap:7px}.floor-tabs button{padding:10px 14px;font-size:12px;border-bottom:2px solid transparent}.floor-tabs .selected{border-color:var(--accent);color:var(--accent);font-weight:600}.floor-note{font-size:11px;color:var(--muted);margin:12px 0 16px;line-height:1.7}.rooms{display:grid;gap:3px}.rooms button{display:flex;justify-content:space-between;align-items:center;text-align:left;font-size:12px;padding:9px 10px;border-radius:5px}.rooms button span{font-size:13px;color:#8a8b7f}.rooms button.selected{background:#e5e9de;color:#344332}.display-settings{border-top:1px solid var(--line);margin-top:22px;padding-top:18px}h3{font-size:11px;color:var(--muted);font-weight:500;margin:0 0 12px}.display-settings label{display:flex;justify-content:space-between;align-items:center;min-height:33px;font-size:11px;cursor:pointer}.display-settings input{appearance:none;width:28px;height:16px;background:#c6c4ba;border-radius:20px;position:relative;margin:0;cursor:pointer}.display-settings input:after{content:"";position:absolute;left:3px;top:3px;width:10px;height:10px;background:#fff;border-radius:50%;transition:transform .16s ease}.display-settings input:checked{background:var(--accent)}.display-settings input:checked:after{transform:translateX(12px)}.primary{width:100%;display:flex;justify-content:space-between;align-items:center;background:var(--accent);color:#fff;padding:12px 11px;border-radius:6px;font-size:11px;margin-top:20px;min-height:42px}.source-note{font-size:11px;color:var(--muted);line-height:1.9;margin:14px 0 0}.view-controls{position:absolute;bottom:78px;left:calc(50% + 90px);transform:translateX(-50%);display:flex;gap:3px;padding:5px;background:var(--paper);border-radius:9px}.view-controls button{font-size:11px;min-width:52px;min-height:34px;border-radius:6px}.view-controls .selected{background:#e5e9de;color:#354c39}.position-label{position:absolute;right:30px;top:121px;display:flex;gap:9px;align-items:center;font-size:11px;background:var(--paper);padding:10px 13px;border-radius:6px}.dot{width:6px;height:6px;border-radius:50%;background:#677d5d}#evidence{color:var(--muted);padding-left:8px;border-left:1px solid var(--line)}footer{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:14px 30px;font-size:11px;background:var(--paper);border-top:1px solid var(--line);gap:10px}footer>span{color:var(--muted)}footer div{display:flex;gap:22px;align-items:center}footer a{color:inherit;text-decoration:none}footer button,footer a{padding:6px 0}#walk-tools{position:absolute;bottom:78px;left:calc(50% + 95px);transform:translateX(-50%);white-space:nowrap;background:var(--paper);padding:5px;border-radius:8px}#walk-tools button{padding:11px 14px;font-size:11px}#door-action{color:var(--accent);font-weight:600}#touch-controls{display:none;position:absolute;right:20px;bottom:145px;text-align:center}#touch-controls button{width:45px;height:45px;margin:3px;background:var(--paper);border-radius:8px;font-size:12px}#touch-controls div{display:flex}body.walking .view-controls{display:none}#toast{position:absolute;bottom:140px;left:50%;transform:translateX(-50%);background:#313b30;color:#fff;padding:12px 22px;border-radius:7px;font-size:12px;opacity:0;pointer-events:none;transition:opacity .2s ease}#toast.show{opacity:1}#loading{position:absolute;inset:0;background:#eeeae0;z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;font-size:14px}#loading p{color:var(--muted);font-size:12px}.loader{height:32px;width:32px;border:2px solid #c9cbbf;border-top-color:#4b5d4f;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}dialog{width:min(560px,92vw);max-height:85vh;border:0;border-radius:14px;padding:32px;background:var(--paper);color:var(--ink);box-shadow:0 14px 60px #0002}dialog::backdrop{background:#252a2955}dialog h2{font-size:24px;font-weight:500;margin:10px 0 18px}dialog p{font-size:13px;line-height:1.8;color:var(--muted)}dialog dl{display:grid;grid-template-columns:105px 1fr;gap:17px 20px;font-size:12px;line-height:1.8;margin:25px 0}dt{font-weight:600}dd{margin:0;color:var(--muted)}dialog .close{float:right;padding:4px;font-size:12px;color:var(--muted)}.help-foot{border-top:1px solid var(--line);padding-top:16px}.sidebar.collapsed{bottom:auto}.sidebar.collapsed #panel-content{display:none}.sidebar.collapsed .panel-title{margin:0}@media(hover:hover){button:hover,footer a:hover{background:#e6e9df}.primary:hover,.modes button.active:hover{background:#394e3d}.rooms button:hover{background:#e9ece3}}@media(max-width:900px){.topbar{left:16px;right:16px;top:16px;gap:8px}.identity{padding:10px 12px}.identity svg{display:none}.modes button{padding:10px 17px}.sidebar{left:16px;width:218px;top:104px;bottom:94px;padding:16px}.position-label{right:16px;top:104px}.view-controls,#walk-tools{left:calc(50% + 65px)}footer{padding:11px 16px}footer div{gap:14px}}@media(max-width:640px){.topbar{flex-wrap:wrap;align-items:flex-start}.identity{padding:10px 12px}h1{font-size:17px}.identity span{font-size:11px}.modes{order:3;width:auto;position:absolute;top:73px;right:0}.modes button{padding:10px 15px;font-size:12px}.subtle{font-size:11px;padding:12px}.sidebar{top:158px;bottom:auto;max-height:calc(100% - 280px);width:180px;padding:13px}.sidebar .panel-title{margin-bottom:10px}.sidebar h2{font-size:13px}.floor-tabs{gap:0}.floor-tabs button{padding:9px 12px}.floor-note{font-size:11px;margin:8px 0}.rooms button{padding:9px 6px;font-size:11px}.display-settings{margin-top:12px;padding-top:12px}.position-label{top:116px;left:16px;right:auto;padding:7px 9px;max-width:calc(100% - 32px);font-size:11px}.view-controls{left:50%;bottom:76px;max-width:95%}.view-controls button{min-width:48px}footer{align-items:center;padding:10px 13px;min-height:57px}footer>span{max-width:48%;font-size:11px;line-height:1.6}footer div{gap:11px;font-size:11px}footer #capture{display:none}#walk-tools{left:16px;right:16px;bottom:74px;transform:none;display:flex;justify-content:space-between}#walk-tools[hidden]{display:none}#walk-tools button{padding:10px 6px;font-size:11px}body.walking #touch-controls{display:block}#toast{bottom:130px;max-width:90%;font-size:11px;white-space:nowrap}.source-note{font-size:11px}.primary{font-size:11px;padding:10px 7px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}

/* Touch movement stays under the left thumb; actions are independent on the right. */
#touch-controls{display:none;position:absolute;inset:0;pointer-events:none;text-align:center}
#touch-controls #move-stick{position:absolute;left:max(20px,env(safe-area-inset-left));bottom:148px;width:124px;height:124px;border:1px solid #c4c9bb;border-radius:50%;background:#f9f7f1c9;box-shadow:0 3px 18px #35332618;display:grid;place-items:center;pointer-events:auto;touch-action:none;user-select:none}
#touch-controls .stick-guide{position:absolute;width:84px;height:84px;border:1px solid #b4bead;border-radius:50%;pointer-events:none}
#touch-controls #stick-knob{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--accent);color:white;font-size:12px;pointer-events:none;will-change:transform}
#touch-controls #touch-actions{position:absolute;right:max(20px,env(safe-area-inset-right));bottom:148px;display:flex;flex-direction:column;gap:12px;pointer-events:auto}
#touch-controls #touch-actions button{width:66px;height:56px;margin:0;border:1px solid var(--line);border-radius:12px;touch-action:none;user-select:none;font-size:13px;background:var(--paper)}
#touch-controls #touch-run[aria-pressed="true"]{background:var(--accent);color:white;border-color:var(--accent)}
@media(max-width:640px),(pointer:coarse){body.walking #touch-controls{display:block}}
@media(pointer:coarse) and (orientation:landscape) and (max-height:500px){#touch-controls #touch-actions{bottom:120px}/* Center follows the marked landscape thumb position: 14.4% across, 71.8% down. */#touch-controls #move-stick{left:max(env(safe-area-inset-left),calc(14.4vw - 54px));bottom:calc(28.2vh - 54px);bottom:calc(28.2dvh - 54px);width:108px;height:108px}#touch-controls #touch-actions{flex-direction:row}.walking #panel.collapsed{max-width:180px}.walking #walk-tools{left:50%;bottom:66px;white-space:nowrap}.walking footer>span{max-width:50%}}
