:root{--hall:#0B0B0C;--panel:#0B0B0C;--raise:#151517;--line:#2A2927;--fg:#F5F2EB;--muted:#B9B5AC;--accent:#A78BFA;--on-accent:#F5F2EB;--signal:#7C3AED;--f-ui:"Figtree","Helvetica Neue",Arial,sans-serif;--f-mono:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;color-scheme:dark}html,body,#root,.app{height:100%}body{margin:0}[hidden]{display:none!important}body{background:var(--hall);color:var(--fg);font-family:var(--f-ui);overflow:hidden;-webkit-font-smoothing:antialiased}#stage{position:fixed;top:0;right:0;bottom:0;left:0}#stage canvas{display:block;touch-action:none;outline:none}.tb{position:fixed;z-index:5;top:calc(env(safe-area-inset-top,0px) + 16px);left:max(16px,env(safe-area-inset-left,0px));width:min(300px,calc(100% - 32px));display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:3px;overflow:hidden;box-shadow:0 8px 28px #00000059}.tb>*{background:var(--panel);padding:9px 12px;min-width:0}.tb .head,.tb .wide,.tb .hint{grid-column:1/-1}.tb .brand{font-weight:600;font-size:17px;letter-spacing:-.02em}.tb .sub{color:var(--muted);font-size:12px;margin-top:3px}.tb .k{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.tb .v{font-family:var(--f-mono);font-size:14px;margin-top:3px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tb .hint{font-size:11.5px;line-height:1.55;color:var(--muted)}.tb .hint b{color:var(--fg);font-weight:600}.touch-only{display:none}@media (pointer:coarse){.mouse-only{display:none}.touch-only{display:inline}}#rail{position:fixed;z-index:6;top:calc(env(safe-area-inset-top,0px) + 16px);right:max(16px,env(safe-area-inset-right,0px));max-height:calc(100% - 110px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));display:flex;flex-direction:column}#rail>.lil-gui.root{min-height:0;max-height:100%;border:1px solid var(--line);border-radius:3px;box-shadow:0 8px 28px #00000059}.lil-gui{--width:288px;--background-color:var(--panel);--title-background-color:#101215;--title-text-color:var(--fg);--text-color:var(--fg);--widget-color:var(--raise);--hover-color:#343944;--focus-color:#3d4450;--number-color:var(--accent);--string-color:#cfd8e6;--font-family:var(--f-ui);--font-family-mono:var(--f-mono);--font-size:12px;--input-font-size:12px;--widget-height:22px;--name-width:46%;--padding:6px;--spacing:5px}.lil-gui .title{font-weight:600;letter-spacing:.02em}.lil-gui.root>.title{font-family:var(--f-mono);font-weight:500;letter-spacing:.12em;text-transform:uppercase;font-size:11.5px}.viewbar{position:fixed;z-index:5;left:50%;transform:translate(-50%);bottom:calc(env(safe-area-inset-bottom,0px) + 16px);display:flex;gap:2px;padding:4px;background:var(--panel);border:1px solid var(--line);border-radius:6px;max-width:calc(100% - 32px);overflow-x:auto;box-shadow:0 8px 28px #00000059;scrollbar-width:none}.viewbar button{font:500 13px/1 var(--f-ui);color:var(--fg);background:transparent;border:0;padding:10px 12px;border-radius:4px;white-space:nowrap;cursor:pointer;display:flex;align-items:center;gap:7px}.viewbar button:hover{background:var(--raise)}.viewbar button[aria-pressed=true]{background:var(--signal);color:var(--on-accent)}.viewbar .key{font:500 10px/1 var(--f-mono);color:var(--muted);border:1px solid var(--line);border-radius:3px;padding:2px 4px}.viewbar button[aria-pressed=true] .key{color:var(--on-accent);border-color:currentColor}.viewbar .sep{flex:0 0 1px;background:var(--line);margin:6px 4px}button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}@media (pointer:coarse){.viewbar .key{display:none}}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#08090bb8;display:grid;place-items:center;padding:calc(env(safe-area-inset-top,0px) + 16px) max(16px,env(safe-area-inset-right,0px)) calc(env(safe-area-inset-bottom,0px) + 16px) max(16px,env(safe-area-inset-left,0px))}.sheet-card{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:12px;max-width:min(1100px,100%);display:grid;gap:10px}.sheet-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.sheet-head strong{font-weight:600}.sheet-card img{width:100%;max-height:70vh;object-fit:contain;border-radius:3px;background:#000}.sheet-card p{margin:0;color:var(--muted);font-size:12.5px}.btn{font:500 13px/1 var(--f-ui);color:var(--fg);background:var(--raise);border:1px solid var(--line);border-radius:4px;padding:8px 12px;cursor:pointer}.toast{pointer-events:none;position:fixed;z-index:30;left:50%;transform:translate(-50%);bottom:calc(env(safe-area-inset-bottom,0px) + 76px);background:var(--fg);color:var(--panel);font-size:13px;padding:9px 14px;border-radius:4px;max-width:calc(100% - 32px)}.simbar{position:fixed;z-index:5;left:50%;transform:translate(-50%);bottom:calc(env(safe-area-inset-bottom,0px) + 72px);max-width:calc(100% - 32px);background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:8px 12px;display:grid;gap:6px}.simstats{display:flex;flex-wrap:wrap;gap:4px 14px;font:500 12px/1.4 var(--f-mono);color:var(--muted);font-variant-numeric:tabular-nums}.simstats b{color:var(--fg);font-weight:500}.simstats span:first-child{color:var(--accent)}.simkey{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:11px;color:var(--muted)}.simlink{font:600 12px/1.4 var(--f-ui);color:var(--accent);background:none;border:0;padding:0;cursor:pointer;margin-left:auto}.simlink:hover{text-decoration:underline}.simlink:disabled{opacity:.5;cursor:default;text-decoration:none}.simkey i{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--c);margin-right:5px;vertical-align:-1px}.simcard{width:min(1100px,100%);max-height:88vh;overflow:auto}.simwrap{overflow-x:auto}.simtable{width:100%;border-collapse:collapse;font-size:13px}.simtable th,.simtable td{padding:7px 10px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}.simtable th{font-weight:600;color:var(--fg)}.simtable th:first-child{color:var(--accent);text-align:left}.simtable td:first-child{text-align:left;white-space:normal;color:var(--muted);min-width:180px}.simtable td{font-family:var(--f-mono);font-variant-numeric:tabular-nums}.simtable td.best{color:var(--accent);font-weight:600}.simheat{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}.simheat figure{margin:0;display:grid;gap:6px}.simheat img{width:100%;border-radius:3px;border:1px solid var(--line)}.simheat figcaption,.simnote{color:var(--muted);font-size:12px;line-height:1.5;margin:0}@media (max-width:700px){.simbar{bottom:calc(env(safe-area-inset-bottom,0px) + 70px)}.simkey{display:none}}.app.walking .tb,.app.walking #rail,.app.walking .viewbar,.app.walking .simbar{display:none}.walkhud{position:fixed;top:0;right:0;bottom:0;left:0;z-index:7;pointer-events:none}.walkhud .cross{position:absolute;left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:var(--fg);border:1px solid var(--hall)}.walkbar{position:absolute;left:50%;transform:translate(-50%);bottom:calc(env(safe-area-inset-bottom,0px) + 16px);display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 14px;max-width:calc(100% - 32px);padding:8px 8px 8px 14px;background:var(--panel);border:1px solid var(--line);border-radius:6px;font-size:12.5px;color:var(--muted);pointer-events:auto}.walkbar b{color:var(--fg);font-weight:600}.walkbar .btn[aria-pressed=true]{background:var(--signal);border-color:var(--signal);color:var(--on-accent)}.walkinfo{position:absolute;left:50%;transform:translate(-50%);bottom:calc(env(safe-area-inset-bottom,0px) + 74px);width:max-content;max-width:min(560px,calc(100% - 32px));background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:10px 14px;display:grid;gap:4px}.walkinfo .k{font:500 11px/1.4 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.walkinfo span:last-child{font-size:15px;line-height:1.4;color:var(--fg)}.walktouch{display:none}@media (max-width:1100px){.walkinfo{top:calc(env(safe-area-inset-top,0px) + 104px);bottom:auto}}@media (pointer:coarse){.walkbar{display:none}.walktouch{display:block}.walkinfo{top:calc(env(safe-area-inset-top,0px) + 104px);bottom:auto}}.walktouch>*{position:absolute;pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.walkhint{left:50%;transform:translate(-50%);top:calc(env(safe-area-inset-top,0px) + 74px);margin:0;font-size:12px;color:var(--muted);white-space:nowrap;text-shadow:0 1px 3px rgba(0,0,0,.8);pointer-events:none!important}.stick{left:max(24px,env(safe-area-inset-left,0px));bottom:calc(env(safe-area-inset-bottom,0px) + 28px);width:128px;height:128px;border-radius:50%;background:#0b0b0c73;border:1px solid rgba(245,242,235,.28);display:grid;place-items:center}.stick .knob{width:56px;height:56px;border-radius:50%;background:#f5f2ebe0;box-shadow:0 2px 10px #00000073;pointer-events:none}.act{border-radius:50%;font:600 13px/1 var(--f-ui);color:var(--fg);background:#0b0b0c8c;border:1px solid rgba(245,242,235,.28);display:grid;place-items:center;padding:0;cursor:pointer}.act[aria-pressed=true]{background:var(--signal);border-color:var(--signal);color:var(--on-accent)}.act.bonk{right:max(24px,env(safe-area-inset-right,0px));bottom:calc(env(safe-area-inset-bottom,0px) + 36px);width:84px;height:84px;font-size:16px;background:#ff6fb5;border-color:#ff6fb5;color:#16161a}.act.run{right:calc(max(24px,env(safe-area-inset-right,0px)) + 98px);bottom:calc(env(safe-area-inset-bottom,0px) + 44px);width:64px;height:64px}.act.crowd{right:calc(max(24px,env(safe-area-inset-right,0px)) + 14px);bottom:calc(env(safe-area-inset-bottom,0px) + 134px);width:56px;height:56px}.act.exit{right:max(16px,env(safe-area-inset-right,0px));top:calc(env(safe-area-inset-top,0px) + 16px);width:44px;height:44px;font-size:18px}.gamescore{position:absolute;left:max(16px,env(safe-area-inset-left,0px));top:calc(env(safe-area-inset-top,0px) + 16px);background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:8px 12px;font:500 13px/1.3 var(--f-mono);color:var(--muted);font-variant-numeric:tabular-nums}.gamescore b{color:var(--fg);font-size:16px}@media (max-width:700px){.gamescore span{display:none}}.gamepop{position:absolute;left:50%;top:57%;transform:translate(-50%);font:700 clamp(18px,5.5vw,24px)/1.2 var(--f-ui);color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.85);width:max-content;max-width:calc(100% - 32px);text-align:center;animation:gamepop 1.2s ease-out forwards}@keyframes gamepop{0%{opacity:0;transform:translate(-50%,10px) scale(.9)}15%{opacity:1;transform:translate(-50%) scale(1.06)}70%{opacity:1}to{opacity:0;transform:translate(-50%,-28px)}}@media (prefers-reduced-motion:reduce){.gamepop{animation:none}}.hearts{font-style:normal;margin-right:10px;letter-spacing:2px}.hearts em{font-style:normal;color:#ff4d6d}.hearts em.lost{color:var(--line)}.hurtflash{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(ellipse at center,#ff002800 40%,#ff00288c);animation:hurtflash .45s ease-out forwards}@keyframes hurtflash{0%{opacity:1}to{opacity:0}}.dodge{position:absolute;left:50%;transform:translate(-50%);bottom:calc(env(safe-area-inset-bottom,0px) + 120px);pointer-events:auto;font:800 22px/1 var(--f-ui);letter-spacing:.08em;color:#16161a;background:#ffd23f;border:0;border-radius:999px;padding:16px 28px;cursor:pointer;box-shadow:0 0 #ffd23fb3;animation:dodgepulse .6s ease-in-out infinite alternate}.dodge kbd{font:600 11px var(--f-mono);border:1px solid currentColor;border-radius:3px;padding:2px 5px;margin-left:8px;vertical-align:3px}@keyframes dodgepulse{to{box-shadow:0 0 0 14px #ffd23f00;transform:translate(-50%) scale(1.06)}}@media (pointer:coarse){.dodge{left:auto;right:max(24px,env(safe-area-inset-right,0px));bottom:calc(env(safe-area-inset-bottom,0px) + 206px);transform:none;padding:20px 26px}@keyframes dodgepulse{to{box-shadow:0 0 0 14px #ffd23f00;transform:scale(1.06)}}}@media (prefers-reduced-motion:reduce){.hurtflash{animation-duration:.01s}.dodge{animation:none}}.app.landing .tb,.app.landing #rail,.app.landing .viewbar,.app.landing .simbar{display:none}.playscreen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:8;display:grid;place-items:center;padding:calc(env(safe-area-inset-top,0px) + 16px) max(16px,env(safe-area-inset-right,0px)) calc(env(safe-area-inset-bottom,0px) + 16px) max(16px,env(safe-area-inset-left,0px));background:radial-gradient(ellipse at center,#08090b1a,#08090b8c 80%)}.playcard{width:min(460px,100%);display:grid;gap:14px;text-align:center;background:#0b0b0cd1;border:1px solid var(--line);border-radius:10px;padding:24px 20px;box-shadow:0 18px 60px #00000080}.playkicker{margin:0;font:500 11px/1.4 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.playtitle{margin:0;font:800 clamp(38px,9vw,56px)/1 var(--f-ui);letter-spacing:-.02em;color:var(--fg)}.playsub{margin:0;color:var(--muted);font-size:14px;line-height:1.5}.playname{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;font-size:14px;color:var(--muted)}.playname b{color:var(--fg)}.playbtn{font:800 26px/1 var(--f-ui);letter-spacing:.14em;color:var(--on-accent);background:var(--signal);border:0;border-radius:999px;padding:20px 0;cursor:pointer;box-shadow:0 0 #7c3aed99;animation:playpulse 1.6s ease-in-out infinite}.playbtn:disabled{opacity:.55;cursor:default;animation:none}@keyframes playpulse{50%{box-shadow:0 0 0 12px #7c3aed00}}.playmic{display:grid;gap:6px;justify-items:center}.playmic p,.playkeys{margin:0;color:var(--muted);font-size:12px;line-height:1.5}.playkeys b{color:var(--fg)}@media (pointer:coarse){.playkeys{display:none}}.playlinks{display:flex;justify-content:center;gap:6px 18px;flex-wrap:wrap}.playlinks a{color:var(--accent);font-size:13px;text-decoration:none}.playlinks a:hover{text-decoration:underline}@media (prefers-reduced-motion:reduce){.playbtn{animation:none}}.onlinepill{position:absolute;left:max(16px,env(safe-area-inset-left,0px));top:calc(env(safe-area-inset-top,0px) + 62px);pointer-events:auto;cursor:pointer;display:flex;align-items:center;gap:7px;font:500 12px/1 var(--f-mono);color:var(--fg);background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:7px 11px}.onlinepill i{width:8px;height:8px;border-radius:50%;background:#3ecf93;box-shadow:0 0 6px #3ecf93}.onlinepill:not(.online){color:var(--muted)}.onlinepill kbd{font:500 10px var(--f-mono);border:1px solid var(--line);border-radius:3px;padding:1px 4px;color:var(--muted)}.boardbtn{position:absolute;left:calc(max(16px,env(safe-area-inset-left,0px)) + 150px);top:calc(env(safe-area-inset-top,0px) + 62px);pointer-events:auto;cursor:pointer;display:flex;align-items:center;gap:6px;font:500 14px/1 var(--f-ui);color:var(--fg);background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:6px 10px}.boardbtn kbd{font:500 10px var(--f-mono);border:1px solid var(--line);border-radius:3px;padding:1px 4px;color:var(--muted)}.playhi{margin:0;color:var(--muted);font-size:14px}.playhi b{color:var(--fg)}.playcard .board{text-align:left}.playcard{max-height:calc(100dvh - 32px);overflow:auto}.playerpanel{position:absolute;left:max(16px,env(safe-area-inset-left,0px));top:calc(env(safe-area-inset-top,0px) + 100px);width:min(300px,calc(100% - 32px));max-height:50vh;overflow:auto;pointer-events:auto;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px;display:grid;gap:8px}.playerpanel ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}.playerpanel li{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px}.playerpanel li.empty{color:var(--muted)}.playerpanel .btn{padding:5px 9px;font-size:12px}.playerpanel .btn[aria-pressed=true]{background:var(--signal);border-color:var(--signal);color:var(--on-accent)}.muteall{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}.micask{position:absolute;left:50%;top:40%;transform:translate(-50%);pointer-events:auto;cursor:pointer;font:700 16px var(--f-ui);color:var(--on-accent);background:var(--signal);border:0;border-radius:999px;padding:14px 22px}.micpill{position:absolute;left:50%;transform:translate(-50%);top:calc(env(safe-area-inset-top,0px) + 16px);font:600 12px var(--f-ui);color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:7px 12px;display:flex;align-items:center;gap:8px}.micpill.live{color:var(--on-accent);background:var(--signal);border-color:var(--signal)}.micpill.muted{color:#ff8a8a}.micpill kbd{font:500 10px var(--f-mono);border:1px solid currentColor;border-radius:3px;padding:1px 4px;opacity:.8}@media (pointer:coarse){.micpill kbd{display:none}}.act.talk[aria-pressed=true]{background:#78141ebf;border-color:#ff8a8a;color:#ffd0d0}.act.talk.live{box-shadow:0 0 0 4px #7c3aed8c;border-color:var(--signal)}.act.talk{right:calc(max(24px,env(safe-area-inset-right,0px)) + 98px);bottom:calc(env(safe-area-inset-bottom,0px) + 124px);width:64px;height:64px}.gamecard{width:min(440px,100%)}.gameform{display:grid;gap:8px}.gameform p{margin:0;color:var(--muted);font-size:13px;line-height:1.5}.gameform label{font-size:12px;color:var(--muted)}.gameform input{font:500 16px/1.2 var(--f-mono);color:var(--fg);background:var(--raise);border:1px solid var(--line);border-radius:4px;padding:10px 12px;width:100%;min-width:0}.gamephone{display:flex;align-items:center;gap:8px}.gamephone span{font:500 16px var(--f-mono);color:var(--muted)}.gamephone input{flex:1 1 0}.gamephone select{flex:0 1 9em;min-width:0;font:500 16px/1.2 var(--f-ui);color:var(--fg);background:var(--raise);border:1px solid var(--line);border-radius:4px;padding:10px 8px;text-overflow:ellipsis}.btn.primary{background:var(--signal);border-color:var(--signal);color:var(--on-accent);padding:10px 14px}.btn:disabled{opacity:.5;cursor:default}.gameerror{margin:0;color:#ff8a8a;font-size:13px}.gameboard td:first-child{min-width:0;width:2.5em;text-align:left}.gameboard th:nth-child(2),.gameboard td:nth-child(2){text-align:left;font-family:var(--f-ui);white-space:normal}.gameboard tr.me td{color:var(--accent);font-weight:600}.boot{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--muted);font:500 14px var(--f-mono);padding:0 max(16px,env(safe-area-inset-right,0px)) 0 max(16px,env(safe-area-inset-left,0px));text-align:center}@media (max-width:700px){.tb{width:auto;right:max(16px,env(safe-area-inset-right,0px))}.tb .cell,.tb .wide,.tb .hint{display:none}#rail{left:max(16px,env(safe-area-inset-left,0px));top:calc(env(safe-area-inset-top,0px) + 82px);max-height:calc(100% - 176px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}#rail>.lil-gui.root{--width:100%;width:100%}.viewbar button{padding:10px 9px}}.cardsbtn{left:calc(max(16px,env(safe-area-inset-left,0px)) + 212px)}.dot{font:700 10px/16px var(--f-ui);font-style:normal;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--signal);color:var(--on-accent);text-align:center}.act.card{right:calc(max(24px,env(safe-area-inset-right,0px)) + 14px);bottom:calc(env(safe-area-inset-bottom,0px) + 200px);width:56px;height:56px;font-size:12px;background:#f5f2eb;border-color:#f5f2eb;color:#16161a}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:4px 0 10px}.tabs button{font:600 13px/1 var(--f-ui);color:var(--muted);background:none;border:0;border-bottom:2px solid transparent;padding:8px 10px;cursor:pointer;display:flex;align-items:center;gap:6px}.tabs button[aria-selected=true]{color:var(--fg);border-bottom-color:var(--signal)}.contacts h3{font:500 11px/1.4 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:10px 0 6px}.contacts ul{list-style:none;margin:0;padding:0}.contacts li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}.contacts li a{color:var(--accent);font-variant-numeric:tabular-nums}.contacts li small{color:var(--muted);margin-left:4px}.contacts .row,.gamecard .row{display:flex;gap:10px;align-items:center}.walkinfo .cardline{color:var(--fg);font-size:13px;margin-top:2px}
