@font-face{font-family:Orbitron;font-style:normal;font-weight:400 900;font-display:swap;src:url(/fonts/orbitron.woff2)format("woff2")}:root{--cyan:#00f0ff;--mag:#ff4fd8;--gold:#ffd23f;--green:#7dff6a;--red:#ff3b3b;--blue:#1a6bff;--bg:#02040a;--font:"Orbitron", "Segoe UI", system-ui, sans-serif}html,body{background:var(--bg);height:100%;font-family:var(--font);color:#e8fbff;overscroll-behavior:none;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;margin:0;overflow:hidden}#app{position:fixed;inset:0}canvas{display:block}#hud{pointer-events:none;position:fixed;inset:0}#hud .tap{pointer-events:auto}.glow-c{color:var(--cyan);text-shadow:0 0 6px var(--cyan), 0 0 18px #00f0ff99}.glow-m{color:var(--mag);text-shadow:0 0 6px var(--mag), 0 0 18px #ff4fd899}.glow-g{color:var(--gold);text-shadow:0 0 6px var(--gold), 0 0 18px #ffd23f99}.bar{top:max(10px, env(safe-area-inset-top));justify-content:space-between;align-items:flex-start;gap:10px;display:flex;position:absolute;left:12px;right:12px}.stat{min-width:90px}.stat .k{letter-spacing:.25em;opacity:.7;font-size:10px}.stat .v{font-size:24px;font-weight:900}.stat.right{text-align:right}.progress{background:#1a6bff40;width:90px;height:4px;margin-top:5px;margin-left:auto}.progress>div{background:var(--cyan);width:0;height:100%;box-shadow:0 0 8px var(--cyan);transition:width .3s}.rule{text-align:center;clip-path:polygon(10px 0,100% 0,calc(100% - 10px) 100%,0 100%);background:#0a08028c;border:1px solid #ffd23f99;padding:6px 14px 8px;box-shadow:0 0 12px #ffd23f59,inset 0 0 12px #ffd23f26}.rule .k{letter-spacing:.3em;opacity:.75;font-size:9px}.rule .name{letter-spacing:.08em;font-size:20px;font-weight:900}.rule .hint{opacity:.9;font-size:12px;font-weight:700}.net{grid-template-rows:repeat(4,34px);grid-template-columns:repeat(3,34px);gap:3px;display:grid;position:absolute;bottom:18px;left:14px}.net .f{background:#03070fbf;border:1px solid;justify-content:center;align-items:center;font-size:12px;font-weight:900;display:flex;box-shadow:inset 0 0 6px}.net .f.front{font-size:15px;box-shadow:0 0 10px,inset 0 0 10px}.net .f small{position:absolute}.net .label{letter-spacing:.25em;opacity:.7;text-align:center;grid-area:5/1/auto/4;margin-top:4px;font-size:10px}.net .top{grid-area:1/2}.net .left{grid-area:2/1}.net .front{grid-area:2/2}.net .right{grid-area:2/3}.net .bottom{grid-area:3/2}.net .back{opacity:.6;grid-area:4/2}.net.suspended{opacity:.3}.net.pinned{bottom:auto;left:0;transform:translate(-50%,-50%)}.c-num{color:var(--cyan)}.c-neg{color:var(--green)}.c-zero{color:#9fb4ff}.c-op{color:var(--mag)}.next-label{letter-spacing:.3em;opacity:.75;font-size:12px;position:absolute;transform:translate(-50%)}.overlay{text-align:center;pointer-events:auto;background:radial-gradient(#02040a8c,#02040aeb);flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:20px;transition:opacity .35s;display:flex;position:absolute;inset:0}.overlay.hidden{opacity:0}#hud .overlay.hidden,#hud .overlay.hidden *{pointer-events:none}.logo{letter-spacing:.06em;font-size:clamp(40px,11vw,92px);font-weight:900;line-height:1;animation:4s infinite flicker}.logo span{color:var(--mag);text-shadow:0 0 8px var(--mag), 0 0 28px #ff4fd8cc}.tag{letter-spacing:.35em;opacity:.8;font-size:13px}.cta{letter-spacing:.2em;margin-top:10px;font-size:18px;font-weight:700;animation:1.4s infinite pulse}.how{opacity:.85;max-width:520px;font-family:system-ui,sans-serif;font-size:13px;line-height:1.7}.how b{font-family:var(--font)}.keys{text-align:left;opacity:.8;grid-template-columns:auto auto;gap:4px 14px;font-family:system-ui,sans-serif;font-size:12px;display:grid}.keys kbd{font-family:var(--font);color:var(--cyan);font-size:11px}.modes{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.mode{font:inherit;letter-spacing:.12em;color:var(--cyan);opacity:.6;cursor:pointer;background:#02040a99;border:1px solid #00f0ff59;padding:7px 12px;font-size:12px;font-weight:700}.mode.on{opacity:1;color:var(--gold);border-color:var(--gold);text-shadow:0 0 6px var(--gold);box-shadow:0 0 10px #ffd23f80}.links{letter-spacing:.2em;opacity:.7;font-size:11px}.links a{color:inherit}.langs{top:max(14px, env(safe-area-inset-top));gap:6px;display:flex;position:absolute;right:14px}.big{font-size:44px;font-weight:900}.small{letter-spacing:.25em;opacity:.7;font-size:12px}.tutor{text-align:center;border:1px solid var(--cyan);clip-path:polygon(12px 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%,0 12px);background:#02060ee0;width:min(440px,100% - 40px);padding:16px 18px 14px;transition:opacity .2s;position:absolute;top:60%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 16px #00f0ff73,inset 0 0 14px #00f0ff26}.tutor.hidden,.tutor.behind{opacity:0}#hud .tutor.hidden,#hud .tutor.behind{pointer-events:none}.tutor .msg{font-family:system-ui,sans-serif;font-size:16px;line-height:1.5}.tutor .go{letter-spacing:.2em;margin-top:10px;font-size:11px;animation:1.4s infinite pulse}.tut-focus{outline:2px solid var(--gold);outline-offset:4px;animation:1s infinite tutfocus}@keyframes tutfocus{50%{outline-color:#0000}}.rule.tut-focus{outline:none;animation:1s infinite rulefocus}@keyframes rulefocus{50%{border-color:var(--gold);background:#ffd23f59}}.banner{text-align:center;opacity:0;transition:opacity .3s,transform .3s;position:absolute;top:34%;left:0;right:0;transform:scale(.9)}.banner.show{opacity:1;transform:scale(1)}.banner .t{text-shadow:0 0 6px var(--gold), 0 0 18px #ffd23f99, 0 2px 12px #000;font-size:clamp(28px,8vw,54px);font-weight:900}.banner .s{opacity:.9;margin-top:6px;font-family:system-ui,sans-serif;font-size:14px}.icons{gap:8px;display:flex;position:absolute;bottom:18px;right:12px}.icon{font:700 11px var(--font);color:var(--cyan);cursor:pointer;letter-spacing:.1em;background:#03070fb3;border:1px solid #00f0ff80;padding:6px 9px}.icon.off{color:#557;border-color:#335}.touch{left:0;right:0;bottom:max(14px, env(safe-area-inset-bottom));justify-content:space-between;padding:0 12px;display:none;position:absolute}body.is-touch .touch{display:flex}body.is-touch .keys-only,body.is-touch .keys,.touch-only{display:none}body.is-touch .touch-only{display:inline}body.is-touch .how{max-width:360px;font-size:16px}body.is-touch .net{bottom:auto;top:calc(max(10px, env(safe-area-inset-top)) + 86px);transform-origin:0 0;transform:scale(.8)}body.is-touch .icons{bottom:auto;top:calc(max(10px, env(safe-area-inset-top)) + 54px);gap:5px}body.is-touch .icon{padding:4px 6px;font-size:9px}.touch .grp{gap:8px;display:flex}.btn{width:54px;height:58px;font:900 20px var(--font);color:var(--cyan);background:#030a16b3;border:1.5px solid #00f0ffb3;border-radius:13px;flex-direction:column;justify-content:center;align-items:center;display:flex;box-shadow:0 0 10px #00f0ff59,inset 0 0 10px #00f0ff33}.btn small{letter-spacing:.15em;margin-top:2px;font-size:8px}.btn.m{color:var(--mag);border-color:#ff4fd8cc;box-shadow:0 0 10px #ff4fd859,inset 0 0 10px #ff4fd833}.btn:active,.btn.down{background:#00f0ff33;transform:scale(.94)}.btn.rot{display:none;position:absolute;bottom:70px;right:12px}body.has-piece .btn.rot{display:flex}@keyframes pulse{50%{opacity:.35}}@keyframes flicker{0%,to{opacity:1}92%{opacity:1}93%{opacity:.4}94%{opacity:1}96%{opacity:.6}97%{opacity:1}}@media (width<=520px){.mode{letter-spacing:.06em;padding:6px 8px;font-size:10px}.stat{min-width:70px}.stat .v{font-size:19px}.rule .name{font-size:16px}.rule{padding:5px 10px 6px}}
