:root{--bg: #120f24;--bg2: #1d1838;--panel: rgba(255, 255, 255, .06);--line: rgba(255, 255, 255, .12);--text: #f4f0ff;--muted: #a39cc7;--focus: #ffd23f;--p0: #ff6b6b;--p1: #2ec4b6;--p2: #ffd23f;--p3: #9b5de5}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:Fredoka,Trebuchet MS,system-ui,sans-serif;cursor:none;user-select:none}#stage{position:absolute;left:50%;top:50%;width:1920px;height:1080px;transform-origin:center;background:radial-gradient(1200px 700px at 20% 0%,#2c2160 0%,transparent 70%),radial-gradient(900px 600px at 100% 100%,#0f3a4a 0%,transparent 70%),var(--bg)}#lobby{position:absolute;inset:0;padding:56px 80px;display:flex;flex-direction:column;gap:40px}#lobby[hidden]{display:none}header{display:flex;justify-content:space-between;align-items:center}.logo{font-size:56px;font-weight:700;letter-spacing:1px}.logo-mark{color:var(--focus)}.status{display:flex;align-items:center;gap:16px;font-size:36px;color:var(--muted)}.dot{width:18px;height:18px;border-radius:50%;background:#e04f5f;transition:background .3s}.dot.on{background:#3ddc84}main{flex:1;display:grid;grid-template-columns:1fr 440px;gap:56px;min-height:0}h2{margin:0 0 24px;font-size:34px;font-weight:600;color:var(--muted)}.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:36px}.tile{position:relative;border-radius:28px;overflow:hidden;background:var(--bg2);border:4px solid transparent;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}.tile canvas{display:block;width:100%;height:260px;image-rendering:pixelated}.tile .meta{padding:20px 26px 26px}.tile .title{font-size:38px;font-weight:700}.tile .tagline{font-size:24px;color:var(--muted);margin-top:6px}.tile .badge{position:absolute;top:16px;right:16px;padding:6px 16px;border-radius:999px;background:#0000008c;font-size:22px;font-weight:600}.tile.soon{opacity:.45}.tile.focus{transform:scale(1.05);border-color:var(--focus);box-shadow:0 0 0 8px #ffd23f2e,0 24px 60px #00000080}.join{background:var(--panel);border:2px solid var(--line);border-radius:32px;padding:36px;display:flex;flex-direction:column;align-items:center;text-align:center}.join h2{color:var(--text)}.qr-wrap{background:#fff;padding:18px;border-radius:20px}.qr-wrap canvas{display:block;width:260px;height:260px}.join-url{margin-top:22px;font-size:26px;color:var(--muted);word-break:break-all}.code-label{margin-top:26px;font-size:22px;color:var(--muted);text-transform:uppercase;letter-spacing:3px}.code{font-size:92px;font-weight:700;letter-spacing:14px;color:var(--focus);line-height:1.1}.hint{margin-top:auto;font-size:26px;color:var(--muted)}kbd{display:inline-block;min-width:44px;padding:2px 10px;border-radius:50%;background:#3ddc84;color:#0b2b18;font-family:inherit;font-weight:700}.slots{display:grid;grid-template-columns:repeat(4,1fr);gap:28px}.slot{height:120px;border-radius:24px;border:3px dashed var(--line);display:flex;align-items:center;gap:22px;padding:0 28px;font-size:30px;color:var(--muted);transition:all .2s ease}.slot .avatar{width:64px;height:64px;border-radius:50%;background:var(--line);flex:none;position:relative}.slot .avatar:after{content:"";position:absolute;left:18px;top:22px;width:8px;height:14px;border-radius:4px;background:#1a1430;box-shadow:20px 0 #1a1430;opacity:0}.slot.filled{border-style:solid;color:var(--text);background:var(--panel)}.slot.filled .avatar:after{opacity:1}.slot .name{font-weight:600}.slot .dev{font-size:20px;color:var(--muted)}.slot.away{opacity:.5}#game{position:absolute;inset:0;width:100%;height:100%;image-rendering:pixelated;background:#000}#toast{position:absolute;left:50%;bottom:60px;transform:translate(-50%,40px);padding:20px 40px;border-radius:999px;background:#0a0818d9;font-size:32px;opacity:0;transition:all .25s ease;pointer-events:none;border:2px solid var(--line)}#toast.show{opacity:1;transform:translate(-50%)}
