:root{
  --bg:#0f1226;
  --panel:#1a1f3c;
  --panel-2:#232a52;
  --gold:#f4c95d;
  --gold-deep:#d9a441;
  --text:#eef1ff;
  --muted:#9aa3c7;
  --green:#3ec97a;
  --red:#ff6b6b;
  --accent:#6c7bff;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;height:100%;}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  background:radial-gradient(circle at 50% -10%,#1b2150,#07091a 70%);
  color:var(--text);
  display:flex;align-items:center;justify-content:center;
  min-height:100vh;
}

/* ===== 横屏外壳 ===== */
#phone{
  width:100vw;height:100vh;
  background:var(--bg);
  display:flex;flex-direction:row;
  position:relative;overflow:hidden;
  box-shadow:0 0 60px rgba(0,0,0,.6);
}

/* 左侧边栏 */
#sidebar{
  width:260px;min-width:260px;
  background:linear-gradient(180deg,#161b38,#0f132b);
  border-right:1px solid rgba(255,255,255,.08);
  display:flex;flex-direction:column;
  padding:18px 14px 14px;
  z-index:5;
}
.sb-user{
  display:flex;align-items:center;gap:12px;
  background:var(--panel);border:1px solid rgba(255,255,255,.08);
  border-radius:16px;padding:14px;margin-bottom:14px;
}
.sb-avatar{
  width:52px;height:52px;border-radius:50%;
  background:linear-gradient(160deg,var(--gold),var(--gold-deep));
  color:#3a2a05;display:flex;align-items:center;justify-content:center;
  font-size:24px;font-weight:700;
}
.sb-info{flex:1;min-width:0;}
.sb-name{font-size:17px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sb-coins{font-size:15px;color:var(--gold);font-weight:700;margin-top:4px;}
.sb-tabs{
  display:flex;gap:8px;margin-bottom:10px;
}
.sb-tab{
  flex:1;background:var(--panel-2);border:1px solid rgba(255,255,255,.1);
  color:var(--muted);border-radius:10px;padding:9px 0;font-size:14px;font-weight:600;cursor:pointer;
}
.sb-tab.active{background:var(--gold);color:#3a2a05;border-color:var(--gold);}
.sb-list{
  flex:1;overflow-y:auto;display:none;flex-direction:column;gap:8px;
}
.sb-list.active{display:flex;}
.sb-empty{text-align:center;color:var(--muted);font-size:13px;padding:26px 0;}
.sb-row{
  display:flex;align-items:center;gap:10px;
  background:var(--panel);border:1px solid rgba(255,255,255,.06);
  border-radius:12px;padding:10px 12px;
}
.sb-row-av{
  width:34px;height:34px;border-radius:50%;background:var(--panel-2);
  display:flex;align-items:center;justify-content:center;font-size:15px;
}
.sb-row-name{flex:1;font-size:14px;font-weight:600;}
.sb-row-coins{font-size:12px;color:var(--gold);}

/* 右侧主内容区 */
#main{
  flex:1;display:flex;flex-direction:column;
  min-width:0;position:relative;
}
#topbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 18px;background:linear-gradient(180deg,#1c2350,#151a38);
  border-bottom:1px solid rgba(255,255,255,.06);
  height:58px;flex-shrink:0;
}
.tb-left{font-size:15px;color:var(--accent);cursor:pointer;min-width:54px;}
.tb-title{font-size:18px;font-weight:700;color:var(--gold);text-align:center;}
.tb-right{
  font-size:14px;color:var(--text);cursor:pointer;
  background:var(--panel-2);border:1px solid rgba(255,255,255,.1);
  border-radius:10px;padding:7px 12px;
}
.tb-right:hover{background:rgba(255,255,255,.06);}

#screens{
  flex:1;position:relative;overflow:hidden;
  display:flex;flex-direction:column;
}
.screen{display:none;animation:fade .25s ease;flex:1;min-height:0;overflow-y:auto;}
.screen.active{display:flex;}
@keyframes fade{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}

/* 底部导航 */
#bottom-nav{
  height:62px;flex-shrink:0;
  display:flex;border-top:1px solid rgba(255,255,255,.08);
  background:linear-gradient(180deg,#151a38,#0f132b);
}
.bn-btn{
  flex:1;background:none;border:none;color:var(--muted);
  font-size:15px;font-weight:600;cursor:pointer;
  border-right:1px solid rgba(255,255,255,.06);
}
.bn-btn:last-child{border-right:none;}
.bn-btn.active{color:var(--gold);background:rgba(244,201,93,.1);}

/* ===== 首页 ===== */
#screen-lobby{
  flex-direction:column;justify-content:center;align-items:center;
  padding:30px;
}
.lobby-entries{
  width:100%;max-width:900px;
  display:flex;flex-direction:row;justify-content:center;align-items:stretch;
  gap:32px;
}
.entry-card{
  flex:1;max-width:360px;min-width:220px;
  background:linear-gradient(160deg,var(--panel-2),var(--panel));
  border:1px solid rgba(255,255,255,.08);
  border-radius:26px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:32px 22px;gap:14px;
  cursor:pointer;transition:transform .12s ease,box-shadow .12s ease;
  box-shadow:0 10px 30px rgba(0,0,0,.25);
}
.entry-card:hover{box-shadow:0 12px 36px rgba(108,123,255,.22);}
.entry-card:active{transform:scale(.97);}
.entry-mj{background:linear-gradient(160deg,#2a1f3d,#1a1530);border-color:rgba(244,201,93,.15);}
.entry-poker{background:linear-gradient(160deg,#1f2a3d,#151e30);border-color:rgba(108,123,255,.15);}
.entry-icon{font-size:76px;filter:drop-shadow(0 8px 16px rgba(0,0,0,.3));}
.entry-title{font-size:28px;font-weight:800;letter-spacing:2px;}
.entry-sub{font-size:13px;color:var(--muted);margin-top:6px;}

/* ===== 分类选择页 ===== */
#screen-category{
  flex-direction:column;padding:18px 22px 14px;align-items:flex-start;
}
.cat-back{font-size:14px;color:var(--accent);cursor:pointer;margin-bottom:6px;}
.cat-back:hover{color:var(--text);}
#screen-category .cat-title{font-size:22px;font-weight:700;margin-bottom:14px;color:var(--text);}
#screen-category .game-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));
  gap:16px;width:100%;
}

/* ===== 通用按钮 ===== */
.btn{
  border:none;border-radius:12px;padding:12px 18px;font-size:15px;font-weight:600;
  cursor:pointer;transition:transform .1s ease,opacity .2s;
}
.btn:active{transform:scale(.95);}
.btn.primary{background:linear-gradient(180deg,var(--gold),var(--gold-deep));color:#3a2a05;}
.btn.ghost{background:var(--panel-2);color:var(--text);border:1px solid rgba(255,255,255,.1);}
.btn:disabled{opacity:.4;cursor:not-allowed;}
.ctrl-row{display:flex;gap:10px;margin-top:14px;}
.ctrl-row .btn{flex:1;}

/* ===== 房间准备（= 场内牌桌 + 空位） ===== */
.room-board{position:relative;flex:1;display:flex;flex-direction:column;min-height:0;background:radial-gradient(ellipse at 50% 26%,#2c6e4f 0%,#1d4d36 55%,#0d2b1d 100%);overflow:hidden;}
.rb-table{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:20px 16px;min-height:0;overflow-y:auto;}
.rb-table::before{content:'';position:absolute;inset:10px 12px;border:4px solid #d4a85e;border-radius:26px;box-shadow:inset 0 0 0 2px #6b4a2e,inset 0 0 36px rgba(0,0,0,.5),0 0 0 1px #b88a45;pointer-events:none;}
.rb-head{display:flex;align-items:center;z-index:2;}
.rb-chip{background:rgba(0,0,0,.35);border:1px solid rgba(244,201,93,.4);color:#ffe9b0;font-size:13px;padding:6px 16px;border-radius:999px;letter-spacing:1px;}
.rb-chip b{font-size:18px;letter-spacing:3px;color:var(--gold);}
.copy{font-size:12px;color:#9fb4ff;margin-left:10px;cursor:pointer;z-index:2;}
.rb-title{font-size:13px;color:rgba(255,255,255,.78);z-index:2;text-shadow:0 1px 2px rgba(0,0,0,.5);text-align:center;}
.rb-seats{display:grid;grid-template-columns:repeat(2,minmax(122px,150px));gap:12px;z-index:2;justify-content:center;}
.rb-seat{background:linear-gradient(160deg,rgba(20,28,48,.88),rgba(9,13,26,.94));border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:12px 10px;text-align:center;transition:all .2s ease;}
.rb-seat.me{border-color:rgba(108,123,255,.65);box-shadow:0 0 12px rgba(108,123,255,.3);}
.rb-seat.owner{border-color:rgba(244,201,93,.6);}
.rb-seat.ready{border-color:rgba(62,201,122,.6);box-shadow:0 0 12px rgba(62,201,122,.25);}
.rb-seat.empty{background:rgba(0,0,0,.16);border:1.5px dashed rgba(255,255,255,.28);}
.rb-av{width:44px;height:44px;border-radius:50%;background:linear-gradient(160deg,var(--accent),#4954c9);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:19px;font-weight:700;margin-bottom:6px;box-shadow:0 2px 6px rgba(0,0,0,.4);}
.rb-seat.empty .rb-av{background:transparent;border:1.5px dashed rgba(255,255,255,.35);color:rgba(255,255,255,.5);box-shadow:none;font-weight:400;}
.rb-nm{font-size:13px;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:132px;margin:0 auto;}
.rb-seat.empty .rb-nm{color:rgba(255,255,255,.5);font-weight:600;}
.rb-rd{font-size:11px;color:#8fd8ab;margin-top:3px;}
.rb-seat.empty .rb-rd{color:rgba(255,255,255,.35);}
.rb-tip{font-size:12px;color:rgba(255,255,255,.6);z-index:2;text-shadow:0 1px 2px rgba(0,0,0,.5);}
.rb-actions{position:relative;display:flex;gap:10px;justify-content:center;padding:12px 14px;background:linear-gradient(180deg,rgba(15,18,38,.96),rgba(7,9,26,.98));border-top:1px solid rgba(255,255,255,.1);z-index:4;}
.rb-actions button{flex:1;max-width:170px;border:none;border-radius:12px;padding:13px;font-size:16px;font-weight:700;cursor:pointer;}
.rb-actions button:active{transform:scale(.95);}
.btn-ready{background:linear-gradient(180deg,var(--gold),var(--gold-deep));color:#3a2a05;box-shadow:0 4px 10px rgba(244,201,93,.25);}
.btn-start{background:linear-gradient(180deg,var(--green),#2fa862);color:#06250f;box-shadow:0 4px 10px rgba(62,201,122,.25);}
.btn-leave{background:var(--panel-2);color:var(--text);border:1px solid rgba(255,255,255,.12);}

/* ===== 对局通用 ===== */
#screen-game{flex-direction:column;padding:10px 16px 14px;}
.gboard{flex:1;display:flex;flex-direction:column;min-height:0;}

/* ===== 斗地主 ===== */
.ddz-board{position:relative;flex:1;display:flex;flex-direction:column;min-height:0;background:radial-gradient(ellipse at 50% 26%,#2c6e4f 0%,#1d4d36 55%,#0d2b1d 100%);overflow:hidden;}
.ddz-table{position:relative;flex:1;min-height:0;}
.ddz-table::before{content:'';position:absolute;inset:10px 12px;border:4px solid #d4a85e;border-radius:26px;box-shadow:inset 0 0 0 2px #6b4a2e,inset 0 0 36px rgba(0,0,0,.5),0 0 0 1px #b88a45;pointer-events:none;z-index:2;}
.ddz-seat{position:absolute;top:20px;background:linear-gradient(160deg,rgba(20,28,48,.88),rgba(9,13,26,.94));border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:8px 14px;text-align:center;min-width:104px;transition:all .25s ease;z-index:3;backdrop-filter:blur(4px);}
.ddz-seat.left{left:26px;}
.ddz-seat.right{right:26px;}
.ddz-seat.on{border-color:var(--green);box-shadow:0 0 0 1px var(--green),0 0 16px rgba(62,201,122,.45);transform:translateY(-2px);}
.opp-av{width:38px;height:38px;border-radius:50%;background:linear-gradient(160deg,var(--accent),#4954c9);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:17px;font-weight:700;margin-bottom:4px;box-shadow:0 2px 6px rgba(0,0,0,.4);}
.opp-name{font-size:13px;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:110px;margin:0 auto;}
.opp-cards{font-size:12px;color:#cfe8da;margin-top:3px;letter-spacing:1px;}
.opp-turn{position:absolute;top:8px;right:8px;width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,.15);}
.opp-turn.on{background:var(--green);box-shadow:0 0 10px var(--green);animation:pointerPulse 1.2s ease infinite;}
.play-center{position:absolute;top:78px;left:16px;right:16px;bottom:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:0;pointer-events:none;z-index:3;}
.multi{font-size:13px;color:var(--gold);font-weight:700;background:rgba(0,0,0,.32);padding:4px 16px;border-radius:999px;border:1px solid rgba(244,201,93,.35);letter-spacing:1px;}
.lastplay{display:flex;flex-direction:column;align-items:center;gap:8px;min-height:64px;justify-content:center;}
.lp-name{font-size:12px;color:rgba(255,255,255,.78);text-shadow:0 1px 2px rgba(0,0,0,.6);}
.lp-cards{display:flex;gap:5px;flex-wrap:wrap;justify-content:center;max-width:94%;}
.lp-cards .cd{animation:cardIn .35s cubic-bezier(.5,1.5,.4,1) both;}
.lp-cards .cd:nth-child(2){animation-delay:.04s;}
.lp-cards .cd:nth-child(3){animation-delay:.08s;}
.lp-cards .cd:nth-child(4){animation-delay:.12s;}
.lp-cards .cd:nth-child(5){animation-delay:.16s;}
.lp-cards .cd:nth-child(6){animation-delay:.2s;}
.lp-cards .cd:nth-child(7){animation-delay:.24s;}
.lp-cards .cd:nth-child(8){animation-delay:.28s;}
.phase-tip{font-size:13px;color:rgba(255,255,255,.72);text-shadow:0 1px 2px rgba(0,0,0,.6);}
.bid-bar{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;gap:8px;align-items:center;justify-content:center;padding:14px 18px;flex-wrap:wrap;background:rgba(7,12,24,.92);border:1px solid rgba(244,201,93,.4);border-radius:16px;z-index:6;box-shadow:0 10px 28px rgba(0,0,0,.5);}
.bid-tip{font-size:14px;color:#fff;}
.bid-btn{background:linear-gradient(180deg,var(--gold),var(--gold-deep));color:#3a2a05;border:none;border-radius:10px;padding:10px 16px;font-size:15px;font-weight:700;cursor:pointer;box-shadow:0 3px 8px rgba(0,0,0,.35);}
.bid-btn:active{transform:scale(.94);}
.ddz-self{position:relative;background:linear-gradient(180deg,rgba(15,18,38,.96),rgba(7,9,26,.98));border-top:1px solid rgba(255,255,255,.1);padding:8px 14px 12px;z-index:4;}
.myhand{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;min-height:92px;margin-bottom:8px;}
#board-ddz .myhand{gap:0;flex-wrap:nowrap;overflow-x:auto;padding:26px 0 4px;-webkit-overflow-scrolling:touch;}
#board-ddz .myhand .cd.hand{margin-left:-26px;flex:0 0 auto;}
#board-ddz .myhand .cd.hand:first-child{margin-left:0;}
#board-ddz .myhand .cd.hand:hover{transform:translateY(-6px);z-index:5;}
#board-ddz .myhand .cd.hand.sel{transform:translateY(-22px);z-index:6;}
.play-actions{display:flex;gap:10px;justify-content:center;}
.btn-pass,.btn-play{flex:1;max-width:160px;border:none;border-radius:12px;padding:13px;font-size:16px;font-weight:700;cursor:pointer;}
.btn-pass{background:var(--panel-2);color:var(--text);border:1px solid rgba(255,255,255,.12);}
.btn-play{background:linear-gradient(180deg,var(--gold),var(--gold-deep));color:#3a2a05;box-shadow:0 4px 10px rgba(244,201,93,.25);}
.btn-pass:active,.btn-play:active{transform:scale(.95);}
@keyframes cardIn{0%{transform:translateY(26px) scale(.5);opacity:0;}60%{transform:translateY(-6px) scale(1.08);opacity:1;}100%{transform:translateY(0) scale(1);}}

/* ===== 麻将 ===== */
.mj-board{position:relative;flex:1;display:flex;flex-direction:column;min-height:0;background:linear-gradient(135deg,#3d2410 0%,#5a3a1f 40%,#4a2e15 100%);overflow:hidden;}
/* 木框金边 */
.mj-board::before{content:'';position:absolute;inset:8px;border:5px solid #d4a85e;border-radius:18px;box-shadow:inset 0 0 0 2px #6b4a2e,inset 0 0 0 4px #2a1810,0 0 0 1px #b88a45;pointer-events:none;z-index:4;}
/* 蓝色牌桌 */
.mj-board::after{content:'';position:absolute;inset:24px;background:radial-gradient(ellipse at center,#3a7290 0%,#2a5478 55%,#1a3a55 100%);border-radius:12px;box-shadow:inset 0 6px 24px rgba(0,0,0,.55),inset 0 -4px 16px rgba(0,0,0,.4);pointer-events:none;z-index:1;}

/* 八角罗盘（中央） */
.compass{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:96px;height:96px;z-index:6;display:flex;align-items:center;justify-content:center;}
.compass .compass-bg{position:absolute;inset:0;background:linear-gradient(160deg,#5a4528 0%,#2c1d10 100%);clip-path:polygon(30% 0%,70% 0%,100% 30%,100% 70%,70% 100%,30% 100%,0% 70%,0% 30%);box-shadow:inset 0 0 0 2px #d4a85e,inset 0 0 12px rgba(0,0,0,.6),0 4px 16px rgba(0,0,0,.5);}
.compass .compass-label{position:absolute;color:#d4a85e;font-size:12px;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.8);font-family:"PingFang SC","Microsoft YaHei",sans-serif;}
.compass .l1{top:8px;left:50%;transform:translateX(-50%);}
.compass .l2{top:50%;right:8px;transform:translateY(-50%);}
.compass .l3{bottom:8px;left:50%;transform:translateX(-50%);}
.compass .l4{top:50%;left:8px;transform:translateY(-50%);}
.compass .compass-count{position:relative;font-size:30px;font-weight:900;color:#ffd54a;text-shadow:0 0 8px #ff6b6b,0 2px 4px rgba(0,0,0,.8);font-family:monospace;z-index:1;}
.compass.pulse .compass-bg{animation:compassPulse 1s ease infinite;}
@keyframes compassPulse{0%,100%{box-shadow:inset 0 0 0 2px #d4a85e,inset 0 0 12px rgba(0,0,0,.6),0 4px 16px rgba(0,0,0,.5);}50%{box-shadow:inset 0 0 0 2px #ffd54a,inset 0 0 18px rgba(244,201,93,.4),0 4px 16px rgba(244,201,93,.3);}}

/* 四角玩家 */
.mj-corner{position:absolute;z-index:5;display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px;}
.mj-corner .av{width:46px;height:46px;border-radius:50%;background:linear-gradient(160deg,var(--accent),#4954c9);color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;box-shadow:0 3px 8px rgba(0,0,0,.4);position:relative;cursor:pointer;}
.mj-corner.on .av{box-shadow:0 0 0 3px var(--green),0 0 14px var(--green);}
.mj-corner.won .av{box-shadow:0 0 0 3px var(--gold),0 0 14px var(--gold);}
.mj-corner.out{opacity:.4;filter:grayscale(.7);}
.mj-corner .nm{font-size:12px;font-weight:600;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.8);max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.mj-corner .chips{font-size:11px;color:#ffd54a;background:rgba(0,0,0,.4);padding:1px 8px;border-radius:10px;font-weight:700;}
.mj-corner .void-tag{position:absolute;top:-4px;right:-6px;width:20px;height:20px;border-radius:50%;font-size:11px;color:#fff;font-weight:900;display:flex;align-items:center;justify-content:center;border:2px solid #fff;box-shadow:0 2px 4px rgba(0,0,0,.4);}
.mj-corner .void-tag.W{background:#d23b3b;}
.mj-corner .void-tag.T{background:#3a7ec9;}
.mj-corner .void-tag.B{background:#3aa55c;}
.mj-corner.tl{top:34px;left:18px;}
.mj-corner.tr{top:34px;right:18px;}
.mj-corner.ml{bottom:180px;left:18px;}
.mj-corner.mr{bottom:180px;right:18px;}

/* 3D 牌墙 */
.mj-walls{position:absolute;inset:24px;z-index:2;pointer-events:none;}
.mj-wall{position:absolute;display:flex;gap:0;}
.mj-wall.top{top:8px;left:50%;transform:translateX(-50%);flex-direction:row;}
.mj-wall.top-2{top:8px;left:50%;transform:translateX(-50%) translateY(28px);flex-direction:row;}
.mj-wall.left{left:8px;top:50%;transform:translateY(-50%) rotate(90deg);flex-direction:row;transform-origin:left center;}
.mj-wall.right{right:8px;top:50%;transform:translateY(-50%) rotate(-90deg);flex-direction:row;transform-origin:right center;}
.mj-wall-tile{width:13px;height:22px;background:linear-gradient(180deg,#5fa56c 0%,#3d7e4a 60%,#2a5a36 100%);border-radius:1px 1px 2px 2px;box-shadow:0 1px 0 #1a3a25,inset 0 1px 0 rgba(255,255,255,.2);position:relative;}
.mj-wall-tile::before{content:'';position:absolute;top:2px;left:2px;right:2px;height:1px;background:rgba(255,255,255,.15);}

/* 飘字废牌（最近出牌，闪动小火焰） */
.mj-floating-discards{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:5;display:flex;flex-wrap:wrap;gap:6px;justify-content:center;max-width:55%;pointer-events:none;}
.mj-fd{position:relative;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(170deg,#fffef8 0%,#f5eed8 55%,#e8dbb6 100%);color:#3a2a1a;border-radius:5px;border:1px solid #c9b787;width:36px;height:47px;padding:1px;box-sizing:border-box;box-shadow:0 2px 5px rgba(0,0,0,.4);animation:tilePop .4s cubic-bezier(.5,1.6,.4,1) both;line-height:1;}
.mj-fd .mj-art{width:100%;height:100%;display:block;}
.mj-fd::after{content:'';position:absolute;top:-8px;left:50%;transform:translateX(-50%);width:8px;height:10px;background:radial-gradient(ellipse at bottom,#ffd54a,#ff6b3b);border-radius:50% 50% 50% 50% / 60% 60% 40% 40%;box-shadow:0 0 8px #ff6b3b;animation:flameFlicker .5s ease infinite alternate;}
@keyframes flameFlicker{0%{transform:translateX(-50%) scale(1) translateY(0);opacity:.95;}100%{transform:translateX(-50%) scale(1.15) translateY(-2px);opacity:1;}}

/* 牌桌 UI 状态条（牌墙余量、提示） */
.mj-status{position:absolute;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.45);color:#cfe6f5;padding:4px 14px;border-radius:14px;font-size:12px;z-index:6;backdrop-filter:blur(4px);border:1px solid rgba(255,255,255,.1);}
.mj-status.top-info{top:8px;}
.mj-status.bot-info{bottom:188px;}

/* 鸣牌区（中间弹出） */
.mj-claim-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(7,9,26,.95);border:2px solid #d4a85e;border-radius:14px;padding:14px 22px;display:flex;gap:10px;align-items:center;justify-content:center;flex-wrap:wrap;z-index:8;box-shadow:0 0 0 4px rgba(212,168,94,.15),0 12px 32px rgba(0,0,0,.6);min-width:340px;}
.mj-claim-overlay .claim-title{position:absolute;top:-14px;left:50%;transform:translateX(-50%);background:#d4a85e;color:#2a1810;padding:3px 14px;border-radius:10px;font-size:12px;font-weight:700;}

/* 定缺选择：3 个大圆彩色按钮 */
.mj-void-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(7,9,26,.85);border:2px solid #d4a85e;border-radius:16px;padding:24px 32px;display:flex;gap:18px;align-items:center;justify-content:center;z-index:8;box-shadow:0 12px 36px rgba(0,0,0,.7);flex-direction:column;}
.mj-void-overlay .void-title{color:#d4a85e;font-size:14px;font-weight:700;}
.mj-void-overlay .void-btns{display:flex;gap:14px;}
.mj-void-overlay .void-btn{width:62px;height:62px;border-radius:50%;border:none;font-size:30px;font-weight:900;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 16px rgba(0,0,0,.5);transition:transform .12s ease;}
.mj-void-overlay .void-btn.W{background:linear-gradient(160deg,#ff7b6b,#c0392b);}
.mj-void-overlay .void-btn.T{background:linear-gradient(160deg,#7bc0ff,#2c70b8);}
.mj-void-overlay .void-btn.B{background:linear-gradient(160deg,#7bff95,#2ca855);}
.mj-void-overlay .void-btn:active{transform:scale(.92);}
.mj-void-overlay .void-btn:hover{transform:translateY(-3px) scale(1.05);}

/* 自己区 */
.mj-self{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(180deg,rgba(40,26,12,.92),rgba(20,12,4,.98));border-top:3px solid #d4a85e;padding:8px 12px 10px;z-index:5;box-shadow:0 -4px 14px rgba(0,0,0,.6);}
.mj-self .mj-melds{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin-bottom:4px;min-height:24px;}
.mj-self .mj-hand{display:flex;gap:2px;justify-content:center;flex-wrap:nowrap;overflow-x:auto;padding:14px 0 4px;min-height:80px;-webkit-overflow-scrolling:touch;}
.mj-actions{display:flex;gap:8px;justify-content:center;padding-top:4px;}
.mj-meld{display:inline-flex;align-items:center;gap:2px;background:linear-gradient(160deg,#4a8c5a,#2a5a36);border:1px solid #d4a85e;color:#fff;border-radius:6px;padding:3px 5px;}
.mj-meld.kong{background:linear-gradient(160deg,#c0392b,#7a1f15);}

/* 麻将牌 emoji */
.mt{display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(170deg,#fffef8 0%,#f5eed8 55%,#e8dbb6 100%);color:#3a2a1a;border-radius:6px;border:1px solid #c9b787;box-shadow:0 2px 4px rgba(0,0,0,.4),inset 0 1px 0 #fff;user-select:none;line-height:1;position:relative;padding:2px;box-sizing:border-box;}
.mt .mj-art{width:100%;height:100%;display:block;}
.mt.river-tile{width:34px;height:44px;animation:riverFade .4s ease both;}
.mt.last-tile{width:56px;height:72px;animation:tilePop .4s cubic-bezier(.5,1.6,.4,1) both;box-shadow:0 6px 14px rgba(0,0,0,.45);border:2px solid #fff;}
.mt.hand{width:46px;height:62px;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease;}
.mt.hand:hover{transform:translateY(-3px);box-shadow:0 4px 10px rgba(0,0,0,.5);}
.mt.hand.sel{transform:translateY(-16px);box-shadow:0 0 0 3px var(--gold),0 8px 16px rgba(0,0,0,.6);}
.mt.hand.void{opacity:.45;border:2px dashed #ff5252;}
.mt.mini{width:26px;height:35px;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,.35);}

@keyframes tilePop{0%{transform:scale(.2) rotate(-15deg);opacity:0;}60%{transform:scale(1.15) rotate(5deg);opacity:1;}100%{transform:scale(1) rotate(0);opacity:1;}}
@keyframes riverFade{0%{transform:scale(.6) translateY(-8px);opacity:0;}100%{transform:scale(1) translateY(0);opacity:1;}}

/* 胡牌特效 */
.win-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;z-index:50;pointer-events:none;background:radial-gradient(ellipse at center,rgba(244,201,93,.25) 0%,transparent 60%);}
.win-overlay .win-text{font-size:140px;font-weight:900;color:#ffd54a;text-shadow:0 0 24px #ff6b6b,0 0 48px #ffd54a,0 4px 0 #b88300;animation:winPop 1.4s ease both;font-family:"PingFang SC","Microsoft YaHei",sans-serif;letter-spacing:8px;}
.win-overlay .win-sub{margin-top:8px;font-size:18px;background:rgba(244,201,93,.92);color:#3a2a05;padding:6px 22px;border-radius:999px;font-weight:700;animation:winPop 1.4s ease .2s both;letter-spacing:2px;}
@keyframes winPop{0%{transform:scale(0) rotate(-25deg);opacity:0;}45%{transform:scale(1.3) rotate(8deg);opacity:1;}75%{transform:scale(.95) rotate(-2deg);}100%{transform:scale(1) rotate(0);opacity:1;}}

.act-flash{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:80px;font-weight:900;color:#ffd54a;text-shadow:0 0 20px #ff6b6b,0 0 40px #ffd54a;z-index:20;animation:flashIn .8s ease both;pointer-events:none;letter-spacing:6px;font-family:"PingFang SC","Microsoft YaHei",sans-serif;}
@keyframes flashIn{0%{transform:translate(-50%,-50%) scale(0);opacity:0;}50%{transform:translate(-50%,-50%) scale(1.3);opacity:1;}100%{transform:translate(-50%,-50%) scale(1);opacity:0;}}

/* ===== 德州扑克 ===== */
.tx-board{position:relative;flex:1;display:flex;flex-direction:column;min-height:0;background:radial-gradient(ellipse at 50% 28%,#243b63 0%,#17284a 55%,#0b1330 100%);overflow:hidden;}
.tx-felt{position:relative;flex:1;min-height:0;}
.tx-felt::before{content:'';position:absolute;inset:10px 12px;border:4px solid #d4a85e;border-radius:26px;box-shadow:inset 0 0 0 2px #6b4a2e,inset 0 0 36px rgba(0,0,0,.5),0 0 0 1px #b88a45;pointer-events:none;z-index:2;}
.tx-top{position:absolute;top:22px;left:20px;right:20px;display:flex;gap:10px;justify-content:center;flex-wrap:wrap;z-index:3;}
.tx-pl{flex:0 1 150px;min-width:104px;position:relative;background:linear-gradient(160deg,rgba(20,28,48,.88),rgba(9,13,26,.94));border-radius:14px;padding:8px 10px;text-align:center;border:1px solid rgba(255,255,255,.1);transition:all .25s ease;backdrop-filter:blur(4px);}
.tx-pl.on{border-color:var(--green);box-shadow:0 0 0 1px var(--green),0 0 14px rgba(62,201,122,.4);}
.tx-pl.fold{opacity:.4;filter:grayscale(.5);}
.tx-pl.dealer{border-color:rgba(244,201,93,.55);}
.tx-pl-av{width:32px;height:32px;border-radius:50%;background:linear-gradient(160deg,var(--accent),#4954c9);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;margin-bottom:3px;}
.tx-pl-name{font-size:12px;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tx-pl-cards{font-size:14px;font-weight:700;color:var(--gold);letter-spacing:2px;}
.tx-pl-stack{font-size:11px;color:#c9d4f0;margin-top:1px;}
.tx-pl-bet{position:absolute;top:-9px;right:-6px;background:linear-gradient(180deg,var(--gold),var(--gold-deep));color:#3a2a05;font-size:11px;font-weight:800;border-radius:999px;padding:2px 9px;box-shadow:0 2px 6px rgba(0,0,0,.4);}
.tx-center{position:absolute;top:86px;left:16px;right:16px;bottom:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:0;pointer-events:none;z-index:3;}
.tx-pot{font-size:14px;color:var(--gold);font-weight:800;background:rgba(0,0,0,.32);padding:5px 18px;border-radius:999px;border:1px solid rgba(244,201,93,.35);letter-spacing:1px;text-align:center;}
.tx-board{display:flex;gap:6px;justify-content:center;}
.tx-showdown{display:flex;flex-direction:column;gap:4px;align-items:center;}
.tx-sd-row{font-size:13px;color:#e8ecf8;background:rgba(0,0,0,.35);border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:4px 12px;}
.tx-self{position:relative;background:linear-gradient(180deg,rgba(15,18,38,.96),rgba(7,9,26,.98));border-top:1px solid rgba(255,255,255,.1);padding:10px 14px 12px;z-index:4;}
.tx-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;}
.tx-raise-row{display:flex;gap:8px;flex:1 1 100%;max-width:320px;}
.tx-raise-row input{flex:1;background:var(--panel-2);border:1px solid rgba(255,255,255,.12);border-radius:10px;color:var(--text);padding:10px;font-size:15px;min-width:0;}
.btn-fold,.btn-call{flex:1;max-width:140px;border:none;border-radius:12px;padding:13px;font-size:15px;font-weight:700;cursor:pointer;}
.btn-fold{background:var(--panel-2);color:var(--red);border:1px solid rgba(255,107,107,.4);}
.btn-call{background:var(--panel-2);color:var(--accent);border:1px solid rgba(108,123,255,.4);}
.btn-fold:active,.btn-call:active{transform:scale(.95);}
@keyframes cardFlip{0%{transform:rotateY(90deg) scale(.7);opacity:0;}60%{transform:rotateY(-12deg) scale(1.05);opacity:1;}100%{transform:rotateY(0) scale(1);}}

/* ===== 牌（真实扑克牌面，手机尺寸放大） ===== */
.cd{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;border-radius:8px;background:linear-gradient(170deg,#fffefa,#f2efe4);color:#1d2733;font-weight:800;min-width:48px;height:66px;padding:4px 6px;box-shadow:0 2px 6px rgba(0,0,0,.4),inset 0 1px 0 #fff;user-select:none;line-height:1;box-sizing:border-box;border:1px solid #cfcabb;}
.cd .cf-rank{font-size:30px;font-family:"Arial Black",Arial,"PingFang SC",sans-serif;}
.cd .cf-suit{font-size:25px;}
.cd.red{color:#d02a2a;}
.cd.black{color:#1d2733;}
.cd.rj{color:#d02a2a;background:linear-gradient(170deg,#fff8f4,#ffe4dc);border-color:#e5b6a8;padding:3px;}
.cd.bj{color:#20365e;background:linear-gradient(170deg,#f6f9ff,#dde6fb);border-color:#a9b8dd;padding:3px;}
.cd .cf-joker{width:100%;height:100%;display:block;}
.cd.hand{cursor:pointer;transition:transform .13s ease,box-shadow .13s ease;align-items:flex-start;justify-content:flex-start;padding:6px 6px 5px 7px;min-width:52px;height:70px;}
.cd.hand .cf-rank{font-size:23px;}
.cd.hand .cf-suit{font-size:19px;}
.cd.hand:hover{transform:translateY(-6px);z-index:5;}
.cd.hand.sel{transform:translateY(-22px);outline:3px solid var(--gold);box-shadow:0 10px 18px rgba(0,0,0,.5),inset 0 1px 0 #fff;z-index:6;}
.cd.hand:active{transform:translateY(-8px);}
#txHole .cd.hand{cursor:default;}
#txHole .cd.hand:hover{transform:none;}
.lp-cards .cd{min-width:46px;height:63px;}
.lp-cards .cd .cf-rank{font-size:28px;}
.lp-cards .cd .cf-suit{font-size:23px;}
.cd.board{min-width:50px;height:68px;}
.cd.board .cf-rank{font-size:30px;}
.cd.board .cf-suit{font-size:25px;}
.cd.board.new{animation:cardFlip .5s ease both;}
.cd.board.empty{background:rgba(255,255,255,.06);color:rgba(255,255,255,.3);box-shadow:none;border:1px dashed rgba(255,255,255,.25);}

/* ===== 登录 ===== */
.hidden{display:none !important;}
.overlay{position:absolute;inset:0;background:rgba(5,8,24,.92);display:flex;align-items:center;justify-content:center;z-index:50;}
.auth-card{width:84%;max-width:360px;background:var(--panel);border-radius:20px;padding:24px 20px;border:1px solid rgba(255,255,255,.08);}
.auth-logo{text-align:center;font-size:22px;font-weight:700;color:var(--gold);margin-bottom:16px;}
.auth-tabs{display:flex;justify-content:center;gap:18px;margin-bottom:16px;}
.at{color:var(--muted);font-size:15px;padding-bottom:4px;cursor:pointer;}
.at.active{color:var(--text);border-bottom:2px solid var(--gold);}
.auth-card input{width:100%;padding:12px;margin-bottom:10px;background:var(--panel-2);border:1px solid rgba(255,255,255,.1);border-radius:10px;color:var(--text);font-size:15px;box-sizing:border-box;}
.auth-card button{width:100%;padding:13px;background:linear-gradient(180deg,var(--gold),var(--gold-deep));color:#3a2a05;border:none;border-radius:12px;font-size:16px;font-weight:700;cursor:pointer;}
.auth-msg{color:var(--red);font-size:13px;text-align:center;min-height:16px;margin-top:8px;}
.auth-wx{text-align:center;color:var(--accent);font-size:13px;margin-top:14px;cursor:pointer;}

/* ===== Toast ===== */
.toast{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:rgba(0,0,0,.85);color:#fff;padding:12px 18px;border-radius:12px;font-size:14px;z-index:60;opacity:0;pointer-events:none;transition:opacity .2s;max-width:80%;text-align:center;}
.toast.show{opacity:1;}

/* ===== 旧组件兼容 ===== */
.cat-title{font-size:13px;color:var(--muted);margin:18px 0 4px;letter-spacing:1px;}
.gc-icon{font-size:46px;}
.gc-name{font-size:17px;font-weight:700;margin-top:6px;}
.gc-sub{font-size:12px;color:var(--muted);margin-top:3px;}
.game-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:10px;}
.game-card{
  background:linear-gradient(160deg,var(--panel-2),var(--panel));
  border:1px solid rgba(255,255,255,.07);
  border-radius:18px;padding:22px 14px;text-align:center;cursor:pointer;
  transition:transform .12s ease,box-shadow .12s ease;
}
.game-card:active{transform:scale(.96);}
.game-card:hover{box-shadow:0 8px 24px rgba(108,123,255,.25);}

/* ===== 个人主页 ===== */
#screen-profile{flex-direction:column;padding:18px 22px;}
.profile-wrap{
  flex:1;min-height:0;display:flex;gap:18px;
  max-width:1100px;width:100%;margin:0 auto;
}
.pf-left{flex:0 0 300px;display:flex;flex-direction:column;gap:14px;}
.pf-right{
  flex:1;min-width:0;background:var(--panel);border:1px solid rgba(255,255,255,.07);
  border-radius:18px;display:flex;flex-direction:column;overflow:hidden;
}
.pf-card{
  background:var(--panel);border:1px solid rgba(255,255,255,.07);
  border-radius:18px;padding:16px;
}
.pf-user{display:flex;align-items:center;gap:14px;
  background:linear-gradient(160deg,#2a2340,#1a1f3c);border-color:rgba(244,201,93,.2);}
.pf-avatar{
  width:64px;height:64px;border-radius:50%;
  background:linear-gradient(160deg,var(--gold),var(--gold-deep));
  color:#3a2a05;display:flex;align-items:center;justify-content:center;
  font-size:30px;font-weight:800;
}
.pf-nick{font-size:19px;font-weight:700;}
.pf-meta{font-size:12px;color:var(--muted);margin-top:4px;}
.pf-wallet-row{display:flex;align-items:center;justify-content:space-between;}
.pf-balance{font-size:22px;font-weight:800;color:var(--gold);}
.pf-stats{display:flex;}
.pf-stat{flex:1;text-align:center;}
.pf-stat + .pf-stat{border-left:1px solid rgba(255,255,255,.08);}
.pf-stat-num{font-size:20px;font-weight:800;color:var(--text);}
.pf-stat-num.pos{color:var(--green);}
.pf-stat-num.neg{color:var(--red);}
.pf-stat-label{font-size:12px;color:var(--muted);margin-top:4px;}
.pf-tabs{display:flex;border-bottom:1px solid rgba(255,255,255,.08);}
.pf-tab{
  flex:1;background:none;border:none;color:var(--muted);
  font-size:15px;font-weight:600;padding:14px 0;cursor:pointer;
  border-bottom:2px solid transparent;
}
.pf-tab.active{color:var(--gold);border-bottom-color:var(--gold);}
.pf-list{flex:1;overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:8px;}
.pf-row{
  display:flex;align-items:center;gap:10px;
  background:var(--panel-2);border-radius:12px;padding:11px 14px;
}
.pf-row-icon{font-size:20px;}
.pf-row-main{flex:1;min-width:0;}
.pf-row-title{font-size:14px;font-weight:600;}
.pf-row-sub{font-size:11px;color:var(--muted);margin-top:2px;}
.pf-row-amount{font-size:15px;font-weight:800;}
.pf-row-amount.pos{color:var(--green);}
.pf-row-amount.neg{color:var(--red);}
.pf-empty{text-align:center;color:var(--muted);font-size:13px;padding:30px 0;}

/* 充值弹窗 */
.rc-card{max-width:420px;}
.rc-plans{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.rc-plan{
  background:var(--panel-2);border:1px solid rgba(255,255,255,.12);border-radius:14px;
  padding:12px;text-align:center;cursor:pointer;transition:transform .1s ease;
}
.rc-plan:active{transform:scale(.95);}
.rc-plan:hover{border-color:var(--gold);}
.rc-plan-coins{font-size:16px;font-weight:800;color:var(--gold);}
.rc-plan-bonus{font-size:11px;color:var(--green);margin-top:2px;}
.rc-plan-price{font-size:12px;color:var(--muted);margin-top:4px;}
.rc-foot{text-align:center;color:var(--muted);font-size:13px;margin-top:14px;cursor:pointer;}
.rc-ratio{font-size:13px;color:var(--muted);font-weight:400;margin-left:8px;}
.rc-custom{
  background:var(--panel);border:1px dashed rgba(255,255,255,.15);border-radius:14px;
  padding:14px;margin-top:12px;
}
.rc-custom-label{font-size:12px;color:var(--muted);display:block;margin-bottom:8px;}
.rc-custom-row{
  display:flex;align-items:center;gap:8px;margin-bottom:12px;
}
.rc-currency{font-size:18px;color:var(--gold);font-weight:700;}
.rc-amount{
  flex:1;background:var(--panel-2);border:1px solid rgba(255,255,255,.12);border-radius:10px;
  color:var(--text);font-size:16px;padding:9px 12px;outline:none;
}
.rc-amount:focus{border-color:var(--gold);}
.rc-equal{color:var(--muted);font-size:14px;}
.rc-preview{min-width:80px;font-size:15px;font-weight:700;color:var(--gold);}
.rc-custom-btn{width:100%;}

/* ===== 响应式：小屏幕/竖屏回退 ===== */
@media (max-width:780px){
  #sidebar{width:200px;min-width:200px;padding:14px 10px 10px;}
  .entry-title{font-size:22px;}
  .entry-icon{font-size:56px;}
  .lobby-entries{gap:18px;padding:16px;}
  .profile-wrap{flex-direction:column;overflow-y:auto;}
  .pf-left{flex:0 0 auto;}
  .pf-right{min-height:280px;}
}
/* ===== 对局全屏化 ===== */
body.game-mode #bottom-nav{display:none;}
body.game-mode #sidebar{display:none;}
body.game-mode #phone{height:100vh;}
body.game-mode #screens{flex:1;}

/* ===== 顶栏按钮群 ===== */
.tb-actions{display:flex;gap:8px;align-items:center;}
.tb-icon{width:34px;height:34px;border-radius:10px;border:1px solid rgba(255,255,255,.12);background:var(--panel-2);color:var(--text);display:inline-flex;align-items:center;justify-content:center;font-size:16px;cursor:pointer;transition:all .12s ease;}
.tb-icon:hover{background:rgba(255,255,255,.08);}
.tb-icon.off{color:var(--muted);opacity:.55;}
.tb-icon.on{color:var(--gold);background:rgba(244,201,93,.18);border-color:rgba(244,201,93,.4);}

@media (max-width:600px){
  #phone{flex-direction:column;}
  #sidebar{width:100%;height:auto;min-height:auto;flex-direction:row;align-items:center;flex-wrap:wrap;padding:10px 12px;border-right:none;border-bottom:1px solid rgba(255,255,255,.08);}
  .sb-user{margin:0 10px 0 0;flex:0 0 auto;padding:8px 10px;}
  .sb-avatar{width:38px;height:38px;font-size:18px;}
  .sb-tabs{flex:0 0 auto;margin:0;}
  .sb-list{flex:1 1 100%;margin-top:8px;max-height:120px;}
  #bottom-nav{height:54px;}
  .bn-btn{font-size:14px;}
  .lobby-entries{flex-direction:column;align-items:center;}
  .entry-card{width:100%;max-width:360px;}
}

/* ===== 单机和扑克演示旧样式（保留） ===== */
.hero{text-align:center;padding:26px 0 18px;}
.hero-logo{font-size:64px;filter:drop-shadow(0 6px 12px rgba(244,201,93,.35));}
.hero-sub{color:var(--muted);margin:8px 0 0;font-size:14px;letter-spacing:2px;}
.poker-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;}
.chips{font-size:15px;font-weight:700;color:var(--gold);}
.result{font-size:14px;color:var(--muted);text-align:right;max-width:60%;}
.deal-area{background:var(--panel);border-radius:14px;padding:12px;margin-bottom:12px;min-height:84px;}
.hand-label{font-size:13px;color:var(--muted);margin-bottom:8px;}
.hand-val{color:var(--gold);font-weight:700;}
.bet-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px;}
.bet-label{font-size:14px;color:var(--muted);margin-right:auto;}
.bet-label span{color:var(--gold);font-weight:700;}
.chip-btn{background:var(--panel-2);border:1px solid rgba(255,255,255,.12);color:var(--text);border-radius:20px;padding:7px 12px;font-size:13px;cursor:pointer;}
.chip-btn:active{transform:scale(.94);}
.poker-stats{text-align:center;color:var(--muted);font-size:13px;margin-top:12px;}
.board{
  display:grid;gap:2px;margin:0 auto;width:max-content;
  background:rgba(0,0,0,.2);padding:6px;border-radius:14px;
}
.cell{width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:24px;line-height:1;border-radius:7px;}
.cell.tile{background:linear-gradient(160deg,#fbfbff,#dfe3f5);color:#222;border:1px solid #c4c9e0;cursor:pointer;box-shadow:0 2px 0 #b6bcd6;user-select:none;}
.cell.tile:active{transform:translateY(1px);}
.cell.selected{outline:3px solid var(--gold);outline-offset:-1px;background:linear-gradient(160deg,#fff6d8,#ffe9a8);}
.cell.hint{animation:pulse .6s ease 2;}
@keyframes pulse{0%,100%{outline:3px solid var(--accent);}50%{outline:3px solid var(--green);}}
.board-msg{text-align:center;color:var(--gold);min-height:20px;margin-top:8px;font-weight:600;}
.pc{width:54px;height:76px;border-radius:8px;background:#fff;color:#222;display:flex;flex-direction:column;justify-content:space-between;padding:5px 6px;font-weight:700;box-shadow:0 3px 8px rgba(0,0,0,.35);position:relative;}
.pc.red{color:#e23b3b;}
.pc .corner{font-size:14px;line-height:1;}
.pc .suit-big{font-size:26px;text-align:center;}
.pc.back{background:repeating-linear-gradient(45deg,#2b3a8f,#2b3a8f 6px,#3a4fb0 6px,#3a4fb0 12px);color:transparent;}
.foot-tip{text-align:center;color:var(--muted);font-size:12px;margin-top:24px;}

/* ===== 新玩法通用：筹码条 ===== */
.chip-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center;justify-content:center;}
.chip-btn.sel{background:linear-gradient(180deg,var(--gold),var(--gold-deep));color:#3a2a05;border-color:var(--gold);font-weight:800;box-shadow:0 0 10px rgba(244,201,93,.45);}
.zjh-self,.bj-self,.rl-self,.sb-self{position:relative;background:linear-gradient(180deg,rgba(15,18,38,.96),rgba(7,9,26,.98));border-top:1px solid rgba(255,255,255,.1);padding:8px 12px 10px;z-index:4;}

/* ===== 炸金花 ===== */
.zjh-board{position:relative;flex:1;display:flex;flex-direction:column;min-height:0;background:radial-gradient(ellipse at 50% 26%,#2c6e4f 0%,#1d4d36 55%,#0d2b1d 100%);overflow:hidden;}
.zjh-table{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;}
.zjh-table::before{content:'';position:absolute;inset:10px 12px;border:4px solid #d4a85e;border-radius:26px;box-shadow:inset 0 0 0 2px #6b4a2e,inset 0 0 36px rgba(0,0,0,.5),0 0 0 1px #b88a45;pointer-events:none;z-index:2;}
.zjh-opps{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;padding:18px 16px 6px;z-index:3;}
.zjh-opp{position:relative;background:linear-gradient(160deg,rgba(20,28,48,.88),rgba(9,13,26,.94));border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:8px 10px;text-align:center;min-width:118px;transition:all .25s ease;backdrop-filter:blur(4px);}
.zjh-opp.on{border-color:var(--green);box-shadow:0 0 0 1px var(--green),0 0 14px rgba(62,201,122,.4);}
.zjh-opp.fold{opacity:.45;filter:grayscale(.5);}
.zjh-opp-head{display:flex;align-items:center;justify-content:space-between;gap:6px;}
.zjh-opp-nm{font-size:13px;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:88px;}
.zjh-opp-tag{font-size:11px;color:#cfe8da;background:rgba(0,0,0,.3);padding:2px 7px;border-radius:999px;white-space:nowrap;}
.zjh-opp-cards{display:flex;gap:3px;justify-content:center;margin-top:5px;min-height:47px;}
.zjh-opp-cards .cd{min-width:34px;height:47px;border-radius:6px;padding:2px 3px;}
.zjh-opp-cards .cd .cf-rank{font-size:16px;}
.zjh-opp-cards .cd .cf-suit{font-size:14px;}
.zjh-opp-hand{font-size:12px;font-weight:700;color:#cfe8da;margin-top:4px;}
.zjh-opp-hand.win{color:#ffd54a;text-shadow:0 0 8px rgba(255,213,74,.6);}
.zjh-opp-bet{font-size:12px;color:var(--gold);font-weight:800;margin-top:2px;}
.cd.zjh-back{background:repeating-linear-gradient(45deg,#2b3a8f,#2b3a8f 6px,#3a4fb0 6px,#3a4fb0 12px);border-color:#25327d;}
.zjh-center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:64px;padding:6px 16px 12px;z-index:3;}
.zjh-pot{font-size:15px;color:var(--gold);font-weight:800;background:rgba(0,0,0,.32);padding:5px 18px;border-radius:999px;border:1px solid rgba(244,201,93,.35);letter-spacing:1px;}
.zjh-stake{font-size:12px;color:rgba(255,255,255,.72);text-shadow:0 1px 2px rgba(0,0,0,.6);}
.zjh-log{font-size:11px;color:rgba(255,255,255,.6);text-align:center;max-width:88%;line-height:1.6;}
.zjh-myrow{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;min-height:70px;}
.zjh-my-cards{display:flex;gap:5px;transition:opacity .3s;}
.zjh-my-cards.fold{opacity:.4;filter:grayscale(.6);}
.zjh-my-info{font-size:13px;font-weight:700;color:#ffe9b0;background:rgba(0,0,0,.35);border:1px solid rgba(244,201,93,.35);border-radius:999px;padding:5px 14px;}
.zjh-actions{display:flex;gap:8px;justify-content:center;align-items:center;flex-wrap:wrap;padding-top:6px;min-height:22px;}
.zjh-actions button{flex:1;max-width:150px;padding:11px 10px;}
.zjh-actions small{font-size:11px;font-weight:600;opacity:.85;}
.zjh-cmp-tip{font-size:13px;color:var(--muted);font-weight:600;}
.zjh-wait{font-size:13px;color:var(--muted);padding:6px 0;}

/* ===== 21点 ===== */
.bj-board{position:relative;flex:1;display:flex;flex-direction:column;min-height:0;background:radial-gradient(ellipse at 50% 24%,#1e5a52 0%,#133c38 55%,#08221e 100%);overflow:hidden;}
.bj-felt{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:16px;}
.bj-felt::before{content:'';position:absolute;inset:10px 12px;border:4px solid #d4a85e;border-radius:26px;box-shadow:inset 0 0 0 2px #6b4a2e,inset 0 0 36px rgba(0,0,0,.5),0 0 0 1px #b88a45;pointer-events:none;z-index:2;}
.bj-dealer{display:flex;flex-direction:column;align-items:center;gap:5px;z-index:3;}
.bj-d-label{font-size:13px;font-weight:700;color:rgba(255,255,255,.85);text-shadow:0 1px 2px rgba(0,0,0,.5);letter-spacing:2px;}
.bj-d-label b{color:var(--gold);font-size:16px;margin-left:4px;}
.bj-d-cards{display:flex;gap:6px;align-items:center;justify-content:center;flex-wrap:wrap;min-height:68px;}
.bj-players{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;max-width:96%;z-index:3;}
.bj-pl{display:flex;flex-direction:column;align-items:center;gap:2px;background:linear-gradient(160deg,rgba(20,28,48,.88),rgba(9,13,26,.94));border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:6px 10px;min-width:86px;transition:all .25s ease;backdrop-filter:blur(4px);}
.bj-pl.on{border-color:var(--green);box-shadow:0 0 0 1px var(--green),0 0 12px rgba(62,201,122,.4);}
.bj-pl.skip{opacity:.5;}
.bj-pl-nm{font-size:12px;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:96px;}
.bj-pl-bet{font-size:11px;color:var(--gold);font-weight:700;}
.bj-pl-t{font-size:14px;font-weight:800;color:#ffe9b0;}
.bust{color:var(--red)!important;}
.bj-pl-out{font-size:11px;font-weight:800;padding:2px 9px;border-radius:999px;background:rgba(0,0,0,.4);border:1px solid rgba(255,255,255,.12);color:#cfd6e8;white-space:nowrap;}
.bj-pl-out.win{color:var(--green);border-color:rgba(62,201,122,.5);}
.bj-pl-out.lose{color:var(--red);border-color:rgba(255,107,107,.5);}
.bj-pl-out.big{font-size:14px;padding:4px 14px;}
.bj-tip{font-size:12px;color:rgba(255,255,255,.68);text-shadow:0 1px 2px rgba(0,0,0,.6);z-index:3;text-align:center;}
.bj-my-row{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;min-height:70px;}
.bj-my-total{display:inline-flex;align-items:center;justify-content:center;min-width:42px;height:42px;border-radius:10px;background:rgba(0,0,0,.45);border:1px solid rgba(244,201,93,.5);color:var(--gold);font-weight:800;font-size:17px;margin-left:6px;}
.bj-bet-bar{display:flex;gap:10px;align-items:center;justify-content:center;flex-wrap:wrap;padding-top:6px;}
.bj-bet-btns{display:flex;gap:8px;}
.bj-bet-btns button{border:none;border-radius:12px;padding:11px 16px;font-size:14px;font-weight:700;cursor:pointer;}
.bj-acts{display:flex;gap:8px;justify-content:center;padding-top:6px;}
.bj-acts button{flex:1;max-width:130px;}

/* ===== 欧式轮盘 ===== */
.rl-board{position:relative;flex:1;display:flex;flex-direction:column;min-height:0;background:radial-gradient(ellipse at 50% 22%,#5a1f2e 0%,#3a1220 55%,#1c0810 100%);overflow:hidden;}
.rl-felt{position:relative;flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:7px;padding:14px 12px 10px;}
.rl-felt::before{content:'';position:absolute;inset:8px 10px;border:4px solid #d4a85e;border-radius:22px;box-shadow:inset 0 0 0 2px #6b4a2e,inset 0 0 30px rgba(0,0,0,.5),0 0 0 1px #b88a45;pointer-events:none;z-index:2;}
.rl-wheel-wrap{position:relative;width:148px;height:148px;flex-shrink:0;z-index:3;}
.rl-wheel{width:100%;height:100%;will-change:transform;}
.rl-wheel svg{width:100%;height:100%;display:block;filter:drop-shadow(0 6px 14px rgba(0,0,0,.5));}
.rl-pointer{position:absolute;top:-7px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:7px solid transparent;border-right:7px solid transparent;border-top:13px solid var(--gold);filter:drop-shadow(0 2px 3px rgba(0,0,0,.6));z-index:4;}
.rl-ball{position:absolute;inset:0;animation:ballSpin 7s linear infinite;z-index:3;pointer-events:none;}
.rl-ball::before{content:'';position:absolute;top:2px;left:50%;transform:translateX(-50%);width:9px;height:9px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff,#c2c9da);box-shadow:0 1px 4px rgba(0,0,0,.7);}
@keyframes ballSpin{from{transform:rotate(0deg);}to{transform:rotate(-360deg);}}
.rl-res{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:46px;height:46px;border-radius:50%;background:rgba(10,26,18,.94);border:2px solid rgba(212,168,94,.6);color:rgba(255,255,255,.5);font-size:19px;font-weight:800;display:flex;align-items:center;justify-content:center;z-index:4;transition:all .3s;}
.rl-res.show{animation:resPop .5s cubic-bezier(.5,1.6,.4,1) both;}
.rl-res.red{border-color:#ff8a80;color:#ff8a80;box-shadow:0 0 14px rgba(255,107,107,.45);}
.rl-res.black{border-color:#aab4d8;color:#dfe6ff;box-shadow:0 0 14px rgba(160,180,255,.35);}
.rl-res.green{border-color:var(--gold);color:#ffd54a;box-shadow:0 0 16px rgba(244,201,93,.55);}
@keyframes resPop{0%{transform:translate(-50%,-50%) scale(.4);opacity:0;}60%{transform:translate(-50%,-50%) scale(1.2);opacity:1;}100%{transform:translate(-50%,-50%) scale(1);opacity:1;}}
.rl-history{display:flex;gap:5px;flex-wrap:wrap;justify-content:center;max-width:96%;z-index:3;}
.rl-h{width:23px;height:23px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;color:#fff;}
.rl-h.r{background:#c0392b;}
.rl-h.b{background:#1a1a2e;border:1px solid rgba(255,255,255,.28);}
.rl-h.g{background:#1f8a3b;}
.rl-table{flex:1;min-height:0;overflow:auto;padding:8px 14px;display:flex;flex-direction:column;gap:4px;}
.rl-grid{display:grid;grid-template-columns:28px repeat(12,minmax(26px,1fr)) 36px;gap:3px;}
.rl-cell{position:relative;display:flex;align-items:center;justify-content:center;min-height:28px;border-radius:5px;font-size:12px;font-weight:800;color:#fff;cursor:pointer;user-select:none;border:1px solid rgba(255,255,255,.22);background:rgba(0,0,0,.35);transition:transform .08s ease;}
.rl-cell:hover{border-color:var(--gold);}
.rl-cell:active{transform:scale(.92);}
.rl-cell.r{background:#c0392b;}
.rl-cell.b{background:#16162a;}
.rl-cell.g,.rl-cell.zero{background:#1f8a3b;}
.rl-cell.zero{grid-row:1/span 3;grid-column:1;}
.rl-cell[data-spot="col3"]{grid-column:14;grid-row:1;}
.rl-cell[data-spot="col2"]{grid-column:14;grid-row:2;}
.rl-cell[data-spot="col1"]{grid-column:14;grid-row:3;}
.rl-outside{display:grid;grid-template-columns:repeat(6,1fr);gap:3px;}
.rl-outside .rl-cell:nth-child(-n+3){grid-column:span 2;font-size:12px;}
.rl-chipcnt{position:absolute;top:-7px;right:-5px;min-width:20px;height:20px;padding:0 4px;border-radius:999px;background:linear-gradient(180deg,var(--gold),var(--gold-deep));color:#3a2a05;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 5px rgba(0,0,0,.5);border:1.5px solid #fff3d6;z-index:2;}
.rl-chipcnt:empty{display:none;}
.rl-self{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.rl-betbar{display:flex;align-items:center;gap:8px;flex:1;justify-content:flex-end;flex-wrap:wrap;}
.rl-betbar button{border:none;border-radius:12px;padding:11px 16px;font-size:14px;font-weight:700;cursor:pointer;}
.rl-mybet{font-size:14px;color:var(--gold);font-weight:800;white-space:nowrap;}
.rl-mybet b{font-size:16px;}

/* ===== 骰宝 ===== */
.sb-board{position:relative;flex:1;display:flex;flex-direction:column;min-height:0;background:radial-gradient(ellipse at 50% 22%,#24305e 0%,#161e42 55%,#0a0f26 100%);overflow:hidden;}
.sb-felt{position:relative;flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:7px;padding:14px 12px 10px;}
.sb-felt::before{content:'';position:absolute;inset:8px 10px;border:4px solid #d4a85e;border-radius:22px;box-shadow:inset 0 0 0 2px #6b4a2e,inset 0 0 30px rgba(0,0,0,.5),0 0 0 1px #b88a45;pointer-events:none;z-index:2;}
.sb-dice{display:flex;gap:14px;z-index:3;}
.die-face{width:46px;height:46px;background:linear-gradient(160deg,#fffef8,#ece5cf);border-radius:9px;border:1px solid #c9b787;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);padding:6px;gap:2px;box-shadow:0 4px 10px rgba(0,0,0,.5),inset 0 1px 0 #fff;}
.die-face span{border-radius:50%;}
.die-face .pip{background:radial-gradient(circle at 35% 35%,#4a4a4a,#101010);box-shadow:inset 0 -1px 2px rgba(255,255,255,.3);}
.sb-dice.rolling .die-face{animation:diceRoll .14s linear infinite;}
.sb-dice.rolling .die-face:nth-child(2){animation-delay:.05s;}
.sb-dice.rolling .die-face:nth-child(3){animation-delay:.1s;}
@keyframes diceRoll{0%{transform:rotate(-14deg) translateY(-3px);}25%{transform:rotate(10deg) translateY(2px);}50%{transform:rotate(-8deg) translateY(-2px);}75%{transform:rotate(14deg) translateY(3px);}100%{transform:rotate(-14deg) translateY(-3px);}}
.sb-sum{font-size:15px;font-weight:800;color:#ffe9b0;background:rgba(0,0,0,.4);border:1px solid rgba(244,201,93,.4);border-radius:999px;padding:4px 20px;opacity:.55;z-index:3;transition:all .3s;}
.sb-sum.show{opacity:1;}
.sb-sum.triple{background:linear-gradient(180deg,var(--gold),var(--gold-deep));color:#3a2a05;border-color:#ffe9a8;animation:resPop2 .5s cubic-bezier(.5,1.6,.4,1) both;}
@keyframes resPop2{0%{transform:scale(.6);}60%{transform:scale(1.15);}100%{transform:scale(1);}}
.sb-history{display:flex;gap:5px;flex-wrap:wrap;justify-content:center;max-width:96%;z-index:3;}
.sb-h{width:24px;height:24px;border-radius:8px;background:rgba(0,0,0,.35);border:1px solid rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;color:#fff;}
.sb-h.tri{background:linear-gradient(180deg,var(--gold),var(--gold-deep));color:#3a2a05;border-color:#ffe9a8;}
.sb-table{flex:1;min-height:0;overflow:auto;padding:8px 14px;display:flex;flex-direction:column;gap:6px;}
.sb-main{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;}
.sb-sec-title{font-size:11px;font-weight:700;color:var(--muted);letter-spacing:1px;}
.sb-sec-title small{color:rgba(154,163,199,.7);}
.sb-row{display:grid;gap:5px;}
.sb-table > div:nth-child(2) .sb-row{grid-template-columns:repeat(7,1fr);}
.sb-table > div:nth-child(3) .sb-row{grid-template-columns:repeat(6,1fr);}
.sb-row.pairs{grid-template-columns:repeat(auto-fill,minmax(40px,1fr));}
.sb-cell{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-height:38px;border-radius:7px;font-size:13px;font-weight:800;color:#fff;cursor:pointer;user-select:none;background:rgba(0,0,0,.32);border:1px solid rgba(255,255,255,.22);transition:transform .08s ease;}
.sb-cell:hover{border-color:var(--gold);}
.sb-cell:active{transform:scale(.92);}
.sb-cell.big{min-height:46px;font-size:15px;letter-spacing:1px;}
.sb-cell small{font-size:10px;font-weight:600;color:rgba(255,255,255,.62);}
.sb-cell.trio{background:rgba(192,57,43,.3);border-color:rgba(255,120,105,.35);}
.sb-cell.die b{font-size:18px;}
.sb-cell.pair{min-height:32px;font-size:12px;background:rgba(108,123,255,.18);border-color:rgba(140,152,255,.35);}
.sb-self{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.sb-betbar{display:flex;align-items:center;gap:8px;flex:1;justify-content:flex-end;flex-wrap:wrap;}
.sb-betbar button{border:none;border-radius:12px;padding:11px 16px;font-size:14px;font-weight:700;cursor:pointer;}
.sb-mybet{font-size:14px;color:var(--gold);font-weight:800;white-space:nowrap;}
.sb-mybet b{font-size:16px;}

/* ===== 新玩法：矮屏/窄屏适配 ===== */
@media (max-height:560px){
  .rl-wheel-wrap{width:118px;height:118px;}
  .rl-res{width:38px;height:38px;font-size:16px;}
  .die-face{width:38px;height:38px;padding:5px;}
  .sb-cell.big{min-height:38px;font-size:13px;}
  .sb-cell{min-height:30px;}
  .rl-cell{min-height:24px;font-size:11px;}
  .bj-d-cards .cd.board{min-width:42px;height:58px;}
  .bj-d-cards .cd.board .cf-rank{font-size:24px;}
  .bj-d-cards .cd.board .cf-suit{font-size:20px;}
}
@media (max-width:620px){
  .rl-grid{grid-template-columns:24px repeat(12,minmax(22px,1fr)) 30px;}
  .rl-cell{min-height:24px;font-size:11px;border-radius:4px;}
  .rl-outside .rl-cell{min-height:26px;}
  .sb-main{grid-template-columns:repeat(2,1fr);}
  .sb-table > div:nth-child(2) .sb-row{grid-template-columns:repeat(4,1fr);}
  .sb-table > div:nth-child(3) .sb-row{grid-template-columns:repeat(3,1fr);}
  .rl-betbar,.sb-betbar{justify-content:center;}
}

/* ===== 百家乐 ===== */
.bacc-board{position:relative;flex:1;display:flex;flex-direction:column;min-height:0;background:radial-gradient(ellipse at 50% 22%,#6e2a44 0%,#451428 55%,#1f0713 100%);overflow:hidden;}
.bacc-felt{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:12px;}
.bacc-felt::before{content:'';position:absolute;inset:8px 10px;border:4px solid #d4a85e;border-radius:24px;box-shadow:inset 0 0 0 2px #6b4a2e,inset 0 0 32px rgba(0,0,0,.5),0 0 0 1px #b88a45;pointer-events:none;z-index:2;}
.bacc-hand{display:flex;flex-direction:column;align-items:center;gap:4px;z-index:3;}
.bacc-label{font-size:14px;font-weight:800;color:#f2e7d5;letter-spacing:3px;text-shadow:0 1px 3px rgba(0,0,0,.6);}
.bacc-label b{color:var(--gold);font-size:17px;margin-left:4px;}
.bacc-cards{display:flex;gap:5px;min-height:56px;align-items:center;}
.bacc-cards .cd.board{min-width:42px;height:56px;}
.bacc-cards .cd.board .cf-rank{font-size:22px;}
.bacc-cards .cd.board .cf-suit{font-size:17px;}
.bacc-vs{min-width:74px;text-align:center;padding:7px 16px;border-radius:999px;background:rgba(0,0,0,.42);border:1px solid rgba(255,255,255,.16);color:#e8dcc8;font-size:15px;font-weight:800;letter-spacing:2px;z-index:3;}
.bacc-vs.show.w-player{color:#7fc4ff;border-color:rgba(127,196,255,.55);box-shadow:0 0 10px rgba(127,196,255,.25);}
.bacc-vs.show.w-banker{color:#ff9d8a;border-color:rgba(255,157,138,.55);box-shadow:0 0 10px rgba(255,157,138,.25);}
.bacc-vs.show.w-tie{color:#7fe6a5;border-color:rgba(127,230,165,.55);box-shadow:0 0 10px rgba(127,230,165,.25);}
.bacc-history{display:flex;gap:4px;flex-wrap:wrap;justify-content:center;z-index:3;max-width:92%;}
.bacc-h{width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;color:#fff;}
.bacc-h.player{background:rgba(60,130,210,.55);border:1px solid rgba(127,196,255,.5);}
.bacc-h.banker{background:rgba(200,60,50,.55);border:1px solid rgba(255,157,138,.5);}
.bacc-h.tie{background:rgba(50,160,100,.55);border:1px solid rgba(127,230,165,.5);}
.bacc-spots{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;padding:8px 10px 4px;max-width:640px;margin:0 auto;width:100%;}
.bacc-spot{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:52px;border-radius:10px;font-weight:800;cursor:pointer;user-select:none;border:1px solid rgba(255,255,255,.22);transition:transform .08s ease;}
.bacc-spot:active{transform:scale(.92);}
.bacc-spot-n{font-size:17px;color:#fff;letter-spacing:2px;}
.bacc-spot-h{font-size:10px;color:rgba(255,255,255,.6);}
.bacc-spot.blue{background:rgba(60,130,210,.3);}
.bacc-spot.red{background:rgba(200,60,50,.3);}
.bacc-spot.green{background:rgba(50,160,100,.3);}
.bacc-spot.blue2{background:rgba(60,130,210,.16);}
.bacc-spot.red2{background:rgba(200,60,50,.16);}
.bacc-spot:hover{border-color:var(--gold);}
.bacc-self{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:6px 10px 10px;max-width:640px;margin:0 auto;width:100%;}
.bacc-betbar{display:flex;align-items:center;gap:8px;flex:1;justify-content:flex-end;flex-wrap:wrap;}
.bacc-betbar button{border:none;border-radius:12px;padding:11px 16px;font-size:14px;font-weight:700;cursor:pointer;}
.bacc-mybet{font-size:14px;color:var(--gold);font-weight:800;white-space:nowrap;}
.bacc-mybet b{font-size:16px;}

/* ===== 牛牛 ===== */
.nn-board{position:relative;flex:1;display:flex;flex-direction:column;min-height:0;background:radial-gradient(ellipse at 50% 24%,#7a4a17 0%,#4a2c0e 55%,#211505 100%);overflow:hidden;}
.nn-felt{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:12px;}
.nn-felt::before{content:'';position:absolute;inset:8px 10px;border:4px solid #d4a85e;border-radius:24px;box-shadow:inset 0 0 0 2px #6b4a2e,inset 0 0 32px rgba(0,0,0,.5),0 0 0 1px #b88a45;pointer-events:none;z-index:2;}
.nn-dealer{display:flex;flex-direction:column;align-items:center;gap:4px;z-index:3;}
.nn-label{font-size:14px;font-weight:800;color:#f2e7d5;letter-spacing:2px;}
.nn-label b{color:var(--gold);}
.nn-cards{display:flex;gap:5px;min-height:58px;align-items:center;flex-wrap:wrap;justify-content:center;}
.nn-cards .cd.board{min-width:44px;height:58px;}
.nn-cards .cd.board .cf-rank{font-size:23px;}
.nn-cards .cd.board .cf-suit{font-size:18px;}
.niu-badge{display:inline-flex;align-items:center;padding:3px 14px;border-radius:999px;background:linear-gradient(160deg,#f7d97f,#d9a53f);color:#4a2c0e;font-size:14px;font-weight:900;letter-spacing:2px;box-shadow:0 2px 8px rgba(0,0,0,.45);}
.niu-badge.sm{font-size:11px;padding:2px 10px;}
.niu-badge.me{font-size:17px;padding:5px 20px;}
.nn-players{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;max-width:96%;z-index:3;}
.nn-pl{display:flex;align-items:center;gap:7px;background:linear-gradient(160deg,rgba(30,20,8,.85),rgba(15,9,3,.92));border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:6px 10px;transition:all .25s ease;}
.nn-pl.skip{opacity:.5;}
.nn-pl-nm{font-size:12px;font-weight:700;color:#f2e7d5;}
.nn-pl-bet{font-size:11px;color:var(--gold);font-weight:700;}
.nn-pl-cards{display:flex;gap:3px;}
.nn-pl-cards .cd.board{min-width:30px;height:41px;border-radius:6px;padding:2px 3px;}
.nn-pl-cards .cd.board .cf-rank{font-size:15px;}
.nn-pl-cards .cd.board .cf-suit{font-size:12px;}
.nn-pl-out,.sg-pl-out,.slot-o-out{font-size:12px;font-weight:800;}
.nn-pl-out.win,.sg-pl-out.win,.slot-o-out.win,.nn-out.win{color:#3ec97a;}
.nn-pl-out.lose,.sg-pl-out.lose,.slot-o-out.lose,.nn-out.lose{color:#ff6b6b;}
.nn-tip{font-size:12px;color:rgba(242,231,213,.75);z-index:3;}
.nn-self{display:flex;flex-direction:column;gap:6px;padding:6px 10px 10px;}
.nn-myrow{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;min-height:58px;}
.nn-myniu{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center;}
.nn-out{font-size:15px;font-weight:800;}
.nn-betbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center;}
.nn-mybet{font-size:14px;color:var(--gold);font-weight:800;}
.nn-mybet b{font-size:16px;}
.nn-betbar button{border:none;border-radius:12px;padding:11px 16px;font-size:14px;font-weight:700;cursor:pointer;}

/* ===== 三公 ===== */
.sg-board{position:relative;flex:1;display:flex;flex-direction:column;min-height:0;background:radial-gradient(ellipse at 50% 24%,#4a2a6e 0%,#2a1642 55%,#120825 100%);overflow:hidden;}
.sg-felt{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:12px;}
.sg-felt::before{content:'';position:absolute;inset:8px 10px;border:4px solid #d4a85e;border-radius:24px;box-shadow:inset 0 0 0 2px #6b4a2e,inset 0 0 32px rgba(0,0,0,.5),0 0 0 1px #b88a45;pointer-events:none;z-index:2;}
.sg-dealer{display:flex;flex-direction:column;align-items:center;gap:4px;z-index:3;}
.sg-label{font-size:14px;font-weight:800;color:#f2e7d5;letter-spacing:2px;}
.sg-label b{color:var(--gold);}
.sg-cards{display:flex;gap:6px;min-height:62px;align-items:center;}
.sg-cards .cd.board{min-width:48px;height:64px;}
.sg-cards .cd.board .cf-rank{font-size:25px;}
.sg-cards .cd.board .cf-suit{font-size:20px;}
.sg-players{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;max-width:96%;z-index:3;}
.sg-pl{display:flex;align-items:center;gap:7px;background:linear-gradient(160deg,rgba(24,16,42,.88),rgba(10,6,20,.94));border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:6px 10px;transition:all .25s ease;}
.sg-pl.skip{opacity:.5;}
.sg-pl-nm{font-size:12px;font-weight:700;color:#f2e7d5;}
.sg-pl-bet{font-size:11px;color:var(--gold);font-weight:700;}
.sg-pl-cards{display:flex;gap:3px;}
.sg-pl-cards .cd.board{min-width:32px;height:43px;border-radius:6px;padding:2px 3px;}
.sg-pl-cards .cd.board .cf-rank{font-size:16px;}
.sg-pl-cards .cd.board .cf-suit{font-size:13px;}
.sg-tip{font-size:12px;color:rgba(242,231,213,.75);z-index:3;}
.sg-self{display:flex;flex-direction:column;gap:6px;padding:6px 10px 10px;}
.sg-myrow{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;min-height:64px;}
.sg-mygong{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center;}
.sg-betbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center;}
.sg-mybet{font-size:14px;color:var(--gold);font-weight:800;}
.sg-mybet b{font-size:16px;}
.sg-betbar button{border:none;border-radius:12px;padding:11px 16px;font-size:14px;font-weight:700;cursor:pointer;}

/* ===== 拉霸 ===== */
.slot-board{position:relative;flex:1;display:flex;flex-direction:column;min-height:0;background:radial-gradient(ellipse at 50% 20%,#33334d 0%,#1e1e30 55%,#0c0c16 100%);overflow:hidden;}
.slot-felt{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:12px;}
.slot-felt::before{content:'';position:absolute;inset:8px 10px;border:4px solid #d4a85e;border-radius:24px;box-shadow:inset 0 0 0 2px #6b4a2e,inset 0 0 32px rgba(0,0,0,.5),0 0 0 1px #b88a45;pointer-events:none;z-index:2;}
.slot-machine{display:flex;flex-direction:column;align-items:center;gap:8px;z-index:3;}
.slot-top{font-size:15px;font-weight:900;letter-spacing:4px;color:#ff6b6b;text-shadow:0 0 12px rgba(255,107,107,.6),0 0 30px rgba(255,107,107,.35);}
.slot-reels{display:flex;gap:8px;padding:12px;border-radius:16px;background:linear-gradient(170deg,#15151f,#0a0a12);border:2px solid #3a3a52;box-shadow:inset 0 2px 10px rgba(0,0,0,.8),0 4px 14px rgba(0,0,0,.5);}
.slot-reel{width:72px;height:88px;border-radius:10px;background:linear-gradient(180deg,#fdf9ee 0%,#efe8d8 48%,#fdf9ee 52%,#f5efe0 100%);display:flex;align-items:center;justify-content:center;font-size:44px;box-shadow:inset 0 0 0 1px #cfcabb,inset 0 -6px 12px rgba(0,0,0,.12),inset 0 6px 12px rgba(0,0,0,.12);}
.slot-reel.rolling{animation:slotShake .12s linear infinite;}
@keyframes slotShake{0%{transform:translateY(-3px);}50%{transform:translateY(3px);}100%{transform:translateY(-3px);}}
.slot-reel.hit{transform:scale(1.12);box-shadow:0 0 18px rgba(242,193,78,.85),inset 0 0 0 2px var(--gold);}
.slot-res{padding:5px 18px;border-radius:999px;background:rgba(0,0,0,.45);border:1px solid rgba(255,255,255,.16);font-size:14px;font-weight:800;color:#cfd6e8;}
.slot-res.show.win{color:var(--gold);border-color:rgba(242,193,78,.6);box-shadow:0 0 12px rgba(242,193,78,.3);}
.slot-res.show.lose{color:#8a93a8;}
.slot-others{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;max-width:96%;z-index:3;}
.slot-o{display:flex;align-items:center;gap:7px;background:linear-gradient(160deg,rgba(26,26,44,.88),rgba(11,11,22,.94));border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:6px 10px;}
.slot-o.skip{opacity:.5;}
.slot-o-nm{font-size:12px;font-weight:700;color:#f2e7d5;}
.slot-o-bet{font-size:11px;color:var(--gold);font-weight:700;}
.slot-o-sym{font-size:16px;letter-spacing:2px;}
.slot-paytable{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:4px;padding:6px 12px;max-width:560px;margin:0 auto;width:100%;}
.slot-pt-row{font-size:11px;font-weight:700;color:rgba(207,214,232,.8);text-align:center;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.08);border-radius:7px;padding:3px 5px;letter-spacing:1px;}
.slot-self{display:flex;align-items:center;padding:6px 10px 10px;}
.slot-betbar{display:flex;align-items:center;gap:8px;flex:1;flex-wrap:wrap;justify-content:center;}
.slot-mybet{font-size:14px;color:var(--gold);font-weight:800;}
.slot-mybet b{font-size:16px;}
.slot-betbar button{border:none;border-radius:12px;padding:11px 16px;font-size:14px;font-weight:700;cursor:pointer;}

/* ===== 新棋盘：矮屏/窄屏适配 ===== */
@media (max-height:560px){
  .bacc-cards .cd.board{min-width:36px;height:49px;}
  .nn-cards .cd.board{min-width:38px;height:51px;}
  .sg-cards .cd.board{min-width:42px;height:56px;}
  .slot-reel{width:58px;height:72px;font-size:34px;}
  .slot-top{font-size:12px;}
  .bacc-spot{min-height:42px;}
}
@media (max-width:620px){
  .bacc-spots{grid-template-columns:repeat(5,1fr);gap:4px;}
  .bacc-spot-n{font-size:14px;}
  .nn-cards .cd.board{min-width:38px;height:50px;}
  .nn-pl-cards .cd.board{min-width:26px;height:36px;}
  .sg-cards .cd.board{min-width:42px;height:56px;}
  .slot-reel{width:60px;height:74px;font-size:36px;}
  .bacc-betbar,.nn-betbar,.sg-betbar,.slot-betbar{justify-content:center;}
}

/* ===== 公告/轮播图/弹窗（App 端运营内容） ===== */
.banner-box{position:relative;width:100%;height:104px;border-radius:14px;overflow:hidden;margin-bottom:12px;background:linear-gradient(135deg,#1c2330,#11151d);border:1px solid #2a2f3a;box-shadow:0 6px 18px rgba(0,0,0,.25);}
.banner-box .bn-slide{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;transform:scale(1.03);transition:opacity .5s ease,transform .5s ease;cursor:pointer;}
.banner-box .bn-slide.active{opacity:1;transform:scale(1);}
.banner-box .bn-slide img{width:100%;height:100%;object-fit:cover;}
.banner-box .bn-slide .bn-text{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;padding:16px 20px;font-size:15px;color:#eef1f6;line-height:1.5;background:linear-gradient(135deg,rgba(245,196,81,.14),rgba(95,208,255,.08));}
.banner-box .bn-slide .bn-text b{color:#f5c451;display:block;font-size:17px;margin-bottom:5px;}
.banner-box .bn-dots{position:absolute;bottom:7px;left:0;right:0;display:flex;gap:5px;justify-content:center;z-index:2;}
.banner-box .bn-dots i{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.4);cursor:pointer;transition:all .25s;}
.banner-box .bn-dots i.on{background:#f5c451;width:16px;border-radius:3px;}
.notice-bar{display:flex;align-items:center;gap:9px;padding:9px 12px;margin-bottom:12px;border-radius:11px;background:linear-gradient(90deg,#2a2418,#1a1f2a 60%,#1a2330);border:1px solid #3a3420;font-size:13px;color:#e8c87a;cursor:pointer;overflow:hidden;}
.notice-bar .nb-ico{font-size:15px;flex:none;animation:nbPulse 1.8s ease-in-out infinite;}
.notice-bar .nb-marquee{flex:1;overflow:hidden;position:relative;mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);}
.notice-bar .nb-track{display:inline-block;white-space:nowrap;padding-left:100%;animation:nbScroll 11s linear infinite;}
.notice-bar .nb-marquee:hover .nb-track{animation-play-state:paused;}
.notice-bar .nb-more{flex:none;color:#9aa0aa;font-size:12px;}
@keyframes nbPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.18)}}
@keyframes nbScroll{from{transform:translateX(0)}to{transform:translateX(-100%)}}
.anno-card{width:86%;max-width:360px;background:#161b24;border:1px solid #2a2f3a;border-radius:16px;overflow:hidden;box-shadow:0 18px 50px rgba(0,0,0,.5);animation:annoIn .28s ease;--accent:#f5c451;}
.anno-card-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;font-size:16px;font-weight:700;color:var(--accent);border-bottom:2px solid var(--accent);}
.anno-card-head .anno-close{cursor:pointer;color:#9aa0aa;font-size:18px;line-height:1;}
.anno-card-body{padding:16px 16px 4px;font-size:14px;line-height:1.65;color:#d8dde6;max-height:52vh;overflow:auto;}
.anno-card-body img{max-width:100%;border-radius:10px;margin-top:10px;}
.anno-title{font-size:17px;font-weight:700;color:#fff;margin-bottom:8px;}
.anno-content{color:#c4ccd8;white-space:pre-wrap;word-break:break-word;}
.anno-item{padding:12px 0;border-bottom:1px dashed #2a2f3a;}
.anno-item:last-child{border-bottom:none;}
.anno-item-tag{display:inline-block;font-size:11px;padding:1px 8px;border-radius:20px;margin-bottom:6px;border:1px solid;}
.anno-card-foot{padding:12px 16px 16px;text-align:center;}
.anno-card-foot .btn.primary{width:100%;border:none;border-radius:11px;padding:11px;font-weight:700;color:#1a1f2a;background:linear-gradient(135deg,var(--accent),rgba(255,255,255,.3));}
@keyframes annoIn{from{opacity:0;transform:translateY(18px) scale(.95)}to{opacity:1;transform:none}}

/* 个人主页：退出登录按钮 */
.pf-logout{width:100%;margin-top:14px;padding:11px;border:none;border-radius:10px;background:#2a1f24;color:#ff8a8a;font-size:14px;font-weight:700;cursor:pointer;border:1px solid #4a2a30;}
.pf-logout:active{background:#3a252c;}
