
*{margin:0;padding:0;box-sizing:border-box}
/* ⭐ 禁止长按弹菜单（iOS 长按图片弹「存储图像」）+ 禁止选中/拖拽 */
*{
  -webkit-touch-callout:none;
  -webkit-user-select:none;
  user-select:none;
  -webkit-user-drag:none;
}
img{
  -webkit-touch-callout:none;
  -webkit-user-drag:none;
  -webkit-tap-highlight-color:transparent;
  pointer-events:auto;
}
/* ⭐ 输入框恢复可选/可聚焦（否则 user-select:none 会导致无法点击输入） */
input,textarea{
  -webkit-user-select:text;
  user-select:text;
  -webkit-touch-callout:default;
}
/* ⭐ 刘海屏/安全区适配：body 加 padding，使 #app 及其内部 .view 自动避开刘海 */
body{padding:0;}
html,body{width:100%;height:100%;overflow:hidden;font-family:'PingFang SC','Microsoft YaHei',Inter,sans-serif;
  -webkit-text-size-adjust:100%;text-size-adjust:100%;-webkit-user-select:none;user-select:none;touch-action:manipulation;background:#0a1a1a}
#app{width:100%;height:100%;position:relative;overflow:hidden}

/* Toast 通知栏 */
#app-toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%);padding:12px 32px;
  background:rgba(0,0,0,.75);color:#fff;border-radius:8px;font:16px/22px Inter,sans-serif;z-index:9999;
  opacity:0;transition:opacity .2s;pointer-events:none}
#app-toast.show{opacity:1}

/* 视图容器：默认隐藏，仅当前视图可见 */
.view{position:absolute;left:0;top:0;width:100%;height:100%;display:none}
.view.active{display:block}

/* ===== Login 登录视图 — 900x1600 设计稿等比缩放 ===== */
.login-wrapper{position:fixed;inset:0;overflow:hidden;background:#C6F2F2;touch-action:manipulation}
.login-canvas{position:relative;width:900px;height:1600px;overflow:hidden;transform-origin:top left}
.login-bg{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:cover;z-index:0}
.login-poker{position:absolute;width:300px;height:300px;left:calc(50% - 150px);top:200px;z-index:2;object-fit:contain;pointer-events:none}
.login-title{position:absolute;width:291px;height:160px;left:305px;top:500px;object-fit:contain;z-index:2;pointer-events:none}
.login-tab-bar{position:absolute;width:720px;height:88px;left:calc(50% - 360px);top:660px;background:#fff;border-radius:12px;z-index:5;display:flex;align-items:center}
.login-tab{width:240px;height:90px;border:none;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:5px;font:32px/40px Inter,sans-serif;color:#020202;opacity:0.65;transition:opacity .2s,color .2s}
.login-tab.active{color:#00AA88;opacity:1}
.login-input-section{position:absolute;left:230px;width:440px;z-index:5}
.login-input-section.cred-field{top:750px;height:156px}
.login-input-section.pwd-field{top:814px;height:156px}
.login-input-wrap{position:absolute;width:400px;height:48px;left:calc(50% - 200px);top:20px}
.login-input-wrap input{box-sizing:border-box;width:100%;height:100%;background:#fff;border:1px solid #ccc;border-radius:8px;outline:none;padding:0 20px;font:32px/40px Inter,sans-serif;color:#000;transition:border-color .2s}
.login-input-wrap input::placeholder{color:#999}
.login-input-wrap input:focus{border-color:#00AA88}
.login-input-wrap input.input-error{border-color:#e64545}
.login-field-err{position:absolute;left:230px;top:718px;width:440px;font:20px/28px Inter,sans-serif;color:#e64545;z-index:5;min-height:28px;padding-left:4px;pointer-events:none}
.login-forgot{position:absolute;left:230px;top:908px;width:128px;height:40px;font:32px/40px Inter,sans-serif;text-align:center;color:#00AA88;cursor:pointer;z-index:5}
.login-err-msg{position:absolute;left:230px;top:958px;width:440px;font:24px/32px Inter,sans-serif;text-align:center;color:#e64545;z-index:5;min-height:32px}
.login-btn-frame{position:absolute;width:640px;height:300px;left:130px;top:1061px;z-index:5}
.login-btn{position:absolute;width:600px;height:120px;left:20px;top:20px;border:none;border-radius:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .3s}
.login-btn.disabled{background:#ccc;cursor:default}
.login-btn.active{background:#00AA88}
.login-btn-text{font:32px/40px Inter,sans-serif;color:#fff;pointer-events:none}
.login-register{position:absolute;width:128px;height:40px;left:calc(50% - 64px);top:1248px;font:32px/40px Inter,sans-serif;text-align:center;color:#00AA88;cursor:pointer;z-index:5}

/* ===== Lobby 大厅视图 — 900x1600 等比缩放 ===== */
.lobby-wrapper{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;background:#C6F2F2}
.lobby-canvas{position:relative;width:900px;height:1600px;overflow:hidden;transform-origin:top left}
.lobby-bg{position:absolute;left:0;top:0;width:100%;height:100%;
  background:linear-gradient(162.44deg,#C6F2F2 0%,#FFFFFF 55.77%);z-index:0}
/* 创建/加入游戏卡 */
.lobby-card{position:absolute;width:400px;height:400px;top:80px;border-radius:80px;
  box-shadow:0px 12px 18px rgba(0,0,0,0.25);z-index:3;cursor:pointer;transition:transform .15s}
.lobby-card:active{transform:scale(0.97)}
.lobby-card.lc-create{left:40px;background:linear-gradient(270.17deg,#F06868 0.15%,#60FFFF 99.85%)}
.lobby-card.lc-join{left:478px;background:linear-gradient(270.14deg,#FFD761 24.58%,#60FFFF 99.88%)}
.lobby-card-icon{position:absolute;width:300px;height:300px;top:-64px;object-fit:contain;pointer-events:none;
  filter:drop-shadow(0px 12px 18px rgba(0,0,0,0.25))}
.lobby-card.lc-create .lobby-card-icon{left:148px}
.lobby-card.lc-join .lobby-card-icon{left:136px;filter:none}
.lobby-card-title{position:absolute;width:192px;height:58px;font:600 48px/58px Inter,sans-serif;color:#FFF;pointer-events:none}
.lobby-card.lc-create .lobby-card-title{left:32px;top:236px}
.lobby-card.lc-join .lobby-card-title{left:45px;top:236px}
.lobby-card-sub{position:absolute;height:44px;font:600 36px/44px Inter,sans-serif;color:#FFF;pointer-events:none;white-space:nowrap}
.lobby-card.lc-create .lobby-card-sub{width:216px;left:32px;top:294px}
.lobby-card.lc-join .lobby-card-sub{width:288px;left:45px;top:294px}
/* 房间列表 */
.lobby-room-list{position:absolute;width:838px;height:810px;left:40px;top:519px;z-index:3}
.lobby-room-card{position:absolute;width:702px;height:187px;left:64px;
  background:#FCA2A2;border-radius:25px;cursor:pointer;transition:transform .15s}
.lobby-room-card:active{transform:scale(0.98)}
.lobby-room-card.slot-0{top:70px}
.lobby-room-card.slot-1{top:280px}
.lobby-room-card.slot-2{top:490px}
.lobby-room-row{position:absolute;width:320px;height:40px;left:64px;
  background:#FFFBFB;display:flex;align-items:center;justify-content:center}
.lobby-room-row.row-0{top:19px}
.lobby-room-row.row-1{top:76px}
.lobby-room-row.row-2{top:133px}
.lobby-room-row span{font:600 32px/39px Inter,PingFang SC,Microsoft YaHei,sans-serif;
  color:rgba(153,153,153,0.6);white-space:nowrap}
.lobby-room-row.row-0 span{width:192px}
.lobby-room-row.row-1 span{width:224px}
.lobby-room-row.row-2 span{width:288px}
.lobby-room-empty{position:absolute;width:144px;height:44px;left:calc(50% - 72px);top:calc(50% - 22px);
  font:600 36px/44px Inter,sans-serif;color:rgba(153,153,153,0.6);text-align:center;pointer-events:none}
/* 底部 Tab 栏 */
.lobby-tabbar{position:absolute;width:702px;height:96px;left:calc(50% - 351px + 5px);bottom:30px;
  background:#000;border-radius:25px;z-index:10}
.lobby-tab{position:absolute;width:160px;height:60px;top:calc(50% - 30px);border-radius:80px;
  display:flex;align-items:center;justify-content:center;cursor:pointer}
.lobby-tab.active{background:#00AA88}
.lobby-tab span{font:600 40px/48px Inter,sans-serif;color:#FFF;pointer-events:none}
.lobby-tab-career{left:calc(50% - 80px - 214px)}
.lobby-tab-lobby{left:calc(50% - 80px)}
.lobby-tab-me{left:calc(50% - 80px + 214px)}
/* 加入弹窗 — 6 位数字键盘（不用 iframe，直接内联） */
.join-overlay{position:fixed;left:0;top:0;width:100%;height:100%;background:rgba(0,0,0,.4);z-index:100;
  display:none;align-items:flex-end;justify-content:center}
.join-overlay.show{display:flex}
.join-sheet{position:relative;width:100%;max-width:600px;height:auto;background:#fff;
  border-radius:60px 60px 0 0;padding:24px 20px 40px}
.join-sheet-title{font:600 36px/44px Inter,sans-serif;text-align:center;color:#333;margin-bottom:16px}
.join-sheet-code{display:flex;justify-content:center;gap:12px;margin-bottom:24px}
.join-sheet-code .digit{width:48px;height:56px;border:2px solid #ddd;border-radius:10px;
  font:600 36px/44px Inter,sans-serif;text-align:center;line-height:56px;color:#333}
.join-sheet-code .digit.filled{border-color:#00AA88;color:#00AA88}
.join-sheet-keys{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.join-sheet-key{height:56px;border:none;border-radius:12px;background:#f0f0f0;
  font:600 32px/40px Inter,sans-serif;color:#333;cursor:pointer;transition:background .15s}
.join-sheet-key:active{background:#ddd}
.join-sheet-key.key-ok{background:#00AA88;color:#fff}
.join-sheet-key.key-ok:active{background:#008c6e}
.join-sheet-key.key-del{background:#e0e0e0;color:#666}
.join-sheet-close{position:absolute;right:20px;top:24px;width:40px;height:40px;border:none;background:transparent;
  font:400 40px/40px Inter,sans-serif;color:#999;cursor:pointer}

/* ===== CreateRoom 创建房间 — 900x1600 等比缩放 ===== */
.cr-wrapper{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;background:#C6F2F2}
.cr-canvas{position:relative;width:900px;height:1600px;overflow:hidden;transform-origin:top left;
  background:linear-gradient(170.95deg,#C6F2F2 .54%,#FFFFFF 28.58%)}
.cr-back{position:absolute;left:50px;top:80px;font:400 40px/48px Inter,sans-serif;color:#000;opacity:.5;cursor:pointer;z-index:5}
.cr-title{position:absolute;left:160px;top:80px;font:400 40px/50px Jaro,sans-serif;color:#000;z-index:5}
.cr-section-title{position:absolute;left:90px;top:calc(50% - 19.5px - 576.5px);font:400 32px/39px Inter,sans-serif;color:#000;z-index:3}
/* 前注/时长选择框 */
.cr-frame{position:absolute;width:678px;height:138px;left:calc(50% - 339px - 21px);
  border:1px solid #27B99B;border-radius:18px;overflow:visible}
#cr-fa{top:271px;z-index:1}
#cr-fd{top:443px;z-index:0}
.cr-lbl{position:absolute;font:400 32px/39px Inter,sans-serif;color:#000}
.cr-lbl-ante{left:40px;top:calc(50% - 19.5px + .5px)}
.cr-lbl-dur{left:40px;top:calc(50% - 19.5px + .5px);width:160px}
/* 档位 chip */
.cr-chip{position:absolute;display:flex;align-items:center;justify-content:center;
  font:400 32px/39px Inter,sans-serif;cursor:pointer;transition:color .15s;
  color:rgba(153,153,153,.6);border:1px dashed #FFF;border-radius:5px}
.cr-chip:active{transform:scale(.95)}
.cr-chip.on{color:#27B99B}
/* 分隔竖线 */
.cr-div{position:absolute;width:1px;height:20px;background:#27B99B;top:calc(50% - 10px);pointer-events:none}
/* 提交按钮 */
.cr-submit{position:absolute;width:650px;height:92px;left:calc(50% - 325px);top:1460px;
  background:#73D3C1;border-radius:28px;border:none;cursor:pointer;
  font:400 40px/48px Inter,sans-serif;color:#FFF}
.cr-submit:active{opacity:.7}

/* ===== Stats 生涯视图 — 900x1600 等比缩放 ===== */
.sx-wrapper{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;background:#C6F2F2}
.sx-canvas{position:relative;width:900px;height:1600px;overflow:hidden;transform-origin:top left}
.sx-bg{position:absolute;left:0;top:0;width:100%;height:100%;
  background:linear-gradient(170.95deg,#C6F2F2 0.54%,#FFFFFF 28.58%);z-index:0}
.sx-title{position:absolute;width:80px;height:48px;left:50px;top:80px;
  font:400 40px/48px Inter,sans-serif;color:#000}
/* 统计卡 */
.sx-stats-card{box-sizing:border-box;position:absolute;width:777px;height:253px;
  left:61px;top:180px;border:1px solid rgba(153,153,153,0.6);border-radius:25px}
.sx-time-tab{position:absolute;top:25px;font:400 32px/39px Inter,sans-serif;color:#000;cursor:pointer;white-space:nowrap}
.sx-time-tab.active{color:#00AA88;font-weight:600}
.sx-tab-day{left:48px;width:64px}
.sx-tab-week{left:192px;width:51px}
.sx-tab-month{left:323px;width:73px}
.sx-tab-quarter{left:476px;width:72px}
.sx-time-line{position:absolute;width:1px;height:31px;top:29px;background:rgba(153,153,153,0.6)}
.sx-line1{left:151px}.sx-line2{left:291px}.sx-line3{left:445px}
.sx-profit{position:absolute;width:160px;height:50px;left:48px;top:127px;
  font:400 40px/50px Jaro,Inter,sans-serif;color:#00AA88;font-weight:700}
.sx-rounds{position:absolute;width:192px;height:40px;left:246px;top:132px;
  font:400 32px/40px Jaro,Inter,sans-serif;color:rgba(153,153,153,0.6)}
.sx-pnl{position:absolute;width:40px;height:25px;left:48px;top:187px;
  font:400 20px/25px Jaro,Inter,sans-serif;color:rgba(153,153,153,0.6)}
.sx-record{position:absolute;width:702px;height:187px;left:calc(50% - 351px);
  background:#FCA2A2;border-radius:25px}
.sx-row{position:absolute;width:320px;height:40px;left:64px;background:#FFFBFB;
  display:flex;align-items:center;justify-content:center}
.sx-row.row-0{top:19px}.sx-row.row-1{top:76px}.sx-row.row-2{top:133px}
.sx-row span{font:600 32px/39px Inter,sans-serif;color:rgba(153,153,153,0.6);white-space:nowrap}
.sx-amount{position:absolute;width:144px;height:44px;left:502px;top:72px;
  font:600 36px/44px Inter,sans-serif;color:#00AA88;text-align:center}
.sx-amount.lose{color:#E02C2C}
.sx-review-btn{position:absolute;width:110px;height:44px;left:518px;top:128px;
  border:1px solid rgba(0,170,136,.7);border-radius:22px;color:#00AA88;
  font:600 26px/44px Inter,sans-serif;text-align:center;cursor:pointer;background:rgba(255,255,255,.6)}
.sx-profit-btn{position:absolute;width:110px;height:44px;left:392px;top:128px;
  border:1px solid rgba(255,193,7,.75);border-radius:22px;color:#B8860B;
  font:600 24px/44px Inter,sans-serif;text-align:center;cursor:pointer;background:rgba(255,248,220,.72)}
.sx-review-btn:active{background:rgba(0,170,136,.15)}
.sx-empty{position:absolute;width:144px;height:44px;
  left:calc(50% - 72px);top:calc(50% - 22px);
  font:600 36px/44px Inter,sans-serif;color:rgba(153,153,153,0.6);text-align:center}
.sx-tabbar{position:absolute;width:702px;height:96px;left:calc(50% - 351px + 5px);bottom:30px;
  background:#000;border-radius:25px}
.sx-tab{position:absolute;width:160px;height:60px;top:calc(50% - 30px);
  border-radius:80px;display:flex;align-items:center;justify-content:center;cursor:pointer}
.sx-tab.active{background:#00AA88}
.sx-tab span{font:600 40px/48px Inter,sans-serif;color:#FFF;pointer-events:none}
.sx-tab-career{left:calc(50% - 80px - 214px)}
.sx-tab-lobby{left:calc(50% - 80px)}
.sx-tab-me{left:calc(50% - 80px + 214px)}

/* ===== Me 我的视图 — 900x1600 等比缩放 ===== */
.me-wrapper{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;background:#C6F2F2}
.me-canvas{position:relative;width:900px;height:1600px;overflow:hidden;transform-origin:top left}
.me-bg{position:absolute;left:0;top:0;width:100%;height:100%;
  background:linear-gradient(170.95deg,#C6F2F2 0.54%,#FFFFFF 28.58%);z-index:0}
.me-back{position:absolute;width:80px;height:48px;left:50px;top:80px;
  font:400 40px/48px Inter,sans-serif;color:#000;opacity:0.5;cursor:pointer}
.me-page-title{position:absolute;width:80px;height:48px;left:160px;top:80px;
  font:400 40px/48px Inter,sans-serif;color:#000}
.me-avatar{position:absolute;width:249px;height:249px;left:312px;top:225px;
  background:#D9D9D9;border-radius:50%;overflow:hidden;cursor:pointer}
.me-avatar img{width:100%;height:100%;object-fit:cover}
.me-avatar-text{position:absolute;width:80px;height:48px;left:397px;top:311px;
  font:400 40px/48px Inter,sans-serif;color:#000;text-align:center}
.me-id-row{position:absolute;width:155px;height:40px;left:calc(50% - 77px + 0.5px);top:480px}
.me-id-dot{position:absolute;left:0;right:83.87%;top:25%;bottom:12.5%;
  background:#B0AEAE;border-radius:50%}
.me-id-label{position:absolute;left:4.52%;right:87.74%;top:35%;bottom:20%;
  font:400 14px/18px Jaro,Inter,sans-serif;color:#FFF}
.me-id-value{position:absolute;left:18.71%;right:0;top:0;bottom:0;
  font:400 32px/40px Jaro,Inter,sans-serif;color:#B0AEAE}
.me-field{box-sizing:border-box;position:absolute;width:836px;height:96px;
  left:calc(50% - 418px - 13px);background:#FFF;border:1px solid #E8EAEA;border-radius:24px}
.me-field input{position:absolute;width:100%;height:100%;left:0;top:0;background:transparent;
  border:none;outline:none;padding:0 60px;font:400 40px/48px Inter,sans-serif;color:#000;
  box-sizing:border-box}
.me-field input::placeholder{color:#999}
.me-hint{position:absolute;width:597px;height:39px;
  left:calc(50% - 298.5px - 101.5px);top:972px;
  font:400 32px/39px Inter,sans-serif;color:rgba(153,153,153,0.6)}
.me-updated-time{position:absolute;width:597px;height:39px;
  left:calc(50% - 298.5px - 101.5px);top:1026px;
  font:400 28px/34px Inter,sans-serif;color:rgba(153,153,153,0.6)}
.me-submit{position:absolute;width:650px;height:92px;left:calc(50% - 325px);top:1460px;
  background:#73D3C1;border:none;border-radius:28px;cursor:pointer;
  font:400 40px/48px Inter,sans-serif;color:#FFF}
.me-submit:active{opacity:0.7}
.me-submit.disabled{background:#ccc;pointer-events:none}
.me-avatar-upload{display:none}
/* 头像选择器 overlay/panel */
.av-overlay{position:fixed;left:0;top:0;width:100%;height:100%;background:rgba(0,0,0,.5);z-index:60;display:none}
.av-overlay.show{display:block}
.av-panel{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%) scale(1);width:640px;max-height:80vh;overflow:auto;background:#fff;border-radius:24px;padding:30px;z-index:61;display:none;box-sizing:border-box}
.av-panel.show{display:block}
.av-panel-title{font:600 30px/36px Inter,sans-serif;color:#222;text-align:center;margin-bottom:20px}
.av-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.av-item{width:100%;aspect-ratio:1/1;border-radius:50%;overflow:hidden;cursor:pointer;border:3px solid transparent;box-sizing:border-box}
.av-item img{width:100%;height:100%;object-fit:cover;display:block}
.av-item.selected{border-color:#00AA88}
.av-custom{width:100%;height:60px;line-height:60px;text-align:center;background:#73D3C1;color:#fff;border-radius:18px;font:500 28px/60px Inter,sans-serif;margin-top:20px;cursor:pointer}
.av-custom:active{opacity:.8}
.av-close{width:100%;height:56px;line-height:56px;text-align:center;color:#999;font:400 26px/56px Inter,sans-serif;margin-top:10px;cursor:pointer}
/* 房卡余额卡片 */
.me-card-bal{position:absolute;width:836px;height:150px;left:calc(50% - 418px - 13px);top:540px;
  background:linear-gradient(135deg,#2b3a55,#1e2738);border:1px solid #3d4a63;border-radius:24px;
  display:flex;flex-direction:column;justify-content:center;padding:0 50px;cursor:pointer;box-sizing:border-box}
.me-card-bal:active{opacity:.85}
.me-card-bal-label{font:400 26px/30px Inter,sans-serif;color:#8a94a8}
.me-card-bal-num{font:700 56px/60px Inter,sans-serif;color:#ffd700;margin:2px 0}
.me-card-bal-unit{font:400 26px/30px Inter,sans-serif;color:#ffd700;margin-left:8px}
.me-card-bal-tip{position:absolute;right:44px;top:50%;transform:translateY(-50%);font:400 28px/32px Inter,sans-serif;color:#3d7bff}

/* ===== Register 注册视图 — 900x1600 等比缩放 ===== */
.reg-wrapper{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;background:#C6F2F2}
.reg-canvas{position:relative;width:900px;height:1600px;overflow:hidden;transform-origin:top left;
  background:linear-gradient(170.95deg,#C6F2F2 .54%,#FFFFFF 28.58%)}
.reg-back{position:absolute;width:80px;height:48px;left:50px;top:80px;
  font:400 40px/48px Inter,sans-serif;color:#000;opacity:.5;cursor:pointer;z-index:5}
.reg-title{position:absolute;width:80px;height:48px;left:160px;top:80px;
  font:400 40px/48px Inter,sans-serif;color:#000;z-index:5}
/* 注册字段 — 6 个输入框 836×96 */
.reg-field{box-sizing:border-box;position:absolute;width:836px;height:96px;
  left:calc(50% - 418px);background:#FFF;border:1px solid #E8EAEA;border-radius:24px}
.reg-field input{border:none;outline:none;background:transparent;font:400 40px/48px Inter,sans-serif;color:#000;
  position:absolute;height:48px;left:60px;top:calc(50% - 24px)}
.reg-field input::placeholder{color:#999}
.reg-rbtn{position:absolute;height:48px;right:11px;top:calc(50% - 24px);
  font:400 40px/48px Inter,sans-serif;color:#27B99B;cursor:pointer;z-index:20;white-space:nowrap}
.reg-rbtn:active{opacity:.5}
.reg-captcha{position:absolute;width:210px;height:96px;left:615px;top:calc(50% - 48px + 1px);z-index:15;
  display:flex;align-items:center;justify-content:center;
  font:400 36px Inter,sans-serif;letter-spacing:4px;color:#666;pointer-events:none}
.reg-countdown{position:absolute;width:210px;height:96px;left:626px;top:0;z-index:25;
  display:none;text-align:center;line-height:96px;
  font:400 36px Inter,sans-serif;letter-spacing:2px;color:#27B99B;pointer-events:none}
/* 注册页提示文本 */
.reg-hint{position:absolute;font:400 32px/39px Inter,sans-serif;color:rgba(153,153,153,.6)}
.reg-hint-1{width:294px;height:39px;left:90px;top:1088px}
.reg-hint-2{width:730px;height:39px;left:calc(50% - 365px - 5px);top:1215px}
.reg-hint-3{width:402px;height:39px;left:calc(50% - 201px - 169px);top:1285px}
.reg-hint-4{width:626px;height:39px;left:calc(50% - 313px - 57px);top:1355px}
.reg-submit{position:absolute;width:650px;height:92px;left:calc(50% - 325px);top:1460px;
  background:#73D3C1;border-radius:28px;border:none;cursor:pointer;
  font:400 40px/48px Inter,sans-serif;color:#FFF}
.reg-submit:active{opacity:.7}

/* ===== Reset 找回密码视图 — 900x1600 等比缩放 ===== */
.reset-wrapper{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;background:#D4FEFA}
.reset-canvas{position:relative;width:900px;height:1600px;overflow:hidden;transform-origin:top left;
  background:linear-gradient(162.44deg,#D4FEFA 0%,#FFFFFF 39.9%)}
.reset-back{position:absolute;width:80px;height:48px;left:50px;top:80px;
  font:400 40px/48px Inter,sans-serif;color:#000;opacity:.5;cursor:pointer;z-index:5}
.reset-title{position:absolute;width:160px;height:48px;left:160px;top:80px;
  font:400 40px/48px Inter,sans-serif;color:#000;z-index:5}
/* 双 Tab */
.reset-tab-box{position:absolute;width:440px;height:244px;top:133px;border-radius:5px}
.reset-tab-box-phone{left:30px}
.reset-tab-box-email{left:452px;top:142px;height:226px}
.reset-tab-inner{position:absolute;width:400px;height:92px;left:20px;top:20px}
.reset-tab-label{cursor:pointer;position:absolute;left:calc(50% - 90px);top:calc(50% - 23px);width:180px;height:46px;font-size:36px;line-height:46px;text-align:center}
.reset-tab-ul{position:absolute;left:0;right:0;bottom:0;height:5px}
.reset-tab-box-phone .reset-tab-label{font-family:Alatsi,sans-serif;color:#09C0A1}
.reset-tab-box-phone .reset-tab-ul{background:#09C0A1}
.reset-tab-box-phone.inactive .reset-tab-label{font-family:Inter,sans-serif;color:#000}
.reset-tab-box-phone.inactive .reset-tab-ul{background:#FFF}
.reset-tab-box-email .reset-off,.reset-tab-box-email .reset-on{position:absolute;width:400px;height:83px;left:20px;top:20px}
.reset-tab-box-email .reset-off .reset-tab-label{font-family:Inter,sans-serif;color:#000;cursor:pointer}
.reset-tab-box-email .reset-off .reset-tab-ul{background:#FFF}
.reset-tab-box-email .reset-on{display:none}
.reset-tab-box-email .reset-on .reset-tab-label{font-family:Inter,sans-serif;color:#09C0A1}
.reset-tab-box-email .reset-on .reset-tab-ul{background:#09C0A1}
.reset-tab-box-email.active .reset-off{display:none}
.reset-tab-box-email.active .reset-on{display:block}
/* 找回密码字段 */
.reset-field{box-sizing:border-box;position:absolute;width:836px;height:96px;
  left:calc(50% - 414px);background:#FFF;border:1px solid #E8EAEA;border-radius:24px}
.reset-f1{top:302px}.reset-f2{top:432px}.reset-f3{top:562px}.reset-f4{top:692px}.reset-f5{top:822px}
.reset-field input{border:none;outline:none;background:transparent;font:400 40px/48px Inter,sans-serif;color:#000;
  position:absolute;height:48px;left:60px;top:calc(50% - 24px)}
.reset-field input::placeholder{color:#999}
.reset-f1 input,.reset-f4 input,.reset-f5 input{width:520px}
.reset-f2 input,.reset-f3 input{width:420px}
.reset-rbtn{position:absolute;height:48px;right:11px;top:calc(50% - 24px);
  font:400 40px/48px Inter,sans-serif;color:#27B99B;cursor:pointer;z-index:20;white-space:nowrap}
.reset-rbtn:active{opacity:.5}
.reset-captcha{position:absolute;width:210px;height:96px;left:615px;top:calc(50% - 48px);z-index:15;
  display:flex;align-items:center;justify-content:center;
  font:400 36px Inter,sans-serif;letter-spacing:4px;color:#666;pointer-events:none}
.reset-countdown{position:absolute;width:210px;height:96px;left:626px;top:0;z-index:25;
  display:none;text-align:center;line-height:96px;
  font:400 36px Inter,sans-serif;letter-spacing:2px;color:#27B99B;pointer-events:none}
.reset-hint{position:absolute;width:294px;height:39px;left:90px;top:938px;
  font:400 32px/39px Inter,sans-serif;color:rgba(153,153,153,.6)}
.reset-submit{position:absolute;width:650px;height:92px;left:calc(50% - 325px);top:1453px;
  background:#73D3C1;border-radius:28px;border:none;cursor:pointer;
  font:400 40px/48px Inter,sans-serif;color:#FFF}
.reset-submit:active{opacity:.7}



/* ===== Table 牌桌视图 — 900x1600 等比缩放 ===== */
#view-table{background:url(/assets/ui/bg1.png) center/cover #002a25}.cv{position:absolute;width:900px;height:1600px;overflow:hidden;transform-origin:top left}
.tv2-big-coin{position:absolute;width:200px;height:200px;left:350px;top:400px;opacity:.5}
.tv2-big-coin img{width:100%;height:100%;object-fit:contain}
.tv2-watermark{position:absolute;left:340px;top:576px;width:220px;height:100px;font-size:72px;color:rgba(255,255,255,.08);font-weight:700;pointer-events:none;z-index:1}
.tv2-pot-label{position:absolute;width:96px;height:39px;left:402px;top:607px;font-family:Inter,sans-serif;font-size:32px;line-height:39px;color:#fff;text-align:center;z-index:2}
.tv2-pot-box{position:absolute;width:215px;height:43px;left:342px;top:648px;background:#D9D9D9;border-radius:18px;z-index:2;display:flex;align-items:center;justify-content:center;font-size:24px;color:#000}
/* ===== 本轮下注面板：总底池正下方，展示每玩家行动+金额，不遮盖其他组件 ===== */
.act-panel{position:absolute;left:250px;width:400px;top:702px;z-index:6;pointer-events:none}
.act-panel-title{text-align:center;color:rgba(255,255,255,.75);font-size:18px;font-weight:600;letter-spacing:2px;margin-bottom:6px}
.act-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:7px}
.act-chip{display:inline-flex;align-items:center;gap:7px;padding:4px 15px;border-radius:16px;background:rgba(0,0,0,.62);font-size:21px;color:#fff;white-space:nowrap;border:1px solid rgba(255,255,255,.18);box-shadow:0 2px 6px rgba(0,0,0,.3)}
.act-chip .nm{max-width:120px;overflow:hidden;text-overflow:ellipsis;opacity:.94;font-weight:600}
.act-chip .sep{opacity:.35}
.act-chip .act{font-weight:800;min-width:24px;text-align:center}
.act-chip .amt{font-weight:800}
.act-chip.eat .act{color:#FFD700}
.act-chip.eat .amt{color:#FFD700}
.act-chip.collide .act{color:#FF5A5A}
.act-chip.collide .amt{color:#FF5A5A}
.act-chip.bet .act{color:#4FC3F7}
.act-chip.bet .amt{color:#4FC3F7}
.act-chip.check .act{color:#B0BEC5}
.act-chip.check .amt{color:#B0BEC5}
.act-chip.fold{opacity:.5}
.act-chip.fold .act{color:#90A4AE}
.act-chip.empty{background:rgba(0,0,0,.35);border:1px dashed rgba(255,255,255,.15);color:rgba(255,255,255,.45)}
.tv2-timer{position:absolute;width:200px;height:40px;left:64px;top:760px;border-radius:80px;z-index:2}
.tv2-timer img{width:100%;height:100%;object-fit:contain}
.tv2-timer-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#fff;font-size:20px;font-weight:800;pointer-events:none}
.tv2-ante-display{position:absolute;width:200px;height:40px;left:64px;top:809px;border-radius:80px;z-index:2}
.tv2-ante-display img{width:100%;height:100%;object-fit:contain}
.tv2-ante-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#fff;font-size:20px;font-weight:800;pointer-events:none}
.tv2-room-code{position:absolute;width:220px;height:24px;left:340px;top:866px;font-family:Inter,sans-serif;font-size:24px;font-weight:800;line-height:24px;color:#fff;text-align:center;z-index:2;white-space:nowrap}
.tv2-btn-menu{position:absolute;width:109px;height:76px;left:31px;top:61px;z-index:10;cursor:pointer}
.tv2-btn-menu img{width:107px;height:72px;object-fit:contain}
.tv2-btn-review{position:absolute;width:90px;height:100px;left:760px;top:56px;z-index:10;cursor:pointer}
.tv2-btn-review img{width:100%;height:100%;object-fit:contain}
.tv2-btn-detail{position:absolute;width:80px;height:80px;left:47px;top:1485px;z-index:10;cursor:pointer}
.tv2-btn-msg{position:absolute;width:83px;height:79px;left:164px;top:1486px;z-index:10;cursor:pointer}
.tv2-btn-voice{position:absolute;width:60px;height:79px;left:681px;top:1478px;z-index:10;cursor:pointer}
.tv2-btn-emoji{position:absolute;width:83px;height:81px;left:773px;top:1478px;z-index:10;cursor:pointer}
.tv2-btn-detail img,.tv2-btn-msg img,.tv2-btn-voice img,.tv2-btn-emoji img{width:100%;height:100%;object-fit:contain}
.tv2-seat{position:absolute;width:120px;height:120px;z-index:5;border-radius:50%}
.tv2-seat-0{left:385px;top:1145px}
.tv2-seat-1{left:390px;top:127px}
.tv2-seat-2{left:104px;top:461px}
.tv2-seat-3{left:104px;top:965px}
.tv2-seat-4{left:668px;top:461px}
.tv2-seat-5{left:668px;top:965px}
.tv2-seat-empty{width:100%;height:100%;border:2px dashed rgba(153,153,153,.6);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}
.tv2-seat-empty::after{content:'+';font-size:40px;color:rgba(255,255,255,.3)}
.tv2-seat-taken{width:100%;height:100%;position:absolute;top:0;left:0}
.tv2-avatar{width:120px;height:120px;border-radius:50%;overflow:hidden;background:transparent}
.tv2-avatar-img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}
.tv2-avatar-inner{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:40px;color:#555;background:#ddd}
.tv2-nick{position:absolute;width:max-content;height:36px;font-family:Inter,sans-serif;font-size:30px;line-height:36px;color:#fff;text-align:center;pointer-events:none;white-space:nowrap;overflow:visible;left:50%;transform:translateX(-50%)}
.tv2-seat-0 .tv2-nick{top:-36px}
.tv2-seat-1 .tv2-nick{top:-62px}
.tv2-seat-2 .tv2-nick{top:-65px}
.tv2-seat-3 .tv2-nick{top:-70px}
.tv2-seat-4 .tv2-nick{top:-65px}
.tv2-seat-5 .tv2-nick{top:-70px}
.tv2-dealer{position:absolute;width:24px;height:24px;right:4px;top:4px;background:gold;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;color:#333;font-weight:700}
.tv2-zj{position:absolute;width:50px;height:50px;right:-8px;top:-8px;z-index:9;background:url(/assets/ui/zj.png) center/cover;border-radius:50%;pointer-events:none}
.tv2-acttag{position:absolute;left:-10px;bottom:-8px;z-index:11;padding:3px 9px;border-radius:12px;font-size:15px;font-weight:700;line-height:1.1;color:#fff;pointer-events:none;white-space:nowrap}
.tv2-acttag.eat{background:linear-gradient(135deg,#ffc107,#f57f17);box-shadow:0 0 10px rgba(255,193,7,.55)}
.tv2-acttag.collide{background:linear-gradient(135deg,#ff4500,#c62828);box-shadow:0 0 12px rgba(255,69,0,.7)}
.tv2-acttag.bet{background:linear-gradient(135deg,#42a5f5,#1565c0);box-shadow:0 0 10px rgba(66,165,245,.55)}
.tv2-zj-fly{position:absolute;width:50px;height:50px;background:url(/assets/ui/zj.png) center/cover;border-radius:50%;pointer-events:none;z-index:402;transform:translate(-50%,-50%);box-shadow:0 0 16px rgba(255,215,0,.7)}
.tv2-seat.acting .tv2-avatar{box-shadow:0 0 12px 4px #FFD700}
.tv2-hand-slot{position:absolute;width:250px;height:180px;z-index:6;display:none}
.tv2-hand-s0{left:325px;top:1280px}
.tv2-hand-s1{width:100px;height:72px;left:510px;top:247px}
.tv2-hand-s2{width:100px;height:72px;left:224px;top:581px}
.tv2-hand-s3{width:100px;height:72px;left:224px;top:1085px}
.tv2-hand-s4{width:100px;height:72px;left:788px;top:581px}
.tv2-hand-s5{width:100px;height:72px;left:788px;top:1085px}
.tv2-hand-s1.reveal{width:250px;height:180px;left:329px;top:102px}
.tv2-hand-s2.reveal{width:250px;height:180px;left:39px;top:432px}
.tv2-hand-s3.reveal{width:250px;height:180px;left:39px;top:931px}
.tv2-hand-s4.reveal{width:250px;height:180px;left:603px;top:432px}
.tv2-hand-s5.reveal{width:250px;height:180px;left:603px;top:931px}
.card-slot{width:48%;height:100%;background:url(/assets/ui/tv2-card-slot.png) center/cover;border-radius:6px;display:inline-block}
.tv2-tag-bal-s0{left:382px;top:1475px}
.tv2-tag-bal-s1{left:388px;top:296px}
.tv2-tag-bal-s2{left:102px;top:625px}
.tv2-tag-bal-s3{left:102px;top:1123px}
.tv2-tag-bal-s4{left:666px;top:625px}
.tv2-tag-bal-s5{left:666px;top:1123px}
.tv2-tag-bal{position:absolute;height:47px;background:#73D3C1;border-radius:25px;display:flex;align-items:center;justify-content:center;font-family:Inter,sans-serif;font-size:24px;font-weight:800;color:#fff;z-index:7;width:125px}
.tv2-act-btn{position:absolute;width:100px;height:100px;border:none;background:transparent;cursor:pointer;z-index:10;padding:0}
.tv2-act-btn img{width:100%;height:100%;object-fit:contain}
.tv2-act-btn.off{filter:grayscale(1);opacity:.4;pointer-events:none}
.tv2-act-btn.loading{filter:grayscale(1);opacity:.5;pointer-events:none;animation:actLoadingPulse .8s ease-in-out infinite}
@keyframes actLoadingPulse{0%,100%{opacity:.5}50%{opacity:.2}}
.tv2-fold-btn{left:270px;top:1164px}
.tv2-collide-btn{left:475px;top:1006px}
.tv2-eat-btn{left:520px;top:1164px}
.tv2-pad-act-btn{left:314px;top:1006px}
.tv2-collide-score{position:absolute;width:40px;height:24px;left:525px;top:1044px;font-size:20px;color:#fff;text-align:center;pointer-events:none;z-index:11}
.tv2-eat-score{position:absolute;width:40px;height:24px;left:570px;top:1202px;font-size:20px;color:#fff;text-align:center;pointer-events:none;z-index:11}
.tv2-pad-score{position:absolute;width:40px;height:24px;left:364px;top:1044px;font-size:20px;color:#fff;text-align:center;pointer-events:none;z-index:11}
/* 垫金额两档快捷圆（透明底+虚线框，以垫按钮为中心，两圆垂直排布） */
.tv2-pad-quick{position:absolute;left:364px;top:926px;z-index:12;display:flex;flex-direction:row;align-items:flex-end;justify-content:center;gap:16px;opacity:0;pointer-events:none;transform:translateX(-50%);transition:opacity .18s ease}
.tv2-pad-quick.show{opacity:1;pointer-events:auto}
.tv2-pad-quick .pq-item{opacity:0;transform:scale(.4) translateY(14px);transition:all .2s cubic-bezier(.2,.9,.3,1.4)}
.tv2-pad-quick.show .pq-item{opacity:1;transform:scale(1) translateY(0)}
.tv2-pad-quick.show .pq-item:nth-child(2){transition-delay:.04s}
.pq-circle{position:relative;width:72px;height:72px;border-radius:50%;border:2.5px dashed #FFD700;background:rgba(0,0,0,.22);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 0 14px rgba(255,215,0,.22)}
.pq-circle:active{transform:scale(.92);background:rgba(255,215,0,.16)}
.pq-circle .amt{font-size:24px;font-weight:800;color:#fff;line-height:1;text-shadow:0 1px 3px rgba(0,0,0,.7)}
.pq-circle .ratio{font-size:10px;color:#FFD700;margin-top:3px}
.pq-item.big .pq-circle{border-color:#4FC3F7;box-shadow:0 0 14px rgba(79,195,247,.28)}
.pq-item.big .pq-circle .ratio{color:#4FC3F7}
.tv2-menu{position:absolute;width:218px;left:0;top:63px;background:rgba(44,44,54,.96);border-radius:20px;z-index:25;display:none;overflow:hidden}
.tv2-menu.show{display:block}
.tv2-menu div{width:100%;height:74px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:22px;color:#fff;font-weight:700;letter-spacing:2px;position:relative}
.tv2-menu div::after{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.tv2-menu div:nth-child(1)::after{content:'站起'}
.tv2-menu div:nth-child(2)::after{content:'解散'}
.tv2-menu div:nth-child(3)::after{content:'规则'}
.tv2-menu div:nth-child(4)::after{content:'设置'}
.tv2-menu div:nth-child(5)::after{content:'大厅'}
.tv2-menu div:hover{background:rgba(72,209,204,.2)}
.tv2-menu div:active{background:rgba(72,209,204,.35)}
.tv2-share-bar{position:absolute;width:250px;height:55px;left:325px;top:780px;z-index:5;cursor:pointer}
.tv2-share-bar img{width:100%;height:100%;object-fit:contain}
.tv2-start-bar{position:absolute;width:250px;height:50px;left:325px;top:780px;z-index:5;cursor:pointer}
.tv2-start-bar img{width:100%;height:100%;object-fit:contain}
/* overlay 作用域到 table 视图以避免冲突 */
#view-table .overlay{position:absolute;left:0;top:0;width:100%;height:100%;background:rgba(0,0,0,.5);z-index:20;display:none}
#view-table .overlay.show{display:block}
.tv2-toast{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:99;display:none;background:rgba(0,0,0,.75);color:#fff;padding:16px 32px;border-radius:12px;font-size:20px}
.rc-overlay{position:fixed;inset:0;background:rgba(0,0,0,.65);z-index:100;display:none}
.rc-panel{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:560px;max-width:86vw;background:#2C2C36;border-radius:16px;padding:36px 28px;z-index:101;display:none;text-align:center;color:#fff;box-shadow:0 8px 40px rgba(0,0,0,.5)}
.rc-title{font-size:28px;font-weight:bold;margin-bottom:14px}
.rc-body{font-size:20px;color:#ccc;margin-bottom:28px;line-height:1.5}
.rc-btns{display:flex;gap:20px;justify-content:center}
.rc-btn{width:180px;height:60px;border:none;border-radius:12px;font-size:22px;cursor:pointer}
.rc-retry{background:#48D1CC;color:#fff}
.rc-lobby{background:#555;color:#fff}
.sb-panel{position:absolute;width:321px;height:1600px;left:0;top:0;background:#2C2C36;opacity:.96;border-radius:20px;z-index:25;overflow-y:auto;color:#fff;display:none}
.sb-panel.show{display:block}
.sb-title{position:sticky;top:0;height:60px;font-family:'Mplus 1p Bold',sans-serif;font-weight:700;font-size:36px;line-height:60px;color:#fff;padding:0 20px;z-index:2;background:#2C2C36;display:flex;align-items:center;justify-content:space-between}
.sb-title .sb-close{width:36px;height:36px;font-size:28px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.sb-title .sb-close:active{opacity:.6}
.sb-row{position:relative;height:130px;display:flex;align-items:center;border-bottom:1px solid rgba(255,255,255,.05)}
.sb-avatar{width:80px;height:80px;left:21px;background:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:32px;color:#555;flex-shrink:0;margin:0 16px 0 21px;overflow:hidden}
.sb-avatar-img{width:100%;height:100%;object-fit:cover;display:block}
.sb-info{flex:1}
.sb-name{font-size:20px;color:#fff;margin-bottom:8px}
.sb-profit{font-size:20px;color:#48D1CC}
.sb-row-left .sb-avatar{background:#555;color:#999}
.sb-row-left .sb-name{color:#888}
.sb-row-left .sb-profit{color:#999;filter:grayscale(.4)}
.sb-left-tag{display:inline-block;margin-left:10px;padding:2px 8px;border-radius:8px;background:#444;color:#aaa;font-size:14px;vertical-align:middle}
.pr-overlay{position:absolute;inset:0;background:rgba(0,0,0,.6);z-index:40;display:none}
.pr-overlay.show{display:block}
.pr-panel{position:absolute;left:50%;top:50%;width:880px;height:569px;transform:translate(-50%,-50%);background:url(/assets/ui/bipai-jiesuan.png) center/100% 100% no-repeat;filter:drop-shadow(0 12px 44px rgba(0,0,0,.55));z-index:41;display:none}
.pr-panel.show{display:block}
.pr-title{position:absolute;left:0;right:0;top:22px;text-align:center;color:#FFE9A8;font-size:30px;font-weight:900;text-shadow:0 1px 3px rgba(0,0,0,.6)}
.pr-list-wrap{position:absolute;left:110px;right:110px;top:86px;bottom:110px;display:flex;flex-direction:column;justify-content:center;gap:8px}
.pr-row{display:flex;align-items:center;justify-content:space-between;background:rgba(0,0,0,.22);border-radius:8px;padding:7px 16px}
.pr-name{font-size:22px;color:#fff;font-weight:700}
.pr-profit{font-size:24px;font-weight:900}
.pr-profit.pos{color:#FFD700}
.pr-profit.neg{color:#E02C2C}
.pr-btn{position:absolute;left:50%;bottom:56px;transform:translateX(-50%);width:340px;height:64px;background:linear-gradient(135deg,#48D1CC,#2a9d8f);border-radius:32px;display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:700;color:#fff;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.35)}
.pr-btn:active{opacity:.7}
.stg-panel{position:absolute;width:500px;height:820px;left:200px;top:430px;background:#2C2C36;opacity:.96;border-radius:20px;z-index:25;color:#fff;padding:20px 0;display:none;overflow-y:auto}
.stg-panel.show{display:block}
.stg-section-title{text-align:center;font-family:'Mplus 1p Bold',sans-serif;font-size:36px;margin:10px 0 20px}
.stg-section-title.active{color:#48D1CC}
.stg-section-title.inactive{color:#999}
.stg-divider{width:144px;height:0;border:1px solid #48D1CC;margin:0 auto 20px}
.stg-cards{display:flex;justify-content:center;gap:16px;padding:10px 0}
.stg-themes{display:flex;justify-content:center;gap:16px;padding:10px 0}
.stg-theme{width:150px;height:112px;border-radius:12px;cursor:pointer;border:3px solid transparent;overflow:hidden;position:relative;background:#333}
.stg-theme.selected{border-color:#48D1CC;box-shadow:0 0 16px rgba(72,209,204,.5)}
.stg-theme img{width:100%;height:100%;object-fit:cover}
.stg-theme .stg-theme-name{position:absolute;left:0;right:0;bottom:0;background:rgba(0,0,0,.68);color:#fff;font-size:14px;text-align:center;padding:4px 0;font-weight:700}
.stg-card{width:100px;height:144px;border-radius:8px;cursor:pointer;border:3px solid transparent;overflow:hidden}
.stg-card.selected{border-color:#48D1CC;box-shadow:0 0 16px rgba(72,209,204,.5)}
.stg-card img{width:100%;height:100%;object-fit:cover}
.stg-row{display:flex;justify-content:center;gap:16px;padding:10px 0}
.stg-toggle{width:216px;height:91px;background:#514848;border-radius:20px;padding:12px 19px;display:flex;flex-direction:column;cursor:pointer;position:relative}
.stg-toggle-label{font-family:'Mplus 1p Bold',sans-serif;font-weight:700;font-size:16px;color:#fff}
.stg-toggle-status{font-family:'Mplus 1p Bold',sans-serif;font-weight:700;font-size:16px;color:#48D1CC;margin-top:4px}
.stg-toggle-switch{position:absolute;width:70px;height:30px;right:16px;top:43px;background:#48D1CC;border-radius:60px;transition:background .2s}
.stg-toggle-switch.off{background:#666}
.stg-toggle-knob{position:absolute;width:25px;height:25px;top:2px;background:#fff;border-radius:50%;box-shadow:8px 8px 4px rgba(0,0,0,.25);transition:left .2s}
.stg-toggle-knob.on{left:41px}
.stg-toggle-knob.off{left:4px}
.stg-close{position:absolute;right:16px;top:12px;width:36px;height:36px;font-size:28px;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center}
.stg-close:active{opacity:.6}
.rule-panel{position:absolute;width:500px;left:200px;top:450px;background:#2C2C36;opacity:.96;border-radius:25px;z-index:25;padding:0;color:#fff;display:none}
.rule-panel.show{display:block}
.rule-title{text-align:center;font-family:'Mplus 1p Bold',sans-serif;font-weight:700;font-size:36px;color:#48D1CC;padding:16px 0}
.rule-close{position:absolute;right:16px;top:12px;width:36px;height:36px;font-size:28px;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center}
.rule-close:active{opacity:.6}
.rule-cards{display:flex;justify-content:center;gap:12px;padding:16px}
.rule-card{width:48px;height:74px;border-radius:2px;overflow:hidden}
.rule-card img{width:100%;height:100%;object-fit:cover}
.rule-levels{padding:16px 24px;max-height:500px;overflow-y:auto}
.rule-level{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.08);font-size:20px}
.rule-level-name{color:#fff}
.rule-level-rank{color:#48D1CC;font-weight:700}
.rule-text{padding:8px 24px 24px;color:#ccc;font-size:17px;line-height:1.9}
.rule-text div{padding:3px 0}
/* deal animation */
.deal-pile{position:absolute;width:140px;height:196px;left:380px;top:680px;z-index:10;pointer-events:none;display:none}
.deal-pile img{width:100%;height:100%}
.deal-open{position:absolute;width:207px;height:315px;left:357px;top:653px;z-index:20;display:none;border-radius:6px;box-shadow:0 4px 16px rgba(0,0,0,.5)}
.deal-open img{position:absolute;width:100%;height:100%;top:0;left:0;object-fit:contain;border-radius:6px}
.deal-info{position:absolute;left:369px;top:978px;color:#FFD700;font-size:20px;font-weight:700;z-index:20;display:none}
.sink-tip{position:absolute;left:0;right:0;top:560px;z-index:60;display:none;color:#FF3B30;text-align:center;pointer-events:none;-webkit-text-size-adjust:100%;text-size-adjust:100%;max-width:900px;width:900px}
.sink-tip .sink-name{font-size:36px;font-weight:800;line-height:46px;white-space:nowrap;overflow:hidden;display:block;width:100%;max-width:900px;height:46px;max-height:46px;text-overflow:clip;text-shadow:0 0 16px rgba(255,59,48,.85),0 0 36px rgba(224,44,44,.6)}
.sink-tip .sink-amt{font-size:56px;font-weight:900;line-height:73px;white-space:nowrap;overflow:hidden;height:73px;max-height:73px;text-shadow:0 0 20px rgba(255,59,48,.95),0 0 44px rgba(224,44,44,.7)}
.sink-tip.show{display:block;animation:sinkPop 1.5s ease-out}
@keyframes sinkPop{0%{transform:scale(.4);opacity:0}15%{transform:scale(1.3);opacity:1}30%{transform:scale(1);opacity:1}70%{opacity:1}100%{transform:translateY(-90px) scale(1.05);opacity:0}}
.showdown-ov{position:absolute;left:0;right:0;top:0;bottom:0;z-index:55;display:none;pointer-events:none}
.showdown-ov.show{display:block}
.showdown-ov .sd-bg{position:absolute;left:0;top:0;right:0;bottom:0;background:rgba(0,0,0,.5)}
.showdown-ov .sd-panel{position:absolute;left:50%;top:50%;width:880px;height:569px;transform:translate(-50%,-50%);background:url(/assets/ui/bipai-jiesuan.png) center/100% 100% no-repeat;filter:drop-shadow(0 12px 44px rgba(0,0,0,.55));animation:sdPanelIn .35s ease-out}
.showdown-ov .sd-title{position:absolute;left:0;right:0;top:20px;text-align:center;color:#FFE9A8;font-size:30px;font-weight:900;text-shadow:0 1px 3px rgba(0,0,0,.6);animation:sdTitleIn .4s ease-out}
.showdown-ov .sd-cards{position:absolute;left:44px;right:44px;top:76px;bottom:92px;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:16px}
.showdown-ov .sd-row{display:flex;flex-direction:column;align-items:center;gap:4px;background:rgba(0,0,0,.24);border-radius:10px;padding:8px 10px;border:2px solid rgba(255,255,255,.12)}
.showdown-ov .sd-row.win{border-color:#FFD700;background:rgba(255,215,0,.16);box-shadow:0 0 20px rgba(255,215,0,.4)}
.showdown-ov .sd-row .sd-name{color:#fff;font-size:16px;font-weight:700}
.showdown-ov .sd-row .sd-label{color:#FFE9A8;font-size:17px;font-weight:900}
.showdown-ov .sd-row .sd-cards-in{display:flex;gap:4px}
.showdown-ov .sd-row .sd-cards-in img{width:70px;height:98px;object-fit:cover;border-radius:5px;box-shadow:0 2px 8px rgba(0,0,0,.5)}
.showdown-ov .sd-foot{position:absolute;left:0;right:0;bottom:50px;text-align:center;color:#fff;font-size:20px;font-weight:800}
.showdown-ov .sd-foot .amt{color:#FFD700;font-size:24px;font-weight:900}
@keyframes sdTitleIn{0%{transform:scale(.5);opacity:0}60%{transform:scale(1.15);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes sdPanelIn{0%{transform:translate(-50%,-50%) scale(.7);opacity:0}100%{transform:translate(-50%,-50%) scale(1);opacity:1}}
/* ===== 顶级牌型特效（皇帝/对天/对地）===== */
.big-hand-ov{position:absolute;left:0;right:0;top:0;bottom:0;z-index:70;display:none;pointer-events:none}
.big-hand-ov.show{display:block}
.big-hand-ov .big-hand-banner{position:absolute;left:0;right:0;top:560px;text-align:center;font-size:64px;font-weight:900;letter-spacing:8px;color:#FFD700;text-shadow:0 0 24px rgba(255,215,0,.95),0 0 60px rgba(255,150,0,.7);opacity:0;transform:scale(.4);z-index:71}
.big-hand-ov.show .big-hand-banner{animation:bigBannerIn .7s cubic-bezier(.2,1.4,.4,1) forwards,bigBannerGlow 1.2s .7s ease-in-out infinite alternate}
@keyframes bigBannerIn{0%{transform:scale(.4);opacity:0}60%{transform:scale(1.2);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes bigBannerGlow{0%{text-shadow:0 0 20px rgba(255,215,0,.8),0 0 50px rgba(255,150,0,.6)}100%{text-shadow:0 0 40px rgba(255,240,150,1),0 0 90px rgba(255,180,0,.9)}}
.big-hand-ov .big-hand-crown{position:absolute;left:50%;top:330px;width:150px;height:150px;margin-left:-75px;margin-top:-75px;border-radius:50%;z-index:70;opacity:0;transform:scale(.3)}
.big-hand-ov.show .big-hand-crown{animation:crownPulse 1.4s ease-out infinite}
@keyframes crownPulse{0%{transform:scale(.3);opacity:0}25%{transform:scale(1.15);opacity:1}50%{transform:scale(1);opacity:.95}100%{transform:scale(1.4);opacity:0}}
/* 皇帝金色王冠 */
.big-hand-crown.emperor{background:radial-gradient(circle,#FFF8E1 0%,#FFD700 45%,#FF8C00 100%);box-shadow:0 0 40px 12px #FFD700,0 0 90px 30px rgba(255,140,0,.6)}
.big-hand-crown.duitian{background:radial-gradient(circle,#FFFFFF 0%,#FFE066 50%,#FFB300 100%);box-shadow:0 0 40px 12px #FFE066,0 0 90px 30px rgba(255,179,0,.55)}
.big-hand-crown.duidi{background:radial-gradient(circle,#E8F5FF 0%,#64B5F6 50%,#1E88E5 100%);box-shadow:0 0 40px 12px #64B5F6,0 0 90px 30px rgba(30,136,229,.55)}
.big-hand-ov .big-hand-glow{position:absolute;left:50%;top:560px;width:0;height:0;margin-left:0;margin-top:0;pointer-events:none;z-index:69}
/* 牌局回顾层 */
.review-ov{position:fixed;left:0;right:0;top:0;bottom:0;z-index:60;display:none}
.review-ov.show{display:block}
.review-ov .rv-bg{position:absolute;left:0;top:0;right:0;bottom:0;background:rgba(0,0,0,.72)}
.review-ov .rv-panel{position:absolute;left:5%;right:5%;top:7%;bottom:7%;background:linear-gradient(160deg,#1a2436,#0d1524);border-radius:20px;border:2px solid rgba(255,215,0,.35);display:flex;flex-direction:column;overflow:hidden}
.review-ov .rv-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid rgba(255,255,255,.12)}
.review-ov .rv-title{color:#FFD700;font-size:30px;font-weight:900;letter-spacing:2px}
.review-ov .rv-close{width:46px;height:46px;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;font-size:26px;display:flex;align-items:center;justify-content:center;cursor:pointer;line-height:1}
.review-ov .rv-list{flex:1;overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:18px;-webkit-overflow-scrolling:touch}
.review-ov .rv-stage{background:rgba(255,255,255,.06);border-radius:14px;padding:14px 16px;border:1px solid rgba(255,255,255,.1)}
.review-ov .rv-stage-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.review-ov .rv-stage-name{color:#fff;font-size:23px;font-weight:800}
.review-ov .rv-stage-tag{color:#FFD700;font-size:19px;font-weight:700}
.review-ov .rv-stage-cards{display:flex;flex-wrap:wrap;gap:14px}
.review-ov .rv-row{display:flex;flex-direction:column;align-items:center;gap:6px;background:rgba(255,255,255,.08);border-radius:10px;padding:10px 12px;border:2px solid transparent}
.review-ov .rv-row.win{border-color:#FFD700;background:rgba(255,215,0,.16)}
.review-ov .rv-row .rv-name{color:#fff;font-size:17px;font-weight:700}
.review-ov .rv-row .rv-label{color:#FFD700;font-size:19px;font-weight:900}
.review-ov .rv-row .rv-cards-in{display:flex;gap:5px}
.review-ov .rv-row .rv-cards-in img{width:80px;height:112px;object-fit:cover;border-radius:5px;box-shadow:0 2px 10px rgba(0,0,0,.5)}
.review-ov .rv-empty{color:rgba(255,255,255,.5);font-size:22px;text-align:center;padding:40px 0}
.review-ov .rv-phase{color:#7FDFC9;font-size:20px;font-weight:900;text-align:center;margin:16px 0 10px;letter-spacing:1px}
.review-ov .rv-opencard{display:flex;align-items:center;gap:12px;background:rgba(255,255,255,.05);border-radius:10px;padding:10px 14px;margin-bottom:14px}
.review-ov .rv-opencard img{width:56px;height:78px;object-fit:cover;border-radius:5px;box-shadow:0 2px 8px rgba(0,0,0,.5)}
.review-ov .rv-opencard-txt{color:#fff;font-size:18px;font-weight:700;line-height:1.5}
.review-ov .rv-opencard-txt .rv-oc-sub{color:rgba(255,255,255,.65);font-size:15px;font-weight:500}
.review-ov .rv-actions{background:rgba(255,255,255,.05);border-radius:10px;padding:12px 14px;margin-bottom:14px}
.review-ov .rv-actions-title{color:#FFD700;font-size:19px;font-weight:800;margin-bottom:10px}
.review-ov .rv-act{display:flex;align-items:center;gap:9px;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.07);flex-wrap:wrap}
.review-ov .rv-act:last-child{border-bottom:none}
.review-ov .rv-act.redeal{background:rgba(255,120,60,.14);border-radius:8px;padding:8px 10px;margin-top:4px}
.review-ov .rv-act-no{min-width:22px;height:22px;border-radius:50%;background:rgba(255,255,255,.15);color:#fff;font-size:13px;display:flex;align-items:center;justify-content:center}
.review-ov .rv-act-name{color:#fff;font-size:16px;font-weight:700}
.review-ov .rv-act-tag{font-size:14px;font-weight:800;padding:2px 9px;border-radius:6px;color:#fff}
.review-ov .rv-act-tag.eat{background:#E6A800}
.review-ov .rv-act-tag.collide{background:#E02C2C}
.review-ov .rv-act-tag.bet{background:#2C6FE0}
.review-ov .rv-act-tag.check{background:#7A8699}
.review-ov .rv-act-tag.fold{background:rgba(255,255,255,.22)}
.review-ov .rv-act-tag.ante{background:#1E9E6E}
.review-ov .rv-act-tag.redeal{background:#FF783C}
.review-ov .rv-act-amt{color:#FFD700;font-size:16px;font-weight:800}
.review-ov .rv-act-note{color:rgba(255,255,255,.55);font-size:13px}
.review-ov .rv-act-empty{color:rgba(255,255,255,.45);font-size:15px;padding:6px 0}
.review-ov .rv-foot{display:flex;align-items:center;justify-content:center;gap:22px;padding:14px 0;border-top:1px solid rgba(255,255,255,.12)}
.review-ov .rv-arrow{width:52px;height:52px;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;font-size:34px;display:flex;align-items:center;justify-content:center;cursor:pointer;line-height:1;user-select:none;-webkit-user-select:none}
.review-ov .rv-arrow:active{background:rgba(255,215,0,.3)}
.review-ov .rv-page{color:#fff;font-size:20px;font-weight:800;min-width:70px;text-align:center}
.deal-fly-card{position:absolute;z-index:25;pointer-events:none;border-radius:4px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.4);display:none}
.deal-fly-card img{width:100%;height:100%;object-fit:cover}

/* 其余视图占位 */
.v-table .placeholder{
  color:#888;font-size:24px;text-align:center;padding-top:100px}

/* ===== 离线态 ===== */
.tv2-seat.offline{filter:grayscale(80%) brightness(.35)}
.tv2-seat.offline::after{content:'离线';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#E02C2C;font-size:14px;font-weight:700;z-index:10}
/* ===== 中途加入者等待态（已入座但本局未发牌）===== */
.tv2-seat.waiting{filter:grayscale(60%) brightness(.55)}
.tv2-seat.waiting::after{content:'等待中';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#BBB;font-size:13px;font-weight:600;z-index:10}
.tv2-seat.waiting .tv2-nick{color:#888}
/* ===== 超时灰显态（第一次超时，点手牌可恢复）===== */
.tv2-seat.timedout{filter:grayscale(70%) brightness(.5)}
.tv2-seat.timedout::after{content:'超时';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#FFA500;font-size:14px;font-weight:700;z-index:10}
.tv2-seat.timedout .tv2-nick{color:#999}
/* ===== 盈利飘字 ===== */
.coin-fly{position:absolute;left:0;top:0;font-weight:900;font-size:28px;pointer-events:none;z-index:999;white-space:nowrap;transform:translate(-50%,-50%);animation:coinUp 2.4s ease-out forwards}
.coin-fly.win{color:#FFD700;text-shadow:0 0 8px rgba(255,215,0,.8)}
.coin-fly.lose{color:#E02C2C;text-shadow:0 0 8px rgba(224,44,44,.8)}
@keyframes coinUp{0%{opacity:0;transform:translate(-50%,-50%) scale(.5)}10%{opacity:1;transform:translate(-50%,-50%) scale(1.05)}50%{opacity:1;transform:translate(-50%,-400%) scale(1)}92%{opacity:1;transform:translate(-50%,-400%) scale(1)}100%{opacity:0;transform:translate(-50%,-400%) scale(1)}}
/* ===== 座位行动状态光环 ===== */
.tv2-seat{overflow:visible!important}
.tv2-glow-ring{display:none;position:absolute;left:50%;top:50%;width:150px;height:150px;margin-left:-75px;margin-top:-75px;border-radius:50%;border:3px solid transparent;pointer-events:none;z-index:2}
.tv2-ring-svg{display:none;position:absolute;left:50%;top:50%;width:138px;height:138px;margin-left:-69px;margin-top:-69px;pointer-events:none;z-index:3;transform:rotate(-90deg)}
.tv2-seat.turn .tv2-ring-svg{display:block}

/* 状态① 轮到行动—金色呼吸 */
.tv2-seat.turn .tv2-glow-ring{border-color:rgba(255,215,0,.55);display:block;background:radial-gradient(circle,rgba(255,215,0,.18) 0%,rgba(255,215,0,.06) 45%,transparent 70%)}
.tv2-seat.turn .tv2-glow-ring.r1,.tv2-seat.turn .tv2-glow-ring.r2{animation:none}

/* 状态② 吃—金色常亮 */
.tv2-seat.ate .tv2-glow-ring{border-color:rgba(255,193,7,.5);display:block;background:radial-gradient(circle,rgba(255,193,7,.45) 0%,rgba(255,193,7,.14) 48%,transparent 72%);transform:scale(1.1)}
.tv2-seat.ate .tv2-glow-ring.r1,.tv2-seat.ate .tv2-glow-ring.r2{animation:none}

/* 状态③ 撞—红色常亮(不再呼吸, 省GPU) */
.tv2-seat.collided .tv2-glow-ring{border-color:rgba(255,69,0,.7);display:block;background:radial-gradient(circle,rgba(255,69,0,.55) 0%,rgba(255,69,0,.18) 45%,transparent 70%)}
.tv2-seat.collided .tv2-glow-ring.r1,.tv2-seat.collided .tv2-glow-ring.r2{animation:none}

/* ===== 吃—金币粒子 ===== */
.tv2-coin{position:absolute;width:36px;height:36px;background:radial-gradient(circle,#FFD700,#E6A800);border-radius:50%;border:2px solid #FFC107;box-shadow:0 0 20px #FFD700;pointer-events:none;z-index:300;animation:tv2CoinFly .55s ease-in forwards}
@keyframes tv2CoinFly{0%{transform:scale(0);opacity:1}25%{transform:scale(1.5);opacity:1}100%{transform:translate(var(--dx),var(--dy)) scale(.2);opacity:0}}
.tv2-eat-shock{position:absolute;border-radius:50%;border:4px solid #FFD700;transform:translate(-50%,-50%);pointer-events:none;z-index:300;animation:tv2EatBoom .7s ease-out forwards}
@keyframes tv2EatBoom{0%{width:10px;height:10px;opacity:.9}100%{width:240px;height:240px;opacity:0}}

/* ===== 撞—红色冲击 ===== */
.tv2-crash-ring{position:absolute;border-radius:50%;border:5px solid #E02C2C;transform:translate(-50%,-50%);pointer-events:none;z-index:300;animation:tv2CrashOut .55s ease-out forwards}
@keyframes tv2CrashOut{0%{width:20px;height:20px;opacity:1}100%{width:320px;height:320px;opacity:0}}
.tv2-crash-burst{position:absolute;width:100px;height:100px;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(255,60,30,.7),transparent);border-radius:50%;pointer-events:none;z-index:300;animation:tv2BurstBoom .5s ease-out forwards}
@keyframes tv2BurstBoom{0%{transform:translate(-50%,-50%) scale(0);opacity:1}50%{transform:translate(-50%,-50%) scale(2);opacity:.8}100%{transform:translate(-50%,-50%) scale(3);opacity:0}}
.tv2-crash-text{position:absolute;color:#FF3020;font-size:52px;font-weight:900;transform:translate(-50%,-50%);pointer-events:none;z-index:300;text-shadow:0 0 30px rgba(255,30,0,.9);animation:tv2TxtBoom .7s ease-out forwards}
@keyframes tv2TxtBoom{0%{transform:translate(-50%,-50%) scale(1.3);opacity:1}100%{transform:translate(-50%,-50%) scale(3.5);opacity:0}}

/* ===== 火焰残留 ===== */
.tv2-flame{position:absolute;width:70px;height:70px;transform:translate(-50%,-50%);pointer-events:none;z-index:300;animation:tv2FlameIn .3s ease-out forwards,tv2FlameStay 1.6s .3s ease-out forwards}
.tv2-flame-core{position:absolute;left:50%;top:50%;width:26px;height:26px;margin-left:-13px;margin-top:-13px;border-radius:50%;animation:tv2CorePulse .25s ease-in-out infinite alternate}
.tv2-flame .tv2-spark{position:absolute;border-radius:50%;animation:tv2SparkUp var(--fly) ease-out forwards}
.tv2-flame.eat .tv2-flame-core{background:radial-gradient(circle,#FFF 20%,#FFD700 60%,#FF8C00);box-shadow:0 0 30px 10px #FFA000,0 0 60px 20px rgba(255,160,0,.4)}
.tv2-flame.eat .tv2-spark{background:radial-gradient(circle,#FFD700,#FF8C00)}
.tv2-flame.collide .tv2-flame-core{background:radial-gradient(circle,#FFF 20%,#FF4500 60%,#E02C2C);box-shadow:0 0 30px 10px #FF3020,0 0 60px 20px rgba(224,44,44,.4)}
.tv2-flame.collide .tv2-spark{background:radial-gradient(circle,#FF4500,#E02C2C)}
@keyframes tv2FlameIn{0%{transform:translate(-50%,-50%) scale(.2);opacity:0}100%{transform:translate(-50%,-50%) scale(1);opacity:1}}
@keyframes tv2FlameStay{0%{opacity:1}70%{opacity:.6}100%{opacity:0}}
@keyframes tv2CorePulse{0%{transform:scale(1);opacity:.75}100%{transform:scale(1.7);opacity:1}}
@keyframes tv2SparkUp{0%{transform:translate(0,0) scale(1);opacity:1}100%{transform:translate(var(--sx),var(--sy)) scale(0);opacity:0}}

/* 行动提示横幅 */
.tv2-turn-banner{position:absolute;left:50%;top:550px;transform:translateX(-50%);background:rgba(0,0,0,.8);color:#FFD700;font-size:28px;font-weight:900;padding:10px 36px;border-radius:40px;border:2px solid #FFD700;pointer-events:none;z-index:300;opacity:0;transition:opacity .3s;white-space:nowrap;animation:tv2Banner 1.2s ease-in-out infinite alternate}
.tv2-turn-banner.show{opacity:1}
@keyframes tv2Banner{0%{transform:translateX(-50%) scale(1)}100%{transform:translateX(-50%) scale(1.03)}}

/* ===== 座位行动状态光环 ===== */
.tv2-seat{overflow:visible!important}
.tv2-glow-ring{display:none;position:absolute;left:50%;top:50%;width:150px;height:150px;margin-left:-75px;margin-top:-75px;border-radius:50%;border:3px solid transparent;pointer-events:none;z-index:2}
.tv2-ring-svg{display:none;position:absolute;left:50%;top:50%;width:138px;height:138px;margin-left:-69px;margin-top:-69px;pointer-events:none;z-index:3;transform:rotate(-90deg)}
.tv2-seat.turn .tv2-ring-svg{display:block}
.tv2-seat.turn .tv2-glow-ring{border-color:rgba(255,215,0,.55);display:block;background:radial-gradient(circle,rgba(255,215,0,.18) 0%,rgba(255,215,0,.06) 45%,transparent 70%)}
.tv2-seat.turn .tv2-glow-ring.r1,.tv2-seat.turn .tv2-glow-ring.r2{animation:none}
.tv2-seat.ate .tv2-glow-ring{border-color:rgba(255,193,7,.5);display:block;background:radial-gradient(circle,rgba(255,193,7,.45) 0%,rgba(255,193,7,.14) 48%,transparent 72%);transform:scale(1.1)}
.tv2-seat.ate .tv2-glow-ring.r1,.tv2-seat.ate .tv2-glow-ring.r2{animation:none}
.tv2-seat.collided .tv2-glow-ring{border-color:rgba(255,69,0,.7);display:block;background:radial-gradient(circle,rgba(255,69,0,.55) 0%,rgba(255,69,0,.18) 45%,transparent 70%)}
.tv2-seat.collided .tv2-glow-ring.r1,.tv2-seat.collided .tv2-glow-ring.r2{animation:none}
/* FX */
.tv2-coin{position:absolute;width:36px;height:36px;background:radial-gradient(circle,#FFD700,#E6A800);border-radius:50%;border:2px solid #FFC107;box-shadow:0 0 20px #FFD700;pointer-events:none;z-index:300;animation:tv2CoinFly .55s ease-in forwards}
@keyframes tv2CoinFly{0%{transform:scale(0);opacity:1}25%{transform:scale(1.5)}100%{transform:translate(var(--dx),var(--dy)) scale(.2);opacity:0}}
.tv2-eat-shock{position:absolute;border-radius:50%;border:4px solid #FFD700;transform:translate(-50%,-50%);pointer-events:none;z-index:300;animation:tv2EatBoom .7s ease-out forwards}
@keyframes tv2EatBoom{0%{width:10px;height:10px;opacity:.9}100%{width:240px;height:240px;opacity:0}}
.tv2-crash-ring{position:absolute;border-radius:50%;border:5px solid #E02C2C;transform:translate(-50%,-50%);pointer-events:none;z-index:300;animation:tv2CrashOut .55s ease-out forwards}
@keyframes tv2CrashOut{0%{width:20px;height:20px;opacity:1}100%{width:320px;height:320px;opacity:0}}
.tv2-crash-burst{position:absolute;width:100px;height:100px;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(255,60,30,.7),transparent);border-radius:50%;pointer-events:none;z-index:300;animation:tv2BurstBoom .5s ease-out forwards}
@keyframes tv2BurstBoom{0%{transform:translate(-50%,-50%) scale(0);opacity:1}50%{transform:translate(-50%,-50%) scale(2);opacity:.8}100%{transform:translate(-50%,-50%) scale(3);opacity:0}}
.tv2-crash-text{position:absolute;color:#FF3020;font-size:52px;font-weight:900;transform:translate(-50%,-50%);pointer-events:none;z-index:300;text-shadow:0 0 30px rgba(255,30,0,.9);animation:tv2TxtBoom .7s ease-out forwards}
@keyframes tv2TxtBoom{0%{transform:translate(-50%,-50%) scale(1.3);opacity:1}100%{transform:translate(-50%,-50%) scale(3.5);opacity:0}}
.tv2-flame{position:absolute;width:70px;height:70px;transform:translate(-50%,-50%);pointer-events:none;z-index:300;animation:tv2FlameIn .3s ease-out forwards,tv2FlameStay 1.6s .3s ease-out forwards}
.tv2-flame-core{position:absolute;left:50%;top:50%;width:26px;height:26px;margin-left:-13px;margin-top:-13px;border-radius:50%;animation:tv2CorePulse .25s ease-in-out infinite alternate}
.tv2-flame .tv2-spark{position:absolute;border-radius:50%;animation:tv2SparkUp var(--fly) ease-out forwards}
.tv2-flame.eat .tv2-flame-core{background:radial-gradient(circle,#FFF 20%,#FFD700 60%,#FF8C00);box-shadow:0 0 30px 10px #FFA000,0 0 60px 20px rgba(255,160,0,.4)}
.tv2-flame.eat .tv2-spark{background:radial-gradient(circle,#FFD700,#FF8C00)}
.tv2-flame.collide .tv2-flame-core{background:radial-gradient(circle,#FFF 20%,#FF4500 60%,#E02C2C);box-shadow:0 0 30px 10px #FF3020,0 0 60px 20px rgba(224,44,44,.4)}
.tv2-flame.collide .tv2-spark{background:radial-gradient(circle,#FF4500,#E02C2C)}
@keyframes tv2FlameIn{0%{transform:translate(-50%,-50%) scale(.2);opacity:0}100%{transform:translate(-50%,-50%) scale(1);opacity:1}}
@keyframes tv2FlameStay{0%{opacity:1}70%{opacity:.6}100%{opacity:0}}
@keyframes tv2CorePulse{0%{transform:scale(1);opacity:.75}100%{transform:scale(1.7);opacity:1}}
@keyframes tv2SparkUp{0%{transform:translate(0,0) scale(1);opacity:1}100%{transform:translate(var(--sx),var(--sy)) scale(0);opacity:0}}
.shaking{animation:potShakeFx .45s ease-out}@keyframes potShakeFx{0%,100%{transform:translateY(0)}20%{transform:translateY(-10px)}40%{transform:translateY(6px)}60%{transform:translateY(-4px)}80%{transform:translateY(2px)}}
#view-table.shake{animation:scrShakeFx .45s ease-out}@keyframes scrShakeFx{0%,100%{transform:translate(0,0)}15%{transform:translate(-5px,4px)}30%{transform:translate(6px,-3px)}45%{transform:translate(-4px,-5px)}60%{transform:translate(5px,3px)}75%{transform:translate(-3px,-4px)}90%{transform:translate(3px,2px)}}
/* ===== 玩家行动倒计时 ===== */

/* ===== 局内聊天 / 表情 ===== */
.chat-ov{position:absolute;inset:0;z-index:40;display:none}
.chat-ov.show{display:block}
.chat-bg{position:absolute;inset:0;background:rgba(0,0,0,.45)}
.chat-panel{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:100%;max-width:900px;background:#2C2C36;border-radius:24px 24px 0 0;padding:20px;z-index:41;box-sizing:border-box}
.chat-close{position:absolute;right:22px;top:18px;font-size:30px;color:#fff;cursor:pointer;width:40px;height:40px;display:flex;align-items:center;justify-content:center}
.chat-title{font-size:26px;color:#fff;font-weight:700;margin-bottom:16px}
.chat-sec-label{font-size:22px;color:#aaa;margin:8px 0 10px}
.chat-phrases{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:14px}
.chat-phrase{padding:10px 20px;background:#3A3A46;border-radius:20px;color:#fff;font-size:24px;cursor:pointer}
.chat-phrase:active{background:#4A4A58}
.chat-emojis{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.chat-emoji{width:64px;height:64px;font-size:44px;display:flex;align-items:center;justify-content:center;background:#3A3A46;border-radius:14px;cursor:pointer}
.chat-emoji:active{background:#4A4A58}
.chat-input-row{display:flex;gap:12px;margin-top:6px}
.chat-input{flex:1;height:60px;border-radius:16px;border:none;background:#3A3A46;color:#fff;font-size:26px;padding:0 20px;outline:none}
.chat-send{width:130px;height:60px;border-radius:16px;background:#48D1CC;color:#fff;font-size:26px;font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.chat-send:active{opacity:.85}
/* 气泡：收到消息时在发送者座位旁飘出 */
.chat-bubble{position:absolute;z-index:42;padding:8px 20px;border-radius:18px;background:rgba(0,0,0,.82);color:#fff;font-size:24px;font-weight:600;white-space:nowrap;pointer-events:none;animation:chatBubbleUp 1.6s ease-out forwards}
.chat-bubble.emoji{background:transparent;font-size:56px;padding:0}
@keyframes chatBubbleUp{0%{opacity:0;transform:translate(-50%,20px) scale(.6)}15%{opacity:1;transform:translate(-50%,0) scale(1.1)}30%{transform:translate(-50%,0) scale(1)}80%{opacity:1}100%{opacity:0;transform:translate(-50%,-120px) scale(1)}}
/* ===== 预装载语音面板 ===== */
.voice-ov{position:absolute;inset:0;z-index:40;display:none}
.voice-ov.show{display:block}
.voice-bg{position:absolute;inset:0;background:rgba(0,0,0,.45)}
.voice-panel{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:100%;max-width:900px;background:#2C2C36;border-radius:24px 24px 0 0;padding:20px;z-index:41;box-sizing:border-box;max-height:72%;overflow:hidden;display:flex;flex-direction:column}
.voice-close{position:absolute;right:22px;top:18px;font-size:30px;color:#fff;cursor:pointer;width:40px;height:40px;display:flex;align-items:center;justify-content:center;z-index:2}
.voice-title{font-size:26px;color:#fff;font-weight:700;margin-bottom:16px}
.voice-list{flex:1;overflow-y:auto;display:flex;flex-wrap:wrap;gap:12px;align-content:flex-start;padding-bottom:12px}
.voice-item{padding:12px 22px;background:#3A3A46;border-radius:22px;color:#fff;font-size:24px;cursor:pointer}
.voice-item:active{background:#4A4A58}
/* ===== 启动加载页 ===== */
#splash{position:fixed;inset:0;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;background:#0c241f;transition:opacity .5s ease;padding-bottom:80px}
#splash.hide{opacity:0;pointer-events:none}
#splash .sp-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.55}
#splash .sp-bar{width:320px;height:10px;background:rgba(255,255,255,.16);border-radius:5px;overflow:hidden;position:relative;z-index:1}
#splash .sp-fill{height:100%;width:0;background:linear-gradient(90deg,#FFD700,#FFB800);border-radius:5px;transition:width .2s ease}
#splash .sp-pct{font-size:18px;color:#e8e2d0;margin-top:16px;position:relative;z-index:1}
#splash .sp-item{font-size:14px;color:#9db8a8;margin-top:8px;position:relative;z-index:1}
