@font-face{font-family:"Press Start 2P";src:url(/assets/fonts/PressStart2P-Regular.ttf)format("truetype");font-display:block}@font-face{font-family:Tiny5;src:url(/assets/fonts/Tiny5-Regular.ttf)format("truetype");font-display:block}@font-face{font-family:Pixel Operator;src:url(/assets/fonts/PixelOperator8-Bold.ttf)format("truetype");font-display:block}@font-face{font-family:Silkscreen;src:url(/assets/fonts/Silkscreen-Regular.ttf)format("truetype");font-display:block}:root{--px:3px;--body:calc(var(--px) * 8);--ink:#2e222f;--night:#3e3546;--slate:#625565;--violet:#7f708a;--steel:#9babb2;--mist:#c7dcd0;--white:#fff;--green:#1ebc73;--green-dark:#239063;--leaf:#91db69;--forest:#165a4c;--red:#e83b3b;--amber:#f79617;--yellow:#f9c22b;--peach:#fbb954;--purple:#6b3e75;--lavender:#a884f3;--wood:#9e4539;--wood-light:#cd683d;--plum:#45293f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--ink);height:100%;color:var(--white);-webkit-font-smoothing:none;font-smooth:never;-webkit-user-select:none;user-select:none;margin:0;font-family:Pixel Operator,monospace;overflow:hidden}#game{position:fixed;inset:0;overflow:hidden}#game canvas{image-rendering:pixelated;image-rendering:crisp-edges;display:block}#ui{pointer-events:none;position:fixed;inset:0}#ui>*{pointer-events:auto}.px-panel{background:var(--night);box-shadow:0 0 0 var(--px) var(--ink), inset 0 var(--px) 0 var(--slate), inset 0 calc(var(--px) * -2) 0 var(--plum), 0 calc(var(--px) * 3) 0 var(--px) #2e222f8c;border-radius:0}.px-btn{font-family:"Press Start 2P",monospace;font-size:calc(var(--px) * 8);color:var(--white);background:var(--green-dark);padding:calc(var(--px) * 4) calc(var(--px) * 8) calc(var(--px) * 5);cursor:pointer;box-shadow:0 0 0 var(--px) var(--ink), inset 0 var(--px) 0 var(--green), inset 0 calc(var(--px) * -2) 0 var(--forest);text-shadow:0 var(--px) 0 var(--forest);border:none;line-height:1;transition:transform 80ms steps(2,end)}.px-btn:hover{background:var(--green);box-shadow:0 0 0 var(--px) var(--ink), inset 0 var(--px) 0 var(--leaf), inset 0 calc(var(--px) * -2) 0 var(--green-dark)}.px-btn:active,.px-btn.pressed{transform:translateY(var(--px))}.px-btn:disabled{background:var(--slate);box-shadow:0 0 0 var(--px) var(--ink), inset 0 var(--px) 0 var(--violet), inset 0 calc(var(--px) * -2) 0 var(--night);text-shadow:none;color:var(--steel);cursor:default}.px-input{font-family:Pixel Operator,monospace;font-size:var(--body);color:var(--white);background:var(--ink);width:100%;padding:calc(var(--px) * 3) calc(var(--px) * 4);box-shadow:0 0 0 var(--px) var(--slate), inset 0 var(--px) 0 #000a;caret-color:var(--leaf);-webkit-user-select:text;user-select:text;border:none;outline:none}.px-input:focus{box-shadow:0 0 0 var(--px) var(--leaf), inset 0 var(--px) 0 #000a}.px-input::placeholder{color:var(--slate)}.login{justify-content:center;align-items:center;gap:calc(var(--px) * 6);flex-direction:column;display:flex;position:absolute;inset:0}.login__logo{width:calc(var(--px) * var(--logo-w,259));image-rendering:pixelated;filter:drop-shadow(0 calc(var(--px) * 2) 0 #2e222f99);animation:2.4s steps(6,end) infinite logo-bob}@keyframes logo-bob{0%,to{transform:translateY(0)}50%{transform:translateY(calc(var(--px) * -2))}}.login__card{width:calc(var(--px) * 168);padding:calc(var(--px) * 6) calc(var(--px) * 8) calc(var(--px) * 8);gap:calc(var(--px) * 5);flex-direction:column;display:flex}.login__tabs{gap:calc(var(--px) * 2);margin:calc(var(--px) * -6) calc(var(--px) * -8) 0;padding:0;display:flex}.login__tab{font-family:Pixel Operator,monospace;font-size:var(--body);padding:calc(var(--px) * 5) 0 calc(var(--px) * 4);color:var(--steel);background:var(--plum);cursor:pointer;box-shadow:inset 0 calc(var(--px) * -1) 0 var(--ink);border:none;flex:1}.login__tab[aria-selected=true]{color:var(--yellow);background:var(--night);box-shadow:inset 0 var(--px) 0 var(--slate);text-shadow:0 var(--px) 0 var(--ink)}.login__tab:not([aria-selected=true]):hover{color:var(--white)}.login__field{gap:calc(var(--px) * 2);flex-direction:column;display:flex}.login__label{font-family:Pixel Operator,monospace;font-size:var(--body);color:var(--mist);line-height:1}.login__hint{font-size:var(--body);color:var(--steel);line-height:1.1}.login__error{min-height:calc(var(--px) * 9);font-size:var(--body);color:#f68181;text-shadow:0 var(--px) 0 var(--ink);line-height:1.1}.login__error.shake{animation:.3s steps(6,end) shake}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translateX(calc(var(--px) * -2))}75%{transform:translateX(calc(var(--px) * 2))}}.login__submit{align-self:stretch}.login__footer{font-family:Pixel Operator,monospace;font-size:var(--body);color:var(--mist);text-shadow:0 var(--px) 0 var(--ink);text-align:center;line-height:1.3}.login__footer b{color:var(--leaf);font-weight:400}.saves__card{width:calc(var(--px) * 236);max-height:calc(100vh - var(--px) * 70);padding:calc(var(--px) * 6) calc(var(--px) * 8) calc(var(--px) * 8);gap:calc(var(--px) * 5);font-size:var(--body);flex-direction:column;display:flex;overflow-y:auto}.saves--busy .saves__card{cursor:progress}.saves__hello{color:var(--mist)}.saves__hello b,.saves__meta b,.saves__code b{color:var(--leaf);font-weight:400}.saves__body{gap:calc(var(--px) * 4);flex-direction:column;display:flex}.saves__loading{gap:calc(var(--px) * 4);color:var(--steel);align-items:center;display:flex}.saves__heading{color:var(--yellow);text-shadow:0 var(--px) 0 var(--ink);margin-top:calc(var(--px) * 2)}.saves__dim{color:var(--violet)}.saves__empty{color:var(--steel)}.saves__item{gap:calc(var(--px) * 2);padding:calc(var(--px) * 4);background:var(--ink);box-shadow:0 0 0 var(--px) var(--slate);flex-direction:column;display:flex}.saves__name{color:var(--white);overflow-wrap:anywhere}.saves__meta{color:var(--steel)}.saves__code{color:var(--mist);gap:calc(var(--px) * 2);flex-wrap:wrap;align-items:center;display:flex}.saves__code b{color:var(--yellow);-webkit-user-select:all;user-select:all}.saves__actions{gap:calc(var(--px) * 3);margin-top:calc(var(--px) * 1);flex-wrap:wrap;align-items:center;display:flex}.saves__actions .saves__btn--red{margin-left:auto}.saves__row{gap:calc(var(--px) * 4);align-items:center;display:flex}.saves__join{gap:calc(var(--px) * 2);margin-top:calc(var(--px) * 2);flex-direction:column;display:flex}.px-btn.saves__btn{font-size:calc(var(--px) * 7);padding:calc(var(--px) * 3) calc(var(--px) * 4) calc(var(--px) * 4);white-space:nowrap}.px-btn.saves__mini{font-family:Pixel Operator,monospace;font-size:var(--body);white-space:nowrap;padding:calc(var(--px) * 1) calc(var(--px) * 3) calc(var(--px) * 2)}.px-btn.saves__btn--red,.px-btn.saves__mini--grey{background:var(--slate);box-shadow:0 0 0 var(--px) var(--ink), inset 0 var(--px) 0 var(--violet), inset 0 calc(var(--px) * -2) 0 var(--night);text-shadow:0 var(--px) 0 var(--night)}.px-btn.saves__btn--red:hover{background:var(--red);box-shadow:0 0 0 var(--px) var(--ink), inset 0 var(--px) 0 #f68181, inset 0 calc(var(--px) * -2) 0 #6e2727}.px-btn.saves__mini--grey:hover{background:var(--violet)}.saves__new,.saves__logout{align-self:stretch}.saves__logout{margin-top:calc(var(--px) * 1)}.login__error--good{color:var(--leaf)}.banner{left:50%;top:calc(var(--px) * 40);padding:calc(var(--px) * 4) calc(var(--px) * 8);font-size:var(--body);align-items:center;gap:calc(var(--px) * 6);white-space:nowrap;display:flex;position:absolute;transform:translate(-50%)}.banner .px-btn{font-size:var(--body);padding:calc(var(--px) * 3) calc(var(--px) * 5) calc(var(--px) * 4)}.spinner{width:calc(var(--px) * 6);height:calc(var(--px) * 6);background:var(--leaf);box-shadow:0 0 0 var(--px) var(--ink);animation:.8s steps(4,end) infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.chat-input{left:calc(var(--px) * 6);bottom:calc(var(--px) * 36);width:calc(var(--px) * 150);position:absolute}.chat-input .px-input{font-size:var(--body)}.prompt-dim{background:#2e222f8c;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.prompt{width:calc(var(--px) * 180);padding:calc(var(--px) * 8);gap:calc(var(--px) * 5);flex-direction:column;display:flex}.prompt__title{font-family:Pixel Operator,monospace;font-weight:700;font-size:var(--body);color:var(--yellow)}.prompt__buttons{gap:calc(var(--px) * 4);justify-content:flex-end;display:flex}.prompt__buttons .px-btn{font-size:calc(var(--px) * 7)}
