:root{--ink:#2b2a33;--paper:#fffdf6;--gold:#f5b700;--red:#e0564f;--pixel:"Press Start 2P", ui-monospace, monospace;--round:"Nunito", system-ui, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;overflow:hidden}body{font-family:var(--round);color:var(--ink);background:#bfe6ff}canvas{touch-action:none;display:block}.loading{height:100%;font-family:var(--pixel);text-align:center;place-items:center;padding:16px;font-size:14px;display:grid}.title{background:radial-gradient(circle at 50% 120%,#7fd06a 0 40%,#0000 41%),linear-gradient(#8fd3ff,#d9f1ff);place-items:center;height:100%;padding:16px;display:grid}.title-card{background:var(--paper);border:4px solid var(--ink);width:min(380px,100%);box-shadow:0 6px 0 var(--ink);border-radius:14px;gap:16px;padding:24px;display:grid}.title-logo{text-align:center;gap:8px;display:grid}.title-logo span{font-family:var(--pixel);color:#b3a369;letter-spacing:1px;font-size:11px}.title-logo strong{font-family:var(--pixel);color:var(--gold);-webkit-text-stroke:1.5px var(--ink);text-shadow:3px 3px 0 var(--ink);font-size:22px;line-height:1.3}.title-card label{gap:6px;font-size:14px;font-weight:800;display:grid}.title-card input{font:800 18px var(--round);border:3px solid var(--ink);border-radius:8px;outline:none;padding:10px 12px}.title-card input:focus{border-color:#4f7fd6}.swatches{grid-template-columns:repeat(8,minmax(0,32px));justify-content:center;gap:6px;display:grid}.swatch{aspect-ratio:1;border:3px solid var(--ink);cursor:pointer;border-radius:50%;width:100%;height:auto;padding:0;position:relative}.swatch:after{content:"";border-radius:50%;position:absolute;inset:-9px}.swatch.on{outline:3px solid var(--gold);outline-offset:2px}.start{font:14px var(--pixel);background:var(--red);color:#fff;border:3px solid var(--ink);box-shadow:0 4px 0 var(--ink);cursor:pointer;border-radius:10px;padding:14px}.start:active{box-shadow:0 1px 0 var(--ink);transform:translateY(3px)}.title-hint{text-align:center;opacity:.7;margin:0;font-size:13px}.avatar-tag{white-space:nowrap;flex-direction:column;align-items:center;gap:4px;display:flex}.nametag{font:800 12px var(--round);color:#fff;background:#2b2a33c7;border-radius:999px;padding:2px 8px}.nametag.me{background:var(--red)}.bubble{white-space:normal;text-align:center;border:2px solid var(--ink);width:max-content;max-width:220px;font:700 13px var(--round);background:#fff;border-radius:10px;padding:4px 8px}.event-sign{cursor:pointer;background:var(--paper);border:4px solid var(--ink);box-shadow:0 5px 0 var(--ink);border-radius:12px;justify-items:center;gap:4px;padding:10px 16px;display:grid}.event-sign-title{font:22px var(--pixel);color:var(--gold);-webkit-text-stroke:1px var(--ink)}.event-sign-sub{font:800 14px var(--round)}.hud{pointer-events:none;position:fixed;inset:0}.hud>*{pointer-events:auto}.topbar{top:calc(12px + env(safe-area-inset-top));left:calc(12px + env(safe-area-inset-left));gap:8px;display:flex;position:absolute}.online,.pill{font:800 13px var(--round);background:var(--paper);border:3px solid var(--ink);border-radius:999px;padding:4px 12px}.online{color:#2e9b4f}.online.off{color:#b0413b}.location{top:calc(56px + env(safe-area-inset-top));left:calc(12px + env(safe-area-inset-left));background:var(--paper);border:4px solid var(--ink);font:11px/1.4 var(--pixel);pointer-events:none;border-radius:6px;max-width:min(360px,100vw - 24px);padding:10px 16px;transition:transform .35s cubic-bezier(.2,.9,.3,1.2);position:absolute;transform:translate(-120%);box-shadow:4px 4px #0003}.location.show{transform:none}.minimap{top:calc(12px + env(safe-area-inset-top));right:calc(64px + env(safe-area-inset-right));border:4px solid var(--ink);cursor:pointer;box-shadow:0 4px 0 var(--ink);border-radius:10px;line-height:0;position:absolute;overflow:hidden}.minimap.big{z-index:5;top:50%;right:50%;transform:translate(50%,-50%)}.chat{left:calc(12px + env(safe-area-inset-left));bottom:calc(44px + env(safe-area-inset-bottom));width:min(360px,100vw - 24px);position:absolute}.chat-log{gap:2px;margin-bottom:6px;display:grid}.chat-line{font:700 13px var(--round);overflow-wrap:anywhere;background:#fffdf6e0;border-radius:6px;width:fit-content;max-width:100%;padding:3px 8px}.chat-line.system{opacity:.8;font-style:italic}.chat input{width:100%;font:700 14px var(--round);border:3px solid var(--ink);background:#fffdf6f2;border-radius:8px;outline:none;padding:8px 10px}.help{font:700 12px var(--round);color:var(--ink);opacity:.75;pointer-events:none;position:absolute;bottom:12px;left:12px;right:12px}kbd{font:700 11px var(--round);background:var(--paper);border:2px solid var(--ink);border-radius:4px;padding:0 4px}.dialog{background:var(--paper);cursor:pointer;border:4px solid var(--ink);outline:3px solid var(--paper);width:min(560px,100vw - 24px);box-shadow:0 0 0 7px var(--ink);font:700 16px/1.5 var(--round);border-radius:12px;padding:16px 20px 26px;position:absolute;bottom:110px;left:50%;transform:translate(-50%)}.dialog p{margin:0}.dialog-hint{font:9px var(--pixel);color:var(--red);animation:.8s ease-in-out infinite alternate bob;position:absolute;bottom:6px;right:14px}@keyframes bob{to{transform:translateY(3px)}}.modal-backdrop{z-index:10;background:#14141e73;place-items:center;padding:16px;display:grid;position:absolute;inset:0}.modal{background:var(--paper);border:4px solid var(--ink);width:min(460px,100%);max-height:100%;box-shadow:0 6px 0 var(--ink);border-radius:14px;padding:24px;overflow:auto}.modal h2{font:28px var(--pixel);color:var(--gold);-webkit-text-stroke:1.5px var(--ink);text-shadow:3px 3px 0 var(--ink);margin:4px 0}.modal-kicker{font:800 12px var(--round);text-transform:uppercase;letter-spacing:1px;opacity:.6}.modal-tagline{margin:12px 0 4px;font-weight:800}.modal-when{margin:0 0 12px}.schedule{gap:6px;margin:0 0 16px;padding:0;list-style:none;display:grid}.schedule li{background:#f3ecd8;border-radius:8px;gap:12px;padding:8px 10px;font-weight:700;display:flex}.schedule span{font-family:var(--pixel);color:#7a6a3a;align-self:center;min-width:60px;font-size:10px}.modal-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.modal-actions a{color:#3a62b8;font-weight:800}.modal-actions button{font:11px var(--pixel);background:var(--paper);border:3px solid var(--ink);cursor:pointer;border-radius:8px;padding:10px 14px}@media (width<=640px){.minimap canvas{width:120px!important;height:120px!important}.minimap.big canvas{width:calc(100vw - 32px)!important;height:calc(100vw - 32px)!important}.help{display:none}.chat{bottom:calc(12px + env(safe-area-inset-bottom))}}.now-next{top:calc(12px + env(safe-area-inset-top));right:calc(64px + env(safe-area-inset-right));cursor:pointer;max-width:min(380px,100vw - 76px);font:700 13px "Sen", var(--round);background:#fbf6ea;border:4px solid #c98a4b;border-radius:12px;gap:4px;padding:10px 14px;display:grid;position:absolute;box-shadow:0 4px #8e5a2b}.now-next b{color:#1f5566;margin-right:6px;font-family:Darumadrop One,Chewy,sans-serif;font-weight:400}@media (width<=640px){.now-next{top:calc(58px + env(safe-area-inset-top));left:calc(12px + env(safe-area-inset-left));right:calc(12px + env(safe-area-inset-right));max-width:none;padding:8px 12px;font-size:12px}.hud:has(>.now-next)>.location{display:none}}.settings-btn{top:calc(12px + env(safe-area-inset-top));right:calc(12px + env(safe-area-inset-right));border:3px solid var(--ink);width:44px;height:44px;box-shadow:0 3px 0 var(--ink);color:var(--ink);background:#fff;border-radius:12px;place-items:center;display:grid;position:absolute}.settings-btn svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linejoin:round;width:24px;height:24px}.settings-btn:active{box-shadow:0 1px 0 var(--ink);transform:translateY(2px)}@media (width<=640px){.settings-btn{width:38px;height:38px}.settings-btn svg{width:21px;height:21px}}.minimap-head{border-bottom:3px solid var(--ink);background:#003057;padding:7px 10px;line-height:0}.minimap-head img{width:100%;max-width:170px;height:auto}.minimap.big .minimap-head img{max-width:260px}@media (width<=640px){.minimap-head img{max-width:100px}}.photo-flash{pointer-events:none;z-index:900;background:#fff;animation:.6s ease-out forwards flash;position:fixed;inset:0}@keyframes flash{0%{opacity:.95}to{opacity:0}}.photo-toast{z-index:901;pointer-events:none;color:#fff;background:#1f5566;border-radius:14px;padding:10px 22px;font:22px Darumadrop One,Chewy,sans-serif;animation:2.5s forwards toast;position:fixed;top:22%;left:50%;transform:translate(-50%);box-shadow:0 5px #0e2f3a}@keyframes toast{0%{opacity:0;transform:translate(-50%,10px)}10%,80%{opacity:1;transform:translate(-50%)}to{opacity:0}}.live-ui{left:calc(12px + env(safe-area-inset-left));bottom:calc(96px + env(safe-area-inset-bottom));z-index:40;pointer-events:none;justify-items:start;gap:8px;display:grid;position:fixed}.live-ui>*{pointer-events:auto}.live-pill{font:800 13px var(--round);cursor:pointer;background:var(--paper);border:3px solid var(--ink);color:#6b6f78;border-radius:999px;padding:5px 12px}.live-pill.on{color:#1f8a4c}.calibrate{width:min(340px,100vw - 24px);font:600 13px var(--round);background:var(--paper);border:3px solid var(--ink);border-radius:12px;gap:6px;padding:12px;display:grid}.cal-fix{font-family:ui-monospace,monospace;font-size:12px}.cal-hint{opacity:.7}.cal-spots{flex-wrap:wrap;gap:6px;display:flex}.cal-spots button,.cal-actions button{font:700 12px var(--round);border:2px solid var(--ink);cursor:pointer;background:#fff;border-radius:8px;padding:4px 8px}.calibrate textarea{width:100%;font:11px ui-monospace,monospace}.cal-actions{align-items:center;gap:8px;font-size:11px;display:flex}.live-raw{opacity:.7;font:600 11px ui-monospace,monospace;display:block}.cine{pointer-events:none;z-index:60;position:fixed;inset:0}.cine-bar{background:#07090c;height:0;transition:height .6s;position:absolute;left:0;right:0}.cine-bar.top{top:0}.cine-bar.bottom{bottom:0}.cine.on .cine-bar{height:11vh}.cine-title{text-align:center;color:#fff;opacity:0;text-shadow:0 3px 18px #0000008c;transition:opacity .4s .15s;position:absolute;top:18vh;left:50%;transform:translate(-50%)}.cine.on .cine-title{opacity:1;animation:.5s 4.2s forwards cine-out}.cine-title small{letter-spacing:4px;text-transform:uppercase;opacity:.85;font:18px Sen,sans-serif;display:block}.cine-title strong{font:clamp(40px,7vw,84px)/1.05 Darumadrop One,Chewy,sans-serif;display:block}.cine-title span{letter-spacing:1px;opacity:.85;font:600 15px Sen,sans-serif;display:block}.cine-skip{color:#fff;font:600 13px var(--round);opacity:0;transition:opacity .6s;position:absolute;bottom:calc(11vh + 12px);right:24px}.cine.on .cine-skip{opacity:.75}@keyframes cine-out{to{opacity:0}}.bean-link{text-align:center;font:800 15px var(--round);color:var(--ink);background:#fff0f6;border:3px dashed #f39bc0;border-radius:12px;padding:8px;text-decoration:none}.bean-link:hover{background:#ffe0ee}.studio{background:#ffe9f3;grid-template-columns:1fr min(420px,42vw);display:grid;position:fixed;inset:0}.studio-stage{min-height:0;position:relative}.studio-stage canvas{touch-action:none}.studio-title{pointer-events:none;gap:4px;display:grid;position:absolute;top:18px;left:20px}.studio-title span{font-family:var(--pixel);color:#c56b95;letter-spacing:1px;font-size:10px}.studio-title strong{font-family:var(--pixel);color:#ffd23f;-webkit-text-stroke:1.5px var(--ink);text-shadow:3px 3px 0 var(--ink);font-size:26px}.studio-poses{gap:8px;width:max-content;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.studio-poses button,.studio-saved{white-space:nowrap}.studio-poses button,.chip,.studio-random,.studio-play{font:800 14px var(--round);color:var(--ink);border:3px solid var(--ink);cursor:pointer;box-shadow:0 3px 0 var(--ink);background:#fff;border-radius:999px;padding:8px 14px;transition:transform 80ms}.studio-poses button:active,.chip:active,.studio-random:active,.studio-play:active{box-shadow:0 1px 0 var(--ink);transform:translateY(2px)}.studio-poses button.on,.chip.on{background:#ffd23f}.studio-panel{background:var(--paper);border-left:4px solid var(--ink);align-content:start;gap:18px;padding:22px;display:grid;overflow-y:auto}.studio-panel h3{font-family:var(--pixel);color:#8a6b7c;letter-spacing:1px;margin:0 0 10px;font-size:11px}.studio-name{gap:6px;font-weight:800;display:grid}.studio-name input{font:800 18px var(--round);border:3px solid var(--ink);border-radius:12px;padding:10px 12px}.studio-swatches{flex-wrap:wrap;gap:10px;display:flex}.sw{border:3px solid var(--ink);cursor:pointer;width:38px;height:38px;box-shadow:0 3px 0 var(--ink);border-radius:50%;position:relative}.sw:after{content:"";border-radius:50%;position:absolute;inset:-6px}.sw.on{outline-offset:2px;outline:4px solid #ffd23f;transform:scale(1.08)}.studio-chips{flex-wrap:wrap;gap:8px;display:flex}.chip .ico{font-size:16px}.studio-actions{z-index:2;background:var(--paper);padding-top:8px;grid-template-columns:1fr 1.3fr;gap:10px;margin:0 -22px;padding-inline:22px;display:grid;position:sticky;bottom:0;box-shadow:0 -10px 10px -10px #1b1d2459}.studio-random{background:#e6f7ff}.studio-play{color:#fff;background:#ff5d6c;font-size:16px}@media (width<=800px){.studio{grid-template-rows:44svh minmax(0,1fr);grid-template-columns:1fr}.studio-panel{border-left:0;border-top:4px solid var(--ink);padding:16px calc(16px + env(safe-area-inset-right)) 0 calc(16px + env(safe-area-inset-left));overscroll-behavior:contain}.studio-title{top:calc(14px + env(safe-area-inset-top));left:calc(16px + env(safe-area-inset-left))}.studio-title span{font-size:11px}.studio-title strong{font-size:18px}.studio-panel h3{font-size:12px}.studio-poses{bottom:12px}.studio-actions{padding-bottom:calc(12px + env(safe-area-inset-bottom));margin:0 calc(-16px - env(safe-area-inset-right)) 0 calc(-16px - env(safe-area-inset-left));padding-inline:calc(16px + env(safe-area-inset-left)) calc(16px + env(safe-area-inset-right))}.chip{min-height:44px}}.studio-saved{font:900 34px var(--round);color:#fff;border:4px solid var(--ink);box-shadow:0 5px 0 var(--ink);pointer-events:none;background:#ff5d6c;border-radius:20px;padding:10px 22px;animation:.5s cubic-bezier(.2,1.6,.4,1) both savedPop;position:absolute;top:38%;left:50%;transform:translate(-50%,-50%)}@keyframes savedPop{0%{opacity:0;transform:translate(-50%,-50%)scale(.3)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}.perm-backdrop{z-index:60;padding:16px;padding-bottom:calc(16px + env(safe-area-inset-bottom));background:#2b2a3359;place-items:end center;animation:.25s ease-out both perm-fade;display:grid;position:fixed;inset:0}.perm-card{box-sizing:border-box;background:var(--paper);border:4px solid var(--ink);width:min(400px,100%);box-shadow:0 6px 0 var(--ink);border-radius:16px;gap:14px;padding:22px 20px 16px;animation:.45s cubic-bezier(.16,1,.3,1) both perm-up;display:grid}.perm-title{font-family:var(--pixel);color:var(--gold);text-align:center;-webkit-text-stroke:1.2px var(--ink);text-shadow:2px 2px 0 var(--ink);font-size:18px;line-height:1.3}.perm-lead{text-align:center;font:700 15px/1.4 var(--round);margin:0}.perm-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.perm-list li{border:3px solid var(--ink);font:600 13.5px/1.35 var(--round);background:#fff;border-radius:12px;align-items:center;gap:12px;padding:10px 12px;display:flex}.perm-list b{font-size:15px;font-weight:800;display:block}.perm-ico{font-size:22px}.perm-card .start:disabled{opacity:.7;cursor:default}.perm-skip{font:800 14px var(--round);color:var(--ink);cursor:pointer;opacity:.7;background:0 0;border:0;padding:6px}@keyframes perm-fade{0%{opacity:0}}@keyframes perm-up{0%{opacity:0;transform:translateY(40px)}}@media (prefers-reduced-motion:reduce){.perm-backdrop,.perm-card{animation-duration:10ms}}.studio-dressed{font:800 12px var(--round);color:var(--ink);border:2px solid var(--ink);background:#fff;border-radius:999px;justify-self:start;margin-top:4px;padding:3px 10px;font-style:normal}.talk-switch{text-align:left;max-width:min(300px,100vw - 24px);font:800 13px/1.2 var(--round);cursor:pointer;background:var(--paper);border:3px solid var(--ink);color:var(--ink);border-radius:999px;align-items:center;gap:9px;padding:6px 12px 6px 7px;display:flex}.talk-switch small{color:#17703d;font-size:12px;font-weight:700;display:block}.talk-knob{background:#c9ccd4;border-radius:99px;flex:none;width:34px;height:20px;transition:background .2s;position:relative}.talk-knob:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .2s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0000004d}.talk-switch.on .talk-knob{background:#2e9b4f}.talk-switch.on .talk-knob:after{transform:translate(14px)}@media (prefers-reduced-motion:reduce){.talk-knob,.talk-knob:after{transition:none}}@media (width<=900px){.hud:has(>.dialog)~.live-ui{bottom:262px}}.stick{right:calc(20px + env(safe-area-inset-right));bottom:calc(20px + env(safe-area-inset-bottom));touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:#fffdf659;border:3px solid #2b2a338c;border-radius:50%;place-items:center;width:132px;height:132px;display:grid;position:absolute}.stick-knob{background:var(--paper);border:3px solid var(--ink);width:56px;height:56px;box-shadow:0 3px 0 var(--ink);pointer-events:none;will-change:transform;border-radius:50%}@media (pointer:coarse) and (hover:none){.help{display:none}.chat{bottom:calc(12px + env(safe-area-inset-bottom));width:min(360px, calc(100vw - 24px - 152px - env(safe-area-inset-left) - env(safe-area-inset-right)))}.chat input{min-height:44px;font-size:16px}.live-ui{bottom:calc(172px + env(safe-area-inset-bottom))}.minimap.big canvas{width:min(100vw - 32px,100dvh - 140px)!important;height:min(100vw - 32px,100dvh - 140px)!important}.dialog{bottom:calc(172px + env(safe-area-inset-bottom))}.hud:has(>.dialog)~.live-ui{bottom:calc(316px + env(safe-area-inset-bottom))}.cine-skip{right:calc(24px + env(safe-area-inset-right))}}@media (pointer:coarse) and (hover:none) and (height<=500px){.minimap canvas{width:110px!important;height:110px!important}.minimap-head img{max-width:90px}.dialog{top:calc(10px + env(safe-area-inset-top));width:min(420px,100vw - 440px);padding:10px 14px 20px;font-size:14px;bottom:auto}.hud:has(>.dialog)~.live-ui{bottom:calc(172px + env(safe-area-inset-bottom))}}.ref-btn{color:#1b1d24;cursor:pointer;background:#ffd23f;border:2px solid #1b1d24;border-radius:999px;padding:9px 12px;font:600 13px/1 system-ui,sans-serif;box-shadow:0 3px #1b1d24}.ref-btn.clear{background:#fff}.ref-btn:active{transform:translateY(2px);box-shadow:0 1px #1b1d24}.ref-note{color:#fff;background:#1b1d24e0;border-radius:12px;max-width:280px;padding:8px 12px;font:600 13px/1.3 system-ui,sans-serif}.npc-chat{left:50%;bottom:calc(96px + env(safe-area-inset-bottom));background:var(--paper);width:min(560px,100vw - 24px);color:var(--ink);border:4px solid var(--ink);outline:3px solid var(--paper);box-shadow:0 0 0 7px var(--ink);font:700 16px/1.45 var(--round);border-radius:12px;flex-direction:column;gap:8px;padding:10px 14px 12px;display:flex;position:absolute;transform:translate(-50%)}.npc-chat-head{justify-content:space-between;align-items:center;display:flex}.npc-chat-head b{color:#1f5566;letter-spacing:.5px;font:400 18px Darumadrop One,Chewy,sans-serif}.npc-chat-x{font:700 18px var(--round);cursor:pointer;color:var(--ink);background:0 0;border:0;padding:0 4px}.npc-chat-msgs{flex-direction:column;gap:6px;max-height:168px;display:flex;overflow-y:auto}.npc-line{margin:0}.npc-line.you{color:#fff;background:#3b63c4;border-radius:12px 12px 3px;align-self:flex-end;max-width:80%;padding:5px 11px;font-size:14px;font-weight:600}.npc-line.agents{color:#6a5acd;font-size:14px;font-style:italic;font-weight:600}.npc-line.typing{letter-spacing:3px;animation:1s steps(3,end) infinite npcDots}@keyframes npcDots{50%{opacity:.35}}.npc-chat-form{gap:8px;display:flex}.npc-chat-form input{border:3px solid var(--ink);min-width:0;font:600 15px var(--round);background:#fff;border-radius:10px;flex:1;padding:7px 10px}.npc-chat-form button{border:3px solid var(--ink);color:#fff;font:700 16px var(--round);cursor:pointer;box-shadow:0 3px 0 var(--ink);background:#ff5d6c;border-radius:10px;padding:0 14px}.npc-chat-form button:disabled{opacity:.5;cursor:default}@media (width<=640px){.npc-chat{bottom:calc(172px + env(safe-area-inset-bottom))}}
