:root{--bg0:#0d0620;--bg1:#160a2e;--bg2:#21103f;--panel:#160a2edb;--panel-solid:#1b0d38;--line:#a855f773;--purple:#a855f7;--pink:#ff4fd8;--teal:#2de2c8;--text:#f3eefc;--muted:#b7a8d6;--radius:14px;--glow:0 0 0 1px #a855f759, 0 0 18px #a855f740, inset 0 0 18px #2de2c80d;color:var(--text);background:var(--bg0);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Noto Sans JP,sans-serif}*{box-sizing:border-box}html,body{overscroll-behavior:none;height:100%;margin:0;overflow:hidden}body{touch-action:manipulation;-webkit-text-size-adjust:100%;position:fixed;inset:0}#root{left:0;right:0;top:var(--app-top,0px);height:var(--app-h,100dvh);position:fixed;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer}input{font:inherit}.btn-primary{color:#fff;background:linear-gradient(135deg,#8b3dff,#c04bff 50%,#2de2c8 140%);border:0;border-radius:12px;padding:.7rem 1.4rem;font-weight:800;transition:transform .12s,box-shadow .12s,opacity .12s;box-shadow:0 0 18px #a855f78c}.btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 0 26px #a855f7cc}.btn-primary:disabled{opacity:.5;cursor:default}.btn-primary.small{padding:.35rem .8rem;font-size:.85rem}.ghost{border:1px solid var(--line);color:var(--muted);background:0 0;border-radius:10px;padding:.3rem .65rem}.ghost:hover{color:var(--text);border-color:var(--teal)}.chip{border:1px solid var(--line);background:#a855f71f;border-radius:999px;padding:.3rem .8rem;font-size:.85rem}.chip:hover,.chip.on{border-color:var(--teal);background:#2de2c829}.login{background:radial-gradient(1200px 600px at 50% 110%,#ff785a2e,#0000 60%),radial-gradient(900px 500px at 20% 10%,#a855f740,#0000 60%),radial-gradient(700px 500px at 85% 30%,#2de2c824,#0000 60%),linear-gradient(#0b051a,#170a31 60%,#2a1240);place-items:center;height:100%;display:grid;position:relative;overflow:hidden}.login-stars{opacity:.8;pointer-events:none;background-image:radial-gradient(1.5px 1.5px at 20% 30%,#fff8,#0000),radial-gradient(1px 1px at 70% 20%,#fff9,#0000),radial-gradient(1.2px 1.2px at 40% 70%,#c9a6ff,#0000),radial-gradient(1px 1px at 85% 60%,#fff7,#0000),radial-gradient(1.4px 1.4px at 10% 80%,#8ff5e6,#0000),radial-gradient(1px 1px at 55% 45%,#fff6,#0000);background-size:380px 380px;position:absolute;inset:0}.login-card{text-align:center;background:linear-gradient(#1e0e3cd9,#100822eb);border-radius:24px;width:min(560px,92vw);padding:2rem 2.2rem 1.6rem;position:relative;box-shadow:0 0 0 1px #a855f780,0 0 40px #a855f759,0 0 80px #2de2c81f}.login-logo{mix-blend-mode:screen;width:100%;max-width:460px;margin:0 auto .4rem;display:block;-webkit-mask-image:radial-gradient(75% 70%,#000 55%,#0000 100%);mask-image:radial-gradient(75% 70%,#000 55%,#0000 100%)}.login-tag{color:var(--muted);margin:.3rem 0 1.4rem;line-height:1.45}.login-label{text-align:left;letter-spacing:.08em;text-transform:uppercase;color:var(--teal);margin-bottom:.45rem;font-size:.8rem;display:block}.login-row{gap:.6rem;display:flex}.login-row input{border:1px solid var(--line);min-width:0;color:var(--text);background:#0a0418cc;border-radius:12px;outline:none;flex:1;padding:.75rem 1rem;font-size:1.05rem}.login-row input:focus{border-color:var(--teal);box-shadow:0 0 0 3px #2de2c833}.login-error{text-align:left;background:#ff4fd81a;border:1px solid #ff4fd866;border-radius:12px;margin-top:.8rem;padding:.65rem .8rem;font-size:.92rem}.suggestions{flex-wrap:wrap;gap:.4rem;margin-top:.5rem;display:flex}.login-fine{color:var(--muted);margin:1rem 0 0;font-size:.8rem}.login-foot{letter-spacing:.4em;color:#f3eefc73;font-size:.75rem;position:absolute;bottom:18px}.game{-webkit-user-select:none;user-select:none;background:radial-gradient(1400px 700px at 50% 120%,#ff966e47,#0000 60%),radial-gradient(900px 500px at 50% -10%,#a855f747,#0000 60%),linear-gradient(#120827 0%,#24123f 55%,#4a2550 100%);height:100%;position:relative}.stage{position:absolute;inset:0}.stage canvas{touch-action:none;display:block}.fade{pointer-events:none;background:#0d0620;animation:.35s ease-out forwards fade;position:absolute;inset:0}.fade.hold{place-items:center;animation:none;display:grid}.fade-label{color:#cfc3ea;letter-spacing:.08em;opacity:.8;font-size:14px}@keyframes fade{0%{opacity:1}to{opacity:0}}.topbar{border-radius:var(--radius);background:var(--panel);box-shadow:var(--glow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:5;align-items:center;gap:.8rem;padding:.4rem .7rem;display:flex;position:absolute;top:10px;left:10px;right:10px}.topbar-logo{mix-blend-mode:screen;height:40px;-webkit-mask-image:radial-gradient(80% 75%,#000 60%,#0000 100%);mask-image:radial-gradient(80% 75%,#000 60%,#0000 100%)}.topbar-nav{gap:.3rem;display:flex}.topbar-nav button{background:#a855f71f;border:1px solid #0000;border-radius:10px;padding:.45rem .85rem;font-size:.9rem;font-weight:700}.topbar-nav button:hover,.topbar-nav button.on{border-color:var(--purple);background:#a855f752;box-shadow:0 0 12px #a855f766}.location{white-space:nowrap;flex:1 1 0;align-items:center;gap:.5rem;min-width:0;font-size:.92rem;display:flex;overflow:hidden}.location>b,.location>.muted{text-overflow:ellipsis;min-width:0;overflow:hidden}.location>b{flex:0 auto}.location>.muted{flex:1 1 0}.loc-short,.topbar-globe,.sm-show,.xs-show{display:none}.topbar-globe{mix-blend-mode:screen;border-radius:50%;flex:none;width:26px;height:26px}.muted{color:var(--muted)}.dot{background:#888;border-radius:50%;flex:none;width:9px;height:9px}.dot.online{background:var(--teal);box-shadow:0 0 8px var(--teal)}.dot.connecting,.dot.reconnecting{background:#f2c14e}.dot.kicked{background:var(--pink)}.me{align-items:center;gap:.5rem;font-weight:700;display:flex}.panel-head{letter-spacing:.06em;text-transform:uppercase;border-bottom:1px solid #a855f740;justify-content:space-between;align-items:center;padding:.7rem .9rem;font-size:.82rem;font-weight:800;display:flex}.navigator{border-radius:var(--radius);background:var(--panel);width:280px;box-shadow:var(--glow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:4;position:absolute;top:74px;left:10px}.nav-city{color:var(--teal);letter-spacing:.1em;text-transform:uppercase;padding:.5rem .9rem 0;font-size:.75rem}.nav-list{margin:0;padding:.4rem;list-style:none}.nav-list li button{text-align:left;background:0 0;border:1px solid #0000;border-radius:10px;align-items:center;gap:.6rem;width:100%;padding:.55rem .6rem;display:flex}.nav-list li button:hover:not(:disabled){border-color:var(--line);background:#a855f729}.nav-list li.here button{cursor:default;background:#2de2c81f;border-color:#2de2c880}.nav-icon{text-align:center;width:1.6rem;font-size:1.2rem}.nav-name{flex-direction:column;flex:1;font-weight:700;display:flex}.nav-name small{color:var(--muted);font-size:.75rem;font-weight:400}.nav-count{color:var(--teal);text-align:right;min-width:2rem;font-weight:800}.nav-empty,.nav-soon{color:var(--muted);padding:.5rem .9rem .8rem;font-size:.8rem}.chatlog{border-radius:var(--radius);width:300px;max-height:34vh;box-shadow:var(--glow);z-index:3;background:#100822b8;flex-direction:column;display:flex;position:absolute;bottom:96px;left:10px;overflow:hidden}.chatlog.closed{width:auto;box-shadow:none;background:0 0}.chatlog-toggle{border:1px solid var(--line);color:var(--muted);background:#160a2ee6;border-radius:8px;align-self:flex-start;margin:.4rem;padding:.2rem .55rem;font-size:.75rem}.chatlog-lines{flex-direction:column;gap:.2rem;padding:0 .7rem .6rem;font-size:.85rem;display:flex;overflow-y:auto}.line b{color:#d9b8ff}.line.self b{color:var(--teal)}.line.sys{color:var(--muted);font-style:italic}.bottombar{z-index:4;flex-direction:column;align-items:center;gap:.5rem;width:min(640px,100vw - 280px);display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.chatbox{border-radius:var(--radius);background:var(--panel);width:100%;box-shadow:var(--glow);gap:.4rem;padding:.35rem;display:flex}.chatbox input{min-width:0;color:var(--text);background:0 0;border:0;outline:none;flex:1;padding:.5rem .7rem}.chatbox .send{background:linear-gradient(135deg,#8b3dff,#c04bff);border:0;border-radius:10px;width:44px;box-shadow:0 0 12px #a855f799}.emotes{gap:.4rem;display:flex}.emotes button{border:1px solid var(--line);background:var(--panel);border-radius:12px;flex-direction:column;align-items:center;gap:.1rem;width:62px;padding:.35rem 0;font-size:.72rem;font-weight:700;display:flex;box-shadow:0 0 10px #a855f72e}.emotes button span{font-size:1.15rem;line-height:1.2}.emotes button:hover{border-color:var(--teal);box-shadow:0 0 14px #2de2c859}.minimap{border-radius:var(--radius);background:var(--panel);box-shadow:var(--glow);z-index:3;padding:.4rem;position:absolute;bottom:12px;right:10px}.minimap-title{letter-spacing:.1em;text-transform:uppercase;color:var(--teal);padding:0 .2rem .3rem;font-size:.7rem}.minimap canvas{display:block}.playercard{border-radius:var(--radius);background:var(--panel);box-shadow:var(--glow);z-index:5;min-width:220px;padding:.7rem;position:absolute;top:74px;right:10px}.playercard-name{margin-bottom:.5rem;font-weight:800}.playercard-actions{gap:.4rem;display:flex}.playercard-actions button{border:1px solid var(--line);background:#a855f724;border-radius:9px;padding:.35rem .7rem}.playercard-actions .danger{background:#ff4fd81f;border-color:#ff4fd899}.toast{z-index:6;background:#160a2ef2;border-radius:999px;max-width:80vw;padding:.55rem 1rem;font-size:.9rem;animation:.25s ease-out toast;position:absolute;top:78px;left:50%;transform:translate(-50%);box-shadow:0 0 0 1px #2de2c899,0 0 18px #2de2c84d}@keyframes toast{0%{opacity:0;transform:translate(-50%,-6px)}}.banner{z-index:7;background:#3c0e32f2;border-radius:12px;align-items:center;gap:.6rem;padding:.6rem 1rem;display:flex;position:absolute;top:120px;left:50%;transform:translate(-50%);box-shadow:0 0 0 1px #ff4fd899}.modal-back{z-index:10;background:#06021099;place-items:center;display:grid;position:absolute;inset:0}.modal{background:linear-gradient(#200f40f7,#120826fa);border-radius:20px;width:min(640px,94vw);box-shadow:0 0 0 1px #a855f78c,0 0 40px #a855f759}.picker-body{flex-wrap:wrap;gap:1rem;padding:1rem;display:flex}.picker-left{flex-direction:column;align-items:center;gap:.5rem;display:flex}.picker-preview{background:radial-gradient(circle at 50% 70%,#2de2c81f,#0000 70%),#0a041899;border-radius:14px;box-shadow:inset 0 0 0 1px #a855f74d}.pose-row{gap:.3rem;display:flex}.pose-row button{border:1px solid var(--line);text-transform:capitalize;background:0 0;border-radius:8px;padding:.2rem .5rem;font-size:.75rem}.pose-row button.on{border-color:var(--teal);color:var(--teal)}.picker-right{flex-direction:column;flex:1;gap:.9rem;min-width:260px;display:flex}.swatch-row{flex-direction:column;gap:.35rem;display:flex}.swatch-label{letter-spacing:.1em;text-transform:uppercase;color:var(--teal);font-size:.75rem}.swatches{flex-wrap:wrap;gap:.4rem;display:flex}.swatch{clip-path:polygon(50% 0,100% 30%,100% 100%,0 100%,0 30%);border:2px solid #ffffff26;border-radius:8px;width:30px;height:30px}.swatch.on{border-color:var(--teal);outline:2px solid var(--teal);outline-offset:2px}.picker-actions{justify-content:flex-end;gap:.5rem;margin-top:auto;display:flex}@media (width<=479px){.topbar-logo{display:none}.topbar-globe{display:block}.topbar-nav{gap:.2rem}.topbar .topbar-nav button{padding:.4rem .5rem}.sm-hide{display:none}.sm-show{display:inline}}@media (width<=359px){.xs-hide{display:none}.xs-show{display:inline}}@media (width<=767px),(pointer:coarse) and (width<=1024px){input,.chatbox input,.friends-add input{font-size:16px}.topbar{top:calc(6px + env(safe-area-inset-top));gap:.45rem;padding:.3rem .45rem;left:6px;right:6px}.topbar-logo{height:26px}.topbar-nav button{padding:.4rem .6rem;font-size:.8rem}.topbar-nav .wide-only,.location .muted,.loc-long,.me span{display:none}.loc-short{display:inline}.location{gap:.35rem;font-size:.82rem}.topbar-nav{flex:none}.me .ghost{padding:.3rem .5rem;font-size:.8rem}.me{flex:none}.navigator,.friends{top:calc(54px + env(safe-area-inset-top));flex-direction:column;width:min(320px,100vw - 12px);max-height:min(52%,380px);animation:.18s ease-out sheet;display:flex;overflow:hidden}.navigator{left:6px}.friends{right:6px}.nav-list{overflow-y:auto}.nav-list li button{padding:.45rem .5rem}.nav-soon,.chatlog{display:none}.bottombar{width:calc(100vw - 12px);bottom:calc(6px + env(safe-area-inset-bottom));gap:.35rem}.emotes{gap:.3rem}.emotes button{width:50px;font-size:.66rem}.minimap{bottom:calc(112px + env(safe-area-inset-bottom));transform-origin:100% 100%;right:6px;transform:scale(.6)}.playercard{top:calc(54px + env(safe-area-inset-top));min-width:0;right:6px}.playercard.shifted{top:auto;right:6px;bottom:calc(112px + env(safe-area-inset-bottom))}.toast{top:calc(58px + env(safe-area-inset-top));text-align:center;max-width:calc(100vw - 24px)}.banner{top:calc(96px + env(safe-area-inset-top));max-width:calc(100vw - 24px)}}@keyframes sheet{0%{opacity:0;transform:translateY(-8px)}}.kb-open .emotes,.kb-open .minimap,.kb-open .chatlog,.kb-open .navigator{display:none}.kb-open .bottombar{bottom:6px}.topbar-nav .badge{background:var(--pink);color:#fff;border-radius:999px;place-items:center;min-width:1.1rem;height:1.1rem;margin-left:.35rem;padding:0 .25rem;font-size:.7rem;display:inline-grid;box-shadow:0 0 8px #ff4fd8b3}.friends{border-radius:var(--radius);background:var(--panel);width:290px;max-height:calc(100% - 200px);box-shadow:var(--glow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:4;flex-direction:column;display:flex;position:absolute;top:74px;right:10px;overflow:hidden}.friends-add{gap:.4rem;padding:.6rem .6rem .2rem;display:flex}.friends-add input{border:1px solid var(--line);min-width:0;color:var(--text);background:#0a0418cc;border-radius:10px;outline:none;flex:1;padding:.45rem .7rem}.friends-add input:focus{border-color:var(--teal)}.friends-err{color:#ffb3ee;margin:.3rem .6rem 0;font-size:.8rem}.friends-list{margin:0;padding:.4rem;list-style:none;overflow-y:auto}.friends-list li{border-radius:10px;align-items:center;gap:.5rem;padding:.45rem .5rem;display:flex}.friends-list li.on{background:#2de2c80f}.friends-name{flex-direction:column;flex:1;min-width:0;font-weight:700;display:flex}.friends-name small{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;font-weight:400;overflow:hidden}.friends-remove{opacity:.6;padding:.15rem .45rem;font-size:.75rem}.playercard.shifted{right:310px}.playercard-actions .primary{border-color:var(--teal);background:#2de2c82e;font-weight:700}.playercard-tag{color:var(--teal);align-self:center;font-size:.85rem;font-weight:700}.ai-badge{color:#2a1600;letter-spacing:.02em;vertical-align:.1em;background:#ffc94d;border-radius:999px;margin-left:.35rem;padding:.05rem .4rem;font-size:.68rem;font-weight:900;display:inline-block}.playercard-ai{opacity:.85;max-width:260px;margin-bottom:.55rem;font-size:.8rem;line-height:1.35}
