@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dm-sans-latin-ext-400-normal-BtiwyxMk.woff2)format("woff2"),url(/assets/dm-sans-latin-ext-400-normal-BjWJ59Pq.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dm-sans-latin-400-normal-CW0RaeGs.woff2)format("woff2"),url(/assets/dm-sans-latin-400-normal-BwCSEQnW.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/dm-sans-latin-ext-500-normal-BJfUCQsA.woff2)format("woff2"),url(/assets/dm-sans-latin-ext-500-normal-DR84L5F-.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/dm-sans-latin-500-normal-B9HHJjqV.woff2)format("woff2"),url(/assets/dm-sans-latin-500-normal-Dr3UlScf.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/dm-sans-latin-ext-700-normal-CJIcxD6K.woff2)format("woff2"),url(/assets/dm-sans-latin-ext-700-normal-BLI3TTWz.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/dm-sans-latin-700-normal-DvUfVpUG.woff2)format("woff2"),url(/assets/dm-sans-latin-700-normal-CUSSCpQX.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-cyrillic-ext-400-normal-C_uLvvQ5.woff2)format("woff2"),url(/assets/jetbrains-mono-cyrillic-ext-400-normal-Bh0R7Dhr.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2)format("woff2"),url(/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2)format("woff2"),url(/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-vietnamese-400-normal-ByoDsISC.woff2)format("woff2"),url(/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-cyrillic-ext-500-normal-C9ShMxGR.woff2)format("woff2"),url(/assets/jetbrains-mono-cyrillic-ext-500-normal-CEVyPk4Y.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2)format("woff2"),url(/assets/jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-greek-500-normal-JpySY46c.woff2)format("woff2"),url(/assets/jetbrains-mono-greek-500-normal-D7SFKleX.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-vietnamese-500-normal-BvH7FW2L.woff2)format("woff2"),url(/assets/jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#0c0f0d;--bg-elevated:#141a16;--bg-panel:#1a221c;--line:#2a362e;--text:#e8efe9;--muted:#8a9a8e;--accent:#6fbf73;--accent-dim:#3d7a42;--danger:#d96b5c;--warning:#d4a84b;--screen-bg:#000;--font:"DM Sans", "Segoe UI", sans-serif;--mono:"JetBrains Mono", ui-monospace, monospace;--safe-bottom:env(safe-area-inset-bottom,0px);--safe-top:env(safe-area-inset-top,0px);color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;user-select:none;margin:0}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none}#app{flex-direction:column;min-height:100dvh;display:flex}#app:has(.player-view){height:100dvh;max-height:100dvh;overflow:hidden}.view{padding:calc(20px + var(--safe-top)) 20px calc(20px + var(--safe-bottom));flex-direction:column;flex:1;width:100%;max-width:720px;margin:0 auto;display:flex}.brand{letter-spacing:-.03em;margin:0 0 .35em;font-size:clamp(2rem,6vw,2.75rem);font-weight:700;line-height:1.05}.brand span{color:var(--accent)}.lede{color:var(--muted);max-width:28rem;margin:0 0 1.75rem;font-size:1.05rem;line-height:1.45}.btn{background:var(--accent);color:#071008;letter-spacing:-.01em;border-radius:10px;justify-content:center;align-items:center;gap:.5rem;padding:.85rem 1.25rem;font-weight:700;transition:transform .12s,filter .12s;display:inline-flex}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45;pointer-events:none}.btn-secondary{background:var(--bg-panel);color:var(--text);border:1px solid var(--line)}.btn-ghost{color:var(--muted);background:0 0;border:1px solid #0000;padding:.5rem .75rem}.btn-row{flex-wrap:wrap;gap:.75rem;display:flex}.panel{background:var(--bg-elevated);border:1px solid var(--line);border-radius:14px;padding:1rem 1.1rem}.section-label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:1.5rem 0 .65rem;font-size:.72rem}.game-list{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.game-row{background:var(--bg-elevated);border:1px solid var(--line);text-align:left;cursor:pointer;border-radius:12px;grid-template-columns:1fr auto;align-items:center;gap:.5rem .75rem;width:100%;padding:.85rem 1rem;transition:border-color .15s,background .15s;display:grid}.game-row:hover,.game-row:focus-visible{border-color:var(--accent-dim);background:var(--bg-panel)}.game-row .title{letter-spacing:-.01em;font-weight:600}.game-row .row-actions{align-items:center;gap:.15rem;display:flex}.game-row .meta{color:var(--muted);font-size:.8rem;font-family:var(--mono);grid-column:1/-1}.topbar{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.25rem;display:flex}.topbar h1{letter-spacing:-.02em;margin:0;font-size:1.35rem}.status-pill{font-family:var(--mono);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:.3rem .55rem;font-size:.7rem}.status-pill.ok{color:var(--accent);border-color:var(--accent-dim)}.player-view{background:#000;flex-direction:column;flex:1;width:100%;max-width:none;height:100dvh;padding:0;display:flex;position:relative;overflow:hidden}.player-stage{background:var(--screen-bg);flex:auto;justify-content:center;align-items:center;width:100%;min-height:0;display:flex;position:relative}body.touch .player-stage{flex:1 1 0;min-height:42vh}#gba-canvas{image-rendering:pixelated;image-rendering:crisp-edges;background:#000;display:block}.kb-legend{padding:.55rem 1rem calc(.65rem + var(--safe-bottom));border-top:1px solid var(--line);font-family:var(--mono);color:var(--muted);letter-spacing:.02em;background:#0c0f0deb;flex-wrap:wrap;justify-content:center;gap:.45rem 1rem;font-size:.72rem;display:none}body:not(.touch) .kb-legend{display:flex}.kb-legend kbd{color:var(--text);font-family:inherit;font-weight:500}.player-chrome{top:var(--safe-top);pointer-events:none;z-index:5;justify-content:space-between;padding:.6rem .75rem;display:flex;position:absolute;left:0;right:0}.player-chrome button{pointer-events:auto;border:1px solid var(--line);font-size:.75rem;font-family:var(--mono);letter-spacing:.04em;color:var(--text);background:#0c0f0db8;border-radius:8px;padding:.45rem .7rem}.touch-layer{padding:.4rem .6rem calc(.5rem + var(--safe-bottom));touch-action:none;user-select:none;background:linear-gradient(#0a0d0b 0%,#121814 100%);flex:none;display:none}body.touch .touch-layer{grid-template-columns:1fr auto 1fr;grid-template-areas:"shoulder-l mid shoulder-r""dpad mid face";align-items:end;gap:.35rem .5rem;display:grid}body.touch .shoulder-l{grid-area:shoulder-l;justify-self:start}body.touch .shoulder-r{grid-area:shoulder-r;justify-self:end}body.touch .dpad{grid-area:dpad;place-self:end start}body.touch .face{grid-area:face;place-self:end}body.touch .mid-controls{grid-area:mid}.dpad{touch-action:none;grid-template:".up."56px"left.right"56px".down."56px/56px 56px 56px;display:grid;position:relative}.face{touch-action:none;grid-template:".a"68px"b."68px/68px 68px;gap:.3rem;display:grid;position:relative}.mid-controls{flex-direction:column;align-items:center;gap:.35rem;padding-bottom:.15rem;display:flex}.mid-controls .mid-row{flex-wrap:wrap;justify-content:center;gap:.35rem;display:flex}.ctrl-btn{background:var(--bg-panel);border:1px solid var(--line);width:56px;height:56px;color:var(--text);font-family:var(--mono);border-radius:12px;justify-content:center;align-items:center;font-size:.7rem;font-weight:500;display:flex}.ctrl-btn.pressed,.ctrl-btn:active{background:var(--accent-dim);border-color:var(--accent)}.ctrl-btn.wide{border-radius:18px;width:auto;min-width:64px;height:36px;padding:0 .65rem;font-size:.62rem}.ctrl-btn.turbo{border-color:var(--warning);color:var(--warning);background:#243028;width:72px;height:40px}.ctrl-btn.turbo-lock{border-color:var(--line);color:var(--muted);background:#243028;width:64px;height:36px;font-size:.62rem}.ctrl-btn.turbo-lock.on,.ctrl-btn.turbo-lock.pressed{border-color:var(--warning);color:var(--warning);background:#3a3020}.turbo-lock-pill{border:1px solid var(--warning);border-radius:999px;padding:.15rem .55rem;color:var(--warning)!important}.ctrl-btn.face-a{background:#2a3d30;border-radius:50%;grid-area:a;width:68px;height:68px}.ctrl-btn.face-b{border-radius:50%;grid-area:b;width:68px;height:68px}.dpad .up{grid-area:up}.dpad .down{grid-area:down}.dpad .left{grid-area:left}.dpad .right{grid-area:right}@media (orientation:landscape){body.touch .player-view{grid-template-rows:1fr;grid-template-columns:minmax(132px,26vw) minmax(0,1fr) minmax(132px,26vw);height:100dvh;display:grid}body.touch .player-chrome{grid-area:1/2}body.touch .player-stage{grid-area:1/2;min-height:0}body.touch .kb-legend{display:none!important}body.touch .touch-layer{background:0 0;padding:0;display:contents}body.touch .shoulder-l{margin-top:calc(.5rem + var(--safe-top));grid-area:1/1;place-self:start center}body.touch .shoulder-r{margin-top:calc(.5rem + var(--safe-top));grid-area:1/3;place-self:start center}body.touch .dpad{margin-bottom:calc(.75rem + var(--safe-bottom));grid-area:1/1;place-self:end center}body.touch .face{margin-bottom:calc(.75rem + var(--safe-bottom));grid-area:1/3;place-self:end center}body.touch .mid-controls{z-index:4;background:#0c0f0d8c;border-radius:12px;flex-flow:wrap;grid-area:1/2;place-self:end center;gap:.35rem;margin-bottom:.35rem;padding:.25rem .4rem}body.touch .mid-controls .mid-row{flex-wrap:nowrap}}.menu-sheet{z-index:20;padding:1rem;padding-bottom:calc(1rem + var(--safe-bottom));background:#000000b8;justify-content:center;align-items:flex-end;display:flex;position:absolute;inset:0}.menu-sheet[hidden]{display:none}.menu-card{background:var(--bg-elevated);border:1px solid var(--line);border-radius:16px;flex-direction:column;gap:.5rem;width:min(420px,100%);padding:1rem;animation:.2s sheet-up;display:flex}@keyframes sheet-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.menu-card button{text-align:left;background:var(--bg-panel);border:1px solid var(--line);border-radius:10px;padding:.85rem 1rem;font-weight:500}.menu-card button:active{border-color:var(--accent-dim)}.modal-backdrop{z-index:50;background:#000000bf;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{background:var(--bg-elevated);border:1px solid var(--line);border-radius:16px;width:min(440px,100%);padding:1.25rem;animation:.18s sheet-up}.modal h2{letter-spacing:-.02em;margin:0 0 .75rem;font-size:1.2rem}.choice{flex-direction:column;gap:.5rem;margin:1rem 0;display:flex}.choice label{border:1px solid var(--line);background:var(--bg-panel);cursor:pointer;border-radius:12px;grid-template-columns:auto 1fr;gap:.35rem .75rem;padding:.85rem 1rem;display:grid}.choice label.newest{border-color:var(--accent-dim)}.choice .who{font-weight:600}.choice .when{font-family:var(--mono);color:var(--muted);grid-column:2;font-size:.75rem}.field{flex-direction:column;gap:.35rem;margin-bottom:.9rem;display:flex}.field label{color:var(--muted);font-size:.8rem;font-family:var(--mono)}.field input,.field textarea,.field select{background:var(--bg);border:1px solid var(--line);border-radius:8px;outline:none;padding:.65rem .75rem}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--accent-dim)}.cheat-row{border-bottom:1px solid var(--line);align-items:center;gap:.75rem;padding:.75rem 0;display:flex}.cheat-row .info{flex:1;min-width:0}.cheat-row .name{font-weight:600}.cheat-row .code{font-family:var(--mono);color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.72rem;overflow:hidden}.toggle{background:var(--line);border-radius:999px;flex-shrink:0;width:44px;height:26px;position:relative}.toggle.on{background:var(--accent-dim)}.toggle:after{content:"";background:var(--text);border-radius:50%;width:20px;height:20px;transition:transform .15s;position:absolute;top:3px;left:3px}.toggle.on:after{transform:translate(18px)}.bind-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:.55rem 0;font-size:.95rem;display:flex}.bind-row kbd{font-family:var(--mono);border:1px solid var(--line);background:var(--bg);color:var(--muted);border-radius:6px;padding:.25rem .5rem;font-size:.75rem}.hint{color:var(--muted);font-size:.85rem;line-height:1.4}.toast{bottom:calc(1.25rem + var(--safe-bottom));background:var(--bg-panel);border:1px solid var(--line);z-index:100;border-radius:999px;padding:.65rem 1rem;font-size:.85rem;animation:.2s sheet-up;position:fixed;left:50%;transform:translate(-50%)}.loading-screen{z-index:200;-webkit-backdrop-filter:blur(6px);background:#080a09d1;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.loading-screen[hidden]{display:none}.loading-card{text-align:center;flex-direction:column;align-items:center;gap:1rem;max-width:16rem;display:flex}.loading-spinner{border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;width:36px;height:36px;animation:.7s linear infinite spin}.loading-msg{font-family:var(--mono);color:var(--text);letter-spacing:.02em;margin:0;font-size:.85rem;line-height:1.4}body.is-loading{cursor:wait}@keyframes spin{to{transform:rotate(360deg)}}.empty{color:var(--muted);text-align:center;padding:2rem .5rem}
