/* ══════════ BUILD 209 · 德州扑克 · 对庄(横屏 1 对 1)══════════
   舞台 16:9,宽度 100 份 = 100 × var(--u);所有东西按百分比摆,任何屏幕等比缩放。
   颜色:黑 · 祖母绿 · 金(和 GPT 画的牌桌一致)*/
#uthview{position:fixed;inset:0;z-index:40;background:#050806 !important;display:flex;align-items:center;justify-content:center;overflow:hidden}
#uthview.hide{display:none}
#uthview::before{content:"";position:absolute;inset:-40px;background:url(uth-bg.webp?v=478b0f5a) center/cover no-repeat;filter:blur(22px) brightness(.35) saturate(1.1);pointer-events:none}
#uthwrap{display:flex;align-items:center;justify-content:center}   /* 位置 / 竖拿手机时转 90° 交给 landscape.css 的 .lswrap(和百家乐 / 骰宝 / 捕鱼一样) */
.uth-stage{--u:16px;--ff:"Avenir Next","Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;--gold:#e9c46a;--gold2:#f6dd9b;--ink:#f7f1e3;--emer:#0f5a43;position:relative;flex:0 0 auto;width:100%;height:100%;overflow:hidden;color:var(--ink);
  font-family:"Avenir Next","Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;user-select:none;-webkit-user-select:none;container-type:size}
/* 舞台 = 整个横屏画面;牌桌那一层(.uth-scene,16:9)按「高度优先」缩放后居中,宽屏手机两边用模糊的牌桌补满(不留黑边);
   顶栏 / 选筹码 / 按钮贴着真正的屏幕四角(避开刘海),不跟着牌桌缩 */
.uth-scene{position:absolute;left:0;top:0;width:calc(var(--u)*100);height:calc(var(--u)*56.25)}
.uth-bg{position:absolute;inset:0;-webkit-mask-image:linear-gradient(90deg,transparent,#000 2.5%,#000 97.5%,transparent);mask-image:linear-gradient(90deg,transparent,#000 2.5%,#000 97.5%,transparent);background:url(uth-bg.webp?v=478b0f5a) center/cover no-repeat,
  radial-gradient(ellipse 70% 55% at 50% 62%,#1d7a5b 0%,#0e4a37 45%,#062419 72%,#020806 100%)}
.uth-vig{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 85% 75% at 50% 55%,transparent 55%,rgba(0,0,0,.55) 100%)}
.uth-dealer{display:none;position:absolute;left:50%;top:calc(var(--u)*3.4);height:calc(var(--u)*18.6);transform:translateX(-50%);filter:drop-shadow(0 calc(var(--u)*.4) calc(var(--u)*1) rgba(0,0,0,.55)) brightness(.96);pointer-events:none;
  -webkit-mask-image:linear-gradient(#000 90%,transparent 100%);mask-image:linear-gradient(#000 90%,transparent 100%)}

/* 顶栏 */
.uth-top{position:absolute;left:calc(var(--u)*1.2 + env(safe-area-inset-left,0px));right:calc(var(--u)*1.2 + env(safe-area-inset-right,0px));top:calc(var(--u)*1);display:flex;align-items:center;gap:calc(var(--u)*.8);z-index:5}
.uth-tb{display:inline-flex;align-items:center;gap:calc(var(--u)*.4);height:calc(var(--u)*2.6);padding:0 calc(var(--u)*1.1);border-radius:99px;border:1px solid rgba(233,196,106,.45);
  background:rgba(8,14,11,.62);backdrop-filter:blur(6px);color:var(--ink);font:600 max(calc(var(--u)*1.05),10px) var(--ff);cursor:pointer}
.uth-tb span{font-size:calc(var(--u)*1.6);line-height:1;margin-top:-2px}
.uth-tb:hover{border-color:var(--gold)}
.uth-title{display:flex;flex-direction:column;line-height:1.1;margin-right:auto;margin-left:calc(var(--u)*.4)}
.uth-title b{font:700 calc(var(--u)*1.35) Georgia,"Times New Roman",serif;letter-spacing:.04em;color:var(--gold2);text-shadow:0 2px 8px rgba(0,0,0,.6)}
.uth-title i{font-style:normal;font-size:max(calc(var(--u)*.75),9px);letter-spacing:.16em;color:#ff9f7a;text-transform:uppercase}
.uth-bal{display:flex;align-items:center;gap:calc(var(--u)*.5);height:calc(var(--u)*2.6);padding:0 calc(var(--u)*1.1);border-radius:99px;background:rgba(0,0,0,.55);border:1px solid rgba(233,196,106,.35)}
.uth-bal b{font:700 max(calc(var(--u)*1.2),11px) var(--ff);font-variant-numeric:tabular-nums;color:var(--gold2)}
.uth-coin{width:calc(var(--u)*1.4);height:calc(var(--u)*1.4);border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff3c4,#e9c46a 55%,#9a6b1c)}

/* 牌 */
.uth-row{position:absolute;left:50%;transform:translateX(-50%);display:flex;gap:calc(var(--u)*.7);z-index:3}
.uth-dcards{top:calc(var(--u)*24.4);gap:calc(var(--u)*.5)}
.uth-board{top:calc(var(--u)*30.9);gap:calc(var(--u)*.5)}
.uth-pcards{top:calc(var(--u)*40.1);gap:calc(var(--u)*.9)}
.uth-card{position:relative;width:calc(var(--u)*6);aspect-ratio:5/7;perspective:800px}
.uth-pcards .uth-card{width:calc(var(--u)*6.85)}
.uth-dcards .uth-card{width:calc(var(--u)*4.1)}
.uth-card>div{position:absolute;inset:0;border-radius:calc(var(--u)*.45);overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden;transition:transform .42s cubic-bezier(.3,.7,.3,1);box-shadow:0 calc(var(--u)*.35) calc(var(--u)*.8) rgba(0,0,0,.5)}
.uth-card>div svg{width:100%;height:100%;display:block}
.uth-card .fr{transform:rotateY(180deg);background:#fff}
.uth-card .bk{transform:rotateY(0)}
.uth-card.up .fr{transform:rotateY(0)}
.uth-card.up .bk{transform:rotateY(-180deg)}
.uth-card.ghost{opacity:.18}
.uth-card.deal{animation:uthDeal .42s cubic-bezier(.2,.8,.3,1)}
@keyframes uthDeal{from{transform:translate(0,calc(var(--u)*-12)) rotate(-8deg) scale(.55);opacity:0}60%{opacity:1}to{transform:none;opacity:1}}
.uth-card.best>div{box-shadow:0 0 0 calc(var(--u)*.22) var(--gold),0 0 calc(var(--u)*1.6) rgba(233,196,106,.75)}
.uth-board .uth-card:not(.best).up,.uth-pcards .uth-card:not(.best).up{filter:none}
.uth-slot{width:calc(var(--u)*6);aspect-ratio:5/7;border-radius:calc(var(--u)*.45);border:1.5px dashed rgba(233,196,106,.35);background:rgba(0,0,0,.12)}

/* 牌型字 */
.uth-lbl{position:absolute;left:50%;transform:translateX(-50%);z-index:4;font-size:max(calc(var(--u)*1),10px);white-space:nowrap;text-shadow:0 1px 6px rgba(0,0,0,.8)}
.uth-lbl b{font:700 max(calc(var(--u)*1.15),11px) Georgia,serif;color:var(--gold2);letter-spacing:.03em}
.uth-plbl{top:calc(var(--u)*44.2);left:calc(50% + var(--u)*8.2);transform:none;padding:calc(var(--u)*.3) calc(var(--u)*1);border-radius:99px;background:rgba(4,8,6,.72);border:1px solid rgba(233,196,106,.28)}
.uth-plbl:empty{display:none}
.uth-dlbl{top:calc(var(--u)*26.4);left:calc(50% + var(--u)*4.9);transform:none;font-size:max(calc(var(--u)*.85),9px);text-align:left;padding:calc(var(--u)*.25) calc(var(--u)*.8);border-radius:99px;background:rgba(4,8,6,.72);border:1px solid rgba(233,196,106,.28)}
.uth-dlbl:empty{display:none}
.uth-lbl .q{color:#8ff0b8}.uth-lbl .nq{color:#ffb38a}

/* 注圈 */
.uth-spots{position:absolute;inset:0;z-index:2;pointer-events:none}
.uth-spot{position:absolute;width:calc(var(--u)*5.4);height:calc(var(--u)*5.4);display:grid;place-items:center}
/* 和真台一样的注区排法(一个座位一组):三条奖在最上面 → 底注 = 盲注 并排 → 加注在最前面(最大)。放在牌的左边,右边是印在台面上的赔率表 */
.uth-spot.s-trips{left:calc(var(--u)*19.3);top:calc(var(--u)*27.4)}
.uth-spot.s-ante{left:calc(var(--u)*16.2);top:calc(var(--u)*33.2)}.uth-spot.s-blind{left:calc(var(--u)*22.4);top:calc(var(--u)*33.2)}
.uth-spot.s-play{left:calc(var(--u)*19);top:calc(var(--u)*39.2);width:calc(var(--u)*6);height:calc(var(--u)*6)}
.uth-spot .ring{position:absolute;inset:0;border-radius:50%;border:calc(var(--u)*.16) solid rgba(233,196,106,.55);box-shadow:inset 0 0 calc(var(--u)*1.2) rgba(0,0,0,.45),0 0 0 calc(var(--u)*.35) rgba(0,0,0,.18);background:radial-gradient(circle,rgba(255,255,255,.04),rgba(0,0,0,.18))}
.uth-spot.lit .ring{border-color:var(--gold);box-shadow:inset 0 0 calc(var(--u)*1.2) rgba(0,0,0,.45),0 0 calc(var(--u)*1.2) rgba(233,196,106,.35)}
.uth-spot em{position:absolute;top:calc(var(--u)*.45);font:800 max(calc(var(--u)*.62),8px) var(--ff);font-style:normal;letter-spacing:.14em;z-index:1;text-transform:uppercase;color:rgba(246,221,155,.85);white-space:nowrap}
.uth-eq{position:absolute;left:calc(var(--u)*21.62);top:calc(var(--u)*35.1);font:700 max(calc(var(--u)*1.2),11px) Georgia,serif;color:rgba(246,221,155,.7)}
.uth-spot .stack{position:relative;width:calc(var(--u)*3.3);height:calc(var(--u)*3.3);transform:translateY(calc(var(--u)*.45))}
.uth-spot .amt{position:absolute;z-index:2;bottom:calc(var(--u)*-.9);font:700 max(calc(var(--u)*.9),10px) var(--ff);font-variant-numeric:tabular-nums;color:#fff;background:rgba(0,0,0,.6);padding:0 calc(var(--u)*.5);border-radius:99px}
.uth-spot .pay{position:absolute;z-index:3;left:calc(100% + var(--u)*.2);top:calc(var(--u)*1.6);white-space:nowrap;font:800 max(calc(var(--u)*1.05),10px) var(--ff);text-decoration:none;opacity:0;transform:translateY(6px);transition:.3s}
.uth-spot .pay.on{opacity:1;transform:none}
.uth-spot .pay.w{color:#8ff0b8}.uth-spot .pay.l{color:#ff8b8b}.uth-spot .pay.p{color:#d9d4c6}
.uth-spot.push .stack{animation:uthPush .38s cubic-bezier(.2,.8,.3,1)}
@keyframes uthPush{from{transform:translateY(calc(var(--u)*9)) scale(1.15);opacity:.3}to{transform:none;opacity:1}}

/* 提示 / 两侧控制 */
.uth-msg{position:absolute;left:50%;top:calc(var(--u)*50.4);transform:translateX(-50%);font-size:max(calc(var(--u)*.95),10px);color:rgba(247,241,227,.78);white-space:nowrap;text-shadow:0 1px 6px #000}
.uth-left{position:absolute;left:calc(var(--u)*1.4 + env(safe-area-inset-left,0px));bottom:calc(var(--u)*1.6);z-index:5}
.uth-right{position:absolute;right:calc(var(--u)*1.4 + env(safe-area-inset-right,0px));bottom:calc(var(--u)*1.6);display:flex;flex-direction:column;align-items:stretch;gap:calc(var(--u)*.7);z-index:5;min-width:calc(var(--u)*15)}
.uth-pick{display:flex;flex-direction:column;gap:calc(var(--u)*.45);padding:calc(var(--u)*1) calc(var(--u)*1.2);border-radius:calc(var(--u)*1.2);background:rgba(4,10,8,.68);backdrop-filter:blur(6px);border:1px solid rgba(233,196,106,.3)}
.uth-pick i{font-style:normal;font-size:max(calc(var(--u)*.78),9px);letter-spacing:.14em;text-transform:uppercase;color:rgba(246,221,155,.8)}
.uth-chiprow{display:flex;gap:calc(var(--u)*.5)}
.uth-chiprow button{position:relative;width:calc(var(--u)*3.7);height:calc(var(--u)*3.7);min-width:30px;min-height:30px;padding:0;border-radius:50%;border:0;cursor:pointer;background:none;transition:transform .14s cubic-bezier(.3,.7,.3,1.4)}
.uth-chiprow.sm button{width:calc(var(--u)*3.1);height:calc(var(--u)*3.1);min-width:26px;min-height:26px}
.uth-chiprow button.on{transform:translateY(calc(var(--u)*-.55)) scale(1.06)}
.uth-chiprow button.on::after{content:"";position:absolute;inset:calc(var(--u)*-.28);border-radius:50%;border:calc(var(--u)*.16) solid var(--gold2);box-shadow:0 0 calc(var(--u)*1.1) rgba(246,221,155,.7);pointer-events:none}
.uth-chiprow button:not(.on){filter:brightness(.82) saturate(.9)}
.uth-chiprow button:hover{filter:none}
.uth-chiprow .off{display:grid;place-items:center;width:100%;height:100%;border-radius:50%;border:calc(var(--u)*.14) dashed rgba(246,221,155,.55);background:rgba(0,0,0,.35);color:var(--gold2);font:700 max(calc(var(--u)*.78),9px) var(--ff)}

/* 真筹码(德州扑克 / 闪电百家乐共用,图和其他游戏的筹码条一样)*/
.tchip{position:relative;display:block;width:100%;height:100%}
.tchip img{width:100%;height:100%;display:block;filter:drop-shadow(0 2px 3px rgba(0,0,0,.6))}
.tchip b{position:absolute;inset:0;display:grid;place-items:center;font:900 max(calc(var(--u)*1.02),10px)/1 var(--ff,"Segoe UI",sans-serif);color:#fff;letter-spacing:-.02em;text-shadow:0 1px 2px rgba(0,0,0,.85)}
.uth-chiprow.sm .tchip b{font-size:max(calc(var(--u)*.86),9px)}
.tchip.c-white b,.tchip.c-gold b{color:#3a2706;text-shadow:0 1px 0 rgba(255,255,255,.6)}
.tstk{position:absolute;left:0;bottom:calc(var(--i) * var(--u) * .38);width:100%;transform:scaleY(.82);transform-origin:50% 100%}
.tstk img{width:100%;display:block;filter:drop-shadow(0 calc(var(--u)*.14) 0 rgba(0,0,0,.55)) drop-shadow(0 1px 2px rgba(0,0,0,.5))}
.uth-btn{position:relative;display:flex;align-items:center;justify-content:center;gap:calc(var(--u)*.6);height:calc(var(--u)*3.6);padding:0 calc(var(--u)*1.6);border-radius:calc(var(--u)*1);border:0;cursor:pointer;
  font:800 max(calc(var(--u)*1.2),11px) var(--ff);letter-spacing:.04em;color:#1a1207;transition:transform .1s,filter .15s}
.uth-btn small{font-size:max(calc(var(--u)*.8),9px);font-weight:700;opacity:.75;font-variant-numeric:tabular-nums}
.uth-btn.gold{background:linear-gradient(180deg,#fbe7a6,#e1b54f 55%,#b8862e);box-shadow:0 calc(var(--u)*.35) 0 #7a5517,0 calc(var(--u)*.6) calc(var(--u)*1.4) rgba(0,0,0,.5)}
.uth-btn.big{height:calc(var(--u)*4.4);font-size:calc(var(--u)*1.45)}
.uth-btn.ghost{background:rgba(10,18,15,.75);color:var(--ink);border:1px solid rgba(247,241,227,.35)}
.uth-btn.red{background:linear-gradient(180deg,#5b1d1d,#3a1010);color:#ffd9d9;border:1px solid rgba(255,140,140,.4)}
.uth-btn:active{transform:translateY(2px)}
.uth-btn:disabled{filter:grayscale(.6) brightness(.7);cursor:default}
.uth-btn:focus-visible,.uth-tb:focus-visible,.uth-chiprow button:focus-visible{outline:2px solid #fff;outline-offset:2px}

/* 结果 */
.uth-result{position:absolute;left:50%;top:calc(var(--u)*19.6);transform:translate(-50%,-50%) scale(.85);z-index:6;opacity:0;pointer-events:none;transition:.35s cubic-bezier(.2,.8,.3,1.2);
  display:flex;flex-direction:row;align-items:center;gap:calc(var(--u)*1.1);white-space:nowrap;padding:calc(var(--u)*.45) calc(var(--u)*1.8);border-radius:99px;background:rgba(4,8,6,.84);border:1px solid rgba(233,196,106,.55);backdrop-filter:blur(8px);box-shadow:0 calc(var(--u)*.4) calc(var(--u)*1.4) rgba(0,0,0,.5)}
.uth-result.on{opacity:1;transform:translate(-50%,-50%) scale(1)}
.uth-stage:has(.uth-result.on) .uth-msg{opacity:0}
.uth-result i{font-style:normal;font:700 max(calc(var(--u)*1.1),11px) Georgia,serif;letter-spacing:.1em;color:var(--gold2);text-transform:uppercase}
.uth-result b{font:800 calc(var(--u)*2) var(--ff);font-variant-numeric:tabular-nums}
.uth-result span{font-size:max(calc(var(--u)*.85),9px);color:rgba(247,241,227,.7)}
.uth-result.win b{color:#8ff0b8;text-shadow:0 0 calc(var(--u)*1.5) rgba(143,240,184,.5)}.uth-result.lose b{color:#ff9b9b}.uth-result.push b{color:#eee}

/* 规则 */
.uth-ov{position:absolute;inset:0;z-index:9;background:rgba(0,0,0,.6);display:none;align-items:center;justify-content:center}
.uth-ov.on{display:flex}
.uth-rulesbox{width:calc(var(--u)*62);max-height:calc(var(--u)*50);overflow:auto;padding:calc(var(--u)*2) calc(var(--u)*2.4);border-radius:calc(var(--u)*1.4);background:linear-gradient(180deg,#0e1f18,#07110d);border:1px solid rgba(233,196,106,.45);font-size:max(calc(var(--u)*1),10px);line-height:1.55}
.uth-rulesbox h3{margin:0 0 calc(var(--u)*.6);font:700 calc(var(--u)*1.6) Georgia,serif;color:var(--gold2)}
.uth-rulesbox h4{margin:calc(var(--u)*.8) 0 calc(var(--u)*.4);font-size:max(calc(var(--u)*.95),10px);color:var(--gold)}
.uth-rulesbox ul{padding-left:calc(var(--u)*1.4)}
.uth-pt{display:grid;grid-template-columns:1fr 1fr;gap:calc(var(--u)*1.6)}
.uth-pt table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.uth-pt td{padding:calc(var(--u)*.3) 0;border-bottom:1px solid rgba(233,196,106,.15)}
.uth-pt td:last-child{text-align:right;color:var(--gold2);font-weight:700}
.uth-rulesbox .uth-btn{margin:calc(var(--u)*1.2) auto 0}
/* 大厅:测试中的门 */
#catBar .cat.cat-test{position:relative}
#catBar .cat.cat-test .cattag.test{background:linear-gradient(90deg,#ff7a59,#ffb35a) !important;color:#1a0d05 !important;border-color:transparent !important}
#catBar .cat.cat-test.locked .cart{filter:grayscale(.55) brightness(.55)}
#catBar .cat.cat-test .soon{display:none}
#catBar .cat.cat-test.locked .soon{display:flex;position:absolute;inset:0;z-index:3;align-items:center;justify-content:center;flex-direction:column;gap:4px;border-radius:inherit;background:rgba(0,0,0,.35);
  font:800 15px/1.1 Georgia,serif;letter-spacing:.12em;color:#f6dd9b;text-transform:uppercase;text-shadow:0 2px 8px #000;pointer-events:none}
#catBar .cat.cat-test.locked .soon small{font:600 11px "Segoe UI",sans-serif;letter-spacing:.06em;color:#fff;text-transform:none}
#catBar .cat.cat-test.locked .soon::before{content:"";width:22px;height:22px;background:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f6dd9b' stroke-width='2'%3E%3Crect x='5' y='11' width='14' height='10' rx='2'/%3E%3Cpath d='M8 11V8a4 4 0 0 1 8 0v3'/%3E%3C/svg%3E")}
@media (prefers-reduced-motion:reduce){.uth-card.deal,.uth-spot.push .stack{animation:none}.uth-card>div,.uth-result{transition:none}}

/* 印在台面上的赔率表(和真台一样;是赔率,不是房边)*/
.uth-felt{position:absolute;left:calc(var(--u)*70.5);top:calc(var(--u)*29);width:calc(var(--u)*18);display:grid;grid-template-columns:1fr 1fr;gap:calc(var(--u)*1.2);z-index:2;pointer-events:none;
  color:rgba(240,206,120,.78);font:700 max(calc(var(--u)*.66),8px)/1.45 var(--ff);text-shadow:0 1px 2px rgba(0,0,0,.5)}
.uth-felt h6{margin:0 0 calc(var(--u)*.25);font:800 max(calc(var(--u)*.72),8px) var(--ff);letter-spacing:.14em;color:rgba(246,221,155,.92);text-transform:uppercase;border-bottom:1px solid rgba(233,196,106,.35);padding-bottom:calc(var(--u)*.2)}
.uth-felt p{margin:0;display:flex;justify-content:space-between;gap:calc(var(--u)*.4);white-space:nowrap}
.uth-felt p b{font-weight:800;color:rgba(255,236,180,.9)}
/* 德州:下注时的筹码条放在最下面中间、横着一排(底注 | 三条奖),不挡左边的注区 */
.uth-stage:not(.lb-stage) .uth-left{left:50%;transform:translateX(-50%);bottom:calc(var(--u)*.8 + env(safe-area-inset-bottom,0px))}
.uth-stage:not(.lb-stage) .uth-pick{flex-direction:row;align-items:center;gap:calc(var(--u)*.7);padding:calc(var(--u)*.5) calc(var(--u)*1);border-radius:99px}
.uth-stage:not(.lb-stage) .uth-pick i{writing-mode:vertical-rl;font-size:max(calc(var(--u)*.7),8px);letter-spacing:.08em;line-height:1.1;max-height:calc(var(--u)*3.6)}
.uth-stage:not(.lb-stage) .uth-pick .sep{width:1px;align-self:stretch;background:rgba(233,196,106,.3);margin:0 calc(var(--u)*.3)}
.uth-stage:not(.lb-stage) .uth-chiprow{gap:calc(var(--u)*.35)}
.uth-stage:not(.lb-stage) .uth-chiprow button{width:calc(var(--u)*3.4);height:calc(var(--u)*3.4)}
.uth-stage:not(.lb-stage) .uth-chiprow.sm button{width:calc(var(--u)*2.9);height:calc(var(--u)*2.9)}
.uth-stage:not(.lb-stage) .uth-left{left:calc(50% - var(--u)*5)}
.uth-spot.s-ante .pay{left:auto;right:calc(100% + var(--u)*.2)}

/* ══ 注区精修:像印在台面上的金线圈 —— 外圈金线 + 内圈细线,字沿着圈顶弯着写;整组外面一圈金色双线的下注区 ══ */
.uth-zone{position:absolute;left:calc(var(--u)*14.3);top:calc(var(--u)*26.5);width:calc(var(--u)*15.4);height:calc(var(--u)*19.9);border-radius:calc(var(--u)*7.7) calc(var(--u)*7.7) calc(var(--u)*4) calc(var(--u)*4);
  border:1px solid rgba(233,196,106,.38);box-shadow:inset 0 0 0 calc(var(--u)*.35) rgba(0,0,0,.08),inset 0 0 0 calc(var(--u)*.42) rgba(233,196,106,.2),inset 0 0 calc(var(--u)*3) rgba(0,0,0,.28);
  background:radial-gradient(ellipse at 50% 40%,rgba(255,255,255,.035),rgba(0,0,0,.12))}
.uth-spot .ring{position:absolute;inset:0;width:100%;height:100%;overflow:visible;border:0;box-shadow:none;background:none;border-radius:0}
.uth-spot .ring .r0{fill:url(#none);fill:rgba(0,0,0,.22)}
.uth-spot .ring .r1{fill:none;stroke:#d8b25a;stroke-width:2.4;filter:drop-shadow(0 0 1.5px rgba(0,0,0,.6))}
.uth-spot .ring .r2{fill:none;stroke:rgba(233,196,106,.5);stroke-width:.9;stroke-dasharray:1.5 2.2}
.uth-spot .ring text{fill:rgba(246,221,155,.95);font:800 11px "Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;letter-spacing:2px;text-transform:uppercase}
.uth-spot.s-play .ring .r1{stroke-width:3.2;stroke:#e9c46a}
.uth-spot.s-play .ring .r0{fill:rgba(233,196,106,.08)}
.uth-spot.lit .ring .r1{stroke:#fbe7a6;filter:drop-shadow(0 0 4px rgba(246,221,155,.85))}
.uth-spot em{display:none}
.uth-spot .stack{transform:translateY(calc(var(--u)*.55))}
.uth-spot .amt{background:linear-gradient(180deg,#fbe7a6,#d8ad4c);color:#1a1207;font-weight:900;border:1px solid rgba(0,0,0,.35);bottom:calc(var(--u)*-1);box-shadow:0 1px 3px rgba(0,0,0,.5)}
.uth-spot .pay{padding:calc(var(--u)*.08) calc(var(--u)*.55);border-radius:99px;background:rgba(4,10,8,.82);border:1px solid currentColor;font-size:max(calc(var(--u)*.85),10px);top:calc(var(--u)*1.75)}
.uth-eq{font:700 max(calc(var(--u)*1.3),12px) Georgia,serif;color:#e9c46a;text-shadow:0 0 calc(var(--u)*.5) rgba(233,196,106,.6)}
.uth-spot.lit .ring{box-shadow:none;border:0}
/* 审美修:筹码条的小标题改成横写两行(竖排的「底注 = 盲注」会挤成乱码) */
.uth-stage:not(.lb-stage) .uth-pick i{writing-mode:horizontal-tb;max-height:none;max-width:calc(var(--u)*3.2);text-align:center;font-size:max(calc(var(--u)*.68),9px);line-height:1.25;letter-spacing:.04em;white-space:normal}
.uth-felt{font-size:max(calc(var(--u)*.74),9px)}
.uth-felt h6{font-size:max(calc(var(--u)*.8),9px)}
.uth-btn.gold:disabled{filter:none;opacity:.42}

/* ══════════ BUILD 216 画质升级:新 GPT 牌桌(台面上印着金线注区 / 牌位 / 赔率牌),所有东西对准图上的位置 ══════════
   坐标单位 = 牌桌宽的 1%(图 1672×941 → 100 × 56.25 份) */
#uthStage .uth-zone,#uthStage .uth-spot .ring,#uthStage .uth-eq{display:none}
#uthStage .uth-slot{visibility:hidden}
#uthStage .uth-card.ghost{opacity:0}
/* 牌位:每一排都按台面的透视微微往后倒 */
#uthStage .uth-row{transform:translateX(-50%) perspective(calc(var(--u)*60)) rotateX(22deg);transform-origin:50% 100%}
#uthStage .uth-dcards{top:calc(var(--u)*24.2);gap:calc(var(--u)*1.45)}
#uthStage .uth-dcards .uth-card{width:calc(var(--u)*4.2)}
#uthStage .uth-board{top:calc(var(--u)*29.15);gap:calc(var(--u)*1.35)}
#uthStage .uth-board .uth-card,#uthStage .uth-slot{width:calc(var(--u)*5.6)}
#uthStage .uth-pcards{top:calc(var(--u)*37.6);gap:calc(var(--u)*1.9)}
#uthStage .uth-pcards .uth-card{width:calc(var(--u)*6.6)}
#uthStage .uth-card>div{box-shadow:0 calc(var(--u)*.5) calc(var(--u)*1) rgba(0,0,0,.55),0 0 0 1px rgba(0,0,0,.25)}
#uthStage .uth-card.best>div{box-shadow:0 0 0 calc(var(--u)*.2) #f6dd9b,0 0 calc(var(--u)*1.8) rgba(246,221,155,.85),0 calc(var(--u)*.5) calc(var(--u)*1) rgba(0,0,0,.5)}
/* 牌型字 */
#uthStage .uth-dlbl{top:calc(var(--u)*27.1);left:calc(var(--u)*56.6)}
#uthStage .uth-plbl{top:calc(var(--u)*42.6);left:calc(var(--u)*58.6)}
#uthStage .uth-msg{top:calc(var(--u)*47.8)}
/* 注区:对准台面上印好的四个金圈(椭圆,透视)*/
#uthStage .uth-spot{transform:translate(-50%,-50%)}
#uthStage .uth-spot.s-trips{left:calc(var(--u)*20.6);top:calc(var(--u)*29.9);width:calc(var(--u)*6.5);height:calc(var(--u)*3.6)}
#uthStage .uth-spot.s-ante{left:calc(var(--u)*13.2);top:calc(var(--u)*33.85);width:calc(var(--u)*7.4);height:calc(var(--u)*3.9)}
#uthStage .uth-spot.s-blind{left:calc(var(--u)*24.6);top:calc(var(--u)*33.85);width:calc(var(--u)*6.8);height:calc(var(--u)*3.9)}
#uthStage .uth-spot.s-play{left:calc(var(--u)*17.1);top:calc(var(--u)*38.45);width:calc(var(--u)*9);height:calc(var(--u)*5.1)}
#uthStage .uth-spot em{display:block;position:absolute;top:auto;bottom:calc(100% + var(--u)*.05);left:50%;transform:translateX(-50%);font:800 max(calc(var(--u)*.62),8px) var(--ff);letter-spacing:.2em;color:rgba(250,226,160,.92);text-shadow:0 1px 3px rgba(0,0,0,.7);white-space:nowrap}
#uthStage .uth-spot.s-ante em,#uthStage .uth-spot.s-blind em,#uthStage .uth-spot.s-play em{bottom:auto;top:calc(100% + var(--u)*.1)}
#uthStage .uth-spot.s-play em{top:calc(100% + var(--u)*.05)}
#uthStage .uth-spot::after{content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;transition:box-shadow .25s}
#uthStage .uth-spot.lit::after{box-shadow:0 0 calc(var(--u)*1.1) rgba(246,221,155,.55),inset 0 0 calc(var(--u)*1.1) rgba(246,221,155,.35)}
#uthStage .uth-spot .stack{width:calc(var(--u)*2.9);height:calc(var(--u)*2.9);transform:translateY(calc(var(--u)*-.35))}
#uthStage .uth-spot.s-play .stack{width:calc(var(--u)*3.4);height:calc(var(--u)*3.4)}
#uthStage .uth-spot .amt{bottom:auto;top:50%;left:calc(100% - var(--u)*1.4);transform:translateY(-10%)}
#uthStage .uth-spot .pay{left:50%;top:auto;bottom:calc(100% + var(--u)*1.1);transform:translateX(-50%)}
#uthStage .uth-spot.s-trips .pay{bottom:auto;top:calc(100% - var(--u)*.2);left:calc(100% + var(--u)*.3);transform:none}
/* 赔率牌:放进台面右边印好的金框里;两张表各两栏,行数少一半 */
#uthStage .uth-felt{left:calc(var(--u)*73.3);top:calc(var(--u)*31);width:calc(var(--u)*20.6);height:calc(var(--u)*6.1);gap:calc(var(--u)*1.2);font:700 calc(var(--u)*.56)/1.32 var(--ff);color:rgba(246,221,160,.9)}
#uthStage .uth-felt h6{font:800 calc(var(--u)*.62) var(--ff);letter-spacing:.18em;margin:0 0 calc(var(--u)*.2);padding-bottom:calc(var(--u)*.15);text-align:center}
#uthStage .uth-felt .tb{display:grid;grid-template-columns:1fr 1fr;column-gap:calc(var(--u)*.7)}
#uthStage .uth-felt p{margin:0}
#uthStage .uth-felt p b{color:#ffe6a8}
#uthStage.tiny .uth-felt{font-size:max(calc(var(--u)*.56),7px)}
#uthStage.tiny .uth-felt h6{font-size:max(calc(var(--u)*.62),7.5px)}
@media (prefers-reduced-motion:reduce){#uthStage .uth-row{transform:translateX(-50%)}}

#uthStage .uth-felt{font:700 calc(var(--u)*.7)/1.3 var(--ff);gap:calc(var(--u)*1.6);left:calc(var(--u)*73.6);width:calc(var(--u)*20)}
#uthStage .uth-felt h6{font-size:calc(var(--u)*.74)}
#uthStage .uth-felt .tb{column-gap:calc(var(--u)*.9)}
#uthStage .uth-felt p{gap:calc(var(--u)*.3)}
#uthStage .uth-spot .pay{bottom:auto;top:50%;transform:translateY(-50%)}
#uthStage .uth-spot.s-ante .pay{left:auto;right:calc(100% + var(--u)*.2)}
#uthStage .uth-spot.s-blind .pay,#uthStage .uth-spot.s-play .pay{left:calc(100% + var(--u)*.2);right:auto}
#uthStage .uth-spot.s-blind .pay{top:calc(50% + var(--u)*1.8)}
#uthStage .uth-spot.s-trips .pay{top:50%;left:calc(100% + var(--u)*.2)}
#uthStage .uth-spot.s-ante .amt{left:auto;right:calc(100% - var(--u)*1.6)}
#uthStage .uth-felt{gap:calc(var(--u)*.9);font-size:calc(var(--u)*.64);left:calc(var(--u)*73.4);width:calc(var(--u)*20.4)}
#uthStage .uth-felt .tb{column-gap:calc(var(--u)*.6)}
#uthStage .uth-spot .amt,#uthStage .uth-spot.s-ante .amt{left:calc(50% + var(--u)*1.25);right:auto;top:52%;bottom:auto;transform:none}
/* BUILD 216:21 点牌桌左上角加「‹ 大厅」(以前只有菜单里的「离开牌桌」)*/
#app #tableview > .gh{left:14px!important;right:16px!important;width:auto!important;justify-content:space-between;pointer-events:none}
#app #tableview > .gh > *{pointer-events:auto}
#app #tableview > .gh .ghb{display:inline-flex!important;height:30px;padding:0 12px 0 8px;font-size:12px;border-radius:99px;background:rgba(10,13,28,.72);border:1px solid rgba(233,196,106,.45);color:#f7f1e3;align-items:center;gap:4px}
#app #tableview > .gh .ghb .chev{font-size:18px;line-height:1;margin-top:-2px}

#catBar .cat:not(.locked) .soon{display:none!important}
#catBar .cat:not(.cat-test) .cattag.test{background:linear-gradient(90deg,#f6dd9b,#e1b54f)!important;color:#1a1207!important}
