*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#app{background:#1a1a2e;width:100%;height:100%;overflow:hidden}canvas{image-rendering:pixelated;image-rendering:crisp-edges}.game-container[data-v-85fb88cd]{width:100%;height:100%}.game-container[data-v-85fb88cd] canvas{image-rendering:pixelated;display:block}.loading-screen[data-v-74b6ab8a]{z-index:100;background:#1a1a2e;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.loading-text[data-v-74b6ab8a]{color:#fff;font-family:"Press Start 2P",monospace;font-size:14px;animation:1s step-end infinite blink-74b6ab8a}@keyframes blink-74b6ab8a{50%{opacity:0}}.fade-leave-active[data-v-74b6ab8a]{transition:opacity .4s}.fade-leave-to[data-v-74b6ab8a]{opacity:0}.prompt[data-v-593f1876]{color:#fff;white-space:nowrap;pointer-events:none;background:#000000a6;border:2px solid #fff6;border-radius:4px;padding:8px 16px;font-family:"Press Start 2P",monospace;font-size:11px;position:fixed;bottom:18%;left:50%;transform:translate(-50%)}.prompt-enter-active[data-v-593f1876],.prompt-leave-active[data-v-593f1876]{transition:opacity .15s,transform .15s}.prompt-enter-from[data-v-593f1876],.prompt-leave-to[data-v-593f1876]{opacity:0;transform:translate(-50%)translateY(6px)}.section[data-v-2111dad5]{flex-direction:column;gap:12px;display:flex}.avatar[data-v-2111dad5]{text-align:center;font-size:48px}h2[data-v-2111dad5]{color:#fff;margin:0;font-family:"Press Start 2P",monospace;font-size:13px}.bio[data-v-2111dad5]{color:#ccc;margin:0;font-size:14px;font-weight:600}.desc[data-v-2111dad5]{color:#aaa;margin:0;font-size:13px;line-height:1.6}.section[data-v-4016a5aa]{flex-direction:column;gap:16px;display:flex}.project[data-v-4016a5aa]{border-left:3px solid #4a9eff;padding-left:12px}.project-header[data-v-4016a5aa]{align-items:center;gap:8px;margin-bottom:4px;display:flex}.project-name[data-v-4016a5aa]{color:#fff;font-family:"Press Start 2P",monospace;font-size:10px}.link[data-v-4016a5aa]{color:#4a9eff;font-size:14px;text-decoration:none}.project-desc[data-v-4016a5aa]{color:#ccc;margin:0 0 4px;font-size:13px;line-height:1.5}.project-tech[data-v-4016a5aa]{color:#888;margin:0;font-size:11px;font-style:italic}.section[data-v-72fe4d67]{flex-direction:column;gap:20px;display:flex}.timeline[data-v-72fe4d67]{flex-direction:column;gap:14px;display:flex}.entry[data-v-72fe4d67]{align-items:flex-start;gap:12px;display:flex}.dot[data-v-72fe4d67]{background:#4a9eff;border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:5px}.role[data-v-72fe4d67]{color:#fff;margin:0 0 2px;font-size:13px;font-weight:600}.period[data-v-72fe4d67]{color:#888;margin:0 0 2px;font-size:11px}.desc[data-v-72fe4d67]{color:#aaa;margin:0;font-size:12px;line-height:1.5}.skills[data-v-72fe4d67]{flex-direction:column;gap:10px;display:flex}.skill-group[data-v-72fe4d67]{flex-direction:column;gap:6px;display:flex}.group-label[data-v-72fe4d67]{color:#4a9eff;text-transform:uppercase;margin:0;font-family:"Press Start 2P",monospace;font-size:9px}.tags[data-v-72fe4d67]{flex-wrap:wrap;gap:6px;display:flex}.tag[data-v-72fe4d67]{color:#ccc;background:#4a9eff26;border:1px solid #4a9eff66;border-radius:3px;padding:3px 8px;font-size:11px}.section[data-v-241e1a13]{flex-direction:column;gap:14px;display:flex}.contact-link[data-v-241e1a13]{color:#4a9eff;align-items:center;gap:10px;font-size:14px;text-decoration:none;transition:color .15s;display:flex}.contact-link[data-v-241e1a13]:hover{color:#fff}.icon[data-v-241e1a13]{text-align:center;width:24px;font-size:18px}.attribution[data-v-241e1a13]{color:#555;margin:8px 0 0;font-size:10px}.section[data-v-098f2b26]{text-align:center;flex-direction:column;align-items:center;gap:16px;display:flex}.btn-icon[data-v-098f2b26]{width:64px;height:64px;image-rendering:pixelated}.message[data-v-098f2b26]{color:#ccc;max-width:360px;margin:0;font-size:13px;line-height:1.7}.backdrop[data-v-f4dda25f]{z-index:50;background:#000000a6;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal[data-v-f4dda25f]{color:#fff;background:#1a1a2e;border:3px solid #ffffff40;border-radius:8px;flex-direction:column;width:100%;max-width:560px;max-height:80vh;font-family:sans-serif;display:flex;box-shadow:0 8px 40px #0009}.modal-header[data-v-f4dda25f]{border-bottom:1px solid #ffffff1a;flex-shrink:0;justify-content:space-between;align-items:center;padding:20px 24px 16px;display:flex}.modal-title[data-v-f4dda25f]{text-transform:uppercase;letter-spacing:1px;margin:0;font-family:"Press Start 2P",monospace;font-size:12px}.close[data-v-f4dda25f]{color:#aaa;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px 8px;font-size:18px;line-height:1;transition:color .15s}.close[data-v-f4dda25f]:hover,.close[data-v-f4dda25f]:focus{color:#fff;outline:2px solid #fff6}.modal-body[data-v-f4dda25f]{flex:1;padding:20px 24px 24px;overflow-y:auto}.modal-enter-active[data-v-f4dda25f],.modal-leave-active[data-v-f4dda25f]{transition:opacity .2s}.modal-enter-active .modal[data-v-f4dda25f],.modal-leave-active .modal[data-v-f4dda25f]{transition:transform .2s,opacity .2s}.modal-enter-from[data-v-f4dda25f],.modal-leave-to[data-v-f4dda25f]{opacity:0}.modal-enter-from .modal[data-v-f4dda25f],.modal-leave-to .modal[data-v-f4dda25f]{opacity:0;transform:scale(.96)translateY(8px)}.lang-switcher[data-v-f284b7d9]{color:#fff;cursor:pointer;z-index:60;background:#0000008c;border:2px solid #fff6;border-radius:4px;padding:6px 10px;font-family:"Press Start 2P",monospace;font-size:10px;transition:background .15s;position:fixed;top:16px;right:16px}.lang-switcher[data-v-f284b7d9]:hover{background:#000c}.controls[data-v-a0e1148b]{pointer-events:none;z-index:20;justify-content:space-between;align-items:flex-end;padding:0 24px;display:none;position:fixed;bottom:24px;left:0;right:0}@media (pointer:coarse){.controls[data-v-a0e1148b]{display:flex}}.dpad[data-v-a0e1148b],.actions[data-v-a0e1148b]{pointer-events:auto;align-items:center;gap:12px;display:flex}.btn[data-v-a0e1148b]{color:#fff;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;background:#0000008c;border:2px solid #fff6;border-radius:12px;justify-content:center;align-items:center;width:56px;height:56px;font-size:20px;transition:background .1s;display:flex}.btn[data-v-a0e1148b]:active{background:#fff3}.btn.action[data-v-a0e1148b]{background:#4a9eff33;border-color:#4a9eff99;font-family:"Press Start 2P",monospace;font-size:14px}.btn.jump[data-v-a0e1148b]{font-size:18px}.action-enter-active[data-v-a0e1148b],.action-leave-active[data-v-a0e1148b]{transition:opacity .15s,transform .15s}.action-enter-from[data-v-a0e1148b],.action-leave-to[data-v-a0e1148b]{opacity:0;transform:scale(.8)}.backdrop[data-v-822bcb6c]{z-index:60;background:#000000bf;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.box[data-v-822bcb6c]{background:#1a1a2e;border:3px solid #ffffff40;border-radius:10px;flex-direction:column;align-items:center;gap:24px;padding:36px 48px;display:flex;box-shadow:0 8px 40px #000000b3}.title[data-v-822bcb6c]{color:#f44;text-transform:uppercase;letter-spacing:2px;margin:0;font-family:"Press Start 2P",monospace;font-size:18px}.scores[data-v-822bcb6c]{flex-direction:column;gap:10px;width:200px;display:flex}.row[data-v-822bcb6c]{color:#ccc;justify-content:space-between;font-family:"Press Start 2P",monospace;font-size:10px;display:flex}.row.best .val[data-v-822bcb6c]{color:gold}.label[data-v-822bcb6c]{color:#888}.val[data-v-822bcb6c]{color:#fff}.restart[data-v-822bcb6c]{color:#fff;cursor:pointer;letter-spacing:1px;background:#2a5cdf;border:none;border-radius:6px;padding:12px 24px;font-family:"Press Start 2P",monospace;font-size:10px;transition:background .15s}.restart[data-v-822bcb6c]:hover{background:#3a6cef}.restart[data-v-822bcb6c]:focus{outline:2px solid #ffffff80}.gameover-enter-active[data-v-822bcb6c],.gameover-leave-active[data-v-822bcb6c]{transition:opacity .25s}.gameover-enter-from[data-v-822bcb6c],.gameover-leave-to[data-v-822bcb6c]{opacity:0}.score[data-v-e4f7c630]{color:#fff;text-shadow:0 0 4px #000c,1px 1px #0009;pointer-events:none;z-index:20;font-family:"Press Start 2P",monospace;font-size:22px;position:fixed;top:12px;left:16px}.overlay[data-v-046fdaa4]{z-index:50;background:#000000b8;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.panel[data-v-046fdaa4]{color:#fff;background:#0a0e1eeb;border:2px solid #ffffff2e;border-radius:4px;flex-direction:column;align-items:center;gap:28px;padding:36px 44px;font-family:"Press Start 2P",monospace;display:flex;box-shadow:0 0 40px #4a9eff40}.title[data-v-046fdaa4]{letter-spacing:3px;color:#4a9eff;text-shadow:0 0 12px #4a9eff99;font-size:13px}.section.keyboard[data-v-046fdaa4]{flex-direction:column;align-items:center;gap:20px;display:flex}@media (pointer:coarse){.section.keyboard[data-v-046fdaa4]{display:none}}.section.touch[data-v-046fdaa4]{display:none}@media (pointer:coarse){.section.touch[data-v-046fdaa4]{display:block}}.block[data-v-046fdaa4]{align-items:center;gap:16px;display:flex}.cluster[data-v-046fdaa4]{flex-direction:column;align-items:center;gap:4px;display:flex}.row[data-v-046fdaa4]{gap:4px;display:flex}.key[data-v-046fdaa4]{color:#fff;-webkit-user-select:none;user-select:none;box-sizing:border-box;background:#ffffff14;border:2px solid #ffffff73;border-bottom-width:4px;border-radius:6px;justify-content:center;align-items:center;width:38px;height:38px;font-family:"Press Start 2P",monospace;font-size:16px;line-height:1;display:flex}.key.wide[data-v-046fdaa4]{color:#4a9eff;background:#4a9eff1f;border-color:#4a9eff99;width:auto;height:38px;padding:0 18px;font-size:11px}.key.muted[data-v-046fdaa4]{opacity:.25}.rot-left[data-v-046fdaa4]{transform:rotate(-90deg)}.rot-right[data-v-046fdaa4]{transform:rotate(90deg)}.rot-down[data-v-046fdaa4]{transform:rotate(180deg)}.or[data-v-046fdaa4]{color:#fff6;padding:0 4px;font-size:9px}.label[data-v-046fdaa4]{color:#ffffff73;letter-spacing:1px;font-size:8px}.touch-hint[data-v-046fdaa4]{color:#fff9;text-align:center;white-space:pre-line;font-size:9px;line-height:2}.prompt[data-v-046fdaa4]{color:#ffffff4d;letter-spacing:1px;font-size:7px;animation:1.4s ease-in-out infinite blink-046fdaa4}@keyframes blink-046fdaa4{0%,to{opacity:.3}50%{opacity:.8}}.fade-enter-active[data-v-046fdaa4]{transition:opacity .3s}.fade-leave-active[data-v-046fdaa4]{transition:opacity .5s}.fade-enter-from[data-v-046fdaa4],.fade-leave-to[data-v-046fdaa4]{opacity:0}.ui-overlay[data-v-89475a5b]{pointer-events:none;z-index:10;position:fixed;inset:0}.ui-overlay[data-v-89475a5b]>*{pointer-events:auto}.app[data-v-1fe1902d]{width:100%;height:100%;position:relative}
