/* landlord-style.css — 斗地主页面样式
   - 真实扑克牌花色样式（红黑双色，圆角，阴影，中心大花色）
   - 按钮、座位、底牌、出牌区
   - PC + 移动端双端适配，移动端触控优先
   - landlord 前缀全局，与五子棋完全隔离
*/

/* ==================== 容器与布局 ==================== */
/* 覆盖主站深蓝背景，斗地主页面直接铺满绿色 */
#page-landlord.page {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    background: radial-gradient(ellipse at center, #1a6b3c 0%, #0d3d22 70%, #061f10 100%) !important;
    overflow: visible;
    z-index: 1;
}
.ll-wrap {
    position: relative;
    width: 100%;
    height: 100vh;       /* 固定高度，确保 absolute bottom 从底部计算 */
    min-height: 100vh;
    background: radial-gradient(ellipse at center, #1a6b3c 0%, #0d3d22 70%, #061f10 100%);
    color: #fff;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
    user-select: none;
    -webkit-tap-highlight-color: transparent;
    overflow: visible;
}

/* ==================== 顶部栏 ==================== */
.ll-topbar {
    position: absolute; top: 0; left: 0; right: 0;
    height: 48px; z-index: 20;
    display: flex; align-items: center; justify-content: space-between;
    padding: 0 14px;
    background: linear-gradient(180deg, rgba(0,0,0,.55), rgba(0,0,0,0));
    backdrop-filter: blur(6px);
}
.ll-back-icon {
    background: rgba(255,255,255,.12); color: #fff; border: 1px solid rgba(255,255,255,.25);
    border-radius: 50%; width: 32px; height: 32px; font-size: 18px;
    cursor: pointer; display: flex; align-items: center; justify-content: center;
    flex-shrink: 0;
}
.ll-back-icon:active { transform: scale(.92); }
.ll-info { display: flex; gap: 12px; font-size: 13px; }
.ll-room { opacity: .9; }
.ll-mult { color: #ffd54a; font-weight: 700; }
.ll-balance { font-size: 14px; color: #ffd54a; font-weight: 700; }

/* ==================== 大厅 ==================== */
.ll-lobby {
    position: relative; z-index: 10;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    min-height: 100vh;
    padding: 64px 16px 24px;
    box-sizing: border-box;
    background: transparent;
}
.ll-title { font-size: 26px; margin: 0 0 6px; text-shadow: 0 2px 8px rgba(0,0,0,.5); }
.ll-sub { font-size: 13px; opacity: .75; margin: 0 0 20px; }
.ll-rooms {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 12px; width: 100%; max-width: 680px;
}
.ll-room-card {
    background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.18);
    border-radius: 14px; padding: 16px 14px; text-align: center;
    display: flex; flex-direction: column; gap: 6px; align-items: center;
    transition: transform .15s;
}
.ll-room-card:not(.ll-disabled):active { transform: scale(.97); }
.ll-room-card.ll-disabled { opacity: .45; }
.ll-room-name { font-size: 16px; font-weight: 700; }
.ll-room-base { font-size: 13px; color: #ffd54a; }
.ll-room-min { font-size: 12px; opacity: .7; }
.ll-loading { text-align: center; opacity: .6; padding: 30px; grid-column: 1/-1; }
.ll-login-hint { text-align: center; padding: 40px 20px; grid-column: 1/-1; background: rgba(255,255,255,0.03); border-radius: 12px; border: 1px solid rgba(255,255,255,0.08); }
.ll-match-status { margin-top: 16px; min-height: 20px; }
.ll-matching {
    display: flex; align-items: center; gap: 10px;
    background: rgba(0,0,0,.35); padding: 10px 16px; border-radius: 24px; font-size: 14px;
}
.ll-spinner {
    width: 16px; height: 16px; border: 2px solid rgba(255,255,255,.3);
    border-top-color: #ffd54a; border-radius: 50%; animation: ll-spin .8s linear infinite;
}
@keyframes ll-spin { to { transform: rotate(360deg); } }

/* ==================== 等待房间界面 ==================== */
.ll-waiting-room {
    position: fixed; inset: 0; z-index: 50;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    background: radial-gradient(ellipse at center, #1a6b3c 0%, #0d3d22 70%, #061f10 100%);
    padding: 20px; box-sizing: border-box;
}
.ll-waiting-room .ll-back-icon {
    position: absolute; top: 16px; left: 16px;
}

/* Match room back button - top left */
.ll-waiting-room #ll-wait-back {
    position: absolute;
    top: 14px;
    left: 14px;
    background: rgba(255,255,255,.12);
    color: #fff;
    border: 1px solid rgba(255,255,255,.25);
    border-radius: 50%;
    width: 34px;
    height: 34px;
    font-size: 18px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 10;
}
.ll-waiting-room #ll-wait-back:active {
    transform: scale(.92);
}
.ll-waiting-card {
    background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.15);
    border-radius: 20px; padding: 36px 32px; text-align: center;
    max-width: 360px; width: 100%;
    box-shadow: 0 8px 32px rgba(0,0,0,.4);
}
.ll-waiting-icon { margin-bottom: 16px; }
.ll-spinner-lg {
    display: inline-block; width: 36px; height: 36px;
    border: 3px solid rgba(255,255,255,.2); border-top-color: #ffd54a;
    border-radius: 50%; animation: ll-spin .8s linear infinite;
}
.ll-waiting-title { font-size: 22px; margin: 0 0 6px; font-weight: 700; }
.ll-waiting-sub { font-size: 13px; opacity: .7; margin-bottom: 24px; }
.ll-waiting-count {
    font-size: 48px; font-weight: 800; margin-bottom: 24px;
    display: flex; align-items: baseline; justify-content: center; gap: 4px;
}
.ll-waiting-num { color: #ffd54a; }
.ll-waiting-sep { opacity: .4; font-size: 36px; }
.ll-waiting-total { opacity: .6; }
.ll-waiting-players {
    display: flex; justify-content: center; gap: 14px; margin-bottom: 24px;
}
.ll-waiting-seat {
    width: 84px; padding: 12px 6px; border-radius: 12px;
    display: flex; flex-direction: column; align-items: center; gap: 4px;
    border: 2px solid rgba(255,255,255,.2); transition: all .3s; text-align: center;
}
.ll-waiting-seat.ll-seat-filled {
    background: rgba(91,155,255,.2); border-color: #5b9bff;
}
.ll-waiting-seat.ll-seat-empty {
    background: rgba(255,255,255,.04); opacity: .5;
    animation: ll-pulse 1.5s ease-in-out infinite;
}
@keyframes ll-pulse { 0%,100%{opacity:.4} 50%{opacity:.7} }
.ll-seat-avatar { font-size: 33px; line-height: 1; }
.ll-seat-name {
    font-size: 13px; color: #ffd54a; margin-top: 2px;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    max-width: 90px; text-align: center;
}
.ll-seat-gold { font-size: 12px; color: #ffd54a; font-weight: 700; }
.ll-waiting-tip { font-size: 14px; opacity: .8; }

/* 对局中玩家信息行的余额样式 */
.ll-gold-inline { color: #ffd54a; font-weight: 700; margin-left: 6px; }

/* ==================== 按钮 ==================== */
.ll-btn {
    background: rgba(255,255,255,.14); color: #fff; border: 1px solid rgba(255,255,255,.3);
    border-radius: 22px; padding: 10px 22px; font-size: 15px; cursor: pointer;
    transition: transform .12s, background .2s; min-width: 78px;
}
.ll-btn:active { transform: scale(.94); }
.ll-btn:disabled { opacity: .4; cursor: not-allowed; }
.ll-btn-primary { background: linear-gradient(180deg, #ffb347, #ff8c1a); border-color: #ff8c1a; color: #fff; font-weight: 700; }
.ll-btn-landlord { background: linear-gradient(180deg, #ff5b5b, #d32f2f); border-color: #d32f2f; font-weight: 700; }
.ll-btn-score { background: linear-gradient(180deg, #5b9bff, #2a6fd6); border-color: #2a6fd6; }
.ll-btn-hint { background: rgba(255,213,74,.2); border-color: #ffd54a; color: #ffd54a; }
.ll-btn-trust { background: rgba(155,89,182,.3); border-color: #9b59b6; }
.ll-btn-cancel { background: transparent; border: 1px solid rgba(255,255,255,.4); color: #fff; border-radius: 16px; padding: 4px 12px; font-size: 13px; cursor: pointer; }

/* ==================== 桌面 ==================== */
.ll-table { position: absolute; inset: 0; z-index: 5; }
/* ==================== 游戏桌面水印 ==================== */
.ll-watermark {
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    font-size: 42px; font-weight: 900;
    color: rgba(255, 255, 255, 0.08);
    letter-spacing: 6px;
    white-space: nowrap;
    z-index: 1;
    pointer-events: none;
    user-select: none;
    text-shadow: 0 2px 8px rgba(0,0,0,.2);
}
/* PC端 */
@media (min-width: 901px) {
    .ll-watermark { font-size: 56px; letter-spacing: 8px; }
}
/* 移动端640px */
@media (max-width: 640px) {
    .ll-watermark { font-size: 28px; letter-spacing: 4px; }
}
/* 移动端380px */
@media (max-width: 380px) {
    .ll-watermark { font-size: 22px; letter-spacing: 3px; }
}
/* 横屏移动端 */
body.ll-mobile-landscape .ll-watermark {
    font-size: 32px; letter-spacing: 5px;
}


/* ===== 玩家座位（参考图：左家+右家对称布局）===== */
.ll-seat { position: absolute; display: flex; flex-direction: column; align-items: center; }

/* 左侧玩家（座位2/上家） */
.ll-seat-left {
    top: 60px;
    left: 2%;
    transform: none;
    align-items: flex-start;
    gap: 4px;
    z-index: 8;
}

/* 右侧玩家（座位1/右家） */
.ll-seat-right {
    top: 60px;
    right: 2%;
    transform: none;
    align-items: flex-end;
    gap: 4px;
    z-index: 8;
}

/* 玩家头像圆形 */
.ll-avatar-circle {
    width: 48px; height: 48px;
    border-radius: 50%;
    border: 2.5px solid rgba(255,255,255,.35);
    overflow: visible;
    display: flex; align-items: center; justify-content: center;
    font-size: 26px; flex-shrink: 0;
    position: relative;
    box-shadow: 0 3px 10px rgba(0,0,0,.45);
    background: linear-gradient(135deg, #2a4a7a, #1a3058);
}

/* 地主皇冠标记 */
.ll-avatar-badge {
    position: absolute; top: -26px; left: 50%;
    transform: translateX(-50%);
    font-size: 36px; line-height: 1;
    z-index: 20;
    filter: drop-shadow(0 2px 4px rgba(0,0,0,.7));
    pointer-events: none;
}

/* 玩家信息行（名字 + 牌数徽章） */
.ll-player-row { display: flex; align-items: center; gap: 6px; }
.ll-seat-left .ll-player-row { flex-direction: row; }
.ll-seat-right .ll-player-row { flex-direction: row-reverse; }

/* 玩家昵称 */
.ll-player-name {
    font-size: 13px; font-weight: 600; color: #fff;
    max-width: 70px; overflow: visible; text-overflow: ellipsis; white-space: nowrap;
}

/* 牌数徽章 */
.ll-card-count-wrap {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 32px; height: 28px;
    background: linear-gradient(135deg, #3b82f6, #2563eb);
    border-radius: 14px; font-size: 24px; font-weight: 800; color: #fff;
    padding: 0 5px; box-shadow: 0 1px 4px rgba(59,130,246,.5); line-height: 1;
}

/* 金币显示 */
.ll-player-gold {
    font-size: 11px; color: #ffd54a; font-weight: 700;
    display: flex; align-items: center; gap: 2px;
}
.ll-seat-left .ll-player-gold { justify-content: flex-start; }
.ll-seat-right .ll-player-gold { justify-content: flex-end; }

/* 倒计时图标 */
.ll-timer-icon {
    font-size: 28px; line-height: 1;
    filter: drop-shadow(0 2px 4px rgba(0,0,0,.5));
    animation: ll-pulse-timer 1s ease-in-out infinite;
}
@keyframes ll-pulse-timer { 0%,100%{transform:scale(1)} 50%{transform:scale(1.08)} }

/* 手牌背面 */
.ll-hand-back-single { display: flex; align-items: center; justify-content: center; position: relative; }
.ll-cardback-single {
    width: 34px; height: 48px; border-radius: 5px;
    background: repeating-linear-gradient(45deg, #1e3a6e, #1e3a6e 3px, #16305e 3px, #16305e 6px),
        linear-gradient(135deg, transparent 46%, rgba(255,215,0,.15) 46%, rgba(255,215,0,.15) 54%, transparent 54%), #1a3060;
    border: 1.5px solid #4a7ac0; box-shadow: 0 2px 6px rgba(0,0,0,.5);
    position: relative; display: flex; align-items: center; justify-content: center;
}
.ll-cardback-single::after {
    content: '♢'; position: absolute; top: 50%; left: 50%;
    transform: translate(-50%, -50%); font-size: 11px;
    color: rgba(200,180,100,.4); pointer-events: none;
}
.ll-card-count-badge {
    position: absolute; top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    font-size: 18px; font-weight: 800; color: #fff;
    text-shadow: 0 2px 4px rgba(0,0,0,.8); z-index: 2; pointer-events: none;
}

.ll-more { font-size: 12px; opacity: .8; align-self: center; }

/* 对手牌叠排显示（像己方手牌一样） */
.ll-hand-back-stack {
    display: flex;
    flex-direction: row;
    align-items: flex-end;
    min-width: 60px;
    height: 70px;
    position: relative;
}
.ll-cardback-stack {
    width: 40px;
    height: 56px;
    border-radius: 6px;
    /* 经典扑克牌背面花纹：斜纹 + 菱形边框 */
    background: 
        repeating-linear-gradient(45deg, #1e3a6e, #1e3a6e 4px, #16305e 4px, #16305e 8px),
        linear-gradient(135deg, transparent 46%, rgba(255,215,0,.15) 46%, rgba(255,215,0,.15) 54%, transparent 54%),
        #1a3060;
    border: 2px solid #4a7ac0;
    box-shadow: 0 2px 6px rgba(0,0,0,.5);
    margin-left: -20px;
    flex-shrink: 0;
    position: relative;
}
/* 背面中央菱形装饰 */
.ll-cardback-stack::after {
    content: '♢';
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    font-size: 14px;
    color: rgba(200,180,100,.6);
    pointer-events: none;
}
.ll-cardback-stack:first-child {
    margin-left: 0;
}
/* 上方对手牌居中显示，偏移量调整 */
.ll-seat-top .ll-cardback-stack {
    margin-left: -22px;
}
.ll-seat-top .ll-cardback-stack:first-child {
    margin-left: 0;
}

/* 对手牌只显示一张背面 + 牌数（模仿微信斗地主） */
.ll-hand-back-single {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 60px;
    height: 70px;
    position: relative;
}
.ll-cardback-single {
    width: 36px;
    height: 50px;
    border-radius: 6px;
    /* 经典扑克牌背面：蓝色斜纹 + 菱形花纹 */
    background: 
        repeating-linear-gradient(45deg, #1e3a6e, #1e3a6e 3px, #16305e 3px, #16305e 6px),
        linear-gradient(135deg, transparent 46%, rgba(255,215,0,.15) 46%, rgba(255,215,0,.15) 54%, transparent 54%),
        #1a3060;
    border: 1.5px solid #4a7ac0;
    box-shadow: 0 2px 6px rgba(0,0,0,.5);
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
}
/* 背面中央小菱形 */
.ll-cardback-single::after {
    content: '♢';
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    font-size: 12px;
    color: rgba(200,180,100,.4);
    pointer-events: none;
}
.ll-card-count-badge {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 20px;
    font-weight: 800;
    color: #fff;
    text-shadow: 0 2px 4px rgba(0,0,0,.8);
    z-index: 2;
    pointer-events: none;
}

/* ==================== 出牌区 ==================== */
.ll-played-area {
    display: flex; align-items: center; flex-wrap: nowrap; justify-content: center;
    font-size: 12px; font-weight: 700;
    min-height: 20px; white-space: nowrap;
    text-shadow: 0 1px 3px rgba(0,0,0,.6);
}
.ll-my-played {
    display: flex; align-items: center; justify-content: center;
    position: absolute; bottom: 220px; left: 50%; transform: translateX(-50%);
    font-size: 13px; font-weight: 700;
    min-height: 20px; z-index: 9;
    text-shadow: 0 1px 3px rgba(0,0,0,.6);
}
/* 左家出牌区（参考图：中心偏左） */
.ll-played-top-left {
    position: absolute;
    top: 42%;
    left: 14%;
    transform: translate(-50%, -50%);
    z-index: 9;
    min-width: 80px;
    max-width: 50%;
    justify-content: flex-start;
    overflow-x: auto;
    overflow-y: visible;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    scroll-behavior: smooth;
}
/* 左家出牌滚动条隐藏 */
.ll-played-top-left::-webkit-scrollbar { display: none; }
/* 右家出牌区（参考图：中心偏右） */
.ll-played-right-left {
    position: absolute;
    top: 42%;
    right: 14%;
    transform: translate(50%, -50%);
    z-index: 9;
    display: flex; align-items: center; justify-content: flex-end;
    max-width: 55%; min-height: 20px;
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: visible;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    scroll-behavior: smooth;
}
/* 右家出牌滚动条隐藏 */
.ll-played-right-left::-webkit-scrollbar { display: none; }
/* 出牌人标签 */
.ll-played-who {
    font-size: 12px; font-weight: 700; color: #aaa;
    margin-right: 4px; flex-shrink: 0;
}
.ll-mini-err { color: #999; }
/* 不出标签 */
.ll-pass-tag {
    color: #94a3b8; font-size: 13px;
}

/* 底牌包裹（用于定位地主标签的相对容器） */
.ll-bottom-card-wrap {
    position: relative; display: inline-block;
    transform-style: preserve-3d;
}

/* 地主牌标记 — 印在牌面内部右上角（和点数花色一样是牌的一部分） */
.ll-card-landlord::after {
    content: '\1F451';
    position: absolute; top: 2px; right: 2px;
    width: 12px; height: 12px;
    background: linear-gradient(135deg, #f97316, #ea580c);
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 7px;
    line-height: 1;
    pointer-events: none;
}
/* mini 出牌牌面的地主标记（更小） */
.ll-card-mini.ll-card-landlord::after {
    width: 10px; height: 10px;
    font-size: 5px;
    top: 1px; right: 1px;
}
/* 底牌的地主标记 */
.ll-bottom-card-wrap.ll-card-landlord::after {
    width: 11px; height: 11px;
    font-size: 6px;
    top: 2px; right: 2px;
}

/* 旧的中央出牌区已废弃，保留不显示 */
.ll-center-played, .ll-center-played-cards, .ll-center-played-info,
.ll-center-player-name, .ll-me-tag, .ll-center-pass, .ll-center-hint { display: none; }
.ll-bomb-tag { font-size: 14px; }
@keyframes ll-shake { 0%,100%{transform:rotate(0)} 25%{transform:rotate(-10deg)} 75%{transform:rotate(10deg)} }

/* "不出" 标签 */
.ll-pass-tag {
    color: #67e8f9;
    font-size: 22px;
    font-weight: 900;
    letter-spacing: 4px;
    text-shadow: 0 2px 8px rgba(0,0,0,.7), 0 0 20px rgba(103,232,249,.3);
    white-space: nowrap;
    padding: 4px 12px;
}

/* 底牌区 */
.ll-bottom {
    position: absolute;
    display: flex; gap: 6px; z-index: 6; transition: all .4s ease;
    perspective: 900px;
}
/* 叫地主/抢地主阶段：底牌居中偏下 */
.ll-bottom-center {
    left: 50%; top: 55%;
    transform: translate(-50%, -50%);
}
.ll-bottom-center .ll-bottom-card {
    width: 48px; height: 68px;
}
/* 通用牌背面花纹（底牌等） */
.ll-cardback {
    border-radius: 6px;
    background: 
        repeating-linear-gradient(45deg, #1e3a6e, #1e3a6e 4px, #16305e 4px, #16305e 8px),
        linear-gradient(135deg, transparent 46%, rgba(255,215,0,.15) 46%, rgba(255,215,0,.15) 54%, transparent 54%),
        #1a3060;
    border: 2px solid #4a7ac0;
    box-shadow: 0 2px 6px rgba(0,0,0,.45);
    position: relative;
}
.ll-cardback::after {
    content: '♢';
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    font-size: 12px;
    color: rgba(200,180,100,.5);
    pointer-events: none;
}
/* 出牌阶段：底牌居中顶部显示（参考图顶部中央3张地主牌） */
.ll-bottom-top {
    top: 52px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 9;
}
.ll-bottom-card { width: 48px; height: 68px; }

/* 倒计时（每个玩家下方） */
.ll-seat-cd {
    font-size: 12px; font-weight: 700;
    color: #ffd54a; text-align: center;
    min-height: 16px; line-height: 1;
    margin-top: 4px;
}
.ll-seat-cd-self {
    font-size: 13px;
    margin-bottom: 6px;
}
/* 旧居中倒计时（已废弃，隐藏） */
.ll-countdown { display: none; }

/* ==================== 自己手牌 ==================== */
.ll-myhand-wrap {
    position: absolute; bottom: 72px; left: 0; right: 0;
    display: flex; flex-direction: column; align-items: center; z-index: 8;
}
.ll-myhand {
    display: flex; gap: 0; padding: 18px 36px 4px !important;
    overflow-x: auto; overflow-y: visible; max-width: 100%;
    scrollbar-width: none;
}
.ll-myhand::-webkit-scrollbar { display: none; }

/* 左下托管状态：与「不出/要不起」同字号，浮在头像与王冠之上 */
.ll-my-avatar-wrap {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    flex-shrink: 0;
}
.ll-trust-banner {
    position: fixed;
    left: 2%;
    bottom: 96px;
    z-index: 100;
    pointer-events: none;
    user-select: none;
}
.ll-trust-tag {
    color: #ffb347;
    font-size: 22px;
    font-weight: 900;
    letter-spacing: 4px;
    text-shadow: 0 2px 8px rgba(0, 0, 0, 0.7), 0 0 20px rgba(255, 179, 71, 0.35);
    white-space: nowrap;
    padding: 4px 12px;
}
body.ll-mobile-landscape .ll-trust-banner {
    left: 1.5%;
    bottom: 78px;
}
body.ll-mobile-landscape .ll-trust-tag {
    font-size: 22px;
    letter-spacing: 3px;
    padding: 4px 10px;
}

.ll-bottom-bar {
    position: absolute; bottom: 0; left: 0; right: 0;
    height: 52px; z-index: 12;
    display: flex; align-items: center; justify-content: flex-start; gap: 10px;
    padding: 0 2%;
    overflow: visible;
    background: linear-gradient(0deg, rgba(0,0,0,.65), rgba(0,0,0,0));
    backdrop-filter: blur(6px);
}
.ll-my-avatar-circle {
    width: 48px; height: 48px;
    border-radius: 50%;
    border: 2px solid rgba(255,255,255,.35);
    overflow: visible;
    display: flex; align-items: center; justify-content: center;
    font-size: 26px; flex-shrink: 0;
    position: relative;
    box-shadow: 0 2px 6px rgba(0,0,0,.45);
    background: linear-gradient(135deg, #2a4a7a, #1a3058);
}
.ll-my-name-text {
    font-size: 13px; font-weight: 600; color: #fff;
    max-width: 90px; overflow: visible; text-overflow: ellipsis; white-space: nowrap;
}
.ll-my-sbc-val {
    font-size: 14px; color: #ffd54a; font-weight: 700;
    white-space: nowrap;
}
/* 底部信息栏王冠（适配小头像） */
.ll-my-avatar-circle .ll-avatar-badge {
    font-size: 22px; top: -16px;
}

/* ==================== 扑克牌（核心视觉） ==================== */
.ll-card {
    position: relative; flex-shrink: 0;
    width: 63px; height: 91px;
    background: #fff; border-radius: 6px;
    box-shadow: 0 2px 6px rgba(0,0,0,.45);
    border: 1px solid #d8d8d8;
    margin-left: -26px; /* 牌叠放重叠 */
    transition: transform .12s, box-shadow .12s;
    overflow: visible;
}
.ll-card:first-child { margin-left: 0; }
.ll-myhand .ll-card-front { cursor: pointer; touch-action: manipulation; }
.ll-myhand .ll-card-front.ll-selected { transform: translateY(-20px); box-shadow: 0 8px 16px rgba(255,180,0,.5); border-color: #ffb347; }
.ll-myhand .ll-card-front.ll-hint { box-shadow: 0 0 0 2px #ffd54a, 0 4px 10px rgba(255,213,74,.5); }
.ll-card-front:active { transform: translateY(-6px); }

.ll-card-corner {
    position: absolute; display: flex; flex-direction: column; align-items: center;
    line-height: 1; font-weight: 700;
}
.ll-card-tl { top: 5px; left: 5px; }
.ll-card-br { bottom: 4px; right: 4px; transform: rotate(180deg); }
.ll-card-rank { font-size: 18px; }
.ll-card-suit { font-size: 14px; margin-top: 1px; }
.ll-card-center {
    position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%);
    font-size: 28px; line-height: 1;
}
.ll-card-front .red { color: #d8261c; }
.ll-card-front .black { color: #1a1a1a; }
.ll-joker { font-size: 11px; writing-mode: vertical-rl; }
.ll-joker-center { font-size: 35px; }

/* 出牌卡牌（与对手手牌背面大小一致） */
.ll-card-mini {
    width: 46px; height: 64px; margin-left: -15px;
    box-shadow: 0 1px 4px rgba(0,0,0,.4);
    border-radius: 4px; border: 1px solid #d8d8d8;
}
.ll-card-mini:first-child { margin-left: 0; }
.ll-card-mini .ll-card-rank { font-size: 13px; }
.ll-card-mini .ll-card-suit { font-size: 10px; }
.ll-card-mini .ll-card-center { font-size: 24px; }
.ll-card-mini .ll-card-corner { line-height: 1; }
.ll-card-mini .ll-card-tl { top: 3px; left: 3px; }
.ll-card-static {
    cursor: default;
    text-shadow: 0 1px 3px rgba(0,0,0,.6);
}

/* ==================== 操作区（手牌上方，正常文档流） ==================== */
/*
  放在 .ll-myhand-wrap 内部、#ll-myhand 上方。
  不使用 position fixed/absolute，用正常的 flex 文档流布局，
  按钮自然出现在手牌正上方，不可能跑偏。
*/
.ll-actions {
    display: flex;
    gap: 10px;
    justify-content: center;
    align-items: center;
    flex-wrap: wrap;
    padding: 6px 8px;
    z-index: 10;
}
.ll-actions .ll-btn {
    padding: 12px 28px; font-size: 17px; font-weight: 700;
    min-width: 90px; border-radius: 26px;
    box-shadow: 0 4px 12px rgba(0,0,0,.4);
}
.ll-waiting { font-size: 13px; opacity: .85; padding: 10px; color: #fff; text-shadow: 0 1px 4px rgba(0,0,0,.6); }

/* ==================== 菜单弹窗 ==================== */
.ll-menu-modal {
    position: fixed; inset: 0; z-index: 110;
    background: rgba(0,0,0,.6); display: flex; align-items: center; justify-content: center;
    backdrop-filter: blur(4px);
}
.ll-menu-card {
    position: relative;
    background: linear-gradient(180deg, #2a2f45, #1a1d2e);
    border: 1px solid rgba(255,255,255,.2); border-radius: 14px;
    padding: 20px 12px 14px; width: 56%; max-width: 160px; text-align: center;
    box-shadow: 0 12px 40px rgba(0,0,0,.6);
}
.ll-menu-close {
    position: absolute; top: 8px; right: 10px;
    background: none; border: none; color: #aaa; font-size: 18px;
    cursor: pointer; width: 24px; height: 24px;
    display: flex; align-items: center; justify-content: center;
}
.ll-menu-close:active { color: #fff; }
.ll-menu-title { margin: 0 0 14px; font-size: 16px; color: #fff; }
.ll-menu-body { display: flex; flex-direction: column; gap: 10px; }
.ll-menu-btn { width: 100%; padding: 10px; font-size: 15px; }
.ll-menu-slider { text-align: left; }
.ll-slider-label {
    display: flex; justify-content: space-between; align-items: center;
    font-size: 14px; color: #ccc; margin-bottom: 6px;
}
.ll-slider-label span { color: #ffd54a; font-weight: 700; }
.ll-slider {
    width: 100%; height: 6px; -webkit-appearance: none; appearance: none;
    background: rgba(255,255,255,.15); border-radius: 3px; outline: none;
}
.ll-slider::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none;
    width: 20px; height: 20px; border-radius: 50%;
    background: #ffd54a; cursor: pointer; border: 2px solid #fff;
    box-shadow: 0 2px 6px rgba(0,0,0,.4);
}
.ll-slider::-moz-range-thumb {
    width: 20px; height: 20px; border-radius: 50%;
    background: #ffd54a; cursor: pointer; border: 2px solid #fff;
    box-shadow: 0 2px 6px rgba(0,0,0,.4);
}

/* ==================== 弹窗 ==================== */
.ll-modal {
    position: fixed; inset: 0; z-index: 100;
    background: rgba(0,0,0,.6); display: flex; align-items: center; justify-content: center;
    backdrop-filter: blur(4px);
}
.ll-modal-card {
    background: linear-gradient(180deg, #2a2f45, #1a1d2e);
    border: 1px solid rgba(255,255,255,.2); border-radius: 16px;
    padding: 24px 22px; width: 88%; max-width: 360px; text-align: center;
    box-shadow: 0 12px 40px rgba(0,0,0,.6);
}
.ll-modal-card h3 { margin: 0 0 14px; font-size: 20px; }
.ll-settle-row { font-size: 14px; margin: 6px 0; opacity: .9; }
.ll-settle-payout { margin-top: 12px; padding-top: 10px; border-top: 1px solid rgba(255,255,255,.15); color: #ffd54a; }

/* 重新进入对局弹窗 */
.ll-reenter-modal {
    position: fixed; inset: 0; z-index: 120;
    background: rgba(0,0,0,.7); display: flex; align-items: center; justify-content: center;
    backdrop-filter: blur(6px);
}
.ll-reenter-card {
    background: linear-gradient(180deg, #1a6b3c, #0d3d22);
    border: 1px solid rgba(255,213,74,.4); border-radius: 18px;
    padding: 28px 24px; width: 86%; max-width: 340px; text-align: center;
    box-shadow: 0 12px 48px rgba(0,0,0,.7), 0 0 24px rgba(255,213,74,.15);
}
.ll-reenter-icon { font-size: 40px; margin-bottom: 8px; }
.ll-reenter-card h3 { margin: 0 0 10px; font-size: 20px; color: #ffd54a; }
.ll-reenter-desc { font-size: 14px; opacity: .9; margin: 0 0 6px; }
.ll-reenter-info { font-size: 13px; opacity: .7; margin: 0 0 20px; }
.ll-reenter-actions { display: flex; justify-content: center; }
.ll-reenter-actions .ll-btn { min-width: 120px; font-size: 16px; padding: 12px 28px; }

/* Toast */
.ll-toast {
    position: fixed; top: 60px; left: 50%; transform: translate(-50%, -20px);
    background: rgba(0,0,0,.82); color: #fff; padding: 10px 18px; border-radius: 22px;
    font-size: 14px; z-index: 200; opacity: 0; transition: opacity .2s, transform .2s; pointer-events: none;
}
.ll-toast.ll-toast-show { opacity: 1; transform: translate(-50%, 0); }

/* NFT 铸造锁定遮罩（前端只被动反映后端状态） */
.ll-mint-locked { position: relative; opacity: .5; pointer-events: none !important; }
.ll-mint-locked::after {
    content: '🔒 对局中'; position: absolute; inset: 0;
    display: flex; align-items: center; justify-content: center;
    background: rgba(0,0,0,.45); color: #fff; font-size: 12px; border-radius: inherit;
}

/* ==================== 移动端适配 ==================== */
@media (max-width: 640px) {
    .ll-lobby { padding: 56px 12px 16px; }
    .ll-title { font-size: 22px; margin-bottom: 4px; }
    .ll-sub { margin-bottom: 14px; }
    .ll-rooms { grid-template-columns: repeat(2, 1fr); gap: 10px; }
    .ll-room-card { padding: 12px 10px; }
    .ll-room-name { font-size: 15px; }
    /* 手牌缩小，触控友好 */
    .ll-card { width: 51px; height: 75px; margin-left: -30px; }
    .ll-card-corner.ll-card-tl { top: 2px; left: 2px; }
    .ll-card-corner.ll-card-br { bottom: 2px; right: 2px; }
    .ll-card-rank { font-size: 14px; }
    .ll-card-suit { font-size: 11px; margin-top: 0; }
    .ll-card-center { font-size: 23px; }
    .ll-card-mini { width: 40px; height: 56px; margin-left: -13px; }
    .ll-card-mini .ll-card-rank { font-size: 11px; }
    .ll-card-mini .ll-card-suit { font-size: 8px; }
    .ll-card-mini .ll-card-center { font-size: 18px; }
    .ll-card-mini .ll-card-tl { top: 2px; left: 2px; }

    .ll-cardback { width: 20px; height: 28px; }
    .ll-seat-left { top: 48px; left: 1%; }
    .ll-seat-right { top: 48px; right: 1%; }
    .ll-avatar-circle { width: 38px; height: 38px; font-size: 20px; }
    .ll-avatar-badge { font-size: 30px; top: -20px; }
    .ll-player-name { font-size: 11px; max-width: 55px; }
    .ll-player-gold { font-size: 10px; }
    .ll-card-count-wrap { font-size: 20px; min-width: 26px; height: 24px; }
    .ll-hand-back-single { display: flex; align-items: center; justify-content: center; }
    .ll-cardback-single { width: 26px; height: 36px; }
    .ll-card-count-badge { font-size: 15px; }
    .ll-timer-icon { font-size: 22px; }
    .ll-btn { padding: 9px 16px; font-size: 14px; min-width: 64px; }
    .ll-actions { gap: 6px; padding: 4px; }
    .ll-actions .ll-btn { padding: 10px 20px; font-size: 15px; min-width: 72px; }
    .ll-myhand-wrap { bottom: 48px; }
    .ll-my-played { bottom: 168px; font-size: 12px; }
    .ll-bottom-bar { height: 40px; padding: 0 2%; gap: 6px; justify-content: flex-start; }
    .ll-my-avatar-circle { width: 38px; height: 38px; font-size: 20px; }
    .ll-my-avatar-circle .ll-avatar-badge { font-size: 30px; top: -20px; }
    .ll-my-name-text { font-size: 11px; max-width: 70px; }
    .ll-my-sbc-val { font-size: 12px; }
    .ll-played-top-left { top: 36%; left: 10%; }
    .ll-played-right-left { top: 36%; right: 10%; max-width: 50%; }
    .ll-bottom-top { top: 44px; left: 50%; transform: translateX(-50%); }
    .ll-bottom-center { left: 50%; top: 46%; transform: translate(-50%,-50%); }
    .ll-bottom-card { width: 26px; height: 36px; }
}

@media (max-width: 380px) {
    .ll-card { width: 44px; height: 64px; margin-left: -26px; }
    .ll-card-corner.ll-card-tl { top: 1px; left: 1px; }
    .ll-card-corner.ll-card-br { bottom: 1px; right: 1px; }
    .ll-card-rank { font-size: 12px; }
    .ll-card-suit { font-size: 9px; margin-top: 0; }
    .ll-card-center { font-size: 19px; }
    .ll-card-mini { width: 34px; height: 48px; margin-left: -12px; }
    .ll-card-mini .ll-card-rank { font-size: 9px; }
    .ll-card-mini .ll-card-suit { font-size: 7px; }
    .ll-card-mini .ll-card-center { font-size: 14px; }
    .ll-card-mini .ll-card-tl { top: 1px; left: 1px; }

    .ll-rooms { grid-template-columns: 1fr 1fr; }
    .ll-played-top-left { top: 32%; left: 6%; }
    .ll-played-right-left { top: 32%; right: 6%; max-width: 52%; }
    .ll-seat-left { top: 44px; left: 0; }
    .ll-seat-right { top: 44px; right: 0; }
    .ll-avatar-circle { width: 34px; height: 34px; font-size: 18px; }
    .ll-avatar-badge { font-size: 26px; top: -18px; }
    .ll-player-name { font-size: 10px; max-width: 48px; }
    .ll-player-gold { font-size: 9px; }
    .ll-card-count-wrap { font-size: 18px; min-width: 24px; height: 22px; }
}

/* 横屏移动端 */
@media (max-width: 900px) and (orientation: landscape) and (max-height: 500px) {
    .ll-seat-left { top: 44px; left: 1%; }
    .ll-seat-right { top: 44px; right: 1%; }
    .ll-bottom-top { top: 42px; left: 50%; transform: translateX(-50%); }
    .ll-bottom-center { left: 50%; top: 46%; transform: translate(-50%,-50%); }
    .ll-myhand-wrap { bottom: 42px; }
    .ll-my-played { bottom: 153px; font-size: 12px; }
    .ll-bottom-bar { height: 38px; padding: 0 2%; gap: 5px; justify-content: flex-start; }
    .ll-my-avatar-circle { width: 34px; height: 34px; font-size: 18px; }
    .ll-my-avatar-circle .ll-avatar-badge { font-size: 26px; top: -18px; }
    .ll-my-name-text { font-size: 10px; max-width: 60px; }
    .ll-my-sbc-val { font-size: 11px; }
    .ll-played-top-left { top: 34%; left: 8%; }
    .ll-played-right-left { top: 34%; right: 8%; max-width: 50%; }
    .ll-avatar-circle { width: 36px; height: 36px; font-size: 19px; }
    .ll-avatar-badge { font-size: 28px; top: -20px; }
    .ll-player-name { font-size: 11px; }
    .ll-card-count-wrap { font-size: 20px; }
    .ll-card { width: 47px; height: 68px; margin-left: -28px; }
    .ll-card-corner.ll-card-tl { top: 2px; left: 2px; }
    .ll-card-corner.ll-card-br { bottom: 2px; right: 2px; }
    .ll-card-rank { font-size: 13px; }
    .ll-card-suit { font-size: 9px; margin-top: 0; }
    .ll-card-center { font-size: 21px; }
    .ll-card-mini { width: 36px; height: 50px; margin-left: -12px; }
    .ll-card-mini .ll-card-rank { font-size: 10px; }
    .ll-card-mini .ll-card-suit { font-size: 7px; }
    .ll-card-mini .ll-card-center { font-size: 16px; }
    .ll-card-mini .ll-card-tl { top: 2px; left: 2px; }
}

/* ==================== 手机横屏强制旋转 ==================== */
/* 仅在对局场景 + 手机设备时生效，旋转整个对局页面90度 */

body.ll-mobile-landscape .ll-lobby {
    display: none !important;
}

/* 横屏时让父容器不裁剪旋转内容 */
body.ll-mobile-landscape #page-landlord {
    overflow: visible !important;
}
body.ll-mobile-landscape .ll-wrap {
    overflow: visible !important;
}

body.ll-mobile-landscape .ll-table {
    position: fixed !important;
    top: 0;
    left: 100vw;
    transform: rotate(90deg);
    transform-origin: top left;
    width: 100vh !important;
    height: 100vw !important;
    z-index: 100;
    overflow: visible;
}

/* 横屏时确保顶部bar适应宽度 */
body.ll-mobile-landscape .ll-topbar {
    width: 100%;
}

/* 横屏模式下弹窗层级修复 */
body.ll-mobile-landscape .ll-modal {
    z-index: 200;
}
body.ll-mobile-landscape .ll-menu-modal {
    z-index: 200;
}
body.ll-mobile-landscape .ll-menu-modal .ll-menu-card {
    transform: rotate(90deg);
    max-width: 240px;
    padding: 16px 24px;
}
body.ll-mobile-landscape .ll-volume-modal {
    z-index: 200;
}
body.ll-mobile-landscape .ll-volume-modal .ll-menu-card {
    transform: rotate(90deg);
    max-width: 220px;
    padding: 16px 28px;
}
body.ll-mobile-landscape .ll-reenter-modal {
    z-index: 220;
}

/* ==================== 横屏信息栏（底分/倍率/SBC） ==================== */
.ll-landscape-bar { display: none; }

/* 横屏隐藏原topbar */
body.ll-mobile-landscape .ll-topbar { display: none !important; }

/* 横屏显示信息栏 */
body.ll-mobile-landscape .ll-landscape-bar {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 34px;
    z-index: 15;
    padding: 0 8px;
    background: linear-gradient(180deg, rgba(0,0,0,.6), rgba(0,0,0,0));
    backdrop-filter: blur(4px);
}
.ll-landscape-back {
    background: rgba(255,255,255,.12);
    color: #fff;
    border: 1px solid rgba(255,255,255,.25);
    border-radius: 50%;
    width: 26px;
    height: 26px;
    font-size: 15px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.ll-landscape-back:active { transform: scale(.92); }
.ll-landscape-info {
    display: flex;
    gap: 10px;
    font-size: 12px;
    color: #fff;
    font-weight: 600;
}
.ll-landscape-mult { color: #ffd54a; font-weight: 700; }
.ll-landscape-sbc {
    font-size: 12px;
    color: #ffd54a;
    font-weight: 700;
    white-space: nowrap;
}
/* 横屏底部信息栏适配 */
body.ll-mobile-landscape .ll-bottom-bar {
    height: 32px;
    padding: 0 2%;
    gap: 6px;
    justify-content: flex-start;
}
body.ll-mobile-landscape .ll-my-avatar-circle {
    width: 36px; height: 36px; font-size: 19px;
}
body.ll-mobile-landscape .ll-my-avatar-circle .ll-avatar-badge {
    font-size: 28px; top: -20px;
}
body.ll-mobile-landscape .ll-my-name-text {
    font-size: 10px; max-width: 50px;
}
body.ll-mobile-landscape .ll-my-sbc-val {
    font-size: 11px;
}
body.ll-mobile-landscape .ll-myhand-wrap {
    bottom: 34px;
}

/* ==================== 底牌翻开缩小一半（避免图案重叠） ==================== */
/* 出牌阶段底牌：缩小50%，图案按比例缩放 */
.ll-bottom-top .ll-bottom-card-wrap {
    width: 27px;
    height: 39px;
    overflow: visible;
}
.ll-bottom-top .ll-bottom-card-wrap .ll-card {
    transform: scale(0.5);
    transform-origin: top left;
    margin-left: 0;
}
/* 缩小后地主标记也缩小 */
.ll-bottom-top .ll-bottom-card-wrap.ll-card-landlord::after {
    width: 7px;
    height: 7px;
    font-size: 4px;
    top: 1px;
    right: 1px;
}
/* 横屏模式下底牌间距和位置调整 */
body.ll-mobile-landscape .ll-bottom-top {
    top: 36px;
    gap: 3px;
}
/* 移动端竖屏底牌也缩小 */
@media (max-width: 640px) {
    .ll-bottom-top .ll-bottom-card-wrap {
        width: 27px;
        height: 39px;
    }
    .ll-bottom-top .ll-bottom-card-wrap .ll-card {
        transform: scale(0.5);
        transform-origin: top left;
        margin-left: 0;
    }
    .ll-bottom-top .ll-bottom-card-wrap.ll-card-landlord::after {
        width: 7px;
        height: 7px;
        font-size: 4px;
        top: 1px;
        right: 1px;
    }
    .ll-bottom-top {
        top: 36px;
        gap: 3px;
    }
}
/* ===== 己方头像上移（昵称和余额不动，用relative定位不破坏布局）===== */
.ll-my-avatar-circle {
    position: relative;
    top: -16px;
}

/* ===== 牌背面上牌数：适配34x48小卡片尺寸 ===== */
.ll-hand-back-single .ll-card-count-badge {
    font-size: 15px;
    font-weight: 900;
    color: #fff;
    text-shadow: 0 1px 3px rgba(0,0,0,.9), 0 0 6px rgba(59,130,246,.5);
}

/* ===== 隐藏独立蓝色牌数徽章（已移到牌背面显示）===== */
.ll-card-count-wrap {
    display: none !important;
}

/* ===== 扑克牌视觉复刻微信斗地主 (2026-06-29) ===== */

/* 基础牌尺寸 - 稍微加宽 */
.ll-card {
    width: 65px !important;
    height: 93px !important;
}

/* 左上角/右下角 点数 - 加大加粗（微信风格） */
.ll-card-rank {
    font-size: 26px !important;
    font-weight: 900 !important;
    letter-spacing: -0.5px;
}

/* 左上角/右下角 花色 - 加大 */
.ll-card-suit {
    font-size: 18px !important;
    margin-top: -1px !important;
}

/* 中央花色符号 - 加大 */
.ll-card-center {
    font-size: 34px !important;
}

/* ===== JOKER 复刻微信：左侧大字JOKER竖排 + 中央图案 ===== */
.ll-joker {
    font-size: 20px !important;
    font-weight: 900 !important;
    letter-spacing: 1.5px;
    font-family: Arial, Helvetica, sans-serif !important;
}
/* 小王黑色JOKER */
.ll-card-corner.black .ll-joker {
    color: #1a1a1a !important;
}
/* 大王红色JOKER */
.ll-card-corner.red .ll-joker {
    color: #e53935 !important;
}
/* 中央JOKER图标加大 */
.ll-joker-center {
    font-size: 42px !important;
}

/* 出牌区小卡同步调整 */
.ll-card-mini .ll-card-rank {
    font-size: 17px !important;
    font-weight: 900 !important;
}
.ll-card-mini .ll-card-suit {
    font-size: 13px !important;
}
.ll-card-mini .ll-card-center {
    font-size: 26px !important;
}

/* ===== 移动端扑克牌适配（微信风格） ===== */
@media (max-width: 640px) {
    .ll-card-rank { font-size: 20px !important; font-weight: 900 !important; }
    .ll-card-suit { font-size: 14px !important; }
    .ll-card-center { font-size: 26px !important; }
    .ll-joker { font-size: 16px !important; font-weight: 900 !important; }
    .ll-joker-center { font-size: 32px !important; }
    .ll-card-mini .ll-card-rank { font-size: 14px !important; font-weight: 900 !important; }
    .ll-card-mini .ll-card-suit { font-size: 11px !important; }
    .ll-card-mini .ll-card-center { font-size: 20px !important; }
}

/* ===== JOKER 完全复刻微信斗地主（竖排+彩色） ===== */

/* JOKER文字：竖排、粗体、大字 */
.ll-joker {
    font-size: 20px !important;
    font-weight: 900 !important;
    letter-spacing: 0 !important;
    writing-mode: vertical-rl !important;   /* 竖排！每个字母一行 */
    text-orientation: upright !important;     /* 字母正立不旋转 */
    font-family: Arial, Helvetica, sans-serif !important;
    line-height: 1.1 !important;
    display: flex !important;
    flex-direction: column !important;
}

/* 大王：红色JOKER */
.ll-card-corner.red .ll-joker {
    color: #e53935 !important;
    /* 红色渐变效果模拟微信彩色大王 */
    background: linear-gradient(180deg,
        #ff1744 0%, #d50000 25%,
        #ff6e40 50%, #ffab00 75%,
        #e53935 100%);
    -webkit-background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    background-clip: text !important;
    color: transparent !important;
    text-shadow: none !important;
}

/* 小王：黑色JOKER */
.ll-card-corner.black .ll-joker {
    color: #1a1a1a !important;
    /* 黑色渐变效果 */
    background: linear-gradient(180deg,
        #212121 0%, #424242 30%,
        #616161 60%, #212121 100%);
    -webkit-background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    background-clip: text !important;
    color: transparent !important;
}

/* 中央JOKER图标：大王彩虹色，小王黑白 */
.ll-joker-center.red {
    font-size: 42px !important;
    filter: hue-rotate(-10deg) saturate(1.5) brightness(1.1);
}
.ll-joker-center.black {
    font-size: 38px !important;
    filter: grayscale(0.8) brightness(0.7);
}

/* 移动端JOKER适配 */
@media (max-width: 640px) {
    .ll-joker { font-size: 16px !important; }
    .ll-joker-center.red { font-size: 32px !important; }
    .ll-joker-center.black { font-size: 28px !important; }
}

/* ============================================
   UI修复v2：字体瘦身 + JOKER竖排 + 出牌缩小 + 对手出牌居中
   ============================================ */

/* ===== 1. 牌面字体瘦身（微信风格：瘦长清晰，不是胖粗）===== */
.ll-card-rank {
    font-size: 24px !important;
    font-weight: 700 !important;  /* 从900降到700，不再那么笨重 */
    letter-spacing: -0.5px !important;
    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important;
}
.ll-card-suit {
    font-size: 17px !important;
    margin-top: -1px !important;
    font-weight: 500 !important; /* 花色也瘦一点 */
}
.ll-card-center {
    font-size: 32px !important;
}

/* ===== 2. JOKER竖排字母（参考图片：左侧细长竖排JOKER）===== */
.ll-joker {
    font-size: 18px !important;
    font-weight: 700 !important;   /* 瘦一点 */
    letter-spacing: 0 !important;
    writing-mode: vertical-rl !important;
    text-orientation: upright !important;
    font-family: "Arial Narrow", Arial, sans-serif !important; /* 窄体字体 */
    line-height: 1.15 !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 0px !important;
}

/* 大王：红色渐变（彩色） */
.ll-card-corner.red .ll-joker {
    background: linear-gradient(180deg,
        #ff1744 0%, #d50000 20%,
        #ff6e40 45%, #ffab00 70%,
        #e53935 100%);
    -webkit-background-clip: text !important;
    background-clip: text !important;
    color: transparent !important;
    -webkit-text-fill-color: transparent !important;
}
/* 小王：黑色渐变 */
.ll-card-corner.black .ll-joker {
    background: linear-gradient(180deg,
        #212121 0%, #424242 40%,
        #616161 70%, #212121 100%);
    -webkit-background-clip: text !important;
    background-clip: text !important;
    color: transparent !important;
    -webkit-text-fill-color: transparent !important;
}

/* 中央图案 */
.ll-joker-center.red {
    font-size: 38px !important;
    filter: hue-rotate(-10deg) saturate(1.4) brightness(1.08);
}
.ll-joker-center.black {
    font-size: 34px !important;
    filter: grayscale(0.7) brightness(0.75);
}

/* ===== 3. 打出的牌缩小一半（mini卡从~46x64 → ~23x34）===== */
.ll-card-mini {
    width: 25px !important;
    height: 36px !important;
    margin-left: -11px !important;
    border-radius: 3px !important;
    border-width: 1px !important;
}
.ll-card-mini:first-child { margin-left: 0 !important; }
.ll-card-mini .ll-card-rank {
    font-size: 9px !important;
    font-weight: 700 !important;
}
.ll-card-mini .ll-card-suit {
    font-size: 8px !important;
    margin-top: 0px !important;
}
.ll-card-mini .ll-card-center {
    font-size: 14px !important;
}
.ll-card-mini .ll-card-corner { line-height: 1 !important; }
.ll-card-mini .ll-card-tl { top: 2px; left: 2px; }
.ll-card-mini .ll-card-br { bottom: 2px; right: 2px; }


/* ===== 4. 两边玩家出牌区居中（向中间生长，不向外跑）===== */

/* 左家出牌：flex-end让牌向右（朝桌面中心）生长 */
.ll-played-top-left {
    justify-content: flex-end !important;
    transform: translate(-50%, -50%) !important;
    /* 左边缘对齐自己座位，牌往右延伸到中央 */
    align-items: center;
}

/* 右家出牌：flex-start让牌向左（朝桌面中心）生长 */
.ll-played-right-left {
    justify-content: flex-start !important;
    transform: translate(50%, -50%) !important;
    /* 右边缘对齐自己座位，牌往左延伸到中央 */
    align-items: center;
}

/* 自己出牌区也稍微调整 */
.ll-my-played {
    bottom: 210px !important;
}


/* ===== 移动端适配（UI修复v2）===== */
@media (max-width: 640px) {
    /* 牌面字体移动端 */
    .ll-card-rank { font-size: 18px !important; font-weight: 700 !important; }
    .ll-card-suit { font-size: 13px !important; }
    .ll-card-center { font-size: 24px !important; }

    /* JOKER移动端 */
    .ll-joker { font-size: 14px !important; font-weight: 700 !important; }
    .ll-joker-center.red { font-size: 28px !important; }
    .ll-joker-center.black { font-size: 24px !important; }

    /* 出牌区mini卡移动端更小 */
    .ll-card-mini {
        width: 20px !important;
        height: 28px !important;
        margin-left: -9px !important;
    }
    .ll-card-mini .ll-card-rank { font-size: 7px !important; }
    .ll-card-mini .ll-card-suit { font-size: 6px !important; }
    .ll-card-mini .ll-card-center { font-size: 11px !important; }

    /* 出牌区域移动端调整 */
    .ll-played-top-left { left: 8% !important; top: 38% !important; max-width: 45% !important; }
    .ll-played-right-left { right: 8% !important; top: 38% !important; max-width: 48% !important; }
}

/* ===== 地主标签增大（手牌+头像皇冠+底牌+出牌区同步）===== */

/* 手牌地主标记：从12px→22px，文字从7px→13px */
.ll-card-landlord::after {
    width: 22px !important;
    height: 22px !important;
    font-size: 13px !important;
    top: 2px !important;
    right: 2px !important;
    box-shadow: 0 1px 4px rgba(0,0,0,.4) !important;
}

/* 头像皇冠标记：从36px→44px */
.ll-avatar-badge {
    font-size: 44px !important;
    top: -30px !important;
}

/* 己方头像皇冠也增大 */
.ll-my-avatar-circle .ll-avatar-badge {
    font-size: 28px !important;
    top: -20px !important;
}

/* mini出牌区地主标记：从10px→16px */
.ll-card-mini.ll-card-landlord::after {
    width: 16px !important;
    height: 16px !important;
    font-size: 9px !important;
    top: 1px !important;
    right: 1px !important;
}

/* 底牌地主标记：从11px→18px */
.ll-bottom-card-wrap.ll-card-landlord::after {
    width: 18px !important;
    height: 18px !important;
    font-size: 10px !important;
}

/* 移动端适配 */
@media (max-width: 640px) {
    .ll-card-landlord::after {
        width: 16px !important;
        height: 16px !important;
        font-size: 10px !important;
    }
    .ll-avatar-badge {
        font-size: 36px !important;
        top: -24px !important;
    }
    .ll-card-mini.ll-card-landlord::after {
        width: 12px !important;
        height: 12px !important;
        font-size: 7px !important;
    }
}

/* ===== JOKER字母溢出修复 ===== */

/* JOKER容器：限制在左上角区域内，不超出牌面 */
.ll-card-tl {
    /* overflow:hidden removed v7 */
    max-width: 28px !important;
    max-height: 75% !important;
}

/* JOKER文字：缩小字号+紧凑间距，确保不溢出 */
.ll-joker {
    font-size: 15px !important;        /* 从18降到15 */
    font-weight: 700 !important;
    writing-mode: vertical-rl !important;
    text-orientation: upright !important;
    font-family: "Arial Narrow", Arial, sans-serif !important;
    line-height: 0.95 !important;     /* 更紧凑 */
    letter-spacing: -1px !important; /* 字母间负间距 */
    gap: -2px !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    padding: 2px 3px 0 0 !important;
}

/* ===== JOKER字母溢出终极修复 v3 ===== */
/* 目标：5个字母JOKER竖排完整显示在牌面内，不溢出 */

/* JOKER容器：限制尺寸+隐藏溢出作为安全网 */
.ll-card-tl {
    max-width: 30px !important;
}

/* 桌面端JOKER：牌65x93，可用高度约80px */
/* 5字母 x 13px x 0.9行高 = 58.5px，安全 */
.ll-joker {
    font-size: 13px !important;
    font-weight: 700 !important;
    writing-mode: vertical-rl !important;
    text-orientation: upright !important;
    font-family: "Arial Narrow", "Helvetica Neue", Arial, sans-serif !important;
    line-height: 0.9 !important;
    letter-spacing: 0 !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    padding: 1px 0 0 0 !important;
    /* max-height removed v7 */
    overflow: hidden !important;
}

/* 移动端JOKER：牌44x64，可用高度约55px */
/* 5字母 x 10px x 0.9行高 = 45px，安全 */
@media (max-width: 640px) {
    .ll-joker {
        font-size: 10px !important;
        line-height: 0.85 !important;
        /* max-height removed v7 */
    }
}


/* ===== 出牌mini卡=手牌一半 + 移动端中央图案修复 v4 ===== */

/* === 桌面端：手牌65x93, mini=半=33x47 === */
.ll-card-mini {
    width: 33px !important;
    height: 47px !important;
    margin-left: -14px !important;
    border-radius: 3px !important;
    border-width: 1px !important;
}
.ll-card-mini:first-child { margin-left: 0 !important; }
.ll-card-mini .ll-card-rank {
    font-size: 12px !important;
    font-weight: 700 !important;
    letter-spacing: -0.3px !important;
}
.ll-card-mini .ll-card-suit {
    font-size: 9px !important;
    margin-top: 0 !important;
}
.ll-card-mini .ll-card-center {
    font-size: 16px !important;
}
.ll-card-mini .ll-card-corner { line-height: 1 !important; }
.ll-card-mini .ll-card-tl { top: 2px; left: 2px; }
.ll-card-mini .ll-card-br { bottom: 2px; right: 2px; }

.ll-card-mini .ll-joker-center {
    font-size: 18px !important;
}

/* === 移动端640px：手牌51x75, mini=半=26x38, 中央下移 === */
@media (max-width: 640px) {
    /* 手牌缩小(覆盖之前65x93的!important) */
    .ll-card {
        width: 51px !important;
        height: 75px !important;
        margin-left: -28px !important;
    }
    .ll-card-corner.ll-card-tl { top: 2px; left: 2px; }
    .ll-card-corner.ll-card-br { bottom: 2px; right: 2px; }
    .ll-card-rank { font-size: 16px !important; font-weight: 700 !important; }
    .ll-card-suit { font-size: 11px !important; margin-top: 0 !important; }
    /* 中央图案下移+缩小，避免与角标重叠 */
    .ll-card-center {
        font-size: 22px !important;
        top: 58% !important;
    }
    /* JOKER移动端 */
    .ll-joker {
        font-size: 10px !important;
        line-height: 0.85 !important;
        max-height: 50px !important;
    }
    .ll-joker-center.red { font-size: 28px !important; }
    .ll-joker-center.black { font-size: 24px !important; }
    
    /* mini卡 = 手牌一半 = 26x38 */
    .ll-card-mini {
        width: 26px !important;
        height: 38px !important;
        margin-left: -11px !important;
    }
    .ll-card-mini .ll-card-rank { font-size: 8px !important; }
    .ll-card-mini .ll-card-suit { font-size: 6px !important; }
    .ll-card-mini .ll-card-center { font-size: 11px !important; top: 58% !important; }
    .ll-card-mini .ll-card-tl { top: 1px; left: 1px; }
    .ll-card-mini .ll-card-br { bottom: 1px; right: 1px; }
    .ll-card-mini .ll-joker {
        font-size: 5px !important;
        line-height: 0.8 !important;
        max-height: 26px !important;
    }
    .ll-card-mini .ll-joker-center { font-size: 13px !important; }
}

/* === 移动端380px：手牌44x64, mini=半=22x32 === */
@media (max-width: 380px) {
    .ll-card {
        width: 44px !important;
        height: 64px !important;
        margin-left: -24px !important;
    }
    .ll-card-rank { font-size: 14px !important; }
    .ll-card-suit { font-size: 9px !important; }
    .ll-card-center {
        font-size: 18px !important;
        top: 58% !important;
    }
    .ll-joker {
        font-size: 8px !important;
        max-height: 42px !important;
    }
    .ll-joker-center.red { font-size: 24px !important; }
    .ll-joker-center.black { font-size: 20px !important; }
    
    /* mini卡 = 手牌一半 = 22x32 */
    .ll-card-mini {
        width: 22px !important;
        height: 32px !important;
        margin-left: -9px !important;
    }
    .ll-card-mini .ll-card-rank { font-size: 7px !important; }
    .ll-card-mini .ll-card-suit { font-size: 5px !important; }
    .ll-card-mini .ll-card-center { font-size: 9px !important; top: 58% !important; }
    .ll-card-mini .ll-joker {
        font-size: 5px !important;
        max-height: 22px !important;
    }
    .ll-card-mini .ll-joker-center { font-size: 11px !important; }
}

/* ===== 手牌尺寸复刻微信斗地主 v5（参考截图比例） ===== */
/* 截图分析：牌宽约74-76px, 高约106-110px
   角标点数~28-30px, 花色~20px, 中央图案~38-42px
   JOKER竖排字母~20-22px */

/* --- 桌面端：手牌 74x107（比之前65x93放大约15%）--- */
.ll-card {
    width: 74px !important;
    height: 107px !important;
    margin-left: -28px !important;   /* 减少，防首张牌截切 */
}

/* 角标点数：加粗瘦长字体 */
.ll-card-rank {
    font-size: 29px !important;
    font-weight: 700 !important;
    letter-spacing: -0.8px !important;
    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important;
}

/* 角标花色 */
.ll-card-suit {
    font-size: 20px !important;
    margin-top: -2px !important;
    font-weight: 500 !important;
}

/* 中央大图案 */
.ll-card-center {
    font-size: 40px !important;
    top: 62% !important;
}

/* JOKER竖排字母 */
.ll-joker {
    font-size: 14px !important;
    font-weight: 700 !important;
    letter-spacing: -1px !important;
    writing-mode: vertical-rl !important;
    text-orientation: upright !important;
    font-family: "Arial Narrow", "Helvetica Neue", Arial, sans-serif !important;
    line-height: 0.78 !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    padding: 2px 0 0 0 !important;
}

/* 大王红色渐变 */
.ll-card-corner.red .ll-joker {
    background: linear-gradient(180deg,
        #ff1744 0%, #d50000 20%,
        #ff6e40 45%, #ffab00 70%,
        #e53935 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    color: transparent !important;
    -webkit-text-fill-color: transparent !important;
}
/* 小王黑色渐变 */
.ll-card-corner.black .ll-joker {
    background: linear-gradient(180deg,
        #212121 0%, #424242 40%,
        #616161 70%, #212121 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    color: transparent !important;
    -webkit-text-fill-color: transparent !important;
}

/* 中央JOKER图标 */
.ll-joker-center.red {
    font-size: 46px !important;
    filter: hue-rotate(-10deg) saturate(1.4) brightness(1.08);
}
.ll-joker-center.black {
    font-size: 40px !important;
    filter: grayscale(0.7) brightness(0.75);
}

/* --- 出牌mini卡 = 手牌一半 = 37x54 --- */
.ll-card-mini {
    width: 37px !important;
    height: 54px !important;
    margin-left: -17px !important;
    border-radius: 4px !important;
    border-width: 1px !important;
}
.ll-card-mini:first-child { margin-left: 0 !important; }
.ll-card-mini .ll-card-rank {
    font-size: 14px !important;
    font-weight: 700 !important;
    letter-spacing: -0.5px !important;
}
.ll-card-mini .ll-card-suit {
    font-size: 11px !important;
    margin-top: 0 !important;
}
.ll-card-mini .ll-card-center {
    font-size: 19px !important;
}
.ll-card-mini .ll-card-corner { line-height: 1 !important; }
.ll-card-mini .ll-card-tl { top: 2px; left: 2px; }
.ll-card-mini .ll-card-br { bottom: 2px; right: 2px; }

.ll-card-mini .ll-joker-center {
    font-size: 22px !important;
}

/* --- 移动端640px：手牌 58x84, mini=半=29x42 --- */
@media (max-width: 640px) {
    .ll-card {
        width: 58px !important;
        height: 84px !important;
        margin-left: -28px !important;
    }
    .ll-card-corner.ll-card-tl { top: 3px; left: 3px; }
    .ll-card-corner.ll-card-br { bottom: 3px; right: 3px; }
    .ll-card-rank { font-size: 23px !important; font-weight: 700 !important; }
    .ll-card-suit { font-size: 16px !important; margin-top: -1px !important; }
    /* 中央下移避免与角标重叠 */
    .ll-card-center {
        font-size: 31px !important;
        top: 62% !important;
    }
    .ll-joker {
        font-size: 12px !important;
        line-height: 0.78 !important;
    }
    .ll-joker-center.red { font-size: 36px !important; }
    .ll-joker-center.black { font-size: 31px !important; }

    /* mini卡 = 手牌一半 */
    .ll-card-mini {
        width: 29px !important;
        height: 42px !important;
        margin-left: -13px !important;
    }
    .ll-card-mini .ll-card-rank { font-size: 11px !important; font-weight: 700 !important; }
    .ll-card-mini .ll-card-suit { font-size: 8px !important; }
    .ll-card-mini .ll-card-center { font-size: 8px !important; top: 62% !important; }
    .ll-card-mini .ll-card-tl { top: 2px; left: 2px; }
    .ll-card-mini .ll-card-br { bottom: 2px; right: 2px; }

}

/* --- 移动端380px：手牌 50x72, mini=半=25x36 --- */
@media (max-width: 380px) {
    .ll-card {
        width: 50px !important;
        height: 72px !important;
        margin-left: -27px !important;
    }
    .ll-card-corner.ll-card-tl { top: 2px; left: 2px; }
    .ll-card-corner.ll-card-br { bottom: 2px; right: 2px; }
    .ll-card-rank { font-size: 19px !important; font-weight: 700 !important; }
    .ll-card-suit { font-size: 13px !important; }
    .ll-card-center {
        font-size: 26px !important;
        top: 62% !important;
    }
    .ll-joker {
        font-size: 10px !important;
        line-height: 0.75 !important;
    }
    .ll-joker-center.red { font-size: 30px !important; }
    .ll-joker-center.black { font-size: 26px !important; }

    /* mini卡 = 手牌一半 */
    .ll-card-mini {
        width: 25px !important;
        height: 36px !important;
        margin-left: -11px !important;
    }
    .ll-card-mini .ll-card-rank { font-size: 9px !important; font-weight: 700 !important; }
    .ll-card-mini .ll-card-suit { font-size: 6px !important; }
    .ll-card-mini .ll-card-center { font-size: 12px !important; top: 62% !important; }

}

/* ========== v9修复：中央图案右下移 + JOKER字母完整显示 ==========
   问题1: 中央大图案与小图案重叠 → 增加right偏移(left:55%)
   问题2: JOKER最后字母(R)被截断 → 放宽line-height + 减小letter-spacing
   ============================================================ */

/* 桌面端：中央大图案右下角偏移 + JOKER放宽行高 */
.ll-card-center {
    top: 65% !important;
    left: 55% !important;
}
.ll-joker {
    font-size: 13px !important;
    line-height: 0.87 !important;
    letter-spacing: -1.5px !important;
}

/* --- 移动端640px --- */
@media (max-width: 640px) {
    .ll-card-center {
        top: 65% !important;
        left: 56% !important;
    }
    .ll-joker {
        font-size: 11px !important;
        line-height: 0.85 !important;
        letter-spacing: -1px !important;
    }
}

/* --- 移动端380px --- */
@media (max-width: 380px) {
    .ll-card-center {
        top: 66% !important;
        left: 57% !important;
    }
    .ll-joker {
        font-size: 9px !important;
        line-height: 0.83 !important;
        letter-spacing: -0.8px !important;
    }
}

/* ====== v9结束 ====== */

/* ========== v10 JOKER字母显示修复（参考微信斗地主） ==========
   目标：JOKER 5个字母竖排完整清晰显示，纯色粗体，无裁切
   只改字母显示，不动其他任何元素
   ============================================================ */

/* 1. 角标容器不裁切 */
.ll-card-tl {
    max-width: none !important;
    max-height: none !important;
    overflow: visible !important;
}

/* 2. JOKER文字：参考截图样式 — 清晰竖排、粗体、纯色 */
.ll-joker {
    /* 基础尺寸：确保5个字母都能放下 */
    font-size: 15px !important;
    font-weight: 900 !important;

    /* 竖排：每个字母一行 */
    writing-mode: vertical-rl !important;
    text-orientation: upright !important;

    /* 行高和间距：让每个字母有足够空间，最后一个R不被截 */
    line-height: 1.15 !important;
    letter-spacing: 0px !important;

    /* 布局 */
    display: inline-block !important;

    /* 绝对不能裁切！ */
    overflow: visible !important;
    max-height: none !important;

    /* 字体 */
    font-family: Arial, "Arial Black", sans-serif !important;

    /* 颜色由下面 .red/.black 规则控制 */
}

/* 大王：纯红色（参考截图） */
.ll-card-corner.red .ll-joker {
    color: #d8261c !important;
    background: none !important;
    -webkit-text-fill-color: #d8261c !important;
    text-shadow: none !important;
}

/* 小王：纯黑色（参考截图） */
.ll-card-corner.black .ll-joker {
    color: #1a1a1a !important;
    background: none !important;
    -webkit-text-fill-color: #1a1a1a !important;
    text-shadow: none !important;
}

/* 3. 移动端640px */
@media (max-width: 640px) {
    .ll-joker {
        font-size: 12px !important;
        line-height: 1.12 !important;
        overflow: visible !important;
        max-height: none !important;
    }
}

/* 4. 移动端380px */
@media (max-width: 380px) {
    .ll-joker {
        font-size: 10px !important;
        line-height: 1.10 !important;
        overflow: visible !important;
        max-height: none !important;
    }
}

/* ====== v10结束 ====== */

/* ========== v11 地主手牌标签：王冠→"地主"文字 ==========
   参考：微信斗地主右上角橙色斜条+"地主"文字
   只改 .ll-card-landlord::after 样式，不动其他元素
   ============================================================ */

/* 手牌地主标记：右上角橙色斜条 + "地主" 文字 */
.ll-card-landlord::after {
    content: '地主';
    position: absolute;
    top: 0;
    right: 0;
    width: auto;
    height: auto;
    font-size: 12px !important;
    font-weight: 700 !important;
    line-height: 1.3 !important;
    color: #fff !important;
    background: linear-gradient(135deg, #f97316 0%, #fb923c 50%, #fbbf24 100%);
    padding: 2px 6px !important;
    border-radius: 0 4px 0 6px !important;
    transform: none !important;
    box-shadow: none !important;
    letter-spacing: 1px !important;
    white-space: nowrap !important;
}

/* mini出牌区地主标记（更小） */
.ll-card-mini.ll-card-landlord::after {
    content: '地主';
    font-size: 15px !important;
    padding: 1px 3px !important;
    border-radius: 0 2px 0 4px !important;
}

/* 底牌地主标记 */
.ll-bottom-card-wrap.ll-card-landlord::after {
    content: '地主';
    font-size: 9px !important;
    padding: 1px 4px !important;
    border-radius: 0 3px 0 5px !important;
}

/* 横屏模式底牌 */
body.ll-mobile-landscape .ll-bottom-top .ll-bottom-card-wrap.ll-card-landlord::after {
    content: '地主';
    font-size: 8px !important;
    padding: 1px 3px !important;
}

/* 移动端适配 */
@media (max-width: 640px) {
    .ll-card-landlord::after {
        font-size: 10px !important;
        padding: 2px 5px !important;
    }
    .ll-card-mini.ll-card-landlord::after {
        font-size: 7px !important;
        padding: 1px 3px !important;
    }
}
@media (max-width: 380px) {
    .ll-card-landlord::after {
        font-size: 9px !important;
        padding: 1px 4px !important;
    }
}

/* ====== v11结束 ====== */

/* ========== v11b: 地主标签跟随牌面等比缩放 ==========
   问题：mini出牌区"地主"文字固定8px，在缩小后的牌上太大挡住点数
   修复：改用em单位，让标签随牌面大小自动缩放
   ============================================================ */

/* mini出牌区：地主标签用相对单位，自动跟随牌大小 */
.ll-card-mini.ll-card-landlord::after {
    content: '地主' !important;
    font-size: 0.22em !important;
    padding: 0.05em 0.15em !important;
    border-radius: 0 0.08em 0 0.15em !important;
}

/* 底牌也用相对单位 */
.ll-bottom-card-wrap.ll-card-landlord::after {
    content: '地主' !important;
    font-size: 0.18em !important;
    padding: 0.04em 0.12em !important;
    border-radius: 0 0.1em 0 0.18em !important;
}

/* 横屏底牌 */
body.ll-mobile-landscape .ll-bottom-top .ll-bottom-card-wrap.ll-card-landlord::after {
    content: '地主' !important;
    font-size: 0.17em !important;
    padding: 0.03em 0.1em !important;
}

/* ====== v11b结束 ====== */

/* ========== v12修复：地主标签缩小 + JOKER字母紧凑 ==========
   问题1: 地主标签过大(12px) → 参考图2缩小为精致小斜条
   问题2: JOKER字母15px/行高1.15太松 → 紧凑化，不超牌背景
   ============================================================ */

/* ---- 手牌地主标签：缩小为精致斜条（参考图2） ---- */
.ll-card-landlord::after {
    content: '地主' !important;
    position: absolute !important;
    top: 0 !important;
    right: 0 !important;
    /* 缩小：参考图2的小巧斜条 */
    font-size: 9px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    color: #fff !important;
    background: linear-gradient(135deg, #f97316 0%, #fbbf24 100%) !important;
    padding: 1px 4px !important;
    border-radius: 0 3px 0 4px !important;
    letter-spacing: 0px !important;
    white-space: nowrap !important;
    z-index: 5 !important;
}

/* 牌叠起来时只让最右(第一张)的地主标签可见 */
.ll-card.ll-card-landlord:not(:last-child)::after {
    display: none !important;
}

/* ---- mini出牌区地主标签 ---- */
.ll-card-mini.ll-card-landlord::after {
    content: '地主' !important;
    font-size: 0.16em !important;
    padding: 0.03em 0.1em !important;
    border-radius: 0 0.06em 0 0.12em !important;
}

/* ---- 底牌地主标签 ---- */
.ll-bottom-card-wrap.ll-card-landlord::after {
    content: '地主' !important;
    font-size: 0.14em !important;
    padding: 0.03em 0.08em !important;
    border-radius: 0 0.08em 0 0.14em !important;
}

/* 横屏底牌 */
body.ll-mobile-landscape .ll-bottom-top .ll-bottom-card-wrap.ll-card-landlord::after {
    content: '地主' !important;
    font-size: 0.13em !important;
    padding: 0.02em 0.07em !important;
}

/* 移动端适配 */
@media (max-width: 640px) {
    .ll-card-landlord::after {
        font-size: 8px !important;
        padding: 1px 3px !important;
    }
}
@media (max-width: 380px) {
    .ll-card-landlord::after {
        font-size: 7px !important;
        padding: 1px 3px !important;
    }
}

/* ---- JOKER字母紧凑化（不超牌背景） ---- */
.ll-joker {
    font-size: 13px !important;
    font-weight: 900 !important;
    writing-mode: vertical-rl !important;
    text-orientation: upright !important;
    /* 更紧凑的行高和间距 */
    line-height: 0.95 !important;
    letter-spacing: -0.5px !important;
    display: inline-block !important;
    overflow: hidden !important;
    max-height: 75px !important;
    font-family: Arial, 'Arial Black', sans-serif !important;
}

@media (max-width: 640px) {
    .ll-joker {
        font-size: 10px !important;
        line-height: 0.92 !important;
        letter-spacing: -0.5px !important;
        overflow: hidden !important;
        max-height: 58px !important;
    }
}
@media (max-width: 380px) {
    .ll-joker {
        font-size: 9px !important;
        line-height: 0.90 !important;
        letter-spacing: -0.3px !important;
        overflow: hidden !important;
        max-height: 48px !important;
    }
}

/* ====== v12结束 ====== */

/* ========== v13修复：地主标签斜角 + 删除底牌地主标签 ==========
   1. 地主标签改为斜角对角线丝带样式（参考图）
   2. 底部三张翻开的牌——彻底删除地主标签
   ============================================================ */

/* ---- 手牌地主标签：对角线斜角丝带样式 ---- */
.ll-card-landlord::after {
    content: '地主' !important;
    position: absolute !important;
    /* 左上角从右上延伸出去的斜角丝带 */
    top: 4px !important;
    right: -10px !important;
    font-size: 8px !important;
    font-weight: 700 !important;
    line-height: 1.0 !important;
    color: #fff !important;
    background: linear-gradient(135deg, #f97316, #fbbf24) !important;
    padding: 2px 12px 1px 6px !important;
    /* 斜角：旋转45度形成对角线丝带 */
    transform: rotate(45deg) !important;
    transform-origin: top left !important;
    letter-spacing: 0px !important;
    white-space: nowrap !important;
    z-index: 5 !important;
    /* 小阴影增加立体感 */
    box-shadow: 0 1px 2px rgba(0,0,0,0.15) !important;
    border-radius: 0 !important;
}

/* 牌叠起来时只让最右(第一张)的地主标签可见 */
.ll-card.ll-card-landlord:not(:last-child)::after {
    display: none !important;
}

/* ---- mini出牌区地主标签（斜角丝带）---- */
.ll-card-mini.ll-card-landlord::after {
    content: '地主' !important;
    font-size: 6px !important;
    padding: 1px 8px 1px 4px !important;
    top: 2px !important;
    right: -6px !important;
    transform: rotate(45deg) !important;
    transform-origin: top left !important;
    border-radius: 0 !important;
}

/* ---- 底牌地主标签：彻底删除（不用提示） ---- */
.ll-bottom-card-wrap.ll-card-landlord::after {
    display: none !important;
    content: none !important;
}

/* 横屏底牌也删除 */
body.ll-mobile-landscape .ll-bottom-top .ll-bottom-card-wrap.ll-card-landlord::after {
    display: none !important;
    content: none !important;
}

/* 移动端适配 */
@media (max-width: 640px) {
    .ll-card-landlord::after {
        font-size: 7px !important;
        padding: 1px 10px 1px 5px !important;
        top: 3px !important;
        right: -8px !important;
    }
    .ll-card-mini.ll-card-landlord::after {
        font-size: 5px !important;
        padding: 1px 6px 1px 3px !important;
        top: 1px !important;
        right: -4px !important;
    }
}
@media (max-width: 380px) {
    .ll-card-landlord::after {
        font-size: 6px !important;
        padding: 1px 8px 1px 4px !important;
    }
}

/* ====== v13结束 ====== */

/* ========== v14: 地主标签右对齐 + PC端JOKER完整显示 ==========
   1. 斜角标签往右上角移——橙色边对齐右上角
   2. PC端JOKER最后字母(R)被截断——放宽max-height
   ============================================================ */

/* ---- 手牌地主标签：右移紧贴右上角 ---- */
.ll-card-landlord::after {
    content: '地主' !important;
    position: absolute !important;
    top: 0px !important;
    right: -4px !important;
    font-size: 8px !important;
    font-weight: 700 !important;
    line-height: 1.0 !important;
    color: #fff !important;
    background: linear-gradient(135deg, #f97316, #fbbf24) !important;
    padding: 2px 12px 1px 6px !important;
    transform: rotate(45deg) !important;
    transform-origin: top left !important;
    letter-spacing: 0px !important;
    white-space: nowrap !important;
    z-index: 5 !important;
    box-shadow: 0 1px 2px rgba(0,0,0,0.15) !important;
    border-radius: 0 !important;
}

/* 牌叠起来只显示第一张 */
.ll-card.ll-card-landlord:not(:last-child)::after { display: none !important; }

/* mini出牌区 */
.ll-card-mini.ll-card-landlord::after {
    content: '地主' !important;
    font-size: 6px !important;
    padding: 1px 8px 1px 4px !important;
    top: -1px !important;
    right: -2px !important;
    transform: rotate(45deg) !important;
    transform-origin: top left !important;
    border-radius: 0 !important;
}

/* 底牌：不显示 */
.ll-bottom-card-wrap.ll-card-landlord::after { display: none !important; content: none !important; }
body.ll-mobile-landscape .ll-bottom-top .ll-bottom-card-wrap.ll-card-landlord::after { display: none !important; content: none !important; }

@media (max-width: 640px) {
    .ll-card-landlord::after {
        font-size: 7px !important;
        padding: 1px 10px 1px 5px !important;
        top: 0px !important;
        right: -3px !important;
    }
    .ll-card-mini.ll-card-landlord::after {
        font-size: 5px !important;
        padding: 1px 6px 1px 3px !important;
        top: -1px !important;
        right: -1px !important;
    }
}
@media (max-width: 380px) {
    .ll-card-landlord::after { font-size: 6px !important; padding: 1px 8px 1px 4px !important; }
}

/* ---- PC端JOKER：放宽max-height让第5个字母R显示完整 ---- */
/* 注意：只改桌面端(无media query的默认规则)，不动移动端 */
.ll-joker {
    font-size: 13px !important;
    font-weight: 900 !important;
    writing-mode: vertical-rl !important;
    text-orientation: upright !important;
    line-height: 0.95 !important;
    letter-spacing: -0.5px !important;
    display: inline-block !important;
    overflow: hidden !important;
    /* 放宽：5个字母 × 13px × 0.95 ≈ 62px，给85px足够空间 */
    max-height: 85px !important;
    font-family: Arial, 'Arial Black', sans-serif !important;
}

/* ====== v14结束 ====== */

/* ========== v15: 地主标签改回王冠图标（不用"地主"文字） ==========
   覆盖v11~v14的"地主"文字，恢复原始王冠👑样式
   底牌继续保持不显示（v13已删除）
   ============================================================ */

/* 手牌地主标记：王冠图标 */
.ll-card-landlord::after {
    content: '\1F451' !important;
    position: absolute !important;
    top: 2px !important;
    right: 2px !important;
    width: 14px !important;
    height: 14px !important;
    background: linear-gradient(135deg, #f97316, #ea580c) !important;
    border-radius: 50% !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 8px !important;
    line-height: 1 !important;
    font-weight: normal !important;
    color: #fff !important;
    padding: 0 !important;
    transform: none !important;
    transform-origin: unset !important;
    letter-spacing: 0 !important;
    white-space: nowrap !important;
    box-shadow: none !important;
    z-index: 5 !important;
    pointer-events: none !important;
}

/* 牌叠起来只显示第一张的王冠 */
.ll-card.ll-card-landlord:not(:last-child)::after {
    display: none !important;
}

/* mini出牌区王冠（更小） */
.ll-card-mini.ll-card-landlord::after {
    content: '\1F451' !important;
    width: 10px !important;
    height: 10px !important;
    font-size: 6px !important;
    top: 1px !important;
    right: 1px !important;
    padding: 0 !important;
    transform: none !important;
    border-radius: 50% !important;
}

/* 底牌：继续不显示 */
.ll-bottom-card-wrap.ll-card-landlord::after {
    display: none !important;
    content: none !important;
}
body.ll-mobile-landscape .ll-bottom-top .ll-bottom-card-wrap.ll-card-landlord::after {
    display: none !important;
    content: none !important;
}

/* 移动端适配 */
@media (max-width: 640px) {
    .ll-card-landlord::after {
        width: 12px !important;
        height: 12px !important;
        font-size: 7px !important;
        top: 2px !important;
        right: 2px !important;
        padding: 0 !important;
        transform: none !important;
    }
    .ll-card-mini.ll-card-landlord::after {
        width: 8px !important;
        height: 8px !important;
        font-size: 5px !important;
    }
}
@media (max-width: 380px) {
    .ll-card-landlord::after {
        width: 10px !important;
        height: 10px !important;
        font-size: 6px !important;
    }
}

/* ====== v15结束 ====== */

/* ========== v16修复：右家出牌区左移，不挡手牌 ==========
   问题：移动端右家出的牌太靠右，和自己的牌堆重叠
   修复：右家出牌区往左移，距离与左家对称
   ============================================================ */

/* 桌面端：减少translate偏移 */
.ll-played-right-left {
    transform: translate(30%, -50%) !important;
}

/* 移动端640px */
@media (max-width: 640px) {
    .ll-played-right-left {
        right: 14% !important;
        top: 38% !important;
        max-width: 45% !important;
        transform: translate(20%, -50%) !important;
    }
}

/* 移动端380px */
@media (max-width: 380px) {
    .ll-played-right-left {
        right: 12% !important;
        top: 34% !important;
        max-width: 48% !important;
        transform: translate(20%, -50%) !important;
    }
}

/* 横屏移动端 */
@media (max-width: 900px) and (orientation: landscape) and (max-height: 500px) {
    .ll-played-right-left {
        right: 12% !important;
        top: 36% !important;
        max-width: 45% !important;
        transform: translate(20%, -50%) !important;
    }
}

/* ====== v16结束 ====== */

/* ========== v17修复：删除等待提示 + 自己出牌区位置调整 ==========
   1. 彻底隐藏所有ll-waiting元素（JS已删除，CSS兜底）
   2. 移动端自己出牌区位置微调（居中偏下，不挡手牌）
   ============================================================ */

/* 隐藏所有等待提示（彻底删除） */
.ll-waiting { display: none !important; }

/* 移动端：自己出牌区位置调整 */
@media (max-width: 640px) {
    .ll-my-played {
        bottom: auto !important;
        top: 55% !important;
        left: 50% !important;
        transform: translateX(-50%) !important;
        font-size: 12px !important;
        z-index: 9 !important;
    }
}

@media (max-width: 380px) {
    .ll-my-played {
        top: 52% !important;
        font-size: 11px !important;
    }
}

/* 横屏移动端 */
@media (max-width: 900px) and (orientation: landscape) and (max-height: 500px) {
    .ll-my-played {
        bottom: auto !important;
        top: 54% !important;
        left: 50% !important;
        transform: translateX(-50%) !important;
    }
}

/* ====== v17结束 ====== */

/* ========== v18修复：左家出牌区多张牌不遮牌堆 ==========
   问题：左家出顺子/多张牌时，translate(-50%, -50%)居中导致牌往两边跑，遮住自己座位
   修复：左边缘锚定，多张牌只向右（桌面中心）方向延伸
   ============================================================ */

/* 桌面端：左家出牌区左锚定，牌只向右延伸 */
.ll-played-top-left {
    transform: translate(0, -50%) !important;
}

/* 移动端640px */
@media (max-width: 640px) {
    .ll-played-top-left {
        left: 12% !important;
        top: 38% !important;
        transform: translate(0, -50%) !important;
        max-width: 45% !important;
    }
}

/* 移动端380px */
@media (max-width: 380px) {
    .ll-played-top-left {
        left: 10% !important;
        top: 34% !important;
        transform: translate(0, -50%) !important;
        max-width: 48% !important;
    }
}

/* 横屏移动端 */
@media (max-width: 900px) and (orientation: landscape) and (max-height: 500px) {
    .ll-played-top-left {
        left: 10% !important;
        top: 36% !important;
        transform: translate(0, -50%) !important;
        max-width: 45% !important;
    }
}

/* ====== v18结束 ====== */

/* ========== v19修复：mini出牌区中心大图案右下移 ==========
   只改打出的牌(.ll-card-mini)的中心图案位置，不动手牌
   ============================================================ */

/* mini卡中心图案：右下角偏移，避免小图案重叠 */
.ll-card-mini .ll-card-center {
    top: 60% !important;
    left: 56% !important;
}

/* 移动端640px */
@media (max-width: 640px) {
    .ll-card-mini .ll-card-center {
        top: 62% !important;
        left: 58% !important;
    }
}

/* 移动端380px */
@media (max-width: 380px) {
    .ll-card-mini .ll-card-center {
        top: 64% !important;
        left: 58% !important;
    }
}

/* 横屏移动端 */
@media (max-width: 900px) and (orientation: landscape) and (max-height: 500px) {
    .ll-card-mini .ll-card-center {
        top: 61% !important;
        left: 57% !important;
    }
}

/* ====== v19结束 ====== */

/* ========== v28: mini出牌区JOKER与手牌一致（完整竖排+红/黑区分） ==========
   只改 .ll-card-mini 内大小王，不动牌面尺寸及其他牌
   ============================================================ */

/* mini 角标容器：不裁切 */
.ll-card-mini .ll-card-tl {
    max-width: none !important;
    max-height: none !important;
    overflow: visible !important;
}

/* 桌面：手牌JOKER 13px × (37/74) = 6.5px */
.ll-card-mini .ll-card-rank.ll-joker {
    font-size: calc(13px * 37 / 74) !important;
    font-weight: 900 !important;
    writing-mode: vertical-rl !important;
    text-orientation: upright !important;
    line-height: 0.95 !important;
    letter-spacing: calc(-0.5px * 37 / 74) !important;
    display: inline-block !important;
    overflow: visible !important;
    max-height: none !important;
    font-family: Arial, 'Arial Black', sans-serif !important;
    text-shadow: none !important;
    background: none !important;
}

/* 大王红 / 小王黑 — 与手牌 v10 一致 */
.ll-card-mini .ll-card-corner.red .ll-joker {
    color: #d8261c !important;
    -webkit-text-fill-color: #d8261c !important;
}
.ll-card-mini .ll-card-corner.black .ll-joker {
    color: #1a1a1a !important;
    -webkit-text-fill-color: #1a1a1a !important;
}

/* 中央图案：与手牌同比例（宽比 37/74 = 50%） */
.ll-card-mini .ll-joker-center.red {
    font-size: calc(46px * 37 / 74) !important;
    filter: hue-rotate(-10deg) saturate(1.4) brightness(1.08);
}
.ll-card-mini .ll-joker-center.black {
    font-size: calc(40px * 37 / 74) !important;
    filter: grayscale(0.7) brightness(0.75);
}

@media (max-width: 640px) {
    .ll-card-mini .ll-card-rank.ll-joker {
        font-size: calc(10px * 29 / 58) !important;
        line-height: 0.92 !important;
        letter-spacing: calc(-0.5px * 29 / 58) !important;
    }
    .ll-card-mini .ll-joker-center.red { font-size: calc(36px * 29 / 58) !important; }
    .ll-card-mini .ll-joker-center.black { font-size: calc(31px * 29 / 58) !important; }
}

@media (max-width: 380px) {
    .ll-card-mini .ll-card-rank.ll-joker {
        font-size: calc(9px * 25 / 50) !important;
        line-height: 0.90 !important;
        letter-spacing: calc(-0.3px * 25 / 50) !important;
    }
    .ll-card-mini .ll-joker-center.red { font-size: calc(30px * 25 / 50) !important; }
    .ll-card-mini .ll-joker-center.black { font-size: calc(26px * 25 / 50) !important; }
}

@media (max-width: 900px) and (orientation: landscape) and (max-height: 500px) {
    .ll-card-mini .ll-card-rank.ll-joker {
        font-size: calc(10px * 29 / 58) !important;
        line-height: 0.92 !important;
        letter-spacing: calc(-0.5px * 29 / 58) !important;
    }
    .ll-card-mini .ll-joker-center.red { font-size: calc(36px * 29 / 58) !important; }
    .ll-card-mini .ll-joker-center.black { font-size: calc(31px * 29 / 58) !important; }
}

/* ====== v28结束 ====== */


/* ========== v26修复：取消托管按钮不被出牌区遮挡 ==========
   问题：.ll-my-played 出牌区可能遮挡 .ll-actions 中的取消托管按钮
   修复：.ll-btn-cancel 强化可见性 + .ll-actions 确保更高层级
   ============================================================ */

/* 取消托管按钮：高亮脉冲动画，确保可见 */
.ll-btn-cancel {
    position: relative;
    z-index: 100 !important;
    background: linear-gradient(135deg, #e74c3c, #c0392b) !important;
    color: #fff !important;
    font-size: 16px !important;
    padding: 10px 28px !important;
    border-radius: 26px !important;
    box-shadow: 0 4px 16px rgba(231,76,60,.6) !important;
    animation: ll-pulse-cancel 1.2s ease-in-out infinite;
}
@keyframes ll-pulse-cancel {
    0%, 100% { box-shadow: 0 4px 16px rgba(231,76,60,.6); transform: scale(1); }
    50% { box-shadow: 0 4px 24px rgba(231,76,60,.9); transform: scale(1.05); }
}

/* 确保 .ll-actions 在出牌区之上 */
.ll-actions {
    z-index: 20 !important;
}


/* ========== v26结束 ========== */

/* ========== v30: 移动端 mini 大小王 — 与桌面同方式（逐字竖排+同比例） ==========
   手机对局 body.ll-mobile-landscape 优先级最高，按视口断点匹配 v5 手牌/mini 尺寸
   ============================================================ */

/* 移动端：清除旧规则对 mini JOKER 的干扰（overflow/max-height/flex冲突） */
body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker.ll-joker-mini,
body.ll-mobile-landscape .ll-card.ll-card-mini .ll-card-rank.ll-joker.ll-joker-mini {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: flex-start !important;
    overflow: visible !important;
    max-height: none !important;
    width: auto !important;
    height: auto !important;
    writing-mode: horizontal-tb !important;
    -webkit-writing-mode: horizontal-tb !important;
    text-orientation: mixed !important;
    background: none !important;
    -webkit-text-fill-color: unset !important;
    padding: 0 !important;
    gap: 0 !important;
}

body.ll-mobile-landscape .ll-card.ll-card-mini .ll-card-corner.ll-card-tl {
    max-width: none !important;
    max-height: none !important;
    overflow: visible !important;
}

/* 移动端通用：逐字竖排 + 红/黑（与 v29 桌面一致） */
body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
    display: block !important;
    font-weight: 900 !important;
    padding: 0 !important;
    margin: 0 !important;
    font-family: Arial, 'Arial Black', sans-serif !important;
}

body.ll-mobile-landscape .ll-card.ll-card-mini .ll-card-corner.red .ll-joker-mini,
body.ll-mobile-landscape .ll-card.ll-card-mini .ll-card-corner.red .ll-joker-mini .ll-joker-ch {
    color: #d8261c !important;
    -webkit-text-fill-color: #d8261c !important;
}

body.ll-mobile-landscape .ll-card.ll-card-mini .ll-card-corner.black .ll-joker-mini,
body.ll-mobile-landscape .ll-card.ll-card-mini .ll-card-corner.black .ll-joker-mini .ll-joker-ch {
    color: #1a1a1a !important;
    -webkit-text-fill-color: #1a1a1a !important;
}

/* 移动端宽屏横屏（>640）：手牌 74×107 / mini 37×54，JOKER 13px→6.5px */
@media (min-width: 641px) {
    body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
        font-size: calc(13px * 37 / 74) !important;
        line-height: 0.95 !important;
        letter-spacing: calc(-0.5px * 37 / 74) !important;
    }
    body.ll-mobile-landscape .ll-card-mini .ll-joker-center.red { font-size: calc(46px * 37 / 74) !important; }
    body.ll-mobile-landscape .ll-card-mini .ll-joker-center.black { font-size: calc(40px * 37 / 74) !important; }
}

/* 移动端 ≤640：手牌 58×84 / mini 29×42，JOKER 10px→5px */
@media (max-width: 640px) {
    body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
        font-size: calc(10px * 29 / 58) !important;
        line-height: 0.92 !important;
        letter-spacing: calc(-0.5px * 29 / 58) !important;
    }
    body.ll-mobile-landscape .ll-card-mini .ll-joker-center.red { font-size: calc(36px * 29 / 58) !important; }
    body.ll-mobile-landscape .ll-card-mini .ll-joker-center.black { font-size: calc(31px * 29 / 58) !important; }
}

/* 移动端 ≤380：手牌 50×72 / mini 25×36，JOKER 9px→4.5px */
@media (max-width: 380px) {
    body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
        font-size: calc(9px * 25 / 50) !important;
        line-height: 0.90 !important;
        letter-spacing: calc(-0.3px * 25 / 50) !important;
    }
    body.ll-mobile-landscape .ll-card-mini .ll-joker-center.red { font-size: calc(30px * 25 / 50) !important; }
    body.ll-mobile-landscape .ll-card-mini .ll-joker-center.black { font-size: calc(26px * 25 / 50) !important; }
}

/* 原生横屏（非旋转类）：与 ≤640 同比例 */
@media (max-width: 900px) and (orientation: landscape) and (max-height: 500px) {
    .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
        font-size: calc(10px * 29 / 58) !important;
        line-height: 0.92 !important;
        letter-spacing: calc(-0.5px * 29 / 58) !important;
    }
    .ll-card-mini .ll-joker-center.red { font-size: calc(36px * 29 / 58) !important; }
    .ll-card-mini .ll-joker-center.black { font-size: calc(31px * 29 / 58) !important; }
}

/* ====== v30结束 ====== */

/* ========== v29: mini出牌区大小王 — 逐字竖排 + 与手牌同比例缩小（桌面/通用） ==========
   手牌 vs mini 尺寸（v5）：
     桌面  74×107 → 37×54   比例 50%
     ≤640  58×84  → 29×42   比例 50%
     ≤380  50×72  → 25×36   比例 50%
   手牌 JOKER 字号（v14/v12）：13px / 10px / 9px
   mini 字母 = 手牌字号 × (mini宽/手牌宽) = 手牌字号 × 0.5
   ============================================================ */

.ll-card.ll-card-mini .ll-card-corner.ll-card-tl {
    max-width: none !important;
    max-height: none !important;
    overflow: visible !important;
}

.ll-card.ll-card-mini .ll-joker-mini {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    overflow: visible !important;
    max-height: none !important;
    width: auto !important;
    height: auto !important;
    writing-mode: horizontal-tb !important;
    -webkit-writing-mode: horizontal-tb !important;
    text-orientation: mixed !important;
    font-family: Arial, 'Arial Black', sans-serif !important;
    font-weight: 900 !important;
    line-height: 1 !important;
    letter-spacing: 0 !important;
    background: none !important;
    text-shadow: none !important;
}

/* 桌面：手牌JOKER 13px × (37/74) = 6.5px */
.ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
    display: block !important;
    font-size: calc(13px * 37 / 74) !important;
    line-height: 0.95 !important;
    letter-spacing: calc(-0.5px * 37 / 74) !important;
    font-weight: 900 !important;
    padding: 0 !important;
    margin: 0 !important;
}

.ll-card.ll-card-mini .ll-card-corner.red .ll-joker-mini,
.ll-card.ll-card-mini .ll-card-corner.red .ll-joker-mini .ll-joker-ch {
    color: #d8261c !important;
    -webkit-text-fill-color: #d8261c !important;
}

.ll-card.ll-card-mini .ll-card-corner.black .ll-joker-mini,
.ll-card.ll-card-mini .ll-card-corner.black .ll-joker-mini .ll-joker-ch {
    color: #1a1a1a !important;
    -webkit-text-fill-color: #1a1a1a !important;
}

/* ≤640：手牌JOKER 10px × (29/58) = 5px */
@media (max-width: 640px) {
    .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
        font-size: calc(10px * 29 / 58) !important;
        line-height: 0.92 !important;
        letter-spacing: calc(-0.5px * 29 / 58) !important;
    }
}

/* ≤380：手牌JOKER 9px × (25/50) = 4.5px */
@media (max-width: 380px) {
    .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
        font-size: calc(9px * 25 / 50) !important;
        line-height: 0.90 !important;
        letter-spacing: calc(-0.3px * 25 / 50) !important;
    }
}

/* ====== v29结束 ====== */

/* ========== v31: mini大小王字母 — 按牌高约束，5字完整在牌内不溢出 ==========
   v32修正：去掉 overflow:hidden 裁切，缩小字号+收紧行高使五字自然落在牌内
   公式：字号 = 牌高 × 36% ÷ 5字 ÷ 行高0.68
   ============================================================ */

.ll-card.ll-card-mini {
    --ll-mini-card-h: 54px;
}
@media (max-width: 640px) {
    .ll-card.ll-card-mini { --ll-mini-card-h: 42px; }
}
@media (max-width: 380px) {
    .ll-card.ll-card-mini { --ll-mini-card-h: 36px; }
}

/* 角标容器：不裁切，给字母完整显示空间 */
.ll-card.ll-card-mini .ll-card-corner.ll-card-tl {
    max-width: none !important;
    max-height: none !important;
    overflow: visible !important;
    top: 2px !important;
    left: 2px !important;
}

.ll-card.ll-card-mini .ll-joker.ll-joker-mini,
.ll-card.ll-card-mini .ll-card-rank.ll-joker.ll-joker-mini {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    width: auto !important;
    max-height: none !important;
    overflow: visible !important;
    writing-mode: horizontal-tb !important;
    -webkit-writing-mode: horizontal-tb !important;
    background: none !important;
    -webkit-text-fill-color: unset !important;
    font-family: Arial, 'Arial Black', sans-serif !important;
    font-weight: 900 !important;
}

/* 五字竖排：按牌高比例缩小，不裁切 */
.ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
    display: block !important;
    flex-shrink: 0 !important;
    font-size: calc(var(--ll-mini-card-h) * 0.36 / 5 / 0.68) !important;
    line-height: 0.68 !important;
    letter-spacing: 0 !important;
    font-weight: 900 !important;
    padding: 0 !important;
    margin: 0 !important;
    overflow: visible !important;
    font-family: Arial, 'Arial Black', sans-serif !important;
}

.ll-card.ll-card-mini .ll-card-corner.red .ll-joker-mini,
.ll-card.ll-card-mini .ll-card-corner.red .ll-joker-mini .ll-joker-ch {
    color: #d8261c !important;
    -webkit-text-fill-color: #d8261c !important;
}

.ll-card.ll-card-mini .ll-card-corner.black .ll-joker-mini,
.ll-card.ll-card-mini .ll-card-corner.black .ll-joker-mini .ll-joker-ch {
    color: #1a1a1a !important;
    -webkit-text-fill-color: #1a1a1a !important;
}

/* 移动端对局 */
body.ll-mobile-landscape .ll-card.ll-card-mini .ll-card-corner.ll-card-tl {
    max-width: none !important;
    max-height: none !important;
    overflow: visible !important;
}

body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker.ll-joker-mini,
body.ll-mobile-landscape .ll-card.ll-card-mini .ll-card-rank.ll-joker.ll-joker-mini {
    overflow: visible !important;
    max-height: none !important;
}

body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
    font-size: calc(var(--ll-mini-card-h) * 0.36 / 5 / 0.68) !important;
    line-height: 0.68 !important;
    letter-spacing: 0 !important;
    overflow: visible !important;
}

/* ====== v31结束 ====== */

/* ========== v33/v34: 全平台 mini JOKER 统一 PC 同款显示 ==========
   方法：逐字 span 竖排 + 等宽单元格(1.08em) + flex居中 + E光学修正
   字号：手牌JOKER × (mini宽/手牌宽)，与 PC 一致
   ============================================================ */

/* 全平台通用：与 PC 相同的等宽竖排对齐 */
.ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.08em !important;
    min-width: 1.08em !important;
    max-width: 1.08em !important;
    text-align: center !important;
    letter-spacing: 0 !important;
    box-sizing: border-box !important;
    flex-shrink: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    overflow: visible !important;
    font-weight: 900 !important;
    font-family: Arial, 'Arial Black', sans-serif !important;
    /* 桌面默认：13px × (37/74) */
    font-size: calc(13px * 37 / 74) !important;
    line-height: 0.95 !important;
}

/* E（第4字）光学居中，与 J/O/K/R 对齐 */
.ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch:nth-child(4) {
    transform: translateX(0.5px) !important;
}

@media (max-width: 640px) {
    .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
        font-size: calc(10px * 29 / 58) !important;
        line-height: 0.92 !important;
    }
}

@media (max-width: 380px) {
    .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
        font-size: calc(9px * 25 / 50) !important;
        line-height: 0.90 !important;
    }
    .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch:nth-child(4) {
        transform: translateX(0.4px) !important;
    }
}

/* 移动端对局：覆盖 v30/v31 旧规则，强制与 PC 同款 */
body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker.ll-joker-mini,
body.ll-mobile-landscape .ll-card.ll-card-mini .ll-card-rank.ll-joker.ll-joker-mini {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    width: auto !important;
    max-height: none !important;
    overflow: visible !important;
    writing-mode: horizontal-tb !important;
    -webkit-writing-mode: horizontal-tb !important;
    background: none !important;
    -webkit-text-fill-color: unset !important;
    font-family: Arial, 'Arial Black', sans-serif !important;
    font-weight: 900 !important;
}

body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.08em !important;
    min-width: 1.08em !important;
    max-width: 1.08em !important;
    text-align: center !important;
    letter-spacing: 0 !important;
    box-sizing: border-box !important;
    overflow: visible !important;
    font-size: calc(13px * 37 / 74) !important;
    line-height: 0.95 !important;
}

body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch:nth-child(4) {
    transform: translateX(0.5px) !important;
}

@media (max-width: 640px) {
    body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
        font-size: calc(10px * 29 / 58) !important;
        line-height: 0.92 !important;
    }
}

@media (max-width: 380px) {
    body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
        font-size: calc(9px * 25 / 50) !important;
        line-height: 0.90 !important;
    }
    body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch:nth-child(4) {
        transform: translateX(0.4px) !important;
    }
}

@media (min-width: 641px) {
    body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
        font-size: calc(13px * 37 / 74) !important;
        line-height: 0.95 !important;
    }
}

/* ====== v34结束 ====== */

/* ========== v35: mini JOKER 字母印在牌上 — 随牌尺寸自适应 ==========
   原理：牌为容器(container)，JOKER 基准字号 = 牌高 × 8.2%(cqh)
         五字用 em 相对基准，牌大则字大、牌小则字小，不脱离牌面
   ============================================================ */

.ll-card.ll-card-mini {
    container-type: size;
    container-name: ll-mini-card;
}

/* 角标区：限制在牌内左上角 */
.ll-card.ll-card-mini .ll-card-corner.ll-card-tl {
    max-width: 40% !important;
    max-height: 55% !important;
    overflow: hidden !important;
    top: 2px !important;
    left: 2px !important;
}

/* JOKER 容器：字号绑定牌高，五字竖排印在牌上 */
.ll-card.ll-card-mini .ll-joker.ll-joker-mini,
.ll-card.ll-card-mini .ll-card-rank.ll-joker.ll-joker-mini {
    font-size: 8.2cqh !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    width: 100% !important;
    max-height: 100% !important;
    overflow: hidden !important;
    writing-mode: horizontal-tb !important;
    -webkit-writing-mode: horizontal-tb !important;
    background: none !important;
    -webkit-text-fill-color: unset !important;
    font-family: Arial, 'Arial Black', sans-serif !important;
    font-weight: 900 !important;
    letter-spacing: 0 !important;
}

/* 单字 = 1em，随牌同比缩放 */
.ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
    font-size: 1em !important;
    line-height: 0.92 !important;
    letter-spacing: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.08em !important;
    min-width: 1.08em !important;
    max-width: 1.08em !important;
    flex-shrink: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
    font-weight: inherit !important;
    font-family: inherit !important;
    transform: none !important;
}

/* E 光学居中（em 单位随牌缩放） */
.ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch:nth-child(4) {
    transform: translateX(0.05em) !important;
}

/* 中央图案也随牌高缩放 */
.ll-card.ll-card-mini .ll-joker-center.red {
    font-size: 42cqh !important;
}
.ll-card.ll-card-mini .ll-joker-center.black {
    font-size: 37cqh !important;
}

/* 颜色 */
.ll-card.ll-card-mini .ll-card-corner.red .ll-joker-mini,
.ll-card.ll-card-mini .ll-card-corner.red .ll-joker-mini .ll-joker-ch {
    color: #d8261c !important;
    -webkit-text-fill-color: #d8261c !important;
}
.ll-card.ll-card-mini .ll-card-corner.black .ll-joker-mini,
.ll-card.ll-card-mini .ll-card-corner.black .ll-joker-mini .ll-joker-ch {
    color: #1a1a1a !important;
    -webkit-text-fill-color: #1a1a1a !important;
}

/* 移动端对局：与 PC 完全相同的自适应逻辑 */
body.ll-mobile-landscape .ll-card.ll-card-mini {
    container-type: size !important;
}

body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker.ll-joker-mini,
body.ll-mobile-landscape .ll-card.ll-card-mini .ll-card-rank.ll-joker.ll-joker-mini {
    font-size: 8.2cqh !important;
}

body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
    font-size: 1em !important;
    line-height: 0.92 !important;
    letter-spacing: 0 !important;
    width: 1.08em !important;
    transform: none !important;
}

body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch:nth-child(4) {
    transform: translateX(0.05em) !important;
}

/* 不支持容器查询时的回退：按牌高变量同比缩放 */
@supports not (font-size: 1cqh) {
    .ll-card.ll-card-mini .ll-joker.ll-joker-mini,
    .ll-card.ll-card-mini .ll-card-rank.ll-joker.ll-joker-mini,
    body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker.ll-joker-mini,
    body.ll-mobile-landscape .ll-card.ll-card-mini .ll-card-rank.ll-joker.ll-joker-mini {
        font-size: calc(var(--ll-mini-card-h, 54px) * 0.082) !important;
    }
    .ll-card.ll-card-mini .ll-joker-center.red,
    body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker-center.red {
        font-size: calc(var(--ll-mini-card-h, 54px) * 0.42) !important;
    }
    .ll-card.ll-card-mini .ll-joker-center.black,
    body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker-center.black {
        font-size: calc(var(--ll-mini-card-h, 54px) * 0.37) !important;
    }
}

/* ====== v35结束 ====== */

/* ========== v36: PC端恢复 mini 大小王原始显示（仅 PC，移动端不动） ==========
   PC：整串 JOKER 竖排 + v14/v28 原字号；移动端继续走 v35 逐字自适应
   ============================================================ */

body:not(.ll-mobile-landscape) .ll-card.ll-card-mini {
    container-type: normal;
}

body:not(.ll-mobile-landscape) .ll-card.ll-card-mini .ll-card-corner.ll-card-tl {
    max-width: none !important;
    max-height: none !important;
    overflow: visible !important;
    top: 2px !important;
    left: 2px !important;
}

/* PC mini JOKER：竖排整串，与改动前 v14/v28 一致 */
body:not(.ll-mobile-landscape) .ll-card.ll-card-mini .ll-card-rank.ll-joker {
    font-size: calc(13px * 37 / 74) !important;
    font-weight: 900 !important;
    writing-mode: vertical-rl !important;
    text-orientation: upright !important;
    line-height: 0.95 !important;
    letter-spacing: -0.5px !important;
    display: inline-block !important;
    overflow: visible !important;
    max-height: 85px !important;
    width: auto !important;
    font-family: Arial, 'Arial Black', sans-serif !important;
    background: none !important;
    -webkit-text-fill-color: unset !important;
    text-shadow: none !important;
    flex: none !important;
    gap: unset !important;
    padding: 0 !important;
    margin: 0 !important;
}

body:not(.ll-mobile-landscape) .ll-card.ll-card-mini .ll-card-corner.red .ll-joker {
    color: #d8261c !important;
    -webkit-text-fill-color: #d8261c !important;
}

body:not(.ll-mobile-landscape) .ll-card.ll-card-mini .ll-card-corner.black .ll-joker {
    color: #1a1a1a !important;
    -webkit-text-fill-color: #1a1a1a !important;
}

body:not(.ll-mobile-landscape) .ll-card.ll-card-mini .ll-joker-center.red {
    font-size: calc(46px * 37 / 74) !important;
    filter: hue-rotate(-10deg) saturate(1.4) brightness(1.08);
}

body:not(.ll-mobile-landscape) .ll-card.ll-card-mini .ll-joker-center.black {
    font-size: calc(40px * 37 / 74) !important;
    filter: grayscale(0.7) brightness(0.75);
}

/* ====== v36结束 ====== */

/* ========== v37: PC + 移动端 mini JOKER「E」竖排对齐修正 ==========
   E 在 Arial Black 中视觉偏右，向左微调；覆盖 v33/v35 的正向偏移
   ============================================================ */

/* 全平台：五字等宽竖排 + E 左移对齐 */
.ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.08em !important;
    min-width: 1.08em !important;
    max-width: 1.08em !important;
    text-align: center !important;
    letter-spacing: 0 !important;
    box-sizing: border-box !important;
    transform: none !important;
}

.ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch:nth-child(4) {
    transform: translateX(-0.07em) !important;
}

/* PC：保留 v36 字号，逐字竖排（与移动端同结构） */
body:not(.ll-mobile-landscape) .ll-card.ll-card-mini .ll-joker.ll-joker-mini,
body:not(.ll-mobile-landscape) .ll-card.ll-card-mini .ll-card-rank.ll-joker.ll-joker-mini {
    font-size: calc(13px * 37 / 74) !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: flex-start !important;
    line-height: 0.95 !important;
    letter-spacing: 0 !important;
    overflow: visible !important;
    max-height: none !important;
    width: auto !important;
    writing-mode: horizontal-tb !important;
    -webkit-writing-mode: horizontal-tb !important;
    background: none !important;
    font-family: Arial, 'Arial Black', sans-serif !important;
    font-weight: 900 !important;
}

body:not(.ll-mobile-landscape) .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch {
    font-size: 1em !important;
    line-height: 0.95 !important;
}

body:not(.ll-mobile-landscape) .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch:nth-child(4) {
    transform: translateX(-0.07em) !important;
}

/* 移动端：覆盖 v35 的 translateX(0.05em) */
body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch:nth-child(4) {
    transform: translateX(-0.07em) !important;
}

@media (max-width: 380px) {
    .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch:nth-child(4),
    body.ll-mobile-landscape .ll-card.ll-card-mini .ll-joker-mini .ll-joker-ch:nth-child(4) {
        transform: translateX(-0.06em) !important;
    }
}

/* ====== v37结束 ====== */

/* ========== v38: PC端出牌区 = 手牌全尺寸（仅 PC，移动端不动） ==========
   PC 出牌不再使用 .ll-card-mini，由 JS 渲染全尺寸 .ll-card；
   此处仅兜底：出牌区内全尺寸牌与手牌一致，底牌区(.ll-bottom-top)不受影响
   ============================================================ */

body:not(.ll-mobile-landscape) .ll-played-area .ll-card:not(.ll-card-mini),
body:not(.ll-mobile-landscape) .ll-my-played .ll-card:not(.ll-card-mini) {
    width: 74px !important;
    height: 107px !important;
    margin-left: -28px !important;
    border-radius: 6px !important;
}

body:not(.ll-mobile-landscape) .ll-played-area .ll-card:not(.ll-card-mini):first-child,
body:not(.ll-mobile-landscape) .ll-my-played .ll-card:not(.ll-card-mini):first-child {
    margin-left: 0 !important;
}

@media (max-width: 640px) {
    body:not(.ll-mobile-landscape) .ll-played-area .ll-card:not(.ll-card-mini),
    body:not(.ll-mobile-landscape) .ll-my-played .ll-card:not(.ll-card-mini) {
        width: 58px !important;
        height: 84px !important;
        margin-left: -28px !important;
    }
}

@media (max-width: 380px) {
    body:not(.ll-mobile-landscape) .ll-played-area .ll-card:not(.ll-card-mini),
    body:not(.ll-mobile-landscape) .ll-my-played .ll-card:not(.ll-card-mini) {
        width: 50px !important;
        height: 72px !important;
        margin-left: -27px !important;
    }
}

/* ====== v38结束 ====== */

/* ====== v39: 滑动框选 + 顺子智能推荐 ====== */
.ll-myhand.ll-hand-swiping {
    touch-action: none !important;
    overflow-x: hidden !important;
}
.ll-myhand .ll-card-front.ll-swipe-touch:not(.ll-selected) {
    background: linear-gradient(180deg, rgba(147, 197, 253, 0.55), rgba(59, 130, 246, 0.4)) !important;
    box-shadow: 0 0 0 2px rgba(96, 165, 250, 0.9), 0 6px 14px rgba(59, 130, 246, 0.45) !important;
    transform: translateY(-10px);
    z-index: 5;
}
.ll-myhand .ll-card-front.ll-straight-rec:not(.ll-selected) {
    box-shadow: 0 0 0 2px rgba(255, 213, 74, 0.85), 0 0 22px rgba(255, 213, 74, 0.5) !important;
    cursor: pointer;
}
body.ll-mobile-landscape .ll-myhand .ll-card-front.ll-swipe-touch:not(.ll-selected) {
    transform: translateY(-8px);
}
body.ll-mobile-landscape .ll-myhand .ll-card-front.ll-straight-rec:not(.ll-selected) {
    box-shadow: 0 0 0 2px rgba(255, 213, 74, 0.9), 0 0 16px rgba(255, 213, 74, 0.55) !important;
}
/* 移动端：滑动框选手势由 JS 处理，避免被浏览器横滑/滚动抢走 */
body.ll-mobile-landscape .ll-myhand-wrap {
    touch-action: none;
}
body.ll-mobile-landscape .ll-myhand,
body.ll-mobile-landscape .ll-myhand.ll-hand-tracking,
body.ll-mobile-landscape .ll-myhand.ll-hand-swiping {
    touch-action: none !important;
    overflow-x: hidden !important;
}
body.ll-mobile-landscape .ll-myhand .ll-card-front {
    touch-action: none;
    -webkit-tap-highlight-color: transparent;
    user-select: none;
    -webkit-user-select: none;
}
body.ll-mobile-landscape .ll-myhand .ll-card-front.ll-selected {
    transform: translateY(-14px);
    box-shadow: 0 6px 14px rgba(255,180,0,.45);
    border-color: #ffb347;
}
body.ll-mobile-landscape .ll-myhand.ll-hand-tracking,
body.ll-mobile-landscape .ll-myhand.ll-hand-swiping {
    user-select: none;
    -webkit-user-select: none;
}
/* ====== v39结束 ====== */

/* ====== v40: 加倍前底牌翻开动画 ====== */
.ll-bottom-flip {
    animation: ll-bottom-flip-in 0.45s ease-out both;
}
@keyframes ll-bottom-flip-in {
    0% { transform: rotateY(90deg) scale(0.85); opacity: 0; }
    100% { transform: rotateY(0deg) scale(1); opacity: 1; }
}
.ll-bottom-reveal-hint {
    color: #ffd54a;
    font-size: 15px;
    font-weight: 700;
    letter-spacing: 1px;
    text-shadow: 0 2px 6px rgba(0, 0, 0, 0.6);
}
body.ll-mobile-landscape .ll-bottom-reveal-hint {
    font-size: 12px;
}
/* ====== v40结束 ====== */
