:root{--bg:#0d0d14;--panel:#161622;--panel-2:#1e1e2e;--line:#2c2c40;--text:#ececf4;--muted:#8e8ea8;--accent:#ff3d7f;--accent-2:#3dd6ff;--danger:#ff5a5a;--ok:#4be08a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:radial-gradient(1200px 600px at 20% -10%, #24123a 0%, transparent 60%), var(--bg);color:var(--text);min-height:100vh;margin:0;font-family:Pretendard,system-ui,-apple-system,Apple SD Gothic Neo,Malgun Gothic,sans-serif}a{color:var(--accent-2)}h2,h3{margin:0}h2{font-size:1.15rem}h3{font-size:1rem}.muted{color:var(--muted)}.tiny{font-size:.8rem}.error{color:var(--danger);min-height:1em;margin:0}.warn{color:#ffc14d}button{font:inherit;background:var(--panel-2);color:var(--text);border:1px solid var(--line);cursor:pointer;white-space:nowrap;border-radius:6px;padding:7px 14px}button:hover:not(:disabled){border-color:var(--accent-2)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.danger{border-color:var(--danger);color:var(--danger)}button.icon{background:0 0;border:none;padding:4px 8px}button.small{font-size:.8rem}input,select{font:inherit;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:6px;width:100%;padding:8px 10px}input:focus,select:focus{outline:2px solid var(--accent-2);outline-offset:-1px}.shell{max-width:1400px;margin:auto;padding:16px}header.top{justify-content:space-between;align-items:center;padding:8px 0 16px;display:flex}.logo{letter-spacing:.04em;color:var(--text);font-size:1.5rem;font-weight:900;text-decoration:none}.logo span{color:var(--accent)}.user{align-items:center;gap:8px;display:flex}footer{text-align:center;padding:32px 0 8px}.tabs{flex-wrap:wrap;gap:8px;display:flex}.tab{background:var(--panel);border:1px solid var(--line);min-width:120px;color:var(--text);border-radius:10px;flex-direction:column;padding:10px 18px;text-decoration:none;display:flex}.tab small{color:var(--muted)}.tab.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.platform-desc{margin:10px 2px 16px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px}.panel-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.search{max-width:240px}.empty{text-align:center;padding:24px 0}.lobby{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:start;gap:16px;display:grid}.game-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;display:grid}.game-card{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;grid-template-rows:1fr auto;grid-template-columns:56px 1fr;gap:8px 12px;padding:12px;display:grid}.game-card button{grid-column:1/-1}.game-art{background:linear-gradient(135deg, var(--accent), #7b3dff);border-radius:8px;place-items:center;width:56px;height:56px;display:grid}.game-art:after{content:attr(data-initial);font-size:1.5rem;font-weight:900}.game-info p{margin:2px 0}.game-info .desc{font-size:.9rem}.room-list{flex-direction:column;gap:8px;display:flex}.room-row{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding:10px 12px;display:grid}.room-row p{margin:2px 0 0;font-size:.85rem}.count{color:var(--ok);font-variant-numeric:tabular-nums}.room{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:16px;display:grid}.room-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.room-head p{margin:2px 0 0}.toolbar{flex-wrap:wrap;gap:6px;display:flex}.screen{aspect-ratio:4/3;border:1px solid var(--line);background:#000;border-radius:8px;place-items:center;width:100%;max-height:78vh;display:grid;position:relative;overflow:hidden}.screen:fullscreen{border:none;border-radius:0;max-height:none}.screen .emu,.screen video{width:100%;height:100%}.screen .emu{position:absolute;inset:0;overflow:hidden}.screen video{object-fit:contain;image-rendering:pixelated}.screen-msg{color:var(--muted);text-align:center;padding:24px}.screen-msg.error{color:var(--danger)}.unmute{position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.status{color:var(--accent-2);min-height:1.2em;margin-top:8px;font-size:.9rem;display:block}.side{flex-direction:column;gap:12px;display:flex}.side h3{margin-bottom:8px}.members{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.members li{background:var(--panel-2);border-radius:6px;align-items:center;gap:8px;padding:6px 8px;display:flex}.members li.me{outline:1px solid var(--accent-2)}.members .slot{color:var(--accent);width:2em;font-weight:800}.members .name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.chat-log{height:240px;margin-bottom:8px;font-size:.9rem;overflow-y:auto}.chat-log p{word-break:break-all;margin:3px 0}.chat-log .sys{color:var(--muted);font-size:.8rem}.keys{grid-template-columns:auto 1fr;gap:4px 12px;margin:0;font-size:.85rem;display:grid}.keys dt{font-weight:700}.keys dd{color:var(--muted);margin:0}.notice{text-align:center;max-width:480px;margin:48px auto}.row{justify-content:center;gap:8px;display:flex}dialog.modal{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:12px;width:min(420px,100vw - 32px);padding:0}dialog.modal::backdrop{background:#0009}dialog.modal header{justify-content:space-between;align-items:center;padding:14px 16px 0;display:flex}.form{flex-direction:column;gap:12px;padding:16px;display:flex}.form p{margin:0}.field{flex-direction:column;gap:4px;display:flex}.field>span{font-size:.85rem;font-weight:600}.field small{color:var(--muted);font-size:.78rem}.check{align-items:center;gap:8px;display:flex}.check input{width:auto}.switch{text-align:center;font-size:.85rem}.toasts{z-index:1000;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:16px;right:16px}.toast{background:var(--panel-2);border:1px solid var(--line);border-left:4px solid var(--accent-2);border-radius:6px;padding:10px 14px}.toast.error{border-left-color:var(--danger)}@media (width<=900px){.lobby,.room{grid-template-columns:1fr}}.player{flex-direction:column;gap:10px;display:flex;position:relative}.player:fullscreen{background:#000;justify-content:center;gap:0}.player:fullscreen .screen{aspect-ratio:auto;border:none;border-radius:0;flex:1;max-height:none}.touchpad{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;justify-content:space-between;align-items:center;gap:8px;padding:6px 4px;display:flex}.player:fullscreen .touchpad{pointer-events:none;opacity:.75;padding:16px 24px;position:absolute;bottom:0;left:0;right:0}.player:fullscreen .touchpad>*{pointer-events:auto}.tp-dpad{border:2px solid var(--line);touch-action:none;background:radial-gradient(circle,#2a2a3c 0 30%,#1c1c2a 31%);border-radius:50%;flex:none;width:150px;height:150px;position:relative}.tp-knob{pointer-events:none;background:#3a3a52;border-radius:50%;width:36%;height:36%;transition:transform 50ms;position:absolute;top:32%;left:32%;box-shadow:0 2px 6px #00000080}.tp-arrow{pointer-events:none;border:9px solid #0000;width:0;height:0;position:absolute}.tp-arrow.up{border-bottom-color:var(--muted);top:8px;left:calc(50% - 9px)}.tp-arrow.down{border-top-color:var(--muted);bottom:8px;left:calc(50% - 9px)}.tp-arrow.left{border-right-color:var(--muted);top:calc(50% - 9px);left:8px}.tp-arrow.right{border-left-color:var(--muted);top:calc(50% - 9px);right:8px}.tp-mid{flex-direction:column;align-self:flex-end;gap:10px;display:flex}.tp-pill{touch-action:none;border-radius:999px;padding:6px 12px;font-size:.8rem}.tp-buttons{flex:none;grid-template-rows:repeat(2,64px);grid-template-columns:repeat(2,64px);gap:10px;display:grid}.tp-btn{color:#fff;touch-action:none;border:2px solid #ffffff26;border-radius:50%;padding:0;font-size:1.2rem;font-weight:800;box-shadow:0 3px #0006}.tp-btn.c1{background:#d6304e}.tp-btn.c2{background:#e0a020}.tp-btn.c3{background:#2f9e5b}.tp-btn.c4{background:#2f6fd6}.tp-btn.on,.tp-pill.on{filter:brightness(1.4);box-shadow:none;transform:translateY(2px)}@media (width<=600px){.shell{padding:8px}.tp-dpad{width:130px;height:130px}.tp-buttons{grid-template-rows:repeat(2,56px);grid-template-columns:repeat(2,56px)}}@font-face{font-family:Galmuri11;src:url(/assets/Galmuri11-DfQIlyDK.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Galmuri11;src:url(/assets/Galmuri11-Bold-QdFGsJ3v.woff2)format("woff2");font-weight:700;font-display:swap}@font-face{font-family:"Press Start 2P";src:url(/assets/press-start-2p-latin-400-normal-_wFEWmAB.woff2)format("woff2");font-display:swap}:root{--bg:#0a0618;--panel:#100a22eb;--panel-2:#1b1238;--line:#3b2a6e;--text:#f2ecff;--muted:#a99bd0;--accent:#ff2e88;--accent-2:#2ee8ff;--gold:#ffd23d;--pixel:4px;--font:"Galmuri11", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;--font-arcade:"Press Start 2P", "Galmuri11", monospace}body{background:var(--bg);font-family:var(--font);letter-spacing:.01em;-webkit-font-smoothing:none;font-size:15px}.shell{z-index:1;position:relative}.retro-bg{z-index:0;pointer-events:none;background:radial-gradient(120% 60% at 50% 105%,#ff2e8859,#0000 60%),linear-gradient(#05030f 0%,#120a2e 45%,#2a0d45 72%,#3d0f4a 100%);position:fixed;inset:0;overflow:hidden}.rb-stars{image-rendering:pixelated;position:absolute;inset:0 0 35%}.rb-stars.s1{background-image:radial-gradient(2px 2px at 10% 20%,#fff 50%,#0000 51%),radial-gradient(2px 2px at 30% 65%,#9ff 50%,#0000 51%),radial-gradient(2px 2px at 55% 30%,#fff 50%,#0000 51%),radial-gradient(2px 2px at 78% 55%,#fcf 50%,#0000 51%),radial-gradient(2px 2px at 90% 15%,#fff 50%,#0000 51%);background-size:260px 260px;animation:3s steps(2,end) infinite twinkle}.rb-stars.s2{background-image:radial-gradient(3px 3px at 20% 40%,#fff 50%,#0000 51%),radial-gradient(3px 3px at 65% 80%,#ffd23d 50%,#0000 51%),radial-gradient(3px 3px at 85% 35%,#2ee8ff 50%,#0000 51%);background-size:420px 380px;animation:4.5s steps(2,end) infinite reverse twinkle}@keyframes twinkle{50%{opacity:.35}}.rb-horizon{background:var(--accent);height:3px;position:absolute;bottom:34%;left:0;right:0;box-shadow:0 0 18px 4px #ff2e88b3}.rb-grid{transform-origin:top;background-image:linear-gradient(#ff2e888c 2px,#0000 2px),linear-gradient(90deg,#2ee8ff73 2px,#0000 2px);background-size:64px 48px;height:34%;animation:1.6s linear infinite grid-scroll;position:absolute;bottom:0;left:-50%;right:-50%;transform:perspective(300px)rotateX(55deg);-webkit-mask-image:linear-gradient(#0000,#000 25%);mask-image:linear-gradient(#0000,#000 25%)}@keyframes grid-scroll{to{background-position:0 48px,0 0}}.rb-sprite{image-rendering:pixelated;opacity:.55;filter:drop-shadow(0 0 6px #ffffff40);background-repeat:no-repeat;background-size:contain;animation:ease-in-out infinite alternate bob;display:block;position:absolute}@keyframes bob{0%{transform:translateY(-8px)}to{transform:translateY(8px)}}.rb-hud{font-family:var(--font-arcade);color:var(--accent);opacity:.55;letter-spacing:.1em;font-size:10px;position:absolute;top:10px}.rb-hud b{color:#fff;margin-left:6px;font-weight:400}.rb-hud.left{left:16px}.rb-hud.right{right:16px}.crt-overlay{z-index:50;pointer-events:none;mix-blend-mode:multiply;background:repeating-linear-gradient(0deg,#0000002e 0 1px,#0000 1px 3px),radial-gradient(#0000 60%,#0000008c 100%);position:fixed;inset:0}body.in-room .rb-sprite,body.in-room .rb-grid,body.in-room .rb-stars{animation:none}body.in-room .crt-overlay{display:none}@media (prefers-reduced-motion:reduce){.rb-sprite,.rb-grid,.rb-stars,.logo,.insert-coin{animation:none!important}}header.top{padding:28px 0 18px}.brand{flex-direction:column;gap:10px;text-decoration:none;display:flex}.logo{font-family:var(--font-arcade);letter-spacing:.06em;color:#fff;text-shadow:0 0 4px #fff, 0 0 12px var(--accent-2), 0 0 28px var(--accent-2), 4px 4px 0 #3b0a5a;font-size:clamp(18px,3.4vw,34px);font-weight:400;animation:6s infinite neon-flicker}.logo span{color:#ff6fb1;text-shadow:0 0 2px #fff, 0 0 10px var(--accent), 0 0 22px #ff2e88b3, 4px 4px 0 #3b0a5a}@keyframes neon-flicker{0%,18%,22%,62%,64%,to{opacity:1}20%,63%{opacity:.55}}.insert-coin{font-family:var(--font-arcade);color:var(--gold);letter-spacing:.15em;font-size:10px;animation:1.1s step-end infinite blink}@keyframes blink{50%{opacity:0}}.panel,.tab,.game-card,.room-row,dialog.modal,.members li,.toast,.notice{box-shadow:0 calc(-1 * var(--pixel)) 0 0 var(--line), 0 var(--pixel) 0 0 var(--line), calc(-1 * var(--pixel)) 0 0 0 var(--line), var(--pixel) 0 0 0 var(--line), var(--pixel) var(--pixel) 0 var(--pixel) #00000073;border:none!important;border-radius:0!important}.panel{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);margin:var(--pixel)}.panel h2,.panel h3,.side h3{font-family:var(--font);letter-spacing:.04em;color:var(--gold);text-shadow:2px 2px #5a2a00;font-size:15px;font-weight:700}button{font-family:var(--font);background:var(--panel-2);color:var(--text);box-shadow:inset -3px -3px 0 #00000073, inset 3px 3px 0 #ffffff1f, 0 0 0 2px var(--line);border:none;border-radius:0;transition:transform 50ms}button:hover:not(:disabled){box-shadow:inset -3px -3px 0 #00000073, inset 3px 3px 0 #ffffff1f, 0 0 0 2px var(--accent-2)}button:active:not(:disabled){box-shadow:inset 3px 3px 0 #00000073, 0 0 0 2px var(--line);transform:translate(2px,2px)}button.primary{background:var(--accent);color:#fff;text-shadow:1px 1px #7a0038}button.danger{color:#fff;background:#a8203a}button.icon{box-shadow:none;background:0 0}input,select{border:2px solid var(--line);font-family:var(--font);background:#07040f;border-radius:0}input:focus,select:focus{outline:2px solid var(--accent-2)}.tabs{padding:var(--pixel);gap:16px}.tab{background:var(--panel);min-width:150px;padding:12px 20px}.tab b{font-family:var(--font-arcade);letter-spacing:.08em;font-size:14px;font-weight:400}.tab.active{background:linear-gradient(#ff2e88,#b0105a)}.tab.active small{color:#ffe0ef}.tab.active{box-shadow:0 calc(-1 * var(--pixel)) 0 0 var(--gold), 0 var(--pixel) 0 0 var(--gold), calc(-1 * var(--pixel)) 0 0 0 var(--gold), var(--pixel) 0 0 0 var(--gold), 0 0 24px #ff2e8899!important}.game-card{background:var(--panel-2);margin:var(--pixel)}.game-art{background:var(--sprite) center / 70% no-repeat, repeating-linear-gradient(0deg, #00000040 0 2px, transparent 2px 4px), linear-gradient(135deg, hsl(var(--hue,320) 90% 55%), hsl(calc(var(--hue,320) + 60) 80% 30%));image-rendering:pixelated;box-shadow:0 0 0 3px #000, 0 0 0 5px hsl(var(--hue,320) 90% 60%);border-radius:0}.game-art:after{content:none}.game-info h3{font-family:var(--font);color:#fff;font-size:1rem;font-weight:700}.room-row{background:var(--panel-2);margin:var(--pixel)}.count{font-family:var(--font-arcade);color:var(--gold);font-size:11px}.count.full{color:var(--accent)}.screen{box-shadow:0 0 0 6px #000, 0 0 0 10px #2a1a52, 0 0 0 12px var(--accent), 0 0 40px #ff2e8859;border:none;border-radius:0}.player{padding:12px}.members .slot{font-family:var(--font-arcade);color:var(--accent);font-size:11px}.status{font-family:var(--font);color:var(--accent-2)}dialog.modal{background:#120a2a}dialog.modal h3{font-family:var(--font);color:var(--gold);text-shadow:2px 2px #5a2a00;font-size:15px;font-weight:700}footer{font-family:var(--font);z-index:1;position:relative}footer .credit{font-family:var(--font-arcade);color:var(--gold);letter-spacing:.12em;margin-bottom:8px;font-size:10px;display:block}.tp-btn{border-radius:50%!important}.tp-pill{font-family:var(--font)}@media (width<=600px){.rb-sprite{opacity:.25}.rb-sprite:nth-of-type(n+6),.rb-hud{display:none}.tab{flex:1;min-width:0;padding:10px}.tab b{font-size:11px}}.admin-badge{font-family:var(--font-arcade);background:var(--gold);color:#3a2000;letter-spacing:.1em;padding:4px 6px;font-size:9px}.game-card{position:relative}.game-card .edit{color:var(--gold);background:#00000059;padding:2px 8px;font-size:16px;position:absolute;top:6px;right:6px}.game-card .edit:hover{color:#fff}.form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}textarea{font:inherit;font-family:var(--font);resize:vertical;width:100%;color:var(--text);border:2px solid var(--line);background:#07040f;padding:8px 10px}.plat-badge{vertical-align:2px;font-family:var(--font-arcade);letter-spacing:.08em;color:#fff;background:#3b2a6e;margin-right:6px;padding:2px 5px;font-size:8px;font-weight:400;display:inline-block}.plat-badge.mame{background:#1f6fb0}.plat-badge.neogeo{background:#b0105a}
