:root{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}*,*:before,*:after{box-sizing:border-box}body{margin:0}[hidden]{display:none!important}:root{--ink:#000000;--zx-red:#D70000;--zx-bred:#FF2A2A;--zx-yellow:#D7D700;--zx-green:#00D700;--zx-cyan:#00D7D7;--zx-white:#D7D7D7;--zx-bwhite:#FFFFFF;--zx-blue:#0000D7;--zx-magenta:#D700D7;--key-top:#3b3a40;--key-low:#232227;--key-edge:#4c4b53;--border:#0000D7;--display:"Silkscreen","Courier New",monospace;--body:"VT323","Courier New",monospace;color-scheme:dark}html,body{height:100%}body{background:var(--ink);color:var(--zx-white);font-family:var(--body);font-size:20px;box-sizing:border-box;overflow:hidden;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:12px}#app{height:100%;display:flex;flex-direction:column;gap:10px;max-width:1280px;margin:0 auto}#frame{flex:1;min-height:0;padding:12px;background:var(--border);position:relative;transition:background-color .3s}#frame.loading{background:repeating-linear-gradient(0deg,var(--zx-cyan) 0 7px,var(--zx-red) 7px 14px);animation:tape .1s steps(2) infinite}#frame.drain{background:repeating-linear-gradient(0deg,var(--zx-bred) 0 5px,var(--ink) 5px 10px);animation:tape .08s steps(2) infinite}@keyframes tape{to{background-position:0 14px}}@media (prefers-reduced-motion:reduce){#frame.loading,#frame.drain{animation:none}}#stage{position:relative;width:100%;height:100%;background:var(--ink);overflow:hidden}#view{display:block;width:100%;height:100%;touch-action:none;image-rendering:pixelated;cursor:crosshair}.hud{position:absolute;left:0;right:0;top:0;display:flex;flex-wrap:wrap;gap:8px 14px;align-items:flex-start;justify-content:space-between;padding:10px 12px;pointer-events:none}.hud>*{pointer-events:auto}.plate{background:var(--ink);padding:4px 10px 3px;line-height:1}.code{font-family:var(--display);font-size:13px;letter-spacing:.08em;color:var(--zx-bwhite)}.code b{color:var(--zx-yellow);font-weight:400}.energy{display:flex;align-items:center;gap:8px}.energy .num{font-family:var(--display);font-size:18px;color:var(--zx-bwhite);font-variant-numeric:tabular-nums;min-width:2ch;text-align:right}.pips{display:flex;flex-wrap:wrap;gap:2px;max-width:170px}.pips i{width:6px;height:10px;background:var(--zx-yellow);display:block}.pips i.hi{background:var(--zx-cyan)}.lbl{font-size:16px;letter-spacing:.06em;color:var(--zx-white);text-transform:uppercase}.right{display:flex;gap:8px;align-items:flex-start;margin-left:auto}.watch{font-family:var(--display);font-size:12px;letter-spacing:.08em;padding:5px 10px 4px;background:var(--ink);color:var(--zx-green);border:2px solid currentColor}.watch.hidden{color:var(--zx-yellow)}.watch.seen{color:var(--zx-bwhite);background:var(--zx-red);border-color:var(--zx-bred);animation:blink .5s steps(2) infinite}@keyframes blink{50%{background:var(--ink);color:var(--zx-bred)}}@media (prefers-reduced-motion:reduce){.watch.seen{animation:none}}.icon-btn{font-family:var(--display);font-size:13px;background:var(--ink);color:var(--zx-white);border:2px solid var(--zx-white);padding:4px 8px 3px;cursor:pointer}.icon-btn:hover{color:var(--zx-bwhite);border-color:var(--zx-bwhite)}.icon-btn:focus-visible,.key:focus-visible,.btn:focus-visible,input:focus-visible{outline:3px solid var(--zx-yellow);outline-offset:2px}.target{position:absolute;left:12px;bottom:12px;font-size:19px;color:var(--zx-white);background:var(--ink);padding:2px 8px;max-width:calc(100% - 24px)}.target .ok{color:var(--zx-green)}.target .no{color:var(--zx-bred)}.msg{position:absolute;left:50%;top:62px;transform:translate(-50%);font-size:22px;line-height:1.05;color:var(--zx-bwhite);background:var(--ink);padding:3px 12px;width:max-content;max-width:calc(100% - 24px);text-align:center}.msg.bad{color:var(--ink);background:var(--zx-bred)}.msg.good{color:var(--ink);background:var(--zx-green)}.climb{font-family:var(--display);font-size:12px;letter-spacing:.08em;color:var(--zx-yellow);padding:6px 10px 5px}.climb.ok{color:var(--ink);background:var(--zx-green)}#radar{position:absolute;right:12px;bottom:12px;width:104px;height:104px;pointer-events:none}.coach{position:absolute;left:12px;bottom:48px;width:min(340px,calc(100% - 140px));background:var(--ink);border:2px solid var(--zx-cyan);padding:8px 10px 7px;display:flex;flex-direction:column;gap:5px}.coach .step{font-family:var(--display);font-size:11px;letter-spacing:.08em;color:var(--zx-cyan)}.coach .say{font-size:20px;line-height:1.05;color:var(--zx-bwhite)}.coach button{align-self:flex-start;font-family:var(--body);font-size:16px;background:none;border:none;color:var(--zx-white);text-decoration:underline;padding:0;cursor:pointer}.coach.done{border-color:var(--zx-green)}#keys{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.key{font-family:var(--body);color:var(--zx-bwhite);cursor:pointer;min-width:0;background:linear-gradient(var(--key-top),var(--key-low));border:1px solid var(--key-edge);border-radius:6px 6px 10px 10px;box-shadow:0 4px #0c0c0e;padding:5px 4px 4px;display:flex;flex-direction:column;align-items:center;gap:1px;transition:transform .05s,box-shadow .05s}.key:active,.key.press{transform:translateY(3px);box-shadow:0 1px #0c0c0e}.key[aria-disabled=true]{opacity:.42}.key .cap{font-family:var(--display);font-size:18px;line-height:1}.key .word{font-size:16px;letter-spacing:.06em;text-transform:uppercase;line-height:1}.key .cost{font-size:14px;color:var(--zx-white);line-height:1}.w-take{color:var(--zx-green)}.w-make{color:var(--zx-yellow)}.w-move{color:var(--zx-cyan)}@media (max-width:620px){#keys{display:flex;flex-wrap:wrap;gap:6px}#keys .key{flex:1 1 calc(25% - 6px)}.key .cap{font-size:15px}.key .word{font-size:14px}.pips{display:none}.msg{top:108px;font-size:19px}#radar{width:84px;height:84px}.coach{width:calc(100% - 120px);bottom:44px}.coach .say{font-size:18px}}#overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;padding:16px;overflow:auto;background:#0000008c}#overlay>.card{margin:auto 0;flex-shrink:0}.card{position:relative;background:var(--ink);border:3px solid var(--zx-white);max-width:520px;width:100%;padding:24px 24px 20px;display:flex;flex-direction:column;gap:14px;overflow:hidden}.rainbow{position:absolute;right:-2px;bottom:-2px;width:150px;height:70px;pointer-events:none;background:linear-gradient(120deg,transparent 0 34%,var(--zx-red) 34% 47%,var(--zx-yellow) 47% 60%,var(--zx-green) 60% 73%,var(--zx-cyan) 73% 86%,transparent 86%)}.card h1{font-family:var(--display);font-weight:700;font-size:clamp(28px,6vw,42px);line-height:1;margin:0;color:var(--zx-bwhite);letter-spacing:.02em;text-wrap:balance}.card h2{font-family:var(--display);font-size:22px;margin:0;color:var(--zx-bwhite);text-wrap:balance}.card p{margin:0;font-size:21px;line-height:1.15;color:var(--zx-white);max-width:60ch}.card .tag{color:var(--zx-cyan)}.card ol{margin:0;padding-left:1.3em;display:flex;flex-direction:column;gap:5px;font-size:19px;line-height:1.1}.card ol b{color:var(--zx-yellow);font-weight:400}.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;position:relative;z-index:1}.row label{font-size:18px;text-transform:uppercase;letter-spacing:.06em}input[type=text]{font-family:var(--display);font-size:16px;width:6ch;background:var(--ink);color:var(--zx-yellow);border:2px solid var(--zx-white);padding:6px 8px 4px;text-align:center}.btn{font-family:var(--display);font-size:14px;letter-spacing:.06em;padding:9px 14px 7px;cursor:pointer;background:var(--zx-bwhite);color:var(--ink);border:none}.btn:hover{background:var(--zx-yellow)}.btn.ghost{background:var(--ink);color:var(--zx-white);border:2px solid var(--zx-white)}.fine{font-size:16px;color:var(--zx-white);opacity:.8}.stat{font-family:var(--display);font-size:15px;color:var(--zx-yellow);font-variant-numeric:tabular-nums}.daily{border:2px solid var(--zx-yellow);padding:10px 12px 12px;display:flex;flex-direction:column;gap:6px;position:relative;z-index:1}.daily-head{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.daily-tag{font-family:var(--display);font-size:13px;letter-spacing:.08em;color:var(--ink);background:var(--zx-yellow);padding:3px 8px 2px}.streak{font-family:var(--display);font-size:12px;letter-spacing:.08em;color:var(--zx-green)}.daily .btn{align-self:flex-start}.runstats{font-size:20px}.howto summary{font-family:var(--display);font-size:13px;letter-spacing:.08em;color:var(--zx-cyan);cursor:pointer;padding:4px 0}.howto[open] summary{margin-bottom:8px}.key.hint{border-color:var(--zx-yellow);box-shadow:0 4px #0c0c0e,0 0 0 2px var(--zx-yellow);animation:hint 1.1s ease-in-out infinite}@keyframes hint{50%{box-shadow:0 4px #0c0c0e,0 0 0 4px var(--zx-yellow)}}@media (prefers-reduced-motion:reduce){.key.hint{animation:none}}.xhair{position:absolute;left:50%;top:50%;width:18px;height:18px;margin:-9px 0 0 -9px;pointer-events:none;opacity:.7;background:linear-gradient(var(--zx-bwhite),var(--zx-bwhite)) center/2px 100% no-repeat,linear-gradient(var(--zx-bwhite),var(--zx-bwhite)) center/100% 2px no-repeat}@media (hover:none){.xhair{display:none}}.lb{display:flex;flex-direction:column;gap:8px;position:relative;z-index:1}.lb h3{font-family:var(--display);font-size:14px;letter-spacing:.06em;color:var(--zx-yellow);margin:0}.board{border-collapse:collapse;width:100%;font-size:19px;font-variant-numeric:tabular-nums}.board th{font-family:var(--display);font-size:11px;letter-spacing:.08em;color:var(--zx-cyan);text-align:left;padding:2px 6px;border-bottom:2px solid var(--zx-cyan)}.board td{padding:2px 6px;border-bottom:1px solid #222}.board td:first-child{color:var(--zx-yellow);width:2.5ch}.board tr.me td{background:var(--zx-blue);color:var(--zx-bwhite)}.board tr.gap td{color:var(--zx-white);text-align:center;border:none}#lb-name{width:14ch;font-family:var(--body);font-size:20px;text-align:left;color:var(--zx-bwhite)}.settings .set{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;font-size:20px;position:relative;z-index:1}.settings .set input[type=range]{width:min(180px,40vw);accent-color:var(--zx-yellow)}.settings .set input[type=checkbox]{width:22px;height:22px;accent-color:var(--zx-yellow);grid-column:2 / 4;justify-self:start}.settings output{font-family:var(--display);font-size:12px;color:var(--zx-yellow);min-width:5ch;text-align:right;font-variant-numeric:tabular-nums}.row.foot{justify-content:space-between}.row.foot a{color:var(--zx-white)}.toast{position:absolute;right:12px;top:56px;max-width:min(300px,calc(100% - 24px));background:var(--ink);border:2px solid var(--zx-green);padding:6px 10px;display:flex;flex-direction:column;gap:2px;z-index:2}.toast .t-tag{font-family:var(--display);font-size:10px;letter-spacing:.1em;color:var(--zx-green)}.toast b{font-family:var(--display);font-weight:400;font-size:14px;color:var(--zx-bwhite)}.toast span:last-child{font-size:18px;color:var(--zx-white);line-height:1}.achs{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;position:relative;z-index:1}.achs li{border:2px solid #333;padding:6px 8px;display:flex;flex-direction:column;gap:2px;opacity:.55}.achs li.got{border-color:var(--zx-green);opacity:1}.achs li b{font-family:var(--display);font-weight:400;font-size:12px;color:var(--zx-bwhite)}.achs li.got b{color:var(--zx-green)}.achs li span{font-size:17px;line-height:1;color:var(--zx-white)}@media (max-width:620px){.toast{top:auto;bottom:150px}}.spark{position:absolute;left:0;top:0;width:9px;height:9px;box-shadow:0 0 0 2px var(--ink);background:var(--zx-yellow);pointer-events:none;z-index:3;transition:transform .45s cubic-bezier(.5,0,.7,1),opacity .45s}.energy .num.bump{animation:bump .3s ease-out}@keyframes bump{40%{transform:scale(1.5);color:var(--zx-yellow)}}@media (prefers-reduced-motion:reduce){.energy .num.bump{animation:none}}
