:root{--felt: #0b6b3a;--felt-dark: #064a28;--felt-light: #0f8a4c;--gold: #f4c430;--panel: #14202b;--panel-2: #1b2c3a;--text: #eaf2f5;--muted: #9fb3c0;--red: #e23b3b;--blue: #2f7fe0;--shadow: 0 8px 24px rgba(0, 0, 0, .35);--radius: 14px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,Roboto,Helvetica,Arial,sans-serif;background:radial-gradient(circle at 50% 20%,#123,#05101a 70%);color:var(--text);-webkit-font-smoothing:antialiased;overscroll-behavior:none}button{font-family:inherit;cursor:pointer;border:none;outline:none}input{font-family:inherit}.btn{background:var(--gold);color:#2a1d00;font-weight:700;border-radius:10px;padding:10px 16px;font-size:15px;transition:transform .08s ease,filter .15s ease}.btn:hover{filter:brightness(1.05)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.4)}.btn.secondary{background:var(--panel-2);color:var(--text)}.btn.danger{background:var(--red);color:#fff}.btn.ghost{background:transparent;color:var(--muted);border:1px solid #2c3e4e}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.field label{font-size:13px;color:var(--muted)}.field input{background:#0c1620;border:1px solid #2c3e4e;color:var(--text);border-radius:10px;padding:10px 12px;font-size:15px}.field input:focus{border-color:var(--gold)}.list-page{max-width:520px;margin:0 auto;padding:28px 18px 60px}.list-page h1{font-size:26px;margin:0 0 4px}.list-page .sub{color:var(--muted);margin:0 0 22px;font-size:14px}.card-panel{background:var(--panel);border:1px solid #22323f;border-radius:var(--radius);padding:18px;margin-bottom:18px;box-shadow:var(--shadow)}.card-panel h2{font-size:16px;margin:0 0 14px}.row{display:flex;gap:10px;align-items:center}.row.wrap{flex-wrap:wrap}.code-input{letter-spacing:6px;font-size:22px;text-transform:uppercase;text-align:center}.room-item{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;background:var(--panel-2);border-radius:10px;margin-bottom:10px}.room-item .meta{font-size:13px;color:var(--muted)}.room-item .name{font-weight:600;font-size:15px}.tag{display:inline-block;font-size:12px;padding:2px 8px;border-radius:999px;background:#243748;color:var(--gold);margin-left:6px}.table-page{height:100%;display:flex;flex-direction:column;max-width:1100px;margin:0 auto;position:relative}.table-header{display:flex;align-items:center;gap:14px;padding:12px 16px;background:#08121ab3;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid #1c2b38;z-index:5}.table-header .code{font-weight:800;letter-spacing:3px;color:var(--gold);font-size:18px}.table-header .street{font-size:13px;color:var(--muted)}.table-header .spacer{flex:1}.conn-dot{width:9px;height:9px;border-radius:50%;display:inline-block;margin-right:6px}.conn-open{background:#36d07a}.conn-reconnecting,.conn-connecting{background:var(--gold)}.conn-closed{background:var(--red)}.table-body{flex:1;position:relative;overflow:hidden}.felt{position:absolute;top:8%;right:6%;bottom:14%;left:6%;border-radius:48%/38%;background:radial-gradient(ellipse at 50% 38%,var(--felt-light),var(--felt) 60%,var(--felt-dark));box-shadow:inset 0 0 60px #00000073,0 12px 40px #00000080;border:6px solid #063a20}.felt:after{content:"";position:absolute;top:12%;right:16%;bottom:12%;left:16%;border:2px solid rgba(255,255,255,.12);border-radius:48%/38%}.board{position:absolute;top:38%;left:50%;transform:translate(-50%,-50%);display:flex;gap:8px;z-index:3}.board .pot{position:absolute;top:-34px;left:50%;transform:translate(-50%);background:#0006;padding:3px 12px;border-radius:999px;font-size:13px;color:var(--gold);white-space:nowrap}.seat{position:absolute;transform:translate(-50%,-50%);width:132px;z-index:4}.seat .seat-inner{background:#0a141cd1;border:2px solid #2c3e4e;border-radius:12px;padding:8px 10px;box-shadow:var(--shadow)}.seat.active-turn .seat-inner{border-color:var(--gold);box-shadow:0 0 0 3px #f4c43059,var(--shadow)}.seat .name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.seat .chips{font-size:13px;color:var(--gold);font-weight:700}.seat .bet{font-size:12px;color:#bcd;min-height:15px}.seat .status{font-size:11px;margin-top:2px}.status.active{color:#36d07a}.status.folded{color:var(--muted)}.status.allIn{color:var(--red);font-weight:700}.status.disconnected{color:#e0a32f}.status.out{color:#6b7785}.dealer-badge{position:absolute;top:-8px;right:-8px;background:var(--gold);color:#2a1d00;font-weight:800;font-size:11px;width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center}.seat-cards{display:flex;gap:3px;justify-content:center;margin-top:5px}.card{position:relative;background:#fff;border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:800;box-shadow:0 2px 6px #0006;-webkit-user-select:none;user-select:none}.card .rank{line-height:1}.card .suit{line-height:1;font-size:.8em}.card.red{color:var(--red)}.card.black{color:#1a1a1a}.card.sm{width:26px;height:36px;font-size:12px}.card.md{width:46px;height:64px;font-size:18px}.card.lg{width:92px;height:128px;font-size:38px}.card.back{background:repeating-linear-gradient(45deg,#1d4ed8,#1d4ed8 6px,#2563eb 6px,#2563eb 12px);border:2px solid #fff}.card.back:after{content:"♠";color:#ffffff80;font-size:.7em}.my-hand{position:absolute;bottom:4%;left:50%;transform:translate(-50%);display:flex;gap:10px;z-index:6}.my-hand .card{cursor:pointer}.action-bar{position:absolute;bottom:2%;left:50%;transform:translate(-50%);display:flex;gap:10px;align-items:center;z-index:7;background:#08121ab3;padding:10px 14px;border-radius:14px;border:1px solid #1c2b38}.action-bar .waiting{color:var(--muted);font-size:14px}.countdown{position:relative;width:34px;height:34px}.countdown svg{transform:rotate(-90deg)}.countdown .num{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--gold)}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:50}.modal{background:var(--panel);border:1px solid #2c3e4e;border-radius:var(--radius);padding:22px;width:min(420px,92vw);box-shadow:var(--shadow)}.modal h3{margin:0 0 14px}.slider{width:100%;margin:14px 0;accent-color:var(--gold)}.raise-val{font-size:28px;font-weight:800;color:var(--gold);text-align:center}.big-card-wrap{display:flex;gap:16px}.chat-box{position:absolute;right:10px;bottom:10px;width:250px;max-height:46%;display:flex;flex-direction:column;background:#08121ad1;border:1px solid #1c2b38;border-radius:12px;z-index:8;overflow:hidden}.chat-box .head{padding:8px 10px;font-size:13px;color:var(--muted);border-bottom:1px solid #1c2b38}.chat-box .msgs{flex:1;overflow-y:auto;padding:8px 10px;display:flex;flex-direction:column;gap:6px}.chat-box .msg .who{font-size:11px;color:var(--gold)}.chat-box .msg .txt{font-size:13px;word-break:break-word}.chat-box .compose{display:flex;border-top:1px solid #1c2b38}.chat-box .compose input{flex:1;background:#0c1620;border:none;color:var(--text);padding:8px 10px;font-size:13px}.chat-box .compose button{background:var(--gold);color:#2a1d00;padding:0 14px;font-weight:700}.float-delta{position:absolute;left:50%;top:-6px;transform:translate(-50%);font-size:12px;font-weight:700;pointer-events:none}.float-delta.plus{color:#36d07a}.float-delta.minus{color:var(--red)}.toast{position:fixed;top:16px;left:50%;transform:translate(-50%);background:var(--red);color:#fff;padding:10px 16px;border-radius:10px;font-size:14px;z-index:60;box-shadow:var(--shadow)}.lobby{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:9}.lobby .players{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;max-width:80%}.lobby .pc{background:#0a141cd9;border:1px solid #2c3e4e;border-radius:10px;padding:10px 14px;font-size:14px}.lobby .hint{color:var(--muted);font-size:13px}.share-code{font-size:30px;letter-spacing:8px;font-weight:800;color:var(--gold)}
