/* ============ 锦标赛（js/loop/tourney-ui.js · design2/loop-design.md §4） ============
   比赛桌复用现有桌的样式（百家乐 bac-* · 21 点 bj-* / bjx-* · Arena 终端 std-* / pr-*），这里只放锦标赛自己的：
   锦标赛筹码（灰紫 + T 压花）· 名次抽屉 · 阶段 / 结算卡 · 报名卡 · 顶栏小标 · 楼面锦标赛区门牌。
   尺寸是 dp（整页 zoom = k）；字号只用 --fs-l / --fs-m / --fs-s；台布上只用 tx-1 / tx-2 / --print。 */

#tnScreen > .content{margin-top:0;padding:0;position:relative;overflow:hidden;flex:1;min-height:0;}

/* ---------- 锦标赛筹码：灰紫色，面上压一个「T」（普通筹码没有灰紫色，一眼分得开） ---------- */
.chip.tch{--chip-edge:#d9d3e3;--c:#6c6280;--ink:#f1edf6;}
.chip.tch.t25{--c:#8b8499;} .chip.tch.t50{--c:#7d7590;} .chip.tch.t100{--c:#6c6280;}
.chip.tch.t500{--c:#5a506e;} .chip.tch.t1k{--c:#4a415e;} .chip.tch.t5k{--c:#3b3450;--chip-edge:#e6dcc0;}
.chip.tch::before{border-color:rgba(236,230,245,.5);}
.chip.tch .tm{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:700 32px/1 var(--serif);font-style:normal;
  color:rgba(255,255,255,.07);text-shadow:0 -1px 0 rgba(0,0,0,.4),0 1px 0 rgba(255,255,255,.14);pointer-events:none;}
.chip.tch.sm .tm{font-size:20px;} .chip.tch.xs .tm{font-size:14px;}
.th-tray .cs .chip.tch .tm{font-size:30px;}
.tn-bal .v .ic{fill:#9f93b6;}
.th-you .n .tn-t{font:700 var(--fs-s)/1 var(--serif);color:#241a08;}

/* ---------- 台面上的小提示（MIN BET / MAX …），倒计时下面一行，淡入淡出一次 ---------- */
.tn-flash{position:absolute;left:50%;top:80px;transform:translateX(-50%);z-index:8;font:var(--fs-s) var(--serif);letter-spacing:.2em;color:var(--warn);
  white-space:nowrap;text-shadow:0 1px 2px rgba(0,0,0,.7);opacity:0;pointer-events:none;}
.tn-flash.on{animation:tnFlash 1.8s ease forwards;}
@keyframes tnFlash{0%{opacity:0;}12%{opacity:1;}75%{opacity:1;}100%{opacity:0;}}

/* ---------- 百家乐：路单屏只留珠盘 · 大路 · 个数；注区只有 闲 · 和 · 庄 ---------- */
.tn-wrd{grid-template-columns:auto minmax(0,1fr) 128px !important;}
.tn-wrd .bac-bead-box{padding:2px 3px;}
.tn-root .tn-zones{grid-template-columns:170px 150px 170px;}
.tn-root .tn-mid{grid-template-columns:1fr;}
.tn-root .tn-mid .bz{flex-direction:column;gap:4px;}
.tn-root .tn-mid .bz .cn{font-size:26px;letter-spacing:.1em;}
.tn-root .bz .bz-me{display:flex;align-items:flex-end;gap:6px;}
.tn-root .bz.main .bz-me{margin-left:0;transform:translateX(-17px);}
.tn-root .bz-me .cnt{font:var(--fs-s) var(--serif);color:var(--brass-100);white-space:nowrap;padding-bottom:2px;}
.tn-root .bac-seats .seat.out{opacity:.35;}

/* ---------- 21 点：荷官牌在倒计时下，7 格沿半月台，你在正前方 ---------- */
.tn-dealer{position:absolute;left:50%;top:84px;transform:translateX(-50%);z-index:4;display:flex;align-items:flex-start;}
.tn-slots{position:absolute;inset:0;pointer-events:none;z-index:5;}
.tn-slots .bjx-box.mine .bjx-ring.main{cursor:pointer;}
.tn-slots .bx-nm{gap:6px;}
.tn-first{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;font:var(--fs-s)/1 var(--serif);
  background:linear-gradient(180deg,var(--brass-100),var(--brass-500));color:#241a08 !important;box-shadow:0 1px 2px rgba(0,0,0,.6);}
.tn-me{color:var(--brass-100);letter-spacing:.06em;}
.tn-lcdt{font:var(--fs-s) var(--serif);letter-spacing:.24em;color:#b7abc9;position:relative;z-index:1;}

/* ---------- 轮盘（Arena 终端）：巨幕 = 转盘 · 最近 30 个号 · 名次前 5 ---------- */
.tn-wall{grid-template-columns:minmax(0,.8fr) minmax(0,1.3fr) 230px !important;}
.tn-wheel{display:flex;align-items:center;justify-content:center;}
.tn-wheel canvas{max-height:100%;}
.tn-nums{padding:8px 10px !important;}
.tn-ngrid{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));gap:3px;width:100%;height:100%;position:relative;z-index:1;}
.tn-ngrid i{display:flex;align-items:center;justify-content:center;border-radius:2px;font:var(--fs-m)/1 var(--serif);font-style:normal;color:var(--lcd-1);
  background:#0c141a;box-shadow:0 0 0 1px var(--lcd-line) inset;font-variant-numeric:tabular-nums lining-nums;}
.tn-ngrid i.r{background:#7a1822;color:#ffe1e1;} .tn-ngrid i.b{background:#000;color:#f0f0f0;box-shadow:0 0 0 1px #4a4f55 inset;} .tn-ngrid i.g{background:#17603a;color:#dcf7e5;}
.tn-lead{display:flex;flex-direction:column;gap:3px;padding:8px 12px;background:linear-gradient(180deg,#060a0e,#020406);}
.tn-lh{font:var(--fs-s) var(--serif);letter-spacing:.22em;color:#b7abc9;margin-bottom:2px;position:relative;z-index:1;}
.tn-lr{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:8px;align-items:baseline;font-size:var(--fs-s);color:var(--lcd-1);position:relative;z-index:1;}
.tn-lr i{font-style:normal;color:var(--lcd-2);font-family:var(--serif);}
.tn-lr span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tn-lr b{font:400 var(--fs-m) var(--serif);font-variant-numeric:tabular-nums lining-nums;}
.tn-lr.me span,.tn-lr.me b{color:var(--brass-100);}
.tn-rou{position:absolute;left:50%;transform:translateX(-50%);top:84px;bottom:52px;width:min(96%,1020px);display:flex;flex-direction:column;}
.tn-rou .pr-board{flex:1;}
.tn-rou [data-k]{position:relative;}
.tn-rou .pr-n .hz{position:absolute;}
.tstk{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:6;pointer-events:none;line-height:0;}
.std-res .tn-num{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:30px;padding:0 6px;border-radius:3px;font:var(--fs-l)/1 var(--serif);color:#fff;}
.std-res .tn-num.r{background:var(--rou-red);} .std-res .tn-num.b{background:#0b0b0b;box-shadow:0 0 0 1px #444 inset;} .std-res .tn-num.g{background:var(--rou-green);}
.std-res .g-good{color:var(--good);} .std-res .g-bad{color:var(--bad);}

/* ---------- Z4 抽屉：名次（头像 · 名字 · 筹码，你那行高亮） ---------- */
.tn-side{position:absolute;inset:0;display:flex;flex-direction:column;overflow:auto;}
.tn-side .sh{display:flex;align-items:baseline;gap:10px;height:44px;padding:0 14px;border-bottom:1px solid var(--brass-900);flex:none;
  font:var(--fs-m)/44px var(--serif);letter-spacing:.12em;color:var(--brass-300);white-space:nowrap;}
.tn-side .sh small{margin-left:auto;font:var(--fs-s) var(--sans);letter-spacing:0;color:var(--tx-3);opacity:1;overflow:hidden;text-overflow:ellipsis;}
.tn-rank{display:grid;grid-template-columns:18px 36px minmax(0,1fr) auto;gap:10px;align-items:center;padding:7px 14px;border-bottom:1px solid rgba(201,160,82,.1);}
.tn-rank i{font:var(--fs-s) var(--serif);font-style:normal;color:var(--tx-3);text-align:right;}
.tn-rank .av{width:36px;height:36px;border-radius:50%;overflow:hidden;background:#1b1410;box-shadow:0 0 0 1px var(--brass-900);display:flex;align-items:flex-end;justify-content:center;}
.tn-rank .av svg,.tn-rank .av img{width:100%;height:100%;display:block;object-fit:cover;}
.tn-rank .av > b{font:var(--fs-m)/36px var(--serif);color:var(--tx-2);width:100%;text-align:center;}
.tn-rank .nm{font-size:var(--fs-m);color:var(--tx-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tn-rank b.num{font:400 var(--fs-m) var(--serif);color:var(--tx-1);font-variant-numeric:tabular-nums lining-nums;}
.tn-rank.me{background:linear-gradient(90deg,rgba(201,160,82,.16),rgba(201,160,82,.04));box-shadow:3px 0 0 var(--brass-300) inset;}
.tn-rank.me .nm,.tn-rank.me b.num,.tn-rank.me i{color:var(--brass-100);}
.tn-rank.out{opacity:.45;}
.tn-pool{margin-top:auto;display:flex;justify-content:space-between;align-items:baseline;padding:10px 14px;border-top:1px solid var(--brass-900);font-size:var(--fs-s);color:var(--tx-3);}
.tn-pool b{font:400 var(--fs-m) var(--serif);color:var(--brass-100);}

/* ---------- 阶段结束（晋级决赛）/ 结算卡：盖在台面中间 ---------- */
.tn-over{position:absolute;left:0;right:0;top:40px;bottom:96px;z-index:26;display:none;align-items:center;justify-content:center;background:rgba(6,4,3,.55);}
.tn-over.on{display:flex;}
.tn-card{width:380px;max-width:calc(100% - 32px);padding:0 0 14px;background:linear-gradient(180deg,#221913,#120c09);border:1px solid var(--brass-700);border-radius:var(--r-2);
  box-shadow:0 0 0 1px #000,var(--hi-brass),var(--shadow-3);position:relative;}
.tn-card::before{content:"";position:absolute;left:8%;right:8%;top:0;height:1px;background:linear-gradient(90deg,transparent,var(--brass-100),transparent);opacity:.6;}
.tn-card .hd{display:flex;align-items:baseline;gap:10px;padding:14px 18px 10px;border-bottom:1px solid var(--brass-900);font:var(--fs-m) var(--serif);letter-spacing:.1em;color:var(--brass-300);}
.tn-card .hd small{margin-left:auto;font-size:var(--fs-s);letter-spacing:.14em;color:var(--tx-3);opacity:1;}
.tn-card .big{text-align:center;font:var(--fs-l) var(--serif);letter-spacing:.2em;color:var(--brass-100);padding:18px 0 4px;}
.tn-card .pz{text-align:center;font:var(--fs-l) var(--serif);color:var(--good);font-variant-numeric:tabular-nums lining-nums;}
.tn-rows{margin:12px 18px 0;border-top:1px solid var(--hairline);}
.tn-rr{display:grid;grid-template-columns:22px minmax(0,1fr) auto 70px;gap:8px;align-items:baseline;padding:6px 0;border-bottom:1px solid rgba(201,160,82,.1);font-size:var(--fs-s);color:var(--tx-2);}
.tn-rr i{font:var(--fs-s) var(--serif);font-style:normal;color:var(--tx-3);}
.tn-rr span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--tx-1);}
.tn-rr b{font:400 var(--fs-m) var(--serif);color:var(--tx-1);}
.tn-rr em{font-style:normal;text-align:right;color:var(--good);font-family:var(--serif);}
.tn-rr.me span,.tn-rr.me b,.tn-rr.me i{color:var(--brass-100);}
.tn-card .ft{display:flex;justify-content:center;padding-top:14px;}
.tn-card .ft .btn{min-width:140px;}

/* ---------- 报名卡 / 列表卡 ---------- */
.tn-card-b .l1{font-size:var(--fs-m);color:var(--tx-2);}
.tn-card-b .l1 b,.tn-card-b .l2 b{font-family:var(--serif);font-weight:400;color:var(--brass-100);}
.tn-card-b .l2{margin-top:6px;font-size:var(--fs-s);color:var(--tx-3);display:flex;align-items:center;gap:6px;}
.tn-card-b .l2 .ic{width:14px;height:14px;fill:var(--cream-500);}
.tn-rules-box{display:none;margin-top:12px;padding-top:10px;border-top:1px solid var(--hairline);}
.tn-rules-box.on{display:block;}
.tn-rules{width:100%;border-collapse:collapse;}
.tn-rules td{padding:5px 0;font-size:var(--fs-s);color:var(--tx-2);border-bottom:1px solid rgba(201,160,82,.1);}
.tn-rules td:last-child{text-align:right;font-family:var(--serif);font-size:var(--fs-m);color:var(--tx-1);}
.tn-note{margin-top:8px;font-size:var(--fs-s);line-height:1.7;color:var(--tx-3);}
#tnCard .mf{align-items:center;}
#tnCard .mf .sp{flex:1;}
.tn-list .cal-row{grid-template-columns:52px 1fr auto;}
.tn-list .cal-row.on i{color:var(--brass-300);}
.tn-list .cal-row .btn.sm{height:26px;padding:0 12px;}
.tn-wk{display:flex;flex-direction:column;gap:4px;margin-top:12px;padding-top:10px;border-top:1px solid var(--hairline);font-size:var(--fs-s);color:var(--tx-3);}
.tn-wk span{display:flex;gap:10px;}
.tn-wk i{font-style:normal;font-family:var(--serif);color:var(--tx-2);min-width:88px;}
.lp-cal-pop .cal-row .btn.sm{height:24px;padding:0 10px;font-size:var(--fs-s);}

/* ---------- 顶栏小标：开赛前 10 分钟倒计时 / 入座 ---------- */
#topbar .tn-pill,.th-strip .tn-pill{width:auto;height:28px;padding:0 9px;gap:6px;display:inline-flex;align-items:center;border:1px solid var(--brass-700);border-radius:var(--r-1);
  background:rgba(201,160,82,.08);color:var(--brass-300);cursor:pointer;flex:none;}
#topbar .tn-pill .ic,.th-strip .tn-pill .ic{width:15px;height:15px;fill:currentColor;}
.tn-pill b{font:400 var(--fs-s) var(--serif);letter-spacing:.06em;color:var(--brass-100);font-variant-numeric:tabular-nums lining-nums;}
.tn-pill.live{border-color:var(--brass-300);}

/* ---------- 楼面锦标赛区门牌：TOURNAMENT · 19:30 ---------- */
.k-tourney .fp-sign .nm{letter-spacing:.16em;font-size:.84em;}
.k-tourney.closed .fp-sign{opacity:.78;}

/* ---------- 手机横屏：台面缩一点就行（骨架规则在 table-hud / mobile.css） ---------- */
html.m .tn-rou{top:70px;bottom:40px;}
html.m .tn-card{width:340px;}

/* ============ 手机横屏（html.m，第二遍 · mtables）：比赛桌 ============
   骨架（顶栏 36 · rail 64 · 顶部屏进左抽屉「路单」键 · 名次在右抽屉，顶栏奖杯键开合）见 css/mobile.css 的 mtables 段；
   台面沿用百家乐 / 21 点 / Arena 终端的手机排法（css/baccarat.css · blackjack.css · stadium.css 的 html.m 段），这里只放锦标赛自己的：
   · 百家乐：闲 · 和 · 庄 三块（没有边注）
   · 21 点：7 个人一排贴底边（你的格 0.84，别人的 0.62），荷官牌顶上正中、倒计时在左；手机上格子按座位从左到右排（tourney-ui.js renderBj）
   · 轮盘：倒计时左上、注区铺满、结果条左下
   · 晋级 / 打完的卡片在顶栏和 rail 之间居中，放不下自己滑；「快进」（输光了）在 rail 右边，44 高 */
html.m #tnRoot.bac-root .bac-zones.tn-zones{grid-template-columns:minmax(0,210px) minmax(0,150px) minmax(0,210px);justify-content:center;}
html.m #tnRoot .tn-mid .bz .cn{font-size:24px;}
html.m #tnRoot .tn-flash{top:58px;}
html.m #tnRoot .tn-lcdt{font-size:13px;}
/* 21 点 */
html.m #tnRoot .tn-dealer{top:4px;}
html.m #tnRoot .tn-slots{display:flex;align-items:flex-end;justify-content:center;gap:6px;padding:0 4px 2px;}
html.m #tnRoot .tn-slots .bjx-box{--bz:.62;position:relative;left:auto !important;bottom:auto !important;width:auto;flex:0 0 auto;transform:none;zoom:var(--bz);}
html.m #tnRoot .tn-slots .bjx-box.mine{--bz:.84;}
html.m #tnRoot .tn-slots .bjx-box :is(.bx-nm,.bx-lbl,.bjx-ring em,.tn-first){font-size:max(12px,calc(10.4px / var(--bz)));}
html.m #tnRoot .tn-slots .bjx-box .card.face .idx{font-size:max(19cqw,calc(10.4px / var(--bz)));}
html.m #tnRoot .tn-slots .bjx-box .card.face .court .ch b{font-size:max(30cqw,calc(10.4px / var(--bz)));}
html.m #tnRoot .tn-slots .bjx-box .bjx-hand .ht{font-size:max(12px,calc(10.4px / var(--bz)));height:auto;line-height:1.5;}
html.m #tnRoot .tn-slots .bjx-box .sl-cards:not([data-n="2"]):not([data-n="3"]) .bjx-hand .hc{--card-w:58px;--card-h:82px;min-height:82px;}
html.m #tnRoot .tn-slots .bx-gap{width:12px;}
/* 先手圆片缩完 16、名字那行缩完 18 高：圆片不出格子、不出台布下沿 */
html.m #tnRoot .tn-first{min-width:0;width:calc(16px / var(--bz,1));height:calc(16px / var(--bz,1));line-height:1;}
html.m #tnRoot .tn-slots .bjx-box .bx-nm{height:calc(18px / var(--bz,1));}
/* 轮盘 */
html.m #tnRoot .tn-rou{left:62px;right:6px;top:6px;bottom:42px;width:auto;transform:none;}
html.m #tnRoot.std-root .std-cloth .th-ring{left:32px;top:8px;}
html.m #tnRoot.std-root .std-res{top:auto;bottom:3px;left:8px;transform:none;height:36px;max-width:calc(50% - 60px);}
html.m #tnRoot .std-res .tn-num{min-width:30px;height:26px;font-size:18px;}
html.m #tnRoot .tn-wheel{height:220px;}
html.m #tnRoot .tn-nums{min-height:120px;}
html.m #tnRoot .tn-ngrid{height:110px;}
html.m #tnRoot .tn-lead{flex:none;}
/* 名次抽屉 · 卡片 */
html.m #tnRoot .tn-rank{padding:8px 14px;min-height:48px;}
html.m #tnRoot .tn-over{top:var(--mt-strip);bottom:calc(var(--mt-rail) + var(--m-safe-b));align-items:flex-start;overflow-y:auto;padding:8px 0;}
html.m #tnRoot .tn-card{margin:auto;}
html.m #tnRoot .tn-card .ft .btn{height:44px;}
@media (max-width:760px){
  html.m #tnRoot .tn-slots .bjx-box{--bz:.56;}
  html.m #tnRoot .tn-slots .bjx-box.mine{--bz:.78;}
}
@media (max-height:350px){
  html.m #tnRoot .tn-slots .bjx-box{--bz:.56;}
  html.m #tnRoot .tn-slots .bjx-box.mine{--bz:.72;}
}
