/* 百家乐多桌（活牌桌引擎）· 统一牌桌 HUD 样板：分厅皮肤 · 电子路单屏（WRD）· 台面（牌 / 注区 / 座位）· 咪牌台
   骨架（Z0–Z5）在 css/table-hud.css；token 在 css/tokens.css；筹码 / LCD / 按钮 / 纸牌在 css/components.css。
   尺寸都是 dp（1280×720 设计稿，整页 zoom = k）。Leo 2026-09-26：主楼面朴素（普通台布、普通木边），铂金厅用更好的材质。 */

/* ============ 骨架：HUD 自己有顶栏，不留全站顶栏的 48 ============ */
#bacScreen > .content.bac-root{margin-top:0;padding:0;position:relative;overflow:hidden;flex:1;min-height:0;}
.bac-root[data-hall=oasis] .th{--carpet-700:#3a1a12;--carpet-900:#1f0d09;--carpet-gold:rgba(231,201,127,.2);}
.bac-root[data-hall=sovereign] .th{--carpet-700:#141826;--carpet-900:#0a0c14;--carpet-gold:rgba(201,160,82,.22);}

/* ============ Z1 电子路单屏（WRD）：左珠盘 · 中上大路 · 中下三条下三路 · 右个数 + 问路（上下排列） ============ */
.bac-wrd{display:grid;grid-template-columns:302px minmax(0,1fr) 128px;gap:4px;min-width:0;}
.bac-wrd .lcd{min-width:0;min-height:0;}
.bac-bead-box{padding:2px;display:flex;align-items:center;}
.bac-wrd-mid{display:grid;grid-template-rows:minmax(0,1fr) 62px;gap:4px;min-width:0;min-height:0;}
.bac-big-box{padding:2px 3px;display:flex;align-items:center;}
.bac-der-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;min-width:0;}
.bac-der-row .lcd{padding:2px;display:flex;align-items:center;}
.bac-wrd-side{display:grid;grid-template-rows:minmax(0,1fr) 44px 44px;gap:4px;min-width:0;min-height:0;}
.bac-road{display:grid;grid-auto-flow:column;gap:1px;background:var(--lcd-line);border:1px solid var(--lcd-line);width:max-content;max-width:100%;overflow:hidden;
  grid-template-rows:repeat(6,var(--cell));grid-auto-columns:var(--cell);}
.bac-road i{display:block;position:relative;background:var(--lcd-800);}
.bac-road.bead{--cell:28px;}
.bac-road.big{--cell:18px;}
.bac-road.der{--cell:8px;}

/* 珠盘路：庄红 · 闲蓝 · 和绿实心珠 + 字；左上红点庄对、右下蓝点闲对 */
.bac-road.bead i b{position:absolute;inset:1px;border-radius:50%;font:700 var(--fs-s)/26px var(--sans);text-align:center;color:#fff;text-decoration:none;}
.bac-road.bead i.B b{background:var(--banker);}
.bac-road.bead i.P b{background:var(--player);}
.bac-road.bead i.T b{background:var(--tie);}
.bac-road.bead s{position:absolute;width:7px;height:7px;border-radius:50%;box-shadow:0 0 0 1px #fff;z-index:2;}
.bac-road.bead s.pb{left:0;top:0;background:var(--banker);}
.bac-road.bead s.pp{right:0;bottom:0;background:var(--player);}
/* 虎龙六种标记（形状 × 填充 × 底色三维区分，色盲也分得开）：
   虎 = 右上三角（小老虎空心 / 大老虎实心 + 金圈 / 虎和 = 绿珠 + 实心三角 + 橙圈）
   龙 = 左下菱形（小龙空心 / 大龙实心 + 金圈 / 龙和 = 绿珠 + 实心菱形 + 紫圈）；龙虎（闲 7 赢庄 6）底下一道金线 */
.bac-road.bead i.tg b,.bac-road.bead i.dg b{inset:2px;font:700 var(--fs-s)/24px var(--serif);}
.bac-road.bead i.tgB b,.bac-road.bead i.dgB b{box-shadow:0 0 0 2px var(--brass-300);}
.bac-road.bead i.tgT b{box-shadow:0 0 0 2px var(--tiger);}
.bac-road.bead i.dgT b{box-shadow:0 0 0 2px var(--dragon);}
.bac-road u{position:absolute;width:11px;height:11px;z-index:3;text-decoration:none;}
.bac-road u::before,.bac-road u::after{content:"";position:absolute;inset:0;}
.bac-road u.mk-t{right:-1px;top:-1px;}
.bac-road u.mk-t::before{background:var(--tiger);clip-path:polygon(0 0,100% 0,100% 100%);}
.bac-road i.tgS u.mk-t::after{background:var(--lcd-950);clip-path:polygon(34% 13%,87% 13%,87% 66%);}
.bac-road u.mk-d{left:-1px;bottom:-1px;}
.bac-road u.mk-d::before{background:var(--dragon);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);}
.bac-road i.dgS u.mk-d::after{background:var(--lcd-950);clip-path:polygon(50% 30%,70% 50%,50% 70%,30% 50%);}
.bac-road.bead i.dt::after{content:"";position:absolute;left:5px;right:5px;bottom:0;height:2px;background:var(--brass-300);z-index:2;}

/* 大路：空心圈 · 和局斜线（普通绿；挂过虎和橙、龙和紫、两种都有半橙半紫；连和写数字）· 庄对 / 闲对小点 ·
   虎龙六种（和珠盘路同一套图案，叠放规则见 BacRules.bigRoadTags）：
     这一局自己 = 角上：小老虎 / 大老虎 右上三角、小龙 / 大龙 左下菱形（空心 = 小、实心 = 大；大的圈外再加一道金边，同珠盘路）
     挂着的和 = 圈正中：虎和 实心正三角、龙和 实心菱形（两种都有就缩小、沿斜线贴近中心一上一下）· 龙虎（闲 7 赢庄 6）= 底边金线
   尺寸都按 --cell 算（桌面 18、矮窗口 / 手机 14） */
.bac-road.big i b{position:absolute;inset:2px;border-radius:50%;border:2.5px solid transparent;}
.bac-road.big i.B b{border-color:var(--banker);}
.bac-road.big i.P b{border-color:var(--player-ink);}
.bac-road.big i.tgB b,.bac-road.big i.dgB b{box-shadow:0 0 0 1px var(--brass-300);}
.bac-road.big i.lh b::after{content:"";position:absolute;left:18%;right:18%;bottom:-3px;height:1.5px;background:var(--brass-300);}
.bac-road.big i s{position:absolute;left:50%;top:0;bottom:0;width:2px;margin-left:-1px;background:var(--tie);transform:rotate(45deg);z-index:2;}
.bac-road.big i s.tt{background:var(--tiger);} .bac-road.big i s.dt{background:var(--dragon);}
.bac-road.big i s.td{background:linear-gradient(var(--tiger) 50%,var(--dragon) 50%);}
.bac-road.big i em{position:absolute;right:0;bottom:-1px;font:700 9px/9px var(--sans);font-style:normal;color:var(--tie-text);z-index:4;text-shadow:0 0 2px #000;}
.bac-road.big i.pp em{right:auto;left:50%;margin-left:1px;}
.bac-road.big i.bp::before,.bac-road.big i.pp::after{content:"";position:absolute;width:5px;height:5px;border-radius:50%;z-index:2;}
.bac-road.big i.bp::before{left:1px;top:1px;background:var(--banker);}
.bac-road.big i.pp::after{right:1px;bottom:1px;background:var(--player-ink);}
.bac-road.big u{width:calc(var(--cell) * .4);height:calc(var(--cell) * .4);}
.bac-road.big u.mk-t{right:0;top:0;} .bac-road.big u.mk-d{left:0;bottom:0;}
/* 空心（小）：内缩一圈挖成格子底色，边约 2px */
.bac-road.big i.tgS u.mk-t::after{background:var(--lcd-800);clip-path:polygon(47% 21%,79% 21%,79% 53%);}
.bac-road.big i.dgS u.mk-d::after{background:var(--lcd-800);clip-path:polygon(50% 29%,71% 50%,50% 71%,29% 50%);}
/* 正中：虎和三角 / 龙和菱形（实心，压在斜线上，描一圈黑边分得开） */
.bac-road.big u.ct,.bac-road.big u.cd{width:calc(var(--cell) * .36);height:calc(var(--cell) * .36);left:50%;top:50%;transform:translate(-50%,-50%);z-index:3;filter:drop-shadow(0 0 .7px var(--lcd-950)) drop-shadow(0 0 .7px var(--lcd-950));}
.bac-road.big u.ct::before{background:var(--tiger);clip-path:polygon(50% 6%,100% 94%,0 94%);}   /* 正中的虎和用正三角（角上那种直角三角压在斜线上像箭头） */
.bac-road.big u.cd::before{background:var(--dragon);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);}
/* 尺寸留空隙：角标 .4 格、正中 .36 格（描一道细黑边，和同色斜线分得开）（大龙角标和龙和菱形、大虎和虎和之间都隔得开，圈也露得出来）；
   两种和都有：各缩到 .28 格，沿斜线离中心只偏 .1 格（再远就贴上两头的虎 / 龙角标，也会压到右下的和局个数） */
.bac-road.big i.two u.ct,.bac-road.big i.two u.cd{width:calc(var(--cell) * .28);height:calc(var(--cell) * .28);}
.bac-road.big i.two u.ct{transform:translate(-14%,-86%);} .bac-road.big i.two u.cd{transform:translate(-86%,-14%);}
/* 下三路：大眼仔空心 · 小路实心 · 曱甴路斜杠；红 = 有规律，蓝 = 乱 */
.bac-road.der i b{position:absolute;inset:.5px;border-radius:50%;}
.bac-road.der.eye i.R b{border:1.5px solid var(--banker);} .bac-road.der.eye i.B b{border:1.5px solid var(--player-ink);}
.bac-road.der.small i.R b{background:var(--banker);} .bac-road.der.small i.B b{background:var(--player-ink);}
.bac-road.der.roach i b{inset:-1px auto -1px 50%;width:1.6px;margin-left:-.8px;border-radius:0;transform:rotate(45deg);}
.bac-road.der.roach i.R b{background:var(--banker);} .bac-road.der.roach i.B b{background:var(--player-ink);}

/* 右栏：个数（只有色点 + 数字）· 庄问路 / 闲问路（上下排） */
.bac-stats{padding:6px 10px;display:grid;grid-template-columns:1fr 1fr;gap:3px 10px;align-content:center;}
.bac-stats span{display:flex;align-items:center;gap:6px;font-family:var(--serif);font-size:var(--fs-m);color:var(--lcd-1);font-variant-numeric:tabular-nums lining-nums;}
.bac-stats span i{width:9px;height:9px;border-radius:50%;flex:none;}
.bac-ask{display:flex;align-items:center;gap:8px;padding:0 8px;}
.bac-ask .k{width:26px;height:26px;border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:var(--fs-m);font-weight:700;color:#fff;flex:none;}
.bac-ask.B .k{background:var(--banker);} .bac-ask.P .k{background:var(--player);}
.bac-ask .sy{display:flex;gap:10px;align-items:center;margin-left:auto;margin-right:4px;}
.bac-ask .sy i{width:14px;height:14px;display:block;position:relative;flex:none;}
.bac-ask .sy i.a1{border-radius:50%;border:2px solid var(--c2);}
.bac-ask .sy i.a2{border-radius:50%;background:var(--c2);width:12px;height:12px;}
.bac-ask .sy i.a3{background:linear-gradient(135deg,transparent 40%,var(--c2) 40% 60%,transparent 60%);}
.bac-ask .sy i.R{--c2:var(--banker);} .bac-ask .sy i.B{--c2:var(--player-ink);} .bac-ask .sy i.none{--c2:#33414c;}

/* ============ Z2 台面：木边 + 台布（按厅换材质） ============ */
.bac-felt{--ink:rgba(217,191,126,.7);--ink2:rgba(217,191,126,.34);}
/* 主楼面：普通木边 + 普通绿台布，印线压暗，无黄铜圈 */
.bac-root[data-hall=main] .bac-felt{--f5:#16553d;--f7:#10412f;--f9:#0b2e21;}
html[data-night] .bac-root[data-hall=main] .bac-felt{--f5:#124e37;--f7:#0c3a29;}
/* 金厅：亮一点的木边 + 单圈黄铜，印字更亮 */
.bac-root[data-hall=oasis] .bac-tbl{background:repeating-linear-gradient(92deg,rgba(0,0,0,.14) 0 2px,transparent 2px 7px,rgba(255,255,255,.03) 7px 9px,transparent 9px 23px),
    linear-gradient(180deg,var(--wood-100),var(--wood-300) 10%,var(--wood-500) 40%,var(--wood-700));}
.bac-root[data-hall=oasis] .bac-felt{--f5:var(--felt-300);--f7:var(--felt-500);--f9:var(--felt-700);--ink:rgba(231,201,127,.8);--ink2:rgba(231,201,127,.45);
  box-shadow:0 0 0 2px var(--brass-500) inset,0 0 0 3px rgba(0,0,0,.6) inset,0 10px 26px rgba(0,0,0,.4) inset;}
/* 铂金厅：深胡桃木高光边 + 黄铜双圈 + 更深的丝绒台布 */
.bac-root[data-hall=sovereign] .bac-tbl{
  background:linear-gradient(90deg,rgba(0,0,0,.4),transparent 10%,transparent 90%,rgba(0,0,0,.4)),
    linear-gradient(180deg,rgba(255,230,190,.16),transparent 18%),
    repeating-linear-gradient(92deg,rgba(0,0,0,.16) 0 1px,transparent 1px 5px,rgba(255,255,255,.03) 5px 6px,transparent 6px 17px),
    linear-gradient(180deg,#5a3520,#3a2214 30%,#241409 70%,#170c05);
  box-shadow:0 -6px 30px rgba(0,0,0,.65),0 2px 0 rgba(255,220,160,.2) inset;}
.bac-root[data-hall=sovereign] .bac-felt{--f5:#11573f;--f7:#0a3727;--f9:#041a12;--ink:var(--brass-100);--ink2:rgba(247,233,196,.45);
  box-shadow:0 0 0 2px var(--brass-500) inset,0 0 0 3px rgba(0,0,0,.65) inset,0 0 0 6px var(--brass-900) inset,0 12px 30px rgba(0,0,0,.5) inset;}
.bac-root[data-hall=sovereign] .th-rail{   /* 贵宾厅：皮质扶手 */
  background:linear-gradient(180deg,rgba(255,220,170,.08),transparent 10%,transparent 88%,rgba(0,0,0,.5)),
    radial-gradient(ellipse at 50% -30%,rgba(255,200,140,.08),transparent 60%),
    linear-gradient(180deg,#3a1d16,#24110c 45%,#160a07);
  border-top:2px solid var(--brass-500);box-shadow:0 -10px 30px rgba(0,0,0,.7),0 6px 0 -5px rgba(255,220,170,.12) inset;}

/* 倒计时下面一个英文小牌子：LAST COUP / SHUFFLE / FREE HAND（没事时不显示） */
.bac-tag{position:absolute;left:50%;top:78px;transform:translateX(-50%);z-index:6;font-family:var(--serif);font-size:var(--fs-s);letter-spacing:.2em;color:var(--warn);
  white-space:nowrap;text-shadow:0 1px 2px rgba(0,0,0,.7);}
.bac-tag:empty{display:none;}
/* 开牌顺序（跟荷官比时，Leo 反馈 9-3）：三个按钮竖着放在闲 / 庄两手牌中间（倒计时的位置，发牌时倒计时藏着） */
.bac-order{position:absolute;left:50%;top:16px;transform:translateX(-50%);z-index:8;display:flex;flex-direction:column;gap:6px;width:150px;}
.bac-order[hidden]{display:none;}
.bac-order:not([hidden]) + .bac-tag{display:none;}   /* 按钮占着倒计时的位置：LAST COUP 小牌子先收起，选完再出来 */
.bac-order .btn{height:30px;padding:0 10px;justify-content:center;width:100%;letter-spacing:.08em;white-space:nowrap;}

/* 闲 / 庄两手牌：夹着倒计时，闲在左、庄在右 */
.bac-hands{position:absolute;left:0;right:0;top:12px;display:flex;justify-content:center;gap:210px;z-index:3;--card-w:58px;--card-h:82px;pointer-events:none;}
.bac-hand{display:flex;flex-direction:column;gap:6px;min-width:190px;position:relative;}
.bac-hand.p{align-items:flex-end;} .bac-hand.b{align-items:flex-start;}
.bac-hand .lab{font-family:var(--serif);font-size:var(--fs-m);letter-spacing:.3em;white-space:nowrap;line-height:24px;}
.bac-hand.p .lab{color:var(--player-text);} .bac-hand.b .lab{color:var(--banker-text);}
.bac-hand .lab b{font-size:var(--fs-l);font-weight:400;color:var(--tx-1);letter-spacing:0;font-variant-numeric:tabular-nums lining-nums;}
.bac-hand.win .lab b{color:var(--brass-100);}
.bac-hand .cards{display:flex;gap:6px;align-items:center;min-height:var(--card-h);}
.bac-hand.p .cards{flex-direction:row-reverse;}
.bac-hand .sq-who{height:16px;font-size:var(--fs-s);color:var(--tx-2);letter-spacing:.06em;white-space:nowrap;}
.bac-hand.npcsq .sq-slot .card.back{transform:translateY(-3px) rotate(-3deg);box-shadow:0 10px 16px rgba(0,0,0,.6);transition:transform .35s ease;}
.bac-hand.npcsq .sq-who{color:var(--warn);}
/* NPC 咪牌：牌角一下下掀起来（奶白纸背 + 底下露出一角台布阴影），两张牌轮流掀；只在焦点桌、只在他咪牌那几秒跑 */
.bac-hand.npcsq .sq-slot .card.back::after{content:"";position:absolute;right:-3px;bottom:-3px;width:48%;aspect-ratio:1;border-radius:0 0 6px 0;
  background:linear-gradient(to top left,var(--f9,#0b2e21) 0%,rgba(4,16,11,.92) 47%,#6f5f3e 50%,#d8cba8 53%,#fffaf0 62%,#efe5cc 84%,#d3c49f 100%);
  transform:scale(0);transform-origin:100% 100%;animation:npcPeel 1.5s ease-in-out infinite;pointer-events:none;}
.bac-hand.npcsq .sq-slot+.sq-slot .card.back::after{animation-delay:.6s;}
.bac-hand.npcsq .sq-slot.third .card.back::after{animation-duration:1.1s;animation-delay:0s;}
@keyframes npcPeel{0%,100%{transform:scale(0);} 28%{transform:scale(.5);} 42%{transform:scale(.38);} 62%{transform:scale(.72);} 84%{transform:scale(.18);}}
.sq-slot{position:relative;display:inline-block;transition:opacity .2s;}
.sq-slot.third{margin:0 12px;}
.sq-slot.third .card{transform:rotate(90deg);}
.sq-slot.sq-away{opacity:.18;}
.bac-felt .card.face{background:linear-gradient(160deg,#fffdf7,var(--card-face));}   /* 只管牌面：牌背是红 / 蓝定制牌（components.css） */
.card.deal-in{animation:dealIn .3s ease-out;}
/* 结果条：原位（倒计时的位置）出，发牌 / 开牌时倒计时藏起来 */
.bac-result{position:absolute;left:50%;top:14px;transform:translateX(-50%);z-index:7;min-width:150px;max-width:200px;padding:7px 12px 8px;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;}
.bac-result .h{font-size:var(--fs-l);letter-spacing:.2em;line-height:1.1;}
.bac-result .h.B{color:#ff8a8a;} .bac-result .h.P{color:#9dbcf5;} .bac-result .h.T{color:#8fe0a8;}
.bac-result .s{font-size:var(--fs-s);letter-spacing:.08em;color:var(--tx-2);margin-top:3px;white-space:normal;}
.bac-result .s i{font-style:normal;color:var(--warn);}
.bac-result .m{font-size:var(--fs-m);margin-top:2px;}
.bac-result .g-good{color:var(--good);} .bac-result .g-bad{color:var(--bad);}

/* 台布印字（注区正上方一行） */
.bac-print{position:absolute;left:0;right:0;text-align:center;font-family:var(--serif);font-size:var(--fs-s);letter-spacing:.28em;color:var(--print);opacity:.62;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;z-index:2;pointer-events:none;
  bottom:198px;}

/* ============ 注区（台布印线：实线双框、无底色）：闲 150 · 3×3 虎龙 420 · 庄 150，高 112，底边离台布底 82 ============ */
.bac-zones{position:absolute;left:0;right:0;bottom:82px;height:112px;display:grid;grid-template-columns:150px 420px 150px;gap:14px;justify-content:center;z-index:3;}
.bac-zones .bz{position:relative;cursor:pointer;user-select:none;display:flex;flex-direction:column;align-items:center;justify-content:center;
  font-family:var(--serif);color:var(--tx-1);transition:background var(--t-fast),box-shadow var(--t-fast),border-color var(--t-fast);}
.bac-zones .bz.main{border:2px solid var(--ink);border-radius:6px;justify-content:flex-start;padding-top:9px;box-shadow:0 0 0 1px rgba(0,0,0,.35) inset,0 0 0 1px rgba(0,0,0,.35);}
.bac-felt{font-variant-numeric:lining-nums;}
.bac-zones .bz.main::after{content:"";position:absolute;inset:3px;border:1px solid var(--ink2);border-radius:4px;pointer-events:none;}
.bac-zones .bz.main .cn{font-size:34px;letter-spacing:.1em;line-height:1;}
.bac-zones .bz.main small{display:block;margin-top:4px;opacity:1;font-size:var(--fs-s);letter-spacing:.3em;color:var(--tx-2);}
.bac-zones .bz.player{border-color:var(--player-ink);} .bac-zones .bz.player .cn{color:var(--player-text);}
.bac-zones .bz.banker{border-color:var(--banker-ink);} .bac-zones .bz.banker .cn{color:var(--banker-text);}
.bac-root[data-hall=main] .bac-zones .bz.player{border-color:rgba(91,143,224,.75);} .bac-root[data-hall=main] .bac-zones .bz.banker{border-color:rgba(224,106,106,.75);}
.bac-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(0,1fr);border:2px solid var(--ink);border-radius:6px;overflow:hidden;background:rgba(0,0,0,.06);min-width:0;}
.bac-grid .bz{border:1px solid var(--ink2);flex-direction:row;gap:8px;font-size:var(--fs-m);letter-spacing:.08em;}
.bac-grid .bz:hover,.bac-zones .bz.main:hover{background:rgba(231,201,127,.05);}
.bac-grid .bz .cn{line-height:1.1;}
.bac-grid .bz small{font-size:var(--fs-s);color:var(--tx-2);letter-spacing:0;opacity:1;white-space:nowrap;}
.bac-grid .bz.tie .cn{color:var(--tie-text);}
.bac-grid .bz.wide{grid-column:1/-1;font-size:var(--fs-s);}
.bac-grid.g-tiger{grid-template-rows:repeat(3,minmax(0,1fr));}
.bac-grid.g-s6{grid-template-rows:repeat(1,minmax(0,1fr)) 38px;}
.bac-grid.g-trad .bz{flex-direction:column;gap:2px;}
.bac-zones .bz.has{box-shadow:0 0 0 2px var(--brass-300) inset;background:rgba(231,201,127,.07);}
.bac-zones .bz.main.has{box-shadow:0 0 0 2px var(--brass-300) inset,0 0 22px rgba(231,201,127,.3);}
.bac-zones .bz.won{box-shadow:0 0 0 2px var(--brass-100) inset,0 0 18px rgba(247,233,196,.3);background:rgba(247,233,196,.09);}
/* 注区上的筹码：你的在右（带金边）、桌上其他人的在左（只显示合计） */
.bz .bz-me{position:absolute;right:6px;bottom:4px;z-index:2;pointer-events:none;}
.bz .bz-npc{position:absolute;left:5px;top:50%;transform:translateY(-50%);z-index:1;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:1px;opacity:.9;}
.bz .bz-npc small{font:var(--fs-s) var(--serif);color:var(--tx-2);letter-spacing:0;margin:0;opacity:1;}
.bac-grid .bz .bz-npc small{display:none;}
.bac-grid .bz .bz-me .chipstack .cnt{display:none;}
.bac-grid .bz .bz-me{right:4px;bottom:50%;transform:translateY(50%);}
.bz .bz-me,.bz .bz-npc{letter-spacing:0;}
.bz.main .bz-me{right:auto;left:50%;bottom:5px;margin-left:-17px;}
.bz.main .bz-me .chipstack .cnt{font-size:var(--fs-s);letter-spacing:0;}
.bz.main .bz-npc{top:6px;left:6px;bottom:auto;transform:none;align-items:flex-start;}
.bac-zones .bz.main .bz-npc small{display:block;margin:2px 0 0;letter-spacing:0;font-family:var(--serif);font-size:var(--fs-s);color:var(--tx-2);}
.bz .bz-me .chipstack .chip:last-child{box-shadow:0 0 0 2px var(--brass-100),0 2px 0 #000,0 3px 5px rgba(0,0,0,.7);}

/* ============ 座位：别人的座位沿台边（圆点 + 首字），你的位置在正前方（.th-you） ============ */
.bac-seats{position:absolute;inset:0;pointer-events:none;z-index:4;}
.bac-seats .seat{position:absolute;width:36px;height:36px;margin:-3px 0 0 -18px;border-radius:50%;background:rgba(0,0,0,.35);border:1px solid rgba(217,191,126,.45);
  display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:var(--fs-s);color:var(--tx-2);pointer-events:auto;}
.bac-seats .seat.empty{background:transparent;border-color:rgba(217,191,126,.22);color:transparent;}
.bac-seats .seat.bet{border-color:var(--brass-300);color:var(--tx-1);}

/* ============ 其它桌抽屉：迷你大路 ============ */
/* 6 行 × --n 列（baccarat.js MINI_COLS）铺满这一行的宽：格边长按外层宽度（cqw，照 W1 除以 --cqz）算成同一个数，格子正方等距；格缝 = 淡网格线；按列从上往下排 */
.bac-mini-w{container-type:inline-size;width:100%;}
.bac-mini{--c:calc((100cqw / var(--cqz,1) - 2px - (var(--n,22) - 1) * 1px) / var(--n,22));display:grid;grid-auto-flow:column;
  grid-template-columns:repeat(var(--n,22),var(--c));grid-template-rows:repeat(6,var(--c));gap:1px;width:max-content;
  background:rgba(123,139,151,.16);border:1px solid var(--lcd-line);border-radius:2px;overflow:hidden;}
.bac-mini i{display:block;position:relative;background:var(--lcd-950);grid-row:auto;grid-column:auto;}
/* 圈用径向渐变画（不用 border-radius 盒子：小数格宽在 2 倍屏上取整，盒子边会被压成椭圆；渐变按像素算，永远是圆） */
.bac-mini i.mb,.bac-mini i.mp{--k:var(--banker);--r:calc(var(--c) * .39);
  background:radial-gradient(circle at 50% 50%,transparent calc(var(--r) - 1.9px),var(--k) calc(var(--r) - 1.5px),var(--k) calc(var(--r) - .3px),transparent var(--r)),var(--lcd-950);}
.bac-mini i.mp{--k:var(--player-ink);}
.bac-mini i.mt::after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom right,transparent calc(50% - .8px),var(--tie) calc(50% - .8px),var(--tie) calc(50% + .8px),transparent calc(50% + .8px));}

/* ============ 选厅（备用入口） ============ */
.pick-row.bac-pick{display:flex;flex-direction:column;gap:2px;}
.pick-row.bac-pick b small{font-family:var(--serif);font-size:var(--fs-s);letter-spacing:.18em;color:var(--brass-500);margin-left:6px;opacity:1;}
.pick-row.bac-pick em{font-style:normal;font-size:var(--fs-s);}
.pick-row.bac-pick em.ok{color:var(--good);} .pick-row.bac-pick em.no{color:var(--warn);}
.pick-row.bac-pick.locked b{color:var(--cream-500);}

/* ============ 咪牌台 ============ */
#sqStage{
  position:fixed;inset:0;z-index:70;display:none;flex-direction:column;align-items:center;justify-content:center;gap:18px;
  background:radial-gradient(ellipse at 50% 48%,rgba(21,90,64,.95) 0%,rgba(9,43,31,.97) 70%);
}
#sqTitle{font-family:var(--serif);font-size:var(--fs-l);color:var(--brass-300);letter-spacing:.2em;}
#sqCards{display:flex;gap:40px;}
/* 咪牌台上方：另一门（和自己这门）已经开出来的牌 + 点数，荷官先开的牌咪的时候也看得见 */
#sqRef{display:flex;gap:48px;--card-w:58px;--card-h:82px;}
#sqRef:empty{display:none;}
#sqRef .ref{display:flex;align-items:center;gap:10px;}
#sqRef .ref .lab{font-family:var(--serif);font-size:var(--fs-m);letter-spacing:.3em;white-space:nowrap;}
#sqRef .ref.P .lab{color:var(--player-text);} #sqRef .ref.B .lab{color:var(--banker-text);}
#sqRef .ref .lab b{font-size:var(--fs-l);font-weight:400;color:var(--tx-1);letter-spacing:0;margin-left:6px;font-variant-numeric:tabular-nums lining-nums;}
#sqRef .ref .cards{display:flex;gap:6px;}
#sqHint{font-size:var(--fs-s);color:var(--tx-2);text-align:center;letter-spacing:.12em;}
/* 咪牌：牌面（真实点阵）→ 折痕阴影 → 牌背（clip-path 裁掉掀起的部分）→ 掀起那一截（SVG 纸背 + 弯折渐变 + 投影）；
   几何在 js/games/baccarat-squeeze.js，baccarat.js 的 attachPeel 每帧只改正在动的那张牌 */
.sq-big{position:relative;width:180px;height:252px;border-radius:10px;touch-action:none;cursor:grab;user-select:none;outline:none;
  box-shadow:0 22px 50px rgba(0,0,0,.6);}
.sq-big:focus-visible{box-shadow:0 22px 50px rgba(0,0,0,.6),0 0 0 2px var(--felt-900),0 0 0 4px var(--brass-300);}
.sq-big:active{cursor:grabbing;}
.sq-big.peeling,.sq-big.opening{z-index:2;}
.sq-big.opened{cursor:default;}
.sq-big .sq-face{position:absolute;inset:0;}
.sq-big .sq-face .card{width:180px;height:252px;border-radius:10px;animation:none;box-shadow:none;}
.sq-big .sq-shade{position:absolute;inset:0;z-index:1;border-radius:10px;overflow:hidden;pointer-events:none;}
.sq-big .sq-shade svg{display:block;width:100%;height:100%;}
.sq-big .sq-back{   /* 和台面上发的牌同一副：这一靴红背 / 蓝背（Leo 反馈 9-2） */
  position:absolute;inset:0;border-radius:10px;z-index:2;
  background:var(--card-back-red) center/100% 100% no-repeat;
}
.sq-big .sq-back.cb-blue{background-image:var(--card-back-blue);}
/* 掀起那一截：纸背（奶白卡纸）贴着折痕最暗、往外先亮后略暗，像弯着的纸；投影落在牌背和台布上 */
.sq-big .sq-flap{position:absolute;left:0;top:0;width:100%;height:100%;z-index:3;overflow:visible;pointer-events:none;
  filter:drop-shadow(0 5px 7px rgba(0,0,0,.45));}
.sq-big .sq-flap .crease{stroke:rgba(60,44,16,.4);stroke-width:1;}
.sq-big.opening .sq-flap{opacity:0;transition:opacity .16s ease .08s;}
.sq-big.opened .sq-back,.sq-big.opened .sq-flap,.sq-big.opened .sq-shade{display:none;}

/* ============ 矮窗口（布局高 < 720，比如 1024×600 以下）：路单屏压到 150、注区压扁一点 ============ */
@container vp (max-height:680px){
  .bac-th{--th-board:150px;}
  .bac-road.bead{--cell:22px;}
  .bac-road.bead i b{line-height:20px;} .bac-road.bead i.tg b,.bac-road.bead i.dg b{line-height:18px;}
  .bac-road.big{--cell:14px;} .bac-road.der{--cell:6px;}
  .bac-wrd-mid{grid-template-rows:minmax(0,1fr) 46px;}
  .bac-wrd-side{grid-template-rows:minmax(0,1fr) 34px 34px;}
  .bac-zones{height:96px;bottom:70px;}
  .bac-print{bottom:170px;}
  .bac-hands{--card-w:50px;--card-h:70px;}
}

/* ============ 竖长窗口（布局高 > 宽，比如 iPad 竖屏 1032×1244 → 布局 1237×1491 dp；电脑版 16:9 不会命中）============
   台布比设计稿（372 高）高出一大截：原来注区钉在底边、两手牌钉在顶边，中间空一大片。这里把台布当 size 容器，
   多出来的高度 E 分三份：26% 垫在顶上（倒计时 / 结果条 / 开牌顺序 / 两手牌一起往下挪到台面中上部），
   28% 垫在注区 / 印字下面（注区挪到中间偏下，座位和你的位置还在台边），注区加高（最多 200），两手牌按台布高放大。
   iPad 竖屏 1032×1244（台布约 1177×1144）：牌区 ~212 起、注区 ~646–846，上 / 中 / 下三段空白差不多。
   cq 长度照 W1 除以 --cqz（js/core/scale.js）；牌的尺寸用 @container 断点（dp，两个引擎一样），不用 cq。 */
@container vp (orientation:portrait){
  html:not(.m) .bac-felt{container:bacf / size;--bac-e:max(0px,calc(100cqh / var(--cqz,1) - 372px));
    --bac-drop:calc(var(--bac-e) * .26);--bac-lift:calc(var(--bac-e) * .28);--bac-zh:min(200px,calc(112px + var(--bac-e) * .12));}
  html:not(.m) .bac-felt .th-ring{top:calc(8px + var(--bac-drop));}
  html:not(.m) .bac-result{top:calc(14px + var(--bac-drop));}
  html:not(.m) .bac-order{top:calc(16px + var(--bac-drop));}
  html:not(.m) .bac-tag{top:calc(78px + var(--bac-drop));}
  html:not(.m) .bac-hands{top:calc(12px + var(--bac-drop));--card-w:74px;--card-h:104px;}
  html:not(.m) .bac-zones{bottom:calc(82px + var(--bac-lift));height:var(--bac-zh);}
  html:not(.m) .bac-print{bottom:calc(86px + var(--bac-lift) + var(--bac-zh));}
  html:not(.m) .bac-hand .sq-slot.third{margin:0 calc((var(--card-h) - var(--card-w)) / 2);}   /* 第三张横放：左右让出 (高 − 宽) / 2 */
  html:not(.m) .bac-hand{min-width:calc(var(--card-w) * 2 + var(--card-h) + 12px);}   /* 每手按三张牌的宽度占位：一边补第三张时两手不再整组偏移，中间 210 空隙始终对准结果条 / LAST COUP 牌子 */
}
@container bacf (min-height:900px){
  html:not(.m) .bac-hands{--card-w:96px;--card-h:134px;}
}

/* ============ 手机横屏（html.m，第二遍 · mtables；骨架 / rail / 左抽屉见 css/mobile.css 的 mtables 段） ============
   不缩放台面，按手机尺寸重排（844×390 台布约 820×285；iPhone SE 带工具栏 667×330 约 655×233）：
   · 顶上一排：闲牌 · 倒计时 / 结果条 · 庄牌（牌 44×62，矮屏 38×54）；开牌顺序三键竖排在两手牌中间往下（这时注区不能下注，盖着没关系）
   · 注区占中间整块：闲 · 边注 · 庄；虎龙 3×3 九格照桌面排（没有虎对；最矮的 SE 每格也 ≥ 60 高）
   · 最下一条 42：别人的座位点 + 你的位置；台布印字收起（规则在 (i)）
   · 路单屏（珠盘 · 大路 · 下三路 · 个数 / 问路）进左抽屉，竖着排
   锦标赛百家乐桌（#tnRoot.bac-root）共用这一段。 */
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-wrd{display:flex;flex-direction:column;gap:6px;padding:4px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-bead-box{flex:none;height:136px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-road.bead{--cell:21px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-road.bead i b{font-size:11px;line-height:19px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-road.bead i.tg b,html.m :is(#bacRoot,#tnRoot.bac-root) .bac-road.bead i.dg b{line-height:17px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-wrd-mid{flex:none;display:flex;flex-direction:column;gap:6px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-big-box{flex:none;height:94px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-road.big{--cell:14px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-der-row{height:46px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-road.der{--cell:6px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-wrd-side{flex:none;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto 38px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-stats{grid-column:1 / -1;padding:6px 10px;display:flex;flex-wrap:wrap;justify-content:space-around;gap:4px 12px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-stats span{font-size:14px;}
/* 台面 */
html.m :is(#bacRoot,#tnRoot.bac-root) .th-tbl{padding:0;border-radius:16px 16px 0 0;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-felt{inset:5px 5px 0;border-radius:11px 11px 0 0;zoom:1;}
html.m :is(#bacRoot,#tnRoot.bac-root) .th-ring{top:4px;width:50px;height:50px;margin-left:-25px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .th-ring .lt-ring{width:50px;height:50px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .th-ring .lt-ring .v b{font-size:20px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-tag{top:57px;font-size:11px;letter-spacing:.14em;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-order{top:60px;width:144px;gap:6px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-order .btn{height:44px;font-size:14px;box-shadow:0 4px 14px rgba(0,0,0,.55);}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-hands{top:3px;gap:150px;--card-w:44px;--card-h:62px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-hand{min-width:140px;gap:3px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-hand .lab{font-size:13px;line-height:18px;letter-spacing:.22em;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-hand .lab b{font-size:20px;line-height:18px;}
/* 牌下面「你来咪 / 某某咪牌」那行：标签行钉死 18 高（点数 20px 会把行撑到 21），整手牌 3 + 18 + 62 + 14 收在注区上沿（104）以内；再压一层在注区上面，差一两 px 也看得见 */
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-hand .lab{height:18px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-hands{z-index:4;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-hand .cards{gap:4px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-hand .sq-who{height:14px;font-size:11px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .sq-slot.third{margin:0 9px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-result{top:3px;min-width:118px;max-width:146px;padding:4px 8px 5px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-result .h{font-size:19px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-result .s{font-size:11px;margin-top:2px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-result .m{font-size:15px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-print{display:none;}
/* 注区：闲 · 边注 · 庄 占中间整块 */
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-zones{top:104px;bottom:42px;height:auto;grid-template-columns:minmax(0,118px) minmax(0,500px) minmax(0,118px);gap:8px;padding:0 8px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-zones .bz.main{padding-top:6px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-zones .bz.main .cn{font-size:26px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-zones .bz.main small{font-size:11px;margin-top:2px;letter-spacing:.22em;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-grid .bz{font-size:14px;gap:5px;letter-spacing:.04em;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-grid .bz small{font-size:11px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-grid.g-s6{grid-template-rows:repeat(2,minmax(0,1fr));}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-grid.g-tiger .bz{flex-direction:column;gap:1px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-grid .bz .bz-me{right:3px;bottom:3px;transform:none;}
/* 别人的筹码：注区左下 / 格子左上角，不压字；你的在右下 */
html.m :is(#bacRoot,#tnRoot.bac-root) .bz.main .bz-npc{top:auto;bottom:5px;left:5px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-grid .bz .bz-npc{left:3px;top:3px;transform:none;}
/* 最下一条：别人的座位点 + 你的位置 */
html.m :is(#bacRoot,#tnRoot.bac-root) .bac-seats .seat{top:auto !important;bottom:7px;width:28px;height:28px;margin-left:-14px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .th-you{bottom:5px;}
html.m :is(#bacRoot,#tnRoot.bac-root) .th-menu{bottom:44px;}
@media (max-height:350px){
  html.m :is(#bacRoot,#tnRoot.bac-root) .bac-hands{--card-w:38px;--card-h:54px;}
  html.m :is(#bacRoot,#tnRoot.bac-root) .bac-hand .lab{font-size:12px;line-height:16px;}
  html.m :is(#bacRoot,#tnRoot.bac-root) .bac-hand .lab b{font-size:18px;line-height:16px;}
  html.m :is(#bacRoot,#tnRoot.bac-root) .bac-hand .lab{height:16px;}
  html.m :is(#bacRoot,#tnRoot.bac-root) .bac-hand .sq-who{height:12px;font-size:10px;}
  html.m :is(#bacRoot,#tnRoot.bac-root) .sq-slot.third{margin:0 8px;}
  html.m :is(#bacRoot,#tnRoot.bac-root) .bac-zones{top:92px;bottom:40px;}
  html.m :is(#bacRoot,#tnRoot.bac-root) .bac-zones .bz.main .cn{font-size:22px;}
  html.m :is(#bacRoot,#tnRoot.bac-root) .bac-tag{top:52px;}
  html.m :is(#bacRoot,#tnRoot.bac-root) .bac-order{top:46px;}
}
/* 咪牌台：全屏，牌按屏高缩（844×390 约 157×220，SE 带工具栏约 114×160），标题 / 另一门的牌 / 提示 / 直接开 一列放得下 */
html.m #sqStage{gap:8px;padding:calc(6px + var(--m-safe-t)) calc(10px + var(--m-safe-r)) calc(6px + var(--m-safe-b)) calc(10px + var(--m-safe-l));
  --sq-h:clamp(130px,calc(var(--m-vh,390px) - 170px),240px);}
html.m #sqTitle{font-size:18px;letter-spacing:.16em;}
html.m #sqRef{gap:28px;--card-w:34px;--card-h:48px;}
html.m #sqRef .ref{gap:8px;}
html.m #sqRef .ref .lab{font-size:13px;letter-spacing:.2em;}
html.m #sqRef .ref .lab b{font-size:18px;}
html.m #sqCards{gap:28px;}
html.m .sq-big{width:calc(var(--sq-h) * .714);height:var(--sq-h);}
html.m .sq-big .sq-face .card{width:100%;height:100%;}
html.m #sqHint{font-size:12px;}
html.m #sqStage > .btn{height:44px;min-width:120px;flex:none;}   /* 一列放不下时别把按钮压扁 */
/* 另一门已开的牌（#sqRef，补第三张时出现）多占一行 48 + 间距：牌再按屏高缩 56，整列还放得下 */
html.m #sqStage:has(#sqRef:not(:empty)){--sq-h:clamp(104px,calc(var(--m-vh,390px) - 226px),240px);}
