/* ==========================================================================
   03 · TABLE — stage, felt, HUD, pot, seats orbit, opponent cards
   ========================================================================== */

.table-stage{
  position:relative;min-height:0;
  /* 大字号加高 AI 信息卡轨道：下限/上限随 --ui-widen（桌面字号加宽系数）提升，
     1.12 档 238→254px、1.25 档 238→271px，卡内 名字/关系/倾向/行动 各行不再溢出卡底；
     让出的高度由公共牌区收缩补偿（见 adaptive.css 的 font-band 规则）。
     字号 1.0 及以下 widen=1，轨道保持原值。 */
  --player-rail-h:clamp(calc(238px * (1 + (var(--ui-widen) - 1) * .32)),40%,calc(288px * (1 + (var(--ui-widen) - 1) * .32)));
  border-radius:var(--r-lg);
  border:1px solid var(--line-1);
  /* 大层背景（发牌区后方）纳入背景磨砂滑杆：透明度与磨砂都随 --scrim-scale */
  background:
    radial-gradient(90% 70% at 50% 34%,rgba(255,255,255,calc(.035 * var(--scrim-scale))),transparent 60%),
    linear-gradient(180deg,rgba(8,11,15,calc(.55 * var(--scrim-scale))),rgba(8,11,15,calc(.78 * var(--scrim-scale))));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.045),var(--shadow-1);
  backdrop-filter:blur(calc(8px * var(--scrim-scale)));
  overflow:visible;
}

/* felt panel — rounded rectangle spanning the community zone (HUD lives outside it) */
.poker-table{
  position:absolute;left:4%;right:4%;top:calc(var(--player-rail-h) + 26px);bottom:10px;
  border-radius:26px;
  background:
    radial-gradient(130% 140% at 50% 10%,color-mix(in srgb,var(--felt-1) 88%,#fff 9%) 0%,var(--felt-1) 46%,var(--felt-2) 88%);
  border:2px solid color-mix(in srgb,var(--felt-rim) 82%,#0c0804);
  box-shadow:
    0 0 0 7px color-mix(in srgb,var(--felt-rim) 70%,#160f08),
    0 0 0 9px rgba(0,0,0,.58),
    inset 0 0 84px rgba(0,0,0,.46),
    inset 0 2px 18px rgba(255,255,255,.07),
    0 30px 70px rgba(0,0,0,.5);
}
body[data-table-surface="hidden"] .poker-table,
body[data-table-surface="hidden"] .environment-decor,
body[data-table-surface="hidden"] .table-orbit{display:none}
/* NOTE: .table-center-hud is a sibling of .poker-table — hiding the felt surface
   never touches the community cards, pot, street badge or pause button */
.table-orbit{
  position:absolute;left:2%;right:2%;top:5%;bottom:5%;
  border-radius:22px;border:1px dashed rgba(255,255,255,.09);pointer-events:none;
}
.environment-decor span{position:absolute;pointer-events:none}
.environment-plaque{
  position:absolute;left:calc(4% + 16px);top:calc(var(--player-rail-h) + 10px);z-index:2;
  padding:4px 14px;border-radius:99px;
  font-size:.6rem;font-weight:800;letter-spacing:.34em;text-transform:uppercase;
  color:color-mix(in srgb,var(--accent) 75%,#fff);
  background:rgba(0,0,0,.3);border:1px solid var(--line-1);
  backdrop-filter:blur(6px);white-space:nowrap;
}

/* ---------- center HUD ---------------------------------------------------- */
/* sibling of the felt (never hidden with it), z-index above the seat rail (22).
   Desktop: three rows — [street | action order | pause] / community / pot */
.table-center-hud{
  position:absolute;left:50%;right:auto;top:auto;bottom:30px;transform:translateX(-50%);
  z-index:23;pointer-events:none;
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-rows:auto auto auto;
  align-items:center;justify-items:center;column-gap:12px;row-gap:8px;
  padding:0 20px;width:min(80%,820px);min-width:min(560px,92%);
}
.table-top-hud{display:contents}
/* short stages (≤768px-tall windows, ±25% stress): the bottom-anchored HUD must
   never ride up into the seat rail — clamp its top below the rail band */
@media (min-width:1001px){
  .table-center-hud{bottom:clamp(6px, min(30px, calc(100% - var(--player-rail-h) - 242px)), 30px)}
}
.street-badge{
  grid-column:1;grid-row:1;justify-self:end;
  padding:6px 18px;border-radius:99px;
  background:rgba(6,9,12,.72);border:1px solid var(--accent-line);
  color:var(--accent);font-family:var(--font-display);
  font-size:.78rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;
  box-shadow:0 6px 20px rgba(0,0,0,.4),0 0 24px var(--accent-glow);
  backdrop-filter:blur(8px);white-space:nowrap;
}
/* showdown: the stage badge takes the action-track slot (which is only the
   "等待下一轮" placeholder then) — centered directly above the community cards.
   z stays below the dialogue layer (40) so speech bubbles may cover it. */
.street-badge.showdown{
  grid-column:1/-1;grid-row:1;justify-self:center;position:relative;z-index:24;
  border-color:color-mix(in srgb,var(--gold) 65%,transparent);color:var(--gold);
  box-shadow:0 8px 24px rgba(0,0,0,.5),0 0 30px rgba(237,174,73,.35);
}
.table-center-hud:has(.street-badge.showdown) .action-track{visibility:hidden}
.action-track{
  grid-column:2;grid-row:1;justify-self:stretch;
  display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px 6px;
  padding:5px 12px;border-radius:99px;
  background:rgba(6,9,12,.55);border:1px solid var(--line-1);
  font-size:.66rem;color:var(--tx-2);
  backdrop-filter:blur(8px);
}
.action-track strong{color:var(--tx-3);font-size:.58rem;font-weight:800;letter-spacing:.1em;margin-right:2px;flex:none}
.action-track span{flex:none;white-space:nowrap}
.action-track span.now{color:var(--live,#ffd166);font-weight:800}
.action-track span.blind{color:var(--tx-1);font-weight:600}
.action-track .arrow{color:var(--tx-3);flex:none}
.board-caption{display:none} /* folded into the 3-row HUD design */
.community{grid-column:1/-1;grid-row:2;display:flex;gap:9px;min-height:92px;align-items:center;justify-content:center;pointer-events:none}
.pot-box{
  grid-column:1/-1;grid-row:3;
  display:flex;align-items:baseline;gap:9px;margin-top:4px;
  padding:8px 22px;border-radius:14px;
  background:rgba(6,9,12,.66);border:1px solid color-mix(in srgb,var(--gold) 40%,transparent);
  box-shadow:0 10px 26px rgba(0,0,0,.42),0 0 30px rgba(237,174,73,.12);
  backdrop-filter:blur(8px);
  transition:opacity .22s ease,visibility .22s ease;
}
.pot-box span{font-size:.62rem;font-weight:800;letter-spacing:.2em;color:var(--tx-3)}
.pot-box strong{
  font-family:var(--font-num);font-size:1.35rem;font-weight:700;color:var(--gold);
  font-variant-numeric:tabular-nums;letter-spacing:.02em;
  text-shadow:0 2px 14px rgba(237,174,73,.35);
}
.pot-box small{font-family:var(--font-display);font-size:.54rem;letter-spacing:.26em;color:var(--tx-3)}
/* street segment inside the pot — portrait-only (see 08); hidden elsewhere */
.pot-street{display:none}

/* ---------- pause control (row 1 of the HUD on desktop) -------------------- */
.table-pause-btn{
  position:static;transform:none;grid-column:3;grid-row:1;justify-self:start;
  z-index:30;pointer-events:auto;
  display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 15px;
  border-radius:99px;border:1px solid var(--line-2);
  background:rgba(8,11,15,.82);color:var(--tx-2);
  backdrop-filter:blur(10px);box-shadow:0 10px 26px rgba(0,0,0,.4);
  transition:border-color var(--t-fast),color var(--t-fast),transform var(--t-fast);
}
.table-pause-btn:hover:not(:disabled){border-color:var(--line-3);color:var(--tx-1);transform:translateY(-1px)}
.table-pause-btn:disabled{opacity:.4}
.table-pause-btn.is-paused{border-color:var(--gold);color:var(--gold)}
.table-pause-icon{font-size:.8rem;font-weight:900}
.table-pause-copy{display:flex;flex-direction:column;align-items:flex-start;line-height:1.1}
.table-pause-copy strong{font-size:.68rem;font-weight:800;letter-spacing:.04em}
.table-pause-copy small{font-size:.52rem;color:var(--tx-3)}
/* paused: the stage overlay dims everything (a filter on the felt itself would
   re-anchor the absolute HUD inside it — do not add one) */
.table-stage.game-paused-state::after{
  content:"";position:absolute;inset:0;z-index:29;border-radius:inherit;pointer-events:none;
  background:rgba(5,7,10,.34);backdrop-filter:grayscale(.4);
}

/* ---------- seats: opponent rail across the top of the stage --------------- */
/* desktop: a single backdrop panel the width of the felt; the carousel JS
   (12-carousel.css) positions the cards inside it by transform */
#seats{
  position:absolute;left:4%;right:4%;top:7px;height:var(--player-rail-h);z-index:22;
  display:flex;flex-wrap:nowrap;align-items:stretch;gap:8px;
  padding:11px 10px 13px;
  overflow-x:auto;overflow-y:visible;
  scrollbar-width:none;pointer-events:auto;
  border-radius:18px;border:1px solid var(--line-1);
  background:linear-gradient(180deg,rgba(10,14,19,calc(.78 * var(--scrim-scale))),rgba(8,11,15,calc(.6 * var(--scrim-scale))));
  box-shadow:0 14px 34px rgba(0,0,0,.4),inset 0 1px 0 rgba(255,255,255,.05);
  backdrop-filter:blur(calc(10px * var(--scrim-scale)));
}
#seats::-webkit-scrollbar{display:none}
.seat{
  position:relative!important;
  width:calc(222px * var(--ui-widen));pointer-events:auto;z-index:11;
}
.seat.compact{width:calc(208px * var(--ui-widen))}
.seat.dense{width:calc(194px * var(--ui-widen))}
.table-stage[data-density="compact"] .seat{width:calc(208px * var(--ui-widen))}
.table-stage[data-density="dense"] .seat{width:calc(194px * var(--ui-widen))}
.seat.active{z-index:14}

/* seat-top badges ride over the card's top edge — keep them translucent so
   the card border behind doesn't visually clash */
.role-strip{
  position:absolute;left:50%;top:-11px;transform:translateX(-50%);z-index:5;
  display:flex;gap:4px;opacity:.82;
}
.role-badge{
  display:grid;place-items:center;min-width:22px;height:20px;padding:0 6px;
  border-radius:7px;font-family:var(--font-display);font-size:.56rem;font-weight:700;letter-spacing:.05em;
  background:var(--ink-3);border:1px solid var(--line-2);color:var(--tx-2);
  box-shadow:0 4px 10px rgba(0,0,0,.4);
  white-space:nowrap; /* 行动等双字徽标不允许换行 */
}
.role-badge.d{background:linear-gradient(180deg,#f4f7fa,#c9d2dd);color:#151a22;border-color:#fff}
/* SB/BB：磨砂颗粒感盲注徽标——近不透明底 + 背板模糊 + 细颗粒纹理，避免之前的
   高透明蓝在复杂背景上发虚 */
.role-badge.sb,.role-badge.bb{
  background:
    repeating-linear-gradient(135deg,rgba(255,255,255,.045) 0 1px,transparent 1px 3px),
    linear-gradient(180deg,rgba(30,48,72,.92),rgba(17,27,43,.94));
  border-color:rgba(120,182,240,.62);color:#b3d6f6;
  backdrop-filter:blur(5px);
  text-shadow:0 1px 2px rgba(0,0,0,.5);
}
.role-badge.order{color:var(--tx-3)}
.role-badge.turn{
  opacity:1; /* the acting badge stays fully visible */
  background:var(--gold);border-color:var(--gold);color:#241604;font-weight:700;
  box-shadow:0 0 16px rgba(237,174,73,.5);
  animation:turnPulse 1.6s ease-in-out infinite;
}
@keyframes turnPulse{50%{box-shadow:0 0 26px rgba(237,174,73,.75)}}

/* ---------- opponent HUD card --------------------------------------------- */
.player-box{
  position:relative;display:flex;flex-direction:column;height:100%;
  border-radius:var(--r-md);border:1px solid var(--line-1);
  /* AI 信息卡背景同样纳入磨砂滑杆 */
  background:linear-gradient(170deg,rgba(22,27,36,calc(.94 * var(--scrim-scale))),rgba(13,16,22,calc(.94 * var(--scrim-scale))));
  box-shadow:0 14px 34px rgba(0,0,0,.42),inset 0 1px 0 rgba(255,255,255,.05);
  backdrop-filter:blur(calc(10px * var(--scrim-scale)));
  transition:border-color var(--t-med),box-shadow var(--t-med),opacity var(--t-med),filter var(--t-med),background var(--t-med);
}
.seat.active .player-box{
  border-color:var(--gold);
  box-shadow:0 14px 34px rgba(0,0,0,.5),0 0 0 1px var(--gold),0 0 34px rgba(237,174,73,.28);
}
/* AI thinking: a stream of light runs around the acting seat's card border.
   The halo paints BEHIND the card (the card itself masks the center) — no
   masks, no compositing tricks, so the card can never be covered or hidden.
   Without @property support the arc simply stays static instead of rotating. */
@property --seat-flow{syntax:"<angle>";inherits:false;initial-value:0deg}
.seat.thinking::before{
  content:"";position:absolute;inset:-3px;z-index:0;pointer-events:none;
  border-radius:calc(var(--r-md) + 3px);
  background:conic-gradient(from var(--seat-flow),
    transparent 0deg 292deg,
    color-mix(in srgb,var(--gold) 42%,transparent) 316deg,
    var(--gold) 336deg,#fff6dc 345deg,var(--gold) 354deg,transparent 360deg);
  animation:seatFlow 1.5s linear infinite;
}
.seat.thinking .player-box{position:relative;z-index:1;border-color:color-mix(in srgb,var(--gold) 55%,transparent)}
@keyframes seatFlow{to{--seat-flow:360deg}}
/* 在局静态边框：仍持有底牌的席位（未在思考）也有一圈静止的淡金描边——
   与思考流光同一几何语言（同样的 -3px 外环），但不旋转、亮度更低，
   让“仍在局中”与“弃牌/出局”的灰态一眼可辨。 */
.seat.in-hand:not(.thinking)::before{
  content:"";position:absolute;inset:-3px;z-index:0;pointer-events:none;
  border-radius:calc(var(--r-md) + 3px);
  background:conic-gradient(from 208deg,
    color-mix(in srgb,var(--gold) 38%,transparent),
    color-mix(in srgb,var(--accent) 26%,transparent) 36%,
    color-mix(in srgb,var(--gold) 14%,transparent) 62%,
    color-mix(in srgb,var(--gold) 38%,transparent));
}
.seat.in-hand:not(.thinking) .player-box{position:relative;z-index:1;border-color:color-mix(in srgb,var(--gold) 42%,transparent)}
/* the floating AI-wait capsule is retired on every client — thinking is shown
   by the flowing border on the acting seat's card */
.mobile-ai-wait{display:none!important}
.seat.folded .player-box{opacity:.58;filter:saturate(.5)}
.seat.busted .player-box{opacity:.4;filter:grayscale(.8)}
.seat.all-in .player-box{border-color:color-mix(in srgb,var(--gold) 65%,transparent)}

/* expression tells — 激进 red · 露怯 green · 扑克脸 neutral */
.player-box.expression-aggressive,.player-box.expression-timid{--expression-signal:transparent}
.player-box.expression-aggressive{
  --expression-signal:#c9656d;
  border-color:color-mix(in srgb,var(--expression-signal) 62%,var(--line-1));
  background:
    radial-gradient(circle at 88% 12%,color-mix(in srgb,var(--expression-signal) 25%,transparent),transparent 45%),
    linear-gradient(170deg,color-mix(in srgb,#161c26 84%,var(--expression-signal) 16%),color-mix(in srgb,#0d1016 92%,#2d0d12));
  box-shadow:
    inset 4px 0 0 color-mix(in srgb,var(--expression-signal) 72%,transparent),
    0 14px 34px rgba(0,0,0,.42),
    0 0 24px color-mix(in srgb,var(--expression-signal) 22%,transparent);
}
.player-box.expression-timid{
  --expression-signal:#6ba77c;
  border-color:color-mix(in srgb,var(--expression-signal) 58%,var(--line-1));
  background:
    radial-gradient(circle at 88% 12%,color-mix(in srgb,var(--expression-signal) 24%,transparent),transparent 46%),
    linear-gradient(170deg,color-mix(in srgb,#161c26 85%,var(--expression-signal) 15%),color-mix(in srgb,#0d1016 93%,#0c2618));
  box-shadow:
    inset 4px 0 0 color-mix(in srgb,var(--expression-signal) 68%,transparent),
    0 14px 34px rgba(0,0,0,.42),
    0 0 24px color-mix(in srgb,var(--expression-signal) 20%,transparent);
}
.seat.active .player-box.expression-aggressive,
.seat.active .player-box.expression-timid{
  box-shadow:
    inset 4px 0 0 color-mix(in srgb,var(--expression-signal) 76%,transparent),
    0 14px 34px rgba(0,0,0,.5),
    0 0 0 1px var(--gold),
    0 0 34px rgba(237,174,73,.28),
    0 0 26px color-mix(in srgb,var(--expression-signal) 24%,transparent);
}

.player-card-head{
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;
  padding:7px 11px 6px;
}
.avatar-shell{position:relative;flex:none}
.avatar{
  width:36px;height:36px;display:grid;place-items:center;
  border-radius:11px;font-size:.95rem;
  background:linear-gradient(160deg,var(--ink-4),var(--ink-2));
  border:1px solid var(--line-2);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07);
}
button.avatar,.character-flag-button{cursor:pointer;transition:border-color var(--t-fast),transform var(--t-fast)}
button.avatar:hover,.character-flag-button:hover{border-color:var(--accent-line);transform:scale(1.05)}
.presence-dot{
  position:absolute;right:-2px;bottom:-2px;width:10px;height:10px;border-radius:50%;
  background:var(--green);border:2px solid var(--panel-solid);
}
.presence-dot.external{background:var(--blue)}
.player-identity{min-width:0}
.player-name-line{display:flex;align-items:center;gap:6px;min-width:0}
.player-name{
  min-width:0;font-size:.86rem;font-weight:800;line-height:1.2;letter-spacing:.01em;
  color:var(--seat-name-color,var(--tx-1));
}
.player-name .name-line{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.relation-mark{color:var(--accent);font-size:.7rem;flex:none;opacity:.85}
.player-engine-mark{
  flex:none;font-family:var(--font-display);font-size:.48rem;font-weight:700;letter-spacing:.12em;
  padding:2px 5px;border-radius:5px;background:rgba(255,255,255,.06);color:var(--tx-3);
}
.player-engine-mark.remote{background:var(--blue-soft);color:var(--blue)}
.player-engine-mark.local{color:var(--tx-3)}
.player-engine-mark.human-engine-mark{background:var(--green-soft);color:var(--green)}
.stack-block{display:flex;flex-direction:column;align-items:flex-end;gap:0;line-height:1.12}
.stack-block span{font-size:.46rem;font-weight:800;letter-spacing:.12em;color:var(--tx-3);text-transform:uppercase}
.stack-block strong{font-family:var(--font-num);font-size:.9rem;font-weight:700;font-variant-numeric:tabular-nums}
.stack-block small{font-size:.54rem;font-weight:600;color:var(--tx-3);font-variant-numeric:tabular-nums}

.player-status-bar{display:flex;gap:5px;padding:0 11px 5px}
.status-chip,.position-chip{
  display:inline-flex;align-items:center;height:19px;padding:0 8px;
  border-radius:6px;font-size:.56rem;font-weight:800;letter-spacing:.05em;
  background:rgba(255,255,255,.05);color:var(--tx-2);border:1px solid transparent;
}
.status-chip.active{background:var(--gold-soft,#f5d9a822);border-color:rgba(237,174,73,.5);color:var(--gold)}
.status-chip.waiting{color:var(--tx-3)}
.status-chip.folded{background:var(--red-soft);color:var(--red)}
.status-chip.busted{background:rgba(255,255,255,.05);color:var(--tx-3)}
.status-chip.allin{background:var(--gold-soft,#f5d9a822);border-color:rgba(237,174,73,.55);color:var(--gold)}
.position-chip{margin-left:auto;color:var(--tx-3)}

.player-visual-row{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin:0 10px;padding:5px 9px;
  border-radius:10px;background:rgba(0,0,0,.26);border:1px solid var(--line-1);
}
.hole-card-block{display:flex;flex-direction:column;gap:4px}
.micro-label{display:flex;align-items:baseline;gap:6px}
.micro-label span{font-size:.5rem;font-weight:800;letter-spacing:.14em;color:var(--tx-3);text-transform:uppercase}
.micro-label b{font-size:.5rem;font-weight:700;color:var(--tx-2)}
.mini-cards{display:flex;gap:4px;min-height:37px}
.expression-display{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  width:40px;height:40px;flex:none;border-radius:10px;
  background:rgba(255,255,255,.04);border:1px solid var(--line-1);
}
.expression-display .face{font-size:1.05rem;line-height:1}
.expression-display .face-label{font-size:.44rem;font-weight:700;letter-spacing:.04em;color:var(--tx-3)}
.expression-display.aggressive{
  border-color:color-mix(in srgb,#c9656d 58%,var(--line-1));
  background:linear-gradient(145deg,rgba(121,40,49,.34),rgba(42,12,17,.28));
  box-shadow:inset 0 0 14px rgba(201,101,109,.10),0 0 12px rgba(201,101,109,.10);
}
.expression-display.timid{
  border-color:color-mix(in srgb,#6ba77c 54%,var(--line-1));
  background:linear-gradient(145deg,rgba(48,103,66,.32),rgba(11,39,22,.27));
  box-shadow:inset 0 0 14px rgba(107,167,124,.10),0 0 12px rgba(107,167,124,.09);
}
.expression-display.poker_face{border-color:var(--line-2)}

.relationship-summary{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  margin:5px 10px 0;padding:3px 8px;border-radius:8px;
  font-size:.56rem;border:1px solid var(--relation-panel-border,var(--line-1));
  background:var(--relation-panel-bg,rgba(255,255,255,.03));
  box-shadow:0 0 14px var(--relation-panel-glow,transparent);
}
.relationship-label{font-weight:800;letter-spacing:.1em;color:var(--relation-panel-label,var(--tx-3));text-transform:uppercase;font-size:.5rem}
.relationship-value{font-weight:700;color:var(--relation-panel-value,var(--tx-2));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.player-card-foot{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin-top:auto;padding:5px 11px 13px; /* extra bottom room: the wager pill straddles the card edge */
}
.last-action{display:flex;flex-direction:column;gap:0;min-width:0}
/* 行高压紧：卡片内容曾溢出卡底 6px，导致下注胶囊遮住最近行动 */
.last-action span{font-size:.44rem;font-weight:800;letter-spacing:.12em;color:var(--tx-3);text-transform:uppercase;line-height:1.25}
.last-action strong{font-size:.62rem;font-weight:700;color:var(--tx-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:104px;line-height:1.35}
.player-tendencies{display:flex;gap:8px;flex:none}
.tendency{display:flex;flex-direction:column;align-items:center;gap:1px}
.tendency span{font-size:.44rem;font-weight:800;letter-spacing:.08em;color:var(--tx-3)}
.tendency b{font-family:var(--font-num);font-size:.6rem;font-weight:700;color:var(--tx-2)}

/* wager pill pinned under the card — vertical center sits on the card's bottom edge.
   min-width keeps the pill a constant size; the +N increment floats above it
   (out of flow, opacity-only pop) so a changing wager never resizes the pill */
.seat-wager{
  position:absolute;left:50%;bottom:-18px;transform:translateX(-50%);z-index:6;
  display:flex;align-items:center;justify-content:center;gap:7px;height:26px;min-width:150px;padding:0 11px;
  border-radius:99px;white-space:nowrap;
  background:rgba(8,11,15,.92);border:1px solid var(--line-2);
  box-shadow:0 8px 18px rgba(0,0,0,.45);
  font-size:.6rem;
}
.seat-wager.live{border-color:color-mix(in srgb,var(--gold) 55%,transparent);box-shadow:0 8px 18px rgba(0,0,0,.45),0 0 18px rgba(237,174,73,.16)}
.seat-wager label{font-size:.5rem;font-weight:800;letter-spacing:.1em;color:var(--tx-3);text-transform:uppercase}
.seat-wager-total{font-family:var(--font-num);font-weight:700;font-size:.72rem;color:var(--gold);font-variant-numeric:tabular-nums}
.seat-wager.idle .seat-wager-total{color:var(--tx-3)}
.wager-increment{
  position:absolute;left:50%;top:-13px;transform:translateX(-50%);pointer-events:none;
  font-family:var(--font-num);font-weight:700;font-size:.62rem;color:var(--green);
  opacity:0;transition:opacity var(--t-fast);
}
.wager-increment.active{opacity:1;animation:wagerPop .8s var(--ease-out)}
.wager-increment.empty{opacity:0}
@keyframes wagerPop{0%{opacity:0}35%{opacity:1}100%{opacity:1}}
.wager-changing{animation:wagerFlash .5s var(--ease-out)}
@keyframes wagerFlash{0%{color:var(--gold)}40%{color:#fff;text-shadow:0 0 12px rgba(237,174,73,.8)}100%{}}
.chip-stack{display:inline-flex;flex:none}
.chip-stack i{
  width:12px;height:12px;border-radius:50%;margin-left:-5px;
  background:radial-gradient(circle at 35% 30%,#f6d98a,var(--gold-deep) 70%);
  border:1.5px dashed rgba(255,255,255,.65);
  box-shadow:0 2px 4px rgba(0,0,0,.5);
}
.chip-stack i:first-child{margin-left:0}

/* mobile-only snapshot hidden on desktop */
.mobile-player-snapshot{display:none}
.mobile-rail-hint{display:none}
