/* ================= 手机适配（第一遍：框架 + 大厅 / 收银台 / 弹窗 / 轮盘 / 骰宝 / Craps / 牌九 / 三卡 · 小德州多桌）=================
   方案见 docs/mobile.md。
   · 每条规则都挂在 html.m 下（js/core/mobile.js 判断是手机才加：触屏 + 短边 ≤ 600，或网址 ?mobile=1）。
     电脑（exe 的 file://、桌面浏览器）不会有 .m，这个文件一条都不命中——电脑版一个像素都不变。
     tests/mobile.test.js 会检查这里每个选择器都以 html.m 开头（唯一例外：.m-x 默认隐藏，它只挂在手机模式插进来的元素上）。
   · html.m-land 横屏 / html.m-port 竖屏；html.m-game 牌桌画面；html.m-hud 牌桌画面且有 #tblHead（横屏时跟顶栏并一行）；html[data-mscreen=xxScreen] 当前画面；
     html.m-drawer 右抽屉（其它桌 / 会员卡钱包）开着；html.m-road 左抽屉（路单屏）开着；html.m-fplist 大厅看列表；html.m-fpzoom 平面图放大。
   · 照 docs/design-system.md：只用 token、公共组件；不用 transform:scale 缩整画面；字 ≥ 10px；触控目标 ≥ 44px。 */

/* 手机模式插进来的元素：默认不显示（这些元素电脑上根本不存在） */
.m-x{display:none;}

/* ============ 0. 全局：视口、安全区、触控 ============ */
html.m{
  --m-top:44px;                                   /* 顶栏高 */
  --m-safe-t:env(safe-area-inset-top,0px);
  --m-safe-r:env(safe-area-inset-right,0px);
  --m-safe-b:env(safe-area-inset-bottom,0px);
  --m-safe-l:env(safe-area-inset-left,0px);
  --m-rail:68px;                                  /* 牌桌 rail 高 */
  touch-action:manipulation;                      /* 不要双击放大（误触），双指缩放照旧能用（无障碍） */
  -webkit-text-size-adjust:100%;text-size-adjust:100%;
}
html.m.m-land{--m-top:40px;}
html.m body{min-height:0;height:100%;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;}
html.m *{-webkit-touch-callout:none;}
html.m input,html.m select,html.m textarea{-webkit-touch-callout:default;user-select:text;font-size:16px;}   /* ≥16px：iOS 聚焦输入框不自动放大 */
/* 画面容器：避开刘海 / 圆角 / 底部横条；背景照样铺满 */
html.m .screen{padding-left:var(--m-safe-l);padding-right:var(--m-safe-r);}
html.m .screen > .content{margin-top:calc(var(--m-top) + var(--m-safe-t));}

/* ============ 1. 顶栏：一行紧凑（时间 · 现金 · 会员卡 · ATM · 抽屉键） ============ */
html.m #topbar{height:calc(var(--m-top) + var(--m-safe-t));padding:var(--m-safe-t) calc(8px + var(--m-safe-r)) 0 calc(10px + var(--m-safe-l));gap:8px;}
html.m #topbar .logo,html.m #topbar > .sep,html.m #hStatus{display:none;}
html.m #topbar .hitem{gap:5px;}
html.m #topbar .hitem .ic{width:15px;height:15px;}
html.m #topbar .hitem b{font-size:15px;}
html.m #topbar .grow{min-width:0;}
html.m #topbar .kv b{font-size:16px;}
html.m #topbar .kv small{font-size:10px;}
html.m #topbar .btn,html.m #topbar .badge{position:relative;flex:none;}
html.m #topbar .btn{height:34px;padding:0 10px;font-size:12px;gap:5px;}
html.m #topbar .badge{height:26px;padding:0 8px;font-size:11px;}
/* 触控：顶栏按钮看着 34px，点得到的范围 ≥ 44px */
html.m #topbar .btn::before,html.m #topbar .badge::before{content:"";position:absolute;left:-3px;right:-3px;top:50%;height:44px;margin-top:-22px;}
html.m #topbar .m-x.btn{display:inline-flex;}
html.m #topbar .m-x.btn .ic{width:16px;height:16px;}
html.m.m-port #topbar .m-roadbtn span,html.m.m-port #webSaveBtn{font-size:0;gap:0;}
html.m.m-port #webSaveBtn .ic{width:16px;height:16px;}
/* 竖屏 390 宽：ATM 只留字，现金去掉小标签 */
html.m.m-port #topbar{gap:6px;}
html.m.m-port #topbar .kv small{display:none;}
html.m.m-port #topbar .hitem > .ic{display:none;}
html.m.m-port #topbar .btn:not(.m-x) > .ic{display:none;}
/* 网页版「存档」键：竖屏只留图标（字号 0）——上一条把图标也收了，只剩一个空框：图标放回来 */
html.m.m-port #topbar #webSaveBtn > .ic{display:inline-block;}
/* 375 宽 + 网页版「存档」键 + 现金八位数（$52,345,678）：原来多出 2px 把齿轮挤出屏——现金、存档键左右内距各收一点 */
html.m.m-port #topbar #webSaveBtn{padding:0 8px;}
html.m.m-port #topbar .hcash{padding:0 3px;}
/* 行为镜子「Reality Check」原来塞在顶栏中间：手机上改成顶栏下面一条横幅 */
html.m #topbar .mr-top{position:fixed;left:calc(8px + var(--m-safe-l));right:calc(8px + var(--m-safe-r));top:calc(var(--m-top) + var(--m-safe-t) + 6px);
  max-width:none;height:auto;min-height:48px;padding:6px 6px 6px 12px;z-index:31;
  background:linear-gradient(180deg,#221913,#120c09);border:1px solid var(--brass-500);border-radius:var(--r-1);box-shadow:var(--shadow-2);}
html.m #topbar .mr-top .btn{height:36px;padding:0 12px;font-size:12px;}
html.m #topbar .mr-top-t{white-space:normal;}

/* ============ 2. 抽屉：右边（其它桌 / 会员卡 · 钱包 · 账本）· 左边（路单屏） ============ */
html.m.m-drawer .screen.active,html.m.m-road .screen.active{z-index:40;}
html.m .m-scrim{display:block;position:fixed;inset:0;z-index:48;background:rgba(0,0,0,.55);opacity:0;pointer-events:none;transition:opacity .2s ease;}
html.m.m-drawer .m-scrim,html.m.m-road .m-scrim{opacity:1;pointer-events:auto;}
html.m .screen .lt-layout > aside.lt-side,
html.m #floorScreen .concierge{
  position:fixed !important;top:0;right:0;bottom:0;left:auto;z-index:50;width:min(340px,88vw);height:auto;
  padding:var(--m-safe-t) var(--m-safe-r) var(--m-safe-b) 0;
  transform:translateX(104%);transition:transform .22s ease;visibility:hidden;
  box-shadow:-18px 0 40px rgba(0,0,0,.7);border-left:1px solid var(--brass-700);
}
html.m.m-drawer .screen.active .lt-layout > aside.lt-side,
html.m.m-drawer #floorScreen.active .concierge{transform:none;visibility:visible;}
/* 抽屉里的桌行、按钮：点得到 */
html.m .lt-side .tcard{padding:12px 14px;min-height:56px;}
html.m .lt-side .foot{padding:12px 14px calc(12px + var(--m-safe-b));}
html.m .lt-side .foot .btn{height:44px;}
html.m .lt-side .sh{padding:12px 14px;}

/* ============ 3. 弹窗：全屏；小确认框变成整宽的一块 ============ */
html.m .modal{align-items:stretch;justify-content:stretch;backdrop-filter:none;}
html.m .modal-box,
html.m .modal-box.w440,html.m .modal-box.w520,html.m .modal-box.w600,html.m .modal-box.w760{
  width:100% !important;max-width:none !important;height:100%;max-height:none !important;border-radius:0;border-left:0;border-right:0;
  padding:var(--m-safe-t) var(--m-safe-r) var(--m-safe-b) var(--m-safe-l);
}
html.m .modal-box > h3,html.m .modal-box .mh{flex:none;min-height:52px;padding:10px 6px 8px 16px;font-size:16px;letter-spacing:.08em;}
html.m .modal-box .mh span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
html.m .modal-box .mh .x{width:16px;height:16px;padding:14px;box-sizing:content-box;margin:-10px 0 -10px auto;flex:none;}
html.m .modal-box .mb{flex:1 1 auto;padding:14px 16px;font-size:14px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}
html.m .modal-box .mf,html.m .modal-box .modal-actions{flex:none;flex-wrap:wrap;padding:10px 16px 12px;border-top:1px solid var(--brass-900);}
html.m .modal-box .mf .btn,html.m .modal-box .modal-actions .btn{height:44px;min-width:96px;font-size:14px;}
/* 确认框（askConfirm）/ 网页版欢迎：内容少，整宽贴在中间，不铺满 */
html.m .modal.ask-modal,html.m .modal.web-modal{align-items:center;padding:12px calc(12px + var(--m-safe-r)) 12px calc(12px + var(--m-safe-l));}
html.m .ask-modal .modal-box,html.m .web-modal .modal-box{height:auto;max-height:100% !important;border-radius:var(--r-2);border:1px solid var(--brass-700);padding:0;}
html.m .ask-modal .mf .btn,html.m .web-modal .mf .btn{flex:1 1 0;}

/* ============ 4. Toast：放到顶栏下面正中，不盖 rail 和按钮 ============ */
html.m #toasts{left:calc(10px + var(--m-safe-l));right:calc(10px + var(--m-safe-r));bottom:auto;top:calc(var(--m-top) + var(--m-safe-t) + 8px);align-items:center;gap:6px;pointer-events:none;}
html.m .toast{max-width:min(520px,100%);font-size:13px;pointer-events:auto;transform:translateY(-12px);}
html.m .toast.in{transform:none;}
html.m .toast .toast-btn{height:36px;padding:0 14px;}
/* 横屏牌桌：正中上方是荷官的牌，toast 放左上（那里是远处的座位） */
html.m.m-land.m-game #toasts{right:auto;align-items:flex-start;width:min(380px,46vw);}
/* 牌桌上 toast 不挡手指：点得穿（下面的注区 / 倒计时环照样能点），只有 toast 里的按钮接点击 */
html.m.m-game .toast{pointer-events:none;}
html.m.m-game .toast .toast-btn,html.m.m-game .toast button,html.m.m-game .toast a{pointer-events:auto;}
/* Craps 倒计时环在左上角：toast 往右让开它 */
html.m.m-land[data-mscreen="crScreen"] #toasts{left:calc(62px + var(--m-safe-l));}

/* ============ 5. 竖屏拿着进了牌桌：请横过来 ============ */
html.m.m-port.m-game .m-rotate{display:flex;position:fixed;inset:0;z-index:55;align-items:center;justify-content:center;padding:24px;
  background:radial-gradient(ellipse at 50% 20%,var(--lamp-glow),transparent 60%),
    radial-gradient(circle at 12px 12px,var(--carpet-gold) 0 1.5px,transparent 2px) 0 0/24px 24px,
    linear-gradient(180deg,#0b0805 0%,var(--carpet-900) 50%,var(--carpet-700) 100%);}
html.m .m-rot-box{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;max-width:300px;
  padding:26px 22px 22px;border:1px solid var(--brass-700);border-radius:var(--r-2);
  background:linear-gradient(180deg,#1b1410,#120d0a);box-shadow:var(--hi-brass),var(--shadow-3);}
html.m .m-rot-art{width:120px;height:90px;}
html.m .m-rot-art .ph1{fill:none;stroke:var(--cream-700);stroke-width:2;}
html.m .m-rot-art .ph2{fill:rgba(21,90,64,.35);stroke:var(--brass-300);stroke-width:2.2;}
html.m .m-rot-art .arr,html.m .m-rot-art .arrh{fill:none;stroke:var(--brass-500);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
html.m .m-rot-box .t{font-family:var(--serif);font-size:20px;letter-spacing:.12em;color:var(--brass-300);}
html.m .m-rot-box .s{font-size:13px;line-height:1.7;color:var(--cream-500);}
html.m .m-rot-box .btn{height:44px;margin-top:4px;}

/* ============ 6. 收银台（入场）：竖屏居中；横屏左右两栏 ============ */
html.m #cashierScreen{padding-top:calc(var(--m-top) + var(--m-safe-t));justify-content:flex-start;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding-bottom:calc(16px + var(--m-safe-b));}
html.m #cashierScreen > *{flex:none;}
html.m .cashier-mark{margin:28px 0 18px;}
html.m .cashier-mark h1{font-size:26px;letter-spacing:.34em;padding-left:.34em;}
html.m .cashier-mark .sub{font-size:11px;letter-spacing:.36em;}
html.m .cashier-mark .rule{width:200px;}
html.m .cashier-box{width:min(440px,calc(100vw - 24px - var(--m-safe-l) - var(--m-safe-r)));margin-bottom:12px;}
html.m .cashier-box .pb{padding:14px 16px;gap:12px;}
html.m .cashier-box .seg{display:flex;width:100%;}
html.m .cashier-box .seg button{flex:1 1 0;height:44px;justify-content:center;padding:0 4px;font-size:14px;}
html.m .cashier-box .mf{padding:0 16px 16px;}
html.m .cashier-box .mf .btn{height:44px;white-space:normal;line-height:1.2;text-align:center;}
html.m .cashier-box .mf .btn.lg{height:50px;}
/* 横屏：左边招牌，右边收银台面板（面板里左 表单 · 右 按钮），尽量一屏放下 */
html.m.m-land #cashierScreen.active{display:grid;grid-template-columns:minmax(150px,1fr) minmax(0,600px);align-content:start;align-items:start;justify-content:center;column-gap:18px;
  padding-left:calc(14px + var(--m-safe-l));padding-right:calc(14px + var(--m-safe-r));}
html.m.m-land .cashier-mark{align-self:center;margin:8px 0;}
html.m.m-land .cashier-mark h1{font-size:22px;letter-spacing:.26em;padding-left:.26em;}
html.m.m-land .cashier-mark .sub{font-size:10px;letter-spacing:.2em;}
html.m.m-land .cashier-mark .rule{width:150px;}
html.m.m-land .cashier-box{width:100%;margin:8px 0 10px;display:grid;grid-template-columns:minmax(0,1fr) 190px;grid-template-rows:auto 1fr;}
html.m.m-land .cashier-box > .ph{grid-column:1 / 3;}
html.m.m-land .cashier-box .pb{padding:10px 12px;gap:8px;}
html.m.m-land .cashier-box .mf{padding:10px 12px 12px 0;justify-content:flex-start;}
html.m.m-land .cashier-box .q{font-size:14px;}
html.m.m-land #cashInput{height:44px;font-size:22px;}

/* ============ 7. 大厅：楼面图（拖着看 / 放大）或 区域列表 + 小地图；右栏会员卡钱包 → 抽屉 ============ */
html.m #floorScreen .content{display:flex;flex-direction:column;overflow:hidden;}
html.m #floorScreen .fp{flex:1;min-height:0;}
html.m .fp-head{min-height:0;padding:6px 8px 6px 12px;gap:4px 10px;flex-wrap:wrap;}
html.m .fp-title b{font-size:14px;letter-spacing:.26em;}
html.m .fp-title span{font-size:10px;letter-spacing:.12em;}
html.m .fp-clock{display:none;}
html.m .fp-stats{order:3;flex:1 1 100%;font-size:11px;gap:2px 10px;}
html.m .fp-stats span+span{display:none;}           /* 只留第一句（全场几桌几人）；各区自己的状态在门牌 / 列表里 */
html.m .fp-stats span{white-space:normal;}
html.m.m-land .fp-stats{order:0;flex:1 1 0;flex-wrap:nowrap;overflow:hidden;}
html.m .m-fpbar{display:flex;align-items:center;gap:6px;margin-left:auto;flex:none;}
html.m .m-fpbar .seg button{height:38px;padding:0 12px;gap:5px;font-size:12px;}
html.m .m-fpbar .seg button .ic{width:15px;height:15px;}
html.m .m-fpbar .m-fpzoom{width:44px;height:38px;padding:0;}
html.m .m-fpbar .m-fpzoom .ic{width:18px;height:18px;}
html.m.m-fpzoom .m-fpbar .m-fpzoom{border-color:var(--brass-500);color:var(--brass-100);background:linear-gradient(180deg,rgba(201,160,82,.28),rgba(201,160,82,.1));}
html.m.m-fplist .m-fpbar .m-fpzoom{display:none;}
html.m .fp-foot{display:none;}
/* 平面图：按宽度铺满、上下拖着看；放大 = 1.6 倍，横竖都能拖 */
html.m .fp-body{display:block;overflow:auto;padding:0;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}
html.m .fp-stage{width:100%;margin:0 auto;border-radius:0;}
html.m.m-fpzoom .fp-stage{width:max(160%,1040px);}
html.m .fp-zone[role=button]:hover{background-color:transparent;box-shadow:none;}
html.m .fp-zone[role=button]:active{background-color:rgba(255,200,120,.1);box-shadow:inset 0 0 0 1px var(--brass-500);}
/* 列表：小地图在上（点一下看大图），下面每个区一行 */
html.m.m-fplist .fp-body{padding:0 0 calc(14px + var(--m-safe-b));}
html.m.m-fplist .fp-stage{width:auto;aspect-ratio:auto;display:flex;flex-direction:column;overflow:visible;box-shadow:none;}
html.m.m-fplist .fp-svg{position:relative;inset:auto;width:100%;height:auto;aspect-ratio:1000 / 620;cursor:zoom-in;border-bottom:1px solid var(--brass-900);}
html.m.m-land.m-fplist .fp-svg{width:min(100%,520px);margin:0 auto;}
html.m.m-fplist .fp-zones{position:static;display:flex;flex-direction:column;gap:8px;padding:12px 12px 4px;}
html.m.m-land.m-fplist .fp-zones{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));align-items:start;}
html.m.m-fplist .fp-street,html.m.m-fplist .fp-compass,html.m.m-fplist .fp-zone.k-deco{display:none;}
html.m.m-fplist .fp-zone{position:relative !important;left:auto !important;top:auto !important;width:auto !important;height:auto !important;
  min-height:58px;display:flex;align-items:center;padding:9px 34px 9px 14px;border:1px solid var(--brass-900);border-radius:var(--r-1);
  background:linear-gradient(180deg,#1b1410,#120d0a);box-shadow:var(--hi-warm),3px 0 0 var(--brass-900) inset;}
html.m.m-fplist .fp-zone[role=button]::after{content:"";position:absolute;right:15px;top:50%;width:8px;height:8px;margin-top:-5px;
  border-right:1.5px solid var(--brass-500);border-top:1.5px solid var(--brass-500);transform:rotate(45deg);}
html.m.m-fplist .fp-zone.k-game{box-shadow:var(--hi-warm),3px 0 0 var(--felt-300) inset;}
html.m.m-fplist .fp-zone.k-hall{box-shadow:var(--hi-warm),3px 0 0 var(--brass-500) inset;border-color:var(--brass-700);}
html.m.m-fplist .fp-zone.k-reserved{opacity:.78;}
html.m.m-fplist .fp-zone.k-exit{border-color:var(--brass-700);}
html.m.m-fplist .fp-sign{position:static !important;transform:none;white-space:normal;text-align:left;padding:0;border:0;background:none;box-shadow:none;min-width:0;
  display:flex;flex-direction:column;gap:2px;}
html.m.m-fplist .fp-sign .t{justify-content:flex-start;font-size:15px;flex-wrap:wrap;gap:4px 8px;}
html.m.m-fplist .fp-sign .t em{font-size:11px;}
html.m.m-fplist .fp-zone.compact .fp-sign .t{font-size:15px;}
html.m.m-fplist .fp-sign .t .s{margin-left:0;}
html.m.m-fplist .fp-sign .s,html.m.m-fplist .fp-sign .x{justify-content:flex-start;font-size:12px;flex-wrap:wrap;gap:4px 6px;}
html.m.m-fplist #fpz-craps .fp-sign .x,html.m.m-fplist #fpz-exit .fp-sign .x{display:flex;}
html.m.m-fplist .fp-sign .fp-w{display:inline;}
html.m.m-fplist .fp-link{display:inline-flex;align-items:center;min-height:32px;padding:0 2px;}
/* 列表顺序：牌桌 → 贵宾厅 → 服务台 → 餐饮酒吧 → 暂未开放；每组第一个上面写组名 */
html.m.m-fplist #fpz-baccarat{order:10;} html.m.m-fplist #fpz-roulette{order:11;} html.m.m-fplist #fpz-blackjack{order:12;}
html.m.m-fplist #fpz-tcp{order:13;} html.m.m-fplist #fpz-uth{order:14;} html.m.m-fplist #fpz-sicbo{order:15;}
html.m.m-fplist #fpz-craps{order:16;} html.m.m-fplist #fpz-paigow{order:17;} html.m.m-fplist #fpz-poker{order:18;} html.m.m-fplist #fpz-slots{order:19;}
html.m.m-fplist #fpz-oasis{order:30;} html.m.m-fplist #fpz-lift{order:31;}
html.m.m-fplist #fpz-club{order:40;} html.m.m-fplist #fpz-cage{order:41;} html.m.m-fplist #fpz-exit{order:42;}
html.m.m-fplist .fp-zone.k-venue{order:50;}
html.m.m-fplist .fp-zone.k-reserved{order:60;}
html.m.m-fplist .fp-zone.k-tourney{order:20;box-shadow:var(--hi-warm),3px 0 0 var(--brass-700) inset;}
html.m.m-port.m-fplist #fpz-oasis,html.m.m-port.m-fplist #fpz-club,html.m.m-port.m-fplist #fpz-sportsbar,html.m.m-port.m-fplist #fpz-stadium{margin-top:26px;}
html.m.m-port.m-fplist #fpz-baccarat{margin-top:22px;}
html.m.m-port.m-fplist #fpz-baccarat::before,html.m.m-port.m-fplist #fpz-oasis::before,html.m.m-port.m-fplist #fpz-club::before,
html.m.m-port.m-fplist #fpz-sportsbar::before,html.m.m-port.m-fplist #fpz-stadium::before{
  position:absolute;left:2px;bottom:100%;margin-bottom:6px;font-family:var(--serif);font-size:11px;letter-spacing:.24em;color:var(--brass-500);white-space:nowrap;}
html.m.m-port.m-fplist #fpz-baccarat::before{content:"牌桌 · 主楼面 LEVEL 1";}
html.m.m-port.m-fplist #fpz-oasis::before{content:"贵宾厅";}
html.m.m-port.m-fplist #fpz-club::before{content:"服务台 · 出口";}
html.m.m-port.m-fplist #fpz-sportsbar::before{content:"餐饮 · 酒吧";}
html.m.m-port.m-fplist #fpz-stadium::before{content:"暂未开放";}
/* 右栏 → 抽屉 */
html.m #floorScreen .concierge{overflow-y:auto;padding:calc(12px + var(--m-safe-t)) calc(12px + var(--m-safe-r)) calc(14px + var(--m-safe-b)) 12px;gap:12px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}
html.m .concierge .actions .btn{height:44px;}
html.m .concierge .panel .ph{min-height:44px;}
html.m .concierge .mu-gear{width:18px;height:18px;padding:12px;box-sizing:content-box;margin:-12px -12px -12px 0;}

/* ============ 8. 牌桌通用（横屏）：顶栏缩到右边，牌桌 HUD 顶上来并成一行；侧面板 → 右抽屉；rail 贴底 ============ */
html.m.m-land.m-hud #topbar{left:auto;width:auto;padding-left:10px;border-left:1px solid var(--brass-900);gap:6px;}
html.m.m-land.m-hud #topbar .hitem{display:none;}
html.m.m-land.m-hud #topbar .grow{flex:0 0 0;width:0;overflow:visible;}
/* 牌桌上现金 rail 里就有、会员卡回大厅看：顶栏右边只留 ATM · 路单 · 桌台，给牌桌 HUD 腾地方 */
html.m.m-land.m-hud #topbar .kv,html.m.m-land.m-hud #topbar #hTier,html.m.m-land.m-hud #topbar .mu-hud{display:none;}
html.m.m-land.m-hud #topbar .btn:not(.m-x){font-size:0;gap:0;padding:0 9px;}
html.m.m-land.m-hud #topbar .btn:not(.m-x) .ic{width:17px;height:17px;}
html.m.m-hud .screen.active > .content{margin-top:var(--m-safe-t);}
html.m.m-game #tblHead{height:var(--m-top);min-height:var(--m-top);padding:0 calc(var(--m-topw,320px) + 6px) 0 12px;gap:8px;}
html.m.m-game #tblHead .badge,html.m.m-game #tblHead .hud-sub,html.m.m-game #tblHead .sep{display:none;}
html.m.m-game #tblHead .hud-title{font-size:15px;flex:none;}
html.m.m-game #tblHead .kv{flex:none;}
html.m.m-game #tblHead .kv b{font-size:14px;}
html.m.m-game #tblHead .kv small{font-size:10px;}
html.m.m-game #tblHead .kv:first-of-type{margin-left:auto;}
html.m.m-game #tblHead .btn{position:relative;height:32px;padding:0 10px;flex:none;}
html.m.m-game #tblHead .btn::before{content:"";position:absolute;left:-2px;right:-2px;top:50%;height:44px;margin-top:-22px;}
html.m.m-game #tblHead .btn.ghost:not(.danger){font-size:0;gap:0;padding:0 9px;}    /* 规则 / 声音：只留图标 */
html.m.m-game #tblHead .btn.ghost:not(.danger) .ic{width:17px;height:17px;}
html.m.m-game #tblHead .btn.ghost:not(.danger):not(:has(.ic)){font-size:11px;padding:0 8px;}   /* 没图标的（环境音）照样写字 */
html.m .screen .lt-layout{grid-template-columns:minmax(0,1fr) !important;}
html.m .lt-main{min-width:0;}
/* rail：托盘筹码大一号、不要行标签和面额小字（筹码面上就有）；按钮 44 高 */
html.m .rail{padding-bottom:var(--m-safe-b);}
html.m .rail .tray{padding:2px 8px 4px;border-radius:8px;}
html.m .rail .tray .tlbl,html.m .rail .chipslot small{display:none;}
html.m .rail .tray .trow{gap:6px;}
html.m .rail .tray .grp{gap:6px;flex-wrap:nowrap;}
html.m .rail .tray .chip{width:48px;height:48px;}
html.m .rail .tray .chip::before{inset:9px;}
html.m .rail .tray .chip::after{font-size:12px;}
html.m .rail .tray .plq{width:66px;height:46px;}
html.m .rail .chipslot{padding-top:7px;gap:0;}
html.m .rail .chipslot.sel .chip,html.m .rail .chipslot.sel .plq{transform:translateY(-6px);}
html.m .rail .chipslot.sel::after{bottom:-2px;}
html.m .rail .chipslot:hover .chip,html.m .rail .chipslot:hover .plq{transform:none;}
html.m .rail .chipslot.sel:hover .chip,html.m .rail .chipslot.sel:hover .plq{transform:translateY(-6px);}
html.m .rail .ru-btns{gap:6px;}
html.m .rail .ru-btns .btn{height:44px;padding:0 12px;font-size:13px;}
html.m .rail .sl-info{font-size:11px;}
html.m .rail .sl-info b{font-size:15px;}
/* 倒计时环：手机上 60 */
html.m .screen .lt-ring{width:60px;height:60px;}
html.m .screen .lt-ring .v b{font-size:21px;}
html.m .screen .lt-ring .v small{font-size:10px;letter-spacing:.1em;margin-top:2px;}
/* 路单屏 → 左抽屉 */
html.m.m-game .m-roadbox{position:fixed !important;left:0;top:0;bottom:0;right:auto;z-index:50;margin:0 !important;width:min(300px,82vw);height:auto !important;
  padding:calc(8px + var(--m-safe-t)) 8px calc(8px + var(--m-safe-b)) calc(8px + var(--m-safe-l));border-radius:0;
  transform:translateX(-104%);transition:transform .22s ease;visibility:hidden;box-shadow:18px 0 40px rgba(0,0,0,.7);}
html.m.m-road .screen.active .m-roadbox{transform:none;visibility:visible;}

/* ============ 9. 轮盘：左 转盘 + 倒计时 / 开奖屏；右 台面；下 rail ============ */
html.m .ru-stage{display:grid;grid-template-columns:clamp(150px,23vw,230px) minmax(0,1fr);gap:8px;padding:6px 8px 4px calc(6px);overflow:hidden;}
html.m .ru-top{flex-direction:column;min-height:0;gap:6px;align-items:stretch;justify-content:flex-start;}
html.m .ru-wheelwell{flex:1 1 auto;max-width:none;min-width:0;min-height:100px;}
html.m .ru-info{flex:none;gap:4px;}
html.m .ru-info-row{gap:6px;}
html.m .ru-wnd{height:60px;padding:14px 6px 3px;}
html.m .ru-wn{width:40px;height:36px;font-size:21px;}
html.m .ru-wt{font-size:10px;}
html.m .ru-plaque,html.m .ru-hint{display:none;}
html.m .ru-call{font-size:13px;min-height:20px;line-height:1.3;}
html.m .ru-call small{display:none;}
html.m .ru-tablewrap{min-height:0;align-items:center;}
html.m .ru-table{width:100%;padding:6px;border-radius:8px 18px 8px 8px;}
html.m .ru-felt{padding:3px 8px 8px;}
html.m .ru-print{margin:1px 0 4px;}
html.m .ru-board{--zw:34px;--rh:clamp(17px,calc((var(--m-vh,390px) - 232px) / 6),30px);grid-template-columns:var(--zw) repeat(12,minmax(0,1fr)) 36px;
  grid-template-rows:repeat(6,var(--rh)) 28px 28px;gap:2px;}
html.m .ru-cell .lb{font-size:15px;}
html.m .ru-cell.out .lb{font-size:10px;letter-spacing:.06em;}
html.m .ru-cell:hover{border-color:rgba(231,201,127,.7);}
html.m .ru-spot{width:22px;height:22px;margin:-11px 0 0 -11px;}              /* 压线热区：手指按得到（格子本身还是更大） */
html.m .ru-spot:hover{box-shadow:none;background:transparent;}
html.m .ru-spot:active{box-shadow:0 0 0 1.5px var(--brass-300);background:rgba(231,201,127,.14);}
html.m .ru-rail{height:auto;min-height:var(--m-rail);padding:0 10px var(--m-safe-b);gap:10px;}
html.m .ru-railinfo{gap:1px;}
html.m.m-game #ruTrend{display:flex;flex-direction:column;}
html.m #ruTrend .ru-tw-stats{overflow-y:auto;}

/* ============ 10. 骰宝：左 摇骰器 + 倒计时 / 开奖屏；右 整张台布压扁放得下（不用滚）；走势屏 → 左抽屉 ============ */
html.m .sb-stage{align-items:stretch;justify-content:stretch;gap:8px;padding:4px 8px 4px 6px;overflow:hidden;}
html.m .sb-left{width:clamp(150px,21vw,200px);display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;
  align-items:center;justify-items:center;gap:6px 4px;align-content:center;}
html.m #sbRing{grid-column:1;grid-row:1;}
html.m .sb-shaker{grid-column:1 / 3;grid-row:2;zoom:.62;}
html.m .sb-wnd{grid-column:1 / 3;grid-row:3;width:100%;height:56px;padding:15px 5px 4px;}
html.m .sb-wnd-body{gap:5px;flex-wrap:wrap;}
html.m .sb-wnd .wd svg{width:18px;height:18px;}
html.m .sb-wnd .tot{font-size:20px;width:30px;height:28px;}
html.m .sb-wnd .tag{font-size:10px;}
html.m .sb-table{align-self:center;padding:3px 6px 5px;border-width:7px;border-radius:9px;max-width:none;}
html.m .sb-print{display:none;}
html.m .sb-board{gap:3px;}
html.m .sb-top{grid-template-columns:clamp(64px,10vw,90px) minmax(0,1fr) clamp(64px,10vw,90px);gap:3px;}
html.m .sb-col{grid-template-rows:minmax(0,1fr) calc(34px * var(--m-k,1));gap:3px;}
html.m .sb-center{gap:3px;}
html.m .sb-row{gap:3px;}
html.m .sb-cell{min-height:0;border-width:1.2px;border-radius:3px;}
html.m .sb-cell::after{inset:1.5px;}
html.m .sb-cell:hover{border-color:rgba(231,201,127,.72);}
html.m .sb-cell.edge{min-height:0;height:calc(60px * var(--m-k,1));} html.m .sb-cell.side{min-height:0;height:calc(34px * var(--m-k,1));}
html.m .sb-cell.dbl,html.m .sb-cell.tri{min-height:0;height:calc(46px * var(--m-k,1));}
html.m .sb-cell.tot{min-height:0;height:calc(36px * var(--m-k,1));} html.m .sb-cell.four{min-height:0;height:calc(26px * var(--m-k,1));}
html.m .sb-cell.pair{min-height:0;height:calc(34px * var(--m-k,1));} html.m .sb-cell.single{min-height:0;height:calc(34px * var(--m-k,1));}
html.m .sb-cell .cn{font-size:19px;} html.m .sb-cell .cn.s{font-size:16px;}
html.m .sb-cell.any .cn{font-size:16px;}
html.m .sb-cell .en{font-size:10px;letter-spacing:.14em;}
html.m .sb-cell.edge .en,html.m .sb-cell.side .en,html.m .sb-cell.edge .sub{display:none;}
html.m .sb-cell .tn{font-size:16px;}
html.m .sb-in{gap:1px;}
html.m .sb-cell .odds{font-size:10px;letter-spacing:0;}
html.m .sb-cell .dd svg{width:13px;height:13px;}
html.m .sb-cell.single .dd svg{width:18px;height:18px;}
html.m .sb-cell.single .sb-in{gap:6px;}
html.m .sb-stack{bottom:1px;}
html.m .sb-stack .chipstack.sm,html.m .sb-stack .chipstack{zoom:.8;}
html.m .sb-stack .sb-amt{font-size:10px;padding:0 3px;}
html.m .sb-npcchip{zoom:.8;}
html.m .sb-result{top:-2px;font-size:13px;padding:5px 14px;letter-spacing:.08em;}
html.m .sb-rail{height:auto;min-height:var(--m-rail);gap:10px;padding:0 10px var(--m-safe-b);}
html.m .sb-railinfo{min-width:0;flex:1 1 auto;gap:1px;}
html.m .sb-hint{display:none;}
html.m .sb-rail .ru-btns{flex-wrap:nowrap;}
/* 走势屏在左抽屉里竖着排：最近开奖 · 统计 · Streak Bet */
html.m.m-game .sb-screen.m-roadbox{display:flex;flex-direction:column;gap:6px;overflow-y:auto;background:linear-gradient(180deg,#140e0a,#0c0806);}
html.m .sb-screen.m-roadbox .lcd{flex:none;}
html.m .sb-screen.m-roadbox .sb-road-box{height:96px;}
html.m .sb-screen.m-roadbox .sb-stats-box{height:150px;}
html.m .sb-screen.m-roadbox .sb-streak-box{height:auto;min-height:120px;}
html.m .sb-screen.m-roadbox .lcd-head{flex-wrap:wrap;}
html.m .sb-screen.m-roadbox .lcd-head .lbl.dim{white-space:normal;}
html.m .sb-trk{grid-template-columns:30px 24px 34px minmax(0,1fr) 72px;}
html.m .sb-szone{height:44px;}

/* ============ 11. Craps：台边玩家一行（左边倒计时环）· 台面压扁放得下 · rail 一行；掷骰记录屏 → 左抽屉 ============ */
html.m #tblHead.cr-head .cr-halls button{height:30px;padding:0 8px;font-size:11px;}
html.m #tblHead.cr-head .kv b{font-size:14px;}
html.m .cr-top{display:flex;margin:4px 8px 0 60px;gap:6px;min-height:40px;}
html.m .cr-seats{flex:1;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;gap:4px;padding:0;scrollbar-width:none;-webkit-overflow-scrolling:touch;}
html.m .cr-seats::-webkit-scrollbar{display:none;}
html.m .cr-seat{width:auto;min-width:62px;max-width:92px;height:38px;padding:3px 7px;}
html.m .cr-seat:has(.pt-seat){width:40px;min-width:0;height:40px;margin-left:-20px;padding:0;}   /* 有写实小头像（js/core/portraits.js）：圆的，不拉成胶囊 */
html.m .cr-seat b{font-size:12px;}
html.m .cr-rail{position:static;}                        /* 倒计时环挪到左上角：相对 .lt-main 定位 */
html.m #crRing{position:absolute;left:6px;top:0;z-index:6;}
html.m #crRing .lt-ring{width:48px;height:48px;}
html.m #crRing .lt-ring .v b{font-size:17px;}
html.m #crRing .lt-ring .v small{font-size:10px;letter-spacing:0;margin-top:1px;}
html.m .cr-stage{padding:4px 8px 3px;}
html.m .cr-table{border-width:7px;border-radius:18px;}
html.m .cr-wall{height:8px;margin:0 12px;}
html.m .cr-felt{grid-template-columns:minmax(0,1fr) clamp(170px,26vw,236px);gap:6px;padding:4px 6px 5px;}
html.m .cr-board{gap:3px;grid-template-columns:clamp(54px,8vw,86px) repeat(6,minmax(0,1fr)) clamp(40px,5.5vw,58px);
  grid-template-rows:minmax(calc(58px * var(--m-k,1)),1.9fr) minmax(calc(26px * var(--m-k,1)),.85fr) minmax(calc(28px * var(--m-k,1)),.9fr) minmax(calc(22px * var(--m-k,1)),.6fr) minmax(calc(26px * var(--m-k,1)),.75fr);}
html.m .cr-z{border-width:1.2px;border-radius:4px;}
html.m .cr-z:hover{border-color:var(--ink);}
html.m .cr-z .cn{font-size:14px;letter-spacing:.12em;}
html.m .cr-z.dcbar .cn{font-size:11px;letter-spacing:.06em;}
html.m .cr-z .en{font-size:10px;letter-spacing:.08em;}
html.m .cr-z .od{font-size:10px;}
html.m .cr-z.come .cn{font-size:18px;letter-spacing:.4em;}
html.m .cr-z.pass .cn{font-size:15px;letter-spacing:.34em;}
html.m .cr-z.field .fd{font-size:14px;gap:4px;}
html.m .cr-z.field .fd i{width:19px;height:19px;font-size:11px;}
html.m .cr-z.field .fd em{font-size:10px;}
html.m .cr-z.dpbar .cn{font-size:11px;letter-spacing:.16em;}
html.m .cr-z.big .bn{font-size:17px;}
html.m .cr-nb-top,html.m .cr-nb-bot{height:18px;}
html.m .cr-nb-top.hot::before,html.m .cr-nb-bot.hot::before{content:"";}
html.m .cr-nb-mid .nn{font-size:22px;}
html.m .cr-nb-mid .nn.w{font-size:14px;letter-spacing:.06em;}
html.m .cr-nb-mid .po{font-size:10px;}
html.m .cr-z.num .cr-won,html.m .cr-z.num .cr-npc{top:20px;}
html.m .cr-puck{width:28px;height:28px;font-size:10px;letter-spacing:0;}
html.m .cr-props{gap:3px;padding:3px;border-width:1.2px;}
html.m .cr-props .p-head{font-size:10px;letter-spacing:.1em;}
html.m .cr-props .cr-z .cn{font-size:11px;letter-spacing:.06em;}
html.m .cr-z.p-seven .cn{font-size:13px;letter-spacing:.24em;}
html.m .cr-z.p-hard{gap:4px;}
html.m .cr-z .dd svg{width:12px;height:12px;}
html.m .p-hh{gap:3px;}
html.m .p-hh .lb{font-size:10px;letter-spacing:0;}
html.m .cr-z.p-hhx b{font-size:12px;}
/* 中间区收着时：整块是一个「点开」入口（格子太小，不直接押，见 mobile.js installCrProps） */
html.m .cr-props .p-head::after{content:" · 点开下注";color:var(--txt);}
html.m.m-crprops .cr-props .p-head::after{content:"";}
/* 展开：盖在台面上，八列三行，每格 44 高（骰子 / 报点 / 掷骰邀请仍在它上面） */
html.m.m-crprops .cr-props{position:absolute;left:6px;right:6px;top:4px;z-index:19;padding:5px 6px 6px;gap:4px;
  grid-template-columns:repeat(8,minmax(0,1fr));grid-template-rows:24px repeat(3,44px);grid-auto-rows:44px;
  background:radial-gradient(ellipse at 50% 70%,var(--f5,#16553d) 0%,var(--f7,#10412f) 58%,var(--f9,#0b2e21) 100%);
  box-shadow:0 0 0 1px rgba(0,0,0,.5),0 10px 28px rgba(0,0,0,.6);}
html.m.m-crprops .cr-props .p-head{grid-column:1/9;grid-row:1;text-align:left;padding-left:4px;font-size:11px;}
html.m.m-crprops .cr-z.p-seven{grid-row:2;grid-column:1/3;}
html.m.m-crprops .cr-z.p-craps{grid-row:2;grid-column:3/5;flex-direction:column;gap:0;}
html.m.m-crprops .cr-z.p-horn{grid-row:2;grid-column:5/7;}
html.m.m-crprops .cr-z.p-ce{grid-row:2;grid-column:7/9;}
html.m.m-crprops .cr-z.p-hard,html.m.m-crprops .cr-z.p-one{grid-row:3;grid-column:auto / span 1;flex-direction:column;gap:2px;}
html.m.m-crprops .p-hh{grid-row:4;grid-column:1/9;gap:4px;}
html.m.m-crprops .p-hh .lb{font-size:11px;padding:0 6px;}
html.m.m-crprops .cr-props .cr-z .cn{font-size:13px;}
html.m.m-crprops .cr-z.p-hhx b{font-size:16px;}
html.m.m-crprops .cr-props .cr-z .dd svg{width:15px;height:15px;}
html.m .m-crpx{display:none;}
html.m.m-crprops .m-crpx{display:inline-flex;position:absolute;right:10px;top:6px;z-index:23;height:26px;padding:0 10px;font-size:12px;gap:4px;
  background:rgba(0,0,0,.45);}
html.m.m-crprops .m-crpx::before{content:"";position:absolute;left:-4px;right:-4px;top:50%;height:44px;margin-top:-22px;}
html.m .cr-die3d{width:30px;height:30px;margin:-15px 0 0 -15px;}
html.m .cr-call{top:2px;font-size:12px;padding:4px 12px;}
html.m .cr-offer{top:-6px;font-size:11px;}
html.m .cr-offer .btn{height:36px;}
html.m .cr-rail{height:auto;min-height:var(--m-rail);gap:8px;padding:0 10px var(--m-safe-b);}
html.m .cr-railinfo{gap:3px;flex:1 1 auto;}
html.m .cr-mode button{height:32px;padding:0 8px;font-size:11px;}
html.m .cr-infos{gap:10px;}
html.m .cr-on{font-size:11px;min-height:28px;}
html.m .cr-on input{width:18px;height:18px;}
html.m .cr-hint{display:none;}
html.m .cr-rail .ru-btns{display:flex;flex-wrap:nowrap;gap:6px;}
html.m .cr-rail .ru-btns .btn{height:44px;padding:0 11px;font-size:12px;}
html.m .cr-rail .ru-btns .btn.ghost,html.m .cr-rail .ru-btns .rebet-btn{font-size:0;gap:0;width:44px;padding:0;}   /* 撤销 / 清空 / Rebet 只留图标，掷骰写字 */
html.m .cr-rail .ru-btns .btn .ic{width:18px;height:18px;}
html.m .cr-rail .ru-btns .btn.primary{padding:0 14px;font-size:14px;}
/* 掷骰记录屏在左抽屉里 */
html.m.m-game .cr-lcdbox.m-roadbox{display:flex;flex-direction:column;background:linear-gradient(180deg,#140e0a,#0c0806);}
html.m .cr-lcdbox.m-roadbox .cr-histbox{flex:1;grid-template-rows:auto minmax(0,1fr) auto;}
html.m .cr-lcdbox.m-roadbox .cr-road{flex-wrap:wrap-reverse;align-content:flex-start;justify-content:flex-start;flex-direction:row-reverse;gap:3px;}
html.m .cr-lcdbox.m-roadbox .cr-stats{grid-template-columns:1fr;}
html.m .cr-lcdbox.m-roadbox .lcd-head{flex-wrap:wrap;}

/* ============ 12. 牌九：台面压扁（荷官区 + 八门一屏放下）· 摆牌托盘盖在 rail 上、骨牌够大好拖；最近开牌屏 → 左抽屉 ============ */
html.m .pg-stage{padding:4px 8px 2px;overflow:hidden;}
html.m .pg-table{padding:4px 10px 4px;border-width:7px;border-radius:10px 10px 44% 44% / 10px 10px 18% 18%;max-width:none;}
html.m .pg-dealer{gap:8px;}
html.m .pg-dl-left{gap:8px;}
html.m .pg-dl-right{gap:8px;}
html.m .pg-wall{grid-template-columns:repeat(4,14px);gap:3px;padding:3px 5px;}
html.m .pg-stack svg{width:13px;height:25px;}
html.m .pg-house{min-width:220px;min-height:0;padding:4px 10px 5px;gap:2px;}
html.m .pg-house .pg-tile svg{width:24px;height:47px;}
html.m .pg-house .pg-tile.lay svg{width:47px;height:24px;}
html.m .pg-hhands{gap:12px;}
html.m .pg-hhands em{font-size:13px;}
html.m .pg-hwhy{display:none;}
html.m .pg-hlab b{font-size:11px;letter-spacing:.2em;}
html.m .pg-chung{width:24px;height:24px;font-size:12px;left:-9px;top:-9px;}
html.m .pg-cup{width:70px;height:42px;}
html.m .pg-call{font-size:11px;min-width:80px;line-height:1.4;}
html.m .pg-print{display:none;}
html.m .pg-boxes{gap:5px;padding:4px 4px 0;}
html.m .pg-box{min-height:calc(104px * var(--m-k,1));padding:3px 2px 4px;gap:1px;border-width:1.2px;}
html.m .pg-box:nth-child(1),html.m .pg-box:nth-child(7){margin-bottom:14px;}
html.m .pg-box:nth-child(2),html.m .pg-box:nth-child(6){margin-bottom:7px;}
html.m .pg-box:nth-child(3),html.m .pg-box:nth-child(5){margin-bottom:2px;}
html.m .pg-box.me{min-height:calc(110px * var(--m-k,1));}
html.m .pg-box.me:hover{border-color:rgba(231,201,127,.95);}
html.m .pg-bn{font-size:12px;left:4px;top:2px;}
html.m .pg-who{height:14px;font-size:10px;}
html.m .pg-box.me .pg-who{font-size:11px;}
html.m .pg-tiles{min-height:46px;}
html.m .pg-box .pg-tile svg{width:17px;height:33px;}
html.m .pg-hands{gap:4px;}
html.m .pg-hands .hd em{font-size:10px;min-height:12px;}
html.m .pg-bet{height:24px;}
html.m .pg-amt{font-size:10px;padding:0 3px;}
html.m .pg-bet .chipstack{zoom:.8;}
html.m .pg-out{font-size:11px;padding:0 3px;}
html.m .pg-tapme{font-size:10px;letter-spacing:.06em;}
html.m .pg-result{top:0;font-size:13px;padding:4px 14px;letter-spacing:.04em;}   /* 压在「HOUSE」那行字上，不挡庄家的牌和点数 */
html.m .pg-rail{height:auto;min-height:var(--m-rail);gap:10px;padding:0 10px var(--m-safe-b);}
html.m .pg-hint{display:none;}
html.m .pg-rail .ru-btns .btn{padding:0 11px;}
/* 摆牌托盘：手机上骨牌 40×78，按钮 44 高；盖住下半张桌，头上一行说明 */
html.m .pg-setter{padding:6px calc(12px + var(--m-safe-r)) calc(8px + var(--m-safe-b)) calc(12px + var(--m-safe-l));}
html.m .pg-st-head{margin-bottom:4px;gap:10px;}
html.m .pg-st-head .t{font-size:14px;}
html.m .pg-st-head .s{font-size:11px;}
html.m .pg-st-body{gap:12px;}
html.m .pg-st-hands{padding:4px 2px 8px;}
html.m .pg-st-row{padding:0 10px;column-gap:8px;row-gap:2px;}
html.m .pg-st-row .lab b{font-size:15px;}
html.m .pg-st-row .name{min-width:70px;}
html.m .pg-st-row .name b{font-size:17px;}
html.m .pg-st-row .tiles{gap:10px;padding-top:4px;min-width:100px;}
html.m .pg-st-row .pg-tile svg{width:40px;height:78px;}
html.m .pg-st-row .pg-tile:hover{transform:none;}
html.m .pg-st-row .pg-tile.sel{transform:translateY(-6px);}
html.m .pg-st-side{gap:5px;}
html.m .pg-st-why{font-size:11px;min-height:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
html.m .pg-st-btns{gap:6px;}
html.m .pg-st-btns .btn{height:44px;padding:0 12px;font-size:13px;}
/* 最近开牌屏 → 左抽屉：路单一列一局，横着能滑 */
html.m.m-game .pg-screen.m-roadbox{display:flex;flex-direction:column;gap:6px;background:linear-gradient(180deg,#140e0a,#0c0806);}
html.m .pg-screen.m-roadbox .pg-road-box{flex:1 1 60%;min-height:0;}
html.m .pg-screen.m-roadbox .pg-road{flex-wrap:wrap-reverse;flex-direction:row-reverse;justify-content:flex-start;align-content:flex-start;gap:3px;overflow-y:auto;}
html.m .pg-screen.m-roadbox .pg-rc{height:84px;}
html.m .pg-screen.m-roadbox .pg-stats-box{flex:none;}
html.m .pg-screen.m-roadbox .lcd-head{flex-wrap:wrap;}

/* ============ 13. 三卡 / 小德州 / 21 点 / 德州牌桌：已迁到统一牌桌 HUD（css/table-hud.css）。手机横屏第二遍适配前的过渡：台面整体缩小（同百家乐） ============ */
html.m .bj-th,html.m .cv-th,html.m .pk-th{--th-board:44px;}   /* 细屏在手机上不用 118 高（那是百家乐路单的） */
html.m .bj-cloth,html.m .cv-cloth{zoom:.52;}   /* 半月台两端的座位要整个放得下 */
html.m .cv-root .th-acts .btn small{display:none;}

/* ============ 14. ATM：机器按屏宽排，屏幕上的选项直接点；键盘键 44 高；借记卡 / 明细放在机器下面 ============ */
html.m .atm-stage{grid-template-columns:minmax(0,1fr);gap:14px;}
html.m .atm{width:100%;max-width:470px;margin:0 auto;}
html.m .atm-face{grid-template-columns:28px minmax(0,1fr) 28px;gap:4px;}
html.m .atm-fdk .fk{height:36px;}
html.m .atm-scr .op{height:32px;padding:0 8px;font-size:12px;}
html.m .atm-shelf{grid-template-columns:1fr 1fr;row-gap:12px;}
html.m .atm-shelf .atm-pad{grid-column:1 / 3;grid-row:1;justify-self:center;grid-template-columns:repeat(3,minmax(52px,64px)) minmax(76px,92px);grid-auto-rows:44px;gap:6px;}
html.m .atm-pad .pk{font-size:18px;}
html.m .atm-pad .pk.fn{font-size:13px;}
html.m .atm-shelf .atm-slot.rcpt{grid-column:1;grid-row:2;}
html.m .atm-shelf .atm-slot.cardslot{grid-column:2;grid-row:2;}
html.m .atm-disp .clip{width:min(340px,100%);}
html.m .atm-help{font-size:11px;}
html.m .atm-machines .seg button{height:48px;}
html.m .atm-wallet .dslot{height:122px;}
/* 横屏：机器摊开——左 屏幕，右 键盘 + 出钞口；借记卡 / 明细在机器下面（点机器上的插卡口也能插卡） */
html.m.m-land .atm{max-width:none;display:grid;grid-template-columns:minmax(0,1fr) 300px;grid-template-areas:"top top" "face shelf" "help disp";column-gap:12px;align-items:start;}
html.m.m-land .atm-top{grid-area:top;}
html.m.m-land .atm-face{grid-area:face;}
html.m.m-land .atm-shelf{grid-area:shelf;margin-top:0;}
html.m.m-land .atm-disp{grid-area:disp;margin-top:4px;}
html.m.m-land .atm-help{grid-area:help;}
html.m.m-land .atm-shelf .atm-pad{grid-template-columns:repeat(3,52px) 76px;grid-auto-rows:40px;}
html.m.m-land .atm-side{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px 16px;}
/* 横屏弹窗头 / 脚再薄一点，正文多留高度 */
html.m.m-land .modal-box > h3,html.m.m-land .modal-box .mh{min-height:44px;padding-top:6px;padding-bottom:6px;}
html.m.m-land .modal-box .mf,html.m.m-land .modal-box .modal-actions{padding-top:6px;padding-bottom:6px;}
html.m.m-land .modal-box .mf .btn,html.m.m-land .modal-box .modal-actions .btn{height:40px;}
html.m #muAtm .mb{padding:10px 12px;}

/* ============ 15. Cage：窗口画面压矮，表单 / 明细上下排 ============ */
html.m #muCage .mb{padding:10px 12px;}
html.m .cage-window{height:96px;margin-bottom:10px;}
html.m .cage-body{grid-template-columns:minmax(0,1fr);gap:14px;}
html.m.m-land .cage-body{grid-template-columns:minmax(0,1fr) minmax(220px,300px);}
html.m .cage-side{border-left:0;padding-left:0;}
html.m.m-land .cage-side{border-left:1px solid var(--hairline);padding-left:14px;}
html.m .cage-tabs button,html.m .cage-meth button,html.m .cage-via .seg button{height:44px;}
html.m .cage-chips{gap:12px;}
html.m .mu-amt{height:48px;}
html.m .mu-quick button,html.m .mu-via .seg button{height:44px;}

/* ============ 16. 场内消费：场所一列 / 两列；进了场所菜单在上、账单在下 ============ */
html.m #muShop .mb{padding:10px 12px;}
html.m .shop-tabs{overflow-x:auto;scrollbar-width:none;}
html.m .shop-tabs::-webkit-scrollbar{display:none;}
html.m .shop-tabs button{height:44px;flex:1 0 auto;padding:0 12px;}
html.m .shop-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr));gap:10px;}
html.m .vcard .art{height:96px;}
html.m .vcard:hover{transform:none;}
html.m .sv-cols{grid-template-columns:minmax(0,1fr) minmax(200px,40%);}
html.m .sv-info{display:none;}
html.m.m-port .sv-cols{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;}
html.m.m-port .sv-bill{max-height:42vh;}
html.m .mi{grid-template-columns:minmax(0,1fr) auto 104px;padding:9px 0;}
html.m .mi .btn,html.m .mi button{min-height:36px;}
html.m .room{grid-template-columns:72px minmax(0,1fr) auto;}
html.m .shop-receipt{flex-direction:column;align-items:center;gap:12px;}
html.m.m-land .shop-receipt{flex-direction:row;align-items:flex-start;}
html.m .shop-receipt>.art{width:min(260px,100%);}
html.m .rcpaper.wide{width:min(380px,100%);}

/* ============ 17. 其它弹窗：钱包设置、行为镜子、规则 / 牌型说明 ============ */
html.m .mu-sec .seg{flex-wrap:wrap;}
html.m .mu-sec .seg button,html.m .mu-sec .btn{min-height:40px;}
html.m .mr-modal .modal-box .mh{flex-wrap:wrap;row-gap:6px;}
html.m .mr-modal .modal-box .mh .mr-tabs{order:3;margin-left:0;flex-basis:100%;display:flex;}
html.m .mr-modal .modal-box .mh .mr-tabs button{height:36px;flex:1;justify-content:center;}
html.m .mr-tiles{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));}
html.m .mr-row{grid-template-columns:84px minmax(0,1fr) auto;}
html.m .mr-plan-r{flex-wrap:wrap;}
html.m .mr-filter{align-items:flex-start;}
html.m .mr-filter > span{line-height:44px;flex:none;}
html.m .mr-filter .seg{flex-wrap:wrap;min-width:0;}
html.m .mr-filter .seg button{height:44px;padding:0 12px;white-space:nowrap;flex:1 0 auto;}
html.m .mr-plan-r .input{height:40px;width:min(180px,100%);}
html.m .mr-plan-r .seg button{height:36px;}
html.m.m-port .ru-help-grid,html.m.m-port .sb-help-grid,html.m.m-port .cr-help-grid{grid-template-columns:minmax(0,1fr);}
html.m.m-port .pg-rank-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
html.m.m-port .pg-rank-grid.sp{grid-template-columns:repeat(2,minmax(0,1fr));}
html.m .mu-foot-note{display:none;}                  /* 「键盘可用：数字 · Enter …」手机上没键盘 */
html.m #cageFootNote:not(:empty){display:block;flex:1 1 100%;margin:0 0 4px;font-size:11px;text-align:center;}
html.m .atm-slot.cardslot{cursor:pointer;}
html.m .mu-step{gap:4px;}
html.m .mu-step button{width:38px;height:38px;font-size:18px;}
html.m .stay .mu-step b.wide{min-width:110px;}
html.m .cage-colour .seg button{height:40px;}
html.m.m-port .sv-bill{max-height:36vh;}
html.m #muShop .mf{flex-wrap:nowrap;}
html.m #muShop .mf .grow{display:none;}
html.m #muShop .mf .btn{flex:1 1 auto;min-width:0;padding:0 10px;}
html.m.m-port .mr-chart{flex:none;overflow-x:auto;-webkit-overflow-scrolling:touch;}   /* .mb 是纵向 flex：不写 flex:none 会被压成一条缝 */
html.m.m-port .mr-chart .mr-svg{min-width:560px;}      /* 图的刻度字跟着 viewBox 缩：竖屏宁可横着滑，也别缩成看不清 */
html.m.m-port .mr-week{overflow-x:auto;}
/* 画面里面的弹窗（百家乐桌规 / 扑克买入这类，在 .screen 这一层里，盖不过顶栏）：从顶栏下沿开始铺 */
html.m .screen .modal{top:calc(var(--m-top) + var(--m-safe-t));}
html.m .rail .sl-info{white-space:nowrap;}

/* ============ 18. 矮屏（Safari 横屏带工具栏、iPhone SE 这类 ≤ 350 高）：再挤一点；万一还放不下，台面区自己能上下滑，不会被 rail 盖住 ============ */
html.m .ru-stage,html.m .sb-stage,html.m .cr-stage,html.m .pg-stage{overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}
html.m .sb-stage{align-items:flex-start;}
html.m .sb-table,html.m .sb-left{align-self:auto;margin-top:auto;margin-bottom:auto;}
@media (max-height:350px){
  html.m.m-land{--m-top:36px;--m-rail:60px;}
  html.m .rail .tray .chip{width:44px;height:44px;}
  html.m .rail .tray .chip::before{inset:8px;}
  html.m .rail .ru-btns .btn,html.m .cr-rail .ru-btns .btn{height:40px;}
  html.m.m-game #tblHead .btn{height:30px;}
  html.m #topbar .btn{height:30px;}
  html.m .cr-top{display:none;}                                   /* 台边玩家条让给台面（掷骰人在台面报点里） */
  html.m .cr-stage{padding-left:60px;}
  html.m #crRing{top:6px;}
  html.m .pg-house .pg-tile svg{width:20px;height:39px;}
  html.m .pg-box .pg-tile svg{width:15px;height:29px;}
  html.m .pg-tiles{min-height:38px;}
  html.m .pg-bet{height:20px;}
}
/* 窄横屏（iPhone SE 667 宽）：HUD 里的局数、Craps 分厅切换让位；顶栏抽屉键只留图标 */
@media (max-width:740px){
  html.m.m-game #tblHead .kv:first-of-type:not(:last-of-type){display:none;}
  html.m.m-game #tblHead .cr-halls{display:none;}
  html.m.m-game #tblHead .kv:has(#crOnTable){display:none;}
  html.m.m-land #topbar .m-x.btn{font-size:0;gap:0;padding:0 10px;}
  /* rail 挤不下时托盘自己横着滑，别把按钮 / 现金挤出去 */
  html.m .rail .ru-chiprow{flex:0 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;}
  html.m .rail .ru-chiprow::-webkit-scrollbar{display:none;}
  html.m .rail .tray .chip{width:44px;height:44px;}
  html.m .rail .tray .chip::before{inset:8px;}
  html.m .cr-railinfo{flex:0 0 auto;}
  html.m .cr-mode button{padding:0 6px;}
  html.m .cr-on span{font-size:0;}
  html.m .cr-on span::after{content:"come-out ON";font-size:10px;}
  html.m .cr-rail .ru-btns .btn.primary{padding:0 10px;}
}

/* ============ 第二轮大厅（design2/lobby.md：楼面图 + 底部入口栏，没有右栏 / 收银台首屏）============
   手机不缩放（js/core/scale.js 在 html.m 下不设 zoom），这里只让新入口栏在窄屏上放得下 */
html.m #floorScreen > .content.lobby{display:flex;flex-direction:column;}
html.m #floorScreen .fp-body{flex:1;min-height:0;}
html.m .dock{flex:none;flex-wrap:nowrap;justify-content:flex-start;gap:6px;overflow-x:auto;padding:6px 8px calc(6px + var(--m-safe-b)) 8px;}   /* 左右安全区 .screen 已经让过（上面），这里不再加第二遍 */
html.m .dock .grp{gap:6px;flex:none;}
html.m .dock .gap{width:6px;flex:none;}
html.m .dk{height:44px;padding:0 12px;font-size:13px;gap:6px;}
html.m .dk .ic{width:17px;height:17px;}
html.m .dock .m-fpbar{margin-left:auto;padding-left:6px;}
html.m .coach{left:0;transform:none;font-size:12px;}
html.m .coach::after{left:30px;}
html.m .fp-drawer{bottom:0;width:min(360px,100%);}
html.m .fp-peek{display:none;}
html.m #topbar .hcash small{display:none;}
/* 场外带着筹码（Money.carry）：手机上现金不带字，筹码这一格留一个小字「筹码」叠在数上面，免得两个数分不清 */
html.m #topbar .hcash.hchips{flex-direction:column;justify-content:center;gap:0;line-height:1;}
html.m #topbar .hcash.hchips small{display:block;font-size:10px;letter-spacing:.06em;}
html.m #topbar .hcash.hchips b{font-size:15px;}
html.m #topbar .hcash.split{flex-direction:column;justify-content:center;gap:0;line-height:1;}   /* 带着筹码时现金格也带小字「现金」，两格对齐 */
html.m #topbar .hcash.split small{display:block;font-size:10px;letter-spacing:.06em;}
html.m #topbar .hcash.split b{font-size:15px;}
html.m.m-port #topbar .mcard .tx{display:none;}
html.m.m-fplist .fp-svg{aspect-ratio:1240 / 620;}
html.m.m-fplist .fp-sign{display:flex;}

/* ============ 统一牌桌 HUD（css/table-hud.css）在手机横屏上：整体不缩放，只把几块压扁（百家乐第二遍适配前的过渡） ============ */
html.m .th{--th-board:118px;grid-template-rows:36px var(--th-board) 4px minmax(0,1fr) 66px;grid-template-columns:6px minmax(0,1fr) 6px;}
html.m .th-strip{height:36px;padding:0 calc(8px + var(--m-safe-r)) 0 calc(10px + var(--m-safe-l));gap:8px;}
html.m .th-lim{font-size:13px;gap:6px;}
html.m .th-rail{padding:0 calc(8px + var(--m-safe-r)) var(--m-safe-b) calc(8px + var(--m-safe-l));gap:8px;}
html.m .th-bal{min-width:0;padding:5px 10px;}
html.m .th-bal .v{font-size:18px;}
html.m .th-tray{padding:6px 10px;gap:6px;}
html.m .th-tray .cs .chip{width:40px;height:40px;} html.m .th-tray .cs .chip::before{inset:8px;} html.m .th-tray .cs .chip::after{font-size:11px;}
html.m .th-tray .cs .plq{width:54px;height:36px;}
html.m .th-acts .btn{height:44px;min-width:0;padding:0 12px;font-size:13px;letter-spacing:.04em;}
html.m .th-drawer{top:36px;bottom:66px;width:min(300px,80%);}
html.m .bac-road.bead{--cell:17px;} html.m .bac-road.bead i b{font-size:10px;line-height:15px;} html.m .bac-road.bead i.tg b,html.m .bac-road.bead i.dg b{line-height:13px;}
html.m .bac-road.big{--cell:11px;} html.m .bac-road.der{--cell:5px;}
html.m .bac-wrd{grid-template-columns:190px minmax(0,1fr) 96px;}
html.m .bac-wrd-mid{grid-template-rows:minmax(0,1fr) 38px;}
html.m .bac-wrd-side{grid-template-rows:minmax(0,1fr) 30px 30px;}
html.m .bac-stats span{font-size:12px;}
html.m .bac-felt{zoom:.62;}

/* ============ 第二遍 · mtables：百家乐 / 21 点 / Arena / 锦标赛桌（统一牌桌 HUD）在手机横屏上 ============
   不再整块缩放台面（缩到 0.5 字就小过下限、格子点不准），按手机尺寸重排：
   · Z0 顶栏 36（矮屏 34）：时钟 / 荷官头像收起；按钮看着 30、点击范围 44；多一颗「路单」键（mobile.js installHudRoad）
   · Z1 顶部屏（路单 / 走势 / 巨幕）→ 左抽屉（html.m-road）；台面拿到顶栏以下、rail 以上的整块
   · Z3 rail 64（矮屏 58）：余额 · 筹码 44（放不下自己横滑）· 操作键 44 高（窄屏 ghost 键只留图标）
   · Z4 其它桌抽屉照旧（顶栏「其它桌」键开合），右边那条把手收起（手机上压着台面）
   各游戏台面怎么排写在各自 css 末尾的 html.m 段（css/baccarat.css · blackjack.css · stadium.css · tourney.css）。 */
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen){--mt-strip:36px;--mt-rail:64px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th{grid-template-rows:var(--mt-strip) 0 0 minmax(0,1fr) calc(var(--mt-rail) + var(--m-safe-b));grid-template-columns:4px minmax(0,1fr) 4px;}
/* Z0 顶栏 */
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-strip{height:var(--mt-strip);min-height:var(--mt-strip);padding:0 6px 0 10px;gap:6px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-lim{font-size:13px;gap:5px;letter-spacing:.04em;min-width:0;overflow:hidden;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-clock,
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-dealer{display:none;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-i{position:relative;width:26px;height:26px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-sq{position:relative;height:30px;min-width:34px;padding:0 6px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-sq::before{content:"";position:absolute;left:-5px;right:-5px;top:50%;height:44px;margin-top:-22px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-i::before{content:"";position:absolute;left:-9px;right:-9px;top:50%;height:44px;margin-top:-22px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-leave{padding:0 10px;font-size:13px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-strip .m-throad{display:inline-flex;}
html.m.m-road :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-strip .m-throad{border-color:var(--brass-700);color:var(--brass-300);}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-tl .tl{height:24px;padding:0 7px;gap:5px;font-size:12px;}
/* Z5 (i) 弹层：顶栏下沿起，放不下就自己滑 */
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-pop{left:8px;top:calc(var(--mt-strip) + 4px);width:min(420px,calc(100% - 16px));max-height:calc(100% - var(--mt-strip) - 10px);overflow-y:auto;overscroll-behavior:contain;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-pop .th-pop-f .btn{height:40px;}
/* Z1 顶部屏 → 左抽屉 */
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th > .th-board{position:fixed;left:0;top:0;bottom:0;right:auto;z-index:50;width:min(340px,86vw);height:auto;margin:0;
  padding:calc(8px + var(--m-safe-t)) 8px calc(8px + var(--m-safe-b)) calc(8px + var(--m-safe-l));
  background:linear-gradient(180deg,#140e0a,#0c0806);border-right:1px solid var(--brass-900);box-shadow:18px 0 40px rgba(0,0,0,.7);
  overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
  transform:translateX(-104%);visibility:hidden;transition:transform .22s ease,visibility 0s linear .22s;}
html.m.m-road :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen).active .th > .th-board{transform:none;visibility:visible;transition:transform .22s ease;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th > .th-board > .th-bezel{height:auto;min-height:100%;}
/* Z4 其它桌抽屉：把手收起，顶栏「其它桌」键开合 */
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-drawer{top:var(--mt-strip);bottom:calc(var(--mt-rail) + var(--m-safe-b));width:min(320px,82%);}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-tab{display:none;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-drawer .tcard{min-height:56px;}
/* Z2d 你的位置：点击范围 44 */
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-you{height:32px;padding:0 12px 0 5px;gap:8px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-you::before{content:"";position:absolute;left:-4px;right:-4px;top:50%;height:44px;margin-top:-22px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-menu{gap:4px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-menu button{height:44px;padding:0 12px;font-size:13px;}   /* 座位菜单（坐下 / 换座…）：点击 44 */
/* Z3 rail：余额 · 筹码（中间，放不下横滑）· 操作键 */
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-rail{grid-template-columns:auto minmax(0,1fr) auto;gap:8px;padding:0 8px var(--m-safe-b);}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-bal{grid-column:1;min-width:0;padding:5px 10px;gap:3px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-bal .v{font-size:18px;gap:6px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-bal .v .ic{width:14px;height:14px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-bal .s{font-size:11px;gap:8px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-tray{grid-column:2;justify-self:center;max-width:100%;min-width:0;overflow-x:auto;overflow-y:hidden;
  padding:8px 8px 3px;gap:6px;scrollbar-width:none;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-tray::-webkit-scrollbar{display:none;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-tray .cs .chip{width:44px;height:44px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-tray .cs .chip::before{inset:8px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-tray .cs .chip::after{font-size:11px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-tray .cs:hover .chip,
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-tray .cs:hover .plq{transform:none;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-tray .cs.sel .chip,
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-tray .cs.sel .plq{transform:translateY(-5px);}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-tray .cs.sel::after{bottom:-5px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-acts{grid-column:3;gap:6px;}
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-acts .btn{height:44px;min-width:0;padding:0 12px;font-size:14px;letter-spacing:.04em;}
@media (max-height:350px){
  html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen){--mt-strip:34px;--mt-rail:58px;}
  html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-tray{padding-top:6px;padding-bottom:2px;}
  html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-bal{padding:3px 8px;}
  html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-bal .v{font-size:16px;}
}
/* 窄横屏（iPhone SE 667 / 刘海机让出安全区后）：撤销 / 重复这类带图标的次要键只留图标，余额前的图标收起 */
@media (max-width:760px){
  html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-acts .btn:has(.ic):not(.primary){font-size:0;gap:0;width:44px;padding:0;justify-content:center;}
  html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-acts .btn .ic{width:18px;height:18px;}
  html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-bal .v .ic{display:none;}
  html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-tl{display:none;}
}
/* 牌面角标：手机上牌只有 38–44 宽，角标按牌宽算会小过 10，托住下限 */
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .card.face .idx{font-size:max(19cqw,10px);}
/* 托盘里的大额长方筹码（plaque）：44 高 */
html.m :is(#bacScreen,#bjScreen,#stdScreen,#tnScreen) .th-tray .cs .plq{width:64px;height:44px;}
/* —— mtables 通用段完（各游戏台面见各自 css 末尾） —— */

/* ================================================================================================
   【mpoker 线 · 手机第二遍】德州扑克房（等位屏 · 牌桌）· 老虎机 · 轮盘 / 骰宝 / Craps / 牌九 / 三卡 · 小德州复查
   只加在这一块里（别的线在自己那块），方案见 docs/mobile.md §7。
   ================================================================================================ */

/* ---------- P1. 扑克房等位屏（pokerRoomScreen）：竖屏 = 大屏 → 前台 → 平面图 一列往下滑；横屏 = 左（大屏 + 平面图）· 右 前台 ---------- */
html.m.m-land #pokerRoomScreen .content.pr-room{overflow:hidden;}
html.m .room-head.pr-head{height:44px;padding:0 calc(6px + var(--m-safe-r)) 0 calc(14px + var(--m-safe-l));gap:10px;}
html.m .pr-head h2{font-size:15px;letter-spacing:.18em;}
html.m .pr-head h2 small{display:none;}
html.m .pr-head .ract{font-size:12px;white-space:nowrap;}
html.m .pr-head .ract b{font-size:12px;}
html.m .pr-head .btn{position:relative;height:36px;padding:0 12px;font-size:13px;}
html.m .pr-head .btn::before{content:"";position:absolute;left:0;right:0;top:50%;height:44px;margin-top:-22px;}
/* 候补大屏：不要 BUY-IN 一列（前台每一行都写着买入），字号不低于 11 */
html.m .pr-wall{padding:8px 30px 10px;border-bottom-width:5px;}
html.m .pr-sconce{top:12px;width:10px;height:26px;}
html.m .pr-sconce.l{left:9px;} html.m .pr-sconce.r{right:9px;}
html.m .pr-tv{padding:5px;}
html.m .pr-screen{padding:5px 8px 6px;}
html.m .pb-top{gap:8px;}
html.m .pb-logo{font-size:13px;letter-spacing:.22em;}
html.m .pb-sub{display:none;}
html.m .pb-top .tk{font-size:11px;}
html.m .pb-clock{font-size:14px;}
html.m .pb-grid{grid-template-columns:minmax(92px,auto) 50px 46px minmax(0,1fr);}
html.m .pb-grid > .pb-hd:nth-child(2),html.m .pb-b{display:none;}
html.m .pb-hd{font-size:11px;letter-spacing:.08em;padding:2px 4px;}
html.m .pb-row>div{min-height:28px;padding:2px 4px;}
html.m .pb-g{font-size:14px;} html.m .pb-g em{font-size:11px;margin-right:4px;}
html.m .pb-c{font-size:14px;}
html.m .pb-n{font-size:11px;} html.m .pb-go,html.m .pb-dim,html.m .pb-lock,html.m .pb-more{font-size:11px;}
/* 平面图：桌牌只留「级别 + 几个人」（x 号桌、未开桌 这些字收起：盖布 / 空椅子一看就知道），手指点整张桌去观战 */
html.m .pr-floor{flex:none;width:100%;height:auto;aspect-ratio:1000 / 460;}
html.m .pr-lbl{font-size:0;gap:4px;padding:1px 6px;}
html.m .pr-lbl b,html.m .pr-lbl span{font-size:11px;}
html.m .pr-lbl .ic{width:11px;height:11px;}
html.m .pr-zone{font-size:10px;letter-spacing:.16em;}
html.m .pr-hit:hover,html.m .pr-hit:focus-visible{background:transparent;box-shadow:none;}
html.m .pr-hit:active{background:radial-gradient(ellipse at 50% 50%,rgba(255,215,160,.14),transparent 70%);box-shadow:inset 0 0 0 1px rgba(231,201,127,.45);}
/* 前台：黄铜招牌收起（顶上已经写着 扑克房招牌），每行的 入座 / 候补 44 高 */
html.m .pd-top{display:none;}
html.m .pd-body{padding:10px calc(12px + var(--m-safe-r)) calc(14px + var(--m-safe-b)) 12px;gap:8px;}
html.m .pd-row{min-height:58px;padding:6px 8px 6px 12px;}
html.m .pd-a{gap:6px;}
html.m .pd-a .btn{height:44px;padding:0 12px;font-size:13px;}
html.m .pd-tag{font-size:12px;}
html.m .pd-door{min-height:58px;padding:8px 12px;}
html.m .pd-say{font-size:13px;padding:8px 10px;}
/* 竖屏：一列往下滑（大屏 → 前台 → 平面图） */
html.m.m-port #pokerRoomScreen .content.pr-room{overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}
html.m.m-port .pr-body{flex:none;display:flex;flex-direction:column;}
html.m.m-port .pr-left{display:contents;}
html.m.m-port .pr-wall{order:1;}
html.m.m-port .pr-desk{order:2;overflow:visible;border-left:0;border-bottom:5px solid #0a0705;}
html.m.m-port .pd-body{overflow:visible;padding-bottom:12px;}
html.m.m-port .pr-floor{order:3;margin-bottom:var(--m-safe-b);}
/* 横屏：左边大屏 + 平面图（上下滑），右边前台（自己滑） */
html.m.m-land .pr-body{grid-template-columns:minmax(0,1fr) clamp(250px,34vw,300px);}
html.m.m-land .pr-left{display:block;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-left:var(--m-safe-l);}
html.m.m-land .pd-body{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}
html.m .pd-list{flex:none;}
html.m.m-land .room-head.pr-head{height:40px;}
html.m.m-port .room-head.pr-head{position:sticky;top:0;z-index:6;}

/* ---------- P2. 我这几张 HUD 牌桌（德州 / 轮盘 / 骰宝 / Craps / 牌九 / 三卡 · 小德州 / 老虎机）的顶栏：图标键看着 32，点得到 44；(i) 弹层能滑；抽屉把手收起 ---------- */
html.m .pk-th .th-strip,html.m .ru-th .th-strip,html.m .sb-th .th-strip,html.m .cr-th .th-strip,html.m .pg-th .th-strip,html.m .cv-th .th-strip,html.m .sl-th .th-strip{padding:0 calc(6px + var(--m-safe-r)) 0 calc(10px + var(--m-safe-l));gap:4px;}
html.m .pk-th .th-lim,html.m .ru-th .th-lim,html.m .sb-th .th-lim,html.m .cr-th .th-lim,html.m .pg-th .th-lim,html.m .cv-th .th-lim,html.m .sl-th .th-lim{font-size:13px;gap:5px;min-width:0;overflow:hidden;}
html.m .pk-th .th-sq,html.m .ru-th .th-sq,html.m .sb-th .th-sq,html.m .cr-th .th-sq,html.m .pg-th .th-sq,html.m .cv-th .th-sq,html.m .sl-th .th-sq{position:relative;min-width:36px;padding:0 6px;}
html.m .pk-th .th-i,html.m .ru-th .th-i,html.m .sb-th .th-i,html.m .cr-th .th-i,html.m .pg-th .th-i,html.m .cv-th .th-i,html.m .sl-th .th-i{position:relative;margin:0 4px;}
html.m .pk-th .th-sq::before,html.m .ru-th .th-sq::before,html.m .sb-th .th-sq::before,html.m .cr-th .th-sq::before,html.m .pg-th .th-sq::before,html.m .cv-th .th-sq::before,html.m .sl-th .th-sq::before{content:"";position:absolute;left:-2px;right:-2px;top:50%;height:44px;margin-top:-22px;}
html.m .pk-th .th-i::before,html.m .ru-th .th-i::before,html.m .sb-th .th-i::before,html.m .cr-th .th-i::before,html.m .pg-th .th-i::before,html.m .cv-th .th-i::before,html.m .sl-th .th-i::before{content:"";position:absolute;left:-10px;right:-10px;top:50%;height:44px;margin-top:-22px;}
html.m .pk-th .th-pop,html.m .ru-th .th-pop,html.m .sb-th .th-pop,html.m .cr-th .th-pop,html.m .pg-th .th-pop,html.m .cv-th .th-pop,html.m .sl-th .th-pop{left:calc(8px + var(--m-safe-l));top:calc(var(--m-top) + 4px);max-height:calc(100% - var(--m-top) - 12px);overflow-y:auto;overscroll-behavior:contain;}
/* 抽屉把手（台布右边那条 28 宽的竖条）在手机上压着台面：收起，用顶栏的「其它桌」键开 */
html.m .pk-th .th-tab,html.m .ru-th .th-tab,html.m .sb-th .th-tab,html.m .cr-th .th-tab,html.m .pg-th .th-tab,html.m .cv-th .th-tab,html.m .sl-th .th-tab{display:none;}
html.m .pk-th .th-drawer,html.m .ru-th .th-drawer,html.m .sb-th .th-drawer,html.m .cr-th .th-drawer,html.m .pg-th .th-drawer,html.m .cv-th .th-drawer,html.m .sl-th .th-drawer{top:var(--m-top);bottom:0;width:min(300px,82vw);z-index:40;padding-right:var(--m-safe-r);}

/* ---------- P3. 德州牌桌（tableScreen）：横屏。最近几手的细屏收起（抽屉里有行动记录）；椭圆桌按台面区拉宽（最宽 2.3:1）；
   座位改成横着的小名牌（头像 + 名字 / 筹码）；加注面板盖在 rail 上（½ 池 / 满池 / 全下 44 高，滑杆占满剩下的宽） ---------- */
html.m .th.pk-th{grid-template-rows:var(--m-top) 0 0 minmax(0,1fr) 64px;}
html.m .pk-th .th-board{display:none;}
html.m #tableEl{aspect-ratio:auto;height:calc(100cqh - 4px);width:min(calc(100cqw - 8px),calc((100cqh - 4px) * 2.3));}
html.m .pk-seat{width:auto;flex-direction:row;align-items:center;}
html.m .pk-face-wrap{width:34px;}
html.m .pk-face-wrap .ic{width:50%;height:50%;}
html.m .pk-plate{width:auto;min-width:70px;max-width:108px;margin:0 0 0 -8px;padding:2px 8px 3px 12px;text-align:left;}
html.m .pk-plate .pname{font-size:11px;line-height:1.25;}
html.m .pk-plate .chips{font-size:13px;line-height:1.2;}
html.m .pk-plate .ptype{display:none;}
html.m .pk-timer{margin-top:2px;}
html.m .pk-seat.hero{min-width:0;}
html.m .pk-seat.hero .pk-plate{margin-left:0;padding:2px 12px 3px;min-width:92px;text-align:center;}
html.m .pk-seat .status{font-size:11px;padding:1px 8px;top:-3px;}
html.m .pk-seat.s-top .status{bottom:-3px;}
html.m .pk-dealer .pk-face{width:36px;height:36px;}
html.m .pk-dtag{font-size:11px;padding:0 7px 1px;margin-top:-4px;}
html.m .pk-dtag small{display:none;}
html.m .pk-print{font-size:12px;letter-spacing:.4em;}
html.m .pk-print small{display:none;}
html.m #potLine{font-size:12px;padding:1px 10px;}
html.m #tbanner{font-size:12px;padding:4px 12px;}
html.m .pk-bamt{font-size:11px;}
html.m .pk-pp span{font-size:10px;}
/* rail：筹码（左）· 行动时钟 / 等谁行动（中）· 弃牌 过牌/跟注 加注（右） */
html.m .pk-foot{grid-template-columns:auto minmax(0,1fr) auto;gap:8px;}
html.m .pk-foot .th-bal{padding:4px 10px;}
html.m .pk-foot .th-bal .s{font-size:11px;gap:8px;}
html.m .pk-ctl{min-width:0;justify-self:stretch;gap:2px;}
html.m #clockWrap{width:100%;max-width:340px;margin:0 auto;gap:8px;}
html.m #clockNum{font-size:17px;min-width:32px;}
html.m #buyTimeBtn{height:40px;padding:0 10px;font-size:12px;}
html.m .pk-idle{font-size:13px;gap:6px;max-width:100%;overflow:hidden;text-overflow:ellipsis;justify-content:center;}
html.m #actions{gap:6px;}
html.m #actions .btn,html.m #sitFromSpec{height:44px;min-width:0;padding:0 13px;font-size:14px;letter-spacing:.04em;}
html.m #raiseBox{left:calc(6px + var(--m-safe-l));right:calc(6px + var(--m-safe-r));top:4px;bottom:calc(4px + var(--m-safe-b));padding:0 6px;gap:6px;}
html.m #raiseBox .qbtn{height:44px;min-width:44px;padding:0 10px;font-size:13px;flex:none;}
html.m #raiseSlider{flex:1 1 auto;min-width:100px;width:auto;height:44px;margin:0 4px;-webkit-appearance:none;appearance:none;background:transparent;touch-action:none;}
html.m #raiseSlider::-webkit-slider-runnable-track,html.m #biSlider::-webkit-slider-runnable-track,html.m #prOpps::-webkit-slider-runnable-track{height:6px;border-radius:3px;background:linear-gradient(90deg,var(--brass-900),var(--brass-300));box-shadow:0 1px 2px rgba(0,0,0,.7) inset;}
html.m #raiseSlider::-webkit-slider-thumb,html.m #biSlider::-webkit-slider-thumb,html.m #prOpps::-webkit-slider-thumb{-webkit-appearance:none;width:30px;height:30px;margin-top:-12px;border-radius:50%;border:2px solid #241a08;
  background:radial-gradient(circle at 40% 35%,var(--brass-100),var(--brass-500) 70%,var(--brass-700));box-shadow:0 2px 6px rgba(0,0,0,.7);}
html.m #raiseSlider::-moz-range-track,html.m #biSlider::-moz-range-track,html.m #prOpps::-moz-range-track{height:6px;border-radius:3px;background:linear-gradient(90deg,var(--brass-900),var(--brass-300));}
html.m #raiseSlider::-moz-range-thumb,html.m #biSlider::-moz-range-thumb,html.m #prOpps::-moz-range-thumb{width:28px;height:28px;border-radius:50%;border:2px solid #241a08;background:radial-gradient(circle at 40% 35%,var(--brass-100),var(--brass-500) 70%,var(--brass-700));}
html.m #raiseAmt{min-width:64px;font-size:18px;}
html.m #btnRaiseOk{height:44px;min-width:0;padding:0 14px;font-size:14px;}
html.m .m-rbx{display:inline-flex;flex:none;width:44px;height:44px;padding:0;justify-content:center;}
html.m .m-rbx .ic{width:18px;height:18px;}
/* 面板盖住了 rail 中间的行动时钟（复核 touch#3）：收起键旁边跟一个秒数（mobile.js installMpoker 抄 #clockNum） */
html.m #raiseBox .m-rclk:not(:empty){display:inline-block;flex:none;min-width:30px;font:400 16px/1 var(--serif);color:var(--brass-100);text-align:center;font-variant-numeric:tabular-nums lining-nums;}
html.m #raiseBox .m-rclk.danger{color:var(--hot);}
@media (max-height:350px){
  html.m .th.pk-th{grid-template-rows:var(--m-top) 0 0 minmax(0,1fr) 58px;}
  html.m #raiseBox{top:2px;bottom:calc(2px + var(--m-safe-b));}
}
@media (max-width:740px){
  html.m #actions .btn{padding:0 10px;font-size:13px;}
  html.m #raiseBox .qbtn{padding:0 7px;font-size:12px;}
  html.m #raiseAmt{min-width:54px;font-size:16px;}
  html.m .pk-foot .th-bal .s{display:none;}
}
html.m #tableEl{--cd:16px;--cs:2px;}
html.m .pk-cards{--card-w:26px;}
/* 台面中线上下四样排开不互压（复核 touch#5 / visual#3）：公共牌往上提 · 底池在公共牌下面 · 你的底牌 / 公共牌按台面高算宽（844×390 约 42 / 40，667×330 约 34）· 你的名牌压成一行（你 $600）往下挪。
   844×390：公共牌 137–193 · 底池 201–223 · 底牌 223–286 · 名牌 286–314 */
html.m #tableEl .pk-board{--card-w:clamp(32px,calc((100cqh - 4px) * .142),44px);transform:translate(-50%,-62%);}
html.m #tableEl .pk-pot{transform:translate(-50%,-40%);}
html.m .pk-cards.mine{--card-w:clamp(34px,calc((100cqh - 4px) * .148),46px);transform:translate(-50%,-39%);}
html.m .pk-seat.hero{transform:translate(-50%,-5%);}
html.m .pk-seat.hero .pk-plate{display:flex;flex-wrap:wrap;justify-content:center;align-items:baseline;column-gap:6px;padding:2px 10px 3px;}
html.m .pk-seat.hero .pk-timer{flex:1 0 100%;}
@media (max-height:350px){
  html.m #tableEl .pk-board{transform:translate(-50%,-60%);}
  html.m #tableEl .pk-pot{transform:translate(-50%,-55%);}
  html.m .pk-cards.mine{transform:translate(-50%,-41%);}
  html.m .pk-seat.hero{transform:translate(-50%,-10%);}
}
/* 买入：内容少，整宽一块居中（不铺满）；滑杆整宽、44 高 */
html.m #buyInModal{align-items:center;padding:12px calc(12px + var(--m-safe-r)) 12px calc(12px + var(--m-safe-l));}
html.m #buyInModal .modal-box{height:auto;max-width:460px !important;max-height:100% !important;margin:0 auto;border-radius:var(--r-2);border:1px solid var(--brass-700);padding:0;}
html.m #buyInModal .mf .btn{flex:1 1 0;}
html.m #biSlider,html.m #prOpps{height:44px;-webkit-appearance:none;appearance:none;background:transparent;touch-action:none;}
html.m #biSlider{width:100%;}
html.m #biAmt{font-size:30px;}
/* 练习场设置：一行一项，下拉框 44 高 */
html.m .pr-row{flex-wrap:wrap;gap:6px 12px;}
html.m .pr-row+.pr-row{margin-top:10px;}
html.m .pr-row > label:first-child{min-width:64px;font-size:12px;}
html.m .pr-row select{height:44px;font-size:16px;flex:1 1 180px;}
html.m .pr-check{min-height:44px;font-size:14px;}
html.m .pr-check input{width:20px;height:20px;}
/* 复盘：全屏（通用弹窗规则）；头上的分数圈缩小，每条决策放不下就折行 */
html.m .rv-head{gap:14px;margin-bottom:12px;}
html.m .rv-score{font-size:30px;min-width:68px;height:68px;}
html.m .rv-score span{font-size:11px;}
html.m .rv-sum{font-size:13px;line-height:1.7;}
html.m .rv-comment{font-size:13px;}
html.m .rv-hand{padding:10px 12px;margin-bottom:8px;}
html.m .rv-hand-top{gap:10px;}
html.m .rv-dec{flex-wrap:wrap;gap:3px 10px;font-size:12.5px;}
html.m .rv-act{min-width:72px;}
html.m .rv-note{flex:1 1 220px;}

/* ---------- S. 老虎机（slScreen）：竖屏为主（机柜本来就是竖的，单手一下一下按 SPIN），横屏也能玩——所以不在 mobile.js 的 GAMES 里（不提示横过来）。
   横屏沿用 css/slots.css 末尾那几条 html.m 规则（机柜压扁、邻机不画），这里只把按键补到 44 ---------- */
html.m #slScreen .pb{height:44px;min-width:44px;}
html.m #slScreen .sl-th .th-acts .btn{height:44px;}
html.m #slScreen .th-bal .s{font-size:11px;gap:8px;}
/* 老虎机不在 GAMES（没有 m-game 那条把顶栏并进一行的 #tblHead 规则），顶栏吃的是 table-hud.css 带 id 的 gap 12 / padding 16：这里带上 id 改成间距 4、左右让出刘海安全区
   （竖屏选机区顶栏「BAY LIGHTS」原来只分到 45 px 被硬切，复核 visual#5；放不下时省略号） */
html.m .sl-th #tblHead.th-strip{padding:0 calc(6px + var(--m-safe-r)) 0 calc(10px + var(--m-safe-l));gap:4px;}
/* 竖屏：顶栏 40 · 机柜（顶箱：招牌一行 + 四个奖池一行；卷轴格子按屏宽算、比横屏高一点）· 按键台两层（面额 / 押注一层，余额 · 赔付表 · SPIN 一层） */
html.m.m-port #slScreen .sl-th{grid-template-rows:40px minmax(0,1fr) auto;}
html.m.m-port #slScreen .sl-cabwrap{align-items:center;padding:6px 0 8px;
  --cell:clamp(44px,min(calc((100cqw - 40px) / 5),calc((100cqh - 190px) / 3.45)),96px);}
html.m.m-port #slScreen .sl-cabwrap.k-classic{--cell:clamp(44px,min(calc((100cqw - 40px) / 3.4),calc((100cqh - 190px) / 3.45)),118px);}
html.m.m-port #slScreen .cab,html.m.m-port #slScreen .cab.k-classic{width:calc(100% - 12px - var(--m-safe-l) - var(--m-safe-r));max-width:560px;padding:0 8px 10px;border-radius:16px;}
html.m.m-port #slScreen .cab-top{height:auto;grid-template-columns:minmax(0,1fr);gap:7px;margin:6px -2px 0;padding:8px 8px 9px;}
html.m.m-port #slScreen .tp-logo{justify-content:center;}
html.m.m-port #slScreen .tp-emb{width:46px;height:46px;}
html.m.m-port #slScreen .tp-name b{font-size:19px;}
html.m.m-port #slScreen .tp-jps{justify-content:stretch;gap:5px;}
html.m.m-port #slScreen .tp-jps .jp{max-width:none;padding:3px 4px 4px;}
html.m.m-port #slScreen .tp-jps .jp small{font-size:10px;letter-spacing:.12em;}
html.m.m-port #slScreen .cab-screen{flex:none;margin-top:6px;padding:5px;}
html.m.m-port #slScreen .scr{height:auto;padding:4px 6px;}
html.m.m-port #slScreen .reels{height:calc(var(--cell) * 3.45);gap:4px;}
html.m.m-port #slScreen .reels.r3{gap:6px;}
html.m.m-port #slScreen .scr-bot{height:34px;margin-top:4px;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) minmax(0,1fr);}
html.m.m-port #slScreen .scr-bot .mt{height:30px;}
html.m.m-port #slScreen .scr-bot .mt b{font-size:17px;line-height:22px;}
html.m.m-port #slScreen .sl-th .th-rail{grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;row-gap:8px;column-gap:10px;
  padding:8px calc(8px + var(--m-safe-r)) calc(8px + var(--m-safe-b)) calc(8px + var(--m-safe-l));}
html.m.m-port #slScreen .sl-th .th-rail > .th-tray{grid-column:1 / 3;grid-row:1;justify-self:stretch;}
html.m.m-port #slScreen .sl-th .th-rail > .th-bal{grid-column:1;grid-row:2;align-self:center;}
html.m.m-port #slScreen .sl-th .th-rail > .th-acts{grid-column:2;grid-row:2;}
html.m.m-port #slScreen .sl-deck{flex-wrap:wrap;justify-content:center;row-gap:8px;padding:8px 6px;}
html.m.m-port #slScreen .sl-deck .dens{padding-right:0;border-right:0;}
html.m.m-port #slScreen .sl-deck .bets{gap:5px;}
html.m.m-port #slScreen .pb{padding:0 3px;}
html.m.m-port #slScreen .sl-pt{display:inline-flex;}
html.m.m-port #slScreen .sl-spin{width:66px;height:66px;}
html.m.m-port #slScreen .sl-spin b{font-size:16px;}
html.m.m-port #slScreen .sl-pick{width:100%;max-width:none;}
/* 竖屏选机区：一排 4 台（8 台一排每台只有 40 宽，手指点不准） */
html.m.m-port #slScreen .sl-floor{padding:8px calc(8px + var(--m-safe-r)) 16px calc(8px + var(--m-safe-l));}
html.m.m-port #slScreen .sl-banks{gap:12px;}
html.m.m-port #slScreen .bank-sign{gap:6px;}
html.m.m-port #slScreen .bk-l{gap:6px;}
html.m.m-port #slScreen .bk-emb{width:28px;height:28px;}
html.m.m-port #slScreen .bk-jp .led{min-width:0;padding:2px 6px 3px;}
html.m.m-port #slScreen .bk-jp .led + .led{display:none;}
html.m.m-port #slScreen .brow{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;}
html.m.m-port #slScreen .th-clock{display:none;}
html.m.m-port #slScreen .bk-l > div{min-width:0;}
html.m #slScreen .sl-dr{min-height:44px;}
/* 窄横屏（667）：余额只留数字、按键台放不下就自己横着滑；顶箱只留图标 + 奖池 */
@media (max-width:740px){
  html.m.m-land #slScreen .sl-th .th-rail{grid-template-columns:auto minmax(0,1fr) auto;gap:8px;}
  html.m.m-land #slScreen .th-bal{padding:4px 8px;}
  html.m.m-land #slScreen .th-bal .v{font-size:16px;gap:5px;}
  html.m.m-land #slScreen .th-bal .s{display:none;}
  html.m.m-land #slScreen .th-tray{justify-self:stretch;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;}
  html.m.m-land #slScreen .th-tray::-webkit-scrollbar{display:none;}
  html.m.m-land #slScreen .sl-deck{width:max-content;gap:6px;}
  html.m.m-land #slScreen .sl-deck .dens,html.m.m-land #slScreen .sl-deck .bets{gap:5px;}
  html.m.m-land #slScreen .tp-name{display:none;}
}

/* ---------- T. 轮盘 / 骰宝 / Craps / 牌九 / 三卡 · 小德州（统一牌桌 HUD 版）横屏：顶栏 40 · 细屏 · 台面 · rail 64
   （通用那条 html.m .th 把细屏写成了 118——百家乐的路单高；这几张桌是 .th.slim，在这里按桌改） ---------- */
/* 顶部细屏（轮盘统计 / 骰宝路单 / Craps 掷骰记录 / 牌九开牌 / 荷官最近几手 / 德州最近几手）收起来给台面，顶栏多一颗「路单」键（mobile.js installMpoker），点了从顶栏下面落下来 */
html.m .th.ru-th,html.m .th.sb-th,html.m .th.cr-th,html.m .th.pg-th,html.m .th.cv-th{--th-board:0px;grid-template-rows:var(--m-top) 0 2px minmax(0,1fr) 64px;}
html.m .ru-th .th-board,html.m .sb-th .th-board,html.m .cr-th .th-board,html.m .pg-th .th-board,html.m .cv-th .th-board,html.m .pk-th .th-board{display:none;}
html.m.m-road .ru-th .th-board,html.m.m-road .sb-th .th-board,html.m.m-road .cr-th .th-board,html.m.m-road .pg-th .th-board,html.m.m-road .cv-th .th-board,html.m.m-road .pk-th .th-board{display:block;position:absolute;left:0;right:0;top:4px;height:clamp(92px,32vh,132px);z-index:49;box-shadow:0 14px 30px rgba(0,0,0,.7);}
html.m .th-strip .m-x.m-throad{display:inline-flex;}
html.m.m-road .th-strip .m-throad{border-color:var(--brass-700);color:var(--brass-300);}
/* rail：余额 · 托盘（中间那格自己能缩、放不下就横着滑）· 键（按自己的宽）；托盘筹码 44 */
html.m .ru-th .th-rail,html.m .sb-th .th-rail,html.m .cr-th .th-rail,html.m .pg-th .th-rail,html.m .cv-th .th-rail{grid-template-columns:auto minmax(0,1fr) auto;gap:8px;}
html.m .ru-th .th-tray,html.m .sb-th .th-tray,html.m .cr-th .th-tray,html.m .pg-th .th-tray,html.m .cv-th .th-tray{max-width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;padding:4px 10px;}
html.m .ru-th .th-tray::-webkit-scrollbar,html.m .sb-th .th-tray::-webkit-scrollbar,html.m .cr-th .th-tray::-webkit-scrollbar,html.m .pg-th .th-tray::-webkit-scrollbar,html.m .cv-th .th-tray::-webkit-scrollbar{display:none;}
html.m .ru-th .th-tray .cs .chip,html.m .sb-th .th-tray .cs .chip,html.m .cr-th .th-tray .cs .chip,html.m .pg-th .th-tray .cs .chip,html.m .cv-th .th-tray .cs .chip{width:44px;height:44px;}
html.m .ru-th .th-tray .cs .chip::before,html.m .sb-th .th-tray .cs .chip::before,html.m .cr-th .th-tray .cs .chip::before,html.m .pg-th .th-tray .cs .chip::before,html.m .cv-th .th-tray .cs .chip::before{inset:8px;}
html.m .ru-th .th-bal .s,html.m .sb-th .th-bal .s,html.m .cr-th .th-bal .s,html.m .pg-th .th-bal .s,html.m .cv-th .th-bal .s{font-size:11px;gap:8px;}
@media (max-width:740px){
  html.m .ru-th .th-acts .btn:not(.primary):has(.ic),html.m .sb-th .th-acts .btn:not(.primary):has(.ic),html.m .cr-th .th-acts .btn:not(.primary):has(.ic),html.m .pg-th .th-acts .btn:not(.primary):has(.ic),html.m .cv-th .th-acts .btn:not(.primary):has(.ic){font-size:0;gap:0;width:44px;padding:0;}
  html.m .ru-th .th-acts .btn:not(.primary) .ic,html.m .sb-th .th-acts .btn:not(.primary) .ic,html.m .cr-th .th-acts .btn:not(.primary) .ic,html.m .pg-th .th-acts .btn:not(.primary) .ic,html.m .cv-th .th-acts .btn:not(.primary) .ic{width:18px;height:18px;}
  html.m .ru-th .th-bal .s,html.m .sb-th .th-bal .s,html.m .cr-th .th-bal .s,html.m .pg-th .th-bal .s,html.m .cv-th .th-bal .s{display:none;}
  html.m .ru-th .th-bal .v,html.m .sb-th .th-bal .v,html.m .cr-th .th-bal .v,html.m .pg-th .th-bal .v,html.m .cv-th .th-bal .v{font-size:16px;}
}
/* 倒计时环：台布顶边正中，手机上 50 */
html.m .ru-th .th-ring,html.m .sb-th .th-ring,html.m .cr-th .th-ring,html.m .pg-th .th-ring,html.m .cv-th .th-ring{top:4px;width:50px;height:50px;margin-left:-25px;}
html.m .ru-th .th-ring .lt-ring,html.m .sb-th .th-ring .lt-ring,html.m .cr-th .th-ring .lt-ring,html.m .pg-th .th-ring .lt-ring,html.m .cv-th .th-ring .lt-ring{width:50px;height:50px;}
html.m .ru-th .th-ring .lt-ring .v b,html.m .sb-th .th-ring .lt-ring .v b,html.m .cr-th .th-ring .lt-ring .v b,html.m .pg-th .th-ring .lt-ring .v b,html.m .cv-th .th-ring .lt-ring .v b{font-size:19px;}
html.m .ru-th .th-tbl,html.m .sb-th .th-tbl,html.m .cr-th .th-tbl,html.m .pg-th .th-tbl{padding:8px 8px 0;border-radius:18px 18px 0 0;}
html.m .ru-th .th-cloth,html.m .sb-th .th-cloth,html.m .cr-th .th-cloth,html.m .pg-th .th-cloth{inset:8px 8px 0;border-radius:10px 10px 0 0;}

/* ---------- T-cv. 三卡 / 小德州：不再整块 zoom .52（注圈只剩 27 px）。荷官牌在倒计时下面；你的牌在左、注圈横着一排在右（金额写在圈下）；
   别人的位置按 --cv-k 压低、缩到 0.62（空位「坐下」用透明伪元素倒推回 44 见方的点击区） ---------- */
html.m .th.cv-th .cv-cloth{zoom:1;--cv-k:calc(.5 * var(--m-k, 1));}
html.m .cv-th .cv-tbl{bottom:-30px;padding:8px 8px 0;}
html.m .cv-th .cv-cloth{inset:8px 8px 18px;}
html.m .cv-th .cv-dealer{top:54px;gap:12px;}
html.m .cv-th .cvx-cards.dealer,html.m .cv-th .cvx-cards.board{--card-w:38px;--card-h:53px;min-height:53px;gap:4px;}
html.m .cv-th .cvx-cards.board{min-width:0;padding-left:12px;}
html.m .cv-th .cv-dname{top:110px;font-size:12px;}
html.m .cv-th .cv-print{display:none;}
html.m .cv-th .cv-result{top:4px;padding:4px 12px 5px;max-width:min(460px,70%);}
html.m .cv-th .cv-result .h{font-size:18px;}
html.m .cv-th .cv-result .s{font-size:11px;margin-top:1px;}
html.m .cv-th .cv-hero{bottom:40px;display:grid;grid-template-columns:auto auto;grid-template-rows:auto auto;column-gap:12px;row-gap:2px;align-items:end;}
html.m .cv-th .cv-hname{grid-column:1;grid-row:1;justify-self:center;height:14px;line-height:14px;font-size:11px;}
html.m .cv-th .cv-hcards{grid-column:1;grid-row:2;min-height:53px;}
html.m .cv-th .cvx-cards.hero{--card-w:38px;--card-h:53px;min-height:53px;gap:4px;}
html.m .cv-th .cv-hcirc{grid-column:2;grid-row:1 / 3;flex-direction:row;align-items:flex-start;gap:10px;padding-bottom:15px;}
html.m .cv-th .cv-row{gap:10px;}
html.m .cv-th .cvx-ring.main{width:46px;height:46px;}
html.m .cv-th .cvx-ring.side{width:44px;height:44px;}
html.m .cv-th .cvx-ring.play,html.m .cv-th .cvx-ring.fixed{width:40px;height:40px;}
html.m .cv-th .cvx-ring label{font-size:10px;}
html.m .cv-th .cvx-ring em,html.m .cv-th .cv-row.two .cvx-ring:first-child em{left:50%;right:auto;top:100%;transform:translateX(-50%);margin:2px 0 0;font-size:12px;}
html.m .cv-th .cvx-slot{transform:scale(.62);}
html.m .cv-th .cvx-slot .bx-btn{position:relative;}
html.m .cv-th .cvx-slot .bx-btn::before{content:"";position:absolute;left:-12px;right:-12px;top:50%;height:72px;margin-top:-36px;}
html.m .cv-th .cv-cloth .th-you{bottom:4px;}
html.m .cv-th .cv-cloth .th-you::before{content:"";position:absolute;left:0;right:0;top:50%;height:44px;margin-top:-22px;}
html.m .cv-th .cv-cloth .th-menu{bottom:44px;}
html.m .cv-th .th-menu button{height:44px;}
html.m .cv-th .cvx-slot .sl-nm,html.m .cv-th .cvx-slot .sl-lbl,html.m .cv-th .cvx-slot .sl-hand,html.m .cv-th .cvx-slot .bx-btn{font-size:17px;}
@media (max-width:740px){
  html.m .cv-th .cvx-cards.dealer,html.m .cv-th .cvx-cards.board{--card-w:34px;--card-h:48px;min-height:48px;}
  html.m .cv-th .cv-dname{top:104px;}
}
html.m .cv-th .cvx-slot.empty .sl-spot{display:none;}
/* 轮盘 / 骰宝 / Craps / 牌九的台布：各游戏自己的 css 在手机上写的是整块 zoom .62（过渡）。细屏收起后台面高了，按台面高换一个更大的 zoom
   （--m-k：390 高 = 1，Safari 带工具栏的 330 高 ≈ 0.79），台布上最小的印字 / 赔率在 zoom 里放大一号，缩完还有 10 px 左右 */
html.m .th.ru-th .ru-cloth{zoom:calc(.72 * var(--m-k,1));}
html.m .th.sb-th .sb-cloth{zoom:calc(.8 * var(--m-k,1));}
html.m .th.cr-th .cr-cloth{zoom:calc(.78 * var(--m-k,1));}
html.m .th.pg-th .pg-cloth{zoom:calc(.8 * var(--m-k,1));}
/* 轮盘注区：外围（打 / 红黑 / 单双 / 大小）原来 28 高 × zoom 只剩 20 px（复核 touch#1）。印字收起、倒计时环挪进转盘右上角（圆盘的空角），
   注区按台面高撑满：外围两行 62 ÷ --m-k（台布 zoom 是 .72 × --m-k，缩完各尺寸都是 44–45 px），号码格分剩下的（844×390 约 47 px 高，667×330 约 31）；0 列 46 宽 */
html.m .th.ru-th .ru-play{padding-top:16px;padding-bottom:44px;}
html.m .th.ru-th .ru-seats{bottom:5px;height:28px;}   /* 这桌的客人（写实小头像）：往下贴，不压外围注区 */
html.m .th.ru-th .ru-seat .pt-seat{--pts:28px;}
html.m .th.ru-th .ru-sp,html.m .th.ru-th .ru-print{display:none;}
html.m .th.ru-th .ru-ringbox{position:absolute;left:-70px;top:8px;width:64px;height:64px;margin:0;}
html.m .th.ru-th .ru-res .m{left:50%;top:100%;transform:translateX(-50%);margin:4px 0 0;}
html.m .th.ru-th .ru-board{--zw:46px;flex:1 1 auto;min-height:0;grid-template-columns:var(--zw) repeat(12,minmax(0,1fr)) 40px;grid-template-rows:repeat(6,minmax(0,1fr)) var(--m-oh) var(--m-oh);--m-oh:calc(62px / var(--m-k,1));}
html.m .ru-th .ru-cell .lb{font-size:22px;}
html.m .ru-th .ru-cell.zero .lb{font-size:26px;}
html.m .ru-th .ru-cell.out .lb{font-size:15px;letter-spacing:.08em;}
html.m .ru-th .ru-print{font-size:13px;}
html.m .sb-th .sb-cell .odds{font-size:13px;}
html.m .sb-th .sb-cell .en{font-size:13px;letter-spacing:.14em;}
html.m .sb-th .sb-cell .tn{font-size:20px;}
html.m .cr-th .cr-z .od{font-size:13px;letter-spacing:.04em;}
html.m .cr-th #crRing{left:50%;top:4px;}
html.m .cr-th .cr-ctl{flex-direction:row;align-items:center;gap:14px;top:14px;}
html.m .cr-th .cr-mode button{height:40px;padding:0 12px;font-size:14px;}
html.m .cr-th .cr-on{font-size:14px;min-height:40px;}
html.m .cr-th .cr-on input{width:20px;height:20px;}
/* 牌九摆牌：摆牌区换掉 rail 中间的托盘（paigow.js showSetter）。手机上这时把余额收起让地方；骨牌 28×55（第一遍给浮层摆牌写的 40×78 放不进 64 高的 rail） */
html.m .pg-th .th-rail:has(#pgSetter){grid-template-columns:minmax(0,1fr) auto;}
html.m .pg-th .th-rail:has(#pgSetter) .th-bal{display:none;}
html.m .pg-th .th-rail:has(#pgSetter) .th-tray{justify-self:start;}
html.m .pg-th .th-tray .pg-st{height:58px;margin:0;gap:4px;padding:0 4px;}
html.m .pg-th .pg-st-clock{min-width:30px;font-size:18px;}
html.m .pg-th .pg-st-row{padding:0 6px;column-gap:6px;row-gap:0;}
html.m .pg-th .pg-st-row .lab{font-size:11px;}
html.m .pg-th .pg-st-row .tiles{gap:4px;padding-top:0;min-width:0;}
html.m .pg-th .pg-st-row .pg-tile svg{width:28px;height:55px;}
html.m .pg-th .pg-st-row .pg-tile.sel{transform:translateY(-3px);}
html.m .pg-th .pg-st-row .name{min-width:0;}
html.m .pg-th .pg-st-row .name b{font-size:14px;}
html.m .pg-th .pg-st-row .name small{display:none;}
/* 牌九台布在 zoom 里：名字、金额、牌型、结果条放大一号（缩完 ≥ 10 px 左右） */
html.m .pg-th .pg-result{font-size:18px;padding:6px 14px;}
html.m .pg-th .pg-who,html.m .pg-th .pg-box.me .pg-who{height:20px;font-size:15px;}
html.m .pg-th .pg-who.npc{height:24px;}
html.m .pg-th .pg-who.npc .pt-seat{--pts:22px;}
html.m .pg-th .pg-bn{font-size:16px;}
html.m .pg-th .pg-amt{font-size:14px;}
html.m .pg-th .pg-hands .hd em{font-size:15px;min-height:17px;}
html.m .pg-th .pg-hlab b,html.m .pg-th .pg-hlab small{font-size:14px;}
/* 顶栏里的桌牌小牌（CLOSING / MIN $100 20:00 / 旧注码 + YOU）：最多一起挂三四块，窄屏会把离桌键挤出去——窄屏只留一块（有旧注码时是你那块 YOU，否则第一块、CLOSING 排在最前），挤不下时先截左边的限红行 */
html.m .ru-th .th-strip > *,html.m .sb-th .th-strip > *,html.m .cr-th .th-strip > *,html.m .pg-th .th-strip > *,html.m .cv-th .th-strip > *,html.m .pk-th .th-strip > *,html.m .sl-th .th-strip > *{flex-shrink:0;}
html.m .ru-th .th-strip > .th-lim,html.m .sb-th .th-strip > .th-lim,html.m .cr-th .th-strip > .th-lim,html.m .pg-th .th-strip > .th-lim,html.m .cv-th .th-strip > .th-lim,html.m .pk-th .th-strip > .th-lim,html.m .sl-th .th-strip > .th-lim{flex-shrink:1;}
html.m .ru-th .th-strip > .sp,html.m .sb-th .th-strip > .sp,html.m .cr-th .th-strip > .sp,html.m .pg-th .th-strip > .sp,html.m .cv-th .th-strip > .sp,html.m .pk-th .th-strip > .sp,html.m .sl-th .th-strip > .sp{flex-shrink:1;min-width:0;}
@media (max-width:900px){
  html.m .ru-th .th-tl .tl + .tl,html.m .sb-th .th-tl .tl + .tl,html.m .cr-th .th-tl .tl + .tl,html.m .pg-th .th-tl .tl + .tl,html.m .cv-th .th-tl .tl + .tl,html.m .pk-th .th-tl .tl + .tl{display:none;}
  /* 有旧注码（.me）时留你自己那块「$50 YOU」（它比 CLOSING / 新限红更要紧：你照旧能按这个数下）*/
  html.m .ru-th .th-tl:has(.tl.me) .tl:not(.me),html.m .sb-th .th-tl:has(.tl.me) .tl:not(.me),html.m .cr-th .th-tl:has(.tl.me) .tl:not(.me),html.m .pg-th .th-tl:has(.tl.me) .tl:not(.me),html.m .cv-th .th-tl:has(.tl.me) .tl:not(.me),html.m .pk-th .th-tl:has(.tl.me) .tl:not(.me){display:none;}
  html.m .ru-th .th-tl .tl.me,html.m .sb-th .th-tl .tl.me,html.m .cr-th .th-tl .tl.me,html.m .pg-th .th-tl .tl.me,html.m .cv-th .th-tl .tl.me,html.m .pk-th .th-tl .tl.me{display:inline-flex;}
}
@media (max-width:740px){
  html.m .ru-th .th-clock,html.m .sb-th .th-clock,html.m .cr-th .th-clock,html.m .pg-th .th-clock,html.m .cv-th .th-clock,html.m .pk-th .th-clock,html.m .sl-th .th-clock{display:none;}
}
/* 更宽（915）最多两块。旧注码那两块（MIN $新 + $旧 YOU）在手机上只留 YOU（顶栏限红行写着新的最低注），排在它后面的下一档调高收起 */
html.m .ru-th .th-tl .tl:nth-child(n+3):not(.me),html.m .sb-th .th-tl .tl:nth-child(n+3):not(.me),html.m .cr-th .th-tl .tl:nth-child(n+3):not(.me),html.m .pg-th .th-tl .tl:nth-child(n+3):not(.me),html.m .cv-th .th-tl .tl:nth-child(n+3):not(.me),html.m .pk-th .th-tl .tl:nth-child(n+3):not(.me){display:none;}
html.m .ru-th .th-tl .tl:has(+ .tl.me),html.m .sb-th .th-tl .tl:has(+ .tl.me),html.m .cr-th .th-tl .tl:has(+ .tl.me),html.m .pg-th .th-tl .tl:has(+ .tl.me),html.m .cv-th .th-tl .tl:has(+ .tl.me),html.m .pk-th .th-tl .tl:has(+ .tl.me),html.m .ru-th .th-tl .tl.me ~ .tl,html.m .sb-th .th-tl .tl.me ~ .tl,html.m .cr-th .th-tl .tl.me ~ .tl,html.m .pg-th .th-tl .tl.me ~ .tl,html.m .cv-th .th-tl .tl.me ~ .tl,html.m .pk-th .th-tl .tl.me ~ .tl{display:none;}
/* 荷官换班小牌：手机上压成一行矮的（停那几秒挂在顶栏荷官下面，别盖住台上的骰盅 / 荷官的牌） */
html.m .ru-th .tl-swap,html.m .sb-th .tl-swap,html.m .cr-th .tl-swap,html.m .pg-th .tl-swap,html.m .cv-th .tl-swap,html.m .pk-th .tl-swap{padding:4px 10px 4px 6px;gap:8px;}
html.m .th .tl-swap .p,html.m .th .tl-swap .p .pk-face{width:26px;height:26px;}
html.m .th .tl-swap .ar{width:13px;height:13px;}
html.m .th .tl-swap .tx{flex-direction:row;align-items:baseline;gap:8px;}
html.m .th .tl-swap b{font-size:13px;letter-spacing:.12em;}
html.m .th .tl-swap small{font-size:11px;letter-spacing:.1em;}
html.m.m-port #slScreen .th-lim{font-size:0;gap:0;}
html.m.m-port #slScreen .th-lim b{font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
html.m .pk-seat.open-seat::before{content:"";position:absolute;left:0;right:0;top:50%;height:48px;margin-top:-24px;}

/* ======================================================================================================
   第二遍 · mcity 线：牌桌以外的全部画面（开场 / 大厅 / 分厅 / Cage·ATM·消费·账本 / 会员·客户经理·日历·锦标赛 /
   总资产·手头紧·钱没了 / 城市地图·店·家·租房 / 服装店·衣柜·门口着装 / 关门以后 / 事件信封 / 陨落线手机 / 结局）。
   方案见 docs/mobile.md §7。这些大多是「大厅类」画面：竖屏也要能用（不提示横过来），弹窗全屏或整宽居中，长的东西上下滑。
   触控目标 ≥ 44（看着小的用 ::before 扩点击范围），字 ≥ 10px。
   ====================================================================================================== */

/* ---------- mcity 1. 顶栏：竖屏 375 宽放得下（星期 / 声音收起，声音挪进齿轮菜单第一行，js/core/lobby-ui.js）---------- */
html.m #topbar .lp-cal,html.m #topbar .lp-mail{margin-left:0;}
html.m #topbar .lp-nw{margin-right:0;}
html.m #topbar .ibtn{position:relative;flex:none;width:44px;height:var(--m-top);border-radius:var(--r-1);}
html.m #topbar .ibtn::before{content:"";position:absolute;left:0;right:0;top:50%;height:44px;margin-top:-22px;}   /* 横屏顶栏 40 高：点击范围扩到 44 */
html.m #topbar .ibtn .ic{width:18px;height:18px;}
html.m #topbar .hitem .ibtn .ic{width:17px;height:17px;}
html.m #topbar .hitem{align-items:center;gap:2px;}
html.m #topbar .hcash{align-items:center;justify-content:center;min-width:44px;height:var(--m-top);padding:0 6px;flex:none;}
html.m #topbar .hcash b{font-size:17px;}
html.m #topbar .mcard{height:var(--m-top);padding:0 4px;gap:6px;flex:none;}
html.m #topbar .mcard .tx{min-width:0;}
html.m #topbar .lp-cal b{top:4px;right:2px;}
html.m #topbar .lp-mail i,html.m #topbar .fl-ph i{top:9px;right:7px;}
html.m.m-port #topbar{gap:0;padding-left:calc(8px + var(--m-safe-l));padding-right:calc(4px + var(--m-safe-r));}
html.m.m-port #topbar .grow{flex:1 1 0;}
html.m.m-port #topbar .hitem{margin-right:2px;}
html.m.m-port #topbar .hitem b{font-size:16px;}
html.m.m-port #hDay,html.m.m-port #hSound{display:none;}
html.m #topbar #hDay{margin-left:4px;}   /* .hitem 间距收到 2（给声音键）后「14:10周二」贴死了：星期前面空一点 */
html.m.m-port #topbar .mcard .face{width:38px;height:24px;}
/* 齿轮菜单 / 日历 / 饮食档：贴顶栏下沿，行高 44；日历整宽一块（原来贴着按钮往右开，会出屏） */
html.m .ui-menu{top:calc(var(--m-top) + var(--m-safe-t) + 4px) !important;right:calc(8px + var(--m-safe-r)) !important;max-width:calc(100vw - 16px);
  max-height:calc(var(--m-vh,100vh) - var(--m-top) - 16px);overflow-y:auto;overscroll-behavior:contain;}
html.m .ui-menu .row{min-height:44px;padding-top:0;padding-bottom:0;font-size:14px;}
html.m .lp-cal-pop{left:calc(8px + var(--m-safe-l)) !important;right:calc(8px + var(--m-safe-r));width:auto;max-width:440px;
  top:calc(var(--m-top) + var(--m-safe-t) + 4px) !important;max-height:calc(var(--m-vh,100vh) - var(--m-top) - 16px);overscroll-behavior:contain;}
html.m .cal-h{min-height:44px;padding-top:0;padding-bottom:0;}
html.m .cal-h .ibtn{width:44px;height:44px;margin:0 -10px 0 auto;}
html.m .cal-row{min-height:48px;padding-top:6px;padding-bottom:6px;}
html.m .cal-f{min-height:44px;padding-top:0;padding-bottom:0;}
html.m .fl-diet{left:auto !important;right:calc(8px + var(--m-safe-r)) !important;top:calc(var(--m-top) + var(--m-safe-t) + 4px) !important;max-width:calc(100vw - 16px);}
html.m .fl-diet .seg{display:flex;}
html.m .fl-diet .seg button{flex:1 1 0;height:44px;padding:0 10px;font-size:14px;}

/* ---------- mcity 2. 大厅 / 分厅入口栏：竖屏 = 一排等宽键（图标在上、字在下），不用横着滑；横屏一行 44 高 ---------- */
html.m .dock{scrollbar-width:none;}
html.m .dock::-webkit-scrollbar{display:none;}
html.m .m-fpbar .seg button,html.m .m-fpbar .m-fpzoom{height:44px;}
html.m.m-port .dock{justify-content:space-between;gap:2px;overflow:visible;padding:4px 4px calc(4px + var(--m-safe-b)) 4px;}
html.m.m-port .dock .grp,html.m.m-port .dock .m-fpbar,html.m.m-port .dock .m-fpbar .seg{display:contents;}
html.m.m-port .dock .gap{display:none;}
html.m.m-port .dk,html.m.m-port .dock .m-fpbar .seg button{flex:1 1 0;min-width:0;height:52px;flex-direction:column;justify-content:center;gap:3px;padding:0 2px;font-size:11px;letter-spacing:.02em;}
html.m.m-port .dk .ic,html.m.m-port .dock .m-fpbar .seg button .ic{width:19px;height:19px;flex:none;}
html.m.m-port .dk small{display:none;}
html.m.m-port .dock .m-fpbar .seg button{border:1px solid var(--brass-900);border-radius:var(--r-1);background:rgba(10,7,5,.4);color:var(--cream-300);}
html.m.m-port .dock .m-fpbar .seg button.on{border-color:var(--brass-500);color:var(--brass-100);background:rgba(201,160,82,.14);}
/* 横屏一行：8 个键 + 平面图 / 列表 + 放大，原来 766 宽——SE（667）、刘海机让出左右安全区后（874 − 2×62 ≈ 750）最右的「列表」被切。
   键的左右内距 12 → 9、间距 6 → 4；再窄（≤ 800）平面图 / 列表只留图标（44 宽，两个图标本来就不一样）。
   刘海机上安全区只由 .screen 让一遍（.dock 自己的左右内距不含安全区），不然 874 宽只剩 750 − 140，放大键被切、整条能横滑 */
html.m.m-land .dock,html.m.m-land .dock .grp,html.m.m-land .dock .m-fpbar{gap:4px;}
html.m.m-land .dock .gap{width:4px;}
html.m.m-land .dk{padding:0 9px;}
html.m.m-land .dock .m-fpbar{padding-left:4px;}
@media (max-width:800px){
  html.m.m-land .dock .m-fpbar .seg button{width:44px;padding:0;justify-content:center;font-size:0;gap:0;}
  html.m.m-land .dock .m-fpbar .seg button .ic{width:18px;height:18px;}
}
/* 平面图的放大键：竖屏浮在楼面图右下角 */
html.m.m-port .dock .m-fpbar .m-fpzoom{position:absolute;right:calc(10px + var(--m-safe-r));bottom:calc(100% + 10px);width:44px;height:44px;z-index:6;
  background:rgba(17,12,9,.86);box-shadow:var(--shadow-2);}
html.m.m-port .coach{bottom:calc(100% + 8px);}
html.m .coach .x,html.m .dk.primary .coach .ic.x{width:14px;height:14px;padding:15px;margin:-15px -12px -15px -6px;box-sizing:content-box;}   /* 关掉提示：点击范围 44 */
/* 没带钱就点了游戏 / 分厅的小卡：键 44 高 */
html.m .fp-pop{max-width:calc(100vw - 16px);}
html.m .fp-pop .b .btn{height:44px;flex:1 1 auto;}

/* ---------- mcity 3. 大厅 / 分厅：列表一行 = 名字 · 最低注 · 锁 / 月亮（门牌同一套字）；平面图竖屏按屏高铺满、横屏 ≥ 1050 宽 ---------- */
html.m.m-fplist .fp-sign{flex-direction:row;align-items:center;gap:10px;width:100%;font-size:15px;}
html.m.m-fplist .fp-sign .nm{flex:1 1 auto;min-width:0;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
html.m.m-fplist .k-venue .fp-sign .nm,html.m.m-fplist .k-desk .fp-sign .nm,html.m.m-fplist .k-exit .fp-sign .nm{font-size:14px;}
html.m.m-fplist .fp-sign .mn{flex:none;border-left:0;padding-left:0;font-size:15px;}
html.m.m-fplist .fp-sign > .ic{width:18px;height:18px;flex:none;}
html.m.m-fplist .fp-sign .st{width:15px;height:15px;}
html.m.m-fplist .k-venue.closed .fp-sign{opacity:.7;}
html.m.m-fplist .fp-zone{min-height:52px;}
/* 第一遍之后加的区：Arena、锦标赛排在牌桌组末尾，创始人厅 在贵宾厅组（原来 Arena 头上写着「暂未开放」） */
html.m.m-fplist #fpz-stadium{order:20;margin-top:0;}
html.m.m-fplist #fpz-tourney{order:21;}
html.m.m-fplist #fpz-chairmans{order:32;}
html.m.m-port.m-fplist #fpz-stadium::before{content:none;}
html.m.m-port.m-fplist #fpz-baccarat::before{content:"牌桌 · 主楼面";}
html.m.m-port.m-fplist #fpz-sportsbar::before{content:"餐饮 · 酒店";}
/* 平面图：竖屏按屏高铺满、左右拖着看（门牌字号照旧，不挤在一条窄图里）；横屏默认宽 ≥ 1050（最小的门牌区约 44 高）；放大 = 1.6 倍 */
html.m.m-port:not(.m-fplist) .fp-body .fp-stage{width:auto;height:100%;aspect-ratio:1240 / 620;margin:0;}
html.m.m-port.m-fpzoom:not(.m-fplist) .fp-body .fp-stage{width:auto;height:160%;}
html.m.m-land:not(.m-fplist) .fp-body .fp-stage{width:max(100%,1050px);}
html.m.m-land.m-fpzoom:not(.m-fplist) .fp-body .fp-stage{width:max(160%,1400px);}
html.m .fp-street.e{font-size:10px;letter-spacing:.24em;}

/* ---------- mcity 4. 人生：模式选择 / 开场 / 结局 / 剧情一句话 / 小对话框 ---------- */
html.m .lf-screen{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}
html.m .lf-modes-in,html.m .lf-end-in,html.m .lf-intro-in{margin:auto;      /* margin:auto 居中，放不下时照样能从头滑 */
  padding:calc(16px + var(--m-safe-t)) calc(14px + var(--m-safe-r)) calc(18px + var(--m-safe-b)) calc(14px + var(--m-safe-l));}
html.m .lf-x{top:calc(4px + var(--m-safe-t));right:calc(4px + var(--m-safe-r));width:44px;height:44px;}
html.m .lf-mark{display:block;font-size:22px;letter-spacing:.34em;padding-left:.34em;}
html.m .lf-card{min-width:0;}
html.m .lf-art{min-height:0;overflow:hidden;}
html.m .lf-tx{padding:9px 12px 10px;gap:3px;}
html.m .lf-tx > span{font-size:13px;}
html.m .lf-tx small{font-size:12px;}
html.m .lf-tx em{margin-top:2px;min-height:0;}
html.m .lf-bar{flex-wrap:wrap;gap:8px;min-height:0;}
html.m .lf-bar .btn{height:44px;}
html.m .lf-bar .btn.lg{height:48px;min-width:120px;}
html.m .lf-amtrow{flex-wrap:wrap;gap:8px;width:100%;}
html.m .lf-amtrow .seg{display:flex;flex:1 1 100%;}
html.m .lf-amtrow .seg button{flex:1 1 0;height:44px;}
html.m .lf-amt{flex:1 1 0;min-width:0;height:44px;}
/* 竖屏：三张卡上下排，图在左、字在右；「开始」整宽 */
html.m.m-port .lf-modes-in{gap:12px;}
html.m.m-port .lf-cards{grid-template-columns:minmax(0,1fr);gap:10px;}
html.m.m-port .lf-card{flex-direction:row;min-height:104px;}
html.m.m-port .lf-art{width:38%;flex:none;aspect-ratio:auto;border-bottom:0;border-right:1px solid var(--brass-900);}
html.m.m-port .lf-tx{flex:1 1 auto;min-width:0;justify-content:center;}
html.m.m-port .lf-bar .sp{display:none;}
html.m.m-port .lf-bar .btn.lg{flex:1 1 60%;}
html.m.m-port .lf-bar .btn:not(.lg){flex:1 1 30%;}
html.m.m-port .lf-warn{flex:1 1 100%;text-align:center;}
/* 横屏：三张卡一排，图压扁；金额和「开始」一行 */
html.m.m-land .lf-modes-in{gap:10px;padding-top:calc(10px + var(--m-safe-t));padding-bottom:calc(10px + var(--m-safe-b));}
html.m.m-land .lf-mark{display:none;}
html.m.m-land .lf-art{aspect-ratio:280 / 84;}
html.m.m-land .lf-amtrow{width:auto;flex:1 1 auto;flex-wrap:nowrap;}
html.m.m-land .lf-amtrow .seg{flex:0 1 auto;min-width:0;}
html.m.m-land .lf-amtrow .seg button{padding:0 10px;}
html.m.m-land .lf-amt{flex:0 1 130px;}
html.m.m-land .lf-amtrow small{display:none;}
/* 开场 */
html.m .lf-intro-in p{font-size:19px;}
html.m .lf-intro-in p + p{font-size:16px;}
html.m .lf-intro-in .btn{height:48px;min-width:160px;margin-top:18px;}
/* 结局：竖屏统计两列（奇数个最后一格占整行） */
html.m .lf-end-in{gap:12px;max-width:600px;}
html.m .lf-title{font-size:30px;letter-spacing:.12em;padding-left:.12em;}
html.m .lf-epi{font-size:15px;line-height:1.7;}
html.m .lf-note,html.m .lf-debts{font-size:13px;}
html.m .lf-acts .btn{height:48px;min-width:180px;}
html.m.m-port .lf-stats{grid-template-columns:repeat(2,minmax(0,1fr)) !important;gap:1px;width:100%;background:var(--hairline);overflow:hidden;}
html.m.m-port .lf-stats div{border-left:0;background:#0c0907;padding:10px 14px;}
html.m.m-port .lf-stats div:last-child:nth-child(odd){grid-column:1 / -1;}
html.m.m-land .lf-stats div{padding:8px 14px;}
html.m.m-land .lf-stats div + div{border-left:1px solid var(--hairline);}   /* 横屏一行排开：life.css 给三列版去掉的第 4 格竖线补回来 */
html.m.m-land .lf-end-in{gap:8px;}
html.m.m-land .lf-title{font-size:26px;}
/* 剧情一句话：让开入口栏，边距收窄 */
html.m .lf-cap{bottom:calc(76px + var(--m-safe-b));}
html.m .lf-cap-in{padding:12px 22px;}
html.m .lf-cap p{font-size:17px;}
/* 小对话框（收手 / 上岸 / 借钱）：内容少，整宽一块居中，不铺满 */
html.m .modal.lf-dlg{align-items:center;padding:12px calc(12px + var(--m-safe-r)) 12px calc(12px + var(--m-safe-l));}
html.m .lf-dlg .modal-box{height:auto;max-height:100% !important;border-radius:var(--r-2);border:1px solid var(--brass-700);padding:0;}
html.m .lf-dlg .modal-box .mb{padding:22px 18px 14px;}
html.m .lf-dlg .mf .btn{flex:1 1 0;}
html.m .lf-big{font-size:26px;}
html.m .lf-top .seg{display:flex;align-self:stretch;}
html.m .lf-top .seg button{flex:1 1 0;height:44px;}

/* ---------- mcity 5. 右上角一行消息（客户经理 / 事件 / 成就）：顶栏下面整宽（横屏靠右），按钮 44 ---------- */
html.m #lpPops{top:calc(var(--m-top) + var(--m-safe-t) + 6px);left:calc(8px + var(--m-safe-l));right:calc(8px + var(--m-safe-r));align-items:stretch;}
html.m.m-land #lpPops{left:auto;width:min(420px,60vw);}
html.m .lp-pop{max-width:none;min-height:48px;}
html.m .lp-pop .acts .btn{height:44px;min-width:64px;}

/* ---------- mcity 6. 弹窗通用：标题栏 (i) 44 见方；脚上的键 44 高（竖屏等宽排满，放不下再折行）；正文里的分段键 44 高 ---------- */
html.m .modal-box .mh .cm-i,html.m .modal-box .mh .th-i,html.m .modal-box .mf .th-i{width:44px;height:44px;margin-top:-6px;margin-bottom:-6px;margin-right:0;flex:none;}
html.m.m-land .modal-box .mf .btn,html.m.m-land .modal-box .modal-actions .btn{height:44px;}
html.m.m-port .modal-box .mf .btn,html.m.m-port .modal-box .modal-actions .btn{flex:1 1 auto;padding:0 12px;}
html.m.m-port .modal-box .mf .sp{flex:0 0 0;min-width:0;}
html.m .modal-box .mb .seg button{min-height:44px;}
html.m .cage-colour .seg button{height:44px;}
/* 锦标赛报名卡：内容少，整宽一块居中 */
html.m #tnCard.modal{align-items:center;padding:12px calc(12px + var(--m-safe-r)) 12px calc(12px + var(--m-safe-l));}
html.m #tnCard .modal-box{height:auto;max-height:100% !important;border-radius:var(--r-2);border:1px solid var(--brass-700);padding:0;}
html.m .tn-list > *{min-height:44px;}
/* 账本逐日一行：竖屏两行排（日期 · 净额 / 赌桌 · 手续费消费），不挤成窄条 */
html.m .lg-rows{max-height:none;}
html.m.m-port .lg-row{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;row-gap:2px;}
html.m.m-port .lg-row .lg-date{grid-column:1;grid-row:1;}
html.m.m-port .lg-row .lg-net{grid-column:2;grid-row:1 / 3;align-self:center;white-space:nowrap;}
html.m.m-port .lg-row .lg-tbl{grid-column:1;min-width:0;}
html.m.m-port .lg-row .lg-cost{grid-column:1;}

/* ---------- mcity 7. 会员卡 / 总资产 / 信封 / 成就 / 手头紧 / 人物 / 进场交通 ---------- */
/* 会员卡：竖屏卡面 0.76 倍、权益一列；横屏左卡面右权益 */
html.m.m-port .cc:not(.sm){zoom:.76;}
html.m.m-land .cc:not(.sm){zoom:.6;}
html.m .lp-reveal .cc{zoom:.62 !important;}
/* Cage 筹码预览 / 台面上刚兑好的筹码也叫 .cc，和会员卡面撞了类名（css/loop.css .cc 440×278）：手机上还原成一摞筹码的大小、不缩放。
   必须写在上面两条卡面 zoom 后面、同样带 :not(.sm)，优先级才压得过 */
html.m .cage-chips .cc:not(.sm),html.m .cw-counter .cc:not(.sm){width:auto;height:auto;margin:0;border-radius:0;box-shadow:none;overflow:visible;zoom:1;isolation:auto;}
html.m .cage-chips .cc::before,html.m .cw-counter .cc::before{content:none;}
html.m.m-port .cm-perks2{grid-template-columns:minmax(0,1fr);}
html.m .cm-row{min-height:40px;align-items:center;}
html.m .cm-row b{font-size:14px;}
html.m .cm-ladder{gap:4px;}
html.m .cm-ladder .st{flex:1 1 0;min-width:0;}
html.m.m-port .cc.sm{width:60px;height:38px;}
html.m.m-land .lp-club .cm-wrap{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px 16px;align-items:start;}
html.m.m-land .lp-club .cm-wrap > .cc{grid-row:1 / 4;}
/* 总资产抽屉：从顶栏下沿铺；竖屏整宽、横屏右边 420 */
html.m .lp-drawer{top:calc(var(--m-top) + var(--m-safe-t));padding:10px calc(14px + var(--m-safe-r)) calc(16px + var(--m-safe-b)) calc(14px + var(--m-safe-l));overscroll-behavior:contain;}
html.m.th-on .lp-drawer{top:0;}
html.m.m-land .lp-drawer{width:min(420px,70vw);}
html.m.m-land .wv-chart{height:110px;}
html.m .wv-head{min-height:44px;padding-bottom:6px;}
html.m .wv-head .th-i{width:44px;height:44px;}
html.m .wv-head .x{width:16px;height:16px;padding:14px;margin:0 -14px 0 0;box-sizing:content-box;}
html.m .wv-rng button{height:44px;min-width:60px;}
html.m .wv-row{min-height:44px;align-items:center;}
html.m .wv-big b{font-size:30px;}
/* 信封：一条消息 = 时间 · 谁 一行，正文一行，按钮一行 */
html.m .ml-list{max-height:none;overflow:visible;}
html.m.m-port .ml-msg{grid-template-columns:auto minmax(0,1fr);row-gap:4px;}
html.m.m-port .ml-msg > span{grid-column:1 / -1;font-size:14px;line-height:1.6;}
html.m.m-port .ml-msg .acts,html.m.m-port .ml-msg em.done{grid-column:1 / -1;}
html.m .ml-msg .acts .btn{height:44px;flex:1 1 0;}
html.m .ml-comp{min-height:52px;}
html.m .ml-comp .btn{height:44px;min-width:56px;}
/* 成就：竖屏分类名一行、奖章 7 个一行（每格 ≥ 44） */
html.m.m-port .ach-row{flex-direction:column;align-items:stretch;gap:4px;padding:8px 0;}
html.m.m-port .ach-cat{width:auto;flex-direction:row;align-items:baseline;gap:8px;}
html.m.m-port .ach-cells{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;}
html.m .ach{min-width:44px;min-height:44px;}
html.m.m-land .ach-cells{gap:0;}
/* 窄横屏（SE 667）：分类名 64 + 13 × 44 超出正文宽——分类名单独一行，13 个奖章整行平分（每格 ≥ 44） */
@media (max-width:740px){
  html.m.m-land .ach-row{flex-direction:column;align-items:stretch;gap:2px;padding:6px 0;}
  html.m.m-land .ach-cat{width:auto;flex-direction:row;align-items:baseline;gap:8px;}
  html.m.m-land .ach-cells{grid-template-columns:repeat(13,minmax(0,1fr));}
}
html.m .ach-line{flex-wrap:wrap;row-gap:4px;}
html.m .ach-line em{margin-left:0;}
/* 手头紧：每件东西一行名字，下面三个卖法 */
html.m .bk-row{row-gap:6px;padding:10px 0;}
html.m .bk-row .btn{min-width:0;padding:5px 8px;}
html.m .bk-row .btn b{font-size:15px;}
html.m .bk-end .v{font-size:34px;}
html.m .bk-end .btn{height:48px;}
/* 人物：肤色 / 发色点 34（点击 44），翻页键 44；横屏左人物（贴顶不动）右表单 */
html.m .lp-row{gap:8px;flex-wrap:wrap;}
html.m .lp-sw{position:relative;width:34px;height:34px;flex:none;}
html.m .lp-sw::before{content:"";position:absolute;left:-5px;top:-5px;right:-5px;bottom:-5px;}
html.m .lp-step .ibtn{width:44px;height:44px;}
html.m .lp-pres{grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;}
html.m .lp-pre{height:auto;aspect-ratio:52 / 92;min-height:0;}
html.m .lp-name{height:44px;}
html.m .lp-row.photo label{min-height:44px;display:inline-flex;align-items:center;}
html.m.m-land .lp-create{grid-template-columns:190px minmax(0,1fr);gap:16px;}
html.m.m-land .lp-fig{height:calc(var(--m-vh,390px) - 130px);min-height:200px;position:sticky;top:0;align-self:start;}
html.m.m-land .lp-fig > svg{height:calc(100% - 16px);}
html.m.m-land .lp-pre{aspect-ratio:auto;height:84px;}
/* Cage「进场」里的到场方式 */
html.m .tr-pick .seg{display:flex;flex-wrap:wrap;align-self:stretch;}
html.m .tr-pick .seg button{flex:1 1 auto;height:44px;}
html.m .tr-car{height:44px;}

/* ---------- mcity 8. 陨落线：手机（竖屏联系人一排横滑在上、聊天在下）/ 钱没了 / 上岸 ---------- */
html.m #flPhone .modal-box{height:100%;}
html.m.m-port .fl-phone{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);}
html.m.m-port .fl-list{flex-direction:row;overflow-x:auto;overflow-y:hidden;border-right:0;border-bottom:1px solid var(--hairline);scrollbar-width:none;-webkit-overflow-scrolling:touch;}
html.m.m-port .fl-list::-webkit-scrollbar{display:none;}
html.m.m-port .fl-th{flex:none;width:68px;min-height:74px;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto;justify-items:center;gap:4px;padding:8px 4px 6px;
  border-bottom:0;border-right:1px solid rgba(201,160,82,.08);text-align:center;}
html.m.m-port .fl-th.on{box-shadow:0 -2px 0 var(--brass-500) inset;}
html.m.m-port .fl-th .av{width:36px;height:36px;}
html.m.m-port .fl-th .nm{align-items:center;width:100%;}
html.m.m-port .fl-th .nm b{font-size:12px;max-width:100%;}
html.m.m-port .fl-th .nm small{display:none;}
html.m.m-port .fl-th .dot{top:8px;left:auto;right:14px;}
html.m .fl-chat header{min-height:40px;align-items:center;}
html.m .fl-b{font-size:14px;max-width:84%;}
html.m .fl-reps{max-height:48%;}
html.m .fl-rep{min-height:44px;font-size:14px;}
html.m .fl-way{min-height:52px;}
html.m.m-land .fl-phone{grid-template-columns:132px minmax(0,1fr);}
html.m.m-land .fl-th{min-height:44px;}

/* ---------- mcity 9. 城市：顶栏（竖屏：回 Lucky Bay 只留箭头；存款 / 现金两行小字；时间、声音收起） ---------- */
html.m .cy-top{height:calc(var(--m-top) + var(--m-safe-t));padding:var(--m-safe-t) calc(4px + var(--m-safe-r)) 0 calc(6px + var(--m-safe-l));gap:4px;}
html.m .cy-home-btn,html.m .cy-exit-btn{position:relative;height:36px;flex:none;}
html.m .cy-tabs{flex:none;}
html.m .cy-tabs button{position:relative;height:36px;min-width:44px;padding:0 12px;white-space:nowrap;flex:none;}
html.m .cy-home-btn::before,html.m .cy-exit-btn::before,html.m .cy-tabs button::before,html.m .cy-nw::before,
html.m .cy-top .ibtn::before{content:"";position:absolute;left:-2px;right:-2px;top:50%;height:44px;margin-top:-22px;}
html.m .cy-top .ibtn{position:relative;width:44px;height:var(--m-top);}
html.m .cy-nw{position:relative;margin-left:4px;margin-right:10px;padding:4px 6px;min-height:36px;}
html.m .cy-nw b{font-size:16px;}
html.m .cy-title{font-size:15px;gap:6px;}
html.m.m-port .cy-home-btn{width:44px;padding:0;justify-content:center;gap:0;}
html.m.m-port .cy-home-btn span,html.m.m-port .cy-home-btn .cy-lg{display:none;}
html.m.m-port .cy-clock,html.m.m-port .cy-top [data-snd]{display:none;}
html.m.m-port .cy-money{display:grid;grid-template-columns:auto auto;column-gap:5px;align-items:baseline;line-height:1.2;}
html.m.m-port .cy-money .sep,html.m.m-port .cy-money .badge{display:none;}
html.m.m-port .cy-money .k{font-size:10px;letter-spacing:.06em;}
html.m.m-port .cy-money b{font-size:14px;}
html.m.m-port .cy-money.has-chips{line-height:1.02;row-gap:0;}   /* 存款 / 现金 / 筹码三行：挤进 44 高的顶栏 */
html.m.m-port .cy-money.has-chips .k{font-size:10px;line-height:1.2;}
html.m.m-port .cy-money.has-chips b{font-size:12px;line-height:1.1;}
html.m.m-port .cy-title > span{display:none;}
html.m.m-port .cy-nw .k,html.m.m-port .cy-nw i{display:none;}
html.m.m-port .cy[data-view="shop"] .cy-title > span{display:block;max-width:40vw;}
html.m.m-port .cy[data-view="shop"] .cy-title > svg{display:none;}
/* 竖屏「家」：顶栏放不下净资产 + 存款 / 现金（$5,000 起就叠字）——净资产收起，家里账本那栏的「资产」键打开同一个抽屉 */
html.m.m-port .cy[data-view="home"] .cy-nw{display:none;}
@media (max-width:740px){
  html.m.m-land .cy-clock,html.m.m-land .cy-money .k,html.m.m-land .cy-home-btn span{display:none;}
}

/* ---------- mcity 10. 城市：地图（一指拖、两指捏合，js/city/city-map.js）· 列表 / 选中的店：竖屏在地图下面，横屏在右边 ---------- */
html.m .cy-mapv{grid-template-columns:minmax(0,1fr) 300px;}
html.m.m-port .cy-mapv{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) fit-content(54%);}
html.m.m-port .cy-drawer{min-height:0;border-left:0;border-top:1px solid var(--brass-900);box-shadow:0 -10px 24px rgba(0,0,0,.45);}
html.m .cy-drawer .hd{padding:8px 14px 6px;}
html.m .cy-drawer .row{min-height:48px;padding:5px 14px;}
html.m .cy-drawer .list{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;}
html.m .cy-drawer .cat{padding:8px 14px 2px;}
html.m .cy-card{margin:6px 10px calc(8px + var(--m-safe-b));}
html.m .cy-card .top{padding:8px 12px;gap:10px;}
html.m .cy-card .meta{padding:0 12px 6px;}
html.m .cy-card .acts{padding:8px 10px;}
html.m .cy-card .acts .btn,html.m .cy-aside .acts .btn{height:44px;}
html.m .cy-maphud{left:8px;top:8px;}
html.m .cy-maphud .seg button{position:relative;height:36px;padding:0 10px;font-size:11px;letter-spacing:.08em;}
html.m .cy-maphud .seg button::before{content:"";position:absolute;left:0;right:0;top:50%;height:44px;margin-top:-22px;}
html.m .cy-news{left:8px;right:8px;top:52px;transform:none;max-width:none;font-size:12px;padding:5px 10px;}
html.m.m-land .cy-news{left:auto;top:8px;right:52px;max-width:48%;}
html.m .cy-zoom{right:10px;bottom:10px;}
html.m .cy-zoom button{width:44px;height:44px;font-size:20px;}
html.m .cy-compass{right:10px;top:8px;}
html.m .cy-scale{left:10px;bottom:10px;}
html.m.m-land .cy-drawer .row{min-height:44px;}
html.m.m-land .cy-card .meta{display:none;}
html.m.m-land .cy-card .top{padding:6px 10px;}
html.m.m-land .cy-card h3{font-size:15px;}

/* ---------- mcity 11. 城市：店里——竖屏上面是店面、下面是详情（整页上下滑，「买下」贴底）；横屏左店面、右详情 290 ---------- */
html.m #cyShop.on{grid-template-columns:minmax(0,1fr) 290px;}
html.m.m-port #cyShop.on{display:block;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}
html.m.m-port #cyShop .cy-floor{height:calc(var(--m-vh,700px) * .56);min-height:360px;}
html.m.m-port #cyShop .cy-aside{overflow:visible;border-left:0;border-top:1px solid var(--brass-900);min-height:calc(var(--m-vh,700px) * .44 - var(--m-top));}
html.m .cy-aside .sec{padding:12px 16px;}
html.m .cy-aside .acts{position:sticky;bottom:0;z-index:3;padding:10px calc(14px + var(--m-safe-r)) calc(10px + var(--m-safe-b)) calc(14px + var(--m-safe-l));
  background:linear-gradient(180deg,#140e0a,#0e0a07);flex-wrap:wrap;}
html.m .cy-aside .acts .btn{min-width:0;}
html.m .cy-aside h2{font-size:19px;}
html.m .cy-aside .price{font-size:25px;}
html.m .cy-aside .seg button{min-height:44px;}
html.m .cy-aside .sw{gap:14px;}
html.m .cy-aside .sw i{position:relative;width:30px;height:30px;}
html.m .cy-aside .sw i::before{content:"";position:absolute;inset:-7px;}
html.m .cy-aside .sec.hero{padding:10px;}
html.m .cy-aside .sec.hero > svg{max-height:120px;width:auto;}
html.m .cy-chart{max-width:100%;height:auto;}   /* 5 年价值曲线固定 332 宽：右栏窄时按比例缩，不横着出栏 */
html.m .cy-aside .sec.hero .view-btn{height:40px;padding:0 14px;}
html.m .cy-aside .sec.hero .view-btn::before{content:"";position:absolute;left:0;right:0;top:50%;height:48px;margin-top:-24px;}
html.m .cy-aside .mine .bt .btn,html.m .cy .prow .bt .btn,html.m .usedlist .btn{height:44px;min-width:52px;}
html.m .cy-hint{padding-bottom:calc(12px + var(--m-safe-b));}
html.m .cy-i{position:relative;}
html.m .cy-i::before{content:"";position:absolute;inset:-14px;}
/* 店招 / 车行导航 / 筛选条：店招 44 高，键 44 */
html.m .cy-wall{height:44px;}
html.m .cy-wall .brand span{font-size:13px;letter-spacing:.34em;}
html.m .cy-subnav{top:44px;padding:2px 8px;}
html.m .cy-subnav button{height:44px;min-width:44px;justify-content:center;flex:none;}
html.m .cy-casebar{top:50px;left:10px;right:10px;height:44px;}
html.m .cy-casebar .seg{min-width:0;overflow-x:auto;scrollbar-width:none;flex:0 1 auto;}
html.m .cy-casebar .seg::-webkit-scrollbar{display:none;}
html.m .cy-casebar .seg button{height:44px;padding:0 10px;}
html.m .cy-sortb{height:44px;flex:none;}
html.m .cy-casebar.cy-dockbar{top:auto;bottom:10px;left:auto;right:10px;}
/* 车行：侧面车一排按宽度缩（每台 = 店里最长那台的比例 × 31%，B 档）；横屏车牌收起、右栏大图收起，看下面的型号条；型号条一行横滑（每条带一张 B 档小图） */
html.m .showroom .bays,html.m .showroom.paged .bays{top:96px;bottom:108px;}
html.m .showroom .bays.side{padding:2% 10px 0;}
html.m .showroom .bays.side.arr{padding-left:54px;padding-right:54px;}   /* 有翻页箭头（44px，离边 6px）时两边让出来，箭头不压车 */
html.m .showroom .bays.side .row{gap:3%;}
html.m .showroom .bays.side .bay{width:calc(var(--f,1) * 31%);}
html.m .showroom .bays.side .bay .car{padding-bottom:14px;}
html.m .showroom .bays.side .bay .plate b,html.m .showroom .bays.side .bay .plate i{font-size:11px;}
html.m.m-land .showroom .bays.side .bay .plate{display:none;}
html.m.m-land .cy-aside .sec.carhero{display:none;}
html.m .cy-aside .sec.carhero{padding:16px 14px 14px;}
html.m .cy-strip{left:8px;right:8px;bottom:8px;height:auto;gap:4px;}
html.m .cy-strip .hd{height:44px;}
html.m .cy-strip .hd .seg button{height:44px;}
html.m .cy-strip .chips{display:flex;overflow-x:auto;overflow-y:hidden;gap:6px;scrollbar-width:none;-webkit-overflow-scrolling:touch;flex:none;height:48px;}
html.m .cy-strip .chips::-webkit-scrollbar{display:none;}
html.m .cy .mchip{flex:none;width:150px;height:48px;}
html.m .cy .mchip.vt{width:162px;}
html.m .cy .mchip.vt .vth,html.m .cy .mchip.vt .vth svg{width:46px;}
html.m .cy-bayarr{width:44px;height:44px;top:calc(50% - 50px);}
html.m .cy-bayarr.l{left:6px;} html.m .cy-bayarr.r{right:6px;}
/* 玻璃柜：垫子小一号，一页几件由 city-shops.js caseGrid 按手机屏算（竖屏 3 列 × 1–2 行，横屏 4–5 列 × 1 行） */
html.m .boutique .counter,html.m .boutique.paged .counter{left:8px;right:8px;top:100px;bottom:10px;gap:8px;}
html.m .boutique .glass{grid-template-columns:repeat(var(--cols,3),minmax(0,1fr));gap:10px 8px;padding:12px 10px 16px;min-width:0;width:100%;}
html.m .boutique .piece{padding:6px 2px 42px;gap:4px;}
html.m .boutique .piece .cush{width:min(76px,100%);height:80px;border-radius:14px;}
html.m .boutique .piece .cush svg{max-height:66px;width:auto;}
html.m .boutique .piece .plate{width:calc(100% + 4px);}
html.m .boutique .piece .plate b,html.m .boutique .piece .plate i{font-size:12px;}
html.m .cy-pager{gap:16px;}
html.m .cy-pager .pb{width:44px;height:44px;}
/* 典当行：竖屏两块上下排 */
html.m .pawnfloor .cols{left:8px;right:8px;top:52px;bottom:8px;gap:8px;}
html.m.m-port .pawnfloor .cols{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1.3fr) minmax(0,1fr);}
html.m .pawnfloor .pb{padding:2px 10px;}
html.m .cy .prow .bt{flex-wrap:wrap;}
html.m .usedlist{padding:0 14px 8px;}
html.m .usedlist .urow{min-height:52px;}
/* 游艇码头：船按屏高缩；竖屏名牌两行放大（× 0.62 后 ≈ 10.5px），横屏收起 */
html.m .marinafloor .water{top:44px;}
html.m .marinafloor .berth{zoom:var(--m-yz,.62);}
html.m.m-land .marinafloor{--m-yz:.42;}
html.m .marinafloor .berth .plate{width:124px;white-space:normal;}
html.m .marinafloor .berth .plate b{font-size:17px;line-height:1.2;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;}
html.m .marinafloor .berth .plate i{font-size:17px;}
html.m.m-land .marinafloor .berth .plate{display:none;}
/* 商场名录 */
html.m .mallfloor .dir{left:10px;right:10px;top:54px;bottom:10px;overflow-y:auto;}
html.m .mallfloor .drow{grid-template-columns:10px minmax(0,1fr);height:auto;min-height:52px;padding:6px 14px;row-gap:0;}
html.m .mallfloor .drow .ad{grid-column:2;}
/* 地产中介 / 租房：在售 · 租房 · 我的 + 区一行横滑，下面房源卡片 */
html.m .estatefloor .etop{margin-top:44px;padding:6px 8px;gap:8px;flex-wrap:wrap;}
html.m .estatefloor .etop > .seg button,html.m .estatefloor .chips button{height:44px;}
html.m .estatefloor .chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;}
html.m .estatefloor .chips::-webkit-scrollbar{display:none;}
html.m .estatefloor .grid{padding:8px;gap:8px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));}
html.m .lcard svg.thumb{height:78px;}
html.m .cy-viewing-win{height:min(380px,calc(var(--m-vh,700px) * .5));}
html.m .modal-box.w760.cy-viewing{width:100%;}

/* ---------- mcity 12. 城市：家——整页上下滑：窗景 → 车库（没车压成一条）· 表盒 / 背包 → 存款 / 每周账单（横屏车库和表盒并排） ---------- */
html.m .cy-homev.on{display:block;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}
html.m .cy-homev .cy-win{height:calc(var(--m-vh,700px) * .34);min-height:200px;}
html.m.m-land .cy-homev .cy-win{height:calc(var(--m-vh,390px) - var(--m-top) - 64px);min-height:180px;}
html.m .cy-hbot{display:grid;grid-template-columns:minmax(0,1fr);}
html.m.m-land .cy-hbot{grid-template-columns:minmax(0,1fr) minmax(0,1fr);}
html.m .cy .cy-room{height:220px;border-right:0;border-bottom:1px solid var(--hairline);}
html.m.m-land .cy .cy-room.garage{border-right:1px solid var(--hairline);}
html.m .cy .cy-room.garage:not(:has(.bay svg)){height:40px;}
html.m .cy .cy-room.garage:not(:has(.bay svg)) .bays,html.m .cy .cy-room.garage:not(:has(.bay svg)) .door{display:none;}
html.m .cy .garage .bay{min-width:0;}
html.m .cy .garage .bay svg{max-width:90%;}
html.m .cy .watchbox .box{width:min(340px,calc(100% - 24px));}
html.m .cy .ledger{grid-column:1 / -1;padding:12px calc(16px + var(--m-safe-r)) calc(14px + var(--m-safe-b)) calc(16px + var(--m-safe-l));gap:8px;}
html.m .cy .ledger .kv b{font-size:15px;}
html.m .cy .ledger .bills .bl{font-size:13px;row-gap:5px;}
html.m.m-port .cy .ledger .bills .bl{grid-template-columns:minmax(0,1fr) auto;}
html.m .cy .ledger .acts{margin-top:6px;}
html.m .cy .ledger .acts .btn{height:44px;}
html.m .cy .cy-room .cap{left:12px;top:8px;}
html.m .cy .cy-room .cap .pg button{position:relative;width:32px;height:32px;}
html.m .cy .cy-room .cap .pg button::before{content:"";position:absolute;inset:-6px;}
html.m .cy-houses{right:12px;top:10px;flex-wrap:wrap;justify-content:flex-end;max-width:calc(100% - 24px);}
html.m .cy-houses button{height:44px;padding:0 12px;}
html.m .cy-alert{flex-wrap:wrap;row-gap:6px;padding:8px 12px;}
html.m .cy-alert .btn{height:44px;}
html.m .cy-pop{min-width:0;width:min(300px,calc(100% - 20px));bottom:12px;}
html.m .cy-pop .h .x{width:16px;height:16px;padding:14px;margin:-14px -14px -14px auto;box-sizing:content-box;}
html.m .cy-pop .acts .btn{height:44px;flex:1 1 0;}

/* ---------- mcity 13. 城市：信封（顶栏下面整宽，横屏靠右）· 店里的弹层 ---------- */
html.m .cy-env{position:fixed;left:calc(8px + var(--m-safe-l));right:calc(8px + var(--m-safe-r));top:calc(var(--m-top) + var(--m-safe-t) + 4px);width:auto;
  max-height:calc(var(--m-vh,700px) - var(--m-top) - 20px);z-index:45;overscroll-behavior:contain;}
html.m.m-land .cy-env{left:auto;width:min(380px,70vw);}
html.m .cy-env .hd{min-height:44px;padding-top:0;padding-bottom:0;}
html.m .cy-env .hd .x{width:16px;height:16px;padding:14px;margin-right:-14px;box-sizing:content-box;}
html.m .cy-env .it{min-height:44px;flex-wrap:wrap;}
html.m .cy-env .it .btn{height:44px;}
html.m .cy-mlist .cy-mrow{grid-template-columns:minmax(0,1fr) auto;row-gap:6px;}
html.m .cy-mlist .cy-mrow .btn{height:44px;}

/* ---------- mcity 14. 服装店 / 衣柜 / 门店名录 / 门口着装（js/core/fashion-ui.js，全屏 #fashionLayer）：竖屏人物在上、货在下；横屏人物在左 ---------- */
html.m .fs-bar{height:calc(var(--m-top) + var(--m-safe-t));padding:var(--m-safe-t) calc(8px + var(--m-safe-r)) 0 calc(8px + var(--m-safe-l));gap:8px;}
html.m .fs-ib{width:44px;height:44px;}
html.m .fs-loc{overflow:hidden;text-overflow:ellipsis;min-width:0;}
html.m .fs-sheet{inset:calc(var(--m-top) + var(--m-safe-t)) 0 0;}
html.m .fs-panel{min-height:0;}                                  /* 不写的话货架把购买条挤出屏幕 */
html.m .fs-tabs{flex-wrap:wrap;row-gap:6px;gap:6px;padding:8px 10px 6px;}
html.m .fs-tabs .grow{flex:1 1 100%;height:0;}                    /* 分类一行；价格 / 男女 / 已打烊下一行 */
html.m .fs-tab{min-width:44px;height:44px;}
html.m .fs-sort{height:44px;}
html.m .fs-layer .seg button{min-width:44px;min-height:44px;padding:0 14px;font-size:13px;}
html.m .fs-grid{gap:8px;}
html.m .fs-store .fs-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));}
html.m .fs-buy{padding:8px calc(10px + var(--m-safe-r)) calc(8px + var(--m-safe-b)) calc(10px + var(--m-safe-l));}
html.m .fs-buy .t{flex:1 1 60%;}
html.m .fs-buy .p{font-size:21px;}
html.m .fs-buy .btn{height:44px;}
html.m .fs-buy .btn.lg{min-width:0;flex:1 1 40%;}
html.m .fs-buy .seg{flex:none;}
html.m .fs-buy .seg button{white-space:nowrap;}
html.m .fs-buy .t b{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;}
html.m .fs-stage .fs-halls{max-width:calc(100% - 60px);}
html.m.m-land .fs-body{flex-direction:row;}
html.m.m-land .fs-stage,html.m.m-land .fs-home{width:clamp(200px,30%,280px);height:auto;border-bottom:0;border-right:1px solid var(--brass-900);}
/* 横屏人物栏窄：四个厅的着装标签折成 2–4 行，原来绝对定位压在人物头肩上——改成上下两格：标签一格、人物在下面一格（背景 / 眼睛 / (i) 仍绝对定位） */
html.m.m-land .fs-stage{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);}
html.m.m-land .fs-stage > .fs-halls{position:relative;left:auto;top:auto;right:auto;max-width:none;grid-row:1;grid-column:1;margin:12px 56px 0 12px;}
html.m.m-land .fs-stage > .fs-fig{position:relative;inset:auto;grid-row:2;grid-column:1;min-height:0;margin:6px 0;}
html.m.m-land .fs-store .fs-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));}
html.m.m-land .fs-tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;}
html.m.m-land .fs-tabs::-webkit-scrollbar{display:none;}
html.m.m-land .fs-tabs .grow{flex:1 1 0;height:auto;}
html.m.m-land .fs-tab,html.m.m-land .fs-sort,html.m.m-land .fs-tabs .seg{flex:none;}
html.m.m-land .fs-buy{flex-wrap:nowrap;}
html.m.m-land .fs-buy .btn.lg{flex:none;min-width:110px;}
/* 衣柜：竖屏槽位一排横滑，横屏竖排 84 宽；搭配一行横滑 */
html.m .fs-slots{scrollbar-width:none;-webkit-overflow-scrolling:touch;}
html.m .fs-slots::-webkit-scrollbar{display:none;}
html.m .fs-slot{min-width:64px;min-height:64px;padding:3px;}
html.m .fs-slot .th{width:54px;height:54px;}
html.m.m-land .fs-slots{width:84px;flex-direction:column;overflow-x:hidden;overflow-y:auto;border-right:1px solid var(--hairline);}
html.m.m-land .fs-slot > .ic{display:none;}
html.m .fs-looks{height:auto;min-height:84px;overflow-x:auto;padding:8px calc(10px + var(--m-safe-r)) calc(8px + var(--m-safe-b)) calc(10px + var(--m-safe-l));flex-wrap:nowrap;}
html.m .fs-look{flex:none;}
html.m .fs-look .x{display:grid;width:26px;height:26px;}
html.m .fs-looks .btn{height:44px;flex:none;}
/* 门店名录 */
html.m .fs-lbody{padding:10px 0 calc(16px + var(--m-safe-b));gap:12px;}
html.m .fs-lgrp{width:calc(100% - 20px - var(--m-safe-l) - var(--m-safe-r));}
html.m .fs-lrow{height:auto;min-height:60px;gap:10px;padding:6px 12px;}
html.m .fs-lmark{width:min(150px,42%);}
html.m .fs-lmark .fs-wm{max-width:100%;height:28px;}
html.m .fs-laddr{min-width:0;overflow:hidden;text-overflow:ellipsis;}
html.m .fs-closed{flex:none;}
/* 卖出面板 / 门口着装弹窗（内容少，整宽一块居中） */
html.m .fs-srow{min-height:52px;flex-wrap:wrap;}
html.m .fs-srow .btn.sm{height:44px;}
html.m .fs-gbox{width:100%;padding:16px 16px 0;}
html.m .modal.fs-gate{align-items:center;padding:12px calc(12px + var(--m-safe-r)) 12px calc(12px + var(--m-safe-l));}
html.m .fs-gate .modal-box{height:auto;max-height:100% !important;border-radius:var(--r-2);border:1px solid var(--brass-700);}
html.m .fs-gbox .mf{margin:0 -16px;}
html.m .fs-gbox .mf .btn{flex:1 1 0;}

/* ---------- mcity 15. 关门以后（js/city/after-hours-ui.js）：关门提示 / 网购 / 预约——内容少，整宽一块居中 ---------- */
html.m .modal.ah-mod{align-items:center;padding:12px calc(12px + var(--m-safe-r)) 12px calc(12px + var(--m-safe-l));}
html.m .ah-mod .modal-box.ah-box{width:100% !important;max-width:440px !important;height:auto;max-height:100% !important;border-radius:var(--r-2);border:1px solid var(--brass-700);padding:0;}
html.m .ah-box .mb{padding:12px 14px 16px;}
html.m .ah-line{flex-wrap:wrap;row-gap:2px;}
html.m .ah-acts .btn,html.m .ah-slots .btn{height:44px;}
html.m .ah-acts .btn{flex:1 1 0;}
html.m .ah-pick{max-height:calc(var(--m-vh,700px) * .5);}
html.m .ah-pick .btn{min-height:44px;}
html.m .ah-sbtn{height:44px;}

/* ---------- mcity 16. 分厅饮料（js/core/drink-ui.js）：手机上整宽一块贴底（横屏靠右 420），每项 44 高 ---------- */
html.m .dr-pop{left:calc(8px + var(--m-safe-l)) !important;right:calc(8px + var(--m-safe-r));width:auto;max-width:520px;top:auto !important;
  bottom:calc(8px + var(--m-safe-b));max-height:calc(var(--m-vh,100vh) - var(--m-top) - 24px);}
html.m.m-land .dr-pop{left:auto !important;width:min(420px,70vw);}
html.m .dr-h{min-height:44px;padding-top:0;padding-bottom:0;}
html.m .dr-x{width:44px;height:44px;margin-right:-8px;}
html.m .dr-it{height:44px;}
