@zhuweiyou/dsh-holdem 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js CHANGED
@@ -170,6 +170,7 @@ const ZH = {
170
170
  "table.potBet": "一池",
171
171
  "table.min": "最小",
172
172
  "table.max": "最大",
173
+ "table.noRaise": "本轮不能加注",
173
174
  "table.timer": "{s} 秒",
174
175
  "table.spectatorHint": "观战模式:看不到任何未亮出的底牌,有人离座后可以补位。",
175
176
  "table.noSeat": "你还没有入座",
@@ -331,6 +332,7 @@ const EN = {
331
332
  "table.potBet": "Pot",
332
333
  "table.min": "Min",
333
334
  "table.max": "Max",
335
+ "table.noRaise": "No raise this round",
334
336
  "table.timer": "{s}s",
335
337
  "table.spectatorHint": "Spectating: hole cards stay hidden. You can take a freed seat.",
336
338
  "table.noSeat": "You are not seated",
@@ -690,6 +692,13 @@ function clearToast() {
690
692
  set({ toast: null });
691
693
  }
692
694
  const BASE_KEY = "holdem:api-base";
695
+ /**
696
+ * 实时通道地址。
697
+ *
698
+ * 故意不带子协议:Cloudflare Worker 的 Durable Object 没法在 101 响应里回
699
+ * `Sec-WebSocket-Protocol`,浏览器只要请求了子协议,握手就会以 1006 失败,
700
+ * 于是玩家明明能操作(HTTP 正常)却一直显示「离线」。服务端两种都收。
701
+ */
693
702
  function wsUrl(ticket) {
694
703
  const base = getApiBase();
695
704
  const url = base === "" ? new URL(location.href) : new URL(base);
@@ -751,7 +760,7 @@ function connectChannel(roomId, ticket) {
751
760
  set({ connection: "connecting" });
752
761
  let ws;
753
762
  try {
754
- ws = new WebSocket(wsUrl(ticket), "holdem.v1");
763
+ ws = new WebSocket(wsUrl(ticket));
755
764
  } catch {
756
765
  set({ connection: "polling" });
757
766
  startPolling(roomId);
@@ -1079,7 +1088,7 @@ function downloadJson(filename, value) {
1079
1088
 
1080
1089
  //#endregion
1081
1090
  //#region \0dsh-css:/Users/yiyi/work/dsh-holdem/src/client/styles.module.css.mjs
1082
- const css = ".XdMBba_panel{background:var(--dsw-alias-bg-base,#101418);height:100%;min-height:0;color:var(--dsw-alias-label-primary,#e9ecf2);flex-direction:column;font-size:13px;line-height:1.5;display:flex;position:relative;overflow:hidden}.XdMBba_panel *,.XdMBba_panel :before,.XdMBba_panel :after{box-sizing:border-box}.XdMBba_btn{border:1px solid var(--dsw-alias-border-l1,#7f7f7f47);background:var(--dsw-alias-bg-layer-2,#7f7f7f1a);color:var(--dsw-alias-label-primary,#111);font:inherit;cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:7px 12px;font-size:12.5px;transition:background .12s,border-color .12s,opacity .12s;display:inline-flex}.XdMBba_btn:hover:not(:disabled){border-color:var(--dsw-alias-border-l2,#7f7f7f73);background:var(--dsw-alias-bg-layer-1,#7f7f7f29)}.XdMBba_btn:disabled{opacity:.45;cursor:default}.XdMBba_btn:focus-visible{outline:2px solid var(--dsw-alias-brand-primary,#2f9c76);outline-offset:1px}.XdMBba_btnPrimary{background:var(--dsw-alias-brand-primary,#2f9c76);color:var(--dsw-alias-bg-base,#06130f);border-color:#0000;font-weight:700}.XdMBba_btn.XdMBba_btnPrimary:hover:not(:disabled){background:var(--dsw-alias-brand-primary,#2f9c76);color:var(--dsw-alias-bg-base,#06130f);filter:brightness(1.08);border-color:#0000}.XdMBba_btnOutline{border-color:var(--dsw-alias-border-l2,#7f7f7f80);background:0 0}.XdMBba_btnGhost{color:var(--dsw-alias-label-secondary,#93a0b1);background:0 0;border-color:#0000}.XdMBba_btn.XdMBba_btnGhost:hover:not(:disabled){background:var(--dsw-alias-bg-layer-2,#7f7f7f1a);color:var(--dsw-alias-label-primary,#e9ecf2);border-color:#0000}.XdMBba_btnDanger{border-color:var(--dsw-alias-state-error-primary,#e06c75);color:var(--dsw-alias-state-error-primary,#e06c75);background:0 0}.XdMBba_btn.XdMBba_btnDanger:hover:not(:disabled){border-color:var(--dsw-alias-state-error-primary,#e06c75);background:color-mix(in srgb, var(--dsw-alias-state-error-primary,#e06c75) 10%, transparent);color:var(--dsw-alias-state-error-primary,#e06c75)}.XdMBba_btnChip{background:var(--dsw-alias-bg-layer-2,#7f7f7f1a);color:var(--dsw-alias-label-secondary,#93a0b1);border-radius:999px;padding:4px 9px;font-size:11.5px}.XdMBba_btnWide{width:100%}.XdMBba_netUp{color:var(--dsw-alias-state-success-primary,#4cc38a)}.XdMBba_netDown{color:var(--dsw-alias-state-error-primary,#e06c75)}.XdMBba_netFlat{color:var(--dsw-alias-label-secondary,#93a0b1)}.XdMBba_cfPanel{border:1px solid var(--dsw-alias-border-l1,#7f7f7f47);background:var(--dsw-alias-bg-layer-2,#7f7f7f14);border-radius:10px;flex-direction:column;gap:8px;padding:10px;display:flex}.XdMBba_cfRow{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.XdMBba_grow{flex:1}.XdMBba_cfBadge{border:1px solid var(--dsw-alias-border-l2,#7f7f7f73);color:var(--dsw-alias-label-secondary,#93a0b1);border-radius:999px;padding:2px 9px;font-size:11.5px}.XdMBba_cfBadgeOn{border-color:var(--dsw-alias-state-success-primary,#1f9d63);color:var(--dsw-alias-state-success-primary,#1f9d63)}.XdMBba_cfBadgeWait{border-color:var(--dsw-alias-state-warn-primary,#b7791f);color:var(--dsw-alias-state-warn-primary,#b7791f)}.XdMBba_cfWaiting{color:var(--dsw-alias-state-warn-primary,#b7791f);font-size:11.5px}.XdMBba_cfLabel{color:var(--dsw-alias-label-secondary,#93a0b1);flex:none;font-size:11.5px}.XdMBba_cfAuthBox{border:1px dashed var(--dsw-alias-brand-primary,#2f9c76);border-radius:8px;flex-direction:column;gap:6px;padding:8px;display:flex}.XdMBba_cfAuthHint{color:var(--dsw-alias-label-secondary,#93a0b1);margin:0;font-size:11.5px}.XdMBba_cfError{color:var(--dsw-alias-state-error-primary,#d64545);margin:0;font-size:11.5px}.XdMBba_cfLog{background:var(--dsw-alias-bg-base,#fff);max-height:96px;color:var(--dsw-alias-label-secondary,#666);white-space:pre-wrap;border-radius:8px;margin:0;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10.5px;overflow:auto}.XdMBba_hostRow{flex-wrap:wrap;gap:6px;display:flex}.XdMBba_hostActive{border-color:var(--dsw-alias-brand-primary,#2f9c76);background:var(--dsw-alias-brand-primary,#2f9c76);color:var(--dsw-alias-bg-base,#fff);font-weight:700}.XdMBba_hintLink{color:var(--dsw-alias-brand-primary,#141414);text-underline-offset:2px;text-decoration:underline}.XdMBba_buildTag{text-align:center;color:var(--dsw-alias-label-secondary,#93a0b1);opacity:.75;margin:10px 0 0;font-size:10.5px}.XdMBba_hint{color:var(--dsw-alias-label-secondary,#93a0b1);margin:4px 0 0;font-size:11.5px}.XdMBba_railEmpty{color:var(--dsw-alias-label-secondary,#93a0b1);margin:4px 0;font-size:11.5px}.XdMBba_loading{text-align:center;color:var(--dsw-alias-label-secondary,#93a0b1);margin:auto}.XdMBba_loadingMark{border:3px solid var(--dsw-alias-border-l1,#7f7f7f47);border-top-color:var(--dsw-alias-brand-primary,#2f9c76);border-radius:50%;width:34px;height:34px;margin:0 auto 10px;animation:.9s linear infinite XdMBba_spin}@keyframes XdMBba_spin{to{transform:rotate(360deg)}}.XdMBba_toast{border:1px solid var(--dsw-alias-border-l2,#7f7f7f73);background:var(--dsw-alias-bg-overlay,#1b1b1c);max-width:min(420px,100% - 32px);color:var(--dsw-alias-label-primary,#e9ecf2);font:inherit;cursor:pointer;z-index:20;border-radius:999px;padding:9px 16px;font-size:12.5px;animation:.18s XdMBba_toastIn;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 10px 28px #00000059}.XdMBba_toastError{border-color:var(--dsw-alias-state-error-primary,#e06c75);color:var(--dsw-alias-state-error-primary,#e06c75)}@keyframes XdMBba_toastIn{0%{opacity:0;transform:translate(-50%,6px)}}.XdMBba_lobby{width:min(480px,100% - 32px);max-height:100%;margin:auto;padding:28px 4px;overflow-y:auto}.XdMBba_lobbyHead{text-align:center;margin-bottom:18px}.XdMBba_lobbyTitle{letter-spacing:.02em;margin:0;font-size:22px}.XdMBba_lobbySubtitle{color:var(--dsw-alias-label-secondary,#93a0b1);margin:4px 0 0;font-size:12px}.XdMBba_notice,.XdMBba_noticeError,.XdMBba_inviteBanner{border:1px solid var(--dsw-alias-border-l1,#7f7f7f47);background:var(--dsw-alias-bg-layer-2,#7f7f7f14);border-radius:10px;margin:0 0 12px;padding:9px 12px;font-size:12.5px}.XdMBba_noticeError{border-color:var(--dsw-alias-state-error-primary,#e06c75);color:var(--dsw-alias-state-error-primary,#e06c75)}.XdMBba_inviteBanner{border-color:var(--dsw-alias-brand-primary,#2f9c76);color:var(--dsw-alias-brand-primary,#2f9c76)}.XdMBba_tabs{background:var(--dsw-alias-bg-layer-2,#7f7f7f1a);border-radius:10px;gap:6px;margin-bottom:16px;padding:4px;display:flex}.XdMBba_tab{color:var(--dsw-alias-label-secondary,#93a0b1);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:7px;flex:1;padding:8px 0}.XdMBba_tabActive{background:var(--dsw-alias-bg-layer-1,#232324);color:var(--dsw-alias-label-primary,#e9ecf2);box-shadow:0 1px 4px #0003}.XdMBba_lobbyBody{flex-direction:column;gap:12px;display:flex}.XdMBba_field{flex-direction:column;gap:5px;display:flex}.XdMBba_fieldLabel{color:var(--dsw-alias-label-secondary,#93a0b1);font-size:11.5px}.XdMBba_input{border:1px solid var(--dsw-alias-border-l2,#7f7f7f80);background:var(--dsw-alias-bg-base,#1b1b1c);width:100%;color:var(--dsw-alias-label-primary,#e9ecf2);font:inherit;border-radius:9px;padding:9px 11px}.XdMBba_input::placeholder{color:var(--dsw-alias-label-secondary,#93a0b1);opacity:1}.XdMBba_input:hover:not(:disabled){border-color:var(--dsw-alias-brand-primary,#2f9c76)}.XdMBba_input:focus{border-color:var(--dsw-alias-brand-primary,#2f9c76);box-shadow:0 0 0 2px color-mix(in srgb, var(--dsw-alias-brand-primary,#2f9c76) 28%, transparent);outline:none}.XdMBba_inputCode{letter-spacing:6px;text-align:center;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:20px}.XdMBba_previewCard{border:1px solid var(--dsw-alias-border-l1,#7f7f7f47);background:var(--dsw-alias-bg-layer-1,#1b1b1c);border-radius:12px;flex-direction:column;gap:10px;padding:14px;display:flex}.XdMBba_previewHead{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.XdMBba_previewMeta{color:var(--dsw-alias-label-secondary,#93a0b1);font-size:11.5px}.XdMBba_previewSeats{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.XdMBba_previewSeat{border:1px dashed var(--dsw-alias-border-l1,#7f7f7f47);text-align:center;color:var(--dsw-alias-label-secondary,#93a0b1);text-overflow:ellipsis;white-space:nowrap;border-radius:7px;padding:6px;font-size:11.5px;overflow:hidden}.XdMBba_previewSeatFilled{color:var(--dsw-alias-label-primary,#e9ecf2);background:var(--dsw-alias-bg-layer-2,#7f7f7f1a);border-style:solid}.XdMBba_previewActions{gap:8px;display:flex}.XdMBba_previewActions>*{flex:1}.XdMBba_table{flex-direction:column;height:100%;min-height:0;display:flex}.XdMBba_header{border-bottom:1px solid var(--dsw-alias-border-l1,#7f7f7f33);flex:none;justify-content:space-between;align-items:flex-start;gap:12px;padding:10px 16px;display:flex}.XdMBba_headerMain{min-width:0}.XdMBba_titleRow{align-items:center;gap:8px;min-width:0;display:flex}.XdMBba_roomTitle{white-space:nowrap;text-overflow:ellipsis;max-width:260px;margin:0;font-size:15px;font-weight:700;overflow:hidden}.XdMBba_codeChip{border:1px solid var(--dsw-alias-border-l1,#7f7f7f47);color:var(--dsw-alias-label-secondary,#93a0b1);font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border-radius:999px;align-items:center;gap:6px;padding:2px 9px;font-size:11px;display:inline-flex}.XdMBba_codeChip:hover{color:var(--dsw-alias-label-primary,#e9ecf2);border-color:var(--dsw-alias-border-l2,#7f7f7f80)}.XdMBba_copiedTag{color:var(--dsw-alias-state-success-primary,#4cc38a)}.XdMBba_phasePill{color:var(--dsw-alias-label-secondary,#93a0b1);border:1px solid;border-radius:999px;padding:1px 8px;font-size:10.5px}.XdMBba_phasePillHand{color:var(--dsw-alias-brand-primary,#2f9c76)}.XdMBba_phasePillLobby{color:var(--dsw-alias-label-secondary,#93a0b1)}.XdMBba_metaRow{color:var(--dsw-alias-label-secondary,#93a0b1);flex-wrap:wrap;align-items:center;gap:10px;margin-top:4px;font-size:11.5px;display:flex}.XdMBba_conn{font-size:10px}.XdMBba_connLive{color:var(--dsw-alias-state-success-primary,#4cc38a)}.XdMBba_connPolling{color:var(--dsw-alias-state-warn-primary,#c58a00)}.XdMBba_connOffline{color:var(--dsw-alias-state-error-primary,#e06c75)}.XdMBba_spectatorCount{white-space:nowrap}.XdMBba_headerActions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:6px;display:flex}.XdMBba_tableBody{flex:1;min-height:0;display:flex}.XdMBba_feltArea{flex-direction:column;flex:1;gap:8px;min-width:0;min-height:0;padding:10px 12px 12px;display:flex}.XdMBba_felt{--felt-ink:#fffffff0;--felt-ink-dim:#ffffffad;--felt-line:#ffffff4d;background:radial-gradient(at 50% 38%,#ffffff1f,#0000 58%),radial-gradient(at 50% 120%,#00000080,#0000 62%),linear-gradient(165deg,#1f6a4f 0%,#17553f 55%,#123f30 100%);border:1px solid #00000052;border-radius:26px;flex:1;min-height:300px;position:relative;overflow:hidden;box-shadow:inset 0 0 70px #0000006b,0 10px 26px #00000029}.XdMBba_seatsLayer{position:absolute;inset:0}.XdMBba_center{text-align:center;pointer-events:none;flex-direction:column;align-items:center;gap:6px;width:min(430px,70%);display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.XdMBba_center>*{pointer-events:auto}.XdMBba_streetLabel{letter-spacing:.18em;text-transform:uppercase;color:var(--felt-ink-dim,#93a0b1);font-size:10.5px}.XdMBba_boardRow{flex-wrap:nowrap;justify-content:center;align-items:center;gap:6px;display:flex}.XdMBba_potRow{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;display:flex}.XdMBba_potChips{background:radial-gradient(circle at 35% 30%,#f0d27a,#a67c1f 70%);border-radius:50%;width:14px;height:14px;box-shadow:0 0 0 2px #00000040}.XdMBba_potAmount{color:var(--felt-ink,#e9ecf2);text-shadow:0 1px 2px #00000059;font-size:13px;font-weight:700}.XdMBba_sidePots{flex-wrap:wrap;gap:6px;display:flex}.XdMBba_sidePot{color:var(--felt-ink-dim,#93a0b1);border:1px solid var(--felt-line,#7f7f7f47);border-radius:999px;padding:1px 7px;font-size:10.5px}.XdMBba_lobbyCenter{background:var(--dsw-alias-bg-overlay,#1b1b1c);border:1px solid var(--dsw-alias-border-l2,#7f7f7f73);border-radius:14px;flex-direction:column;align-items:center;gap:8px;padding:12px 16px;display:flex;box-shadow:0 12px 30px #00000047}.XdMBba_centerTitle{font-size:14px;font-weight:700}.XdMBba_centerHint{color:var(--dsw-alias-label-secondary,#93a0b1);min-height:16px;font-size:11.5px}.XdMBba_centerActions{gap:8px;display:flex}.XdMBba_handOverBanner{background:var(--dsw-alias-bg-overlay,#1b1b1c);border:1px solid var(--dsw-alias-border-l2,#7f7f7f73);white-space:nowrap;border-radius:12px;flex-direction:column;gap:4px;padding:9px 14px;display:flex;position:absolute;top:-8px;left:50%;transform:translate(-50%,-100%);box-shadow:0 12px 30px #00000059}.XdMBba_bannerTitle{font-size:13px;font-weight:700}.XdMBba_bannerDeltas{flex-wrap:wrap;justify-content:center;gap:10px;font-size:11.5px;display:flex}.XdMBba_bannerNext{color:var(--dsw-alias-label-secondary,#93a0b1);text-align:center;font-size:10.5px}.XdMBba_seat{border:1px solid var(--dsw-alias-border-l1,#7f7f7f47);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1,#1b1b1c) 88%, transparent);backdrop-filter:blur(3px);border-radius:13px;flex-direction:column;gap:5px;width:172px;padding:8px 9px;transition:border-color .15s,box-shadow .15s,opacity .15s;display:flex;position:absolute}.XdMBba_seatYou{border-color:var(--dsw-alias-brand-primary,#2f9c76)}.XdMBba_seatActor{border-color:var(--dsw-alias-state-warn-primary,#e8c15a);box-shadow:0 0 0 1px var(--dsw-alias-state-warn-primary,#e8c15a), 0 0 22px #e8c15a33}.XdMBba_seatOut{opacity:.52}.XdMBba_seatOffline .XdMBba_nameText{text-decoration:line-through}.XdMBba_seatEmpty{border-style:dashed;border-color:var(--felt-line,#7f7f7f52);min-height:74px;color:var(--felt-ink-dim,#93a0b1);background:#ffffff0d;justify-content:center;align-items:center;gap:6px}.XdMBba_seatEmpty:hover{border-color:var(--felt-ink,#e9ecf2);background:#ffffff1a}.XdMBba_seatEmptyText{color:var(--felt-ink-dim,#93a0b1);font-size:11px}.XdMBba_pos0{bottom:10px;left:50%;transform:translate(-50%)}.XdMBba_pos1{bottom:104px;left:3%}.XdMBba_pos2{top:78px;left:2%}.XdMBba_pos3{top:8px;left:50%;transform:translate(-50%)}.XdMBba_pos4{top:78px;right:2%}.XdMBba_pos5{bottom:104px;right:3%}.XdMBba_seatTop{align-items:center;gap:8px;display:flex}.XdMBba_avatar{color:#fff;text-shadow:0 1px 2px #00000059;border-radius:50%;flex:none;place-items:center;width:34px;height:34px;font-size:13px;font-weight:700;display:grid;position:relative}.XdMBba_timerRing{background:conic-gradient(var(--dsw-alias-state-warn-primary,#e8c15a) var(--progress,360deg), transparent 0);pointer-events:none;border-radius:50%;position:absolute;inset:-3px;-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - 3px),#000 calc(100% - 2px));mask:radial-gradient(farthest-side,#0000 calc(100% - 3px),#000 calc(100% - 2px))}.XdMBba_seatMeta{flex:1;min-width:0}.XdMBba_seatName{flex-wrap:wrap;align-items:center;gap:4px;min-width:0;display:flex}.XdMBba_nameText{text-overflow:ellipsis;white-space:nowrap;max-width:82px;font-size:12px;font-weight:600;overflow:hidden}.XdMBba_badge{color:var(--dsw-alias-label-secondary,#93a0b1);border:1px solid;border-radius:4px;padding:2px 4px;font-size:9px;line-height:1}.XdMBba_badgeDealer{color:var(--dsw-alias-label-primary,#e9ecf2)}.XdMBba_badgeBlind{color:var(--dsw-alias-state-warn-primary,#c58a00)}.XdMBba_badgeYou,.XdMBba_badgeHost{color:var(--dsw-alias-brand-primary,#2f9c76)}.XdMBba_seatStack{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-primary,#e9ecf2);font-size:11.5px}.XdMBba_seatStatus{color:var(--dsw-alias-label-secondary,#93a0b1);flex-wrap:wrap;gap:6px;min-height:13px;font-size:10px;display:flex}.XdMBba_statusAllIn{color:var(--dsw-alias-state-warn-primary,#c58a00);font-weight:600}.XdMBba_statusFolded{color:var(--dsw-alias-state-idle-primary,#7d8794)}.XdMBba_statusMuted{color:var(--dsw-alias-state-error-primary,#e06c75)}.XdMBba_statusAction{color:var(--dsw-alias-label-secondary,#93a0b1);text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.XdMBba_seatCards{justify-content:center;align-items:center;gap:4px;min-height:54px;display:flex}.XdMBba_kickBtn{border:1px solid var(--dsw-alias-state-error-primary,#d64545);background:var(--dsw-alias-bg-base,#fff);height:17px;color:var(--dsw-alias-state-error-primary,#d64545);font:inherit;cursor:pointer;border-radius:999px;align-items:center;padding:0 6px;font-size:9.5px;line-height:1;display:inline-flex;position:absolute;top:6px;right:6px}.XdMBba_kickBtn:hover{background:var(--dsw-alias-state-error-primary,#d64545);color:#fff}.XdMBba_betChip{font-variant-numeric:tabular-nums;background:var(--dsw-alias-bg-overlay,#1b1b1c);border:1px solid var(--dsw-alias-state-warn-primary,#c58a00);color:var(--dsw-alias-state-warn-primary,#e8c15a);border-radius:999px;padding:1px 8px;font-size:10.5px;font-weight:700;position:absolute;top:-10px;right:8px}.XdMBba_handName{color:var(--dsw-alias-label-secondary,#93a0b1);font-size:10px}.XdMBba_card{color:#16171a;font-variant-numeric:tabular-nums;user-select:none;background:#fcfbf7;border:1px solid #e2e0d7;border-radius:8px;flex:none;align-self:center;font-family:ui-sans-serif,system-ui,-apple-system,Helvetica Neue,sans-serif;font-weight:750;line-height:1;display:block;position:relative;overflow:hidden;box-shadow:0 1px 2px #00000038,0 3px 8px #0000001f}.XdMBba_card_sm{--card-rank:13px;--card-suit:19px;border-radius:6px;width:38px;height:54px}.XdMBba_card_md{--card-rank:16px;--card-suit:27px;width:50px;height:70px}.XdMBba_card_lg{--card-rank:21px;--card-suit:35px;border-radius:9px;width:62px;height:87px}.XdMBba_cardRed{color:#d81b3c}.XdMBba_cardBlack{color:#16171a}.XdMBba_cardDim{opacity:.55}.XdMBba_cardRank{font-size:var(--card-rank,16px);line-height:1;position:absolute;top:4px;left:5px}.XdMBba_cardSuit{font-size:var(--card-suit,27px);line-height:1;position:absolute;top:60%;left:50%;transform:translate(-50%,-50%)}.XdMBba_cardBack{background:radial-gradient(circle,#2f6f5c 0 2.5px,#0000 2.6px) 0 0/9px 9px,#f6f3ea;border-color:#d9d6cb;box-shadow:inset 0 0 0 3px #f6f3ea,0 1px 2px #00000038}.XdMBba_cardSlot{box-shadow:none;background:0 0;border:1px dashed #ffffff52}.XdMBba_ownArea{border:1px solid var(--dsw-alias-border-l1,#7f7f7f38);background:var(--dsw-alias-bg-layer-1,#1b1b1c);border-radius:14px;flex:none;align-items:center;gap:14px;min-height:92px;padding:8px 10px;display:flex}.XdMBba_ownCards{flex:none;align-items:center;gap:6px;display:flex}.XdMBba_ownMeta{color:var(--dsw-alias-label-secondary,#93a0b1);flex-direction:column;gap:1px;margin-left:4px;font-size:11.5px;display:flex}.XdMBba_ownName{color:var(--dsw-alias-label-primary,#e9ecf2);font-weight:600}.XdMBba_ownStack{font-variant-numeric:tabular-nums}.XdMBba_ownHint{color:var(--dsw-alias-label-secondary,#93a0b1);flex:1;justify-content:space-between;align-items:center;gap:10px;font-size:12px;display:flex}.XdMBba_ownButtons{gap:6px;display:flex}.XdMBba_actionBar{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.XdMBba_actionTimer{align-items:baseline;gap:8px;display:flex}.XdMBba_actionTimerLabel{color:var(--dsw-alias-state-warn-primary,#e8c15a);font-size:12px;font-weight:700}.XdMBba_actionTimerValue{color:var(--dsw-alias-label-secondary,#93a0b1);font-variant-numeric:tabular-nums;font-size:11px}.XdMBba_actionRow{flex-wrap:wrap;align-items:stretch;gap:8px;display:flex}.XdMBba_btnCall{border-color:var(--dsw-alias-brand-primary,#2f9c76);color:var(--dsw-alias-brand-primary,#2f9c76);background:0 0;font-weight:600}.XdMBba_btnRaise{background:var(--dsw-alias-brand-primary,#2f9c76);color:var(--dsw-alias-bg-base,#06130f);white-space:nowrap;border-color:#0000;font-weight:700}.XdMBba_btn.XdMBba_btnRaise:hover:not(:disabled){background:var(--dsw-alias-brand-primary,#2f9c76);color:var(--dsw-alias-bg-base,#06130f);filter:brightness(1.08);border-color:#0000}.XdMBba_raiseGroup{background:var(--dsw-alias-bg-layer-2,#7f7f7f14);border-radius:10px;flex-direction:column;flex:1;gap:4px;min-width:240px;padding:6px 10px;display:flex}.XdMBba_raiseHead{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.XdMBba_raiseValue{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-primary,#e9ecf2);font-size:13px;font-weight:700}.XdMBba_presetRow{flex-wrap:wrap;gap:4px;display:flex}.XdMBba_slider{width:100%;accent-color:var(--dsw-alias-brand-primary,#2f9c76)}.XdMBba_railWrap{border-left:1px solid var(--dsw-alias-border-l1,#7f7f7f33);flex:none;width:286px;min-height:0;display:flex}.XdMBba_rail{flex-direction:column;gap:14px;width:100%;min-height:0;padding:12px;display:flex;overflow-y:auto}.XdMBba_railSection{flex-direction:column;gap:6px;display:flex}.XdMBba_railTitle{letter-spacing:.12em;text-transform:uppercase;color:var(--dsw-alias-label-secondary,#93a0b1);margin:0;font-size:11px}.XdMBba_leaderList,.XdMBba_historyList,.XdMBba_chatList{flex-direction:column;gap:3px;display:flex}.XdMBba_leaderRow{border-radius:6px;grid-template-columns:16px 1fr auto auto;align-items:center;gap:6px;padding:4px 6px;font-size:11.5px;display:grid}.XdMBba_leaderRowYou{background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2f9c76) 14%, transparent)}.XdMBba_leaderRank{color:var(--dsw-alias-label-secondary,#93a0b1);font-variant-numeric:tabular-nums}.XdMBba_leaderName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.XdMBba_leaderHands{color:var(--dsw-alias-label-secondary,#93a0b1);white-space:nowrap;font-size:10px}.XdMBba_historyRow{color:var(--dsw-alias-label-secondary,#93a0b1);align-items:center;gap:6px;font-size:11px;display:flex}.XdMBba_historyNo{font-variant-numeric:tabular-nums}.XdMBba_historyBoard{flex:1;gap:2px;min-width:0;display:flex}.XdMBba_historyCard{background:var(--dsw-alias-bg-layer-2,#7f7f7f1f);border-radius:3px;padding:0 3px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px}.XdMBba_historyPot{font-variant-numeric:tabular-nums}.XdMBba_spectatorList{flex-wrap:wrap;gap:5px;display:flex}.XdMBba_spectatorChip{border:1px solid var(--dsw-alias-border-l1,#7f7f7f47);color:var(--dsw-alias-label-secondary,#93a0b1);border-radius:999px;align-items:center;gap:4px;padding:1px 8px;font-size:10.5px;display:inline-flex}.XdMBba_spectatorKick{color:var(--dsw-alias-state-error-primary,#d64545);font:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-size:9.5px;line-height:1}.XdMBba_railChat{flex:1;min-height:140px}.XdMBba_chatList{flex:1;gap:5px;max-height:220px;overflow-y:auto}.XdMBba_chatLine{gap:6px;font-size:11.5px;line-height:1.4;display:flex}.XdMBba_chatName{color:var(--dsw-alias-brand-primary,#2f9c76);text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:70px;overflow:hidden}.XdMBba_chatText{color:var(--dsw-alias-label-primary,#e9ecf2);word-break:break-word}.XdMBba_chatComposer{gap:6px;display:flex}.XdMBba_chatInput{border:1px solid var(--dsw-alias-border-l2,#7f7f7f80);background:var(--dsw-alias-bg-base,#1b1b1c);min-width:0;color:var(--dsw-alias-label-primary,#e9ecf2);font:inherit;border-radius:8px;flex:1;padding:5px 8px;font-size:11.5px}.XdMBba_railFooter{border-top:1px solid var(--dsw-alias-border-l1,#7f7f7f33);color:var(--dsw-alias-label-secondary,#93a0b1);margin-top:auto;padding-top:8px;font-size:11px}.XdMBba_narrowList{flex-direction:column;gap:4px;padding:12px;display:flex}.XdMBba_narrowRow{background:var(--dsw-alias-bg-layer-2,#7f7f7f1a);border-radius:8px;grid-template-columns:1fr auto auto auto;align-items:center;gap:8px;padding:6px 9px;font-size:12px;display:grid}.XdMBba_narrowRowYou{border:1px solid var(--dsw-alias-brand-primary,#2f9c76)}.XdMBba_narrowName{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.XdMBba_narrowStack{font-variant-numeric:tabular-nums}.XdMBba_narrowCards{align-items:center;gap:2px;display:flex}.XdMBba_narrowEmpty{color:var(--felt-ink-dim,#93a0b1);padding:2px 4px;font-size:11.5px}.XdMBba_narrowStatus{color:var(--dsw-alias-label-secondary,#93a0b1);text-align:right;min-width:42px;font-size:10px}@media (width<=899px){.XdMBba_felt{flex-direction:column;gap:10px;min-height:0;padding:12px;display:flex;overflow-y:auto}.XdMBba_center{order:-1;width:100%;position:static;transform:none}.XdMBba_seatsLayer{position:static}.XdMBba_railWrap{display:none}.XdMBba_ownArea,.XdMBba_header{flex-direction:column;align-items:stretch}.XdMBba_handOverBanner{white-space:normal;margin-bottom:8px;position:static;transform:none}}@media (prefers-reduced-motion:reduce){.XdMBba_loadingMark,.XdMBba_toast{animation:none}.XdMBba_btn,.XdMBba_seat{transition:none}}.XdMBba_settle{flex-direction:column;gap:16px;height:100%;padding:22px;display:flex;overflow-y:auto}.XdMBba_settleHead{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.XdMBba_settleTitle{margin:0;font-size:22px}.XdMBba_settleMeta{color:var(--dsw-alias-label-secondary,#93a0b1);margin:4px 0 0;font-size:12px}.XdMBba_settleActions{flex-wrap:wrap;gap:8px;display:flex}.XdMBba_settleTable{border:1px solid var(--dsw-alias-border-l1,#7f7f7f3d);background:var(--dsw-alias-bg-layer-1,#1b1b1c);border-radius:12px;overflow:hidden}.XdMBba_settleRow{font-variant-numeric:tabular-nums;border-top:1px solid var(--dsw-alias-border-l1,#7f7f7f24);grid-template-columns:46px minmax(120px,1.6fr) 60px 60px 100px 80px 80px;align-items:center;gap:8px;padding:9px 12px;font-size:12.5px;display:grid}.XdMBba_settleRow:first-child{border-top:none}.XdMBba_settleRowHead{color:var(--dsw-alias-label-secondary,#93a0b1);background:var(--dsw-alias-bg-layer-2,#7f7f7f14);font-size:11px}.XdMBba_settleRowFirst{background:color-mix(in srgb, var(--dsw-alias-state-warn-primary,#e8c15a) 12%, transparent)}.XdMBba_settleRank{font-size:14px}.XdMBba_settlePlayer{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.XdMBba_settleHistory{flex-direction:column;gap:6px;display:flex}.XdMBba_historyScroll{border:1px solid var(--dsw-alias-border-l1,#7f7f7f3d);background:var(--dsw-alias-bg-layer-1,#1b1b1c);border-radius:10px;flex-direction:column;gap:5px;max-height:260px;padding:8px 10px;display:flex;overflow-y:auto}.XdMBba_settleHandRow{color:var(--dsw-alias-label-secondary,#93a0b1);grid-template-columns:44px 1fr 80px 1fr;align-items:center;gap:8px;font-size:11.5px;display:grid}.XdMBba_settleHandPot{text-align:right;font-variant-numeric:tabular-nums}.XdMBba_settleHandWinners{text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-primary,#e9ecf2);overflow:hidden}@media (width<=899px){.XdMBba_settleRow{grid-template-columns:40px 1fr 48px 48px 84px}.XdMBba_settleRow>:nth-child(6),.XdMBba_settleRow>:nth-child(7){display:none}}.XdMBba_inviteBtn{background:var(--dsw-alias-brand-primary,#2f9c76);color:var(--dsw-alias-bg-base,#fff);border-color:#0000;padding:5px 11px;font-weight:700}.XdMBba_btn.XdMBba_inviteBtn:hover:not(:disabled){background:var(--dsw-alias-brand-primary,#2f9c76);color:var(--dsw-alias-bg-base,#fff);filter:brightness(1.08);border-color:#0000}.XdMBba_sheetBackdrop{z-index:30;background:#00000061;place-items:center;padding:20px;display:grid;position:absolute;inset:0}.XdMBba_sheet{border:1px solid var(--dsw-alias-border-l2,#7f7f7f80);background:var(--dsw-alias-bg-overlay,#1b1b1c);border-radius:14px;flex-direction:column;gap:10px;width:min(560px,100%);max-height:100%;padding:16px;display:flex;overflow-y:auto;box-shadow:0 24px 60px #00000059}.XdMBba_sheetHead{justify-content:space-between;align-items:center;gap:12px;display:flex}.XdMBba_sheetTitle{margin:0;font-size:15px}.XdMBba_inviteWarn{border:1px solid var(--dsw-alias-state-warn-primary,#b7791f);background:color-mix(in srgb, var(--dsw-alias-state-warn-primary,#b7791f) 9%, transparent);border-radius:10px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.XdMBba_inviteWarnTitle{color:var(--dsw-alias-state-warn-primary,#b7791f);margin:0;font-size:12.5px;font-weight:600}.XdMBba_inviteWarnText{color:var(--dsw-alias-label-secondary,#93a0b1);margin:0;font-size:12px;line-height:1.6}.XdMBba_cmdBlock{background:var(--dsw-alias-bg-layer-2,#7f7f7f1f);white-space:pre;border-radius:8px;margin:0;padding:8px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;overflow-x:auto}.XdMBba_urlRow{align-items:center;gap:8px;display:flex}.XdMBba_urlLabel{width:60px;color:var(--dsw-alias-label-secondary,#93a0b1);flex:none;font-size:12px}.XdMBba_urlText{text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--dsw-alias-border-l1,#7f7f7f47);background:var(--dsw-alias-bg-layer-2,#7f7f7f1f);min-width:0;color:var(--dsw-alias-label-primary,#e9ecf2);border-radius:8px;flex:1;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;overflow:hidden}.XdMBba_row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.XdMBba_inviteOk{border:1px solid var(--dsw-alias-state-success-primary,#1f9d63);background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#1f9d63) 9%, transparent);color:var(--dsw-alias-state-success-primary,#1f9d63);border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;font-size:12.5px;display:flex}.XdMBba_inviteError{color:var(--dsw-alias-state-error-primary,#d64545);font-size:11.5px}.XdMBba_sheetNote{color:var(--dsw-alias-label-secondary,#93a0b1);margin:0;font-size:11px;line-height:1.5}.XdMBba_codeLine{border-top:1px solid var(--dsw-alias-border-l1,#7f7f7f33);color:var(--dsw-alias-label-secondary,#93a0b1);justify-content:space-between;align-items:center;gap:10px;padding-top:10px;font-size:12px;display:flex}.XdMBba_inviteLinkRow{align-items:center;gap:8px;display:flex}.XdMBba_inviteLinkInput{border:1px solid var(--dsw-alias-border-l2,#7f7f7f80);background:var(--dsw-alias-bg-base,#fff);min-width:0;color:var(--dsw-alias-label-primary,#141414);border-radius:8px;flex:1;padding:9px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px}";
1091
+ const css = ".XdMBba_panel{background:var(--dsw-alias-bg-base,#101418);height:100%;min-height:0;color:var(--dsw-alias-label-primary,#e9ecf2);flex-direction:column;font-size:13px;line-height:1.5;display:flex;position:relative;overflow:hidden}.XdMBba_panel *,.XdMBba_panel :before,.XdMBba_panel :after{box-sizing:border-box}.XdMBba_btn{border:1px solid var(--dsw-alias-border-l1,#7f7f7f47);background:var(--dsw-alias-bg-layer-2,#7f7f7f1a);color:var(--dsw-alias-label-primary,#111);font:inherit;cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:7px 12px;font-size:12.5px;transition:background .12s,border-color .12s,opacity .12s;display:inline-flex}.XdMBba_btn:hover:not(:disabled){border-color:var(--dsw-alias-border-l2,#7f7f7f73);background:var(--dsw-alias-bg-layer-1,#7f7f7f29)}.XdMBba_btn:disabled{opacity:.45;cursor:default}.XdMBba_btn:focus-visible{outline:2px solid var(--dsw-alias-brand-primary,#2f9c76);outline-offset:1px}.XdMBba_btnPrimary{background:var(--dsw-alias-brand-primary,#2f9c76);color:var(--dsw-alias-bg-base,#06130f);border-color:#0000;font-weight:700}.XdMBba_btn.XdMBba_btnPrimary:hover:not(:disabled){background:var(--dsw-alias-brand-primary,#2f9c76);color:var(--dsw-alias-bg-base,#06130f);filter:brightness(1.08);border-color:#0000}.XdMBba_btnOutline{border-color:var(--dsw-alias-border-l2,#7f7f7f80);background:0 0}.XdMBba_btnGhost{color:var(--dsw-alias-label-secondary,#93a0b1);background:0 0;border-color:#0000}.XdMBba_btn.XdMBba_btnGhost:hover:not(:disabled){background:var(--dsw-alias-bg-layer-2,#7f7f7f1a);color:var(--dsw-alias-label-primary,#e9ecf2);border-color:#0000}.XdMBba_btnDanger{border-color:var(--dsw-alias-state-error-primary,#e06c75);color:var(--dsw-alias-state-error-primary,#e06c75);background:0 0}.XdMBba_btn.XdMBba_btnDanger:hover:not(:disabled){border-color:var(--dsw-alias-state-error-primary,#e06c75);background:color-mix(in srgb, var(--dsw-alias-state-error-primary,#e06c75) 10%, transparent);color:var(--dsw-alias-state-error-primary,#e06c75)}.XdMBba_btnChip{background:var(--dsw-alias-bg-layer-2,#7f7f7f1a);color:var(--dsw-alias-label-secondary,#93a0b1);border-radius:999px;padding:4px 9px;font-size:11.5px}.XdMBba_btnWide{width:100%}.XdMBba_netUp{color:var(--dsw-alias-state-success-primary,#4cc38a)}.XdMBba_netDown{color:var(--dsw-alias-state-error-primary,#e06c75)}.XdMBba_netFlat{color:var(--dsw-alias-label-secondary,#93a0b1)}.XdMBba_cfPanel{border:1px solid var(--dsw-alias-border-l1,#7f7f7f47);background:var(--dsw-alias-bg-layer-2,#7f7f7f14);border-radius:10px;flex-direction:column;gap:8px;padding:10px;display:flex}.XdMBba_cfRow{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.XdMBba_grow{flex:1}.XdMBba_cfBadge{border:1px solid var(--dsw-alias-border-l2,#7f7f7f73);color:var(--dsw-alias-label-secondary,#93a0b1);border-radius:999px;padding:2px 9px;font-size:11.5px}.XdMBba_cfBadgeOn{border-color:var(--dsw-alias-state-success-primary,#1f9d63);color:var(--dsw-alias-state-success-primary,#1f9d63)}.XdMBba_cfBadgeWait{border-color:var(--dsw-alias-state-warn-primary,#b7791f);color:var(--dsw-alias-state-warn-primary,#b7791f)}.XdMBba_cfWaiting{color:var(--dsw-alias-state-warn-primary,#b7791f);font-size:11.5px}.XdMBba_cfLabel{color:var(--dsw-alias-label-secondary,#93a0b1);flex:none;font-size:11.5px}.XdMBba_cfAuthBox{border:1px dashed var(--dsw-alias-brand-primary,#2f9c76);border-radius:8px;flex-direction:column;gap:6px;padding:8px;display:flex}.XdMBba_cfAuthHint{color:var(--dsw-alias-label-secondary,#93a0b1);margin:0;font-size:11.5px}.XdMBba_cfError{color:var(--dsw-alias-state-error-primary,#d64545);margin:0;font-size:11.5px}.XdMBba_cfLog{background:var(--dsw-alias-bg-base,#fff);max-height:96px;color:var(--dsw-alias-label-secondary,#666);white-space:pre-wrap;border-radius:8px;margin:0;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10.5px;overflow:auto}.XdMBba_hostRow{flex-wrap:wrap;gap:6px;display:flex}.XdMBba_hostActive{border-color:var(--dsw-alias-brand-primary,#2f9c76);background:var(--dsw-alias-brand-primary,#2f9c76);color:var(--dsw-alias-bg-base,#fff);font-weight:700}.XdMBba_hintLink{color:var(--dsw-alias-brand-primary,#141414);text-underline-offset:2px;text-decoration:underline}.XdMBba_buildTag{text-align:center;color:var(--dsw-alias-label-secondary,#93a0b1);opacity:.75;margin:10px 0 0;font-size:10.5px}.XdMBba_hint{color:var(--dsw-alias-label-secondary,#93a0b1);margin:4px 0 0;font-size:11.5px}.XdMBba_railEmpty{color:var(--dsw-alias-label-secondary,#93a0b1);margin:4px 0;font-size:11.5px}.XdMBba_loading{text-align:center;color:var(--dsw-alias-label-secondary,#93a0b1);margin:auto}.XdMBba_loadingMark{border:3px solid var(--dsw-alias-border-l1,#7f7f7f47);border-top-color:var(--dsw-alias-brand-primary,#2f9c76);border-radius:50%;width:34px;height:34px;margin:0 auto 10px;animation:.9s linear infinite XdMBba_spin}@keyframes XdMBba_spin{to{transform:rotate(360deg)}}.XdMBba_toast{border:1px solid var(--dsw-alias-border-l2,#7f7f7f73);background:var(--dsw-alias-bg-overlay,#1b1b1c);max-width:min(420px,100% - 32px);color:var(--dsw-alias-label-primary,#e9ecf2);font:inherit;cursor:pointer;z-index:20;border-radius:999px;padding:9px 16px;font-size:12.5px;animation:.18s XdMBba_toastIn;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 10px 28px #00000059}.XdMBba_toastError{border-color:var(--dsw-alias-state-error-primary,#e06c75);color:var(--dsw-alias-state-error-primary,#e06c75)}@keyframes XdMBba_toastIn{0%{opacity:0;transform:translate(-50%,6px)}}.XdMBba_lobby{width:min(480px,100% - 32px);max-height:100%;margin:auto;padding:28px 4px;overflow-y:auto}.XdMBba_lobbyHead{text-align:center;margin-bottom:18px}.XdMBba_lobbyTitle{letter-spacing:.02em;margin:0;font-size:22px}.XdMBba_lobbySubtitle{color:var(--dsw-alias-label-secondary,#93a0b1);margin:4px 0 0;font-size:12px}.XdMBba_notice,.XdMBba_noticeError,.XdMBba_inviteBanner{border:1px solid var(--dsw-alias-border-l1,#7f7f7f47);background:var(--dsw-alias-bg-layer-2,#7f7f7f14);border-radius:10px;margin:0 0 12px;padding:9px 12px;font-size:12.5px}.XdMBba_noticeError{border-color:var(--dsw-alias-state-error-primary,#e06c75);color:var(--dsw-alias-state-error-primary,#e06c75)}.XdMBba_inviteBanner{border-color:var(--dsw-alias-brand-primary,#2f9c76);color:var(--dsw-alias-brand-primary,#2f9c76)}.XdMBba_tabs{background:var(--dsw-alias-bg-layer-2,#7f7f7f1a);border-radius:10px;gap:6px;margin-bottom:16px;padding:4px;display:flex}.XdMBba_tab{color:var(--dsw-alias-label-secondary,#93a0b1);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:7px;flex:1;padding:8px 0}.XdMBba_tabActive{background:var(--dsw-alias-bg-layer-1,#232324);color:var(--dsw-alias-label-primary,#e9ecf2);box-shadow:0 1px 4px #0003}.XdMBba_lobbyBody{flex-direction:column;gap:12px;display:flex}.XdMBba_field{flex-direction:column;gap:5px;display:flex}.XdMBba_fieldLabel{color:var(--dsw-alias-label-secondary,#93a0b1);font-size:11.5px}.XdMBba_input{border:1px solid var(--dsw-alias-border-l2,#7f7f7f80);background:var(--dsw-alias-bg-base,#1b1b1c);width:100%;color:var(--dsw-alias-label-primary,#e9ecf2);font:inherit;border-radius:9px;padding:9px 11px}.XdMBba_input::placeholder{color:var(--dsw-alias-label-secondary,#93a0b1);opacity:1}.XdMBba_input:hover:not(:disabled){border-color:var(--dsw-alias-brand-primary,#2f9c76)}.XdMBba_input:focus{border-color:var(--dsw-alias-brand-primary,#2f9c76);box-shadow:0 0 0 2px color-mix(in srgb, var(--dsw-alias-brand-primary,#2f9c76) 28%, transparent);outline:none}.XdMBba_inputCode{letter-spacing:6px;text-align:center;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:20px}.XdMBba_previewCard{border:1px solid var(--dsw-alias-border-l1,#7f7f7f47);background:var(--dsw-alias-bg-layer-1,#1b1b1c);border-radius:12px;flex-direction:column;gap:10px;padding:14px;display:flex}.XdMBba_previewHead{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.XdMBba_previewMeta{color:var(--dsw-alias-label-secondary,#93a0b1);font-size:11.5px}.XdMBba_previewSeats{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.XdMBba_previewSeat{border:1px dashed var(--dsw-alias-border-l1,#7f7f7f47);text-align:center;color:var(--dsw-alias-label-secondary,#93a0b1);text-overflow:ellipsis;white-space:nowrap;border-radius:7px;padding:6px;font-size:11.5px;overflow:hidden}.XdMBba_previewSeatFilled{color:var(--dsw-alias-label-primary,#e9ecf2);background:var(--dsw-alias-bg-layer-2,#7f7f7f1a);border-style:solid}.XdMBba_previewActions{gap:8px;display:flex}.XdMBba_previewActions>*{flex:1}.XdMBba_table{flex-direction:column;height:100%;min-height:0;display:flex}.XdMBba_header{border-bottom:1px solid var(--dsw-alias-border-l1,#7f7f7f33);flex:none;justify-content:space-between;align-items:flex-start;gap:12px;padding:10px 16px;display:flex}.XdMBba_headerMain{min-width:0}.XdMBba_titleRow{align-items:center;gap:8px;min-width:0;display:flex}.XdMBba_roomTitle{white-space:nowrap;text-overflow:ellipsis;max-width:260px;margin:0;font-size:15px;font-weight:700;overflow:hidden}.XdMBba_codeChip{border:1px solid var(--dsw-alias-border-l1,#7f7f7f47);color:var(--dsw-alias-label-secondary,#93a0b1);font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border-radius:999px;align-items:center;gap:6px;padding:2px 9px;font-size:11px;display:inline-flex}.XdMBba_codeChip:hover{color:var(--dsw-alias-label-primary,#e9ecf2);border-color:var(--dsw-alias-border-l2,#7f7f7f80)}.XdMBba_copiedTag{color:var(--dsw-alias-state-success-primary,#4cc38a)}.XdMBba_phasePill{color:var(--dsw-alias-label-secondary,#93a0b1);border:1px solid;border-radius:999px;padding:1px 8px;font-size:10.5px}.XdMBba_phasePillHand{color:var(--dsw-alias-brand-primary,#2f9c76)}.XdMBba_phasePillLobby{color:var(--dsw-alias-label-secondary,#93a0b1)}.XdMBba_metaRow{color:var(--dsw-alias-label-secondary,#93a0b1);flex-wrap:wrap;align-items:center;gap:10px;margin-top:4px;font-size:11.5px;display:flex}.XdMBba_conn{font-size:10px}.XdMBba_connLive{color:var(--dsw-alias-state-success-primary,#4cc38a)}.XdMBba_connPolling{color:var(--dsw-alias-state-warn-primary,#c58a00)}.XdMBba_connOffline{color:var(--dsw-alias-state-error-primary,#e06c75)}.XdMBba_spectatorCount{white-space:nowrap}.XdMBba_headerActions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:6px;display:flex}.XdMBba_tableBody{flex:1;min-height:0;display:flex}.XdMBba_feltArea{flex-direction:column;flex:1;gap:8px;min-width:0;min-height:0;padding:10px 12px 12px;display:flex}.XdMBba_felt{--felt-ink:#fffffff0;--felt-ink-dim:#ffffffad;--felt-line:#ffffff4d;background:radial-gradient(at 50% 38%,#ffffff1f,#0000 58%),radial-gradient(at 50% 120%,#00000080,#0000 62%),linear-gradient(165deg,#1f6a4f 0%,#17553f 55%,#123f30 100%);border:1px solid #00000052;border-radius:26px;flex:1;min-height:300px;position:relative;overflow:hidden;box-shadow:inset 0 0 70px #0000006b,0 10px 26px #00000029}.XdMBba_seatsLayer{position:absolute;inset:0}.XdMBba_center{text-align:center;pointer-events:none;flex-direction:column;align-items:center;gap:6px;width:min(430px,70%);display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.XdMBba_center>*{pointer-events:auto}.XdMBba_streetLabel{letter-spacing:.18em;text-transform:uppercase;color:var(--felt-ink-dim,#93a0b1);font-size:10.5px}.XdMBba_boardRow{flex-wrap:nowrap;justify-content:center;align-items:center;gap:6px;display:flex}.XdMBba_potRow{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;display:flex}.XdMBba_potChips{background:radial-gradient(circle at 35% 30%,#f0d27a,#a67c1f 70%);border-radius:50%;width:14px;height:14px;box-shadow:0 0 0 2px #00000040}.XdMBba_potAmount{color:var(--felt-ink,#e9ecf2);text-shadow:0 1px 2px #00000059;font-size:13px;font-weight:700}.XdMBba_sidePots{flex-wrap:wrap;gap:6px;display:flex}.XdMBba_sidePot{color:var(--felt-ink-dim,#93a0b1);border:1px solid var(--felt-line,#7f7f7f47);border-radius:999px;padding:1px 7px;font-size:10.5px}.XdMBba_lobbyCenter{background:var(--dsw-alias-bg-overlay,#1b1b1c);border:1px solid var(--dsw-alias-border-l2,#7f7f7f73);border-radius:14px;flex-direction:column;align-items:center;gap:8px;padding:12px 16px;display:flex;box-shadow:0 12px 30px #00000047}.XdMBba_centerTitle{font-size:14px;font-weight:700}.XdMBba_centerHint{color:var(--dsw-alias-label-secondary,#93a0b1);min-height:16px;font-size:11.5px}.XdMBba_centerActions{gap:8px;display:flex}.XdMBba_handOverBanner{background:var(--dsw-alias-bg-overlay,#1b1b1c);border:1px solid var(--dsw-alias-border-l2,#7f7f7f73);white-space:nowrap;border-radius:12px;flex-direction:column;gap:4px;padding:9px 14px;display:flex;position:absolute;top:-8px;left:50%;transform:translate(-50%,-100%);box-shadow:0 12px 30px #00000059}.XdMBba_bannerTitle{font-size:13px;font-weight:700}.XdMBba_bannerDeltas{flex-wrap:wrap;justify-content:center;gap:10px;font-size:11.5px;display:flex}.XdMBba_bannerNext{color:var(--dsw-alias-label-secondary,#93a0b1);text-align:center;font-size:10.5px}.XdMBba_seat{border:1px solid var(--dsw-alias-border-l1,#7f7f7f47);background:color-mix(in srgb, var(--dsw-alias-bg-layer-1,#1b1b1c) 88%, transparent);backdrop-filter:blur(3px);border-radius:13px;flex-direction:column;gap:5px;width:172px;padding:8px 9px;transition:border-color .15s,box-shadow .15s,opacity .15s;display:flex;position:absolute}.XdMBba_seatYou{border-color:var(--dsw-alias-brand-primary,#2f9c76)}.XdMBba_seatActor{border-color:var(--dsw-alias-state-warn-primary,#e8c15a);box-shadow:0 0 0 1px var(--dsw-alias-state-warn-primary,#e8c15a), 0 0 22px #e8c15a33}.XdMBba_seatOut{opacity:.52}.XdMBba_seatOffline .XdMBba_nameText{text-decoration:line-through}.XdMBba_seatEmpty{border-style:dashed;border-color:var(--felt-line,#7f7f7f52);min-height:74px;color:var(--felt-ink-dim,#93a0b1);background:#ffffff0d;justify-content:center;align-items:center;gap:6px}.XdMBba_seatEmpty:hover{border-color:var(--felt-ink,#e9ecf2);background:#ffffff1a}.XdMBba_seatEmptyText{color:var(--felt-ink-dim,#93a0b1);font-size:11px}.XdMBba_pos0{bottom:10px;left:50%;transform:translate(-50%)}.XdMBba_pos1{bottom:104px;left:3%}.XdMBba_pos2{top:78px;left:2%}.XdMBba_pos3{top:8px;left:50%;transform:translate(-50%)}.XdMBba_pos4{top:78px;right:2%}.XdMBba_pos5{bottom:104px;right:3%}.XdMBba_seatTop{align-items:center;gap:8px;display:flex}.XdMBba_avatar{color:#fff;text-shadow:0 1px 2px #00000059;border-radius:50%;flex:none;place-items:center;width:34px;height:34px;font-size:13px;font-weight:700;display:grid;position:relative}.XdMBba_timerRing{background:conic-gradient(var(--dsw-alias-state-warn-primary,#e8c15a) var(--progress,360deg), transparent 0);pointer-events:none;border-radius:50%;position:absolute;inset:-3px;-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - 3px),#000 calc(100% - 2px));mask:radial-gradient(farthest-side,#0000 calc(100% - 3px),#000 calc(100% - 2px))}.XdMBba_seatMeta{flex:1;min-width:0}.XdMBba_seatName{flex-wrap:wrap;align-items:center;gap:4px;min-width:0;display:flex}.XdMBba_nameText{text-overflow:ellipsis;white-space:nowrap;max-width:82px;font-size:12px;font-weight:600;overflow:hidden}.XdMBba_badge{color:var(--dsw-alias-label-secondary,#93a0b1);border:1px solid;border-radius:4px;padding:2px 4px;font-size:9px;line-height:1}.XdMBba_badgeDealer{color:var(--dsw-alias-label-primary,#e9ecf2)}.XdMBba_badgeBlind{color:var(--dsw-alias-state-warn-primary,#c58a00)}.XdMBba_badgeYou,.XdMBba_badgeHost{color:var(--dsw-alias-brand-primary,#2f9c76)}.XdMBba_seatStack{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-primary,#e9ecf2);font-size:11.5px}.XdMBba_seatStatus{color:var(--dsw-alias-label-secondary,#93a0b1);flex-wrap:wrap;gap:6px;min-height:13px;font-size:10px;display:flex}.XdMBba_statusAllIn{color:var(--dsw-alias-state-warn-primary,#c58a00);font-weight:600}.XdMBba_statusFolded{color:var(--dsw-alias-state-idle-primary,#7d8794)}.XdMBba_statusMuted{color:var(--dsw-alias-state-error-primary,#e06c75)}.XdMBba_statusAction{color:var(--dsw-alias-label-secondary,#93a0b1);text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.XdMBba_seatCards{justify-content:center;align-items:center;gap:4px;min-height:54px;display:flex}.XdMBba_kickBtn{border:1px solid var(--dsw-alias-state-error-primary,#d64545);background:var(--dsw-alias-bg-base,#fff);height:17px;color:var(--dsw-alias-state-error-primary,#d64545);font:inherit;cursor:pointer;border-radius:999px;align-items:center;padding:0 6px;font-size:9.5px;line-height:1;display:inline-flex;position:absolute;top:6px;right:6px}.XdMBba_kickBtn:hover{background:var(--dsw-alias-state-error-primary,#d64545);color:#fff}.XdMBba_betChip{font-variant-numeric:tabular-nums;background:var(--dsw-alias-bg-overlay,#1b1b1c);border:1px solid var(--dsw-alias-state-warn-primary,#c58a00);color:var(--dsw-alias-state-warn-primary,#e8c15a);border-radius:999px;padding:1px 8px;font-size:10.5px;font-weight:700;position:absolute;top:-10px;right:8px}.XdMBba_handName{color:var(--dsw-alias-label-secondary,#93a0b1);font-size:10px}.XdMBba_card{color:#16171a;font-variant-numeric:tabular-nums;user-select:none;background:#fcfbf7;border:1px solid #e2e0d7;border-radius:8px;flex:none;align-self:center;font-family:ui-sans-serif,system-ui,-apple-system,Helvetica Neue,sans-serif;font-weight:750;line-height:1;display:block;position:relative;overflow:hidden;box-shadow:0 1px 2px #00000038,0 3px 8px #0000001f}.XdMBba_card_sm{--card-rank:13px;--card-suit:19px;border-radius:6px;width:38px;height:54px}.XdMBba_card_md{--card-rank:16px;--card-suit:27px;width:50px;height:70px}.XdMBba_card_lg{--card-rank:21px;--card-suit:35px;border-radius:9px;width:62px;height:87px}.XdMBba_cardRed{color:#d81b3c}.XdMBba_cardBlack{color:#16171a}.XdMBba_cardDim{opacity:.55}.XdMBba_cardRank{font-size:var(--card-rank,16px);line-height:1;position:absolute;top:4px;left:5px}.XdMBba_cardSuit{font-size:var(--card-suit,27px);line-height:1;position:absolute;top:60%;left:50%;transform:translate(-50%,-50%)}.XdMBba_cardBack{background:radial-gradient(circle,#2f6f5c 0 2.5px,#0000 2.6px) 0 0/9px 9px,#f6f3ea;border-color:#d9d6cb;box-shadow:inset 0 0 0 3px #f6f3ea,0 1px 2px #00000038}.XdMBba_cardSlot{box-shadow:none;background:0 0;border:1px dashed #ffffff52}.XdMBba_ownArea{border:1px solid var(--dsw-alias-border-l1,#7f7f7f38);background:var(--dsw-alias-bg-layer-1,#1b1b1c);border-radius:14px;flex:none;align-items:center;gap:14px;min-height:92px;padding:8px 10px;display:flex}.XdMBba_ownActions{flex:1;min-width:0;display:grid}.XdMBba_ownSlot{grid-area:1/1;align-items:center;min-width:0;display:flex}.XdMBba_ownSlotHidden{visibility:hidden;pointer-events:none}.XdMBba_ownCards{flex:none;align-items:center;gap:6px;display:flex}.XdMBba_ownMeta{color:var(--dsw-alias-label-secondary,#93a0b1);flex-direction:column;gap:1px;margin-left:4px;font-size:11.5px;display:flex}.XdMBba_ownName{color:var(--dsw-alias-label-primary,#e9ecf2);font-weight:600}.XdMBba_ownStack{font-variant-numeric:tabular-nums}.XdMBba_ownHint{color:var(--dsw-alias-label-secondary,#93a0b1);flex:1;justify-content:space-between;align-items:center;gap:10px;font-size:12px;display:flex}.XdMBba_ownButtons{gap:6px;display:flex}.XdMBba_actionBar{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.XdMBba_actionTimer{align-items:baseline;gap:8px;display:flex}.XdMBba_actionTimerLabel{color:var(--dsw-alias-state-warn-primary,#e8c15a);font-size:12px;font-weight:700}.XdMBba_actionTimerValue{color:var(--dsw-alias-label-secondary,#93a0b1);font-variant-numeric:tabular-nums;font-size:11px}.XdMBba_actionRow{flex-wrap:wrap;align-items:stretch;gap:8px;display:flex}.XdMBba_actionRow>.XdMBba_btn{white-space:nowrap;flex:none}.XdMBba_btnCall{border-color:var(--dsw-alias-brand-primary,#2f9c76);color:var(--dsw-alias-brand-primary,#2f9c76);background:0 0;font-weight:600}.XdMBba_btnRaise{background:var(--dsw-alias-brand-primary,#2f9c76);color:var(--dsw-alias-bg-base,#06130f);white-space:nowrap;border-color:#0000;font-weight:700}.XdMBba_btn.XdMBba_btnRaise:hover:not(:disabled){background:var(--dsw-alias-brand-primary,#2f9c76);color:var(--dsw-alias-bg-base,#06130f);filter:brightness(1.08);border-color:#0000}.XdMBba_raiseGroup{background:var(--dsw-alias-bg-layer-2,#7f7f7f14);border-radius:10px;flex-direction:column;flex:1 1 0;gap:3px;min-width:200px;padding:4px 8px;display:flex}.XdMBba_raiseValue{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--dsw-alias-label-primary,#e9ecf2);font-size:13px;font-weight:700}.XdMBba_presetRow{flex-wrap:wrap;gap:4px;display:flex}.XdMBba_raiseSliderRow{flex-wrap:nowrap;align-items:center;gap:8px;min-width:0;display:flex}.XdMBba_raiseSliderRow .XdMBba_slider{flex:1;width:auto;min-width:80px}.XdMBba_slider{width:100%;accent-color:var(--dsw-alias-brand-primary,#2f9c76)}.XdMBba_railWrap{border-left:1px solid var(--dsw-alias-border-l1,#7f7f7f33);flex:none;width:286px;min-height:0;display:flex}.XdMBba_rail{flex-direction:column;gap:14px;width:100%;min-height:0;padding:12px;display:flex;overflow-y:auto}.XdMBba_railSection{flex-direction:column;gap:6px;display:flex}.XdMBba_railTitle{letter-spacing:.12em;text-transform:uppercase;color:var(--dsw-alias-label-secondary,#93a0b1);margin:0;font-size:11px}.XdMBba_leaderList,.XdMBba_historyList,.XdMBba_chatList{flex-direction:column;gap:3px;display:flex}.XdMBba_leaderRow{border-radius:6px;grid-template-columns:16px 1fr auto auto;align-items:center;gap:6px;padding:4px 6px;font-size:11.5px;display:grid}.XdMBba_leaderRowYou{background:color-mix(in srgb, var(--dsw-alias-brand-primary,#2f9c76) 14%, transparent)}.XdMBba_leaderRank{color:var(--dsw-alias-label-secondary,#93a0b1);font-variant-numeric:tabular-nums}.XdMBba_leaderName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.XdMBba_leaderHands{color:var(--dsw-alias-label-secondary,#93a0b1);white-space:nowrap;font-size:10px}.XdMBba_historyRow{color:var(--dsw-alias-label-secondary,#93a0b1);align-items:center;gap:6px;font-size:11px;display:flex}.XdMBba_historyNo{font-variant-numeric:tabular-nums}.XdMBba_historyBoard{flex:1;gap:2px;min-width:0;display:flex}.XdMBba_historyCard{background:var(--dsw-alias-bg-layer-2,#7f7f7f1f);border-radius:3px;padding:0 3px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px}.XdMBba_historyPot{font-variant-numeric:tabular-nums}.XdMBba_spectatorList{flex-wrap:wrap;gap:5px;display:flex}.XdMBba_spectatorChip{border:1px solid var(--dsw-alias-border-l1,#7f7f7f47);color:var(--dsw-alias-label-secondary,#93a0b1);border-radius:999px;align-items:center;gap:4px;padding:1px 8px;font-size:10.5px;display:inline-flex}.XdMBba_spectatorKick{color:var(--dsw-alias-state-error-primary,#d64545);font:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-size:9.5px;line-height:1}.XdMBba_railChat{flex:1;min-height:140px}.XdMBba_chatList{flex:1;gap:5px;max-height:220px;overflow-y:auto}.XdMBba_chatLine{gap:6px;font-size:11.5px;line-height:1.4;display:flex}.XdMBba_chatName{color:var(--dsw-alias-brand-primary,#2f9c76);text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:70px;overflow:hidden}.XdMBba_chatText{color:var(--dsw-alias-label-primary,#e9ecf2);word-break:break-word}.XdMBba_chatComposer{gap:6px;display:flex}.XdMBba_chatInput{border:1px solid var(--dsw-alias-border-l2,#7f7f7f80);background:var(--dsw-alias-bg-base,#1b1b1c);min-width:0;color:var(--dsw-alias-label-primary,#e9ecf2);font:inherit;border-radius:8px;flex:1;padding:5px 8px;font-size:11.5px}.XdMBba_railFooter{border-top:1px solid var(--dsw-alias-border-l1,#7f7f7f33);color:var(--dsw-alias-label-secondary,#93a0b1);margin-top:auto;padding-top:8px;font-size:11px}.XdMBba_narrowList{flex-direction:column;gap:4px;padding:12px;display:flex}.XdMBba_narrowRow{background:var(--dsw-alias-bg-layer-2,#7f7f7f1a);border-radius:8px;grid-template-columns:1fr auto auto auto;align-items:center;gap:8px;padding:6px 9px;font-size:12px;display:grid}.XdMBba_narrowRowYou{border:1px solid var(--dsw-alias-brand-primary,#2f9c76)}.XdMBba_narrowName{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.XdMBba_narrowStack{font-variant-numeric:tabular-nums}.XdMBba_narrowCards{align-items:center;gap:2px;display:flex}.XdMBba_narrowEmpty{color:var(--felt-ink-dim,#93a0b1);padding:2px 4px;font-size:11.5px}.XdMBba_narrowStatus{color:var(--dsw-alias-label-secondary,#93a0b1);text-align:right;min-width:42px;font-size:10px}@media (width<=899px){.XdMBba_felt{flex-direction:column;gap:10px;min-height:0;padding:12px;display:flex;overflow-y:auto}.XdMBba_center{order:-1;width:100%;position:static;transform:none}.XdMBba_seatsLayer{position:static}.XdMBba_railWrap{display:none}.XdMBba_ownArea,.XdMBba_header{flex-direction:column;align-items:stretch}.XdMBba_handOverBanner{white-space:normal;margin-bottom:8px;position:static;transform:none}}@media (prefers-reduced-motion:reduce){.XdMBba_loadingMark,.XdMBba_toast{animation:none}.XdMBba_btn,.XdMBba_seat{transition:none}}.XdMBba_settle{flex-direction:column;gap:16px;height:100%;padding:22px;display:flex;overflow-y:auto}.XdMBba_settleHead{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.XdMBba_settleTitle{margin:0;font-size:22px}.XdMBba_settleMeta{color:var(--dsw-alias-label-secondary,#93a0b1);margin:4px 0 0;font-size:12px}.XdMBba_settleActions{flex-wrap:wrap;gap:8px;display:flex}.XdMBba_settleTable{border:1px solid var(--dsw-alias-border-l1,#7f7f7f3d);background:var(--dsw-alias-bg-layer-1,#1b1b1c);border-radius:12px;overflow:hidden}.XdMBba_settleRow{font-variant-numeric:tabular-nums;border-top:1px solid var(--dsw-alias-border-l1,#7f7f7f24);grid-template-columns:46px minmax(120px,1.6fr) 60px 60px 100px 80px 80px;align-items:center;gap:8px;padding:9px 12px;font-size:12.5px;display:grid}.XdMBba_settleRow:first-child{border-top:none}.XdMBba_settleRowHead{color:var(--dsw-alias-label-secondary,#93a0b1);background:var(--dsw-alias-bg-layer-2,#7f7f7f14);font-size:11px}.XdMBba_settleRowFirst{background:color-mix(in srgb, var(--dsw-alias-state-warn-primary,#e8c15a) 12%, transparent)}.XdMBba_settleRank{font-size:14px}.XdMBba_settlePlayer{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.XdMBba_settleHistory{flex-direction:column;gap:6px;display:flex}.XdMBba_historyScroll{border:1px solid var(--dsw-alias-border-l1,#7f7f7f3d);background:var(--dsw-alias-bg-layer-1,#1b1b1c);border-radius:10px;flex-direction:column;gap:5px;max-height:260px;padding:8px 10px;display:flex;overflow-y:auto}.XdMBba_settleHandRow{color:var(--dsw-alias-label-secondary,#93a0b1);grid-template-columns:44px 1fr 80px 1fr;align-items:center;gap:8px;font-size:11.5px;display:grid}.XdMBba_settleHandPot{text-align:right;font-variant-numeric:tabular-nums}.XdMBba_settleHandWinners{text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-primary,#e9ecf2);overflow:hidden}@media (width<=899px){.XdMBba_settleRow{grid-template-columns:40px 1fr 48px 48px 84px}.XdMBba_settleRow>:nth-child(6),.XdMBba_settleRow>:nth-child(7){display:none}}.XdMBba_inviteBtn{background:var(--dsw-alias-brand-primary,#2f9c76);color:var(--dsw-alias-bg-base,#fff);border-color:#0000;padding:5px 11px;font-weight:700}.XdMBba_btn.XdMBba_inviteBtn:hover:not(:disabled){background:var(--dsw-alias-brand-primary,#2f9c76);color:var(--dsw-alias-bg-base,#fff);filter:brightness(1.08);border-color:#0000}.XdMBba_sheetBackdrop{z-index:30;background:#00000061;place-items:center;padding:20px;display:grid;position:absolute;inset:0}.XdMBba_sheet{border:1px solid var(--dsw-alias-border-l2,#7f7f7f80);background:var(--dsw-alias-bg-overlay,#1b1b1c);border-radius:14px;flex-direction:column;gap:10px;width:min(560px,100%);max-height:100%;padding:16px;display:flex;overflow-y:auto;box-shadow:0 24px 60px #00000059}.XdMBba_sheetHead{justify-content:space-between;align-items:center;gap:12px;display:flex}.XdMBba_sheetTitle{margin:0;font-size:15px}.XdMBba_inviteWarn{border:1px solid var(--dsw-alias-state-warn-primary,#b7791f);background:color-mix(in srgb, var(--dsw-alias-state-warn-primary,#b7791f) 9%, transparent);border-radius:10px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.XdMBba_inviteWarnTitle{color:var(--dsw-alias-state-warn-primary,#b7791f);margin:0;font-size:12.5px;font-weight:600}.XdMBba_inviteWarnText{color:var(--dsw-alias-label-secondary,#93a0b1);margin:0;font-size:12px;line-height:1.6}.XdMBba_cmdBlock{background:var(--dsw-alias-bg-layer-2,#7f7f7f1f);white-space:pre;border-radius:8px;margin:0;padding:8px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;overflow-x:auto}.XdMBba_urlRow{align-items:center;gap:8px;display:flex}.XdMBba_urlLabel{width:60px;color:var(--dsw-alias-label-secondary,#93a0b1);flex:none;font-size:12px}.XdMBba_urlText{text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--dsw-alias-border-l1,#7f7f7f47);background:var(--dsw-alias-bg-layer-2,#7f7f7f1f);min-width:0;color:var(--dsw-alias-label-primary,#e9ecf2);border-radius:8px;flex:1;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;overflow:hidden}.XdMBba_row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.XdMBba_inviteOk{border:1px solid var(--dsw-alias-state-success-primary,#1f9d63);background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#1f9d63) 9%, transparent);color:var(--dsw-alias-state-success-primary,#1f9d63);border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;font-size:12.5px;display:flex}.XdMBba_inviteError{color:var(--dsw-alias-state-error-primary,#d64545);font-size:11.5px}.XdMBba_sheetNote{color:var(--dsw-alias-label-secondary,#93a0b1);margin:0;font-size:11px;line-height:1.5}.XdMBba_codeLine{border-top:1px solid var(--dsw-alias-border-l1,#7f7f7f33);color:var(--dsw-alias-label-secondary,#93a0b1);justify-content:space-between;align-items:center;gap:10px;padding-top:10px;font-size:12px;display:flex}.XdMBba_inviteLinkRow{align-items:center;gap:8px;display:flex}.XdMBba_inviteLinkInput{border:1px solid var(--dsw-alias-border-l2,#7f7f7f80);background:var(--dsw-alias-bg-base,#fff);min-width:0;color:var(--dsw-alias-label-primary,#141414);border-radius:8px;flex:1;padding:9px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px}";
1083
1092
  const tagId = "@zhuweiyou/dsh-holdem/styles.module.css";
1084
1093
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
1085
1094
  const tag = document.createElement("style");
@@ -1089,234 +1098,237 @@ if (typeof document !== "undefined" && document.querySelector("style[data-plugin
1089
1098
  document.head.appendChild(tag);
1090
1099
  }
1091
1100
  var styles_module_css_default = {
1101
+ "phasePillHand": "XdMBba_phasePillHand",
1102
+ "potRow": "XdMBba_potRow",
1103
+ "lobbyTitle": "XdMBba_lobbyTitle",
1104
+ "ownSlot": "XdMBba_ownSlot",
1105
+ "nameText": "XdMBba_nameText",
1106
+ "cfAuthHint": "XdMBba_cfAuthHint",
1107
+ "card_md": "XdMBba_card_md",
1108
+ "inviteBanner": "XdMBba_inviteBanner",
1109
+ "centerTitle": "XdMBba_centerTitle",
1092
1110
  "settleRowFirst": "XdMBba_settleRowFirst",
1111
+ "potChips": "XdMBba_potChips",
1112
+ "lobbyCenter": "XdMBba_lobbyCenter",
1093
1113
  "settleHandPot": "XdMBba_settleHandPot",
1094
- "ownCards": "XdMBba_ownCards",
1095
- "urlLabel": "XdMBba_urlLabel",
1096
- "historyRow": "XdMBba_historyRow",
1114
+ "seatEmpty": "XdMBba_seatEmpty",
1115
+ "center": "XdMBba_center",
1116
+ "connLive": "XdMBba_connLive",
1097
1117
  "notice": "XdMBba_notice",
1098
- "btnDanger": "XdMBba_btnDanger",
1099
- "cfWaiting": "XdMBba_cfWaiting",
1100
- "ownButtons": "XdMBba_ownButtons",
1101
- "felt": "XdMBba_felt",
1102
- "conn": "XdMBba_conn",
1103
- "potRow": "XdMBba_potRow",
1104
- "settleTable": "XdMBba_settleTable",
1105
- "chatList": "XdMBba_chatList",
1106
- "pos2": "XdMBba_pos2",
1107
- "header": "XdMBba_header",
1108
- "btnGhost": "XdMBba_btnGhost",
1109
- "historyBoard": "XdMBba_historyBoard",
1110
- "netDown": "XdMBba_netDown",
1111
- "fieldLabel": "XdMBba_fieldLabel",
1112
- "nameText": "XdMBba_nameText",
1113
- "handOverBanner": "XdMBba_handOverBanner",
1114
- "hint": "XdMBba_hint",
1118
+ "tabs": "XdMBba_tabs",
1119
+ "railSection": "XdMBba_railSection",
1120
+ "potAmount": "XdMBba_potAmount",
1121
+ "leaderList": "XdMBba_leaderList",
1122
+ "toastError": "XdMBba_toastError",
1123
+ "cfBadge": "XdMBba_cfBadge",
1124
+ "urlText": "XdMBba_urlText",
1125
+ "sheetNote": "XdMBba_sheetNote",
1126
+ "roomTitle": "XdMBba_roomTitle",
1127
+ "seatOut": "XdMBba_seatOut",
1128
+ "historyList": "XdMBba_historyList",
1129
+ "tab": "XdMBba_tab",
1130
+ "copiedTag": "XdMBba_copiedTag",
1131
+ "railFooter": "XdMBba_railFooter",
1132
+ "feltArea": "XdMBba_feltArea",
1115
1133
  "tableBody": "XdMBba_tableBody",
1116
- "settlePlayer": "XdMBba_settlePlayer",
1117
- "btn": "XdMBba_btn",
1118
- "ownName": "XdMBba_ownName",
1119
- "leaderRowYou": "XdMBba_leaderRowYou",
1120
- "cardRank": "XdMBba_cardRank",
1121
- "badgeHost": "XdMBba_badgeHost",
1122
- "netUp": "XdMBba_netUp",
1123
- "leaderRank": "XdMBba_leaderRank",
1124
- "lobbySubtitle": "XdMBba_lobbySubtitle",
1125
- "cardRed": "XdMBba_cardRed",
1134
+ "seatOffline": "XdMBba_seatOffline",
1135
+ "chatComposer": "XdMBba_chatComposer",
1136
+ "seatMeta": "XdMBba_seatMeta",
1137
+ "bannerNext": "XdMBba_bannerNext",
1138
+ "badge": "XdMBba_badge",
1139
+ "settle": "XdMBba_settle",
1140
+ "cardBlack": "XdMBba_cardBlack",
1126
1141
  "cardSuit": "XdMBba_cardSuit",
1127
- "settleRow": "XdMBba_settleRow",
1128
- "settleHistory": "XdMBba_settleHistory",
1129
- "seatActor": "XdMBba_seatActor",
1130
- "seatYou": "XdMBba_seatYou",
1131
- "actionBar": "XdMBba_actionBar",
1132
- "narrowStack": "XdMBba_narrowStack",
1133
- "panel": "XdMBba_panel",
1134
- "connLive": "XdMBba_connLive",
1135
- "seatStack": "XdMBba_seatStack",
1142
+ "historyPot": "XdMBba_historyPot",
1143
+ "ownCards": "XdMBba_ownCards",
1144
+ "raiseSliderRow": "XdMBba_raiseSliderRow",
1145
+ "btnGhost": "XdMBba_btnGhost",
1146
+ "urlRow": "XdMBba_urlRow",
1147
+ "row": "XdMBba_row",
1136
1148
  "railWrap": "XdMBba_railWrap",
1137
- "buildTag": "XdMBba_buildTag",
1149
+ "historyCard": "XdMBba_historyCard",
1150
+ "statusAction": "XdMBba_statusAction",
1151
+ "lobbyBody": "XdMBba_lobbyBody",
1152
+ "hint": "XdMBba_hint",
1153
+ "slider": "XdMBba_slider",
1154
+ "connPolling": "XdMBba_connPolling",
1155
+ "hostActive": "XdMBba_hostActive",
1156
+ "conn": "XdMBba_conn",
1157
+ "handOverBanner": "XdMBba_handOverBanner",
1158
+ "ownArea": "XdMBba_ownArea",
1159
+ "ownStack": "XdMBba_ownStack",
1160
+ "actionTimerLabel": "XdMBba_actionTimerLabel",
1161
+ "seatName": "XdMBba_seatName",
1162
+ "badgeYou": "XdMBba_badgeYou",
1163
+ "chatInput": "XdMBba_chatInput",
1164
+ "cfAuthBox": "XdMBba_cfAuthBox",
1165
+ "badgeBlind": "XdMBba_badgeBlind",
1138
1166
  "headerActions": "XdMBba_headerActions",
1139
- "narrowRow": "XdMBba_narrowRow",
1140
- "sheetBackdrop": "XdMBba_sheetBackdrop",
1141
- "seatMeta": "XdMBba_seatMeta",
1142
- "card_md": "XdMBba_card_md",
1143
- "cmdBlock": "XdMBba_cmdBlock",
1144
- "noticeError": "XdMBba_noticeError",
1145
- "btnWide": "XdMBba_btnWide",
1146
- "inviteBanner": "XdMBba_inviteBanner",
1147
- "seatsLayer": "XdMBba_seatsLayer",
1148
- "chatLine": "XdMBba_chatLine",
1149
- "narrowList": "XdMBba_narrowList",
1150
- "pos4": "XdMBba_pos4",
1151
- "leaderRow": "XdMBba_leaderRow",
1152
- "copiedTag": "XdMBba_copiedTag",
1153
- "seatCards": "XdMBba_seatCards",
1154
- "hostRow": "XdMBba_hostRow",
1155
- "previewCard": "XdMBba_previewCard",
1167
+ "settleRow": "XdMBba_settleRow",
1156
1168
  "settleHead": "XdMBba_settleHead",
1157
1169
  "leaderName": "XdMBba_leaderName",
1158
- "btnChip": "XdMBba_btnChip",
1159
- "presetRow": "XdMBba_presetRow",
1160
- "avatar": "XdMBba_avatar",
1161
- "inputCode": "XdMBba_inputCode",
1162
- "spectatorChip": "XdMBba_spectatorChip",
1170
+ "lobbySubtitle": "XdMBba_lobbySubtitle",
1171
+ "card_lg": "XdMBba_card_lg",
1172
+ "seatsLayer": "XdMBba_seatsLayer",
1173
+ "handName": "XdMBba_handName",
1174
+ "noticeError": "XdMBba_noticeError",
1175
+ "cardBack": "XdMBba_cardBack",
1176
+ "pos1": "XdMBba_pos1",
1177
+ "pos0": "XdMBba_pos0",
1163
1178
  "card": "XdMBba_card",
1164
- "slider": "XdMBba_slider",
1165
- "chatName": "XdMBba_chatName",
1166
- "metaRow": "XdMBba_metaRow",
1167
- "inviteError": "XdMBba_inviteError",
1168
- "lobby": "XdMBba_lobby",
1169
- "badgeYou": "XdMBba_badgeYou",
1170
- "settleRank": "XdMBba_settleRank",
1179
+ "cfWaiting": "XdMBba_cfWaiting",
1171
1180
  "raiseValue": "XdMBba_raiseValue",
1172
- "boardRow": "XdMBba_boardRow",
1173
- "cfBadge": "XdMBba_cfBadge",
1174
- "narrowName": "XdMBba_narrowName",
1175
- "actionTimerLabel": "XdMBba_actionTimerLabel",
1176
- "inviteWarnText": "XdMBba_inviteWarnText",
1177
- "card_sm": "XdMBba_card_sm",
1178
- "phasePillHand": "XdMBba_phasePillHand",
1179
- "cardBack": "XdMBba_cardBack",
1180
- "chatInput": "XdMBba_chatInput",
1181
+ "seat": "XdMBba_seat",
1182
+ "felt": "XdMBba_felt",
1183
+ "inviteBtn": "XdMBba_inviteBtn",
1184
+ "cardRank": "XdMBba_cardRank",
1185
+ "inputCode": "XdMBba_inputCode",
1181
1186
  "loadingMark": "XdMBba_loadingMark",
1182
- "sheetHead": "XdMBba_sheetHead",
1183
- "roomTitle": "XdMBba_roomTitle",
1184
- "headerMain": "XdMBba_headerMain",
1185
- "spectatorKick": "XdMBba_spectatorKick",
1186
- "badgeDealer": "XdMBba_badgeDealer",
1187
- "cfAuthHint": "XdMBba_cfAuthHint",
1187
+ "cfLabel": "XdMBba_cfLabel",
1188
+ "pos5": "XdMBba_pos5",
1188
1189
  "settleHandWinners": "XdMBba_settleHandWinners",
1190
+ "previewSeatFilled": "XdMBba_previewSeatFilled",
1191
+ "btnChip": "XdMBba_btnChip",
1192
+ "seatActor": "XdMBba_seatActor",
1193
+ "leaderRow": "XdMBba_leaderRow",
1194
+ "chatName": "XdMBba_chatName",
1195
+ "previewMeta": "XdMBba_previewMeta",
1196
+ "seatEmptyText": "XdMBba_seatEmptyText",
1197
+ "tabActive": "XdMBba_tabActive",
1198
+ "buildTag": "XdMBba_buildTag",
1199
+ "previewActions": "XdMBba_previewActions",
1200
+ "netFlat": "XdMBba_netFlat",
1201
+ "centerHint": "XdMBba_centerHint",
1202
+ "pos2": "XdMBba_pos2",
1203
+ "leaderRank": "XdMBba_leaderRank",
1204
+ "inviteWarnTitle": "XdMBba_inviteWarnTitle",
1205
+ "cfBadgeOn": "XdMBba_cfBadgeOn",
1206
+ "chatList": "XdMBba_chatList",
1207
+ "cmdBlock": "XdMBba_cmdBlock",
1208
+ "netDown": "XdMBba_netDown",
1209
+ "spectatorCount": "XdMBba_spectatorCount",
1210
+ "seatYou": "XdMBba_seatYou",
1211
+ "settlePlayer": "XdMBba_settlePlayer",
1212
+ "cfBadgeWait": "XdMBba_cfBadgeWait",
1213
+ "statusFolded": "XdMBba_statusFolded",
1214
+ "narrowEmpty": "XdMBba_narrowEmpty",
1215
+ "btnWide": "XdMBba_btnWide",
1216
+ "ownHint": "XdMBba_ownHint",
1217
+ "cfError": "XdMBba_cfError",
1218
+ "narrowStack": "XdMBba_narrowStack",
1219
+ "header": "XdMBba_header",
1220
+ "pos4": "XdMBba_pos4",
1221
+ "streetLabel": "XdMBba_streetLabel",
1222
+ "cfLog": "XdMBba_cfLog",
1223
+ "avatar": "XdMBba_avatar",
1224
+ "previewSeats": "XdMBba_previewSeats",
1225
+ "raiseGroup": "XdMBba_raiseGroup",
1226
+ "panel": "XdMBba_panel",
1227
+ "narrowStatus": "XdMBba_narrowStatus",
1228
+ "sheetTitle": "XdMBba_sheetTitle",
1229
+ "titleRow": "XdMBba_titleRow",
1230
+ "btnPrimary": "XdMBba_btnPrimary",
1231
+ "inviteLinkRow": "XdMBba_inviteLinkRow",
1232
+ "field": "XdMBba_field",
1189
1233
  "actionRow": "XdMBba_actionRow",
1234
+ "cardDim": "XdMBba_cardDim",
1235
+ "presetRow": "XdMBba_presetRow",
1236
+ "hintLink": "XdMBba_hintLink",
1190
1237
  "railChat": "XdMBba_railChat",
1191
- "railFooter": "XdMBba_railFooter",
1192
- "badge": "XdMBba_badge",
1193
- "cfBadgeWait": "XdMBba_cfBadgeWait",
1194
- "pos5": "XdMBba_pos5",
1238
+ "spectatorChip": "XdMBba_spectatorChip",
1239
+ "betChip": "XdMBba_betChip",
1240
+ "cardSlot": "XdMBba_cardSlot",
1241
+ "grow": "XdMBba_grow",
1242
+ "spectatorList": "XdMBba_spectatorList",
1195
1243
  "chatText": "XdMBba_chatText",
1196
- "hostActive": "XdMBba_hostActive",
1244
+ "ownSlotHidden": "XdMBba_ownSlotHidden",
1245
+ "cfRow": "XdMBba_cfRow",
1246
+ "settleHistory": "XdMBba_settleHistory",
1247
+ "card_sm": "XdMBba_card_sm",
1248
+ "inviteError": "XdMBba_inviteError",
1249
+ "urlLabel": "XdMBba_urlLabel",
1250
+ "pos3": "XdMBba_pos3",
1251
+ "leaderRowYou": "XdMBba_leaderRowYou",
1252
+ "seatCards": "XdMBba_seatCards",
1253
+ "settleHandRow": "XdMBba_settleHandRow",
1254
+ "inviteOk": "XdMBba_inviteOk",
1255
+ "settleRank": "XdMBba_settleRank",
1197
1256
  "toastIn": "XdMBba_toastIn",
1198
- "cfAuthBox": "XdMBba_cfAuthBox",
1199
- "leaderList": "XdMBba_leaderList",
1200
- "btnOutline": "XdMBba_btnOutline",
1201
- "lobbyBody": "XdMBba_lobbyBody",
1202
- "loading": "XdMBba_loading",
1203
- "tabs": "XdMBba_tabs",
1204
- "sheet": "XdMBba_sheet",
1257
+ "lobby": "XdMBba_lobby",
1258
+ "ownActions": "XdMBba_ownActions",
1259
+ "badgeDealer": "XdMBba_badgeDealer",
1205
1260
  "narrowRowYou": "XdMBba_narrowRowYou",
1206
- "sidePot": "XdMBba_sidePot",
1207
- "settleTitle": "XdMBba_settleTitle",
1208
- "cfBadgeOn": "XdMBba_cfBadgeOn",
1209
- "cfLabel": "XdMBba_cfLabel",
1210
- "railTitle": "XdMBba_railTitle",
1211
- "historyList": "XdMBba_historyList",
1212
- "historyScroll": "XdMBba_historyScroll",
1213
- "btnRaise": "XdMBba_btnRaise",
1214
- "settleMeta": "XdMBba_settleMeta",
1215
- "cfError": "XdMBba_cfError",
1216
- "seatTop": "XdMBba_seatTop",
1217
- "narrowStatus": "XdMBba_narrowStatus",
1218
- "narrowEmpty": "XdMBba_narrowEmpty",
1219
- "chatComposer": "XdMBba_chatComposer",
1220
- "row": "XdMBba_row",
1221
1261
  "phasePillLobby": "XdMBba_phasePillLobby",
1222
- "seatEmpty": "XdMBba_seatEmpty",
1223
- "spectatorCount": "XdMBba_spectatorCount",
1224
- "railEmpty": "XdMBba_railEmpty",
1225
- "lobbyTitle": "XdMBba_lobbyTitle",
1226
- "seat": "XdMBba_seat",
1227
- "handName": "XdMBba_handName",
1228
- "center": "XdMBba_center",
1229
- "ownArea": "XdMBba_ownArea",
1230
- "cfRow": "XdMBba_cfRow",
1231
- "previewHead": "XdMBba_previewHead",
1232
- "seatOut": "XdMBba_seatOut",
1233
- "spectatorList": "XdMBba_spectatorList",
1234
- "historyPot": "XdMBba_historyPot",
1235
- "inviteBtn": "XdMBba_inviteBtn",
1236
- "connPolling": "XdMBba_connPolling",
1237
- "btnPrimary": "XdMBba_btnPrimary",
1238
- "centerHint": "XdMBba_centerHint",
1239
- "seatName": "XdMBba_seatName",
1240
- "connOffline": "XdMBba_connOffline",
1241
- "streetLabel": "XdMBba_streetLabel",
1242
- "historyCard": "XdMBba_historyCard",
1243
- "inviteWarnTitle": "XdMBba_inviteWarnTitle",
1244
- "lobbyHead": "XdMBba_lobbyHead",
1245
- "card_lg": "XdMBba_card_lg",
1262
+ "historyRow": "XdMBba_historyRow",
1263
+ "seatTop": "XdMBba_seatTop",
1264
+ "btnOutline": "XdMBba_btnOutline",
1265
+ "kickBtn": "XdMBba_kickBtn",
1266
+ "historyScroll": "XdMBba_historyScroll",
1267
+ "spin": "XdMBba_spin",
1246
1268
  "input": "XdMBba_input",
1247
- "raiseHead": "XdMBba_raiseHead",
1248
- "settleHandRow": "XdMBba_settleHandRow",
1249
1269
  "leaderHands": "XdMBba_leaderHands",
1250
- "actionTimerValue": "XdMBba_actionTimerValue",
1251
- "raiseGroup": "XdMBba_raiseGroup",
1252
- "sheetTitle": "XdMBba_sheetTitle",
1253
- "statusMuted": "XdMBba_statusMuted",
1254
- "lobbyCenter": "XdMBba_lobbyCenter",
1255
- "tab": "XdMBba_tab",
1256
- "previewActions": "XdMBba_previewActions",
1257
- "ownMeta": "XdMBba_ownMeta",
1258
- "pos1": "XdMBba_pos1",
1259
- "titleRow": "XdMBba_titleRow",
1270
+ "sheetBackdrop": "XdMBba_sheetBackdrop",
1271
+ "codeLine": "XdMBba_codeLine",
1260
1272
  "toast": "XdMBba_toast",
1261
1273
  "phasePill": "XdMBba_phasePill",
1262
- "timerRing": "XdMBba_timerRing",
1263
- "sheetNote": "XdMBba_sheetNote",
1264
- "toastError": "XdMBba_toastError",
1265
- "seatEmptyText": "XdMBba_seatEmptyText",
1266
- "potAmount": "XdMBba_potAmount",
1267
- "urlText": "XdMBba_urlText",
1268
- "seatOffline": "XdMBba_seatOffline",
1269
- "tabActive": "XdMBba_tabActive",
1270
- "urlRow": "XdMBba_urlRow",
1271
- "seatStatus": "XdMBba_seatStatus",
1272
- "field": "XdMBba_field",
1273
- "statusAllIn": "XdMBba_statusAllIn",
1274
- "potChips": "XdMBba_potChips",
1275
- "centerActions": "XdMBba_centerActions",
1276
- "historyNo": "XdMBba_historyNo",
1277
- "previewSeat": "XdMBba_previewSeat",
1278
- "pos3": "XdMBba_pos3",
1279
- "cardBlack": "XdMBba_cardBlack",
1280
- "cardSlot": "XdMBba_cardSlot",
1281
- "bannerTitle": "XdMBba_bannerTitle",
1282
- "spin": "XdMBba_spin",
1283
- "feltArea": "XdMBba_feltArea",
1284
- "cfLog": "XdMBba_cfLog",
1285
- "cfPanel": "XdMBba_cfPanel",
1286
- "previewSeatFilled": "XdMBba_previewSeatFilled",
1287
- "kickBtn": "XdMBba_kickBtn",
1288
- "ownStack": "XdMBba_ownStack",
1289
- "centerTitle": "XdMBba_centerTitle",
1290
- "settle": "XdMBba_settle",
1291
- "codeChip": "XdMBba_codeChip",
1292
- "inviteOk": "XdMBba_inviteOk",
1293
- "pos0": "XdMBba_pos0",
1294
- "previewSeats": "XdMBba_previewSeats",
1295
- "betChip": "XdMBba_betChip",
1296
- "cardDim": "XdMBba_cardDim",
1274
+ "netUp": "XdMBba_netUp",
1275
+ "connOffline": "XdMBba_connOffline",
1276
+ "metaRow": "XdMBba_metaRow",
1277
+ "railTitle": "XdMBba_railTitle",
1278
+ "sheet": "XdMBba_sheet",
1297
1279
  "inviteWarn": "XdMBba_inviteWarn",
1298
- "grow": "XdMBba_grow",
1299
- "statusFolded": "XdMBba_statusFolded",
1300
- "bannerNext": "XdMBba_bannerNext",
1280
+ "settleMeta": "XdMBba_settleMeta",
1281
+ "btn": "XdMBba_btn",
1282
+ "headerMain": "XdMBba_headerMain",
1283
+ "inviteWarnText": "XdMBba_inviteWarnText",
1301
1284
  "btnCall": "XdMBba_btnCall",
1285
+ "loading": "XdMBba_loading",
1286
+ "historyBoard": "XdMBba_historyBoard",
1302
1287
  "actionTimer": "XdMBba_actionTimer",
1303
- "badgeBlind": "XdMBba_badgeBlind",
1304
- "netFlat": "XdMBba_netFlat",
1305
- "rail": "XdMBba_rail",
1306
- "ownHint": "XdMBba_ownHint",
1307
- "statusAction": "XdMBba_statusAction",
1308
- "sidePots": "XdMBba_sidePots",
1309
- "railSection": "XdMBba_railSection",
1310
- "narrowCards": "XdMBba_narrowCards",
1311
- "inviteLinkInput": "XdMBba_inviteLinkInput",
1312
- "settleActions": "XdMBba_settleActions",
1313
1288
  "bannerDeltas": "XdMBba_bannerDeltas",
1314
- "table": "XdMBba_table",
1315
- "previewMeta": "XdMBba_previewMeta",
1289
+ "settleActions": "XdMBba_settleActions",
1290
+ "cardRed": "XdMBba_cardRed",
1291
+ "timerRing": "XdMBba_timerRing",
1292
+ "chatLine": "XdMBba_chatLine",
1293
+ "narrowCards": "XdMBba_narrowCards",
1316
1294
  "settleRowHead": "XdMBba_settleRowHead",
1317
- "hintLink": "XdMBba_hintLink",
1318
- "codeLine": "XdMBba_codeLine",
1319
- "inviteLinkRow": "XdMBba_inviteLinkRow"
1295
+ "statusAllIn": "XdMBba_statusAllIn",
1296
+ "settleTable": "XdMBba_settleTable",
1297
+ "sheetHead": "XdMBba_sheetHead",
1298
+ "table": "XdMBba_table",
1299
+ "sidePot": "XdMBba_sidePot",
1300
+ "actionBar": "XdMBba_actionBar",
1301
+ "seatStack": "XdMBba_seatStack",
1302
+ "inviteLinkInput": "XdMBba_inviteLinkInput",
1303
+ "rail": "XdMBba_rail",
1304
+ "badgeHost": "XdMBba_badgeHost",
1305
+ "statusMuted": "XdMBba_statusMuted",
1306
+ "historyNo": "XdMBba_historyNo",
1307
+ "lobbyHead": "XdMBba_lobbyHead",
1308
+ "cfPanel": "XdMBba_cfPanel",
1309
+ "narrowRow": "XdMBba_narrowRow",
1310
+ "actionTimerValue": "XdMBba_actionTimerValue",
1311
+ "settleTitle": "XdMBba_settleTitle",
1312
+ "fieldLabel": "XdMBba_fieldLabel",
1313
+ "ownName": "XdMBba_ownName",
1314
+ "btnDanger": "XdMBba_btnDanger",
1315
+ "btnRaise": "XdMBba_btnRaise",
1316
+ "previewHead": "XdMBba_previewHead",
1317
+ "previewCard": "XdMBba_previewCard",
1318
+ "railEmpty": "XdMBba_railEmpty",
1319
+ "sidePots": "XdMBba_sidePots",
1320
+ "narrowList": "XdMBba_narrowList",
1321
+ "codeChip": "XdMBba_codeChip",
1322
+ "ownButtons": "XdMBba_ownButtons",
1323
+ "centerActions": "XdMBba_centerActions",
1324
+ "hostRow": "XdMBba_hostRow",
1325
+ "ownMeta": "XdMBba_ownMeta",
1326
+ "bannerTitle": "XdMBba_bannerTitle",
1327
+ "spectatorKick": "XdMBba_spectatorKick",
1328
+ "previewSeat": "XdMBba_previewSeat",
1329
+ "boardRow": "XdMBba_boardRow",
1330
+ "narrowName": "XdMBba_narrowName",
1331
+ "seatStatus": "XdMBba_seatStatus"
1320
1332
  };
1321
1333
 
1322
1334
  //#endregion
@@ -1497,7 +1509,7 @@ function writePref(key, value) {
1497
1509
  } catch {}
1498
1510
  }
1499
1511
  function buildLabel() {
1500
- const date = new Date("2026-10-25T08:59:38.945Z");
1512
+ const date = new Date("2026-10-25T09:18:56.876Z");
1501
1513
  const stamp = date && !Number.isNaN(date.getTime()) ? date.toLocaleTimeString(void 0, { hour12: false }).slice(0, 5) : "";
1502
1514
  return stamp ? `@zhuweiyou/dsh-holdem · build ${stamp}` : "@zhuweiyou/dsh-holdem · dev";
1503
1515
  }
@@ -1928,7 +1940,7 @@ function buildMarkdown(view) {
1928
1940
 
1929
1941
  //#endregion
1930
1942
  //#region src/client/ActionBar.tsx
1931
- function ActionBar({ legal, potTotal, bigBlind, busy, secondsLeft, onAction }) {
1943
+ function ActionBar({ legal, potTotal, bigBlind, busy, active = true, secondsLeft, onAction }) {
1932
1944
  const [raiseTo, setRaiseTo] = (0, react.useState)(legal.minRaiseTo);
1933
1945
  const lastLegal = (0, react.useRef)(`${legal.minRaiseTo}:${legal.maxRaiseTo}:${legal.canRaise}`);
1934
1946
  (0, react.useEffect)(() => {
@@ -1943,8 +1955,11 @@ function ActionBar({ legal, potTotal, bigBlind, busy, secondsLeft, onAction }) {
1943
1955
  legal.canRaise
1944
1956
  ]);
1945
1957
  const step = Math.max(1, Math.round(bigBlind / 2));
1946
- const raiseDisabled = !legal.canRaise || busy;
1947
- const presets = legal.canRaise ? [
1958
+ const locked = busy || !active;
1959
+ const raiseDisabled = !legal.canRaise || locked;
1960
+ const minTo = legal.canRaise ? legal.minRaiseTo : 0;
1961
+ const maxTo = legal.canRaise ? legal.maxRaiseTo : 0;
1962
+ const presets = [
1948
1963
  {
1949
1964
  label: t("table.halfPot"),
1950
1965
  value: presetTo(legal, potTotal, .5)
@@ -1957,8 +1972,9 @@ function ActionBar({ legal, potTotal, bigBlind, busy, secondsLeft, onAction }) {
1957
1972
  label: t("table.potBet"),
1958
1973
  value: presetTo(legal, potTotal, 1)
1959
1974
  }
1960
- ] : [];
1975
+ ];
1961
1976
  (0, react.useEffect)(() => {
1977
+ if (!active) return void 0;
1962
1978
  const onKey = (event) => {
1963
1979
  const target = event.target;
1964
1980
  if (target && (target.tagName === "INPUT" || target.tagName === "TEXTAREA" || target.isContentEditable)) return;
@@ -1967,17 +1983,20 @@ function ActionBar({ legal, potTotal, bigBlind, busy, secondsLeft, onAction }) {
1967
1983
  else if (key === "c" && (legal.canCheck || legal.canCall)) onAction(legal.canCheck ? { type: "check" } : { type: "call" });
1968
1984
  else if (key === "r" && legal.canRaise) onAction({
1969
1985
  type: "raise",
1970
- to: clamp(raiseTo, legal.minRaiseTo, legal.maxRaiseTo)
1986
+ to: clamp(raiseTo, minTo, maxTo)
1971
1987
  });
1972
1988
  };
1973
1989
  window.addEventListener("keydown", onKey);
1974
1990
  return () => window.removeEventListener("keydown", onKey);
1975
1991
  }, [
1992
+ active,
1976
1993
  legal,
1977
1994
  onAction,
1978
- raiseTo
1995
+ raiseTo,
1996
+ minTo,
1997
+ maxTo
1979
1998
  ]);
1980
- const isAllIn = legal.canRaise && raiseTo >= legal.maxRaiseTo;
1999
+ const isAllIn = legal.canRaise && raiseTo >= maxTo;
1981
2000
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1982
2001
  className: styles_module_css_default.actionBar,
1983
2002
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
@@ -1995,69 +2014,70 @@ function ActionBar({ legal, potTotal, bigBlind, busy, secondsLeft, onAction }) {
1995
2014
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
1996
2015
  type: "button",
1997
2016
  className: cx(styles_module_css_default.btn, styles_module_css_default.btnGhost),
1998
- disabled: !legal.canFold || busy,
2017
+ disabled: !legal.canFold || locked,
1999
2018
  onClick: () => onAction({ type: "fold" }),
2000
2019
  children: t("table.fold")
2001
2020
  }),
2002
2021
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2003
2022
  type: "button",
2004
2023
  className: cx(styles_module_css_default.btn, styles_module_css_default.btnCall),
2005
- disabled: busy || !legal.canCheck && !legal.canCall,
2024
+ disabled: locked || !legal.canCheck && !legal.canCall,
2006
2025
  onClick: () => onAction(legal.canCheck ? { type: "check" } : { type: "call" }),
2007
2026
  children: legal.canCheck ? t("table.check") : t("table.call", { amount: formatChips(legal.callAmount) })
2008
2027
  }),
2009
- legal.canRaise ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2028
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2010
2029
  className: styles_module_css_default.raiseGroup,
2011
- children: [
2012
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2013
- className: styles_module_css_default.raiseHead,
2014
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2015
- className: styles_module_css_default.raiseValue,
2016
- children: isAllIn ? t("table.allinAction") : formatChips(raiseTo)
2017
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2018
- className: styles_module_css_default.presetRow,
2019
- children: [presets.map((preset) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2020
- type: "button",
2021
- className: cx(styles_module_css_default.btn, styles_module_css_default.btnChip),
2022
- disabled: raiseDisabled,
2023
- onClick: () => setRaiseTo(clamp(preset.value, legal.minRaiseTo, legal.maxRaiseTo)),
2024
- children: preset.label
2025
- }, preset.label)), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2026
- type: "button",
2027
- className: cx(styles_module_css_default.btn, styles_module_css_default.btnChip),
2028
- disabled: raiseDisabled,
2029
- onClick: () => setRaiseTo(legal.maxRaiseTo),
2030
- children: t("table.max")
2031
- })]
2032
- })]
2033
- }),
2034
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
2035
- className: styles_module_css_default.slider,
2036
- type: "range",
2037
- min: legal.minRaiseTo,
2038
- max: legal.maxRaiseTo,
2039
- step,
2040
- value: clamp(raiseTo, legal.minRaiseTo, legal.maxRaiseTo),
2030
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2031
+ className: styles_module_css_default.presetRow,
2032
+ children: [presets.map((preset) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2033
+ type: "button",
2034
+ className: cx(styles_module_css_default.btn, styles_module_css_default.btnChip),
2041
2035
  disabled: raiseDisabled,
2042
- onChange: (event) => setRaiseTo(Number(event.target.value))
2043
- }),
2044
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2036
+ onClick: () => setRaiseTo(clamp(preset.value, minTo, maxTo)),
2037
+ children: preset.label
2038
+ }, preset.label)), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2045
2039
  type: "button",
2046
- className: cx(styles_module_css_default.btn, styles_module_css_default.btnRaise),
2040
+ className: cx(styles_module_css_default.btn, styles_module_css_default.btnChip),
2047
2041
  disabled: raiseDisabled,
2048
- onClick: () => onAction({
2049
- type: "raise",
2050
- to: clamp(raiseTo, legal.minRaiseTo, legal.maxRaiseTo)
2042
+ onClick: () => setRaiseTo(maxTo),
2043
+ children: t("table.max")
2044
+ })]
2045
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2046
+ className: styles_module_css_default.raiseSliderRow,
2047
+ children: [
2048
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2049
+ className: styles_module_css_default.raiseValue,
2050
+ children: legal.canRaise ? isAllIn ? t("table.allinAction") : formatChips(raiseTo) : "—"
2051
2051
  }),
2052
- children: isAllIn ? t("table.allinAction") : t("table.raiseTo", { amount: formatChips(clamp(raiseTo, legal.minRaiseTo, legal.maxRaiseTo)) })
2053
- })
2054
- ]
2055
- }) : null
2052
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
2053
+ className: styles_module_css_default.slider,
2054
+ type: "range",
2055
+ min: minTo,
2056
+ max: maxTo,
2057
+ step,
2058
+ value: clamp(raiseTo, minTo, maxTo),
2059
+ disabled: raiseDisabled,
2060
+ onChange: (event) => setRaiseTo(Number(event.target.value))
2061
+ }),
2062
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2063
+ type: "button",
2064
+ className: cx(styles_module_css_default.btn, styles_module_css_default.btnRaise),
2065
+ disabled: raiseDisabled,
2066
+ onClick: () => onAction({
2067
+ type: "raise",
2068
+ to: clamp(raiseTo, minTo, maxTo)
2069
+ }),
2070
+ children: !legal.canRaise ? t("table.noRaise") : isAllIn ? t("table.allinAction") : t("table.raiseTo", { amount: formatChips(clamp(raiseTo, minTo, maxTo)) })
2071
+ })
2072
+ ]
2073
+ })]
2074
+ })
2056
2075
  ]
2057
2076
  })]
2058
2077
  });
2059
2078
  }
2060
2079
  function presetTo(legal, pot, fraction) {
2080
+ if (!legal.canRaise) return 0;
2061
2081
  return clamp(legal.minRaiseTo + Math.round(Math.max(pot, legal.minRaiseTo) * fraction), legal.minRaiseTo, legal.maxRaiseTo);
2062
2082
  }
2063
2083
 
@@ -2468,7 +2488,8 @@ function Table({ view }) {
2468
2488
  const hand = view.hand;
2469
2489
  const room = view.room;
2470
2490
  const youSeat = view.you.seat;
2471
- const actor = view.you.canAct && view.you.legal ? t("table.yourTurn") : actorLabel(view);
2491
+ const acting = view.you.canAct && view.you.legal !== null;
2492
+ const actor = acting ? t("table.yourTurn") : actorLabel(view);
2472
2493
  const secondsLeft = useCountdown(hand?.deadlineAt ?? null);
2473
2494
  const nextHandSeconds = useCountdown(room.nextHandAt);
2474
2495
  const isHost = room.hostPlayerId === view.you.playerId;
@@ -2746,34 +2767,46 @@ function Table({ view }) {
2746
2767
  })
2747
2768
  ]
2748
2769
  })]
2749
- }), view.you.canAct && view.you.legal ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ActionBar, {
2750
- legal: view.you.legal,
2751
- potTotal: hand?.potTotal ?? 0,
2752
- bigBlind: room.settings.bb,
2753
- busy: state$1.busy,
2754
- secondsLeft,
2755
- onAction: act
2756
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2757
- className: styles_module_css_default.ownHint,
2758
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: room.phase === "hand" && hand ? actor : room.phase === "handOver" ? t("table.paused") : t("table.waiting") }), room.phase === "lobby" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2759
- className: styles_module_css_default.ownButtons,
2760
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2761
- type: "button",
2762
- className: cx(styles_module_css_default.btn, styles_module_css_default.btnOutline),
2763
- disabled: state$1.busy,
2764
- onClick: () => void runCommand({
2765
- type: "ready",
2766
- ready: !view.you.ready
2767
- }),
2768
- children: view.you.ready ? t("table.unready") : t("table.ready")
2769
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2770
- type: "button",
2771
- className: cx(styles_module_css_default.btn, styles_module_css_default.btnGhost),
2772
- disabled: state$1.busy,
2773
- onClick: () => void runCommand({ type: "stand" }),
2774
- children: t("table.stand")
2775
- })]
2776
- }) : null]
2770
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2771
+ className: styles_module_css_default.ownActions,
2772
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2773
+ className: cx(styles_module_css_default.ownSlot, !acting && styles_module_css_default.ownSlotHidden),
2774
+ "aria-hidden": !acting,
2775
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ActionBar, {
2776
+ legal: view.you.legal ?? IDLE_LEGAL,
2777
+ potTotal: hand?.potTotal ?? 0,
2778
+ bigBlind: room.settings.bb,
2779
+ busy: state$1.busy,
2780
+ active: acting,
2781
+ secondsLeft: acting ? secondsLeft : null,
2782
+ onAction: act
2783
+ })
2784
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2785
+ className: cx(styles_module_css_default.ownSlot, acting && styles_module_css_default.ownSlotHidden),
2786
+ "aria-hidden": acting,
2787
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2788
+ className: styles_module_css_default.ownHint,
2789
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: room.phase === "hand" && hand ? actor : room.phase === "handOver" ? t("table.paused") : t("table.waiting") }), room.phase === "lobby" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
2790
+ className: styles_module_css_default.ownButtons,
2791
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2792
+ type: "button",
2793
+ className: cx(styles_module_css_default.btn, styles_module_css_default.btnOutline),
2794
+ disabled: state$1.busy,
2795
+ onClick: () => void runCommand({
2796
+ type: "ready",
2797
+ ready: !view.you.ready
2798
+ }),
2799
+ children: view.you.ready ? t("table.unready") : t("table.ready")
2800
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
2801
+ type: "button",
2802
+ className: cx(styles_module_css_default.btn, styles_module_css_default.btnGhost),
2803
+ disabled: state$1.busy,
2804
+ onClick: () => void runCommand({ type: "stand" }),
2805
+ children: t("table.stand")
2806
+ })]
2807
+ }) : null]
2808
+ })
2809
+ })]
2777
2810
  })] })
2778
2811
  })]
2779
2812
  }),
@@ -2797,6 +2830,21 @@ function Table({ view }) {
2797
2830
  });
2798
2831
  }
2799
2832
  const RAIL_KEY = "holdem:rail";
2833
+ /**
2834
+ * 轮不到你的时候行动条只是「占位」(`active: false`),这组数值只为撑住高度,
2835
+ * 真实操作一律以服务端下发的 `LegalActions` 为准。
2836
+ */
2837
+ const IDLE_LEGAL = {
2838
+ canFold: false,
2839
+ canCheck: false,
2840
+ canCall: false,
2841
+ callAmount: 0,
2842
+ canRaise: true,
2843
+ minRaiseTo: 0,
2844
+ maxRaiseTo: 0,
2845
+ canAllIn: false,
2846
+ allInTo: 0
2847
+ };
2800
2848
  function readRailPref() {
2801
2849
  try {
2802
2850
  return localStorage.getItem(RAIL_KEY) !== "closed";