:root,:root[data-theme=light]{color-scheme:light;--bg: #f5f0e8;--bg2: #ece5d9;--surface: #fffdf9;--panel: #ffffff;--panel-hover: #fbf5ea;--inset: #ffffff;--line: #d9cfbf;--line2: #bfb2a0;--fg: #2a2430;--fg2: #5b5262;--fg3: #6b6272;--accent: #e8742f;--accent-fg: #1d1305;--accent-text: #a8430f;--accent-soft: rgba(232,116,47,.14);--tag-bg: #ebe2d3;--tag-fg: #5a4a35;--warn: #9a5200;--bad: #b3261e;--scrim: rgba(36,28,40,.45);--shadow: 0 1px 2px rgba(60,40,20,.08), 0 6px 18px rgba(60,40,20,.1);--shadow-lg: 0 12px 40px rgba(40,25,10,.22);--glow: radial-gradient(900px 420px at 50% -8%, #fff7e8 0, rgba(255,247,232,0) 70%);--ctl-bg: #ffffff;--ctl-hover: #fff3e6}:root[data-theme=dark]{color-scheme:dark;--bg: #1d2438;--bg2: #232b44;--surface: #2a3354;--panel: #2a3354;--panel-hover: #323c63;--inset: #1d2438;--line: #475585;--line2: #6572a0;--fg: #f3f5fb;--fg2: #c9d0e6;--fg3: #a9b3d2;--accent: #f6ab6c;--accent-fg: #1d1305;--accent-text: #f6ab6c;--accent-soft: rgba(246,171,108,.16);--tag-bg: #3b4672;--tag-fg: #d3defc;--warn: #ffc27a;--bad: #ff9a94;--scrim: rgba(8,11,22,.62);--shadow: 0 1px 2px rgba(0,0,0,.25), 0 6px 18px rgba(0,0,0,.28);--shadow-lg: 0 14px 44px rgba(0,0,0,.5);--glow: radial-gradient(900px 420px at 50% -8%, #2f3a62 0, rgba(47,58,98,0) 70%);--ctl-bg: #2a3354;--ctl-hover: #36416b}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;overflow:hidden}body{background:var(--glow) no-repeat,var(--bg);background-attachment:fixed;color:var(--fg);font-family:Pretendard Variable,Pretendard,system-ui,-apple-system,Segoe UI,Noto Sans KR,Apple SD Gothic Neo,Malgun Gothic,sans-serif;-webkit-font-smoothing:antialiased;line-height:1.45;overscroll-behavior:none;touch-action:manipulation}.app{min-width:0;display:flex;flex-direction:column;height:100vh;height:100dvh;width:100%;max-width:100vw;overflow:hidden;padding:env(safe-area-inset-top) max(12px,env(safe-area-inset-right)) 0 max(12px,env(safe-area-inset-left))}header{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:8px 0;flex:none}.chip{background:var(--ctl-bg);color:var(--fg);border:1px solid var(--line);border-radius:999px;padding:5px 11px;font-size:13px;cursor:pointer;white-space:nowrap}.chip:hover{border-color:var(--accent);background:var(--ctl-hover)}main{flex:1;display:flex;flex-direction:column;min-height:0;min-width:0;padding-bottom:env(safe-area-inset-bottom)}.screen{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;background:#000;border-radius:8px;overflow:hidden}.screen canvas{position:absolute;inset:0;max-width:100%;max-height:100%;width:100%!important;height:100%!important;object-fit:contain}.hint{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:24px;gap:4px;color:#aab4d0}.msg{flex:none;margin:6px 0;color:var(--accent-text);font-size:14px}.touch{flex:none;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:12px 0;user-select:none;-webkit-user-select:none;touch-action:none}.tb{background:#26335a;color:var(--fg);border:1px solid #3a4a7c;border-radius:50%;width:52px;height:52px;font-size:16px;touch-action:none}@media(hover:hover){.tb:active{background:var(--accent);color:#000}}.dpad{display:grid;grid-template-areas:". up ." "left . right" ". down .";gap:2px;justify-self:start}.dpad .up{grid-area:up}.dpad .left{grid-area:left}.dpad .right{grid-area:right}.dpad .down{grid-area:down}.sys{display:flex;gap:8px}.sysb{border-radius:14px;width:74px;height:32px;font-size:11px}.act{display:flex;gap:10px;justify-self:end}@media(min-width:900px){.app{max-width:1100px;margin:0 auto}}@media(max-width:600px)and (orientation:portrait){.touch{grid-template-columns:auto auto;justify-content:space-between;row-gap:6px;padding:8px 0 14px}.sys{grid-column:1 / -1;grid-row:1;justify-self:center}.dpad{grid-row:2;grid-column:1}.act{grid-row:2;grid-column:2}}@media(max-width:480px){.tb{width:44px;height:44px}.act{gap:6px}.sysb{width:70px;height:30px}.hint{font-size:13px;padding:12px}}@media(max-height:480px)and (orientation:landscape){main{position:relative}.touch{position:absolute;left:0;right:0;bottom:8px;z-index:4;padding:0 8px;pointer-events:none}.touch>*{pointer-events:auto;opacity:.75}.hint{font-size:12px}}.debug{position:absolute;top:6px;left:6px;z-index:5;pointer-events:none;background:#000000a6;color:#7cfc9a;font:11px/1.4 monospace;padding:4px 8px;border-radius:4px}.guestv{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;image-rendering:pixelated;background:#000}.guestv.off{display:none}.home{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;text-align:center;padding:24px}.home h1{margin:0;font-size:2rem}.home p{margin:0;opacity:.8;line-height:1.6}.chip.big{font-size:1.1rem;padding:12px 24px}.lib{list-style:none;margin:8px 0;padding:0;max-height:40dvh;overflow:auto;display:flex;flex-direction:column;gap:6px;align-items:center}.lib li{display:flex;gap:8px;align-items:center}.libbar{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin:8px 0}.modal{position:fixed;inset:0;background:var(--scrim);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:50}.modal .box{background:var(--surface);color:var(--fg);border:1px solid var(--line);box-shadow:var(--shadow-lg);padding:20px 24px;border-radius:16px;text-align:center;max-width:90vw;display:flex;flex-direction:column;gap:10px;align-items:center}.modal small{color:var(--fg3);word-break:break-all}.badge.ok{background:#1f6f3d}.badge.one{background:#6b2b2b}.badge.link{background:#7a5a14}.badge.unk{background:#3a3f55}.spinner{width:28px;height:28px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:6px}@keyframes spin{to{transform:rotate(360deg)}}.screen.dsbox{flex-direction:column;gap:10px}.screen.dsbox canvas.ds{position:static;flex:1 1 0;min-height:0;width:auto!important;height:auto!important;max-width:100%;max-height:50%;image-rendering:pixelated;object-fit:contain;touch-action:none;outline:2px solid var(--line2)}.screen.dsbox.h{flex-direction:row}.screen.dsbox.h canvas.ds{max-width:50%;max-height:100%}.screen{margin-bottom:10px}.dropzone{border:2px dashed var(--line2);border-radius:16px;padding:28px 12px;margin-bottom:12px;text-align:center;color:var(--fg2);background:var(--panel);transition:border-color .15s,background .15s}.dropzone.on{border-color:var(--accent);background:var(--accent-soft);color:var(--fg)}header .grow{flex:1}header b{font-size:16px}.chip.icon{font-size:14px;padding:6px 13px}.dropzone{width:min(520px,100%);padding:36px 12px;font-size:15px}.drawer{position:fixed;inset:0;background:#0000008c;z-index:40;visibility:hidden;opacity:0;transition:opacity .2s,visibility .2s}.drawer.open{visibility:visible;opacity:1}.drawer nav{position:absolute;top:0;right:0;bottom:0;width:min(300px,85vw);background:var(--surface);box-shadow:var(--shadow-lg);border-left:1px solid var(--line);padding:14px;display:flex;flex-direction:column;align-items:stretch;gap:8px;overflow:auto;transform:translate(100%);transition:transform .2s}.drawer.open nav{transform:none}.drawer nav .chip{border-radius:10px;padding:11px 14px;font-size:15px;text-align:left}h4{margin:14px 0 2px;font-size:12px;color:var(--fg3);font-weight:700;letter-spacing:.06em;text-transform:uppercase}.dh{display:flex;justify-content:space-between;align-items:center}.modal .box.settings{align-items:stretch;text-align:left;width:min(440px,92vw);max-height:88dvh;overflow:auto}.settings .row{display:flex;align-items:center;gap:8px;font-size:14px}.settings .libbar{justify-content:flex-start;margin:2px 0}.settings p{margin:4px 0;font-size:13px;line-height:1.5}main.off{display:none}.select{flex:1;min-height:0;overflow:auto;padding:8px 0 24px}.sel-in{max-width:640px;margin:0 auto;display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;color:var(--fg2)}.select h2{margin:4px 0;color:var(--fg)}.select h3{margin:12px 0 0;color:var(--fg);font-size:15px;align-self:flex-start}.lib.cards{width:100%;max-height:none;align-items:stretch}.lib.cards li{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:8px 10px;justify-content:space-between;box-shadow:var(--shadow);transition:border-color .15s,background .15s,transform .15s}.lib.cards li:hover{border-color:var(--accent);background:var(--panel-hover);transform:translateY(-1px)}.lib.cards li .chip:first-child{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;border:0;background:none;font-size:14px}.lib.cards li small{color:var(--fg3)}.libfold{width:100%;text-align:left}.libfold summary{cursor:pointer;color:var(--fg);font-size:15px;font-weight:600;padding:8px 0}.screen{container-type:size}.screen[data-filter=sharp] canvas,.screen[data-filter=sharp] video{image-rendering:pixelated}.screen[data-filter=smooth] canvas,.screen[data-filter=smooth] video{image-rendering:auto}.screen canvas,.screen video{filter:brightness(var(--bright,1))}.screen[data-aspect="4:3"] canvas,.screen[data-aspect="4:3"] video{inset:0;margin:auto;width:min(100cqw,calc(100cqh*4/3))!important;height:min(100cqh,75cqw)!important;object-fit:fill}.screen[data-aspect=fill] canvas,.screen[data-aspect=fill] video{object-fit:fill}.screen[data-scan=low]:after,.screen[data-scan=mid]:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:3;background:repeating-linear-gradient(0deg,rgba(0,0,0,.16) 0 1px,transparent 1px 3px)}.screen[data-scan=mid]:after{background:repeating-linear-gradient(0deg,rgba(0,0,0,.32) 0 1px,transparent 1px 3px)}.settings input[type=range]{flex:1}.touch{opacity:var(--tpo,1)}.touch .tb{transform:scale(var(--tps,1))}.touch.flip{direction:rtl}.touch.flip>*{direction:ltr}.padtest{display:flex;flex-direction:column;gap:4px;font-size:13px;background:var(--inset);border:1px solid var(--line);border-radius:8px;padding:8px}.pb{display:inline-block;background:var(--accent);color:#000;border-radius:6px;padding:0 6px;margin-right:4px}.settings .row .row{display:inline-flex;margin-right:6px}.portrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border:1px solid var(--line);border-radius:8px;padding:4px 6px}.portrow.on{border-color:var(--accent)}.portrow .pname{flex:1 1 120px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.portrow .chip[aria-pressed=true]{background:var(--accent);color:#000}.touch{--bs:52px}@media(max-width:480px){.touch{--bs:44px}}.touch .dpad{grid-template-areas:". up ." "left mid right" ". down .";gap:0;grid-template-columns:repeat(3,var(--bs))}.touch .dpad .tb{width:var(--bs);height:var(--bs);border-radius:8px;background:#2b2f3a;border-color:#4a5066;font-size:14px}@media(hover:hover){.touch .dpad .tb:active{background:var(--accent);color:#000}}.touch .dpad .dc{grid-area:mid;background:#2b2f3a}.touch .dpad.pad8{display:block;position:relative;touch-action:none;user-select:none;-webkit-user-select:none;width:calc(var(--bs)*3*var(--dsz,1));height:calc(var(--bs)*3*var(--dsz,1));border-radius:50%;background:radial-gradient(circle,#343949 0,#2b2f3a 60%,#22252f);border:1px solid #4a5066}.touch .dpad.pad8 .dk{position:absolute;display:flex;align-items:center;justify-content:center;width:34%;height:34%;font-size:15px;color:#8d94ab;border-radius:50%;pointer-events:none}.touch .dpad.pad8 .dk.up{left:33%;top:3%}.touch .dpad.pad8 .dk.down{left:33%;bottom:3%}.touch .dpad.pad8 .dk.left{left:3%;top:33%}.touch .dpad.pad8 .dk.right{right:3%;top:33%}.touch .dpad.pad8 .dk.on{background:var(--accent);color:#000}.touch .dpad.pad8 .kn{position:absolute;left:36%;top:36%;width:28%;height:28%;border-radius:50%;background:#ffffff2e;border:1px solid #6a7290;pointer-events:none}.touch .act{position:relative;display:block;width:calc(var(--bs)*var(--aw,2.5));height:calc(var(--bs)*var(--ah,2));justify-self:end}.touch .ab{position:absolute;left:calc(var(--bs)*var(--ax));top:calc(var(--bs)*var(--ay));width:var(--bs);height:var(--bs);font-weight:700;font-size:17px;background:#3a3f4f;border-color:#5a6078}.touch .sysb{width:calc(var(--bs)*1.5);height:calc(var(--bs)*.6);font-size:11px}.touch .sh{grid-column:1/-1;display:flex;justify-content:space-between;margin-bottom:6px}.touch .shb{width:calc(var(--bs)*1.7);height:calc(var(--bs)*.62);border-radius:12px 12px 5px 5px;font-weight:700;background:#2b2f3a}.touch .ab.red{background:#c8323c;border-color:#e8656d}.touch .ab.blue{background:#2f5fc4;border-color:#6d92e6}.touch .ab.green{background:#2e9c55;border-color:#66cf8b}.touch .ab.yellow{background:#d9b72b;border-color:#f1d86a;color:#000}.touch .ab.wine{background:#8b1e4a;border-color:#c0527f}.touch .ab.gray{background:#5a5f6e;border-color:#8a90a3}.touch .ab.tri{background:#1f7f6a;color:#6fe3c6}.touch .ab.sq{background:#8d3d72;color:#f2a3d6}.touch .ab.cir{background:#a83a34;color:#ff9c95}.touch .ab.cro{background:#2f5a9c;color:#9cc2ff}.touch[data-k=gb] .sys{transform:rotate(-20deg)}.touch[data-k=nes] .sysb,.touch[data-k=gb] .sysb{border-radius:12px;background:#4a4f60}.touch[data-k=snes] .sysb,.touch[data-k=nds] .sysb{border-radius:12px;background:#4a4f60;transform:rotate(-20deg)}@media(hover:hover){.touch .tb.ab:active,.touch .tb.shb:active,.touch .tb.sysb:active{background:var(--accent);color:#000}}@media(max-width:600px)and (orientation:portrait){.touch.hassh .sh{grid-row:1}.touch.hassh .sys{grid-row:2}.touch.hassh .dpad,.touch.hassh .act{grid-row:3}}.plat{display:inline-block;font-size:10px;line-height:1;padding:2px 5px;margin-right:3px;border-radius:4px;background:var(--tag-bg);color:var(--tag-fg);font-weight:700;vertical-align:1px}.dkb{background:#111;padding:4px;user-select:none;-webkit-user-select:none;touch-action:manipulation}.dkb{display:block}.dfull{width:100%}.dkh{display:none}.dkb .dr{display:flex;justify-content:center;gap:3px;margin-bottom:3px}.dkey{flex:1 1 0;max-width:46px;min-width:0;height:36px;padding:0;background:#333;color:#fff;border:1px solid #666;border-radius:5px;font:13px sans-serif}.dkey.w{max-width:90px;flex-grow:2}.dkey.on{background:#2a5}@media(max-height:480px)and (orientation:landscape){.touch{position:fixed;inset:44px 0 0;display:block;padding:0;z-index:4;pointer-events:none}.touch>*{opacity:1;pointer-events:auto}.touch .dpad{position:absolute;left:max(8px,env(safe-area-inset-left));top:calc(50% - 14px);transform:translateY(-50%)}.touch .act{position:absolute;right:max(8px,env(safe-area-inset-right));top:50%;transform:translateY(-50%)}.touch .sys{position:absolute;left:max(8px,env(safe-area-inset-left));top:calc(50% - 14px + var(--bs) * 1.5 * var(--tds, 1) + 10px);bottom:auto}.touch .sh{position:absolute;left:0;right:0;top:0;margin:0;padding:0 max(8px,env(safe-area-inset-left))}.touch .sys,.touch .sysb{transform:none!important}.touch.flip{direction:ltr}.touch.flip .dpad{left:auto;right:max(8px,env(safe-area-inset-right))}.touch.flip .act{right:auto;left:max(8px,env(safe-area-inset-left))}.touch.flip .sys{left:auto;right:max(8px,env(safe-area-inset-right))}.app:has(.touch) .screen{margin-left:184px;margin-right:214px}}@media(max-height:480px)and (orientation:landscape){.dkb{position:fixed;inset:44px 0 0;padding:0;background:none;z-index:4;pointer-events:none;display:block}.dkh{display:block;position:absolute;top:50%;transform:translateY(-50%);width:252px;pointer-events:auto}.dkh.l{left:max(6px,env(safe-area-inset-left))}.dkh.r{right:max(6px,env(safe-area-inset-right))}.dkb .dr{justify-content:flex-start}.dkh.r .dr{justify-content:flex-end}.dkey{max-width:40px}.dkey.w{max-width:80px}.app:has(.dkb) .screen{margin-left:258px;margin-right:258px}}@media(max-height:480px)and (orientation:landscape){.dkb[data-side=split] .dfull{display:none}.dkb[data-side=right]{left:auto;width:50vw;display:flex;align-items:center;padding:0 max(6px,env(safe-area-inset-right)) 0 4px}.dkb[data-side=right]{pointer-events:auto;background:#111}.dkb[data-side=right] .dr{justify-content:center}.dkb[data-side=right] .dfull{width:100%}.dkb[data-side=right] .dkey{max-width:30px;height:34px;font-size:11px}.dkb[data-side=right] .dkey.w{max-width:54px}.app:has(.dkb[data-side=right]) .screen{margin-left:0;margin-right:calc(50vw + 6px)}.dkb[data-side=right] .dkh{display:none}}@media(max-height:480px)and (orientation:landscape){.app:has(.dkb[data-side=right]) .libbar{margin-right:calc(50vw + 6px)}.dkb[data-side=right]{background:none}}.dlast{display:flex;align-items:flex-end;gap:6px}.dlast .dr{flex:1;margin-bottom:0}.dkb[data-arrow=l] .dlast{flex-direction:row-reverse}.darr{display:grid;grid-template-columns:repeat(3,minmax(0,40px));gap:3px;flex:none;justify-content:center}.darr .dkey{max-width:none;height:34px;font-size:15px}.dkh .darr{margin:6px auto 0}.dkh.r .darr{margin-left:auto}.dkh.l .darr{margin-right:auto}.dlr{flex:1;min-width:0}.dlr .dr:last-child{margin-bottom:0}.darr{grid-template-rows:repeat(2,36px)}.darr .dkey{height:36px}@media(max-height:480px)and (orientation:landscape){.dkh .dkey,.dkh+.dkh .dkey{height:30px}.dkh .darr{grid-template-rows:repeat(2,30px);margin-top:4px}.dkh .darr .dkey{height:30px}.dkb[data-side=right] .darr .dkey{height:34px}}:root{--radius: 14px;--gap: 8px;--tap: 40px}button,select,input{font-family:inherit}.chip:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible,.tb:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.chip:disabled{opacity:.5;cursor:default}.chip.on{border-color:var(--accent);color:var(--accent-text);background:var(--accent-soft)}select.chip{padding-right:6px}input[type=search],input[type=text]{background:var(--inset);color:var(--fg);border:1px solid var(--line);border-radius:999px;padding:7px 14px;font-size:14px;min-width:0}input[type=search]::placeholder{color:var(--fg3)}input[type=checkbox]{accent-color:var(--accent);width:18px;height:18px;margin:0;flex:none}.searchbar{display:flex;gap:6px;margin:0 0 8px}.searchbar input{flex:1}.lib.cards li small{white-space:nowrap}.lib.cards li .chip:first-child{padding-left:4px}@media(pointer:coarse){.chip{min-height:var(--tap)}.drawer nav .chip{min-height:44px}input[type=search]{min-height:var(--tap)}}@media(prefers-reduced-motion:reduce){.drawer,.drawer nav,.spinner{transition:none;animation-duration:2s}}input[type=search]::-webkit-search-cancel-button{display:none}.recbadge{position:absolute;top:6px;right:6px;z-index:6;display:flex;align-items:center;gap:6px;background:#000000a6;color:#fff;border:1px solid #ff5a5a;border-radius:999px;padding:3px 10px;font:600 12px/1.4 monospace;cursor:pointer}.recbadge i{width:9px;height:9px;border-radius:50%;background:#ff3b3b;animation:recblink 1s steps(2,start) infinite}@keyframes recblink{50%{opacity:.25}}html.shoot body{background:var(--shoot-bg,#000)}html.shoot header,html.shoot .libbar,html.shoot .touch,html.shoot .dkb,html.shoot .debug,html.shoot .msg,html.shoot .drawer,html.shoot .modal{display:none!important}html.shoot .app{padding:0!important;max-width:none!important;margin:0!important}html.shoot .screen{margin:0!important;border-radius:0!important;background:var(--shoot-bg,#000)!important}html.shoot .recbadge{opacity:.25}.shootcatch{position:absolute;inset:0;z-index:4}.shoothint{position:absolute;left:50%;bottom:16px;transform:translate(-50%);z-index:7;max-width:92%;display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center;background:#000000bf;color:#fff;border-radius:10px;padding:8px 12px;font-size:13px;text-align:center}.cheats{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;max-height:34dvh;overflow:auto}.cheats li{display:flex;align-items:center;gap:6px}.cheats li .row{flex:1;min-width:0}.cheats li code{font-size:12px;opacity:.7;word-break:break-all}.cheats li .grow{min-width:0;overflow-wrap:anywhere}textarea.cheatcode{background:var(--inset);color:var(--fg);border:1px solid var(--line);border-radius:10px;padding:7px 12px;font:13px/1.4 ui-monospace,monospace;resize:vertical;min-width:0}textarea.cheatcode:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.inputdisp{position:absolute;z-index:3;width:min(22%,170px);min-width:96px;pointer-events:none;opacity:.85}.inputdisp.bl{left:6px;bottom:6px}.inputdisp.br{right:6px;bottom:6px}.inputdisp.tl{left:6px;top:6px}.inputdisp.tr{right:6px;top:6px}.inputdisp rect{fill:#141414b3;stroke:#ffffff8c;stroke-width:.6}.inputdisp rect.on{fill:#ffd23f;stroke:#fff}.inputdisp text{fill:#fff;font:700 5px sans-serif}.inputdisp text.on{fill:#111}html.shoot .inputdisp{display:none}html.crt-on .screen:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:3;background:radial-gradient(ellipse at center,transparent 58%,rgba(0,0,0,calc(.7*var(--crt,.5))) 100%),repeating-linear-gradient(0deg,rgba(0,0,0,calc(.5*var(--crt,.5))) 0 1px,transparent 1px 3px),repeating-linear-gradient(90deg,rgba(255,0,0,calc(.16*var(--crt,.5))) 0 1px,rgba(0,255,0,calc(.16*var(--crt,.5))) 1px 2px,rgba(0,0,255,calc(.16*var(--crt,.5))) 2px 3px);box-shadow:inset 0 0 calc(70px*var(--crt,.5)) calc(8px*var(--crt,.5)) rgba(0,0,0,calc(.6*var(--crt,.5)))}html.crt-on .screen canvas,html.crt-on .screen video{filter:brightness(var(--bright,1)) contrast(calc(1 + .12*var(--crt,.5))) saturate(calc(1 + .25*var(--crt,.5)))}.keytbl{border-collapse:collapse;width:100%}.keytbl th{text-align:left;font-weight:500;padding:3px 8px 3px 0}.keytbl td{text-align:right;white-space:nowrap}.keytbl .chip{min-width:84px}.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:8px 0}.slot{border:1px solid var(--line, #444);border-radius:8px;padding:6px;display:flex;flex-direction:column;gap:4px}.slot.on{outline:2px solid var(--accent, #4da3ff)}.slot .thumb{aspect-ratio:4 / 3;background:#000;border:0;border-radius:4px;padding:0;color:#888;cursor:pointer;overflow:hidden;display:grid;place-items:center;font-size:12px}.slot .thumb img{width:100%;height:100%;object-fit:contain;image-rendering:pixelated}.slot .meta{display:flex;flex-direction:column}.slot .act{display:flex;gap:4px;flex-wrap:wrap}.lib.cards li .chip.dim{opacity:.55;cursor:pointer}.lib.cards li .gname{min-width:0;word-break:break-all}@media(max-width:480px){.lib.cards li{flex-wrap:wrap;row-gap:6px}.lib.cards li .chip.gname:first-child{flex:1 1 100%;white-space:normal;text-overflow:clip;overflow:visible;line-height:1.35}.lib.cards li small{margin-right:auto}.lib.cards li .st-t{display:none}}@media(max-width:480px){header{gap:4px}header .chip{padding-left:8px;padding-right:8px}header .chip.hm,header .chip .bt{display:none}}.touch.fight{position:fixed!important;inset:0!important;display:block!important;padding:0!important;z-index:4;pointer-events:none!important;direction:ltr}.touch.fight>*{pointer-events:auto;opacity:1}.touch.fight .tb{transform:none!important;margin:0}.touch.fight .dpad{transform:none!important}.touch.fight .sh,.touch.fight .sys,.touch.fight .act{display:contents}.touch.fight .sysb,.touch.fight .shb{padding:0}.touch.fight.edit .tb,.touch.fight.edit .dpad{outline:1px dashed #8fb4ff;touch-action:none}.touch.fight.edit .sel{outline:2px solid var(--accent)}.touch.fight .fwarn{color:#ff8a80;font-weight:700}.touch.fight.edit .warn{outline:2px solid #ff3b3b!important}.touch.fight .fedit{position:fixed;left:6px;right:6px;display:flex;flex-wrap:wrap;gap:6px;align-items:center;background:var(--surface);color:var(--fg);border:1px solid var(--line);border-radius:10px;padding:6px 8px;font-size:12px;z-index:9;pointer-events:auto}.touch.fight .fedit input[type=range]{width:90px;vertical-align:middle}.touch.fight .tb{border-color:#ff8a3d;box-shadow:0 0 0 1px #ff8a3d8c,0 0 8px #ff8a3d59}.touch.fight .dpad.pad8{border:2px solid #ff8a3d;box-shadow:0 0 0 1px #ff8a3d80,0 0 10px #ff8a3d59}.touch.fight .dpad.pad8:before{content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;background:repeating-conic-gradient(from 22deg,rgba(255,138,61,.7) 0 1.2deg,transparent 1.2deg 45deg);-webkit-mask:radial-gradient(circle,transparent 0 16%,#000 17%);mask:radial-gradient(circle,transparent 0 16%,#000 17%)}.touch.fight .dpad:not(.pad8) .tb{border-color:#ff8a3d}.touch.fight .fbadge{position:fixed;right:calc(8px + env(safe-area-inset-right));font-size:11px;font-weight:700;letter-spacing:.5px;color:#ffd2b0;background:#78280abf;border:1px solid #ff8a3d;border-radius:10px;padding:1px 8px;opacity:.6;pointer-events:none!important;z-index:5;white-space:nowrap}:root[data-theme=light] .touch.fight .fbadge{color:#7a2a00;background:#ffe6d2d9}.app:has(.touch.fight) .screen{margin-left:0;margin-right:0}html[data-pr] .app .screen{margin-left:var(--pr-l,0px)!important;margin-right:var(--pr-r,0px)!important;margin-bottom:calc(10px + var(--pr-b,0px))!important}h1,h2,h3{letter-spacing:-.01em}.chip{font-weight:500;box-shadow:0 1px 1px #28190a0d;transition:border-color .15s,background .15s,color .15s,box-shadow .15s,transform .1s}.chip:hover:not(:disabled){box-shadow:var(--shadow)}.chip:active:not(:disabled){transform:translateY(1px) scale(.985)}.chip:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible,.tb:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.chip.big,.sel-in>.chip{background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 88%,#fff) 0,var(--accent) 100%);color:var(--accent-fg);border-color:color-mix(in srgb,var(--accent) 70%,#000);font-weight:700;box-shadow:0 4px 14px color-mix(in srgb,var(--accent) 38%,transparent)}.chip.big:hover:not(:disabled),.sel-in>.chip:hover:not(:disabled){background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 80%,#fff) 0,color-mix(in srgb,var(--accent) 92%,#000));border-color:color-mix(in srgb,var(--accent) 70%,#000)}.chip.big{border-radius:999px}.sel-in>.chip{border-radius:999px;padding:10px 22px;font-size:15px}header{border-bottom:1px solid transparent}header b{font-weight:800;letter-spacing:-.01em}.home{background:var(--glow)}.home h1{font-size:clamp(2rem,6vw,3rem);font-weight:800;letter-spacing:-.03em;background:linear-gradient(135deg,var(--accent-text),var(--fg) 85%);-webkit-background-clip:text;background-clip:text;color:transparent}.home p{color:var(--fg2);opacity:1;max-width:34em}.home small{color:var(--fg3)}.select h2{font-size:1.7rem;font-weight:800;letter-spacing:-.02em}.select p,.select small{color:var(--fg2)}.select small{color:var(--fg3)}.libfold summary{color:var(--fg)}.screen{box-shadow:var(--shadow-lg);outline:1px solid color-mix(in srgb,var(--line) 70%,transparent);outline-offset:0}html.shoot .screen{box-shadow:none!important;outline:0!important}.drawer{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:var(--scrim)}.drawer nav .chip{box-shadow:none}.settings .row{padding:3px 0}.settings p,.settings small{color:var(--fg2)}select.chip{color:var(--fg)}input[type=search]:focus,input[type=text]:focus{border-color:var(--accent)}.dkb .dkey.on{background:#2a5}.slot{background:var(--panel);box-shadow:var(--shadow)}.slot.on{outline-color:var(--accent)}.keytbl th{color:var(--fg2)}.cheats li code,.lib.cards li small{color:var(--fg3);opacity:1}:root[data-theme=light] .msg[style],:root[data-theme=light] .fwarn{color:var(--warn)!important}:root[data-theme=light] .touch.fight .fedit{color:var(--fg)}@media(prefers-reduced-motion:reduce){.chip,.lib.cards li,.dropzone{transition:none}.lib.cards li:hover{transform:none}}@media(max-width:480px){.select h2{font-size:1.4rem}.modal .box{padding:16px;border-radius:14px}}.modal.exitp{z-index:99990;cursor:progress}.modal.exitp .box{min-width:min(280px,86vw)}.modal.exitp .exitp-slow{color:var(--warn);word-break:keep-all}:root,:root[data-theme=light]{--pad-btn-bg: #ffffff;--pad-btn-fg: #2a2430;--pad-btn-border: #7d7165;--pad-btn-shadow: 0 2px 0 rgba(60,40,20,.28), 0 3px 8px rgba(60,40,20,.14);--pad-sys-bg: #ece5d9;--pad-shoulder-bg: #f7f1e6;--pad-btn-active: #e8742f;--pad-btn-active-fg: #1d1305;--pad-press-ring: #2a2430;--pad-dpad: #fffdf9;--pad-dpad-edge: #7d7165;--pad-dpad-fg: #2a2430;--pad-knob: rgba(42,36,48,.2);--pad-knob-edge: #5b5262;--pad-face-fg: #ffffff;--pad-yellow-fg: #1d1305;--pad-text-shadow: none;--pad-blur: none;--pad-key-bg: #ffffff;--pad-key-fg: #2a2430;--pad-key-border: #7d7165;--pad-key-on: #157a3e;--pad-key-on-fg: #ffffff;--pad-kb-bg: #ece5d9}:root[data-theme=dark]{--pad-btn-bg: #36416b;--pad-btn-fg: #f3f5fb;--pad-btn-border: #8f9bc8;--pad-btn-shadow: 0 2px 0 rgba(0,0,0,.4), 0 3px 8px rgba(0,0,0,.3);--pad-sys-bg: #2f3858;--pad-shoulder-bg: #3b4672;--pad-btn-active: #f6ab6c;--pad-btn-active-fg: #1d1305;--pad-press-ring: #ffffff;--pad-dpad: #2f3858;--pad-dpad-edge: #8f9bc8;--pad-dpad-fg: #f3f5fb;--pad-knob: rgba(255,255,255,.2);--pad-knob-edge: #c9d0e6;--pad-key-bg: #36416b;--pad-key-fg: #f3f5fb;--pad-key-border: #8f9bc8;--pad-key-on: #157a3e;--pad-kb-bg: #232b44}.touch.fight{--pad-btn-bg: #14161e;--pad-btn-fg: #ffffff;--pad-btn-border: rgba(255,255,255,.85);--pad-btn-shadow: 0 0 0 1px rgba(0,0,0,.7), 0 2px 8px rgba(0,0,0,.6);--pad-sys-bg: #14161e;--pad-shoulder-bg: #14161e;--pad-btn-active: #f6ab6c;--pad-press-ring: #ffffff;--pad-dpad: #14161e;--pad-dpad-edge: rgba(255,255,255,.85);--pad-dpad-fg: #ffffff;--pad-knob: rgba(255,255,255,.28);--pad-knob-edge: #ffffff;--pad-text-shadow: 0 1px 2px #000, 0 0 3px #000;--pad-blur: blur(4px)}.touch{opacity:1}.touch .tb{color:var(--pad-btn-fg);text-shadow:var(--pad-text-shadow);font-weight:700;box-shadow:var(--pad-btn-shadow);background:color-mix(in srgb,var(--pad-btn-bg) calc(var(--tpo, 1) * 100%),transparent);border:1.5px solid var(--pad-btn-border);-webkit-backdrop-filter:var(--pad-blur);backdrop-filter:var(--pad-blur)}.touch .dpad .tb,.touch .dpad .dc{background:color-mix(in srgb,var(--pad-dpad) calc(var(--tpo, 1) * 100%),transparent);border-color:var(--pad-dpad-edge);color:var(--pad-dpad-fg)}.touch .dpad .dc{border:0;box-shadow:none}.touch .sysb{background:color-mix(in srgb,var(--pad-sys-bg) calc(var(--tpo, 1) * 100%),transparent);font-size:12px;letter-spacing:.02em}.touch .shb{background:color-mix(in srgb,var(--pad-shoulder-bg) calc(var(--tpo, 1) * 100%),transparent)}.touch[data-k=nes] .sysb,.touch[data-k=gb] .sysb,.touch[data-k=snes] .sysb,.touch[data-k=nds] .sysb{background:color-mix(in srgb,var(--pad-sys-bg) calc(var(--tpo, 1) * 100%),transparent)}.touch .dpad.pad8{background:color-mix(in srgb,var(--pad-dpad) calc(var(--tpo, 1) * 100%),transparent);border:1.5px solid var(--pad-dpad-edge);box-shadow:var(--pad-btn-shadow);-webkit-backdrop-filter:var(--pad-blur);backdrop-filter:var(--pad-blur)}.touch .dpad.pad8 .dk{color:var(--pad-dpad-fg);font-size:16px;text-shadow:var(--pad-text-shadow)}.touch .dpad.pad8 .dk.on{background:var(--pad-btn-active);color:var(--pad-btn-active-fg);text-shadow:none}.touch .dpad.pad8 .kn{background:var(--pad-knob);border:1.5px solid var(--pad-knob-edge)}.touch .ab.red{background:#c0262f;border-color:#ffd0d3;color:#fff}.touch .ab.blue{background:#2757b8;border-color:#cddcff;color:#fff}.touch .ab.green{background:#1c7a3f;border-color:#c2f0d2;color:#fff}.touch .ab.yellow{background:#f2c82e;border-color:#7a5a00;color:var(--pad-yellow-fg);text-shadow:none}.touch .ab.wine{background:#9a2150;border-color:#f2c4d6;color:#fff}.touch .ab.gray{background:#575c6b;border-color:#dfe3ee;color:#fff}.touch .ab.tri{background:#157060;border-color:#bff2e6;color:#fff}.touch .ab.sq{background:#8d3d72;border-color:#f6cfe6;color:#fff}.touch .ab.cir{background:#a83a34;border-color:#ffd0cc;color:#fff}.touch .ab.cro{background:#2f5a9c;border-color:#c9defa;color:#fff}.touch .ab:is(.red,.blue,.green,.wine,.gray,.tri,.sq,.cir,.cro){text-shadow:0 1px 1px rgba(0,0,0,.45)}:root{--pad-nes-ab: #b3202a;--pad-nes-ab-fg: #fff;--pad-nes-turbo: #7a1620;--pad-nes-turbo-fg: #fff;--pad-nes-turbo-edge: #ffb3b8;--pad-nes-sys: #1d1d22;--pad-nes-sys-fg: #f3f3f3;--pad-snes-a: #c8272d;--pad-snes-b: #e8b320;--pad-snes-b-fg: #1d1305;--pad-snes-x: #2c57b8;--pad-snes-y: #1c7a3f;--pad-snes-fg: #fff;--pad-snes-sys: #6b6f7a;--pad-md-abc: #1e2024;--pad-md-xyz: #3c3f47;--pad-md-fg: #fff;--pad-gb-ab: #a3205c;--pad-gb-ab-fg: #fff;--pad-gb-sys: #6b6f7a;--pad-gb-sys-fg: #fff;--pad-pce-ab: #b3202a;--pad-pce-sys: #4a4d57;--pad-ps-bg: #23262e;--pad-ps-tri: #4fe0a6;--pad-ps-sq: #ff8fd0;--pad-ps-cir: #ff7a73;--pad-ps-cro: #7fb2ff;--pad-n64-a: #2a52be;--pad-n64-b: #1c7a3f;--pad-n64-c: #f2c82e;--pad-n64-c-fg: #1d1305;--pad-n64-z: #6b6f7a;--pad-n64-start: #c0262f;--pad-n64-fg: #fff;--pad-sat-abc: #e0a21b;--pad-sat-abc-fg: #1d1305;--pad-sat-xyz: #4a5a82;--pad-sat-fg: #fff;--pad-neo-a: #c8272d;--pad-neo-b: #e8b320;--pad-neo-b-fg: #1d1305;--pad-neo-c: #1c7a3f;--pad-neo-d: #2c57b8;--pad-neo-fg: #fff}.touch .ab.nes-ab{background:var(--pad-nes-ab);color:var(--pad-nes-ab-fg);border-color:#ffd0d3}.touch .ab.nes-turbo{background:var(--pad-nes-turbo);color:var(--pad-nes-turbo-fg);border:2px dashed var(--pad-nes-turbo-edge);font-size:14px;letter-spacing:-.02em}.touch[data-k=nes] .sysb{background:var(--pad-nes-sys);color:var(--pad-nes-sys-fg);border-color:#8a8a94}.touch .ab.snes-a{background:var(--pad-snes-a);color:var(--pad-snes-fg)}.touch .ab.snes-b{background:var(--pad-snes-b);color:var(--pad-snes-b-fg);text-shadow:none}.touch .ab.snes-x{background:var(--pad-snes-x);color:var(--pad-snes-fg)}.touch .ab.snes-y{background:var(--pad-snes-y);color:var(--pad-snes-fg)}.touch[data-k=snes] .sysb{background:var(--pad-snes-sys);color:#fff}.touch .ab.md-abc{background:var(--pad-md-abc);color:var(--pad-md-fg);border-color:#b8bcc8}.touch .ab.md-xyz{background:var(--pad-md-xyz);color:var(--pad-md-fg);border-color:#b8bcc8;font-size:15px}.touch[data-k=md] .sysb{background:var(--pad-md-abc);color:var(--pad-md-fg)}.touch .ab.gb-ab{background:var(--pad-gb-ab);color:var(--pad-gb-ab-fg);border-color:#f2c4d6}.touch[data-k=gb] .sysb,.touch[data-k=gba] .sysb{background:var(--pad-gb-sys);color:var(--pad-gb-sys-fg)}.touch .ab.pce-ab{background:var(--pad-pce-ab);color:#fff;border-color:#ffd0d3}.touch[data-k=pce] .sysb{background:var(--pad-pce-sys);color:#fff}.touch .ab:is(.tri,.sq,.cir,.cro){background:var(--pad-ps-bg);border-color:#c9ccd6;font-size:20px;text-shadow:none}.touch .ab.tri{color:var(--pad-ps-tri)}.touch .ab.sq{color:var(--pad-ps-sq)}.touch .ab.cir{color:var(--pad-ps-cir)}.touch .ab.cro{color:var(--pad-ps-cro)}.touch .ab.n64-a{background:var(--pad-n64-a);color:var(--pad-n64-fg)}.touch .ab.n64-b{background:var(--pad-n64-b);color:var(--pad-n64-fg)}.touch .ab.n64-c{background:var(--pad-n64-c);color:var(--pad-n64-c-fg);text-shadow:none}.touch .ab.n64-z{background:var(--pad-n64-z);color:var(--pad-n64-fg)}.touch[data-k=n64] .sysb{background:var(--pad-n64-start);color:var(--pad-n64-fg)}.touch .ab.sat-abc{background:var(--pad-sat-abc);color:var(--pad-sat-abc-fg);text-shadow:none}.touch .ab.sat-xyz{background:var(--pad-sat-xyz);color:var(--pad-sat-fg)}.touch .ab.neo-a{background:var(--pad-neo-a);color:var(--pad-neo-fg)}.touch .ab.neo-b{background:var(--pad-neo-b);color:var(--pad-neo-b-fg);text-shadow:none}.touch .ab.neo-c{background:var(--pad-neo-c);color:var(--pad-neo-fg)}.touch .ab.neo-d{background:var(--pad-neo-d);color:var(--pad-neo-fg)}.touch .tb.press,.touch .tb.ab.press{background:var(--pad-btn-active);color:var(--pad-btn-active-fg);text-shadow:none;border-color:var(--pad-press-ring);box-shadow:0 0 0 3px var(--pad-press-ring),inset 0 2px 4px #0000004d}@media(hover:hover){.touch .tb:active,.touch .tb.ab:active,.touch .tb.shb:active,.touch .tb.sysb:active,.touch .dpad .tb:active{background:var(--pad-btn-active);color:var(--pad-btn-active-fg);text-shadow:none;border-color:var(--pad-press-ring);box-shadow:0 0 0 3px var(--pad-press-ring),inset 0 2px 4px #0000004d}}.touch.fight.edit .tb,.touch.fight.edit .dpad{outline:2px dashed #fff;outline-offset:2px}.dkb{background:var(--pad-kb-bg)}.dkey{background:var(--pad-key-bg);color:var(--pad-key-fg);border:1px solid var(--pad-key-border);font-weight:600;box-shadow:0 2px #00000040}.dkey:active{background:var(--pad-btn-active);color:var(--pad-btn-active-fg);box-shadow:0 0 0 2px var(--pad-press-ring)}.dkb .dkey.on,.dkey.on{background:var(--pad-key-on);color:#fff;border-color:var(--pad-press-ring);box-shadow:0 0 0 2px var(--pad-press-ring)}@media(max-height:480px)and (orientation:landscape){.dkb{background:none}.dkb[data-side=right]{background:var(--pad-kb-bg)}}:root[data-theme=light] .touch.fight .fbadge,.touch.fight .fbadge{color:#fff;background:#78280ae6;opacity:.85}.touch[data-k=n64]{--bs:clamp(38px,calc((100vw - 28px) / 7.4),52px)}@media(max-height:480px)and (orientation:landscape){.app:has(.touch[data-k=n64]) .screen{margin-right:236px}.app:has(.touch[data-k=neogeo]) .screen{margin-right:250px}}.platbadge{position:absolute;top:6px;left:6px;z-index:7;opacity:.3;transition:opacity .4s}.platbadge.on,.platbadge:focus-within{opacity:1}.pb-chip{display:inline-flex;align-items:center;gap:6px;background:#0c0e16c7;color:#fff;border:1px solid rgba(255,255,255,.35);border-radius:999px;padding:3px 10px;font-weight:600;font-size:12px;line-height:1.4;font-family:inherit;cursor:pointer;max-width:70vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pb-chip i{width:9px;height:9px;border-radius:50%;flex:none}.pb-chip small{font-weight:400;font-size:11px;opacity:.9}.pb-pop{position:absolute;top:30px;left:0;width:min(280px,calc(100vw - 28px));background:var(--surface);color:var(--fg);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);padding:12px 14px;display:flex;flex-direction:column;gap:8px;font-size:13px}.pb-pop dl{display:grid;grid-template-columns:auto 1fr;gap:3px 10px;margin:0}.pb-pop dt{color:var(--fg3)}.pb-pop dd{margin:0;word-break:break-all}.pb-pop .chip{align-self:flex-end}.platbadge~.debug{top:34px}
