body,html{margin:0;height:100vh;height:100dvh;background:#06070a;overflow:hidden}body{overscroll-behavior:none}#app{position:fixed;inset:0}#app canvas{display:block;width:100%;height:100%;touch-action:none}body.loading #grid-toggle,body.loading #hud,body.loading #minimap,body.loading #touch-controls{display:none}#hud{top:max(12px,env(safe-area-inset-top));max-width:min(58vw,520px);pointer-events:none}#grid-toggle,#hud{position:fixed;left:max(12px,env(safe-area-inset-left));color:#dfe6df;font:12px/1.5 monospace;background:rgba(0,0,0,.35);padding:8px 10px;border-radius:6px}#grid-toggle{top:calc(max(12px, env(safe-area-inset-top)) + 74px);border:1px solid #8fe3c8;cursor:pointer;pointer-events:auto;touch-action:manipulation}#grid-toggle:hover{background:rgba(143,227,200,.2)}#minimap{position:fixed;right:max(12px,env(safe-area-inset-right));top:max(12px,env(safe-area-inset-top));pointer-events:none}#minimap,#minimap-globe{width:160px;height:160px}#minimap-globe{position:absolute;inset:0;border-radius:50%;overflow:hidden;display:none}#minimap-globe-canvas{transform:scaleX(-1)}#minimap-canvas,#minimap-globe-canvas{width:160px;height:160px;display:block}#minimap-canvas{position:absolute;inset:0;border-radius:50%}.minimap-zoom{position:absolute;bottom:0;width:26px;height:26px;display:flex;align-items:center;justify-content:center;color:#dfe6df;font:15px/1 monospace;background:rgba(0,0,0,.55);border:1px solid #8fe3c8;cursor:pointer;pointer-events:auto;touch-action:manipulation;-webkit-user-select:none;user-select:none}.minimap-zoom:hover{background:rgba(143,227,200,.25)}#minimap-zoom-out{left:0}#minimap-zoom-in{right:0}body.loading #chat-panel,body.loading #chat-toggle{display:none}#chat-toggle{position:fixed;left:max(12px,env(safe-area-inset-left));top:calc(max(12px, env(safe-area-inset-top)) + 112px);color:#dfe6df;font:12px/1.5 monospace;background:rgba(0,0,0,.35);padding:8px 10px;border-radius:6px;border:1px solid #8fe3c8;cursor:pointer;touch-action:manipulation;z-index:950;-webkit-user-select:none;user-select:none}#chat-toggle.active{background:rgba(143,227,200,.25)}#chat-panel{position:fixed;z-index:940;left:max(12px,env(safe-area-inset-left));bottom:calc(max(32px, env(safe-area-inset-bottom)) + 132px);width:min(360px,calc(100vw - 24px));display:none;flex-direction:column;gap:6px}#chat-panel.open{display:flex}#chat-log{max-height:min(34vh,240px);overflow-y:auto;background:rgba(0,0,0,.42);border-radius:6px;padding:8px 10px;color:#dfe6df;font:12px/1.6 monospace;touch-action:pan-y;overscroll-behavior:contain}.chat-row{margin-bottom:4px;word-break:break-word}.chat-who{color:#8fe3c8;margin-right:6px}.chat-who:after{content:"："}.chat-notice{color:#ff8a8a}#chat-form{display:flex;gap:6px}#chat-form input{flex:1 1;min-width:0;box-sizing:border-box;padding:8px 10px;border-radius:6px;border:1px solid #3a4a44;background:rgba(13,15,18,.92);color:#dfe6df;font:16px/1.4 monospace}#chat-form button{border-radius:6px;border:1px solid #8fe3c8;background:rgba(143,227,200,.15);color:#8fe3c8;font:13px/1 monospace;cursor:pointer;touch-action:manipulation}body.loading #stats-panel,body.loading #stats-toggle{display:none}#stats-toggle{position:fixed;right:max(12px,env(safe-area-inset-right));top:calc(max(12px, env(safe-area-inset-top)) + 184px);color:#dfe6df;font:12px/1.5 monospace;background:rgba(0,0,0,.35);padding:8px 10px;border-radius:6px;border:1px solid #8fe3c8;cursor:pointer;touch-action:manipulation;z-index:950;-webkit-user-select:none;user-select:none}#stats-toggle.active{background:rgba(143,227,200,.25)}#stats-panel{position:fixed;z-index:941;right:max(12px,env(safe-area-inset-right));bottom:calc(max(32px, env(safe-area-inset-bottom)) + 132px);width:min(320px,calc(100vw - 24px));max-height:min(52vh,420px);overflow-y:auto;display:none;flex-direction:column;gap:4px;background:rgba(0,0,0,.42);border-radius:6px;padding:10px;color:#dfe6df;font:12px/1.6 monospace;touch-action:pan-y;overscroll-behavior:contain}#stats-panel.open{display:flex}.stats-heading{color:#ffe27a}.stats-section{color:#8fe3c8;margin-top:6px;padding-top:6px;border-top:1px solid #2a3a34}.stats-body{display:flex;flex-direction:column;gap:6px}.stats-muted{color:#8a938d}.stats-room-counts{color:#9fb3aa}.stats-hours{display:flex;align-items:flex-end;gap:1px;height:22px}.stats-hour{flex:1 1;background:#8fe3c8;border-radius:1px;min-height:1px}.stats-hour.empty{background:#3a4a44}.stats-trail{display:block;width:100%;height:auto;border-radius:4px}.stats-note{color:#8a938d}.stats-visited-row{display:flex;justify-content:space-between;gap:8px}.stats-visited-count{color:#9fb3aa}#privacy-notice{position:fixed;inset:0;z-index:960;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(0,0,0,.62)}.privacy-card{width:min(460px,100%);max-height:calc(100vh - 40px);overflow-y:auto;background:rgba(16,20,18,.96);border:1px solid #8fe3c8;border-radius:8px;padding:18px 20px;color:#dfe6df;font:13px/1.7 -apple-system,PingFang SC,Helvetica Neue,sans-serif;touch-action:pan-y;overscroll-behavior:contain}.privacy-card h2{margin:0 0 10px;font-size:15px;color:#ffe27a;font-weight:600}.privacy-card ul{margin:0;padding-left:18px}.privacy-card li{margin-bottom:6px}.privacy-card li b{color:#8fe3c8}.privacy-footnote{margin:10px 0 0;color:#8a938d;font-size:12px}.privacy-dismiss{display:block;width:100%;margin-top:14px;padding:9px 10px;border-radius:6px;cursor:pointer;background:#8fe3c8;color:#10201a;border:1px solid #8fe3c8;font-family:inherit;font-size:13px;font-weight:600;line-height:1.4;touch-action:manipulation}.privacy-dismiss:hover{background:#a6efd8}#touch-controls{position:fixed;inset:0;pointer-events:none;z-index:900}#touch-controls>*{pointer-events:auto;touch-action:none}.touch-stick{position:absolute;left:max(28px,env(safe-area-inset-left));bottom:max(32px,env(safe-area-inset-bottom));width:124px;height:124px;border-radius:50%;background:rgba(0,0,0,.28);border:1px solid rgba(223,230,223,.35);display:flex;align-items:center;justify-content:center}.touch-stick-knob{width:54px;height:54px;background:rgba(223,230,223,.55)}.touch-jump,.touch-stick-knob{border-radius:50%;border:1px solid rgba(143,227,200,.9)}.touch-jump{position:absolute;right:max(28px,env(safe-area-inset-right));bottom:max(44px,env(safe-area-inset-bottom));width:76px;height:76px;background:rgba(0,0,0,.28);color:#dfe6df;font:16px/1 monospace;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.touch-jump:active{background:rgba(143,227,200,.3)}:root{--ui-ink:#23262b;--ui-paper:#f7f7f5;--ui-lime:#c8ff18;--ui-yellow:#ffda28;--ui-cyan:#00ddea;--ui-purple:#514987;--ui-font:"Arial Rounded MT Bold","PingFang SC","Microsoft YaHei",system-ui,sans-serif;--ui-edge-x:max(18px,env(safe-area-inset-left));--ui-edge-r:max(18px,env(safe-area-inset-right));--ui-edge-top:max(18px,env(safe-area-inset-top))}.ui-icon{display:inline-block;flex:0 0 auto;width:27px;height:27px;background:currentColor;-webkit-mask:var(--ui-icon) center /contain no-repeat;mask:var(--ui-icon) center /contain no-repeat}.ui-icon--pin{--ui-icon:url(/ui/v1/pin.svg)}.ui-icon--chat{--ui-icon:url(/ui/v1/chat.svg)}.ui-icon--observe{--ui-icon:url(/ui/v1/observe.svg)}.ui-icon--menu{--ui-icon:url(/ui/v1/menu.svg)}#game-toolbar{position:fixed;top:var(--ui-edge-top);left:var(--ui-edge-x);display:flex;gap:10px;z-index:950}#game-menu>button,#game-toolbar>button,.ui-button{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;padding:8px 16px;border:2px solid var(--ui-ink);border-radius:12px 10px 13px 9px;background:var(--ui-paper);color:var(--ui-ink);box-shadow:3px 4px 0 var(--ui-ink);font:900 16px/1.25 var(--ui-font);cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;transition:transform .12s ease,box-shadow .12s ease,background-color .12s ease}#game-toolbar>button{position:relative;inset:auto;margin:0;transform:skewX(-9deg);isolation:isolate}#game-toolbar>button>span{transform:skewX(9deg)}#game-toolbar>button:after{content:"";position:absolute;right:4px;top:4px;bottom:4px;width:26px;background:radial-gradient(#23262b15 .7px,transparent 1px) 0 0 /4px 4px;-webkit-mask-image:linear-gradient(90deg,transparent,black);mask-image:linear-gradient(90deg,transparent,black);z-index:-1;pointer-events:none}#game-toolbar>button.active,#game-toolbar>button[aria-pressed=true]{background:var(--ui-lime);box-shadow:inset 0 0 0 3px var(--ui-paper),3px 4px 0 var(--ui-ink)}body:has(#chat-panel.open,#stats-panel.open) #game-toolbar>#grid-toggle[aria-pressed=true]{background:var(--ui-paper);box-shadow:inset 0 -3px 0 var(--ui-lime),3px 4px 0 var(--ui-ink)}@media (hover:hover){#game-menu>button:hover,#game-toolbar>button:hover,.ui-button:hover{transform:translateY(-2px)}#game-toolbar>button:hover{transform:skewX(-9deg) translateY(-2px)}#game-toolbar>button:not(.active):not([aria-pressed=true]):hover{background:var(--ui-paper)}}#game-menu>button:active,#game-toolbar>button:active,.ui-button:active{transform:translate(3px,3px);box-shadow:1px 2px 0 var(--ui-ink)}.minimap-zoom:focus-visible,.touch-jump:focus-visible,.ui-button:focus-visible,:is(#game-toolbar,#game-menu,#game-help,#chat-panel,#stats-panel) :is(button,summary,input):focus-visible{outline:3px solid var(--ui-cyan);outline-offset:4px}.ui-button--primary{background:linear-gradient(165deg,var(--ui-yellow) 65%,#ffc419 66%);border-color:var(--ui-paper);border-radius:30px}.ui-button:disabled{background:#d7d8dc;color:#63656b;box-shadow:none;transform:none;cursor:not-allowed}#hud{display:none}body.ui-debug:not(.loading) #hud{display:block;top:calc(var(--ui-edge-top) + 74px);font-size:11px}body.loading :is(#game-toolbar,#game-menu){display:none}#game-menu{position:absolute;z-index:2;top:4px;left:177px;right:auto;pointer-events:auto}#game-menu>button{width:52px;min-height:52px;padding:12px;border-width:1.5px;border-radius:13px 14px 12px 14px;box-shadow:2px 3px 0 var(--ui-ink);background:linear-gradient(145deg,white,#f7f7f5)}#game-menu>summary::-webkit-details-marker{display:none}.ui-menu-content{position:absolute;right:0;top:66px;min-width:192px;padding:10px;border:3px solid var(--ui-ink);border-radius:18px;background:var(--ui-paper);box-shadow:5px 6px 0 var(--ui-ink)}.ui-menu-content button{display:block;width:100%;min-height:44px;text-align:left;border:0;border-radius:9px;padding:10px 12px;font:800 15px/1.4 var(--ui-font);color:var(--ui-ink);background:transparent;cursor:pointer}.ui-menu-content button:focus-visible,.ui-menu-content button:hover{background:var(--ui-lime)}.ui-menu-content .ui-menu-zoom{display:none}#minimap{--map-scale:1;right:calc(var(--ui-edge-r) + 11px * var(--map-scale));top:var(--ui-edge-top);width:218px;height:184px;box-sizing:border-box;background:url(/ui/v1/minimap-surface.svg) 50%/100% 100% no-repeat;border:0;border-radius:0;box-shadow:none;z-index:950;transform:scale(var(--map-scale));transform-origin:top right}#minimap:after{content:"N";position:absolute;top:10px;left:77px;display:grid;place-items:center;width:20px;height:20px;background:white;border-radius:50%;color:var(--ui-ink);font:900 13px/1 var(--ui-font)}#minimap-canvas,#minimap-globe{top:15px;left:9px;width:152px;height:152px}#minimap-globe-canvas{width:152px;height:152px}.minimap-zoom{z-index:1;bottom:auto;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:transparent;box-shadow:none;font-size:0}.minimap-zoom:before{content:"";position:absolute;inset:7px;border:1px solid #f0f0f2;border-radius:50%;background:linear-gradient(145deg,#fff,#fafafb);box-shadow:0 2px 2px #23262b1c,0 1px 5px #23262b08}.minimap-zoom:after{content:"";position:absolute;inset:13px;background:var(--ui-ink);-webkit-mask:var(--zoom-icon) center /contain no-repeat;mask:var(--zoom-icon) center /contain no-repeat}.minimap-zoom:hover{background:transparent}.minimap-zoom:hover:before{background:#fff;box-shadow:0 2px 3px #23262b30}.minimap-zoom:active:after,.minimap-zoom:active:before{transform:translateY(1px)}#minimap-zoom-in{--zoom-icon:url(/ui/v1/plus.svg);top:64px;right:8px}#minimap-zoom-out{--zoom-icon:url(/ui/v1/minus.svg);top:101px;right:8px;left:auto}.touch-stick{border:3px solid #f7f7f5b3;background:#23262b38}.touch-stick:before{content:"";position:absolute;inset:12px;border:1px dashed #ffffff50;border-radius:50%;pointer-events:none}.touch-stick-knob{border:3px solid var(--ui-paper);background:#f7f7f5dd;box-shadow:0 4px 8px #23262b38}.touch-jump{display:grid;place-items:center;width:82px;height:82px;border:5px solid var(--ui-paper);color:var(--ui-ink);background:linear-gradient(150deg,var(--ui-cyan) 65%,#00c9dc 66%);box-shadow:5px 6px 0 var(--ui-ink);font-size:0}.touch-jump:before{content:"";display:block;width:39px;height:39px;background:currentColor;-webkit-mask:url(/ui/v1/jump.svg) center/contain no-repeat;mask:url(/ui/v1/jump.svg) center/contain no-repeat}.touch-jump:active{background:var(--ui-cyan);box-shadow:2px 2px 0 var(--ui-ink)}#chat-panel,#stats-panel,.ui-panel{box-sizing:border-box;border:2px solid var(--ui-ink);border-radius:15px 12px 16px 11px;background:var(--ui-paper);color:var(--ui-ink);box-shadow:4px 5px 0 var(--ui-ink);font:14px/1.6 var(--ui-font)}#chat-panel{padding:16px 14px 10px;width:min(330px,calc(100vw - 32px));left:var(--ui-edge-x);top:calc(var(--ui-edge-top) + 92px);bottom:auto;max-height:calc(100dvh - var(--ui-edge-top) - 112px);gap:10px;background:linear-gradient(125deg,#fff,#f7f7fa);isolation:isolate}#chat-panel:after{content:"";position:absolute;right:4px;bottom:4px;width:48px;height:44px;background:radial-gradient(#a9d44785 .8px,transparent 1px) 0 0 /4px 4px;-webkit-mask-image:linear-gradient(130deg,transparent 25%,black);mask-image:linear-gradient(130deg,transparent 25%,black);z-index:-1;pointer-events:none}.chat-header{display:flex;align-items:center;justify-content:space-between;height:22px;flex-shrink:0}#chat-title{position:relative;top:-21px;left:-14px;margin:0;padding:4px 19px;border:2px solid white;outline:1px solid #69717d;border-radius:8px 6px;background:var(--ui-lime);box-shadow:1px 2px 0 #23262b35;transform:rotate(-5deg);font:900 21px/1.3 var(--ui-font)}.chat-close{align-self:flex-start;margin:-12px -9px 0 0;width:36px;height:36px;border:0;border-radius:50%;background:radial-gradient(circle,white 60%,transparent 65%);color:var(--ui-ink);font:900 30px/1 var(--ui-font);cursor:pointer}#chat-log{flex:1 1 auto;min-height:95px;max-height:min(30vh,208px);padding:2px 0 8px;background:transparent;color:var(--ui-ink);font:13px/1.5 var(--ui-font);border-radius:0;scrollbar-width:thin;scrollbar-color:#d4d6dd transparent}#chat-log:empty:before{content:"和附近的邻居打个招呼吧！";display:block;padding:24px 4px;color:#7c8293;text-align:center}.chat-row{display:flex;align-items:center;gap:8px;margin-bottom:12px}.chat-avatar{flex:0 0 30px;width:30px;height:30px;border-radius:50%;background:#dce0e8 url(/ui/v1/avatar.svg) 50%/contain no-repeat}.chat-capsule{padding:9px 12px;border-radius:20px;background:#eeeff2;min-width:0;flex:1 1;overflow-wrap:anywhere}.chat-who{color:var(--ui-ink);font-weight:800;margin-right:0}.chat-body{white-space:pre-wrap}.chat-time{flex:0 0 32px;color:#7c8293;font:10px/1.3 var(--ui-font)}#chat-form{gap:5px;align-items:center;flex-shrink:0}#chat-form input{height:38px;padding:8px 11px;background:#eeeff2;color:var(--ui-ink);border:0;border-radius:22px;font:16px/1.4 var(--ui-font)}#chat-form input::placeholder{color:#969ba5}#chat-form input:focus-visible{outline:1px solid #89919f;outline-offset:1px}#chat-form button{min-height:38px;padding:8px 12px;background:linear-gradient(165deg,var(--ui-cyan) 65%,#00cbdc 66%);border:2px solid white;color:var(--ui-ink);border-radius:22px;min-width:65px;box-shadow:0 3px 0 #23262b20;font:900 14px/1 var(--ui-font)}#chat-form button:disabled{color:#9297a2;background:#dedfe4;cursor:wait}#chat-panel[aria-busy=true] #chat-form button[type=submit]:before{content:"";display:inline-block;width:9px;height:9px;margin-right:5px;border:2px dotted #7c8293;border-radius:50%;vertical-align:-1px;animation:chat-pending-turn 1s linear infinite}@keyframes chat-pending-turn{to{transform:rotate(1turn)}}#chat-form .chat-emoji-toggle{min-width:30px;width:30px;padding:0;border:0;border-radius:0;background:url(/ui/v1/smile.svg) 50%/23px no-repeat;box-shadow:none}.chat-footnote{margin:0;color:#7c8293;font-size:11px;line-height:1.4}.chat-status{color:#c12b3f;font-size:12px}.chat-status:before{content:"!";display:inline-grid;place-items:center;width:14px;height:14px;margin-right:5px;background:#e43b50;color:white;border-radius:50%;font-weight:900}.chat-emoji-picker{padding:6px;border:1px solid #d9dce3;border-radius:12px;background:white}.chat-emoji-picker button{width:34px;height:36px;background:transparent;border:0;border-radius:8px;font-size:21px;cursor:pointer}.chat-emoji-picker button:hover{background:#eff4de}.speech-bubble{padding:9px 13px;border:2px solid var(--ui-ink);border-radius:13px 11px 14px 10px;background:#fff;color:var(--ui-ink);box-shadow:2px 3px 0 var(--ui-ink);font:800 14px/1.5 var(--ui-font);text-align:center}.speech-bubble-tail{position:absolute;left:50%;bottom:-8px;width:12px;height:12px;background:white;border-right:2px solid var(--ui-ink);border-bottom:2px solid var(--ui-ink);transform:translateX(-50%) rotate(45deg)}#stats-panel{width:min(340px,calc(100vw - 40px));padding:18px;bottom:max(26px,env(safe-area-inset-bottom))}.stats-heading,.ui-tab-title{color:var(--ui-ink);font:900 21px/1.3 var(--ui-font);background:var(--ui-lime);padding:8px 14px;border-radius:9px;margin:0 0 14px;width:fit-content}.stats-section{color:var(--ui-ink);font-weight:800;border-color:#dadbe0}.stats-muted,.stats-note,.stats-room-counts,.stats-visited-count{color:#626674}.stats-hour{background:#009ba8}.stats-hour.empty{background:#dadbe0}#game-help{padding:24px;width:min(480px,calc(100vw - 40px));max-height:calc(100dvh - 60px);overflow-y:auto}#game-help::backdrop{background:#23262b99;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}#game-help .ui-button{width:100%;margin-top:18px}.ui-help-row{display:flex;align-items:center;gap:14px;padding:10px 0;border-bottom:1px solid #dedfe2}.ui-help-row kbd{min-width:84px;padding:6px;box-sizing:border-box;border:2px solid var(--ui-ink);border-radius:8px;font:800 14px/1.4 var(--ui-font);text-align:center;box-shadow:0 3px 0 #c4c5c9}.ui-help-touch{color:#626674}@media (pointer:coarse){#stats-panel{bottom:calc(max(32px, env(safe-area-inset-bottom)) + 140px)}}@media (max-height:500px),(max-width:760px){:root{--ui-edge-x:max(12px,env(safe-area-inset-left));--ui-edge-r:max(12px,env(safe-area-inset-right));--ui-edge-top:max(12px,env(safe-area-inset-top))}#game-toolbar{gap:8px}#game-toolbar>button{min-height:44px;padding:8px 12px;font-size:15px;gap:7px;border-radius:11px}.ui-icon{width:23px;height:23px}#minimap{--map-scale:.9}}@media (max-width:560px){#game-toolbar>button{width:44px;min-height:44px;padding:8px}#game-toolbar .ui-button-label{display:none}#minimap{--map-scale:.85}#minimap .minimap-zoom{display:none}.ui-menu-content .ui-menu-zoom{display:block}#chat-panel{top:calc(var(--ui-edge-top) + 180px);max-height:calc(100dvh - var(--ui-edge-top) - 200px)}}@media (max-height:500px){#chat-panel{top:calc(var(--ui-edge-top) + 70px);max-height:calc(100dvh - var(--ui-edge-top) - 84px)}#chat-log{min-height:35px}}#chat-panel.chat-keyboard-open{top:calc(var(--chat-viewport-top) + 28px);max-height:calc(var(--chat-viewport-height) - 44px);z-index:960}#chat-panel.chat-keyboard-open #chat-log{min-height:35px}@media (prefers-reduced-motion:reduce){#game-menu>button,#game-toolbar>button,.ui-button{transition:none}#chat-panel[aria-busy=true] #chat-form button[type=submit]:before{animation:none}}.ui-menu-content{max-height:calc(100dvh - var(--ui-edge-top) - 90px);overflow-y:auto}.ui-menu-content .ui-menu-exit{border-top:1px solid #d6d7dc;border-radius:0 0 9px 9px;margin-top:6px;padding-top:14px}#game-exit{position:fixed;padding:38px 36px 33px;width:min(480px,calc(100vw - 28px));max-height:calc(100dvh - 28px);overflow-y:auto;border:0;border-radius:0;box-shadow:none;background:url(/ui/v1/confirm-surface.svg) 50%/100% 100% no-repeat;text-align:center}#game-exit::backdrop{background:#23262b40;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}#game-exit-title{margin:0 12px 8px;padding:0;color:#121720;font:950 25px/1.3 var(--ui-font);letter-spacing:-.5px}.ui-exit-description{margin:0;color:#777a80;font:600 14px/1.6 var(--ui-font)}.ui-exit-close{position:absolute;top:6px;right:10px;width:44px;height:44px;display:grid;place-items:center;padding:0 0 3px;border:1.5px solid var(--ui-ink);border-radius:12px;background:linear-gradient(145deg,white,#f7f7f5);color:#151a23;box-shadow:1px 2px 0 #23262b30;font:900 39px/1 var(--ui-font);cursor:pointer}.ui-exit-actions{display:flex;gap:14px;margin-top:24px}.ui-exit-actions .ui-button{flex:1 1;min-width:0;min-height:52px;font-size:20px;border-radius:20px 18px 21px 18px;border:1px solid #c5c6ca;background:linear-gradient(156deg,#fbfbfc 65%,#eeedf0 66%);box-shadow:inset 0 0 0 2px white,0 4px 0 #23262b24}.ui-exit-actions .ui-button--confirm{border:3px solid white;background:linear-gradient(156deg,#00e5ed 65%,#00cde8 66%);box-shadow:0 4px 0 #23262b24}.ui-exit-actions .ui-button:active{transform:translateY(2px);box-shadow:0 2px 0 #23262b24}.ui-exit-status{margin:10px 0 0;color:#626674;font-size:13px}.ui-exit-status:empty{display:none}.ui-exit-close:focus-visible{outline:3px solid var(--ui-cyan);outline-offset:3px}#game-exit button:disabled{cursor:wait;background:#d7d8dc;color:#81858e;transform:none}@media (max-width:560px){#game-exit{padding:38px 27px 30px}#game-exit-title{font-size:21px}.ui-exit-description{font-size:13px}.ui-exit-actions{gap:10px;margin-top:20px}.ui-exit-actions .ui-button{font-size:18px;min-height:48px}}#grid-toggle[hidden]{display:none}#game-settings{box-sizing:border-box;position:fixed;width:min(480px,calc(100vw - 28px));max-height:calc(100dvh - 24px);padding:64px 36px 31px;border:0;background:url(/ui/v1/settings-surface.svg) 50%/100% 100% no-repeat;color:var(--ui-ink);font:800 16px/1.5 var(--ui-font)}#game-settings::backdrop{background:#23262b40;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}#settings-title{position:absolute;top:5px;left:14px;margin:0;padding:2px 27px 4px;border:2px solid white;border-radius:11px 8px;background:var(--ui-lime);box-shadow:0 3px 0 #23262b30;transform:rotate(-6deg);font:950 30px/1.4 var(--ui-font)}#game-settings>.ui-exit-close{top:22px;right:9px}.settings-tabs{display:flex;gap:7px;margin:0 0 19px}.settings-tabs button{flex:1 1;min-height:44px;border:1px solid #ddd;border-radius:14px;box-shadow:0 2px 0 #23262b25;background:linear-gradient(150deg,white,#f4f4f5);color:var(--ui-ink);font:950 21px/1 var(--ui-font);cursor:pointer}.settings-tabs button[aria-selected=true]{background:linear-gradient(150deg,#dcff27,#c8ff18);border-color:#23262b;box-shadow:inset 0 0 0 2px white,0 2px 0 #23262b25}#game-settings [role=tabpanel]{min-height:151px}.settings-row{display:flex;justify-content:space-between;align-items:center;min-height:69px;gap:15px;border-bottom:1px solid #dedee2}.settings-sensitivity{min-height:81px}.settings-sensitivity>label{flex-shrink:0}.settings-sensitivity>div{flex:1 1;display:grid;grid-template-columns:1fr 44px;gap:6px 12px;align-items:center}.settings-sensitivity p{grid-column:1/-1;margin:0 0 9px;font-size:11px;color:#8c8d91;font-weight:500}.settings-sensitivity output{border-radius:9px;padding:5px;text-align:center;background:#ededf0;color:#6d7078}#look-sensitivity{appearance:none;width:100%;min-width:0;height:12px;margin:0;border-radius:12px;background:linear-gradient(90deg,#00deed var(--range-fill,50%),#dedee2 var(--range-fill,50%));cursor:pointer}#look-sensitivity::-webkit-slider-thumb{appearance:none;width:23px;height:23px;border:1px solid #bbb;border-radius:50%;background:white;box-shadow:0 2px 2px #23262b30}#look-sensitivity::-moz-range-thumb{width:23px;height:23px;border:1px solid #bbb;border-radius:50%;background:white}.settings-switch{appearance:none;flex-shrink:0;position:relative;width:55px;height:32px;margin:0;border:1px solid #aaa;border-radius:25px;background:#b6b7b9;cursor:pointer}.settings-switch:after{content:"";position:absolute;top:2px;left:2px;width:25px;height:25px;border-radius:50%;background:white;box-shadow:0 1px 2px #23262b40}.settings-switch:checked{background:#c8ff18;border-color:#90ab15}.settings-switch:checked:after{left:25px}#game-settings .settings-back{display:block;width:83%;margin:23px auto 11px;border:3px solid white;border-radius:30px;background:linear-gradient(155deg,#ffdf22 65%,#ffc718 66%);box-shadow:0 5px 0 #23262b22;font-size:21px;min-height:48px}#game-settings>button:not(.ui-exit-close):not(.settings-back){border:0;padding:7px 0;background:transparent;color:#61656d;font:700 12px/1.4 var(--ui-font);cursor:pointer}#game-settings>.ui-menu-exit{float:right}.settings-zoom{display:none;border:1px solid #ddd;background:white;border-radius:8px;padding:10px;color:var(--ui-ink);font:700 12px var(--ui-font);margin:8px 6px 0 0;cursor:pointer}#game-settings :is(button,input):focus-visible{outline:3px solid var(--ui-cyan);outline-offset:3px}@media (max-width:560px){#game-settings{padding:64px 27px 29px;font-size:14px}.settings-sensitivity>div{gap:6px;grid-template-columns:1fr 36px}.settings-row{gap:10px}.settings-zoom{display:inline-block}}#avatar-trial{width:min(540px,calc(100vw - 36px));max-height:calc(100dvh - 48px);overflow:auto;padding:36px 24px 24px}#avatar-trial>p{font-size:14px;line-height:1.6}#avatar-trial .avatar-trial-options{display:grid;gap:10px;margin:20px 0}#avatar-trial .avatar-trial-options button{display:grid;gap:6px;text-align:left;padding:14px 18px;background:#f7f7f5;color:#23262b;border:2px solid #23262b;border-radius:14px;box-shadow:2px 3px 0 #23262b;cursor:pointer}#avatar-trial .avatar-trial-options button[aria-pressed=true]{background:#c8ff18}#avatar-trial .avatar-trial-options button:disabled{opacity:.55;cursor:wait}#avatar-trial .avatar-trial-options strong{font-size:19px}#avatar-trial .avatar-trial-options span{font-size:12px;line-height:1.5}#avatar-trial .avatar-trial-note{color:#626874}#avatar-trial .avatar-trial-status{min-height:24px}#avatar-trial .avatar-trial-back{width:100%}#auth-overlay{position:fixed;inset:0;z-index:1200;isolation:isolate;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,420px);grid-template-rows:1fr;align-items:center;gap:40px;padding:max(64px,env(safe-area-inset-top)) max(7vw,env(safe-area-inset-right)) max(48px,env(safe-area-inset-bottom)) max(5vw,env(safe-area-inset-left));box-sizing:border-box;overflow-y:auto;overscroll-behavior:contain;color:var(--ui-ink);font:500 16px/1.5 var(--ui-font);background:#514987}#auth-overlay:before{content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;background:linear-gradient(90deg,#23262b05 35%,#23262b28),url(/ui/v1/auth-scene.jpg) 50% /cover no-repeat,linear-gradient(145deg,#9181b7,#514987)}.auth-brand{align-self:start;margin-top:3vh;transform:rotate(-4deg);color:white;width:fit-content}.auth-wordmark{position:relative;max-width:100%;font-size:clamp(32px,4.5vw,64px);line-height:1.1;letter-spacing:-1px;font-weight:1000;-webkit-text-stroke:5px var(--ui-ink);paint-order:stroke fill;filter:drop-shadow(2px 5px 0 var(--ui-ink))}.auth-wordmark span{color:var(--ui-lime)}.auth-wordmark i{position:absolute;top:-22px;right:20%;width:38px;height:30px;border:4px solid var(--ui-ink);background:var(--ui-cyan);border-radius:50%;transform:rotate(-20deg);z-index:-1}.auth-wordmark i:after{content:"";position:absolute;inset:8px -12px;border:5px solid var(--ui-lime);border-top:5px solid transparent;border-radius:50%}.auth-brand p{margin:8px 0 0;text-align:center;font-size:clamp(13px,1.6vw,20px);letter-spacing:3px;font-weight:900;text-shadow:2px 2px var(--ui-ink),-1px -1px var(--ui-ink)}.auth-scene-caption{position:absolute;left:5vw;bottom:7vh;max-width:210px;color:white;font-size:24px;font-weight:900;transform:rotate(-5deg);text-shadow:0 2px 4px #23262b90}.auth-scene-caption:after{content:"";display:block;width:140px;height:3px;margin:12px 0 0 25px;background:white;transform:rotate(-6deg)}.auth-card{position:relative;width:100%;box-sizing:border-box;grid-column:2;padding:64px 38px 34px;margin:24px 0;background:url(/ui/v1/auth-surface.svg) 50%/100% 100% no-repeat}.auth-title{position:absolute;top:-14px;left:25px;margin:0;padding:8px 23px;background:var(--ui-lime);border:3px solid white;border-radius:12px 10px 13px 8px;box-shadow:0 2px 0 #23262b30;color:var(--ui-ink);font:900 30px/1.2 var(--ui-font);transform:rotate(-5deg)}.auth-form{display:flex;flex-direction:column;gap:12px}.auth-field{position:relative}.auth-field-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.auth-field input{display:block;width:100%;height:50px;box-sizing:border-box;padding:10px 48px 10px 47px;border:2px solid transparent;border-radius:18px;color:var(--ui-ink);background:var(--ui-field,#eeeff2);font:600 16px/1.5 var(--ui-font)}.auth-field input::placeholder{color:#7b7e85;opacity:1}.auth-field input:focus{outline:none;border-color:var(--ui-cyan);background:white}.auth-field input[aria-invalid=true]{border-color:#e33e53}.auth-field-icon{position:absolute;top:14px;left:16px;width:22px;height:22px;background:var(--ui-ink);pointer-events:none}.auth-field-icon--tel{-webkit-mask:url(/ui/v1/phone.svg) center/contain no-repeat;mask:url(/ui/v1/phone.svg) center/contain no-repeat}.auth-field-icon--password{-webkit-mask:url(/ui/v1/lock.svg) center/contain no-repeat;mask:url(/ui/v1/lock.svg) center/contain no-repeat}.auth-field-icon--text{-webkit-mask:url(/ui/v1/avatar.svg) center/contain no-repeat;mask:url(/ui/v1/avatar.svg) center/contain no-repeat}.auth-reveal{position:absolute;top:3px;right:4px;width:44px;height:44px;border:0;border-radius:12px;padding:0;background:transparent;cursor:pointer}.auth-reveal:before{content:"";position:absolute;inset:11px;background:#767982;-webkit-mask:url(/ui/v1/eye.svg) center/contain no-repeat;mask:url(/ui/v1/eye.svg) center/contain no-repeat}.auth-reveal[aria-pressed=false]:after{content:"";position:absolute;top:21px;left:9px;width:26px;height:2px;background:#767982;transform:rotate(45deg);box-shadow:0 -1px 0 #eeeff2}.auth-button{width:100%;min-height:52px;padding:10px 18px;border:3px solid white;border-radius:28px 30px 27px 29px;box-sizing:border-box;color:var(--ui-ink);font:900 21px/1.35 var(--ui-font);box-shadow:0 5px 0 #d8d8db;cursor:pointer;transition:box-shadow .12s,transform .12s}.auth-button--primary{background:linear-gradient(160deg,#ffe638 0,var(--ui-yellow) 64%,#ffc419 65%)}.auth-button--secondary{background:linear-gradient(160deg,#00eff2 0,var(--ui-cyan) 64%,#00c8df 65%)}.auth-button+.auth-button{margin-top:5px}.auth-button:active:not(:disabled){transform:translateY(2px);box-shadow:0 3px 0 #d8d8db}.auth-link{min-height:44px;padding:8px 12px;border:0;background:transparent;color:var(--ui-ink);font:800 16px/1.4 var(--ui-font);cursor:pointer}#auth-overlay :is(button,input):focus-visible{outline:3px solid var(--ui-cyan);outline-offset:3px}#auth-overlay button:disabled{cursor:wait;color:#777b85}.auth-button:disabled{background:#d7d8dc;box-shadow:0 3px 0 #c9cbd0;transform:none}.auth-error{padding:9px 12px;border-radius:10px;color:#ad1930;background:#fbe0e3;font-size:13px;font-weight:700;overflow-wrap:anywhere}.auth-error:empty,.auth-status:empty{display:none}.auth-error:before{content:"!";display:inline-grid;place-items:center;width:17px;height:17px;margin-right:8px;border-radius:50%;background:#c12b3f;color:white}.auth-hint,.auth-status{margin:0;color:#707580;font-size:12px}.auth-status{text-align:center}.auth-session-status{padding:30px 0;text-align:center;color:#707580}.auth-gender{margin:8px 0;padding:0;border:0}.auth-gender legend{margin-bottom:10px;font-weight:800}.auth-gender-row{display:flex;gap:8px}.auth-card[data-stage=choose-appearance]{padding-top:60px}.auth-card[data-stage=choose-appearance] .auth-title{font-size:25px;padding-inline:16px}.auth-model-preview{height:200px;overflow:hidden;border-radius:18px;background:radial-gradient(ellipse at bottom,#c9e698,#b1dedb 50%,#d8e6ec)}.auth-model-preview canvas{display:block;width:100%;height:100%}.auth-animal-note{box-sizing:border-box;margin:0;padding:10px 14px;text-align:center;white-space:pre-line;border-radius:12px;color:#606573;background:#eeeff2;font-size:12px;line-height:1.6}.auth-card [hidden]{display:none!important}.auth-choice{flex:1 1;min-height:44px;border:1px solid #c9cbd0;border-radius:13px;background:white;color:var(--ui-ink);font:800 16px var(--ui-font);cursor:pointer;box-shadow:0 3px 0 #d8d8db}.auth-choice[aria-pressed=true]{background:var(--ui-lime);border-color:var(--ui-ink)}.auth-character{display:flex;align-items:center;gap:18px;margin:0 0 25px;padding:14px;background:#eeeff2;border-radius:18px}.auth-character-avatar{flex:0 0 78px;height:92px;border-radius:16px;background:url(/ui/v1/avatar.svg) 50%/contain no-repeat,linear-gradient(145deg,#6bd5e8,#d5f0e8)}.auth-character>div{min-width:0}.auth-character h2{margin:0 0 4px;font-size:24px;overflow-wrap:anywhere}.auth-character p{margin:0;color:#707580;font-size:13px}@media (hover:hover){.auth-button:hover:not(:disabled){box-shadow:0 5px 0 #d8d8db,0 0 0 2px #ffffffb0}.auth-link:hover{text-decoration:underline}}@media (max-width:760px){#auth-overlay{display:flex;flex-direction:column;gap:30px;padding:max(48px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(32px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}#auth-overlay:before{background-position:42%}.auth-brand{align-self:center;margin:0;flex:0 0 auto}.auth-wordmark{font-size:clamp(30px,8.5vw,44px);white-space:nowrap}.auth-brand p{font-size:13px}.auth-card{width:min(420px,100%);padding:60px 30px 32px;margin:auto 0;flex:0 0 auto}.auth-title{left:20px;font-size:26px}.auth-scene-caption{display:none}}@media (max-width:360px){.auth-card{padding-inline:24px}.auth-title{font-size:24px}.auth-button{font-size:19px}}@media (max-height:500px) and (min-width:761px){#auth-overlay{padding-top:40px;padding-bottom:24px;align-items:start}.auth-brand{position:sticky;top:24px}}@media (prefers-reduced-motion:reduce){#auth-overlay *{transition:none}}