/* 21 点 · 多桌 · 统一牌桌 HUD（design2/ui-system.md §2 · 样稿 design2/screens/hud-bj-*.png · 迁移说明 docs/hud.md）
   骨架（Z0 顶栏 / Z1 细屏 / Z2 台面 / Z3 rail / Z4 抽屉 / Z5 (i)）在 css/table-hud.css；这里只放 21 点自己的：
   细屏（奖池 + 荷官最近几手）· 深蓝半月台 · 荷官牌 · 台布印字 · 每一格（牌 → 主注圈 → 对子 / 7's）· 结果条 · 规则全文弹窗。
   尺寸都是 dp（1280×720 设计稿，整页 zoom = k）；字号只用 --fs-l / --fs-m / --fs-s；台布上只用 tx-1 / tx-2 / --print。 */

/* ============ 骨架：HUD 自己有顶栏，不留全站顶栏的 48 ============ */
#bjScreen > .content.bj-root{margin-top:0;padding:0;position:relative;overflow:hidden;flex:1;min-height:0;}

/* ============ Z1 细屏：LUCKY 7s 奖池 · 荷官最近 18 手 ============ */
.bj-lcd{height:100%;display:flex;align-items:center;gap:22px;padding:0 16px;min-width:0;}
.bj-lcd .sp{flex:1;min-width:0;}
.bj-jp{display:flex;align-items:baseline;gap:10px;font-family:var(--serif);font-size:var(--fs-s);letter-spacing:.16em;color:var(--warn);white-space:nowrap;position:relative;z-index:1;}
.bj-jp b{font-weight:400;font-size:var(--fs-l);letter-spacing:.02em;color:var(--brass-100);font-variant-numeric:tabular-nums lining-nums;}
.bj-dh{display:flex;gap:3px;align-items:center;overflow:hidden;min-width:0;position:relative;z-index:1;}
.bj-dh i{width:28px;height:28px;border-radius:3px;flex:none;display:flex;align-items:center;justify-content:center;font:var(--fs-s)/1 var(--serif);font-style:normal;
  color:var(--lcd-1);background:#0f1a22;box-shadow:0 0 0 1px var(--lcd-line) inset;font-variant-numeric:tabular-nums lining-nums;}
.bj-dh i.x{background:#5a1a20;color:#ffc9c9;}
.bj-dh i.bj{background:#3b3212;color:var(--brass-100);}
.bj-dh i.u{color:var(--lcd-2);}

/* ============ Z2 半月台：深蓝台布，下沿是弧（台面比 felt 区多出 40 藏在 rail 下面，弧线正好接住 rail） ============ */
.bj-tbl{bottom:-40px;border-radius:18px 18px 50% 50% / 18px 18px 26% 26%;}
.bj-cloth{bottom:14px;border-radius:8px 8px 50% 50% / 8px 8px 26% 26%;--f5:var(--navy-500);--f7:var(--navy-700);--f9:var(--navy-900);
  box-shadow:0 0 0 2px var(--brass-700) inset,0 0 0 3px rgba(0,0,0,.6) inset,0 12px 30px rgba(0,0,0,.45) inset;}
/* 台布最下面 26 藏在 rail 下面：你的位置往上挪 */
.bj-cloth .th-you{bottom:36px;}
.bj-cloth .th-menu{bottom:78px;}

/* 荷官：倒计时正下方 */
#bjDealerZone{position:absolute;left:50%;top:84px;transform:translateX(-50%);z-index:4;display:flex;align-items:flex-start;}
.bjx-cards.dealer{display:flex;align-items:flex-start;--card-w:58px;--card-h:82px;min-height:82px;min-width:58px;}
.bjx-cards.dealer .card+.card{margin-left:-24px;}
.bx-tot{position:absolute;top:-10px;right:-20px;min-width:30px;height:24px;padding:0 7px;border-radius:12px;z-index:3;
  background:rgba(0,0,0,.72);border:1px solid var(--brass-700);font:var(--fs-m)/22px var(--serif);color:var(--brass-100);text-align:center;white-space:nowrap;
  font-variant-numeric:tabular-nums lining-nums;}
.bx-tot:empty{display:none;}
.bx-tot.bust{color:#ffb3a8;}

/* 台布印字（荷官下面两行；赔率 / 保险的细节进 (i)） */
.bj-prints{position:absolute;left:20%;right:20%;top:188px;display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none;z-index:1;}
.bj-print{font-family:var(--serif);font-size:var(--fs-m);letter-spacing:.34em;padding-left:.34em;color:var(--print);opacity:.8;white-space:nowrap;}
.bj-print1{font-family:var(--serif);font-size:var(--fs-s);letter-spacing:.16em;color:var(--print);opacity:.62;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;}

/* 结果条：倒计时的原位（发牌 / 结算时倒计时藏起来） */
.bj-result{position:absolute;left:50%;top:10px;transform:translateX(-50%);z-index:7;min-width:140px;padding:6px 16px 7px;text-align:center;
  background:linear-gradient(180deg,rgba(20,12,8,.94),rgba(10,6,4,.94));border:1px solid var(--brass-500);border-radius:3px;
  box-shadow:var(--shadow-2),0 0 24px rgba(255,200,120,.15);font-family:var(--serif);color:var(--brass-100);white-space:nowrap;}
.bj-result .h{font-size:var(--fs-m);letter-spacing:.2em;color:var(--tx-1);}
.bj-result .m{font-size:var(--fs-l);line-height:1.1;margin-top:2px;font-variant-numeric:tabular-nums lining-nums;}
.bj-result .g-good{color:var(--good);} .bj-result .g-bad{color:var(--bad);}

/* ============ 每一格：结果标签 → 牌（点数牌子）→ 注圈一排 → 座位号 ============
   位置由 blackjack.js 写成 left:calc(50% ± sinθ × (50% − 70px) + dx) / bottom:px；你的框 --s = 1，别人的 0.78（站着时都 0.84）。
   宽度 0 + 居中对齐：每一格以锚点为中心，内容向两边长。 */
#bjSlots{position:absolute;inset:0;pointer-events:none;z-index:5;}
.bjx-box{position:absolute;width:0;display:flex;flex-direction:column;align-items:center;transform:scale(var(--s,1));transform-origin:50% 100%;
  pointer-events:none;font-variant-numeric:lining-nums;transition:filter var(--t-norm);}
.bx-lbl{height:18px;line-height:18px;font-family:var(--serif);font-size:var(--fs-s);letter-spacing:.06em;color:var(--tx-2);white-space:nowrap;}
.bx-lbl.win{color:var(--good);} .bx-lbl.lose{color:#ffb3a8;} .bx-lbl.push{color:var(--tx-2);} .bx-lbl.dim{color:var(--tx-2);opacity:.6;}
.bx-lbl.me{color:var(--brass-100);letter-spacing:.12em;}
.bx-hand{min-height:90px;display:flex;align-items:flex-end;justify-content:center;}
.bjx-cards.sl-cards{display:flex;gap:10px;align-items:flex-end;justify-content:center;}
.bjx-hand{position:relative;display:flex;padding:3px;border-radius:6px;border:1px solid transparent;transition:border-color var(--t-fast),box-shadow var(--t-fast);}
.bjx-hand .hc{display:flex;--card-w:58px;--card-h:82px;min-height:82px;}
.bjx-hand .hc .card+.card{margin-left:calc(var(--card-w) * -.58);}
.bjx-hand.dbl .hc .card:last-child{transform:rotate(90deg);margin-left:calc(var(--card-w) * -.3);margin-right:calc((var(--card-h) - var(--card-w)) / 2);}
.bjx-hand .ht{position:absolute;top:-10px;right:-18px;min-width:30px;height:24px;padding:0 7px;border-radius:12px;z-index:3;
  background:rgba(0,0,0,.72);border:1px solid var(--brass-700);font:var(--fs-m)/22px var(--serif);color:var(--brass-100);text-align:center;white-space:nowrap;
  font-variant-numeric:tabular-nums lining-nums;}
.bjx-hand .ht:empty{display:none;}
.bjx-hand .ht.bust{color:#ffb3a8;}
.bjx-hand.acting{border-color:var(--brass-300);box-shadow:0 0 18px rgba(231,201,127,.3);}
/* 分成 2 / 3 手：牌缩小并排 */
.sl-cards[data-n="2"] .hc{--card-w:44px;--card-h:62px;min-height:62px;}
.sl-cards[data-n="3"] .hc{--card-w:36px;--card-h:51px;min-height:51px;}
.sl-cards[data-n="2"] .ht,.sl-cards[data-n="3"] .ht{font-size:var(--fs-s);height:20px;line-height:18px;min-width:24px;padding:0 5px;right:-12px;}
.sl-cards[data-n="2"],.sl-cards[data-n="3"]{gap:14px;}

/* 注圈一排：主注圈 64 正对这手牌；两边 30 的小圈（你的：对子 · 7's；别人的：跟注 · 对子）。台布印线：实线双圈，不填色 */
.bx-bet{display:flex;align-items:center;gap:8px;margin-top:10px;height:64px;margin-bottom:20px;}
.bx-gap{width:30px;flex:none;}
.bjx-ring{position:relative;flex:none;border-radius:50%;cursor:pointer;pointer-events:auto;display:flex;align-items:center;justify-content:center;
  border:2px solid rgba(217,191,126,.7);background:rgba(0,0,0,.08);box-shadow:0 0 0 1px rgba(0,0,0,.35) inset;
  transition:border-color var(--t-fast),box-shadow var(--t-fast);}
.bjx-ring.main{width:64px;height:64px;}
.bjx-ring.main::after{content:"";position:absolute;inset:3px;border-radius:50%;border:1px solid rgba(217,191,126,.3);pointer-events:none;}
.bjx-ring.side{width:30px;height:30px;border-width:1.5px;border-color:rgba(217,191,126,.55);}
.bjx-ring:hover{border-color:var(--brass-300);}
.bjx-ring label{font:var(--fs-s)/1 var(--serif);color:var(--print);pointer-events:none;}
.bjx-ring.jp{border-color:rgba(247,164,60,.7);} .bjx-ring.jp label{color:#f5c98f;}
.bjx-ring .st{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;line-height:0;}
.bjx-ring em{position:absolute;left:50%;top:100%;transform:translateX(-50%);margin-top:4px;font:var(--fs-s)/1 var(--serif);font-style:normal;color:var(--brass-100);
  white-space:nowrap;pointer-events:none;font-variant-numeric:tabular-nums lining-nums;}
.bjx-ring.side em{display:none;}
.bjx-ring.has{box-shadow:0 0 0 2px var(--brass-300) inset,0 0 16px rgba(231,201,127,.3);}
.bjx-ring.has label{opacity:0;}
.bjx-ring.won{border-color:var(--brass-100);box-shadow:0 0 0 2px var(--brass-100) inset,0 0 22px rgba(247,233,196,.4);}
.bjx-ring.won em{color:var(--good);}
.bjx-box.mine .bjx-ring.main{border-color:var(--brass-300);}
.bjx-ring.npcm{cursor:default;border-color:rgba(217,191,126,.45);}
.bjx-ring.npcm:hover{border-color:rgba(217,191,126,.45);}
.bjx-ring.npcm.has{box-shadow:none;}
.bjx-ring.open{border-color:rgba(217,191,126,.26);background:transparent;box-shadow:none;}
.bjx-ring.open::after{border-color:rgba(217,191,126,.12);}
.bjx-ring.open:hover,.bjx-box.ask .bjx-ring.open{border-color:var(--brass-300);}

/* 座位号（+ 名字 / 空位按钮 / 保险额） */
.bx-nm{height:24px;display:flex;align-items:center;gap:6px;font-size:var(--fs-s);color:var(--tx-2);white-space:nowrap;}
.bx-nm b{font-family:var(--serif);font-weight:400;color:var(--brass-300);}
.bx-ins{color:var(--brass-100);font-family:var(--serif);}
.bx-ins:empty{display:none;}
.bx-btn{pointer-events:auto;height:24px;padding:0 9px;border-radius:var(--r-1);border:1px solid var(--brass-900);background:rgba(10,7,5,.55);
  color:var(--tx-2);font-size:var(--fs-s);font-family:var(--sans);cursor:pointer;letter-spacing:.04em;}
.bx-btn:hover{border-color:var(--brass-500);color:var(--brass-100);}
/* 空位平时只有空圈 + 座位号；坐着时点空圈才出「加押 · 换座」 */
.bx-ask{display:none;gap:6px;}
.bjx-box.ask .bx-ask{display:flex;}
/* 你的框：座位号点开「你的位置」小菜单（起身 / 让出 / 跟加倍）；坐下后不再单独放牌子（ui-system.md §2 21 点） */
.bjx-box.mine .bx-nm b{pointer-events:auto;cursor:pointer;min-width:24px;height:24px;line-height:24px;text-align:center;border-radius:50%;}
.bjx-box.mine .bx-nm b:hover{color:var(--brass-100);box-shadow:0 0 0 1px var(--brass-700) inset;}
.bj-cloth.seated .th-you{display:none;}
/* 别人的框缩 0.78：名字、标签用 15 dp，缩完还有 12 */
.bjx-box.npc .bx-nm,.bjx-box.empty .bx-nm,.bjx-box.npc .bx-lbl{font-size:var(--fs-m);}
.bjx-box.empty .bx-btn{font-size:var(--fs-m);height:28px;}
/* 别人的框：名字前的写实小头像（js/core/portraits.js），比名字行高一点，上下各探出 4px，不把框顶高 */
.bjx-box.npc .bx-nm .pt-seat{--pts:32px;margin:-4px 0;}
.bjx-box.turn .bx-nm,.bjx-box.turn .bx-nm b{color:var(--brass-100);}
.bjx-box.sitout{filter:saturate(.6) brightness(.8);}
.bjx-box.myturn .bx-nm b{color:var(--brass-100);}
/* 站着的时候：你没有框，正前方的空位 / 别人的框一样大 */
.bj-cloth:not(.seated) .bjx-box.empty .bjx-ring.open{border-color:rgba(217,191,126,.4);}

/* ============ 手洗牌靴（铂金厅，.bj-cloth.shoe）：荷官左手 = 你视角右边是牌靴，右手 = 左边是废牌盘 ============
   牌靴：侧窗里看得见一叠牌的边（长度 = 靴里还剩几张，按 8 副满靴的比例），黄色切牌卡插在里面；切牌卡出来了就躺在靴口旁边 + LAST HAND。
   废牌盘：一叠背面朝上的牌，越打越厚（侧边随张数长高）。洗牌（BJ.SHUFFLE_MS）：两半叠一下一下交错，理齐、插切牌卡，推回靴里。
   位置和大小由 blackjack.js renderShoe 按张数写 width / height / left，这里只管样子。 */
.bj-shoe,.bj-disc,.bj-shuf{display:none;pointer-events:none;}
.bj-cloth.shoe .bj-shoe,.bj-cloth.shoe .bj-disc{display:block;}
.bj-cloth.shoe.shuffling .bj-shuf{display:block;}
.bj-shoe{position:absolute;left:calc(50% + 176px);top:50px;width:156px;height:46px;z-index:3;transform:rotate(-6deg);transform-origin:0 50%;}
.sh-box{position:absolute;inset:0;border-radius:3px 9px 9px 3px;
  background:linear-gradient(180deg,#3d2c1d 0%,#22170e 55%,#140d08 100%);
  box-shadow:0 0 0 1px var(--brass-900),0 1px 0 rgba(255,220,160,.14) inset,0 -1px 0 rgba(0,0,0,.5) inset,0 7px 14px rgba(0,0,0,.55);}
.sh-box::before{content:"";position:absolute;left:4px;right:8px;top:3px;height:1px;background:linear-gradient(90deg,transparent,rgba(217,191,126,.45),transparent);}
/* 靴口（荷官这一头）：露出下一张的牌背 */
.sh-mouth{position:absolute;left:-10px;top:6px;width:24px;height:34px;border-radius:3px;background:var(--card-back-red) center/100% 100% no-repeat;
  box-shadow:0 0 0 1px rgba(0,0,0,.45),0 2px 5px rgba(0,0,0,.5);transform:rotate(-4deg);}
.bj-shoe.empty .sh-mouth{opacity:0;}
.sh-win{position:absolute;left:22px;right:12px;top:13px;height:20px;border-radius:2px;background:#0a0705;box-shadow:0 0 0 1px rgba(0,0,0,.7) inset,0 1px 0 rgba(255,220,160,.08);}
.sh-stack{position:absolute;left:0;top:2px;bottom:2px;width:0;border-radius:1px;
  background:repeating-linear-gradient(90deg,#f1ebdf 0 1px,#c7bca8 1px 2px);box-shadow:0 0 0 1px rgba(0,0,0,.25) inset;transition:width .35s ease;}
.sh-stack::after{content:"";position:absolute;right:-7px;top:-2px;bottom:-2px;width:7px;border-radius:1px;background:linear-gradient(90deg,#6b5238,#2b1e12);}   /* 压牌块 */
.sh-cut{position:absolute;top:-5px;bottom:-1px;width:2px;margin-left:-1px;background:#d9ab3f;box-shadow:0 0 0 1px rgba(0,0,0,.35);transition:left .35s ease;}
.bj-shoe.out .sh-cut,.bj-shoe.shuf .sh-cut{display:none;}
/* 切牌卡出来：放在靴口旁边 */
.sh-cutout{position:absolute;left:-2px;top:44px;width:30px;height:9px;border-radius:1px;background:linear-gradient(180deg,#e2b54a,#b8892a);
  box-shadow:0 1px 3px rgba(0,0,0,.5);transform:rotate(9deg);opacity:0;transition:opacity .3s ease;}
.bj-shoe.out .sh-cutout{opacity:1;}
.bj-shoe.shuf .sh-cutout{opacity:0;}
.bj-last{position:absolute;left:36px;top:52px;padding:3px 8px 2px;border-radius:2px;background:rgba(10,7,5,.78);box-shadow:0 0 0 1px var(--brass-700) inset;
  font:normal var(--fs-s)/1.2 var(--serif);letter-spacing:.2em;color:var(--brass-100);white-space:nowrap;transform:rotate(6deg);opacity:0;transition:opacity .3s ease;}
.bj-shoe.last .bj-last{opacity:1;}

.bj-disc{position:absolute;right:calc(50% + 176px);top:50px;width:78px;height:74px;z-index:3;transform:rotate(6deg);}
.dc-tray{position:absolute;left:0;right:0;bottom:0;height:62px;border-radius:4px;
  background:linear-gradient(180deg,rgba(52,38,26,.92),rgba(18,12,8,.96));
  box-shadow:0 0 0 1px var(--brass-900),0 1px 0 rgba(255,220,160,.12) inset,0 7px 14px rgba(0,0,0,.5);}
.dc-pile{position:absolute;left:12px;right:12px;bottom:8px;height:46px;}
.dc-side{position:absolute;left:0;right:0;bottom:0;height:0;border-radius:0 0 2px 2px;
  background:repeating-linear-gradient(180deg,#efe8da 0 1px,#bfb39d 1px 2px);box-shadow:0 0 0 1px rgba(0,0,0,.3);transition:height .35s ease;}
.dc-top{position:absolute;left:0;right:0;bottom:0;height:32px;border-radius:2px;background:var(--card-back-red) center/100% 100% no-repeat;
  box-shadow:0 0 0 1px rgba(0,0,0,.35);transition:bottom .35s ease,opacity .3s ease;}
.bj-disc.empty .dc-top{opacity:0;}

/* 洗牌：台面正中，两半叠（侧面看一叠牌的边）交错、理齐，最后推向牌靴 */
.bj-shuf{position:absolute;left:50%;top:124px;width:0;height:0;z-index:4;}
.bj-shuf i{position:absolute;top:0;width:70px;height:16px;border-radius:0 0 2px 2px;background:repeating-linear-gradient(90deg,#f1ebdf 0 1px,#c7bca8 1px 2px);
  box-shadow:0 0 0 1px rgba(0,0,0,.35),0 6px 10px rgba(0,0,0,.45);transition:transform .3s ease,opacity .3s ease;}
.bj-shuf i::before{content:"";position:absolute;left:0;right:0;bottom:100%;height:30px;border-radius:2px 2px 0 0;
  background:var(--card-back-red) center/100% 100% no-repeat;box-shadow:0 0 0 1px rgba(0,0,0,.35);}   /* 一叠牌：上面是牌背，下面是牌边 */
.bj-shuf em{position:absolute;left:0;top:30px;transform:translateX(-50%);padding:3px 8px 2px;border-radius:2px;background:rgba(10,7,5,.78);box-shadow:0 0 0 1px var(--brass-700) inset;
  font:normal var(--fs-s)/1.2 var(--serif);letter-spacing:.2em;color:var(--brass-100);white-space:nowrap;transition:opacity .3s ease;}
.bj-shuf[data-st=load] em{opacity:0;}
.bj-shuf i.l{left:-78px;} .bj-shuf i.r{left:8px;}
.bj-shuf[data-st=rif] i.l{transform:translateX(22px) rotate(-7deg);}
.bj-shuf[data-st=rif] i.r{transform:translateX(-22px) rotate(7deg);}
.bj-shuf[data-st=sq] i.l{transform:translateX(35px);} .bj-shuf[data-st=sq] i.r{transform:translateX(-35px);}
.bj-shuf[data-st=sq] i.r::after{content:"";position:absolute;left:44%;top:-4px;bottom:-1px;width:2px;background:#d9ab3f;}
.bj-shuf[data-st=load] i.l,.bj-shuf[data-st=load] i.r{transform:translateX(190px) translateY(-34px) rotate(-6deg);opacity:0;}
.bj-shuf[data-st=load] i.l{transform:translateX(225px) translateY(-34px) rotate(-6deg);}

/* (i) 弹层底下一排键（规则全文） */
.th-pop-f{display:flex;justify-content:flex-end;gap:8px;margin-top:8px;}

/* ============ Z4 抽屉：7 个座位点（从左到右 = 7 号位 … 1 号位），你的座位空心亮圈；轮到你 ============ */
.bjdots i.me{background:transparent;border-color:var(--brass-100);box-shadow:0 0 0 1px var(--brass-100) inset;}
.tcard .thumb b.bjwarn,.tcard .l2 b.bjwarn{font-weight:400;color:var(--warn);font-size:var(--fs-s);margin-left:10px;letter-spacing:.06em;}

/* ============ 矮窗口（布局高 < 720）：半月台压扁一点 ============ */
@container vp (max-height:680px){
  #bjDealerZone{top:78px;}
  .bjx-cards.dealer{--card-w:50px;--card-h:70px;min-height:70px;}
  .bj-prints{top:164px;}
  .bjx-hand .hc{--card-w:50px;--card-h:70px;min-height:70px;}
  .bx-hand{min-height:78px;}
}

/* ============ 竖长窗口（布局高 > 宽，比如 iPad 竖屏 1032×1244；电脑版 16:9 不会命中）：荷官区往下挪 ============
   半月台比设计稿（台布 530 高）高出一大截：座位沿弧边在底下，荷官区（倒计时 / 结果条 / 牌靴 / 弃牌架 / 洗牌 / 荷官牌 / 印字）钉在顶边，
   中间空一大片。多出来的高度 E 的 30% 垫在荷官区上面（同 css/baccarat.css 竖长窗口段；cq 长度除以 --cqz，见 js/core/scale.js）。 */
@container vp (orientation:portrait){
  html:not(.m) .bj-cloth{container-type:size;--bj-drop:calc(max(0px,calc(100cqh / var(--cqz,1) - 530px)) * .3);}
  html:not(.m) .bj-cloth .th-ring{top:calc(8px + var(--bj-drop));}
  html:not(.m) .bj-result{top:calc(10px + var(--bj-drop));}
  html:not(.m) #bjDealerZone{top:calc(84px + var(--bj-drop));}
  html:not(.m) .bj-prints{top:calc(188px + var(--bj-drop));}
  html:not(.m) .bj-shoe,html:not(.m) .bj-disc{top:calc(50px + var(--bj-drop));}
  html:not(.m) .bj-shuf{top:calc(124px + var(--bj-drop));}
}

/* ============ 规则全文弹窗 ============ */
.bj-help{font-size:12.5px;line-height:1.7;color:var(--cream-300);}
.bj-help-rules{margin:0 0 10px;padding-left:18px;}
.bj-help-rules li{margin:2px 0;}
.bj-help-sec{margin-top:10px;padding-top:8px;border-top:1px solid var(--hairline);}
.bj-help-sec>b{color:var(--brass-300);font-weight:400;font-family:var(--serif);letter-spacing:.06em;}
.bj-help-sec small{color:var(--cream-500);font-size:12px;opacity:1;}
.bj-help-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;margin:4px 0;}
.bj-help-grid>div{display:flex;justify-content:space-between;padding:3px 0;border-bottom:1px solid var(--hairline);}
.bj-help-grid b{color:var(--brass-100);font-weight:400;font-family:var(--serif);}
.bj-help-src{margin-top:10px;font-size:12px;color:var(--cream-500);}
/* 三种桌对照表：当前桌那一列亮 */
.bj-cmp{width:100%;border-collapse:collapse;margin-top:5px;font-size:12px;line-height:1.45;}
.bj-cmp th,.bj-cmp td{padding:4px 6px;border-bottom:1px solid var(--hairline);text-align:left;vertical-align:top;}
.bj-cmp thead th{font-family:var(--serif);font-weight:400;color:var(--brass-300);letter-spacing:.04em;white-space:nowrap;}
.bj-cmp tbody th{font-weight:400;color:var(--cream-500);white-space:nowrap;}
.bj-cmp td{color:var(--cream-500);}
.bj-cmp .me{color:var(--cream-100);background:rgba(231,201,127,.06);}
.bj-cmp thead th.me{color:var(--brass-100);}

/* ============ 手机横屏（html.m，第二遍 · mtables；骨架 / rail / 左抽屉见 css/mobile.css 的 mtables 段） ============
   半月台 7 个座位缩成一排（从左到右 7 号位 … 1 号位，跟真桌子的顺序一样）贴在台布下沿：
   · #bjSlots 变成横排 flex，每格不再按 JS 写的 left / bottom 绝对定位；整格用 zoom 缩（--bz：你的 0.82，别人的 / 空位 0.6，站着时全 0.62），
     格里的字 / 牌角标按 --bz 倒推，缩完仍 ≥ 10；你的边注圈放大到 44 dp，点击范围 ≥ 44
   · 荷官牌在台布顶上正中，倒计时 / 结果条在它左边，手洗牌靴桌（铂金厅）牌靴在右、废牌盘在左（缩到 0.78）
   · 细屏（Lucky 7s 奖池 · 荷官最近几手）进左抽屉；台布印字收起（规则在 (i)）
   · 站着时「你的位置」牌子放台布左上角；坐下后点你那格的座位号开同一个小菜单（也在左上角）
   锦标赛 21 点桌（#tnRoot.bj-root）的荷官 / 格子另排，见 css/tourney.css。 */
html.m :is(#bjRoot,#tnRoot.bj-root) .bj-lcd{height:auto;flex-direction:column;align-items:stretch;gap:12px;padding:12px;}
html.m :is(#bjRoot,#tnRoot.bj-root) .bj-lcd .sp{display:none;}
html.m :is(#bjRoot,#tnRoot.bj-root) .bj-dh{flex-wrap:wrap;gap:4px;}
html.m :is(#bjRoot,#tnRoot.bj-root) .bj-tbl{bottom:0;padding:0;border-radius:16px 16px 0 0;}
html.m :is(#bjRoot,#tnRoot.bj-root) .bj-cloth{inset:5px 5px 0;border-radius:11px 11px 0 0;zoom:1;}
html.m :is(#bjRoot,#tnRoot.bj-root) .bj-prints{display:none;}
/* 荷官 · 倒计时 · 结果条 */
html.m #bjDealerZone{top:4px;}
html.m :is(#bjRoot,#tnRoot.bj-root) .bjx-cards.dealer{--card-w:44px;--card-h:62px;min-height:62px;min-width:44px;}
html.m :is(#bjRoot,#tnRoot.bj-root) .bjx-cards.dealer .card+.card{margin-left:-18px;}
html.m :is(#bjRoot,#tnRoot.bj-root) .bx-tot{top:-4px;right:-26px;height:22px;min-width:28px;padding:0 6px;font-size:14px;line-height:20px;}
html.m :is(#bjRoot,#tnRoot.bj-root) .th-ring{left:calc(50% - 124px);top:6px;width:50px;height:50px;margin-left:-25px;}
html.m :is(#bjRoot,#tnRoot.bj-root) .th-ring .lt-ring{width:50px;height:50px;}
html.m :is(#bjRoot,#tnRoot.bj-root) .th-ring .lt-ring .v b{font-size:20px;}
html.m :is(#bjRoot,#tnRoot.bj-root) .bj-result{left:calc(50% - 150px);top:4px;min-width:112px;padding:4px 10px 5px;}
html.m :is(#bjRoot,#tnRoot.bj-root) .bj-result .h{font-size:13px;letter-spacing:.14em;}
html.m :is(#bjRoot,#tnRoot.bj-root) .bj-result .m{font-size:20px;}
/* 牌靴 / 废牌盘 / 洗牌（铂金厅） */
html.m #bjRoot .bj-shoe{left:calc(50% + 112px);top:12px;transform:rotate(-6deg) scale(.78);transform-origin:0 50%;}
html.m #bjRoot .bj-disc{right:calc(50% + 236px);top:2px;transform:rotate(6deg) scale(.78);transform-origin:100% 0;}
html.m #bjRoot .bj-last{font-size:13px;}
html.m #bjRoot .bj-shuf{top:96px;}
/* 7 个座位一排：--bz = 这一格的缩放（你的 0.82，别人的 / 空位 0.6，站着时全 0.62；窄屏 / 矮屏再小一点），
   缩了的格里的字、牌角标、注圈按 --bz 倒推（缩完字 ≥ 10.4、你的注圈和空位的圈点击范围 ≥ 44） */
html.m :is(#bjRoot,#tnRoot.bj-root) #bjSlots{display:flex;align-items:flex-end;justify-content:center;gap:2px;padding:0 4px 2px;}
html.m #bjRoot .bjx-box{--bz:.6;position:relative;left:auto !important;bottom:auto !important;width:auto;flex:0 0 auto;transform:none;zoom:var(--bz);}
html.m #bjRoot .bjx-box.mine{--bz:.82;}
html.m #bjRoot .bj-cloth:not(.seated) .bjx-box{--bz:.62;}
html.m #bjRoot .bjx-box :is(.bx-nm,.bx-lbl,.bjx-ring label,.bjx-ring em,.bx-btn){font-size:max(12px,calc(10.4px / var(--bz)));}
html.m #bjRoot .bjx-box .card.face .idx{font-size:max(19cqw,calc(10.4px / var(--bz)));}
html.m #bjRoot .bjx-box .card.face .court .ch b{font-size:max(30cqw,calc(10.4px / var(--bz)));}
html.m #bjRoot .bjx-box .bjx-hand .ht{font-size:max(12px,calc(10.4px / var(--bz)));height:auto;line-height:1.5;}
html.m #bjRoot .bjx-box .sl-cards:not([data-n="2"]):not([data-n="3"]) .bjx-hand .hc{--card-w:58px;--card-h:82px;min-height:82px;}   /* 矮窗口的容器查询会把牌缩到 50 */
html.m #bjRoot .bjx-box .bx-hand{min-height:90px;}
html.m #bjRoot .bjx-box.empty .bx-btn{height:calc(44px / var(--bz));min-width:calc(44px / var(--bz));padding:0 12px;}
html.m #bjRoot .bjx-box.ask :is(.bx-nm,.bx-ask){align-items:flex-end;}
html.m #bjRoot .bjx-box.ask .bx-ask{position:relative;z-index:2;}   /* 加押 / 换座 44 高比名字那行高：往上长，不压进 rail */
/* 别人的格 / 空位：主注圈 44 / --bz（空位点它坐下 / 加押），边注圈（跟 · 对子）36 + 伪元素扩一圈（不跟隔壁的抢） */
html.m #bjRoot .bjx-box:not(.mine) .bjx-ring.main{width:max(64px,calc(44px / var(--bz)));height:max(64px,calc(44px / var(--bz)));}
html.m #bjRoot .bjx-box:not(.mine) .bx-bet{height:max(64px,calc(44px / var(--bz)));gap:5px;}
html.m #bjRoot .bjx-box:not(.mine) .bjx-ring.side{width:36px;height:36px;}
html.m #bjRoot .bjx-box:not(.mine) .bjx-ring.side::before{content:"";position:absolute;inset:-8px;border-radius:50%;}
html.m #bjRoot .bjx-box:not(.mine) .bx-gap{width:36px;}
/* 你的格：边注圈 44 dp，伪元素把点击范围扩到 44 / --bz */
/* 你的格：主注圈缩完也 ≥ 44（多框 + 窄屏 --bz 到 .62 时 64 × .62 不到 44） */
html.m #bjRoot .bjx-box.mine .bjx-ring.main{width:max(64px,calc(44px / var(--bz)));height:max(64px,calc(44px / var(--bz)));}
html.m #bjRoot .bjx-box.mine .bx-bet{height:max(64px,calc(44px / var(--bz)));}
html.m #bjRoot .bjx-box.mine .bjx-ring.side{width:44px;height:44px;}
html.m #bjRoot .bjx-box.mine .bx-gap{width:44px;}
html.m #bjRoot .bjx-box.mine .bjx-ring.side::before{content:"";position:absolute;inset:calc((44px / var(--bz) - 40px) / -2);border-radius:50%;}
html.m #bjRoot .bjx-box.mine .bx-nm b{min-width:34px;height:30px;line-height:30px;}
/* 你押了两三格（多框）：每格缩一点 */
html.m #bjRoot #bjSlots:has(.bjx-box.mine ~ .bjx-box.mine) .bjx-box.mine{--bz:.72;}
/* 站着：「你的位置」在左上角；坐下后座位号开的小菜单也在左上角 */
html.m :is(#bjRoot,#tnRoot.bj-root) .bj-cloth .th-you{left:10px;top:6px;bottom:auto;transform:none;}
html.m :is(#bjRoot,#tnRoot.bj-root) .bj-cloth .th-menu{left:10px;top:44px;bottom:auto;transform:none;}
/* 窄横屏（SE 667、刘海机让出安全区）：别人的格再缩一点，一排放得下；分成 3 手 / 押了多框时都再缩，别横着溢出台布 */
@media (max-width:760px){
  html.m #bjRoot .bjx-box,html.m #bjRoot .bj-cloth:not(.seated) .bjx-box{--bz:.54;}
  html.m #bjRoot .bjx-box.mine{--bz:.78;}
  html.m #bjRoot #bjSlots:is(:has(.sl-cards[data-n="3"]),:has(.bjx-box.mine ~ .bjx-box.mine)) .bjx-box{--bz:.5;}
  html.m #bjRoot #bjSlots:is(:has(.sl-cards[data-n="3"]),:has(.bjx-box.mine ~ .bjx-box.mine)) .bjx-box.mine{--bz:.64;}
}
/* 手洗牌靴桌 + 窄屏（台布 < 770 宽，废牌盘缩完左缘跑到 80 以内）：站着时「你的位置」和它的小菜单挪到废牌盘下面，不盖住废牌盘 */
@media (max-width:790px){
  html.m #bjRoot .bj-cloth.shoe .th-you{top:62px;}
  html.m #bjRoot .bj-cloth.shoe .th-menu{top:100px;}
}
@media (max-height:350px){
  html.m #bjRoot .bjx-box.mine{--bz:.7;}
  html.m #bjRoot #bjSlots:is(:has(.sl-cards[data-n="3"]),:has(.bjx-box.mine ~ .bjx-box.mine)) .bjx-box.mine{--bz:.62;}
  html.m :is(#bjRoot,#tnRoot.bj-root) .bjx-cards.dealer{--card-w:40px;--card-h:56px;min-height:56px;}
}
/* 别人格名字前的写实小头像：手机上框贴着台布底边，名字行加高到放得下整张脸，不往下探出去被 rail 切掉 */
html.m .bjx-box.npc .bx-nm{height:32px;}
html.m .bjx-box.npc .bx-nm .pt-seat{margin:0;}
