:root{--ink:#1f2328;--paper:#fbfbfa;--muted:#5b6370;--cursor:#2f6fde;--scrim:#14161a59;--void:#1d1f24;--font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--ink:#eef0f3;--paper:#23262c;--muted:#a7aeb9;--cursor:#7aa7ff;--scrim:#00000080}}:root[data-theme=dark]{--ink:#eef0f3;--paper:#23262c;--muted:#a7aeb9;--cursor:#7aa7ff;--scrim:#00000080}*,:before,:after{box-sizing:inherit}html{height:100%;scroll-padding-top:env(safe-area-inset-top,0px)}body{background:var(--void);height:100%;color:var(--ink);font:16px/1.45 var(--font);-webkit-user-select:none;user-select:none;margin:0;overflow:hidden}#game{position:fixed;inset:0}#game canvas{display:block}#ui{pointer-events:none;position:fixed;inset:0}#ui>*{pointer-events:auto}.box,.dialog,.menu,.panel,.banner,.menu-btn{background:var(--paper);color:var(--ink);border:3px solid var(--ink);box-shadow:inset 0 0 0 2px var(--paper), inset 0 0 0 3px color-mix(in srgb, var(--ink) 25%, transparent);border-radius:6px}button{font:inherit;color:inherit;cursor:pointer}:focus-visible{outline:3px solid var(--cursor);outline-offset:2px}.banner{top:calc(12px + env(safe-area-inset-top,0px));left:calc(12px + env(safe-area-inset-left,0px));opacity:0;pointer-events:none;max-width:min(520px,100% - 120px);padding:8px 14px;font-weight:600;transition:transform .18s ease-out,opacity .18s ease-out;position:absolute;transform:translateY(-140%)}.banner.on{opacity:1;transform:none}.menu-btn{top:calc(12px + env(safe-area-inset-top,0px));right:calc(12px + env(safe-area-inset-right,0px));padding:6px 14px;font-weight:600;position:absolute}.dialog{left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));cursor:pointer;width:min(720px,100% - 24px);padding:14px 18px 12px;position:absolute;transform:translate(-50%)}.dialog-text{margin:0 0 6px;font-size:17px}.dialog-cue{color:var(--muted);justify-content:flex-end;align-items:center;gap:12px;margin:0;font-size:13px;display:flex}.cue-touch{display:none}.dialog-close{border:2px solid var(--ink);color:var(--ink);background:0 0;border-radius:4px;padding:2px 10px;font-size:13px;font-weight:600}.menu{top:calc(60px + env(safe-area-inset-top,0px));right:calc(12px + env(safe-area-inset-right,0px));flex-direction:column;width:200px;padding:8px 6px;display:flex;position:absolute}.menu.behind{filter:brightness(.92)}.menu-item{text-align:left;background:0 0;border:0;border-radius:4px;padding:7px 10px 7px 28px;font-size:17px;position:relative}.menu-item[aria-current=true]:before{content:"▶";color:var(--cursor);font-size:11px;position:absolute;top:50%;left:9px;transform:translateY(-50%)}.menu-item:focus-visible{outline-offset:-3px}.panel{width:min(460px,100% - 24px);max-height:calc(100% - 140px);box-shadow:0 0 0 100vmax var(--scrim), inset 0 0 0 2px var(--paper);padding:18px 20px 16px;position:absolute;top:50%;left:50%;overflow:auto;transform:translate(-50%,-50%)}.panel h2{margin:0 0 12px;font-size:20px;line-height:1.2}.panel p{max-width:60ch;margin:0 0 10px}.panel .empty{color:var(--muted)}.rows{margin:0 0 12px;padding:0;list-style:none}.rows li{border-top:1px solid color-mix(in srgb, var(--ink) 15%, transparent);gap:2px;padding:9px 0;display:grid}.rows li:first-child{border-top:0;padding-top:0}.rows span{color:var(--muted);font-size:15px}.panel-close{border:2px solid var(--ink);background:0 0;border-radius:4px;margin-left:auto;padding:5px 14px;font-weight:600;display:block}[hidden]{display:none!important}.pad{display:none}@media (pointer:coarse){.pad{left:calc(16px + env(safe-area-inset-left,0px));bottom:calc(16px + env(safe-area-inset-bottom,0px));right:calc(16px + env(safe-area-inset-right,0px));pointer-events:none;grid-template-rows:repeat(3,52px);grid-template-columns:repeat(3,52px);display:grid;position:absolute}.pad button{pointer-events:auto;touch-action:none;background:color-mix(in srgb, var(--paper) 85%, transparent);border:3px solid var(--ink);border-radius:8px;font-size:18px}.pad-up{grid-area:1/2}.pad-left{grid-area:2/1}.pad-right{grid-area:2/3}.pad-down{grid-area:3/2}.cue-keys{display:none}.cue-touch{display:inline}.ui-open .pad{display:none}.pad-a{width:64px;height:64px;font-weight:700;position:absolute;bottom:26px;right:0;border-radius:50%!important}}@media (prefers-reduced-motion:reduce){.banner{transition:none}}.plan{width:100%;height:auto;margin:0 0 12px;display:block}.plan rect{fill:color-mix(in srgb, var(--ink) 6%, var(--paper));stroke:var(--ink);stroke-width:.06px}.plan text{font:600 .3px var(--font);fill:var(--ink);text-anchor:middle;dominant-baseline:central}.plan .here rect{fill:var(--cursor);stroke-width:.1px}.plan .here text{fill:var(--paper)}.panel h3{margin:16px 0 6px;font-size:16px}.unknown{color:var(--muted)}.chips{flex-wrap:wrap;gap:8px;margin:8px 0 4px;display:flex}.chip{border:2px solid var(--ink);background:0 0;border-radius:999px;padding:4px 12px;font-size:14px;font-weight:600}.chip:hover{background:color-mix(in srgb, var(--cursor) 12%, transparent)}#login{background:var(--void);place-items:center;padding:16px;display:grid;position:fixed;inset:0;overflow:auto}#login[hidden]{display:none}.login{background:var(--paper);width:min(420px,100%);color:var(--ink);border:3px solid var(--ink);border-radius:6px;padding:24px 24px 18px}.login h1{margin:0 0 4px;font-size:26px}.login-intro{color:var(--muted);margin:0 0 18px}.login form{gap:6px;display:grid}.login label{font-weight:600}.login input,.field-row input{font:inherit;color:var(--ink);background:var(--paper);border:2px solid var(--ink);-webkit-user-select:text;user-select:text;border-radius:4px;padding:8px 10px}.login input{margin-bottom:8px}.login-error{color:#b42318;min-height:1.45em;margin:0;font-weight:600}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .login-error{color:#ff8a80}}:root[data-theme=dark] .login-error{color:#ff8a80}.login button[type=submit]{background:var(--ink);color:var(--paper);border:2px solid var(--ink);border-radius:4px;margin-top:4px;padding:10px 14px;font-weight:700}.login button[disabled]{opacity:.7;cursor:progress}.login-note{color:var(--muted);margin:14px 0 0;font-size:14px}.field-row{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px;display:flex}.field-row label{width:100%;font-weight:600}.field-row input{flex:180px;min-width:0}.panel-note{font-weight:600}
