:root{--accent: #f4f7f5;--accent-contrast: #111719;font-family:Inter,Segoe UI,Microsoft YaHei,sans-serif;color:#f4f7f5;background:#0c1113;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}button,input,select{font:inherit}button{color:inherit}.weather-shell,.scene-stage{position:relative;width:100%;height:100%;min-height:420px;background:#0c1113}.scene-stage{position:absolute;top:0;right:0;bottom:0;left:0}.scene-stage canvas{display:block;width:100%;height:100%;touch-action:none}.topbar{position:fixed;z-index:999;top:max(24px,env(safe-area-inset-top));right:max(28px,env(safe-area-inset-right));display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none}.glass-control{background:#0c1113c2;border:1px solid rgba(255,255,255,.16);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.icon-button{display:grid;width:42px;height:42px;padding:0;place-items:center;border:1px solid rgba(255,255,255,.14);border-radius:6px;background:transparent;cursor:pointer;pointer-events:auto}.icon-button:hover,.icon-button:focus-visible{border-color:var(--accent);color:var(--accent);outline:none}.icon-button svg{width:18px;height:18px}.topbar .icon-button{width:44px;height:44px;border-color:#ffffff6b;border-radius:8px;background:#f4f7f538;color:#111719;box-shadow:0 1px #ffffff47 inset,0 8px 22px #00000047;backdrop-filter:blur(18px) saturate(1.05);-webkit-backdrop-filter:blur(18px) saturate(1.05);transition:background-color .12s ease,color .12s ease,border-color .12s ease,transform .12s ease}.topbar .icon-button:hover,.topbar .icon-button:focus-visible{background:#f4f7f561;border-color:#ffffffb8;color:#0a0d0e;outline:none}.topbar .icon-button:active{transform:translateY(1px)}.topbar .icon-button:disabled{background:#f4f7f51a;border-color:#ffffff2e;color:#11171966;box-shadow:none;cursor:wait;opacity:1}.topbar .icon-button svg{width:19px;height:19px;stroke-width:2.15}.walk-hint{position:fixed;z-index:20;top:max(24px,env(safe-area-inset-top));left:max(28px,env(safe-area-inset-left));display:flex;align-items:flex-start;gap:10px;padding:7px 9px;border:1px solid rgba(255,255,255,.42);border-radius:8px;background:#f4f7f538;box-shadow:0 1px #ffffff47 inset,0 8px 22px #00000047;backdrop-filter:blur(18px) saturate(1.05);-webkit-backdrop-filter:blur(18px) saturate(1.05);pointer-events:none;-webkit-user-select:none;user-select:none}.walk-hint[hidden],.walk-hint[data-hint-mode] .hint-set{display:none}.walk-hint[data-hint-mode=on-foot] .hint-set[data-for=on-foot],.walk-hint[data-hint-mode=vehicle] .hint-set[data-for=vehicle]{display:contents}.fps-counter{position:fixed;z-index:20;right:max(10px,env(safe-area-inset-right));bottom:max(8px,env(safe-area-inset-bottom));display:flex;align-items:baseline;gap:4px;color:#f4f7f5db;font:650 12px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-variant-numeric:tabular-nums;text-shadow:0 1px 3px rgba(0,0,0,.72);pointer-events:none;-webkit-user-select:none;user-select:none}.fps-unit{color:#f4f7f59e;font-size:8px;letter-spacing:.06em}.hint-movement{display:grid;grid-template-columns:64px 16px;grid-template-rows:42px auto;column-gap:9px;row-gap:4px;align-items:center;justify-items:center}.wasd{display:grid;grid-template-columns:repeat(3,20px);grid-template-rows:repeat(2,20px);gap:2px;width:64px;height:42px}.wasd-w{grid-column:2;grid-row:1}.wasd-a{grid-column:1;grid-row:2}.wasd-s{grid-column:2;grid-row:2}.wasd-d{grid-column:3;grid-row:2}.walk-hint kbd{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border:1px solid rgba(17,23,25,.22);border-bottom-color:#1117196b;border-radius:3px;background:#ffffff6b;box-shadow:inset 0 1px #ffffff73,0 1px #1117192e;color:#111719;font:650 9px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:0;transition:background-color 80ms ease,border-color 80ms ease,color 80ms ease,transform 80ms ease}.wasd kbd{width:20px;padding:0}.walk-hint kbd.is-down{border-color:var(--accent);background:var(--accent);color:var(--accent-contrast);transform:translateY(1px)}.hint-caption{color:#111719c7;font-size:8px}.hint-actions{display:grid;gap:3px;padding-left:10px;border-left:1px solid rgba(17,23,25,.16)}.hint-row{display:grid;grid-template-columns:44px minmax(48px,max-content);align-items:center;gap:6px;min-height:20px}.hint-row kbd{justify-self:end}.hint-row span{color:#111719c7;font-size:9px;white-space:nowrap}.hint-mouse{width:15px;height:22px}.hint-mouse-body{position:relative;width:100%;height:100%;overflow:hidden;border:1px solid rgba(17,23,25,.22);border-bottom-color:#1117196b;border-radius:7px 7px 8px 8px;background:#ffffff6b}.hint-mouse-body:before,.hint-mouse-body:after{content:"";position:absolute;top:0;width:50%;height:42%;background:#111719;opacity:0}.hint-mouse-body:before{left:0}.hint-mouse-body:after{right:0}.hint-mouse-wheel{position:absolute;z-index:1;top:4px;left:50%;width:2px;height:5px;margin-left:-1px;border-radius:1px;background:#1117196b}.hint-mouse-nub{position:absolute;top:64%;left:50%;width:4px;height:4px;margin:-2px 0 0 -2px;border-radius:50%;background:#111719;transform:translate(var(--look-x, 0),var(--look-y, 0));will-change:transform}.hint-mouse.is-left .hint-mouse-body:before,.hint-mouse.is-right .hint-mouse-body:after{opacity:.9}.hint-mouse.is-wheel .hint-mouse-wheel{background:#111719}.environment-panel{position:fixed;z-index:1000;top:0;right:0;width:min(360px,calc(100vw - 24px));height:100%;overflow-y:auto;padding:max(28px,env(safe-area-inset-top)) 24px max(28px,env(safe-area-inset-bottom));border-left:1px solid rgba(255,255,255,.42);border-radius:8px 0 0 8px;background:#f4f7f580;color:#111719;box-shadow:0 1px #ffffff47 inset,0 8px 22px #00000047;backdrop-filter:blur(18px) saturate(1.05);-webkit-backdrop-filter:blur(18px) saturate(1.05);transform:translate(100%);transition:transform .22s ease}.environment-panel.is-open{transform:translate(0)}.environment-panel>header{display:flex;align-items:center;justify-content:space-between;padding-bottom:24px;border-bottom:1px solid rgba(17,23,25,.12)}.environment-panel .icon-button{color:#111719;border-color:#11171947}.environment-panel .icon-button:hover,.environment-panel .icon-button:focus-visible{border-color:#111719;color:#111719}.environment-panel h2{margin:0;font-size:20px;font-weight:650;letter-spacing:0}.control-list{display:grid;margin-top:8px}.switch-row{display:grid;grid-template-columns:1fr auto;align-items:center;min-height:56px;border-bottom:1px solid rgba(17,23,25,.1);cursor:pointer}.switch-row>span,.time-control>span{display:flex;align-items:center;gap:10px;font-size:13px}.switch-row svg,.time-control svg{width:16px;height:16px;color:#11171994}.switch-row input{position:absolute;opacity:0;pointer-events:none}.switch{position:relative;width:38px;height:20px;border:1px solid rgba(17,23,25,.28);border-radius:999px;transition:background-color .16s ease,border-color .16s ease}.switch:after{content:"";position:absolute;top:3px;left:3px;width:12px;height:12px;border-radius:50%;background:#111719;transition:transform .16s ease}.switch-row input:checked+.switch{border-color:#111719;background:#111719}.switch-row input:checked+.switch:after{background:#f4f7f5;transform:translate(18px)}.switch-row:focus-within{color:#111719}.time-control{display:grid;grid-template-columns:1fr auto;gap:16px;margin-top:26px;transition:opacity .16s ease}.time-control output{font-variant-numeric:tabular-nums;font-size:12px;color:#111719}.time-control input{grid-column:1 / -1;width:100%;accent-color:#111719}.time-control.is-disabled{opacity:.36}.icon-button:disabled{cursor:wait;opacity:.35}.mode-icon{display:grid;place-items:center}.mode-icon[hidden]{display:none}.loading-screen{--loading-alpha: .78;position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:rgba(9,14,16,var(--loading-alpha));-webkit-backdrop-filter:blur(22px) saturate(.7);backdrop-filter:blur(22px) saturate(.7);transition:background-color .24s linear,opacity .6s ease,visibility .6s ease}.loading-screen.is-complete{opacity:0;visibility:hidden}.loading-content{width:min(420px,calc(100vw - 48px))}.loading-content h1{margin:0 0 18px;font-size:20px;font-weight:680;line-height:1.2;letter-spacing:.12em;text-align:center}.loading-status{margin:0 0 16px;color:#f4f7f5b8;font-size:12px;text-align:center}.progress-track{height:3px;overflow:hidden;background:#ffffff3d}.progress-track span{display:block;width:0;height:100%;background:var(--accent)}.loading-screen.has-error .progress-track span{background:#9da5a7}@media(max-width:720px){.topbar{top:max(18px,env(safe-area-inset-top));right:max(18px,env(safe-area-inset-right))}.walk-hint{top:max(18px,env(safe-area-inset-top));left:max(18px,env(safe-area-inset-left))}.loading-content{width:calc(100vw - 44px)}.loading-content h1{font-size:17px}}@media(hover:none)and (pointer:coarse){.walk-hint{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
