*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0d0d1a;--surface: #16162a;--surface-2: #1c1c32;--border: #2a2a45;--accent: #7c3aed;--accent-h: #6d28d9;--accent-2: #06b6d4;--text: #e2e8f0;--muted: #94a3b8;--err: #ef4444;--ok: #22c55e;--radius: 10px;--font: "Segoe UI", system-ui, -apple-system, sans-serif}html,body,#app{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.5}.home{max-width:860px;margin:0 auto;padding:2rem 1rem 4rem}.home-header{text-align:center;padding:3.5rem 0 2.5rem}.logo{font-size:clamp(1.8rem,6vw,3rem);font-weight:800;letter-spacing:-1px}.logo span{color:var(--accent)}.tagline{color:var(--muted);margin-top:.5rem;font-size:1.05rem}.home-main{display:grid;grid-template-columns:1fr auto 1fr;gap:1.5rem;align-items:start}@media (max-width: 640px){.home-header{padding:2rem 0 1.5rem}.home-main{grid-template-columns:1fr}.divider{padding:.25rem 0;text-align:center}.card{padding:1.25rem}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.75rem}.card h2{font-size:1.15rem;font-weight:700;margin-bottom:.35rem}.card>p{color:var(--muted);font-size:.88rem;margin-bottom:1.25rem}.divider{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:.85rem;align-self:center;padding:0 .5rem}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.75rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.35rem}input[type=text]{width:100%;padding:.6rem .75rem;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;color:var(--text);font-family:inherit;font-size:.95rem;outline:none;transition:border-color .15s}input[type=text]:focus{border-color:var(--accent)}.code-input{font-family:Courier New,monospace;letter-spacing:.2em;text-transform:uppercase;font-size:1.05rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.6rem 1.2rem;border:none;border-radius:6px;font-family:inherit;font-size:.95rem;font-weight:600;cursor:pointer;width:100%;transition:background .15s,opacity .15s}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-h)}.btn-secondary{background:var(--surface-2);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){background:var(--border)}.btn-sm{padding:.45rem .9rem;font-size:.88rem;width:auto}.form-error{color:var(--err);font-size:.83rem;margin-top:.5rem}.lobby{display:flex;flex-direction:column;height:100vh;height:100dvh}.lobby-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 1.25rem;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}.back-btn{background:none;border:none;color:var(--muted);font-family:inherit;font-size:.88rem;font-weight:500;cursor:pointer;padding:.25rem 0;flex-shrink:0}.back-btn:hover{color:var(--text)}.lobby-code-wrap{display:flex;align-items:center;gap:.5rem;font-size:.82rem;color:var(--muted)}.lobby-code-label{flex-shrink:0}.code-badge{background:var(--surface-2);border:1px solid var(--border);border-radius:6px;color:var(--text);font-family:Courier New,monospace;font-size:1rem;font-weight:700;letter-spacing:.15em;padding:.2rem .55rem;cursor:pointer;transition:background .15s}.code-badge:hover{background:var(--border)}.conn-status{font-size:.78rem;color:var(--muted);flex-shrink:0}.conn-status.ok{color:var(--ok)}.conn-status.err{color:var(--err)}.lobby-body{display:flex;flex:1;overflow:hidden}.panel-toggle{display:none;align-items:center;gap:.35rem;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;color:var(--text);font-family:inherit;font-size:.82rem;font-weight:600;padding:.35rem .65rem;cursor:pointer;flex-shrink:0;min-height:44px}.panel-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:99}.player-panel{width:210px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);overflow-y:auto;display:flex;flex-direction:column}.panel-section{padding:1rem 1rem .75rem;border-bottom:1px solid var(--border)}.panel-section:last-child{border-bottom:none;flex:1}.panel-heading{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:.6rem}.player-list{list-style:none;display:flex;flex-direction:column;gap:2px}.player-item{display:flex;align-items:center;gap:.35rem;padding:.35rem .4rem;border-radius:5px;font-size:.88rem}.player-item.you{background:color-mix(in srgb,var(--accent) 12%,transparent)}.crown{font-size:.72rem;color:#fbbf24;visibility:hidden;flex-shrink:0;line-height:1}.crown.show{visibility:visible}.player-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.you-tag{color:var(--muted);font-size:.8em}.kick-btn{background:none;border:none;color:var(--muted);cursor:pointer;font-size:.78rem;padding:.1rem .3rem;border-radius:4px;flex-shrink:0;line-height:1;opacity:0;transition:opacity .1s,background .1s,color .1s}.player-item:hover .kick-btn{opacity:1}.kick-btn:hover{background:var(--err);color:#fff}.muted-note{font-size:.82rem;color:var(--muted);font-style:italic}@media (max-width: 640px){.lobby-header{padding:.6rem .9rem;gap:.5rem}.panel-toggle{display:flex}.conn-status{display:none}.player-panel{position:fixed;top:0;left:0;bottom:0;z-index:100;width:min(80vw,280px);transform:translate(-100%);transition:transform .22s ease;border-right:1px solid var(--border)}.player-panel.open{transform:translate(0)}.panel-overlay.open{display:block}.lobby-body{flex-direction:column;overflow:hidden}.game-area{flex:1;min-height:0;overflow-y:auto}.chat-side{width:100%;height:200px;flex-shrink:0;border-left:none;border-top:2px solid var(--border)}.game-selection{padding:1rem}.game-card{padding:1rem;min-width:0;width:100%}}@media (min-width: 641px) and (max-width: 900px){.player-panel{width:170px}.chat-side{width:200px}}.game-area{flex:1;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;min-width:0;min-height:0;background:var(--bg)}.lobby.game-active .player-panel{display:none}.game-selection{padding:2rem;display:flex;flex-direction:column;align-items:center;gap:1.5rem}.game-cards-center{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center}.game-card{background:var(--surface);border:2px solid var(--border);border-radius:var(--radius);padding:1.5rem 2rem;cursor:pointer;transition:border-color .15s,background .15s;text-align:center;min-width:200px}.game-card:hover{background:var(--surface-2)}.game-card.selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--surface))}.game-card-icon{font-size:2.5rem;margin-bottom:.5rem}.game-card-title{font-size:1.1rem;font-weight:700;margin-bottom:.3rem}.game-card-desc{font-size:.85rem;color:var(--muted)}.game-card-sm{background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:.55rem .75rem;cursor:pointer;font-size:.85rem;transition:border-color .15s,background .15s}.game-card-sm:hover{background:var(--border)}.game-card-sm.selected{border-color:var(--accent);color:var(--accent)}.start-btn{max-width:240px}.chat-side{flex-shrink:0;display:flex;flex-direction:column;overflow:hidden;border-left:1px solid var(--border)}@media (min-width: 901px){.chat-side{width:260px}}.chat-panel{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.chat-messages{flex:1;overflow-y:auto;padding:1rem 1.25rem;display:flex;flex-direction:column;gap:.35rem}.chat-msg{display:flex;gap:.45rem;font-size:.9rem;line-height:1.4}.chat-author{font-weight:600;color:var(--accent-2);flex-shrink:0}.chat-author:after{content:":"}.chat-text{word-break:break-word}.chat-system{font-size:.78rem;color:var(--muted);font-style:italic;text-align:center;padding:.15rem 0}.chat-form{display:flex;gap:.5rem;padding:.75rem 1.25rem;border-top:1px solid var(--border);background:var(--surface);flex-shrink:0}.chat-form input{flex:1}.screen-center{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;min-height:100vh;min-height:100dvh;text-align:center;padding:2rem}.screen-center h2{font-size:1.4rem}.screen-center .btn{width:auto;padding:.7rem 2rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.poker-root{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden;background:#0a1a0a;color:#e8f5e9;font-family:var(--font)}.poker-table-section{flex:1;min-height:0;position:relative}.poker-table-wrap{position:absolute;top:0;right:0;bottom:0;left:0;overflow:visible}.poker-table{position:absolute;top:8%;right:5%;bottom:8%;left:5%;background:radial-gradient(ellipse at center,#1b5e20 60%,#0d3b0d);border-radius:50%;border:14px solid #3e2723;box-shadow:0 0 0 4px #5d3a1a,0 0 50px #000000b3,inset 0 0 30px #00000059;display:flex;align-items:center;justify-content:center}.poker-center-info{display:flex;flex-direction:column;align-items:center;gap:.4rem;z-index:1}.poker-community{display:flex;gap:4px;align-items:center}.poker-pot{font-size:.95rem;font-weight:700;color:#fff9c4;text-shadow:0 1px 3px rgba(0,0,0,.7)}.poker-phase{font-size:.75rem;color:#a5d6a7;text-transform:uppercase;letter-spacing:.08em}.seat-anchor{position:absolute;transform:translate(-50%,-50%);z-index:10}.seat-cards-anchor{display:flex;gap:3px}.seat-info{display:flex;flex-direction:column;align-items:center;gap:2px;padding:.3rem .5rem;background:#000000b3;border:1px solid rgba(255,255,255,.15);border-radius:6px;min-width:70px;text-align:center}.seat-info.seat-me{border-color:#7c3aed}.seat-info.seat-to-act{border-color:#fbbf24;box-shadow:0 0 8px #fbbf2480}.seat-info.seat-folded{opacity:.45}.seat-name{font-size:.72rem;font-weight:600;color:#e8f5e9;white-space:nowrap;max-width:90px;overflow:hidden;text-overflow:ellipsis}.seat-chips{font-size:.65rem;color:#a5d6a7}.seat-badges{display:flex;gap:3px;flex-wrap:wrap;justify-content:center}.dealer-btn{background:#fff;color:#000;font-size:.55rem;font-weight:900;border-radius:50%;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.badge{font-size:.55rem;padding:1px 4px;border-radius:3px;font-weight:700}.badge-sb{background:#1565c0;color:#fff}.badge-bb{background:#6a1b9a;color:#fff}.badge-bet{background:#e65100;color:#fff}.playing-card{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;width:34px;height:48px;background:#fff;border:1px solid #ccc;border-radius:4px;font-size:.7rem;font-weight:800;line-height:1;flex-shrink:0;position:relative;box-shadow:0 1px 4px #0006}.playing-card .suit{font-size:.65rem}.playing-card.red{color:#c62828}.playing-card.black{color:#1a1a1a}.playing-card.back{background:repeating-linear-gradient(45deg,#1565c0,#1565c0 3px,#0d47a1 3px,#0d47a1 6px);border-color:#0d47a1;color:transparent}.playing-card.empty{background:transparent;border:2px dashed rgba(255,255,255,.2);box-shadow:none}.card-me{width:46px;height:66px;font-size:.9rem}.card-me .suit{font-size:.8rem}.card-community{width:54px;height:76px;font-size:1rem}.card-community .suit{font-size:.9rem}.my-player-bar{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:.4rem 1rem;flex-shrink:0;background:#0a1a0a}.my-seat-info{display:flex;flex-direction:column;align-items:center;gap:2px;padding:.35rem .75rem;background:#000000b3;border:1px solid #7c3aed;border-radius:6px;text-align:center}.my-player-bar.my-turn .my-seat-info{border-color:#fbbf24;box-shadow:0 0 8px #fbbf2473}.my-player-name{font-weight:700;font-size:.82rem;color:#e8f5e9;white-space:nowrap}.my-hand-name{font-weight:400;color:#ffd54f;font-size:.75rem}.my-player-chips{font-size:.72rem;color:#a5d6a7;font-weight:600}.my-player-badges{display:flex;gap:3px;align-items:center;justify-content:center;flex-wrap:wrap}.poker-wait-inline{font-size:.78rem;color:#a5d6a7;font-style:italic}.my-hole-cards{position:absolute;bottom:5%;left:50%;transform:translate(-50%);display:flex;gap:6px;z-index:10}.my-hole-cards.seat-folded{opacity:.35}.poker-action-bar{background:#0d160d;border-top:1px solid #1b5e20;padding:.6rem 1rem;display:flex;flex-direction:column;gap:.45rem;flex-shrink:0}.poker-buttons{display:flex;gap:.5rem;align-items:center;justify-content:center;flex-wrap:wrap}.poker-btn{padding:.5rem 1.2rem;border:none;border-radius:6px;font-family:inherit;font-size:.88rem;font-weight:700;cursor:pointer;transition:background .15s,opacity .15s;min-height:44px;flex-shrink:0}.poker-btn:disabled{opacity:.4;cursor:not-allowed}.poker-btn.fold{background:#b71c1c;color:#fff}.poker-btn.fold:hover:not(:disabled){background:#d32f2f}.poker-btn.check-btn{background:#1b5e20;color:#fff}.poker-btn.check-btn:hover:not(:disabled){background:#2e7d32}.poker-btn.call-btn{background:#0d47a1;color:#fff}.poker-btn.call-btn:hover:not(:disabled){background:#1565c0}.poker-btn.raise-btn{background:#e65100;color:#fff}.poker-btn.raise-btn:hover:not(:disabled){background:#f4511e}.poker-btn.deal{background:#6a1b9a;color:#fff}.poker-btn.deal:hover:not(:disabled){background:#7b1fa2}.poker-raise-group{display:flex;gap:.5rem;align-items:center;min-width:0}.poker-raise-group input[type=range]{flex:1;min-width:80px;accent-color:#e65100}@media (min-width: 641px){.poker-raise-group input[type=range]{max-width:180px}}.poker-raise-group input[type=number]{width:72px;background:#1b2e1b;border:1px solid #2e7d32;color:#e8f5e9;border-radius:4px;padding:.3rem .4rem;font-size:.85rem;font-family:inherit;flex-shrink:0}.poker-finished{background:#111c11;border-top:1px solid #1b5e20;padding:1.5rem;display:flex;flex-direction:column;align-items:center;gap:1rem;flex-shrink:0}.poker-finished h2{font-size:1.4rem;color:#ffd54f}.poker-results{display:flex;flex-direction:column;gap:.4rem;width:100%;max-width:360px}.poker-result-row{display:flex;gap:.75rem;align-items:center;padding:.4rem .75rem;background:#ffffff0d;border-radius:6px;font-size:.9rem}.poker-result-row.result-me{background:color-mix(in srgb,#7c3aed 20%,transparent)}.result-rank{color:#a5d6a7;font-weight:700;min-width:28px}.result-name{flex:1;font-weight:600}.result-chips{color:#ffd54f;font-weight:700}@media (max-width: 640px){.playing-card{width:26px;height:37px;font-size:.6rem}.card-me{width:40px;height:58px;font-size:.8rem}.card-community{width:32px;height:46px;font-size:.7rem}.seat-info{min-width:52px;padding:.2rem .3rem}.seat-name{font-size:.58rem;max-width:70px}.seat-chips{font-size:.52rem}.my-player-bar{padding:.4rem .75rem;min-height:44px}.poker-action-bar{padding:.5rem .75rem}.poker-buttons{gap:.3rem}.poker-btn{padding:.4rem .6rem;font-size:.8rem;min-height:44px;flex:1}.poker-raise-group{width:100%;flex:none}.poker-raise-group .poker-btn{flex:0 0 auto}}
