:root{--bg:#07070f;--panel:rgba(20,20,40,.72);--line:rgba(140,160,255,.25);--acc:#00e5ff;--acc2:#d500f9;--txt:#e8ecff}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:var(--txt);font-family:'Press Start 2P',ui-monospace,monospace;overflow:hidden;user-select:none;touch-action:none}
#bg{pointer-events:none;position:fixed;inset:0;width:100%;height:100%;z-index:0}
#app{position:relative;z-index:1;height:100%;display:flex;justify-content:center;align-items:center;gap:20px;padding:12px}
.col{display:flex;flex-direction:column;gap:12px;width:200px}
.logo{margin:0 0 4px;font-size:34px;text-align:center;letter-spacing:4px;background:linear-gradient(90deg,#00e5ff,#d500f9,#ff1744,#ffd600,#00e676);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;}
.logo.big{font-size:54px;margin-bottom:6px}
@keyframes hue{to{background-position:200% 0}}
.panel{background:rgba(18,18,38,.9);border:2px solid var(--line);border-radius:10px;padding:10px;box-shadow:0 0 24px rgba(0,229,255,.08) inset,0 6px 30px rgba(0,0,0,.4)}
.panel h2{margin:0 0 8px;font-size:10px;color:var(--acc);text-align:center;letter-spacing:2px}
.panel canvas{display:block;margin:0 auto}
.stats div{display:flex;flex-direction:column;gap:5px;margin-bottom:11px}
.stats div:last-child{margin-bottom:0}
.stats span{font-size:8px;color:#8f9bd8}
.stats b{font-size:14px;text-align:right;font-weight:400;font-variant-numeric:tabular-nums}
.stats b.bump{animation:bump .25s}
@keyframes bump{50%{transform:scale(1.18);color:var(--acc)}}
.toggles{display:flex;flex-direction:column;gap:8px}
button{font:inherit;font-size:10px;color:var(--txt);background:rgba(30,32,60,.8);border:2px solid var(--line);border-radius:8px;padding:10px;cursor:pointer;transition:.15s}
button:hover{border-color:var(--acc);box-shadow:0 0 14px rgba(0,229,255,.35)}
button.off{opacity:.45;text-decoration:line-through}
button.primary{background:linear-gradient(135deg,#00b8d4,#7c4dff);border-color:transparent;font-size:13px;padding:14px}
#boardWrap{position:relative;width:372px;height:744px;flex:none}
#board{position:absolute;left:0;top:0;width:100%;height:100%;display:block;border-radius:6px;border:2px solid rgba(140,160,255,.45);box-shadow:0 0 40px rgba(0,229,255,.2),0 0 120px rgba(213,0,249,.12);background:#05050c}
#overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}
.screen{pointer-events:auto;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:18px;background:rgba(5,5,16,.93);text-align:center;border-radius:6px;animation:fade .3s}
.screen.hidden{display:none}
@keyframes fade{from{opacity:0;transform:scale(.97)}}
.screen h2{margin:0;font-size:20px;color:var(--acc);text-shadow:0 0 18px var(--acc)}
.sub{margin:0;font-size:9px;color:#9aa6e8;letter-spacing:2px}
.screen button{width:78%}
.lvl{font-size:9px;display:flex;flex-direction:column;gap:8px;align-items:center}
select,input{font:inherit;font-size:11px;color:var(--txt);background:#0d0f26;border:2px solid var(--line);border-radius:8px;padding:9px;text-align:center;outline:none}
input:focus,select:focus{border-color:var(--acc)}
.help{list-style:none;margin:6px 0 0;padding:0;font-size:7px;line-height:2.1;color:#9aa6e8}
kbd{display:inline-block;background:#1b1e44;border:1px solid var(--line);border-radius:4px;padding:2px 5px;margin:0 2px;color:#fff;font:inherit}
.result{display:flex;flex-direction:column;gap:8px;font-size:9px;color:#9aa6e8}
.result b{font-size:24px;color:#fff;font-weight:400}
.result.small{font-size:8px;line-height:1.7}
#saveForm{display:flex;flex-direction:column;gap:10px;width:80%}
#saveForm button{width:100%}
.msg{margin:0;min-height:24px;font-size:8px;line-height:1.7;color:#ffd600}
.ranking ol,.rankbox ol{list-style:none;margin:0;padding:0;counter-reset:r}
.ranking li,.rankbox li{counter-increment:r;display:grid;grid-template-columns:22px 1fr auto;gap:6px;font-size:8px;padding:6px 0;border-bottom:1px solid rgba(140,160,255,.12);text-align:left}
.ranking li::before,.rankbox li::before{content:counter(r);color:#8f9bd8}
.ranking li:nth-child(1)::before,.rankbox li:nth-child(1)::before{color:#ffd600}
.ranking li:nth-child(2)::before,.rankbox li:nth-child(2)::before{color:#cfd8dc}
.ranking li:nth-child(3)::before,.rankbox li:nth-child(3)::before{color:#ff9100}
.ranking li .n,.rankbox li .n{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ranking li.me,.rankbox li.me{color:var(--acc);text-shadow:0 0 8px var(--acc)}
.rankbox{width:100%;flex:1;overflow:auto;min-height:0;touch-action:pan-y}
.rankbox li{grid-template-columns:26px 1fr auto auto;font-size:7px}
.rankbox li .l{color:#8f9bd8}
.empty{font-size:8px;color:#8f9bd8;text-align:center;padding:10px 0}
#touch{display:none}
@media (max-width:900px){
  .col.right,.col.left .logo,.toggles{display:none}
  .col.left{width:auto;position:absolute;left:8px;top:8px;z-index:3;flex-direction:row;gap:6px;pointer-events:none}
  .col.left .panel:first-of-type{display:none}
  .stats{display:flex;gap:10px;padding:6px 8px}.stats div{margin:0}.stats div:nth-child(4),.stats div:nth-child(5){display:none}
  #app{align-items:flex-start;padding-top:0}
}
@media (pointer:coarse){
  #touch{display:grid;position:fixed;z-index:5;left:0;right:0;bottom:0;height:104px;grid-template-columns:repeat(6,1fr);grid-template-rows:1fr 1fr;gap:6px;padding:6px;background:rgba(5,5,16,.7)}
  #touch button{padding:0;font-size:15px;touch-action:none}
  #touch [data-act=hold]{grid-column:1/3}#touch [data-act=ccw]{grid-column:3/4}#touch [data-act=cw]{grid-column:4/5}#touch [data-act=hard]{grid-column:5/7}
  #touch [data-act=left]{grid-column:1/3;grid-row:2}#touch [data-act=down]{grid-column:3/5;grid-row:2}#touch [data-act=right]{grid-column:5/7;grid-row:2}
}
