:root{--ink:oklch(20% .01 20);--ink-soft:oklch(42% .012 20);--surface:oklch(99.5% 0 0);--line:oklch(90% .006 20);--accent:oklch(50% .18 22);--accent-ink:oklch(99% 0 0);--gold:oklch(86% .16 90);--radius:12px;--shadow:0 4px 8px oklch(20% .02 20/.18);--z-hud:10;--z-panel:20;--z-modal:40;--z-loading:50;--vw:100vw;--vh:100dvh;--sa-top:env(safe-area-inset-top);--sa-right:env(safe-area-inset-right);--sa-bottom:env(safe-area-inset-bottom);--sa-left:env(safe-area-inset-left);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:Be Vietnam Pro,system-ui,sans-serif}*{box-sizing:border-box}html,body{overscroll-behavior:none;touch-action:none;-webkit-user-select:none;user-select:none;height:100%;margin:0;overflow:hidden}#app canvas{display:block}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.topbar{z-index:var(--z-hud);top:max(12px, var(--sa-top));left:max(12px, var(--sa-left));align-items:center;gap:10px;display:flex;position:fixed}.topbar h1{background:var(--accent);color:var(--accent-ink);border-radius:var(--radius);box-shadow:var(--shadow);margin:0;padding:8px 14px;font-size:1rem;font-weight:800}#open-finder{background:var(--surface);box-shadow:var(--shadow);border:0;border-radius:999px;padding:8px 14px;font-weight:700}#minimap{z-index:var(--z-hud);top:max(12px, var(--sa-top));right:max(12px, var(--sa-right));width:min(300px, calc(var(--vw) * .4));border:3px solid var(--surface);box-shadow:var(--shadow);cursor:pointer;touch-action:manipulation;border-radius:10px;position:fixed}.guide{z-index:var(--z-hud);top:calc(max(12px, var(--sa-top)) + 52px);background:var(--ink);color:var(--surface);box-shadow:var(--shadow);white-space:nowrap;border-radius:999px;align-items:center;gap:10px;padding:6px 6px 6px 14px;font-size:.9rem;display:flex;position:fixed;left:50%;translate:-50%}.guide[hidden]{display:none}.guide strong{color:var(--gold)}.guide button{color:inherit;background:oklch(100% 0 0/.16);border:0;border-radius:999px;padding:4px 12px}.booth{--booth:var(--accent);z-index:var(--z-panel);left:max(16px, var(--sa-left));bottom:max(16px, var(--sa-bottom));width:min(360px, calc(var(--vw) - 32px));background:var(--surface);border-radius:var(--radius);border-top:6px solid var(--booth);box-shadow:var(--shadow);opacity:0;pointer-events:none;padding:16px 18px 18px;transition:opacity .25s cubic-bezier(.22,1,.36,1),translate .35s cubic-bezier(.22,1,.36,1);position:fixed;translate:0 16px}.booth.open{opacity:1;pointer-events:auto;translate:0}.booth .cat{color:var(--ink-soft);margin:0;font-size:.85rem;font-weight:500}.booth h2{text-wrap:balance;margin:2px 0 12px;font-size:1.4rem;line-height:1.2}.promo{background:color-mix(in oklch, var(--booth) 10%, white);border-radius:10px;padding:12px 14px}.promo p{margin:0}.promo-title{color:color-mix(in oklch, var(--booth) 80%, black);font-size:1.15rem;font-weight:800}.promo-detail{font-size:.92rem;line-height:1.45;margin-top:4px!important}.promo-until{color:var(--ink-soft);font-size:.8rem;font-weight:700;margin-top:8px!important}.products{flex-wrap:wrap;gap:6px;margin:12px 0 0;padding:0;list-style:none;display:flex}.products li{border:1px solid var(--line);border-radius:999px;padding:4px 10px;font-size:.82rem}.emotes{z-index:var(--z-hud);right:max(16px, var(--sa-right));bottom:max(16px, var(--sa-bottom));gap:8px;display:none;position:fixed}.joystick{z-index:var(--z-hud);left:max(24px, var(--sa-left));bottom:max(24px, var(--sa-bottom));touch-action:none;background:oklch(100% 0 0/.55);border:2px solid oklch(100% 0 0/.9);border-radius:50%;width:120px;height:120px;display:none;position:fixed}#joystick-knob{background:var(--accent);box-shadow:var(--shadow);pointer-events:none;border-radius:50%;position:absolute;inset:34px}.hint{z-index:var(--z-hud);left:50%;bottom:max(12px, var(--sa-bottom));width:max-content;max-width:calc(var(--vw) - 24px);color:oklch(99% 0 0);pointer-events:none;background:oklch(20% .01 20/.62);border-radius:11px;flex-wrap:wrap;justify-content:center;gap:3px 12px;padding:5px 10px;font-size:.68rem;font-weight:500;display:flex;position:fixed;translate:-50%}.hint span{white-space:nowrap;align-items:center;gap:4px;display:flex}.hint kbd{font:inherit;background:oklch(100% 0 0/.18);border-radius:5px;padding:1px 5px;font-weight:700}.finder{width:min(440px, calc(var(--vw) - 24px));max-height:min(560px, calc(var(--vh) - 48px));border-radius:var(--radius);box-shadow:var(--shadow);color:var(--ink);-webkit-user-select:auto;user-select:auto;border:0;padding:0}.finder::backdrop{background:oklch(20% .01 20/.45)}.finder-head{background:var(--surface);border-bottom:1px solid var(--line);gap:8px;padding:12px;display:flex;position:sticky;top:0}.finder-head input{border:1px solid var(--line);min-width:0;font:inherit;border-radius:10px;flex:1;padding:10px 12px;font-size:16px}.finder-head input::placeholder{color:var(--ink-soft)}.finder-head button{background:var(--line);border:0;border-radius:10px;padding:0 14px;font-weight:700}#finder-list{margin:0;padding:6px;list-style:none}#finder-list button{text-align:left;background:0 0;border:0;border-radius:10px;grid-template-columns:12px 1fr;align-items:center;gap:2px 12px;width:100%;padding:10px 12px;display:grid}#finder-list button:hover{background:oklch(96% .004 20)}#finder-list .dot{background:var(--booth);border-radius:3px;width:12px;height:12px}#finder-list strong{display:block}#finder-list small{color:var(--ink-soft)}#finder-list em{color:color-mix(in oklch, var(--booth) 80%, black);grid-column:2;font-size:.85rem;font-style:normal;font-weight:700}#finder-list .empty{color:var(--ink-soft);padding:16px}.loading{z-index:var(--z-loading);text-align:center;justify-items:center;gap:calc(var(--vh) * .035);padding:max(calc(var(--vh) * .05), var(--sa-top)) max(calc(var(--vw) * .06), var(--sa-right)) max(calc(var(--vh) * .05), var(--sa-bottom)) max(calc(var(--vw) * .06), var(--sa-left));background:var(--accent);color:var(--accent-ink);grid-template-rows:1fr auto 1fr;transition:opacity .5s;display:grid;position:fixed;inset:0}.welcome{align-self:end;min-height:0}.welcome-foot{flex-direction:column;align-items:center;min-height:0;display:flex}.welcome-kicker,.welcome-facts dd,.credit{margin:0}.start{border-radius:var(--radius);background:var(--gold);min-width:220px;min-height:52px;color:var(--ink);font:inherit;font-size:clamp(16px, calc(var(--vh) * .034), 20px);cursor:pointer;box-shadow:var(--shadow);border:0;padding:0 40px;font-weight:800;transition:filter .15s}.start:hover:enabled{filter:brightness(1.06)}.start:focus-visible{outline:3px solid var(--accent-ink);outline-offset:3px}.start:disabled{cursor:default;box-shadow:none;background:oklch(99% 0 0/.82)}.start-error{font-size:clamp(13px, calc(var(--vh) * .028), 16px);margin:0 0 8px;font-weight:700}.credit{margin:0}.welcome-kicker{color:var(--gold);font-size:clamp(14px, calc(var(--vh) * .032), 20px);font-weight:700}.welcome h2{min-height:1.3em;margin:calc(var(--vh) * .005) 0 0;font-size:clamp(34px, calc(var(--vh) * .115), 80px);letter-spacing:-.02em;text-wrap:balance;font-weight:800;line-height:1.3}.welcome-about{max-width:62ch;margin:calc(var(--vh) * .015) auto 0;font-size:clamp(13px, calc(var(--vh) * .028), 18px);text-wrap:pretty;line-height:1.5}.welcome-facts{justify-content:center;gap:calc(var(--vh) * .015) clamp(24px, calc(var(--vw) * .04), 56px);flex-wrap:wrap;margin:0;display:flex}.welcome-facts dt{color:oklch(99% 0 0/.82);font-size:clamp(11px, calc(var(--vh) * .022), 14px)}.welcome-facts dd{font-size:clamp(13px, calc(var(--vh) * .03), 18px);font-weight:700}.progress-label{font-size:clamp(12px, calc(var(--vh) * .024), 15px);font-variant-numeric:tabular-nums;justify-content:space-between;margin-bottom:8px;font-weight:500;display:flex}.progress-track{background:oklch(99% 0 0/.25);border-radius:999px;height:6px;overflow:hidden}.progress-bar{background:var(--gold);transform-origin:0;height:100%;transform:scaleX(0)}.credit{font-size:clamp(12px, calc(var(--vh) * .024), 15px);margin-top:auto}.credit a{color:inherit;font-weight:700}.loading.done{opacity:0;pointer-events:none}.online{background:var(--surface);color:var(--ink-soft);white-space:nowrap;box-shadow:var(--shadow);border-radius:999px;margin:0;padding:8px 14px;font-size:13px;font-weight:500}.online:empty{display:none}body.lobby .topbar,body.lobby #minimap,body.lobby .booth,body.lobby .emotes,body.lobby .joystick,body.lobby .hint{visibility:hidden}.entry{z-index:var(--z-modal);width:min(340px, calc(var(--vw) - 32px));border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);flex-direction:column;gap:20px;padding:24px;display:flex;position:fixed;top:50%;left:max(24px,50% - 480px);transform:translateY(-50%)}.entry[hidden]{display:none}.entry h2{text-wrap:balance;margin:0;font-size:24px;font-weight:800}.entry-gender{border:0;grid-template-columns:1fr 1fr;gap:8px;margin:0;padding:0;display:grid}.entry-gender legend,.entry-name{margin-bottom:8px;padding:0;font-size:14px;font-weight:700}.entry-gender label{cursor:pointer}.entry-gender input{opacity:0;position:absolute}.entry-gender span{border:2px solid var(--line);border-radius:var(--radius);text-align:center;padding:12px;font-weight:700;display:block}.entry-gender input:checked+span{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}.entry-gender input:focus-visible+span{outline:3px solid var(--gold);outline-offset:2px}.entry-name{flex-direction:column;gap:8px;margin:0;display:flex}.entry-name input{border:2px solid var(--line);border-radius:var(--radius);font:inherit;color:var(--ink);-webkit-user-select:text;user-select:text;padding:12px;font-weight:500}.entry-name input::placeholder{color:var(--ink-soft)}.entry button[type=submit]{border-radius:var(--radius);background:var(--accent);color:var(--accent-ink);border:0;padding:14px;font-weight:800}@media (pointer:coarse){.joystick{display:block}.hint{display:none}.booth{top:calc(max(12px, var(--sa-top)) + 56px);width:min(380px, calc(var(--vw) - 24px));padding:12px 14px 14px;bottom:auto;left:50%;translate:-50% -12px}.booth.open{translate:-50%}.guide:not([hidden])~.booth{top:calc(max(12px, var(--sa-top)) + 100px)}.booth h2{margin-bottom:8px;font-size:1.2rem}}@media (pointer:fine){.booth{bottom:max(52px, calc(var(--sa-bottom) + 42px))}}@media (pointer:fine) and (width<=860px){.booth{bottom:76px}}@media (width<=560px) and (pointer:fine){.topbar{flex-wrap:wrap}.online{padding:6px 12px;font-size:12px}.entry{width:calc(var(--vw) - 32px);gap:14px;padding:18px;top:auto;bottom:16px;left:16px;transform:none}#minimap{top:calc(max(12px, var(--sa-top)) + 48px);width:170px}.guide{top:calc(max(12px, var(--sa-top)) + 52px);left:max(12px, var(--sa-left));max-width:calc(var(--vw) - 186px);font-size:.82rem;translate:none}.guide>span{text-overflow:ellipsis;overflow:hidden}.guide:not([hidden])~.booth{top:calc(max(12px, var(--sa-top)) + 100px)}.booth{width:calc(var(--vw) - 186px);left:max(12px, var(--sa-left));font-size:.9rem;translate:0 -12px}.booth.open{translate:0}}@media (prefers-reduced-motion:reduce){.booth,.loading{transition:opacity .15s}}.emotes svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.wheel{z-index:var(--z-panel);width:min(320px, calc(var(--vh) - 32px));aspect-ratio:1;animation:.16s cubic-bezier(.22,1,.36,1) wheel-in;position:fixed;top:50%;left:50%;translate:-50% -50%}.wheel[hidden]{display:none}.wheel svg{width:100%;height:100%;display:block}.wheel text{fill:var(--ink);text-anchor:middle;dominant-baseline:middle;pointer-events:none;font-size:10px;font-weight:700}.wheel .wheel-icon{font-size:22px}.wheel .wheel-centre{font-size:12px;font-weight:800}.wheel path{fill:oklch(100% 0 0/.88);stroke:oklch(20% .01 20/.75);stroke-width:1.2px;transition:fill .1s}.wheel .wheel-hub{fill:oklch(100% 0 0/.95);stroke:oklch(20% .01 20/.75);stroke-width:1.2px}.wheel g.on path{fill:var(--gold)}@keyframes wheel-in{0%{opacity:0;scale:.8}}html.turned{--sa-top:env(safe-area-inset-right);--sa-right:env(safe-area-inset-bottom);--sa-bottom:env(safe-area-inset-left);--sa-left:env(safe-area-inset-top)}html.turned body{top:0;left:var(--vh);width:var(--vw);height:var(--vh);transform-origin:0 0;position:fixed;transform:rotate(90deg)}html.turned .finder{rotate:90deg}@media (pointer:coarse){.emotes{flex-direction:column;align-items:center;display:flex}#action,#jump{color:oklch(99% 0 0);-webkit-touch-callout:none;touch-action:none;background:oklch(20% .02 20/.72);border:1.5px solid oklch(100% 0 0/.55);border-radius:50%;place-items:center;padding:0;display:grid}#action{width:54px;height:54px}#action.on{background:var(--accent)}#jump{width:76px;height:76px}#action svg,#jump svg{pointer-events:none;display:block}#action svg{width:30px;height:30px}#jump svg{stroke-width:2.6px;width:38px;height:38px}.joystick{background:oklch(20% .02 20/.5);border:1.5px solid oklch(100% 0 0/.6);width:132px;height:132px}#joystick-knob{background:oklch(96% .005 20);inset:40px}#minimap{width:170px}.booth{width:min(340px, calc(var(--vw) - 400px));min-width:220px;max-height:calc(var(--vh) - 76px);overflow:hidden}.booth .products,.booth .promo-until{display:none}.entry{width:min(320px, calc(var(--vw) - 32px));max-height:calc(var(--vh) - 16px);gap:12px;padding:16px;top:50%}.entry h2{font-size:19px}.entry-gender span,.entry-name input{padding:8px}.entry button[type=submit]{padding:10px}}
