/* /Components/Carousel.razor.rz.scp.css */
.carousel-root[b-42lb4h8ni8] {
    display: flex;
    align-items: stretch;
    gap: 0.25rem;
}

.carousel-viewport[b-42lb4h8ni8] {
    flex: 1;
    overflow: hidden;
}

.carousel-track[b-42lb4h8ni8] {
    display: flex;
    transition: transform 0.25s ease;
}

.carousel-slide[b-42lb4h8ni8] {
    flex: 0 0 100%;
    min-width: 0;
    padding: 0.25rem;
}

.carousel-arrow[b-42lb4h8ni8] {
    flex: none;
    width: 2.2rem;
    border: 1px solid var(--hc-line);
    border-radius: 0.5rem;
    background: rgba(255, 255, 255, 0.06);
    color: var(--hc-ink);
    font-size: 1.5rem;
    cursor: pointer;
}

    .carousel-arrow:hover:not(:disabled)[b-42lb4h8ni8] {
        background: rgba(255, 255, 255, 0.12);
    }

    .carousel-arrow:disabled[b-42lb4h8ni8] {
        opacity: 0.3;
        cursor: default;
    }

.carousel-dots[b-42lb4h8ni8] {
    display: flex;
    justify-content: center;
    gap: 0.4rem;
    margin-top: 0.5rem;
}

.carousel-dot[b-42lb4h8ni8] {
    width: 0.6rem;
    height: 0.6rem;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.2);
    cursor: pointer;
}

    .carousel-dot.active[b-42lb4h8ni8] {
        background: var(--hc-gold);
    }
/* /Components/HandHistoryDrawer.razor.rz.scp.css */
/* 卓のハンド履歴ドロワー(T-1104。モック docs/mockups/table-hand-history.html の移植)。

   画面の左 76% を占め、高さは画面いっぱい。右の 24% には卓が残るので、
   誰がベットしたか・自分の番が近いかは履歴を開いたままでも視界に入る。
   高さいっぱい = 下部の操作バーにも重なるので、自分の手番での自動クローズ(T-1105)が前提。
   卓・席は position:absolute の重ね合わせなので、開閉で 1px も動かない。 */
.hh[b-ewu71jm4ac] {
    --accent: #46d18a;
    --muted: #97a0ad;
    --gold-text: #f0d48a;
    --loss: #ff8a8a;
    --panel: #171b24;
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 76%;
    z-index: 25;
    display: flex;
    flex-direction: column;
    background: linear-gradient(180deg, rgba(19, 24, 34, 0.985) 0%, rgba(10, 13, 20, 0.99) 100%);
    border-right: 1px solid rgba(70, 209, 138, 0.32);
    box-shadow: 14px 0 42px rgba(0, 0, 0, 0.78);
    overflow: hidden;
}

    /* 右端のつまみ = 左へスワイプすれば閉じる、というドロワーの合図 */
    .hh[b-ewu71jm4ac]::after {
        content: "";
        position: absolute;
        right: 3px;
        top: 50%;
        transform: translateY(-50%);
        width: 3px;
        height: 46px;
        border-radius: 999px;
        background: rgba(255, 255, 255, 0.18);
    }

    /* 履歴のカードは配布ではないので、めくれる演出は付けない。 */
    .hh[b-ewu71jm4ac]  .playing-card {
        animation: none;
    }

/* ==== 日時・レート・人数 ==== */
.hh-hd[b-ewu71jm4ac] {
    flex: none;
    height: 34px;
    display: flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0 0.4rem 0 0.55rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    background: linear-gradient(180deg, rgba(70, 209, 138, 0.1), transparent);
}

    .hh-hd .when[b-ewu71jm4ac] {
        flex: none;
        font-size: 0.74rem;
        font-weight: 800;
        font-variant-numeric: tabular-nums;
        white-space: nowrap;
    }

    .hh-hd .sep[b-ewu71jm4ac] {
        flex: none;
        font-size: 0.66rem;
        color: #48515f;
    }

    /* ブラインドが大きい卓でも ✕ を押し出さないよう、先に縮むのはこの2つにする。 */
    .hh-hd .stake[b-ewu71jm4ac] {
        flex: 0 1 auto;
        min-width: 0;
        font-size: 0.68rem;
        font-weight: 700;
        color: var(--gold-text);
        font-variant-numeric: tabular-nums;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .hh-hd .sp[b-ewu71jm4ac] {
        flex: 1;
    }

    .hh-hd .x[b-ewu71jm4ac] {
        flex: none;
        width: 1.7rem;
        height: 1.7rem;
        border: none;
        border-radius: 0.45rem;
        background: none;
        color: var(--accent);
        font-size: 0.95rem;
        font-weight: 800;
        cursor: pointer;
    }

/* ==== ハンドID(照合用) ==== */
.hh-id[b-ewu71jm4ac] {
    flex: none;
    padding: 0.18rem 0.6rem 0.24rem;
    font-size: 0.62rem;
    color: #5f6a79;
    font-variant-numeric: tabular-nums;
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
    display: flex;
    align-items: center;
    gap: 0.3rem;
    white-space: nowrap;
}

    .hh-id b[b-ewu71jm4ac] {
        color: #8b95a3;
        font-weight: 700;
    }

    .hh-id .cp[b-ewu71jm4ac] {
        border: none;
        background: none;
        padding: 0;
        color: var(--accent);
        font-size: 0.7rem;
        cursor: pointer;
    }

    .hh-id .cpok[b-ewu71jm4ac] {
        color: var(--accent);
    }

/* ==== 本文 ==== */
.hh-bd[b-ewu71jm4ac] {
    flex: 1;
    min-height: 0;
    overflow: hidden;
    padding: 0.35rem 0.5rem;
}

.hh-msg[b-ewu71jm4ac] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    padding: 0.8rem;
    font-size: 0.76rem;
    color: var(--muted);
    text-align: center;
}

.hh-retry[b-ewu71jm4ac] {
    border: 1px solid #3a4454;
    border-radius: 999px;
    background: #212836;
    color: #b9c4d0;
    font-size: 0.72rem;
    font-weight: 800;
    padding: 0.35rem 1rem;
    cursor: pointer;
}

/* 伏せたまま終わった札(= DB に平文が無い)。卓の裏カードと同じ意匠にする。 */
.hh-back[b-ewu71jm4ac] {
    flex: none;
    width: 21px;
    height: 28px;
    border-radius: 2px;
    border: 1px solid rgba(255, 255, 255, 0.75);
    background: linear-gradient(135deg, #5a89d6, #2f56a0);
}

/* ==== ② ハンド概要 ==== */
/* ボード+ポットの帯(このハンドの結論を1行で) */
.hh-sum[b-ewu71jm4ac] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.28rem 0.4rem 0.32rem;
    margin-bottom: 0.35rem;
    background: var(--panel);
    border: 1px solid rgba(255, 255, 255, 0.06);
    border-radius: 0.55rem;
}

    .hh-sum .cap[b-ewu71jm4ac] {
        flex: none;
        font-size: 0.6rem;
        color: var(--muted);
        font-weight: 700;
    }

    .hh-sum .cards[b-ewu71jm4ac] {
        display: flex;
        gap: 2px;
    }

    .hh-sum .none[b-ewu71jm4ac] {
        font-size: 0.65rem;
        color: #566073;
    }

    .hh-sum .sp[b-ewu71jm4ac] {
        flex: 1;
    }

    .hh-sum .potv[b-ewu71jm4ac] {
        flex: none;
        font-size: 0.72rem;
        font-weight: 800;
        color: var(--gold-text);
        font-variant-numeric: tabular-nums;
        white-space: nowrap;
    }

        .hh-sum .potv small[b-ewu71jm4ac] {
            font-size: 0.6rem;
            color: var(--muted);
            font-weight: 700;
            margin-right: 0.2rem;
        }

/* プレイヤー1人ぶんの行。
   1行目は名前・役・収支を横いっぱいに使い、2行目が [ポジション+ホールカード][ボード]。
   1行目を列に縛らないので、名前が長くてもホールカード列は細いままでいられる。 */
.hh-row[b-ewu71jm4ac] {
    display: grid;
    grid-template-columns: 78px 1fr;
    grid-template-rows: auto auto;
    gap: 0.12rem 0.4rem;
    padding: 0.3rem 0.4rem 0.35rem;
    border-radius: 0.55rem;
}

    .hh-row + .hh-row[b-ewu71jm4ac] {
        margin-top: 0.18rem;
    }

    .hh-row.win[b-ewu71jm4ac] {
        background: rgba(70, 209, 138, 0.09);
        box-shadow: inset 2px 0 0 var(--accent);
    }

    .hh-row .top[b-ewu71jm4ac] {
        grid-area: 1 / 1 / 2 / 3;
        display: flex;
        align-items: center;
        gap: 0.3rem;
        min-width: 0;
    }

    .hh-row .nm[b-ewu71jm4ac] {
        flex: none;
        max-width: 112px;
        font-size: 0.76rem;
        font-weight: 800;
        line-height: 1.3;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

        .hh-row .nm .mine[b-ewu71jm4ac] {
            font-size: 0.55rem;
            font-weight: 800;
            color: #06301c;
            background: var(--accent);
            border-radius: 0.2rem;
            padding: 0 0.2rem;
            margin-left: 0.2rem;
            vertical-align: 0.12em;
        }

    .hh-row .rk[b-ewu71jm4ac] {
        flex: 1;
        min-width: 0;
        font-size: 0.7rem;
        font-weight: 700;
        line-height: 1.3;
        color: #dbe3ec;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

        .hh-row .rk.out[b-ewu71jm4ac] {
            color: #6b7686;
            font-weight: 600;
        }

    .hh-row .dl[b-ewu71jm4ac] {
        flex: none;
        text-align: right;
        font-size: 0.78rem;
        font-weight: 800;
        font-variant-numeric: tabular-nums;
        line-height: 1.3;
    }

    .hh-row .hole[b-ewu71jm4ac] {
        grid-area: 2 / 1 / 3 / 2;
        display: flex;
        align-items: center;
        gap: 3px;
    }

    .hh-row .bd[b-ewu71jm4ac] {
        grid-area: 2 / 2 / 3 / 3;
        display: flex;
        align-items: center;
        gap: 3px;
    }

        .hh-row .bd .none[b-ewu71jm4ac] {
            font-size: 0.65rem;
            color: #566073;
        }

.dl.pos[b-ewu71jm4ac],
.v.pos[b-ewu71jm4ac] {
    color: var(--accent);
}

.dl.neg[b-ewu71jm4ac],
.v.neg[b-ewu71jm4ac] {
    color: var(--loss);
}

.dl.zero[b-ewu71jm4ac],
.v.zero[b-ewu71jm4ac] {
    color: #6b7686;
}

/* 概要のカードは1段小さく(ドロワーぶん画面が狭いため) */
.hh-sum .cards[b-ewu71jm4ac]  .playing-card,
.hh-row .hole[b-ewu71jm4ac]  .playing-card,
.hh-row .bd[b-ewu71jm4ac]  .playing-card {
    --pc-w: 21px;
    --pc-h: 28px;
}

/* ポジション札 */
.pos-b[b-ewu71jm4ac] {
    flex: none;
    width: 27px;
    text-align: center;
    font-size: 0.55rem;
    font-weight: 800;
    line-height: 1.5;
    border-radius: 0.25rem;
    background: rgba(255, 255, 255, 0.1);
    color: #b9c4d0;
    letter-spacing: -0.02em;
}

    .pos-b.dealer[b-ewu71jm4ac] {
        background: rgba(240, 212, 138, 0.22);
        color: var(--gold-text);
    }

    .pos-b.bb[b-ewu71jm4ac] {
        background: rgba(70, 209, 138, 0.2);
        color: #9ff0c4;
    }

/* ==== ③ ハンド詳細(アクションログ) ==== */
/* 4人・毎ストリート勝負のハンドでちょうど収まる高さ。
   これより長いハンド(6人・3ベット合戦)はここだけが縦スクロールする。 */
.hh-log[b-ewu71jm4ac] {
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    /* 列見出しと各行で必ず同じ幅を使う(行ごとに auto で測ると列が揃わない)。
       内訳は 幅293px の内側 266.6px から、名前 86(バッジ27+名前55+隙間)/ 額・残り 各52
       (`1000.5 BB` の 52px まで1行で収まる。額はオールインでスタックと同じ桁になるので残りと同幅)/
       隙間 4.8×3 を引いた残り 62.2px がアクション。「ブラインド」「フォールド」「オールイン」の
       55px より広いので、いちばん長い綴りでも折り返さない。 */
    --lg-cols: 86px 1fr 52px 52px;
}

/* 列見出し(スタック列が何かを1回だけ言う) */
.lg-hd[b-ewu71jm4ac] {
    flex: none;
    display: grid;
    grid-template-columns: var(--lg-cols);
    gap: 0.3rem;
    padding: 0 0.4rem 0.04rem;
    font-size: 0.55rem;
    font-weight: 700;
    color: #5b6573;
    letter-spacing: 0.02em;
}

    .lg-hd .v[b-ewu71jm4ac],
    .lg-hd .s[b-ewu71jm4ac] {
        text-align: right;
    }

.st-hd[b-ewu71jm4ac] {
    flex: none;
    display: flex;
    align-items: center;
    gap: 0.35rem;
    margin: 0.08rem 0 0.04rem;
    padding: 0.06rem 0.4rem;
    border-radius: 0.4rem;
    background: rgba(255, 255, 255, 0.05);
}

    .st-hd .t[b-ewu71jm4ac] {
        flex: none;
        font-size: 0.66rem;
        font-weight: 800;
        color: var(--gold-text);
        white-space: nowrap;
    }

    .st-hd .cards[b-ewu71jm4ac] {
        display: flex;
        gap: 2px;
    }

    .st-hd .sp[b-ewu71jm4ac] {
        flex: 1;
    }

    .st-hd .pv[b-ewu71jm4ac] {
        flex: none;
        font-size: 0.6rem;
        font-weight: 700;
        color: var(--muted);
        font-variant-numeric: tabular-nums;
        white-space: nowrap;
    }

        .st-hd .pv b[b-ewu71jm4ac] {
            color: #dbe3ec;
        }

    .st-hd .cards[b-ewu71jm4ac]  .playing-card {
        --pc-w: 18px;
        --pc-h: 24px;
    }

    .st-hd .hh-back[b-ewu71jm4ac] {
        width: 18px;
        height: 24px;
    }

/* 1行 = [ポジション+名前][アクション][そのストリートでの合計額][アクション後の残りスタック]。
   右端がスタックなのが肝で、「誰がもう後がないのか」が縦に読める。 */
.arow[b-ewu71jm4ac] {
    flex: none;
    display: grid;
    grid-template-columns: var(--lg-cols);
    align-items: center;
    gap: 0.3rem;
    padding: 0 0.4rem;
    font-size: 0.68rem;
    line-height: 1.24;
}

    .arow.mine[b-ewu71jm4ac] {
        background: rgba(70, 209, 138, 0.08);
        border-radius: 0.35rem;
    }

    .arow.out[b-ewu71jm4ac] {
        opacity: 0.55;
    }

    .arow .w[b-ewu71jm4ac] {
        display: flex;
        align-items: center;
        gap: 0.25rem;
        min-width: 0;
    }

        .arow .w > span:not(.pos-b)[b-ewu71jm4ac] {
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            font-weight: 700;
        }

    .arow .a[b-ewu71jm4ac] {
        color: #c2ccd8;
        font-weight: 700;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

        .arow .a.fold[b-ewu71jm4ac],
        .arow .a.chk[b-ewu71jm4ac],
        .arow .a.bl[b-ewu71jm4ac] {
            color: #8b95a3;
            font-weight: 600;
        }

        .arow .a.agg[b-ewu71jm4ac] {
            color: var(--gold-text);
        }

    .arow .v[b-ewu71jm4ac] {
        text-align: right;
        font-variant-numeric: tabular-nums;
        font-weight: 700;
        color: #dbe3ec;
        white-space: nowrap;
        /* 想定より深いスタックで桁が溢れても、隣の列に重ねずここで止める。 */
        overflow: hidden;
        text-overflow: ellipsis;
    }

        .arow .v.dim[b-ewu71jm4ac] {
            color: #4d5666;
        }

    .arow .s[b-ewu71jm4ac] {
        text-align: right;
        font-variant-numeric: tabular-nums;
        font-weight: 600;
        color: #78838f;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

        /* その手で持ち球の1/3以上を出した行(オールインを含む)。 */
        .arow .s.low[b-ewu71jm4ac] {
            color: #d9a441;
        }

/* 結果だけは常に見えるよう、スクロールする本文の外へ固定する */
.hh-sd[b-ewu71jm4ac] {
    flex: none;
    padding: 0.14rem 0.5rem 0.2rem;
    border-top: 1px solid rgba(70, 209, 138, 0.22);
    background: rgba(70, 209, 138, 0.06);
}

.sd-hd[b-ewu71jm4ac] {
    padding: 0.06rem 0.4rem;
    border-radius: 0.4rem;
    background: rgba(70, 209, 138, 0.12);
    font-size: 0.66rem;
    font-weight: 800;
    color: #9ff0c4;
    white-space: nowrap;
}

.srow[b-ewu71jm4ac] {
    display: grid;
    grid-template-columns: 42px 1fr 46px;
    align-items: center;
    gap: 0.35rem;
    padding: 0.03rem 0.4rem;
    font-size: 0.64rem;
}

    .srow .cards[b-ewu71jm4ac] {
        display: flex;
        gap: 2px;
        align-items: center;
    }

        .srow .cards[b-ewu71jm4ac]  .playing-card {
            --pc-w: 18px;
            --pc-h: 24px;
        }

    .srow .rk[b-ewu71jm4ac] {
        font-weight: 700;
        color: #dbe3ec;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

        .srow .rk.lose[b-ewu71jm4ac] {
            color: #8b95a3;
            font-weight: 600;
        }

    .srow .v[b-ewu71jm4ac] {
        text-align: right;
        font-weight: 800;
        font-variant-numeric: tabular-nums;
        /* 桁が増えても2行に折り返さない(帯の高さが変わるとログの高さまで動く)。 */
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

/* ==== タブ ==== */
.hh-tabs[b-ewu71jm4ac] {
    flex: none;
    display: grid;
    grid-template-columns: 1fr 1fr;
    border-top: 1px solid rgba(255, 255, 255, 0.07);
}

    .hh-tabs button[b-ewu71jm4ac] {
        border: none;
        background: none;
        text-align: center;
        font-size: 0.78rem;
        font-weight: 700;
        color: #7f8a99;
        padding: 0.5rem 0;
        cursor: pointer;
    }

        .hh-tabs button.on[b-ewu71jm4ac] {
            color: var(--accent);
            box-shadow: inset 0 -2px 0 var(--accent);
            background: rgba(70, 209, 138, 0.07);
        }

/* ==== フッター(ページ送り・閉じる) ==== */
/* 左端は「閉じる」と同じ幅の空きにして、ハンド番号が中央に来るようにする。 */
.hh-ft[b-ewu71jm4ac] {
    flex: none;
    height: calc(42px + env(safe-area-inset-bottom));
    display: grid;
    grid-template-columns: 3.1rem 1fr 3.1rem;
    align-items: center;
    padding: 0 0.5rem env(safe-area-inset-bottom);
    border-top: 1px solid rgba(255, 255, 255, 0.07);
    background: rgba(0, 0, 0, 0.25);
}

    .hh-ft .nav[b-ewu71jm4ac] {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 0.7rem;
        font-size: 0.8rem;
        font-weight: 800;
        font-variant-numeric: tabular-nums;
    }

        .hh-ft .nav .ar[b-ewu71jm4ac] {
            border: none;
            background: none;
            padding: 0.2rem 0.3rem;
            color: var(--accent);
            font-size: 0.9rem;
            cursor: pointer;
        }

            .hh-ft .nav .ar:disabled[b-ewu71jm4ac] {
                color: #3a4350;
                cursor: default;
            }

        .hh-ft .nav .tot[b-ewu71jm4ac] {
            color: var(--muted);
            font-size: 0.68rem;
            font-weight: 700;
        }

    .hh-ft .cls[b-ewu71jm4ac] {
        border: none;
        background: none;
        text-align: center;
        color: var(--accent);
        font-size: 0.68rem;
        font-weight: 800;
        cursor: pointer;
    }
/* /Components/NoticeToast.razor.rz.scp.css */
/* 通知の帯(モック docs/mockups/notices.html 04)。
   色・寸法は HoldemClub.Layout の theme.css の変数だけを使う。
   卓の呼び出し(TableAlertToast)と同じ「上から出る帯」の作りに揃える。 */

.notice-toast[b-zj3mqu99f9] {
    position: fixed;
    left: 50%;
    top: calc(0.6rem + env(safe-area-inset-top));
    z-index: 1100;
    transform: translateX(-50%);
    width: min(calc(100% - 1.4rem), 26rem);
    display: flex;
    align-items: center;
    gap: var(--hc-gap);
    padding: 0.55rem 0.7rem;
    border-radius: var(--hc-radius-l);
    background: var(--hc-bg-raised);
    border: 1px solid rgba(201, 164, 92, 0.5);
    box-shadow: var(--hc-shadow-float);
}

.notice-toast-body[b-zj3mqu99f9] {
    flex: 1;
    min-width: 0;
}

.notice-toast-body > b[b-zj3mqu99f9] {
    display: block;
    font-size: 0.82rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.notice-toast-body > span[b-zj3mqu99f9] {
    display: block;
    font-size: 0.66rem;
    color: var(--hc-muted);
}

.notice-toast-go[b-zj3mqu99f9] {
    flex: none;
    padding: 0.25rem 0.5rem;
    border: none;
    background: none;
    color: var(--hc-gold-text);
    font: inherit;
    font-size: 0.75rem;
    font-weight: 800;
    white-space: nowrap;
    cursor: pointer;
}

.notice-toast-close[b-zj3mqu99f9] {
    flex: none;
    width: 1.6rem;
    height: 1.6rem;
    display: grid;
    place-items: center;
    border: none;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.06);
    color: var(--hc-muted);
    font: inherit;
    font-size: 0.9rem;
    line-height: 1;
    cursor: pointer;
}
/* /Components/PlayingCard.razor.rz.scp.css */
/* トランプ1枚の意匠(モック docs/mockups/table-cards.html の移植)。
   寸法は親が --pc-w / --pc-h を渡して決める。カスタムプロパティはスコープドCSSの境界を越えて
   継承されるので、親は幅と高さの2行を置くだけでよく、角丸・文字サイズ・スート位置は比率で追従する。
   既定値はボードのカード(34×46)。 */
.playing-card[b-r0g8b8xkg5] {
    --pc-w: 34px;
    --pc-h: 46px;
    position: relative;
    display: block;
    flex: none;
    width: var(--pc-w);
    height: var(--pc-h);
    /* 角丸は浅く(添付は角がほぼ立っている) */
    border-radius: calc(var(--pc-h) * 0.055);
    background: #fdfdf8;
    overflow: hidden;
    animation: card-deal-b-r0g8b8xkg5 0.28s ease-out;
    will-change: transform, opacity;
}

/* 左上のインデックス(小さいランク+その真下に小さいスート)。
   上余白は左余白と同じ実寸(= 0.085W)にする。 */
.playing-card .pc-ix[b-r0g8b8xkg5] {
    position: absolute;
    left: calc(var(--pc-w) * 0.085);
    top: calc(var(--pc-w) * 0.085);
    display: flex;
    flex-direction: column;
    align-items: center;
    line-height: 1;
}

.playing-card .pc-ix b[b-r0g8b8xkg5] {
    font-size: calc(var(--pc-h) * 0.272);
    font-weight: 800;
    line-height: 0.92;
    letter-spacing: -0.02em;
}

.playing-card .pc-sx[b-r0g8b8xkg5] {
    display: block;
    width: calc(var(--pc-h) * 0.125);
    height: calc(var(--pc-h) * 0.125);
    margin-top: calc(var(--pc-h) * 0.03);
}

/* 「10」だけは2文字なので詰めて左へ寄せる */
.playing-card.t10 .pc-ix[b-r0g8b8xkg5] {
    left: calc(var(--pc-w) * 0.045);
}

.playing-card.t10 .pc-ix b[b-r0g8b8xkg5] {
    font-size: calc(var(--pc-h) * 0.24);
    letter-spacing: -0.07em;
}

/* 中央〜右下の大きいスート(A〜K の全ランク共通) */
.playing-card .pc-pip[b-r0g8b8xkg5] {
    position: absolute;
    right: calc(var(--pc-w) * 0.10);
    bottom: calc(var(--pc-h) * 0.07);
    width: calc(var(--pc-w) * 0.56);
    height: calc(var(--pc-h) * 0.40);
}

.playing-card.red[b-r0g8b8xkg5] {
    color: #d32f2f;
}

.playing-card.black[b-r0g8b8xkg5] {
    color: #1f2933;
}

/* 役に使われなかったボード(ハンド履歴・T-1104)。参考画像と同じくグレー地に落とす。 */
.playing-card.dim[b-r0g8b8xkg5] {
    background: #8c949d;
}

    .playing-card.dim.red[b-r0g8b8xkg5] {
        color: #7d3033;
    }

    .playing-card.dim.black[b-r0g8b8xkg5] {
        color: #2b3138;
    }

.playing-card.back[b-r0g8b8xkg5] {
    display: flex;
    align-items: center;
    justify-content: center;
    background: #37474f;
    color: #90a4ae;
}

/* 配布演出(T-601): transform/opacity のみで合成レイヤー内に収める(60fps目標) */
@keyframes card-deal-b-r0g8b8xkg5 {
    from {
        opacity: 0;
        transform: translateY(-0.8rem) rotate(-6deg) scale(0.8);
    }

    to {
        opacity: 1;
        transform: translateY(0) rotate(0) scale(1);
    }
}

@media (prefers-reduced-motion: reduce) {
    .playing-card[b-r0g8b8xkg5] {
        animation: none;
    }
}
/* /Components/TableAlertToast.razor.rz.scp.css */
/* 裏の卓の呼び出し(docs/mockups/multi-table.html §4「トースト」)。

   上端 58px は卓画面の上部クローム(52px)・ロビーのヒーロー上段のどちらの直下でもある。
   高さは 52px 固定で、卓画面ではボード・ポット・自分の札・操作バーに掛からず、
   ロビーでは卓一覧に掛からない。重なるのは卓の上側の席と、ヒーローの背景だけ。
   位置は画面に固定する(卓一覧のスクロールでは動かさない)。 */
.alert-toast[b-3zhi7703zh] {
    position: fixed;
    top: calc(58px + env(safe-area-inset-top));
    left: 50%;
    transform: translateX(-50%);
    width: calc(min(100%, 430px) - 20px);
    height: 52px;
    z-index: 60;
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.5rem 0.55rem 0.5rem 0.5rem;
    border-radius: 0.9rem;
    text-align: left;
    font-family: inherit;
    cursor: pointer;
    background: linear-gradient(180deg, rgba(38, 32, 14, 0.97), rgba(16, 15, 10, 0.98));
    border: 1px solid rgba(255, 215, 106, 0.6);
    box-shadow: 0 12px 30px rgba(0, 0, 0, 0.65);
}

/* 残り時間の周回リング(卓の手番リングと同じ描き方)。 */
.alert-toast .ring[b-3zhi7703zh] {
    position: relative;
    flex: none;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: conic-gradient(#ffd76a 0 calc(var(--p, 0) * 1%), rgba(255, 255, 255, 0.16) 0);
}

    .alert-toast .ring .s[b-3zhi7703zh] {
        position: absolute;
        inset: 3px;
        border-radius: 50%;
        background: #16130a;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 0.72rem;
        font-weight: 900;
        color: #ffe9b0;
        font-variant-numeric: tabular-nums;
    }

.alert-toast .tx[b-3zhi7703zh] {
    flex: 1;
    min-width: 0;
}

    /* 卓名も内容も1行。長い卓名は末尾を省略して、高さは絶対に増やさない。 */
    .alert-toast .tx b[b-3zhi7703zh] {
        display: block;
        font-size: 0.84rem;
        font-weight: 800;
        color: #fff3d4;
        line-height: 1.3;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .alert-toast .tx span[b-3zhi7703zh] {
        display: block;
        font-size: 0.72rem;
        color: #c8bfa4;
        line-height: 1.4;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

.alert-toast .go[b-3zhi7703zh] {
    flex: none;
    padding: 0.32rem 0.7rem;
    border-radius: 999px;
    font-size: 0.76rem;
    font-weight: 800;
    background: linear-gradient(180deg, #eec95c, #c99a2e);
    color: #4a3600;
}

/* 情報トースト(卓が閉じられた)。手番と取り違えないよう色で分ける。 */
.alert-toast.info[b-3zhi7703zh] {
    background: linear-gradient(180deg, rgba(22, 28, 38, 0.97), rgba(12, 15, 21, 0.98));
    border-color: rgba(150, 170, 195, 0.45);
}

    .alert-toast.info .ring[b-3zhi7703zh] {
        background: rgba(255, 255, 255, 0.08);
    }

        .alert-toast.info .ring .s[b-3zhi7703zh] {
            background: #161b24;
            color: #b7c2d0;
            font-size: 0.8rem;
        }

    .alert-toast.info .tx b[b-3zhi7703zh] {
        color: #e7edf4;
    }

    .alert-toast.info .go[b-3zhi7703zh] {
        background: #262d3a;
        color: #cbd4df;
        border: 1px solid #38414f;
    }
/* /Pages/ClubAdmin.razor.rz.scp.css */
/* クラブ管理ハブ(モック docs/mockups/admin.html 01)。
   色・寸法は HoldemClub.Layout の theme.css の変数だけを使う。 */

.admin-head[b-2ob7uors1o] {
    display: flex;
    flex-direction: column;
    gap: 0.7rem;
}

.admin-head-row[b-2ob7uors1o] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
}

.admin-head-name[b-2ob7uors1o] {
    flex: 1;
    min-width: 0;
}

.admin-head-name > b[b-2ob7uors1o] {
    display: block;
    font-size: 0.95rem;
}

.admin-head-name > span[b-2ob7uors1o] {
    display: block;
    font-size: 0.68rem;
    color: var(--hc-muted);
}

.admin-menu[b-2ob7uors1o] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

/* メニュー行はリンクなので、下線と文字色を行の見た目に戻す */
.admin-menu a.hc-row[b-2ob7uors1o],
.admin-menu a.hc-row:hover[b-2ob7uors1o] {
    text-decoration: none;
    color: var(--hc-ink);
}
/* /Pages/ClubApplications.razor.rz.scp.css */
/* 参加申請(モック docs/mockups/admin.html 04)。 */

.apply-card[b-6cr828cagf] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

.apply-head[b-6cr828cagf] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
}

.apply-who[b-6cr828cagf] {
    flex: 1;
    min-width: 0;
}

.apply-who > b[b-6cr828cagf] {
    display: block;
    font-size: 0.9rem;
}

.apply-who > span[b-6cr828cagf] {
    display: block;
    font-size: 0.68rem;
    color: var(--hc-muted);
}
/* /Pages/ClubBots.razor.rz.scp.css */
/* クラブボット管理(docs/mockups/bots.html 01〜05・08)。
   状態が一目で分かることを優先する。色は theme.css の変数だけを使う(T-1507)。 */

.row-between[b-ll481o2xky] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

/* 稼働状況のサマリータイル。 */
.bot-stat[b-ll481o2xky] {
    text-align: center;
    padding: 0.6rem 0.4rem;
    border: 1px solid var(--hc-line);
    border-radius: 0.75rem;
    background: var(--hc-surface);
}

    .bot-stat .v[b-ll481o2xky] {
        font-size: 1rem;
        font-weight: 800;
        font-variant-numeric: tabular-nums;
    }

    .bot-stat .k[b-ll481o2xky] {
        font-size: 0.65rem;
        color: var(--hc-muted);
    }

/* 状態ドット: 緑=動いている / 橙=要対応 / 灰=止まっている。 */
.bot-dot[b-ll481o2xky] {
    flex: none;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.14);
}

    .bot-dot.live[b-ll481o2xky] {
        background: var(--hc-neon);
        box-shadow: 0 0 0 3px rgba(47, 224, 138, 0.18);
    }

    .bot-dot.warn[b-ll481o2xky] {
        background: var(--hc-warn);
        box-shadow: 0 0 0 3px rgba(232, 180, 92, 0.18);
    }

/* ボットのアバターは角を落として人間と区別する。 */
.member-avatar.bot[b-ll481o2xky] {
    border-radius: 0.7rem;
    background: linear-gradient(135deg, #1c7f74, #10403c);
}

/* 行タップで詳細シート(ボタンだが見た目は行のまま)。 */
.bot-row-open[b-ll481o2xky] {
    border: none;
    background: none;
    padding: 0;
    text-align: left;
    cursor: pointer;
}

/* 稼働 ON/OFF トグル。 */
.bot-toggle[b-ll481o2xky] {
    flex: none;
    width: 40px;
    height: 22px;
    border-radius: 99px;
    border: none;
    background: rgba(255, 255, 255, 0.14);
    position: relative;
    cursor: pointer;
}

    .bot-toggle[b-ll481o2xky]::after {
        content: "";
        position: absolute;
        top: 2px;
        left: 2px;
        width: 18px;
        height: 18px;
        border-radius: 50%;
        background: #8b96a5;
    }

    .bot-toggle.on[b-ll481o2xky] {
        background: rgba(47, 224, 138, 0.28);
    }

        .bot-toggle.on[b-ll481o2xky]::after {
            background: var(--hc-neon);
        }

        .bot-toggle.on[b-ll481o2xky]::after {
            left: auto;
            right: 2px;
        }
/* /Pages/ClubChipRequests.razor.rz.scp.css */
/* チップ要求(モック docs/mockups/notices.html 05・06)。
   色・寸法は HoldemClub.Layout の theme.css の変数だけを使う。 */

.creq-tabs[b-ax9ahd5rqk] {
    display: flex;
    gap: 0.4rem;
}

.creq-tabs .hc-chip[b-ax9ahd5rqk] {
    cursor: pointer;
    font: inherit;
    font-size: 0.68rem;
    font-weight: 700;
}

/* 未読は背景を変えずに左の筋で示す。並んだときに未読の量が一目で分かる。 */
.creq-row.creq-unread[b-ax9ahd5rqk] {
    border-left: 3px solid var(--hc-gold);
    background: var(--hc-surface-2);
}

.creq-right[b-ax9ahd5rqk] {
    flex: none;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.25rem;
}

.creq-right > b[b-ax9ahd5rqk] {
    font-size: 0.85rem;
    color: var(--hc-gold-text);
}

/* 付与画面に出す「何を求められているか」。 */
.creq-quote[b-ax9ahd5rqk] {
    padding: 0.55rem 0.65rem;
    border-radius: var(--hc-radius-m);
    background: rgba(201, 164, 92, 0.08);
    border: 1px solid rgba(201, 164, 92, 0.42);
}

.creq-quote-row[b-ax9ahd5rqk] {
    display: flex;
    align-items: baseline;
    gap: var(--hc-gap);
}

.creq-quote-row > span[b-ax9ahd5rqk] {
    flex: 1;
    font-size: 0.68rem;
    color: var(--hc-muted);
}

.creq-quote-row > b[b-ax9ahd5rqk] {
    font-size: 1rem;
    color: var(--hc-gold-text);
    font-variant-numeric: tabular-nums;
}

.creq-quote-msg[b-ax9ahd5rqk] {
    margin-top: 0.2rem;
    font-size: 0.78rem;
}
/* /Pages/ClubMembers.razor.rz.scp.css */
/* メンバー(モック docs/mockups/admin.html 02・03)。 */

.member-search[b-wu4flq1x9z] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    height: 2.2rem;
    padding: 0 0.6rem;
    color: var(--hc-muted);
    background: var(--hc-sunken);
    border: 1px solid var(--hc-line);
    border-radius: var(--hc-radius-m);
}

.member-search-input[b-wu4flq1x9z] {
    flex: 1;
    min-width: 0;
    border: none;
    background: none;
    color: var(--hc-ink);
    font: inherit;
    font-size: 0.8rem;
}

.member-search-input:focus[b-wu4flq1x9z] {
    outline: none;
}

.sheet-head[b-wu4flq1x9z] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    margin-bottom: 0.7rem;
}

.sheet-who[b-wu4flq1x9z] {
    flex: 1;
    min-width: 0;
}

.sheet-who > b[b-wu4flq1x9z] {
    display: block;
    font-size: 0.95rem;
}

.sheet-who > span[b-wu4flq1x9z] {
    display: block;
    font-size: 0.68rem;
    color: var(--hc-muted);
}
/* /Pages/ClubRake.razor.rz.scp.css */
/* レーキ・還元(モック docs/mockups/admin.html 06〜08)。
   色・寸法は HoldemClub.Layout の theme.css の変数だけを使う。 */

/* タブ帯は本文の余白の外まで広げて、上部バーと地続きに見せる */
.rake-tabs[b-0yeqfm8n5g] {
    margin: calc(var(--hc-pad) * -1) calc(var(--hc-pad) * -1) 0;
}

.rake-line[b-0yeqfm8n5g] {
    display: flex;
    align-items: center;
    gap: var(--hc-gap);
    padding: 0.4rem 0;
    border-bottom: 1px solid var(--hc-line);
    font-size: 0.8rem;
}

.rake-line:last-child[b-0yeqfm8n5g] {
    border-bottom: none;
}

.rake-line > span:first-child[b-0yeqfm8n5g] {
    flex: 1;
    min-width: 0;
    color: var(--hc-muted);
}

.rake-line > b[b-0yeqfm8n5g] {
    flex: none;
}

.rake-who[b-0yeqfm8n5g] {
    flex: 1;
    min-width: 0;
    color: var(--hc-ink) !important;
}

.rake-line-bar[b-0yeqfm8n5g] {
    align-items: flex-start;
}

.rake-bar[b-0yeqfm8n5g] {
    display: block;
    height: 5px;
    margin-top: 0.2rem;
    border-radius: 3px;
    background: rgba(255, 255, 255, 0.08);
    overflow: hidden;
}

.rake-bar > i[b-0yeqfm8n5g] {
    display: block;
    height: 100%;
    background: linear-gradient(90deg, var(--hc-gold), var(--hc-gold-hi));
}

.rake-total[b-0yeqfm8n5g] {
    margin-top: 0.2rem;
    border-top: 1px solid var(--hc-line);
    border-bottom: none;
    font-weight: 700;
}

.rake-total > span:first-child[b-0yeqfm8n5g] {
    color: var(--hc-ink);
}

.rake-plus[b-0yeqfm8n5g] {
    color: var(--hc-neon);
}

/* ラダーの1行: 境界額 / 率 / 削除 */
.rake-tier[b-0yeqfm8n5g] {
    display: flex;
    align-items: center;
    gap: var(--hc-gap-s);
    margin-bottom: var(--hc-gap-s);
}

.rake-tier > input[b-0yeqfm8n5g] {
    flex: 1;
    min-width: 0;
}

.rake-tier > button[b-0yeqfm8n5g] {
    flex: none;
}
/* /Pages/ClubSettings.razor.rz.scp.css */
/* クラブ設定(モック docs/mockups/admin.html 05)。 */

.settings-readonly[b-5yor1w77ge] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    color: var(--hc-muted);
}
/* /Pages/CreateClub.razor.rz.scp.css */
.create-club[b-ycd8ngdxli] {
    min-height: calc(100% - 3.25rem);
}

.field label[b-ycd8ngdxli] {
    display: block;
    font-size: 0.75rem;
    color: var(--hc-muted);
    margin-bottom: 0.2rem;
}

.toggle-row[b-ycd8ngdxli] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    min-height: 2.75rem;
    padding: 0.5rem 0.7rem;
    border: 1px solid var(--hc-line);
    border-radius: var(--hc-radius-m);
    background: var(--hc-surface);
    color: var(--hc-ink);
    cursor: pointer;
    font-size: 0.95rem;
}

/* 主ボタンは下端固定(1画面1タスク) */
.create-actions[b-ycd8ngdxli] {
    margin-top: auto;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}
/* /Pages/Dashboard.razor.rz.scp.css */
.dash-greet[b-2uqm4x8rpk] {
    margin: 0;
    color: var(--hc-muted);
}

.dashboard-carousel[b-2uqm4x8rpk] {
    width: 100%;
}

.dash-card[b-2uqm4x8rpk] {
    min-height: 24rem;
    padding: 1.25rem 1.4rem;
    border: 1px solid var(--hc-line);
    border-radius: var(--hc-radius-xl);
    background: var(--hc-surface);
    box-shadow: var(--hc-shadow-card);
    display: flex;
    flex-direction: column;
    gap: 0.7rem;
}

.club-name[b-2uqm4x8rpk] {
    font-size: 1.6rem;
    font-weight: 800;
    margin: 0;
}

.club-card-footer[b-2uqm4x8rpk] {
    margin-top: auto;
}

.club-balance[b-2uqm4x8rpk] {
    color: var(--hc-gold-text);
    font-size: 1.25rem;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
}

.swipe-hint[b-2uqm4x8rpk] {
    text-align: center;
    color: var(--hc-muted);
    font-size: 0.78rem;
    margin: 0;
}

/* ダイヤ・HUD の入口(M17 / T-1707)。クラブに紐づかないので、
   カルーセル(クラブ選択)の外に置く。 */
.dash-account[b-2uqm4x8rpk] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    margin-top: var(--hc-gap-l);
}

    .dash-account .hc-row[b-2uqm4x8rpk] {
        text-decoration: none;
        color: inherit;
        gap: 0.6rem;
    }

.dash-tile[b-2uqm4x8rpk] {
    flex: none;
    width: 2rem;
    height: 2rem;
    border-radius: var(--hc-radius-s);
    display: grid;
    place-items: center;
}

    .dash-tile svg[b-2uqm4x8rpk] {
        width: 1.05rem;
        height: 1.05rem;
    }

    .dash-tile.gem[b-2uqm4x8rpk] {
        background: rgba(95, 200, 239, 0.14);
        border: 1px solid rgba(95, 200, 239, 0.42);
        color: #5fc8ef;
    }

    .dash-tile.gold[b-2uqm4x8rpk] {
        background: rgba(201, 164, 92, 0.12);
        border: 1px solid rgba(201, 164, 92, 0.42);
        color: var(--hc-gold-hi);
    }

.dash-lbl[b-2uqm4x8rpk] {
    flex: 1;
    min-width: 0;
}

    .dash-lbl b[b-2uqm4x8rpk] {
        display: block;
        font-size: 0.85rem;
    }

    .dash-lbl span[b-2uqm4x8rpk] {
        display: block;
        font-size: 0.66rem;
        color: var(--hc-muted);
    }

.dash-chev[b-2uqm4x8rpk] {
    flex: none;
    color: var(--hc-muted);
}
/* /Pages/Diamonds.razor.rz.scp.css */
/* ダイヤ画面(M17 / T-1707)。ダイヤは水色系で、チップの金と一目で区別できるようにする
   —— 同じ画面に両方の残高が出る場面があるため。 */
.gem-hero[b-vllrxp9cm0] {
    text-align: center;
    background:
        radial-gradient(120% 90% at 20% 0%, rgba(95, 200, 239, 0.22), transparent 62%),
        var(--hc-surface);
    border-color: rgba(95, 200, 239, 0.3);
}

.gem-cap[b-vllrxp9cm0] {
    display: block;
    font-size: 0.68rem;
    letter-spacing: 0.1em;
    color: var(--hc-muted);
}

.gem-val[b-vllrxp9cm0] {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    margin-top: 0.15rem;
    font-size: 1.9rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: #b6e9ff;
}

.gem-ico[b-vllrxp9cm0] {
    width: 1.5rem;
    height: 1.5rem;
    color: #5fc8ef;
}

/* ---- パック ---- */
.gem-pack[b-vllrxp9cm0] {
    width: 100%;
    gap: 0.6rem;
    text-align: left;
    font: inherit;
    color: inherit;
    cursor: pointer;
}

    .gem-pack.best[b-vllrxp9cm0] {
        border-color: rgba(95, 200, 239, 0.55);
        background: rgba(95, 200, 239, 0.07);
    }

.gem-heap[b-vllrxp9cm0] {
    flex: none;
    width: 2.4rem;
    height: 2.4rem;
    border-radius: var(--hc-radius-m);
    display: grid;
    place-items: center;
    background: linear-gradient(160deg, rgba(95, 200, 239, 0.22), rgba(29, 108, 140, 0.3));
    border: 1px solid rgba(95, 200, 239, 0.42);
}

    .gem-heap svg[b-vllrxp9cm0] {
        width: 1.15rem;
        height: 1.15rem;
        color: #5fc8ef;
    }

.gem-qty[b-vllrxp9cm0] {
    flex: 1;
    min-width: 0;
}

    .gem-qty b[b-vllrxp9cm0] {
        display: block;
        font-size: 0.95rem;
        font-variant-numeric: tabular-nums;
        color: #b6e9ff;
    }

    .gem-qty span[b-vllrxp9cm0] {
        display: block;
        font-size: 0.66rem;
        color: var(--hc-muted);
    }

.gem-yen[b-vllrxp9cm0] {
    flex: none;
    text-align: right;
}

    .gem-yen b[b-vllrxp9cm0] {
        display: block;
        font-size: 0.9rem;
        font-variant-numeric: tabular-nums;
    }

    .gem-yen span[b-vllrxp9cm0] {
        font-size: 0.62rem;
        color: var(--hc-muted);
    }

/* ---- 確認シートの明細 ---- */
.gem-kv[b-vllrxp9cm0] {
    display: flex;
    justify-content: space-between;
    font-size: 0.82rem;
    padding: 0.35rem 0;
}

    .gem-kv + .gem-kv[b-vllrxp9cm0] {
        border-top: 1px solid var(--hc-line);
    }

    .gem-kv b[b-vllrxp9cm0] {
        font-variant-numeric: tabular-nums;
    }

    .gem-kv.total b[b-vllrxp9cm0] {
        font-size: 1.05rem;
        color: #b6e9ff;
    }

/* ---- 履歴 ---- */
.gem-lrow[b-vllrxp9cm0] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0;
    border-bottom: 1px solid var(--hc-line);
}

    .gem-lrow:last-child[b-vllrxp9cm0] {
        border-bottom: 0;
    }

    .gem-lrow .g[b-vllrxp9cm0] {
        flex: 1;
        min-width: 0;
    }

        .gem-lrow .g b[b-vllrxp9cm0] {
            display: block;
            font-size: 0.82rem;
        }

        .gem-lrow .g span[b-vllrxp9cm0] {
            font-size: 0.66rem;
            color: var(--hc-muted);
        }

    .gem-lrow .n[b-vllrxp9cm0] {
        flex: none;
        font-weight: 700;
        font-variant-numeric: tabular-nums;
    }

        .gem-lrow .n.plus[b-vllrxp9cm0] {
            color: #b6e9ff;
        }

        .gem-lrow .n.minus[b-vllrxp9cm0] {
            color: var(--hc-muted);
        }
/* /Pages/Hud.razor.rz.scp.css */
/* HUD の購入画面(M17 / T-1707)。
   使用中アイコンは金 —— ダイヤ(購入に使う資産)の水色とは役割で分けている。 */
.hud-band[b-dw101i8zfm] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    background: linear-gradient(160deg, rgba(201, 164, 92, 0.16), rgba(201, 164, 92, 0.06));
    border-color: rgba(201, 164, 92, 0.45);
}

.hud-eye[b-dw101i8zfm] {
    flex: none;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 50%;
    display: grid;
    place-items: center;
    color: #2a1e08;
    background: linear-gradient(180deg, var(--hc-gold-hi), var(--hc-gold));
}

    .hud-eye svg[b-dw101i8zfm] {
        width: 1.3rem;
        height: 1.3rem;
    }

.hud-band-lbl[b-dw101i8zfm] {
    flex: 1;
    min-width: 0;
}

    .hud-band-lbl b[b-dw101i8zfm] {
        display: block;
        font-size: 0.9rem;
    }

    .hud-band-lbl span[b-dw101i8zfm] {
        display: block;
        font-size: 0.68rem;
        color: var(--hc-muted);
    }

.hud-left[b-dw101i8zfm] {
    flex: none;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

    .hud-left b[b-dw101i8zfm] {
        display: block;
        font-size: 1rem;
        color: var(--hc-gold-text);
    }

    .hud-left span[b-dw101i8zfm] {
        font-size: 0.62rem;
        color: var(--hc-muted);
    }

.hud-meter[b-dw101i8zfm] {
    height: 5px;
    border-radius: 3px;
    background: rgba(255, 255, 255, 0.1);
    overflow: hidden;
    margin: -0.35rem 0.15rem 0.5rem;
}

    .hud-meter span[b-dw101i8zfm] {
        display: block;
        height: 100%;
        background: linear-gradient(90deg, var(--hc-gold), var(--hc-gold-hi));
    }

/* ---- 買う前のプレビュー(項目名だけ見せて値を伏せる) ---- */
.hud-card-title[b-dw101i8zfm] {
    margin: 0 0 0.55rem;
    font-size: 0.75rem;
    letter-spacing: 0.04em;
    color: var(--hc-gold-text);
    font-weight: 700;
}

.hud-preview[b-dw101i8zfm] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.3rem;
}

.hud-cell[b-dw101i8zfm] {
    background: rgba(0, 0, 0, 0.3);
    border: 1px dashed var(--hc-line);
    border-radius: var(--hc-radius-s);
    padding: 0.35rem 0.2rem;
    text-align: center;
}

    .hud-cell b[b-dw101i8zfm] {
        display: block;
        font-size: 0.85rem;
        color: #4d5663;
    }

    .hud-cell span[b-dw101i8zfm] {
        font-size: 0.55rem;
        color: #4d5663;
        line-height: 1.25;
    }

/* ---- プラン ---- */
.hud-plans[b-dw101i8zfm] {
    display: flex;
    gap: 0.4rem;
}

.hud-plan[b-dw101i8zfm] {
    flex: 1;
    min-width: 0;
    text-align: center;
    border-radius: var(--hc-radius-m);
    padding: 0.55rem 0.2rem 0.5rem;
    background: var(--hc-surface);
    border: 1px solid var(--hc-line-control);
    color: inherit;
    font: inherit;
    cursor: pointer;
}

    .hud-plan.on[b-dw101i8zfm] {
        border-color: var(--hc-gold);
        background: rgba(201, 164, 92, 0.1);
    }

    .hud-plan.off[b-dw101i8zfm] {
        opacity: 0.5;
        cursor: default;
    }

    .hud-plan .d[b-dw101i8zfm] {
        display: block;
        font-size: 1rem;
        font-weight: 700;
    }

        .hud-plan .d small[b-dw101i8zfm] {
            font-size: 0.62rem;
            font-weight: 600;
            color: var(--hc-muted);
        }

    .hud-plan .p[b-dw101i8zfm] {
        display: block;
        margin-top: 0.15rem;
        font-size: 0.8rem;
        font-weight: 700;
        font-variant-numeric: tabular-nums;
        color: var(--hc-gold-text);
    }

    .hud-plan .u[b-dw101i8zfm] {
        display: block;
        font-size: 0.55rem;
        color: var(--hc-muted);
        margin-top: 0.1rem;
    }

    .hud-plan .tag[b-dw101i8zfm] {
        display: inline-block;
        margin-top: 0.25rem;
        font-size: 0.55rem;
        font-weight: 700;
        border-radius: 99px;
        padding: 0 0.4rem;
        background: rgba(201, 164, 92, 0.18);
        color: var(--hc-gold-text);
        border: 1px solid rgba(201, 164, 92, 0.42);
    }

/* 明細(ダイヤ画面と同じ形) */
.gem-kv[b-dw101i8zfm] {
    display: flex;
    justify-content: space-between;
    font-size: 0.82rem;
    padding: 0.35rem 0;
}

    .gem-kv + .gem-kv[b-dw101i8zfm] {
        border-top: 1px solid var(--hc-line);
    }

    .gem-kv b[b-dw101i8zfm] {
        font-variant-numeric: tabular-nums;
    }

    .gem-kv.short[b-dw101i8zfm] {
        color: var(--hc-danger);
    }
/* /Pages/Lobby.razor.rz.scp.css */
/* ロビー画面(モック docs/mockups/lobby-pppoker.html の移植)。

   構成は「ヒーロー(クラブの顔) / ゲーム種別タブ / 絞り込み / 卓一覧」の4段で、
   上3段は固定高・一覧が残りを埋めて内部スクロールする。
   絞り込みの切り替え・卓の増減・読み込み中のいずれでも上3段の高さは動かない(テーブル画面と同じ原則)。
   卓サムネはテーブル画面と同じ意匠(金縁+黒レール+紫フェルト)の縮小版で、ロビーと卓の見た目を地続きにする。 */
.lobby-screen[b-ftv4h7qh10] {
    --ink: #edf1f5;
    --muted: #97a0ad;
    --gold: #c9a45c;
    --gold-hi: #ecd6a0;
    --gold-text: #f0d48a;
    --felt1: #b8447f;
    --felt2: #6d2450;
    --rail: #1a1b22;
    --neon: #2fe08a;
    --card: #191d25;
    --card-line: #262c36;
    --room1: #123038;
    --room2: #071319;
    /* アイコン(mask で描くので色は currentColor を継承する) */
    --m-person: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 8a3 3 0 100-6 3 3 0 000 6zm0 1.6c-3.1 0-5.6 1.9-5.6 4.2V15h11.2v-1.2c0-2.3-2.5-4.2-5.6-4.2z'/%3E%3C/svg%3E");
    --m-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M5.5 1.5h8v10h-2v-8h-6zM2.5 4.5h8v10h-8zm1.4 1.4v7.2h5.2V5.9z'/%3E%3C/svg%3E");
    --m-back: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.5 5.5L4 12l6.5 6.5'/%3E%3Cpath d='M4 12h15.5'/%3E%3C/svg%3E");
    --m-share: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.1' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='18' cy='5' r='2.9'/%3E%3Ccircle cx='6' cy='12' r='2.9'/%3E%3Ccircle cx='18' cy='19' r='2.9'/%3E%3Cpath d='M8.5 10.6l7-4.1'/%3E%3Cpath d='M8.5 13.4l7 4.1'/%3E%3C/svg%3E");
    --m-gear: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M19.43 12.98a7.8 7.8 0 000-1.96l2.11-1.65a.5.5 0 00.12-.64l-2-3.46a.5.5 0 00-.61-.22l-2.49 1a7.3 7.3 0 00-1.69-.98l-.38-2.65a.49.49 0 00-.49-.42h-4a.49.49 0 00-.49.42l-.38 2.65c-.61.25-1.17.58-1.69.98l-2.49-1a.5.5 0 00-.61.22l-2 3.46a.5.5 0 00.12.64l2.11 1.65a7.8 7.8 0 000 1.96l-2.11 1.65a.5.5 0 00-.12.64l2 3.46c.13.22.39.3.61.22l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65c.04.24.25.42.49.42h4c.24 0 .45-.18.49-.42l.38-2.65c.61-.25 1.17-.58 1.69-.98l2.49 1c.22.08.48 0 .61-.22l2-3.46a.5.5 0 00-.12-.64zM12 15.6A3.6 3.6 0 1115.6 12 3.6 3.6 0 0112 15.6z'/%3E%3C/svg%3E");
    position: relative;
    height: 100%;
    overflow: hidden;
    color: var(--ink);
    background: #0c0f15;
}

/* PC でもスマホ幅の縦カラムに収める(卓画面の .tbl-phone と同じ手口)。 */
.lobby-phone[b-ftv4h7qh10] {
    position: relative;
    height: 100%;
    width: 100%;
    max-width: 430px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

/* ==== アイコン ==== */
.ic-g[b-ftv4h7qh10] {
    display: block;
    background: currentColor;
    -webkit-mask-repeat: no-repeat;
    -webkit-mask-position: center;
    -webkit-mask-size: contain;
    mask-repeat: no-repeat;
    mask-position: center;
    mask-size: contain;
}

.ic-back[b-ftv4h7qh10] {
    width: 21px;
    height: 21px;
    -webkit-mask-image: var(--m-back);
    mask-image: var(--m-back);
}

.ic-share[b-ftv4h7qh10] {
    width: 21px;
    height: 21px;
    -webkit-mask-image: var(--m-share);
    mask-image: var(--m-share);
}

/* ヒーローの設定ギアは丸ボタン(34px)の 80% = 27.2px */
.ic-gear[b-ftv4h7qh10] {
    width: 27.2px;
    height: 27.2px;
    -webkit-mask-image: var(--m-gear);
    mask-image: var(--m-gear);
}

/* 文中に混ぜる小アイコン(人数・コピー) */
.ic-i[b-ftv4h7qh10] {
    display: inline-block;
    width: 12px;
    height: 12px;
    flex: none;
    background: currentColor;
    vertical-align: -1px;
    -webkit-mask-repeat: no-repeat;
    -webkit-mask-position: center;
    -webkit-mask-size: contain;
    mask-repeat: no-repeat;
    mask-position: center;
    mask-size: contain;
}

.ic-person[b-ftv4h7qh10] {
    -webkit-mask-image: var(--m-person);
    mask-image: var(--m-person);
}

.ic-copy[b-ftv4h7qh10] {
    -webkit-mask-image: var(--m-copy);
    mask-image: var(--m-copy);
}

/* ==== ヒーロー(クラブの顔): 高さ固定 200px ==== */
.lobby-hero[b-ftv4h7qh10] {
    position: relative;
    flex: none;
    height: 200px;
    overflow: hidden;
    background: linear-gradient(180deg, var(--room1) 0%, #0a1f26 55%, var(--room2) 100%);
}

/* ラウンジの作画(CSS のみ。画像アセットは持たない) */
.hero-ceil[b-ftv4h7qh10] {
    position: absolute;
    left: 50%;
    top: -78px;
    transform: translateX(-50%);
    width: 460px;
    height: 150px;
    border-radius: 50%;
    border: 2px solid rgba(140, 236, 236, 0.28);
    box-shadow: 0 0 26px rgba(90, 220, 220, 0.32);
}

.hero-ceil2[b-ftv4h7qh10] {
    position: absolute;
    left: 50%;
    top: -58px;
    transform: translateX(-50%);
    width: 330px;
    height: 108px;
    border-radius: 50%;
    border: 2px solid rgba(140, 236, 236, 0.18);
}

.hero-glow[b-ftv4h7qh10] {
    position: absolute;
    left: 50%;
    top: 46%;
    transform: translate(-50%, -50%);
    width: 250px;
    height: 96px;
    border-radius: 50%;
    background: radial-gradient(closest-side, rgba(86, 226, 226, 0.3), transparent 75%);
    filter: blur(3px);
}

.hero-table[b-ftv4h7qh10] {
    position: absolute;
    left: 50%;
    top: 52%;
    transform: translate(-50%, -50%);
    width: 190px;
    height: 62px;
    border-radius: 50%;
    background: radial-gradient(60% 60% at 50% 35%, #17505a, #0b2b31 80%);
    border: 3px solid #0a2026;
    box-shadow: 0 0 0 2px rgba(120, 220, 220, 0.18), 0 10px 24px rgba(0, 0, 0, 0.5);
}

/* 下端を背景色へ溶かして、卓一覧との境目を消す */
.hero-shade[b-ftv4h7qh10] {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0, 0, 0, 0.35) 0%, transparent 32%, rgba(4, 8, 10, 0.72) 78%, #0c0f15 100%);
}

/* ヒーロー上段: 戻る / 共有 / クラブ設定 */
.hero-top[b-ftv4h7qh10] {
    position: absolute;
    inset: calc(10px + env(safe-area-inset-top)) 12px auto 12px;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.hero-sp[b-ftv4h7qh10] {
    flex: 1;
}

.hero-ic[b-ftv4h7qh10] {
    flex: none;
    width: 34px;
    height: 34px;
    padding: 0;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(6, 20, 24, 0.55);
    color: var(--neon);
    border: 1px solid rgba(47, 224, 138, 0.35);
    filter: drop-shadow(0 0 5px rgba(47, 224, 138, 0.45));
    text-decoration: none;
    cursor: pointer;
}

/* 着席したままロビーへ来たときだけ出す「卓に戻る」(戻る=ダッシュボードの隣。T-1204) */
.hero-backtbl[b-ftv4h7qh10] {
    flex: none;
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    height: 34px;
    padding: 0 0.7rem;
    border-radius: 999px;
    background: rgba(6, 20, 24, 0.62);
    color: #9ff2c6;
    border: 1px solid rgba(47, 224, 138, 0.5);
    font-size: 0.74rem;
    font-weight: 800;
    white-space: nowrap;
    cursor: pointer;
}

    .hero-backtbl[b-ftv4h7qh10]::before {
        content: "";
        width: 0.4rem;
        height: 0.4rem;
        border-radius: 50%;
        background: var(--neon);
        box-shadow: 0 0 6px rgba(47, 224, 138, 0.9);
    }

/* クラブ表札(エンブレム+クラブ名+クラブID) */
.hero-plate[b-ftv4h7qh10] {
    position: absolute;
    left: 12px;
    bottom: 40px;
    display: flex;
    align-items: center;
    gap: 0.6rem;
    max-width: calc(100% - 24px);
}

.hero-emblem[b-ftv4h7qh10] {
    width: 62px;
    height: 62px;
    flex: none;
    border-radius: 0.9rem;
    object-fit: cover;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    font-weight: 900;
    color: #d7f7e8;
    background: linear-gradient(180deg, #123a3c, #071c20);
    border: 2px solid rgba(47, 224, 138, 0.75);
    box-shadow: 0 0 14px rgba(47, 224, 138, 0.35), inset 0 0 12px rgba(0, 0, 0, 0.6);
}

.hero-names[b-ftv4h7qh10] {
    min-width: 0;
}

.hero-cname[b-ftv4h7qh10] {
    font-size: 1.32rem;
    font-weight: 900;
    letter-spacing: 0.01em;
    line-height: 1.1;
    text-shadow: 0 2px 10px rgba(0, 0, 0, 0.8);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.hero-ccode[b-ftv4h7qh10] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    margin-top: 0.25rem;
    padding: 0;
    border: 0;
    background: none;
    font-size: 0.76rem;
    color: #cfe6df;
    cursor: pointer;
}

    .hero-ccode u[b-ftv4h7qh10] {
        text-decoration: none;
        border-bottom: 1px solid rgba(207, 230, 223, 0.45);
        letter-spacing: 0.04em;
    }

    .hero-ccode .ic-i[b-ftv4h7qh10] {
        color: #9fd8c4;
    }

/* 残高チップ(クラブ内残高) */
.hero-bal[b-ftv4h7qh10] {
    position: absolute;
    right: 12px;
    bottom: 12px;
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.25rem 0.7rem 0.25rem 0.25rem;
    border-radius: 99px;
    background: rgba(6, 16, 20, 0.72);
    border: 1px solid rgba(255, 244, 214, 0.3);
    font-size: 0.9rem;
    font-weight: 800;
    color: #ffeec2;
}

/* 残高がボタンになる場合(チップの要求を受け付けるクラブ。M19 / T-1904)。
   部品は作り直さず、右端に「＋」を足すだけにする —— 枠や文言を増やすと
   ヒーローの情報量が増えてクラブ名と競る。 */
button.hero-bal[b-ftv4h7qh10] {
    padding: 0.25rem 0.35rem 0.25rem 0.25rem;
    cursor: pointer;
    font-family: inherit;
}

.hero-coin[b-ftv4h7qh10] {
    width: 22px;
    height: 22px;
    flex: none;
    border-radius: 50%;
    background: linear-gradient(180deg, #2fe08a, #12885a);
    color: #06251a;
    font-size: 0.72rem;
    font-weight: 900;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* 金は既存の意匠で「操作できるもの」の色(ボタン・FAB・フォーカスリング)。
   緑のコインは残高そのものを指す色なので、そこには手を入れない。 */
.hero-bal-plus[b-ftv4h7qh10] {
    width: 20px;
    height: 20px;
    flex: none;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(180deg, var(--gold-hi), var(--gold));
    color: #23180a;
    font-size: 0.85rem;
    font-weight: 900;
    line-height: 1;
}

/* 要求中は「＋」を差し替える。要素が増えないので配置も高さも動かない。 */
.hero-bal-wait[b-ftv4h7qh10] {
    font-size: 0.72rem;
    font-weight: 800;
    color: var(--gold-text);
    white-space: nowrap;
}

.hero-bal.pending[b-ftv4h7qh10] {
    border-color: rgba(201, 164, 92, 0.7);
}

/* コピー/共有の一時メッセージ。絶対配置なので高さは動かない。 */
.lobby-toast[b-ftv4h7qh10] {
    position: absolute;
    left: 12px;
    bottom: 12px;
    max-width: calc(100% - 130px);
    padding: 0.25rem 0.7rem;
    border-radius: 99px;
    background: rgba(6, 16, 20, 0.85);
    border: 1px solid rgba(47, 224, 138, 0.45);
    color: #d7f7e8;
    font-size: 0.74rem;
    font-weight: 700;
}

/* ==== ゲーム種別タブ: 高さ固定 48px ==== */
.lobby-tabs[b-ftv4h7qh10] {
    flex: none;
    height: 48px;
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0 0.6rem;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: none;
    border-bottom: 1px solid #1d222b;
}

    .lobby-tabs[b-ftv4h7qh10]::-webkit-scrollbar {
        display: none;
    }

.lobby-tab[b-ftv4h7qh10] {
    flex: none;
    padding: 0.42rem 0.95rem;
    border-radius: 0.5rem;
    font-size: 0.86rem;
    font-weight: 700;
    color: #8b95a3;
    background: #171b23;
    border: 1px solid #232935;
    white-space: nowrap;
}

    /* 実装済みのゲーム種別 */
    .lobby-tab.on[b-ftv4h7qh10] {
        color: #052b1b;
        background: linear-gradient(180deg, #45e79b, #21b573);
        border-color: #59f0aa;
        box-shadow: 0 2px 10px rgba(47, 224, 138, 0.35);
    }

    /* 未実装。将来の拡張点として淡色で置くだけで、押せない。 */
    .lobby-tab.soon[b-ftv4h7qh10] {
        opacity: 0.45;
    }

/* ==== 絞り込みバー: 高さ固定 40px(並び替えは置かない) ==== */
.lobby-filters[b-ftv4h7qh10] {
    flex: none;
    height: 40px;
    display: flex;
    align-items: center;
    gap: 1.1rem;
    padding: 0 0.85rem;
}

.lobby-cb[b-ftv4h7qh10] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0;
    border: 0;
    background: none;
    font-size: 0.82rem;
    color: #b9c2cd;
    cursor: pointer;
}

.lobby-box[b-ftv4h7qh10] {
    width: 17px;
    height: 17px;
    flex: none;
    border-radius: 0.28rem;
    border: 2px solid #4d5765;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.72rem;
    font-weight: 900;
    line-height: 1;
}

.lobby-cb.on[b-ftv4h7qh10] {
    color: #eaf2f7;
}

    .lobby-cb.on .lobby-box[b-ftv4h7qh10] {
        background: var(--neon);
        border-color: var(--neon);
        color: #05301f;
    }

/* 参加中の卓数(絞り込みバーの右端)。上限の残りをここで常に見せる(T-1204) */
.lobby-seatcount[b-ftv4h7qh10] {
    margin-left: auto;
    font-size: 0.74rem;
    font-weight: 800;
    color: #9ff2c6;
    background: rgba(47, 224, 138, 0.12);
    border: 1px solid rgba(47, 224, 138, 0.35);
    border-radius: 999px;
    padding: 0.12rem 0.55rem;
    white-space: nowrap;
}

    .lobby-seatcount.full[b-ftv4h7qh10] {
        color: #ffd9a8;
        background: rgba(255, 180, 80, 0.12);
        border-color: rgba(255, 180, 80, 0.45);
    }

/* ==== 卓一覧: 残りを埋めて内部スクロール ==== */
.lobby-list[b-ftv4h7qh10] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 0.55rem 0.6rem calc(0.55rem + env(safe-area-inset-bottom));
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    scrollbar-width: thin;
    scrollbar-color: #2b313d transparent;
}

    /* 管理者は右下に FAB があるので、最後の行の ⚙ が隠れたままにならない逃げを作る。 */
    .lobby-list.has-fab[b-ftv4h7qh10] {
        padding-bottom: calc(84px + env(safe-area-inset-bottom));
    }

.lobby-row[b-ftv4h7qh10] {
    flex: none;
    display: flex;
    align-items: center;
    gap: 0.65rem;
    padding: 0.5rem 0.6rem;
    border-radius: 0.7rem;
    background: var(--card);
    border: 1px solid var(--card-line);
    cursor: pointer;
}

    /* 満席の卓は着席できないのでタップも受けない。 */
    .lobby-row.full[b-ftv4h7qh10] {
        opacity: 0.72;
        cursor: default;
    }

    /* 参加中の卓: 緑の縁+左のアクセント。タップしても新規着席はしない(その卓に戻るだけ。T-1204) */
    .lobby-row.joined[b-ftv4h7qh10] {
        border-color: rgba(47, 224, 138, 0.55);
        background: linear-gradient(90deg, rgba(47, 224, 138, 0.12), var(--card) 55%);
    }

    /* 参加中かつ自分の手番(T-1205)。トーストは1枚しか出せないので、
       2卓同時に手番でも「どの卓が待っているか」は一覧側で分かるようにする。 */
    .lobby-row.turn[b-ftv4h7qh10] {
        border-color: rgba(255, 215, 106, 0.7);
        background: linear-gradient(90deg, rgba(255, 215, 106, 0.14), var(--card) 55%);
    }

    /* 上限に達したときの未参加行: 満席行と同じ扱い(減光+タップ不可) */
    .lobby-row.locked[b-ftv4h7qh10] {
        opacity: 0.5;
    }

/* 卓サムネ(テーブル画面と同じ意匠の縮小版) */
.lobby-thumb[b-ftv4h7qh10] {
    position: relative;
    flex: none;
    width: 128px;
    height: 68px;
}

.lobby-felt[b-ftv4h7qh10] {
    width: 100%;
    height: 100%;
    border-radius: 34px;
    background: radial-gradient(70% 60% at 50% 32%, var(--felt1), var(--felt2) 80%);
    border: 5px solid var(--rail);
    box-shadow: 0 0 0 2px var(--gold), inset 0 0 0 2px rgba(236, 214, 160, 0.5), 0 4px 10px rgba(0, 0, 0, 0.55);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1px;
}

.lobby-blinds[b-ftv4h7qh10] {
    font-size: 0.72rem;
    font-weight: 800;
    color: #fff;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
    white-space: nowrap;
}

.lobby-gt[b-ftv4h7qh10] {
    font-size: 0.6rem;
    font-weight: 900;
    color: var(--gold-hi);
    letter-spacing: 0.08em;
}

.lobby-seatsbadge[b-ftv4h7qh10] {
    position: absolute;
    right: -3px;
    bottom: 1px;
    min-width: 26px;
    height: 19px;
    padding: 0 0.32rem;
    border-radius: 99px;
    background: linear-gradient(180deg, #2f9aa8, #1b6570);
    color: #eafcff;
    font-size: 0.6rem;
    font-weight: 900;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(190, 245, 255, 0.5);
}

.lobby-fullbadge[b-ftv4h7qh10] {
    position: absolute;
    left: 50%;
    top: -6px;
    transform: translateX(-50%);
    padding: 0.05rem 0.45rem;
    border-radius: 0.25rem;
    font-size: 0.56rem;
    font-weight: 900;
    letter-spacing: 0.06em;
    background: linear-gradient(180deg, #f4dd93, #c9a45c);
    color: #40300c;
    border: 1px solid rgba(255, 248, 220, 0.6);
    white-space: nowrap;
}

    /* 「参加中」バッジ: 満席バッジと同じ位置・同じ形で色だけ変える(1行に2つは出ない。T-1204) */
    .lobby-fullbadge.joined[b-ftv4h7qh10] {
        background: linear-gradient(180deg, #6ff3b2, #1eae70);
        color: #04301f;
        border-color: rgba(220, 255, 238, 0.75);
    }

    /* 「あなたの手番」バッジ(T-1205)。参加中バッジの位置を金色で置き換える。 */
    .lobby-fullbadge.turn[b-ftv4h7qh10] {
        background: linear-gradient(180deg, #ffe9a8, #e0a52a);
        color: #3d2a00;
        border-color: rgba(255, 248, 220, 0.85);
    }

/* 卓の情報(右カラム) */
.lobby-tinfo[b-ftv4h7qh10] {
    min-width: 0;
    flex: 1;
}

.lobby-tname[b-ftv4h7qh10] {
    font-size: 0.98rem;
    font-weight: 800;
    color: #f2f6fa;
    line-height: 1.25;
    display: flex;
    align-items: center;
    gap: 0.35rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.lobby-dot[b-ftv4h7qh10] {
    width: 7px;
    height: 7px;
    flex: none;
    border-radius: 50%;
}

    /* ハンド進行中 / 待機中 */
    .lobby-dot.live[b-ftv4h7qh10] {
        background: #35d07f;
        box-shadow: 0 0 7px rgba(53, 208, 127, 0.9);
    }

    .lobby-dot.wait[b-ftv4h7qh10] {
        background: #7d8794;
    }

.lobby-meta[b-ftv4h7qh10] {
    display: inline-flex;
    align-items: center;
    gap: 0.28rem;
    margin-top: 0.3rem;
    font-size: 0.8rem;
    color: var(--muted);
}

.lobby-buy[b-ftv4h7qh10] {
    margin-top: 0.18rem;
    font-size: 0.68rem;
    color: #6f7885;
}

/* 参加中の行はバイイン範囲の代わりに自分のスタックを出す(もう買う場面ではない。T-1204) */
.lobby-mystack[b-ftv4h7qh10] {
    margin-top: 0.18rem;
    font-size: 0.68rem;
    font-weight: 700;
    color: var(--gold-text);
}

/* 手番が来ている行(T-1205)。スタックの行を置き換えるので、行の高さは変わらない。 */
.lobby-myturn[b-ftv4h7qh10] {
    margin-top: 0.18rem;
    font-size: 0.68rem;
    font-weight: 800;
    color: #ffdf9c;
}

.lobby-rowgear[b-ftv4h7qh10] {
    flex: none;
    width: 30px;
    height: 30px;
    padding: 0;
    border-radius: 0.5rem;
    background: #232935;
    color: #b7c0cc;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid #2f3745;
    cursor: pointer;
}

    /* 行の ⚙ は卓設定。ヒーローのギアより小さく置く。 */
    .lobby-rowgear .ic-gear[b-ftv4h7qh10] {
        width: 19px;
        height: 19px;
    }

/* 卓なし / 絞り込み 0 件 */
.lobby-empty[b-ftv4h7qh10] {
    margin: auto;
    text-align: center;
    color: #6f7885;
    font-size: 0.84rem;
    line-height: 1.9;
    padding-bottom: 4rem;
}

.lobby-empty-mark[b-ftv4h7qh10] {
    font-size: 2rem;
    opacity: 0.5;
}

/* 作成 FAB(管理者のみ) */
.lobby-fab[b-ftv4h7qh10] {
    position: absolute;
    right: 14px;
    bottom: calc(18px + env(safe-area-inset-bottom));
    width: 56px;
    height: 56px;
    padding: 0;
    border-radius: 50%;
    background: linear-gradient(180deg, #f4dd93, #c9a45c);
    color: #3a2a06;
    font-size: 1.7rem;
    font-weight: 900;
    line-height: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 0;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.6), inset 0 0 0 2px rgba(255, 250, 230, 0.6);
    cursor: pointer;
}

/* 読み込み失敗(非メンバーなど) */
.lobby-fatal[b-ftv4h7qh10] {
    margin: auto;
    padding: 1.5rem;
    text-align: center;
    color: #cdd4de;
    line-height: 1.9;
}

    .lobby-fatal a[b-ftv4h7qh10] {
        color: var(--neon);
    }

/* レーキバックの入口(v2.6 / T-1305): アイコンフォントを持たないので記号を置く。 */
.hero-rake[b-ftv4h7qh10] {
    font-weight: 800;
    font-size: 0.9rem;
    line-height: 1;
}

/* 卓行のボット内訳(v2.7 / T-1405)。着席数の隣に小さく添える。 */
.lobby-bot[b-ftv4h7qh10] {
    margin-left: 0.35rem;
    padding: 0 0.3rem;
    border-radius: 0.25rem;
    background: rgba(15, 118, 110, 0.22);
    color: #7fd8cf;
    font-size: 0.62rem;
    font-weight: 800;
    letter-spacing: 0.03em;
}
/* /Pages/MyRakeback.razor.rz.scp.css */
/* 自分のレーキバック(docs/mockups/rake.html 08 / T-1305)。 */

.rake-mine[b-0arhtiozh3] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.rake-mine-head[b-0arhtiozh3] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.4rem;
}

.rake-label[b-0arhtiozh3] {
    font-size: 0.75rem;
    color: var(--hc-muted);
}

.rake-amount[b-0arhtiozh3] {
    color: var(--hc-gold-text);
    font-size: 2rem;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    line-height: 1.1;
}

/* 次の段までの進捗バー(変動のみ)。 */
.rake-bar[b-0arhtiozh3] {
    height: 6px;
    border-radius: 3px;
    background: rgba(255, 255, 255, 0.08);
    overflow: hidden;
}

    .rake-bar span[b-0arhtiozh3] {
        display: block;
        height: 100%;
        background: linear-gradient(90deg, var(--hc-gold), var(--hc-gold-hi));
    }

.rake-stats[b-0arhtiozh3] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.3rem;
}

    .rake-stats > div[b-0arhtiozh3] {
        display: flex;
        align-items: baseline;
        justify-content: space-between;
        gap: 0.4rem;
    }

    .rake-stats b[b-0arhtiozh3] {
        font-variant-numeric: tabular-nums;
    }
/* /Pages/TableView.razor.rz.scp.css */
/* テーブル画面(モック docs/mockups/table-pppoker.html の移植)。

   構成は「上部クローム(☰+卓名ピル)/ 卓エリア / 下部バー」の3段で、上下は固定高・卓が残りを埋める。
   卓・席・バッジ・ポットの座標は全て % 指定なので、状態(待機・他人の手番・自分の手番・
   レイズポップアップ・ショーダウン)が変わっても位置は 1px も動かない。
   席座標は SeatLayout が返す「アバター円の中心」で、空席円と着席アバターの位置が一致する。 */
.table-screen[b-jz7mc0u6l9] {
    --felt1: #93336a;
    --felt2: #641f47;
    --rail: #1a1b22;
    --gold: #c9a45c;
    --gold-hi: #ecd6a0;
    --plate: rgba(8, 10, 8, 0.78);
    --ink: #edf1f5;
    --muted: #97a0ad;
    --gold-text: #f0d48a;
    --green1: #2e7d54;
    --green2: #1c5038;
    position: relative;
    height: 100%;
    overflow: hidden;
    color: var(--ink);
    background:
        radial-gradient(120% 60% at 50% -10%, #23305c 0%, transparent 55%),
        radial-gradient(90% 50% at 50% 115%, #1c1430 0%, transparent 60%),
        linear-gradient(180deg, #141a2e, #0b0e1a 60%);
}

/* PC でも卓はスマホ幅の縦カラムに収める(卓の形が横に伸びないようにする)。 */
.tbl-phone[b-jz7mc0u6l9] {
    position: relative;
    height: 100%;
    width: 100%;
    max-width: 430px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

/* ==== 上部クローム: ☰ / 卓タブ列 / ＋(操作はメニューシートへ集約)
   高さ 52px は卓が1〜3のどれでも動かさない(docs/mockups/multi-table.html §4)。
   ☰ と ＋ は固定幅で、残りをタブ列が分け合う。 ==== */
.tbl-chrome[b-jz7mc0u6l9] {
    flex: none;
    height: 52px;
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0 0.8rem;
}

.tbl-burger[b-jz7mc0u6l9] {
    flex: none;
    width: 2.2rem;
    height: 2.2rem;
    border: none;
    border-radius: 0.6rem;
    background: rgba(255, 255, 255, 0.06);
    color: #cfd6df;
    font-size: 1rem;
    cursor: pointer;
}

/* 卓タブ列: 残り幅を分け合う。3卓でも横スクロールを作らない。 */
.tbl-tabs[b-jz7mc0u6l9] {
    flex: 1;
    min-width: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.3rem;
}

.tbl-tab[b-jz7mc0u6l9] {
    min-width: 0;
    /* ドット(::before)は卓名の左。名前が伸びても押し出されないよう横並びにしておく。 */
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.28rem;
    padding: 0.35rem 0.7rem;
    border-radius: 999px;
    /* ボタンは既定で font-family を継承しないので、卓名だけ端末既定の書体にならないよう明示する。 */
    font-family: inherit;
    font-size: 0.78rem;
    font-weight: 700;
    text-align: center;
    color: #98a3b1;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.12);
    cursor: pointer;
}

    /* 表示中の卓 = 現行の卓名ピルと同じ緑。1卓だけのときも見た目は現行のまま。 */
    .tbl-tab.on[b-jz7mc0u6l9] {
        color: #dff3e6;
        background: linear-gradient(180deg, var(--green1), var(--green2));
        border-color: rgba(220, 255, 230, 0.35);
        box-shadow: 0 2px 6px rgba(0, 0, 0, 0.45);
        cursor: default;
    }

    /* 裏の卓で自分の手番(T-1205)。トーストは数秒で消えるうえ見落とすので、
       「どの卓が自分を待っているか」はタブに残す。 */
    .tbl-tab.turn[b-jz7mc0u6l9] {
        color: #ffe9b0;
        background: rgba(255, 215, 106, 0.14);
        border-color: rgba(255, 215, 106, 0.75);
    }

        .tbl-tab.turn[b-jz7mc0u6l9]::before {
            content: "";
            flex: none;
            width: 0.42rem;
            height: 0.42rem;
            border-radius: 50%;
            background: #ffd76a;
            box-shadow: 0 0 6px rgba(255, 215, 106, 0.9);
        }

    /* 手番を時間切れにして離席になった卓(T-1205)。席もスタックも残っているのでタブは畳まず、
       破線+中空ドットに変えるだけ(通知は出さない)。 */
    .tbl-tab.away[b-jz7mc0u6l9] {
        color: #8a93a0;
        background: rgba(255, 255, 255, 0.03);
        border-style: dashed;
        border-color: rgba(255, 255, 255, 0.22);
    }

        .tbl-tab.away[b-jz7mc0u6l9]::before {
            content: "";
            flex: none;
            width: 0.42rem;
            height: 0.42rem;
            border-radius: 50%;
            background: transparent;
            border: 1px solid #8a93a0;
        }

    .tbl-tab .nm[b-jz7mc0u6l9] {
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

/* 卓数ごとの上限幅。3卓でも 262.4px + gap 9.6px = 272px ≦ 割当 277.2px に収まる。 */
.tbl-tabs.n1 .tbl-tab[b-jz7mc0u6l9] {
    max-width: 13rem;
}

.tbl-tabs.n2 .tbl-tab[b-jz7mc0u6l9] {
    max-width: 8.4rem;
}

.tbl-tabs.n3 .tbl-tab[b-jz7mc0u6l9] {
    max-width: 4.9rem;
    padding: 0.35rem 0.45rem;
    font-size: 0.72rem;
}

    .tbl-tabs.n3 .tbl-tab.on[b-jz7mc0u6l9] {
        max-width: 6.6rem;
    }

/* ＋: 着席したままロビーへ。上限に達したら減光する(押せることは変えない)。 */
.tbl-plus[b-jz7mc0u6l9] {
    flex: none;
    width: 2.2rem;
    height: 2.2rem;
    border-radius: 0.6rem;
    font-size: 1.1rem;
    font-weight: 900;
    background: rgba(47, 224, 138, 0.14);
    color: #7ff0b6;
    border: 1px solid rgba(47, 224, 138, 0.45);
    cursor: pointer;
}

    .tbl-plus.off[b-jz7mc0u6l9] {
        background: rgba(255, 255, 255, 0.04);
        color: #5c6674;
        border-color: rgba(255, 255, 255, 0.1);
    }

.tbl-status[b-jz7mc0u6l9] {
    position: absolute;
    left: 50%;
    top: 52px;
    transform: translateX(-50%);
    z-index: 15;
    padding: 0.15rem 0.7rem;
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.72);
    font-size: 0.72rem;
    color: #ffd76a;
    white-space: nowrap;
}

/* ==== 卓エリア ==== */
.tbl-area[b-jz7mc0u6l9] {
    position: relative;
    flex: 1 1 auto;
    min-height: 0;
}

/* 縦長カプセル(金縁+黒レール+紫フェルト)。寸法・角丸を % にしてあるので、
   卓エリアの実寸が変わっても席の % 座標がレール中心線から外れない。 */
.tbl-oval[b-jz7mc0u6l9] {
    position: absolute;
    left: 50%;
    top: 45.81%;
    transform: translate(-50%, -50%);
    width: 75.65%;
    height: 85.03%;
    border-radius: 50% / 25.7%;
    background: radial-gradient(70% 45% at 50% 32%, var(--felt1) 0%, var(--felt2) 78%);
    border: 11px solid var(--rail);
    box-shadow:
        0 0 0 4px var(--gold),
        0 0 0 5px #7a5c26,
        inset 0 0 0 2px rgba(236, 214, 160, 0.55),
        0 18px 50px rgba(0, 0, 0, 0.6);
}

.tbl-pot[b-jz7mc0u6l9] {
    position: absolute;
    left: 50%;
    top: 23%;
    transform: translateX(-50%);
    font-size: 0.85rem;
    color: #f4e3b1;
    white-space: nowrap;
}

    .tbl-pot b[b-jz7mc0u6l9] {
        font-size: 0.95rem;
        font-variant-numeric: tabular-nums;
    }

    /* レーキ見込み(v2.6): ポットの隣に控えめに添える。 */
    .tbl-pot .tbl-rake[b-jz7mc0u6l9] {
        margin-left: 0.4rem;
        font-size: 0.68rem;
        color: rgba(244, 227, 177, 0.62);
    }

.tbl-board[b-jz7mc0u6l9] {
    position: absolute;
    left: 50%;
    top: 28.2%;
    transform: translateX(-50%);
    display: flex;
    gap: 4px;
}

.tbl-info[b-jz7mc0u6l9] {
    position: absolute;
    left: 50%;
    top: 44.9%;
    transform: translateX(-50%);
    text-align: center;
    color: rgba(255, 255, 255, 0.38);
    font-size: 0.72rem;
    white-space: nowrap;
}

    .tbl-info .tbl-id[b-jz7mc0u6l9] {
        font-size: 0.6rem;
        color: rgba(255, 255, 255, 0.22);
    }

    /* 卓のレーキ条件(v2.6)。 */
    .tbl-info .tbl-raketerms[b-jz7mc0u6l9] {
        font-size: 0.66rem;
        color: rgba(255, 255, 255, 0.32);
    }

    .tbl-info .tbl-wm[b-jz7mc0u6l9] {
        margin-top: 0.3rem;
        font-size: 1.5rem;
        font-weight: 900;
        letter-spacing: 0.2em;
        color: rgba(255, 255, 255, 0.10);
    }

/* ==== 席: アバター円 + 名前/スタックのプレート ====
   座標はアバター円の中心。箱の高さは名前・スタックの有無で変わるため、
   translate の Y は -50% ではなくアバター半径分の固定値にする。 */
.tbl-seat[b-jz7mc0u6l9] {
    position: absolute;
    transform: translate(-50%, -24.3px);
    width: 96px;
    text-align: center;
}

/* アバターはプロフィールを開くボタン(見た目は円のまま)。 */
.tbl-ava[b-jz7mc0u6l9] {
    position: relative;
    width: 48.6px;
    height: 48.6px;
    margin: 0 auto;
    padding: 0;
    border-radius: 50%;
    background: linear-gradient(135deg, #33415e, #1f2740);
    border: 2px solid rgba(255, 255, 255, 0.25);
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: inherit;
    font-size: 1.215rem;
    font-weight: 800;
    color: #dfe7f2;
    overflow: hidden;
    cursor: pointer;
}

/* HUD 使用中の印(M17 / T-1706)。アバター円の右下、リムに半分掛ける。
   金は「持っている権利」の色 —— ダイヤ(購入に使う資産)の水色とは役割で分けている。
   小さい寸法で明るい地に濃い瞳を置くと眼球に見えるので、暗い地に線画を置く。 */
.tbl-eye[b-jz7mc0u6l9] {
    position: absolute;
    left: 56.5px;
    top: 32.8px;
    width: 17px;
    height: 17px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #0b1116;
    border: 1px solid #c9a45c;
    color: #ecd6a0;
    pointer-events: none;
}

    .tbl-eye svg[b-jz7mc0u6l9] {
        width: 11px;
        height: 11px;
    }

    .tbl-ava img[b-jz7mc0u6l9] {
        width: 100%;
        height: 100%;
        object-fit: cover;
    }

.tbl-seat.acting .tbl-ava[b-jz7mc0u6l9] {
    border-color: #ffd76a;
    box-shadow: 0 0 18px rgba(255, 215, 106, 0.6);
}

/* 手番の残り時間はアバターの周回リングで示す(下部バーにタイマー表示を持たない)。 */
.tbl-seat.acting .tbl-ava[b-jz7mc0u6l9]::after {
    content: "";
    position: absolute;
    inset: -5px;
    border-radius: 50%;
    background: conic-gradient(#ffd76a 0 calc(var(--turn, 0) * 1%), rgba(255, 255, 255, 0.16) 0);
    -webkit-mask: radial-gradient(circle, transparent 0 calc(50% - 3px), #000 calc(50% - 3px));
    mask: radial-gradient(circle, transparent 0 calc(50% - 3px), #000 calc(50% - 3px));
}

.tbl-seat.folded[b-jz7mc0u6l9] {
    opacity: 0.45;
}

.tbl-seat.sitout .tbl-ava[b-jz7mc0u6l9] {
    filter: grayscale(0.8);
}

/* 勝利演出(T-601): 勝者席のパルス */
.tbl-seat.winner .tbl-ava[b-jz7mc0u6l9] {
    animation: tbl-winner-b-jz7mc0u6l9 0.9s ease-in-out 3;
}

@keyframes tbl-winner-b-jz7mc0u6l9 {
    0%, 100% {
        box-shadow: 0 0 0 rgba(255, 213, 79, 0);
    }

    50% {
        box-shadow: 0 0 20px rgba(255, 213, 79, 0.95);
    }
}

/* 裏向きのホールカード(アバターの右肩)。
   アバター自身は円形にクリップされるため、カード類は席ボックス(96px幅)基準で置く。 */
.tbl-backs[b-jz7mc0u6l9] {
    position: absolute;
    top: -6px;
    right: 9.7px;
    display: flex;
    z-index: 2;
}

    .tbl-backs i[b-jz7mc0u6l9] {
        width: 17px;
        height: 24px;
        border-radius: 3px;
        border: 1px solid #fff;
        background: linear-gradient(135deg, #5a89d6, #2f56a0);
        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
    }

        .tbl-backs i + i[b-jz7mc0u6l9] {
            margin-left: -9px;
            transform: rotate(9deg);
        }

/* ショーダウンで開示された相手のホールカード */
.tbl-shown[b-jz7mc0u6l9] {
    position: absolute;
    top: -8px;
    right: -6.3px;
    display: flex;
    gap: 1px;
    z-index: 2;
}

/* カードの意匠は PlayingCard 側に持たせ、ここでは寸法だけを渡す。 */
.tbl-shown[b-jz7mc0u6l9]  .playing-card {
    --pc-w: 24px;
    --pc-h: 33px;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);
}

/* 名前+スタックは1枚のプレートに一体化する(枠・余白が1組で済む) */
.tbl-plate[b-jz7mc0u6l9] {
    margin: 0.25rem auto 0;
    padding: 0.12rem 0.45rem 0.16rem;
    border-radius: 0.5rem;
    background: var(--plate);
    border: 1px solid rgba(210, 230, 200, 0.28);
    font-size: 0.72rem;
    font-weight: 700;
    line-height: 1.2;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 96px;
}

.tbl-stack[b-jz7mc0u6l9] {
    display: block;
    color: var(--gold-text);
    font-size: 0.608rem;
    font-weight: 800;
    line-height: 1.25;
    font-variant-numeric: tabular-nums;
}

/* 直近アクション(チェック/コール/ベット/レイズ/オールイン/離席中) */
.tbl-act[b-jz7mc0u6l9] {
    display: block;
    font-size: 0.6rem;
    font-weight: 700;
    line-height: 1.25;
    color: #cfe6ff;
}

/* HUD(相手席のみ・自席には出さない)。項目名は出さずセル位置で読む 4列×2段:
   上段 VPIP / PFR / Steal / Check-raise、下段 3-bet / Fold to 3-bet / C-bet / Fold to C-bet。
   機会が閾値未満の項目はサーバーが null を返し、「-」で表示される。 */
.tbl-hud[b-jz7mc0u6l9] {
    margin: 1px auto 0;
    width: 96px;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1px;
    /* 罫線は白の 85%(#d9d9d9)。gap の隙間からこの地の色を透かして出す(セルは黒を敷く)。 */
    background: #d9d9d9;
    border: 1px solid #d9d9d9;
    border-radius: 0.3rem;
    overflow: hidden;
    font-size: 0.55rem;
    font-weight: 700;
    line-height: 1.2;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.02em;
}

    .tbl-hud span[b-jz7mc0u6l9] {
        background: rgba(8, 10, 8, 0.92);
        color: #d9d9d9;
    }

/* 空席円はアバター円と同径。中心が席座標に一致する。 */
.tbl-empty[b-jz7mc0u6l9] {
    position: absolute;
    transform: translate(-50%, -50%);
    width: 48.6px;
    height: 48.6px;
    padding: 0;
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.5);
    border: 1.5px dashed rgba(255, 255, 255, 0.4);
    color: #cfd6df;
    font-size: 0.62rem;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}

    .tbl-empty:disabled[b-jz7mc0u6l9] {
        cursor: default;
        opacity: 0.75;
    }

/* 現ストリートの投入額バッジ(席より卓中心寄り) */
.tbl-bet[b-jz7mc0u6l9] {
    position: absolute;
    transform: translate(-50%, -50%);
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.08rem 0.5rem 0.08rem 0.28rem;
    background: rgba(0, 0, 0, 0.66);
    border: 1px solid rgba(255, 201, 77, 0.5);
    border-radius: 999px;
    font-size: 0.74rem;
    font-weight: 700;
    color: #ffe082;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    pointer-events: none;
    z-index: 5;
}

    .tbl-bet[b-jz7mc0u6l9]::before {
        content: "";
        width: 0.72rem;
        height: 0.72rem;
        border-radius: 50%;
        background: radial-gradient(circle at 35% 35%, #ff8f8f, #b12626 70%);
        border: 2px dashed rgba(255, 255, 255, 0.8);
        box-sizing: border-box;
    }

/* D ボタンはアバターの肩(卓中心側)に付ける。左右どちらでも名前プレートには重ならない。 */
.tbl-dbtn[b-jz7mc0u6l9] {
    position: absolute;
    left: 14px;
    top: 24.3px;
    transform: translate(-50%, -50%);
    width: 1.15rem;
    height: 1.15rem;
    border-radius: 50%;
    background: #f5f0dc;
    color: #6b5a1e;
    font-size: 0.68rem;
    font-weight: 900;
    line-height: 1.15rem;
    text-align: center;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.6);
    z-index: 5;
}

    .tbl-dbtn.right[b-jz7mc0u6l9] {
        left: 82px;
    }

/* ==== 自席: 大きめアバター + 表向きの大カード ==== */
.tbl-seat.me[b-jz7mc0u6l9] {
    transform: translate(-50%, -27.9px);
}

    .tbl-seat.me .tbl-ava[b-jz7mc0u6l9] {
        width: 55.8px;
        height: 55.8px;
    }

    /* 自席はアバターが大きいぶん D も外側へ逃がす。 */
    .tbl-seat.me .tbl-dbtn[b-jz7mc0u6l9] {
        left: 9px;
        top: 27.9px;
    }

        .tbl-seat.me .tbl-dbtn.right[b-jz7mc0u6l9] {
            left: 87px;
        }

/* 自席のホールカードは 46×62 の 90%。卓中心側への張り出しも同率で詰める。 */
.tbl-mycards[b-jz7mc0u6l9] {
    position: absolute;
    top: -30.6px;
    right: -34.1px;
    display: flex;
    z-index: 2;
}

.tbl-mycards[b-jz7mc0u6l9]  .playing-card {
    --pc-w: 41.4px;
    --pc-h: 55.8px;
    box-shadow: 0 3px 8px rgba(0, 0, 0, 0.55);
}

    .tbl-mycards[b-jz7mc0u6l9]  .playing-card + .playing-card {
        margin-left: calc(var(--pc-w) * -0.3);
        transform: rotate(10deg) translateY(4px);
    }

.tbl-board[b-jz7mc0u6l9]  .playing-card {
    --pc-w: 34px;
    --pc-h: 46px;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);
}

/* ハンド結果・通知は卓へのオーバーレイ(レイアウト高さを変えない) */
/* ボード(28.2%)と卓情報(44.9%)の間に置き、どちらにも重ねない。 */
.tbl-result[b-jz7mc0u6l9] {
    position: absolute;
    left: 50%;
    top: 36.5%;
    transform: translateX(-50%);
    z-index: 8;
    max-width: 78%;
    padding: 0.3rem 0.7rem;
    border-radius: 0.6rem;
    background: rgba(8, 10, 8, 0.86);
    border: 1px solid rgba(201, 164, 92, 0.4);
    font-size: 0.72rem;
    line-height: 1.45;
    text-align: center;
}

/* ポット額はグロス表示なので、徴収されたレーキを1行で示す(v2.6)。 */
.tbl-rakeline[b-jz7mc0u6l9] {
    color: rgba(244, 227, 177, 0.72);
    font-size: 0.68rem;
}

.tbl-deltas[b-jz7mc0u6l9] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.1rem 0.6rem;
    margin-top: 0.15rem;
    font-size: 0.68rem;
}

    .tbl-deltas span[b-jz7mc0u6l9] {
        white-space: nowrap;
    }

.tbl-win[b-jz7mc0u6l9] {
    color: #a5d6a7;
}

.tbl-lose[b-jz7mc0u6l9] {
    color: #ef9a9a;
}

.tbl-notices[b-jz7mc0u6l9] {
    position: absolute;
    left: 50%;
    top: 8%;
    transform: translateX(-50%);
    z-index: 18;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.25rem;
    max-width: 92%;
    pointer-events: none;
}

.tbl-note[b-jz7mc0u6l9] {
    padding: 0.2rem 0.7rem;
    border-radius: 0.4rem;
    background: rgba(0, 0, 0, 0.8);
    font-size: 0.76rem;
    max-width: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

    .tbl-note.info[b-jz7mc0u6l9] {
        color: #ffe082;
    }

    .tbl-note.error[b-jz7mc0u6l9] {
        color: #ef9a9a;
    }

/* ==== 下部バー: 3ボタン1段のみ。画面最下部に固定高で置く ==== */
.tbl-bottom[b-jz7mc0u6l9] {
    flex: none;
    height: calc(60px + env(safe-area-inset-bottom));
    padding: 0 0.7rem calc(0.6rem + env(safe-area-inset-bottom));
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
}

.tbl-actrow[b-jz7mc0u6l9] {
    display: grid;
    grid-template-columns: 1fr 1fr 1.2fr;
    gap: 0.5rem;
}

    /* ベット・レイズができない手番(オールイン直面など)は2ボタン */
    .tbl-actrow.cols2[b-jz7mc0u6l9] {
        grid-template-columns: 1fr 1fr;
    }

.tbl-btn[b-jz7mc0u6l9] {
    border: none;
    border-radius: 999px;
    text-align: center;
    font-weight: 800;
    font-size: 0.9rem;
    padding: 0.7rem 0.2rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    cursor: pointer;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 2px 6px rgba(0, 0, 0, 0.4);
}

    .tbl-btn:disabled[b-jz7mc0u6l9] {
        opacity: 0.45;
        cursor: default;
    }

.tbl-fold[b-jz7mc0u6l9] {
    background: linear-gradient(180deg, #8e3038, #5d1d24);
    color: #ffc9cd;
    border: 1px solid rgba(255, 170, 170, 0.4);
}

.tbl-call[b-jz7mc0u6l9] {
    background: linear-gradient(180deg, #37995f, #1f5e3e);
    color: #eafff1;
    border: 1px solid rgba(190, 240, 205, 0.45);
}

.tbl-raise[b-jz7mc0u6l9] {
    background: linear-gradient(180deg, #eec95c, #c99a2e);
    color: #4a3600;
    border: 1px solid rgba(255, 240, 200, 0.6);
}

.tbl-ghost[b-jz7mc0u6l9] {
    background: #212836;
    color: #b9c4d0;
    border: 1px solid #3a4454;
}

.tbl-span2[b-jz7mc0u6l9] {
    grid-column: 1 / 3;
}

/* 着席前のバイインバー(1行に収めて下部バーの高さに合わせる) */
.tbl-buyin[b-jz7mc0u6l9] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    background: rgba(16, 20, 27, 0.92);
    border: 1px solid rgba(201, 164, 92, 0.25);
    border-radius: 999px;
    padding: 0.4rem 0.9rem;
    font-size: 0.76rem;
    color: #cfd8e2;
    white-space: nowrap;
    overflow: hidden;
}

    .tbl-buyin input[b-jz7mc0u6l9] {
        flex: none;
        width: 4.6rem;
        background: #212836;
        border: 1px solid #3a4454;
        border-radius: 0.5rem;
        color: var(--gold-text);
        font-weight: 700;
        padding: 0.2rem 0.4rem;
        font-size: 0.76rem;
        text-align: right;
        font-variant-numeric: tabular-nums;
        -moz-appearance: textfield;
        appearance: textfield;
    }

        /* スピナーは幅を食うだけなので消す(金額はプリセット的に入力する) */
        .tbl-buyin input[b-jz7mc0u6l9]::-webkit-outer-spin-button,
        .tbl-buyin input[b-jz7mc0u6l9]::-webkit-inner-spin-button {
            -webkit-appearance: none;
            margin: 0;
        }

/* 待機中の案内(下部バーの高さは変えない) */
.tbl-wait[b-jz7mc0u6l9] {
    text-align: center;
    font-size: 0.78rem;
    color: var(--muted);
    padding: 0.7rem 0;
}

/* プリアクション予約のトグル。手番のボタンと同じグリッド・同じ高さなので、
   手番が回ってきてもボタン列の位置・大きさが動かない。 */
.tbl-pre[b-jz7mc0u6l9] {
    background: rgba(255, 255, 255, 0.05);
    color: var(--muted);
    border: 1px solid rgba(255, 255, 255, 0.16);
    font-size: 0.74rem;
    font-weight: 700;
    box-shadow: none;
}

    .tbl-pre.on[b-jz7mc0u6l9] {
        background: linear-gradient(180deg, #2f3b4d, #202836);
        color: var(--gold-text);
        border-color: rgba(201, 164, 92, 0.65);
        box-shadow: inset 0 0 0 1px rgba(201, 164, 92, 0.25);
    }

/* ==== レイズ額ポップアップ(アクションボタンに重なる) ====
   左右・下端の余白は下部バーと同じなので、確定ボタンは元のレイズボタンと同じ位置・大きさに重なる。 */
.tbl-raisepop[b-jz7mc0u6l9] {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 25;
    padding: 0.6rem 0.7rem calc(0.6rem + env(safe-area-inset-bottom));
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
    background: linear-gradient(180deg, rgba(12, 15, 22, 0.86), rgba(12, 15, 22, 0.97) 35%);
    border-top: 1px solid rgba(201, 164, 92, 0.3);
    border-radius: 1.1rem 1.1rem 0 0;
    box-shadow: 0 -14px 34px rgba(0, 0, 0, 0.55);
}

.tbl-presets[b-jz7mc0u6l9] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.4rem;
}

.tbl-preset[b-jz7mc0u6l9] {
    background: #212836;
    color: #b9c4d0;
    border: none;
    border-radius: 0.5rem;
    text-align: center;
    font-size: 0.72rem;
    padding: 0.4rem 0;
    cursor: pointer;
}

    .tbl-preset.on[b-jz7mc0u6l9] {
        background: #33301f;
        color: #ffd76a;
        outline: 1px solid rgba(255, 201, 77, 0.55);
        outline-offset: -1px;
    }

.tbl-amtwrap[b-jz7mc0u6l9] {
    position: relative;
}

.tbl-amt[b-jz7mc0u6l9] {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    background: #212836;
    border: 1px solid #3a4454;
    border-radius: 0.6rem;
    padding: 0.42rem 0.6rem;
    font-size: 0.85rem;
    font-weight: 800;
    color: var(--ink);
    font-variant-numeric: tabular-nums;
    cursor: pointer;
}

    .tbl-amt .lbl[b-jz7mc0u6l9] {
        font-size: 0.72rem;
        font-weight: 600;
        color: var(--muted);
    }

    .tbl-amt .ic[b-jz7mc0u6l9] {
        font-size: 0.7rem;
        font-weight: 600;
        color: var(--gold-text);
    }

    .tbl-amt.on[b-jz7mc0u6l9] {
        border-color: rgba(255, 201, 77, 0.7);
        box-shadow: 0 0 0 2px rgba(255, 201, 77, 0.18);
    }

/* スライダーは常設せず、額表示をタップしたときだけ真上に吹き出しで出す。 */
.tbl-sliderpop[b-jz7mc0u6l9] {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 100%;
    margin-bottom: 0.45rem;
    z-index: 2;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    background: #1c222e;
    border: 1px solid rgba(201, 164, 92, 0.4);
    border-radius: 0.8rem;
    padding: 0.7rem;
    box-shadow: 0 10px 26px rgba(0, 0, 0, 0.6);
}

    .tbl-sliderpop[b-jz7mc0u6l9]::after {
        content: "";
        position: absolute;
        left: 50%;
        bottom: -6px;
        width: 11px;
        height: 11px;
        transform: translateX(-50%) rotate(45deg);
        background: #1c222e;
        border-right: 1px solid rgba(201, 164, 92, 0.4);
        border-bottom: 1px solid rgba(201, 164, 92, 0.4);
    }

    .tbl-sliderpop input[type="range"][b-jz7mc0u6l9] {
        flex: 1;
        min-width: 0;
        accent-color: var(--gold);
        min-height: 1.6rem;
    }

.tbl-spend[b-jz7mc0u6l9] {
    flex: none;
    font-size: 0.66rem;
    color: var(--muted);
    white-space: nowrap;
}

/* ==== メニューシート ==== */
.tbl-scrim[b-jz7mc0u6l9] {
    position: absolute;
    inset: 0;
    z-index: 20;
    background: rgba(0, 0, 0, 0.45);
    border: none;
    padding: 0;
}

.tbl-sheet[b-jz7mc0u6l9] {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    bottom: 0;
    z-index: 30;
    width: 100%;
    max-width: 430px;
    background: #f6f7f9;
    color: #23272d;
    border-radius: 1.1rem 1.1rem 0 0;
    padding: 1rem 1rem calc(1.3rem + env(safe-area-inset-bottom));
    box-shadow: 0 -10px 40px rgba(0, 0, 0, 0.6);
}

    .tbl-sheet[b-jz7mc0u6l9]::before {
        content: "";
        display: block;
        width: 2.6rem;
        height: 0.3rem;
        border-radius: 999px;
        background: #c9cfd8;
        margin: 0 auto 0.8rem;
    }

.tbl-mi[b-jz7mc0u6l9] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    padding: 0.8rem 0.4rem;
    border: none;
    border-top: 1px solid #e3e7ec;
    background: none;
    color: inherit;
    font-size: 0.92rem;
    font-weight: 600;
    text-align: left;
    cursor: pointer;
}

    .tbl-mi:first-of-type[b-jz7mc0u6l9] {
        border-top: none;
    }

    .tbl-mi:disabled[b-jz7mc0u6l9] {
        opacity: 0.45;
        cursor: default;
    }

    .tbl-mi .sub[b-jz7mc0u6l9] {
        color: #8a93a0;
        font-weight: 400;
        font-size: 0.78rem;
    }

    .tbl-mi.danger[b-jz7mc0u6l9] {
        color: #b3261e;
    }

.tbl-toggle[b-jz7mc0u6l9] {
    flex: none;
    width: 2.6rem;
    height: 1.4rem;
    border-radius: 999px;
    background: #c9cfd8;
    position: relative;
    transition: background 0.15s ease;
}

    .tbl-toggle[b-jz7mc0u6l9]::after {
        content: "";
        position: absolute;
        top: 2px;
        left: 2px;
        width: 1.15rem;
        height: 1.15rem;
        border-radius: 50%;
        background: #fff;
        transition: transform 0.15s ease;
    }

    .tbl-toggle.on[b-jz7mc0u6l9] {
        background: #34a06a;
    }

        .tbl-toggle.on[b-jz7mc0u6l9]::after {
            transform: translateX(1.2rem);
        }

/* ==== プロフィール(席アバターのタップ・T-1004。モック docs/mockups/table-profile.html) ====
   卓エリアの中だけを覆うので、開いている間も下部バーのアクションは押せる。
   卓・席は position:absolute の重ね合わせなので、開閉で 1px も動かない。 */
.tbl-pscrim[b-jz7mc0u6l9] {
    position: absolute;
    inset: 0;
    z-index: 20;
    background: rgba(0, 0, 0, 0.55);
    border: none;
    padding: 0;
}

/* タップした席は緑リングを残して「誰を見ているか」を示す。 */
.tbl-seat.tapped .tbl-ava[b-jz7mc0u6l9] {
    border-color: #46d18a;
    box-shadow: 0 0 0 3px rgba(70, 209, 138, 0.35), 0 0 18px rgba(70, 209, 138, 0.5);
}

.tbl-prof[b-jz7mc0u6l9] {
    --accent: #46d18a;
    --warn: #f0a02e;
    --panel: #171b24;
    position: absolute;
    left: 16px;
    right: 16px;
    top: 5%;
    z-index: 25;
    max-height: 92%;
    display: flex;
    flex-direction: column;
    background: linear-gradient(180deg, #131822 0%, #0c0f17 100%);
    border: 1px solid rgba(70, 209, 138, 0.28);
    border-radius: 1rem;
    box-shadow: 0 22px 60px rgba(0, 0, 0, 0.75), inset 0 1px 0 rgba(255, 255, 255, 0.05);
    overflow: hidden;
}

.tbl-phd[b-jz7mc0u6l9] {
    flex: none;
    position: relative;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-bottom: 1px solid rgba(255, 255, 255, 0.07);
    background: linear-gradient(180deg, rgba(70, 209, 138, 0.1), transparent);
}

.tbl-pttl[b-jz7mc0u6l9] {
    font-size: 0.98rem;
    font-weight: 800;
    letter-spacing: 0.06em;
    color: #e9fff2;
}

.tbl-pic[b-jz7mc0u6l9] {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 2rem;
    height: 2rem;
    border: none;
    border-radius: 0.5rem;
    background: none;
    color: var(--accent);
    font-size: 1.05rem;
    font-weight: 800;
    cursor: pointer;
}

    .tbl-pic:first-of-type[b-jz7mc0u6l9] {
        left: 0.4rem;
    }

    .tbl-pic:last-of-type[b-jz7mc0u6l9] {
        right: 0.4rem;
    }

    .tbl-pic.on[b-jz7mc0u6l9] {
        background: var(--gold-hi);
        color: #4a3600;
    }

.tbl-pbd[b-jz7mc0u6l9] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 0.6rem;
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

/* 識別カード(アバター・表示名・短縮ID・クラブ) */
.tbl-idcard[b-jz7mc0u6l9] {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    padding: 0.45rem 0.6rem;
    border-radius: 0.7rem;
    background: var(--panel);
    border: 1px solid rgba(255, 255, 255, 0.06);
}

.tbl-idava[b-jz7mc0u6l9] {
    position: relative;
    flex: none;
    width: 50px;
    height: 50px;
    border-radius: 50%;
    background: linear-gradient(135deg, #33415e, #1f2740);
    border: 2px solid rgba(255, 255, 255, 0.22);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.35rem;
    font-weight: 800;
    overflow: hidden;
}

    .tbl-idava img[b-jz7mc0u6l9] {
        width: 100%;
        height: 100%;
        object-fit: cover;
    }

    /* ロールバッジ(オーナー/マネージャーのみ) */
    .tbl-idava .role[b-jz7mc0u6l9] {
        position: absolute;
        left: -4px;
        bottom: -3px;
        width: 1.15rem;
        height: 1.15rem;
        border-radius: 50%;
        background: var(--accent);
        color: #06301c;
        font-size: 0.62rem;
        font-weight: 900;
        display: flex;
        align-items: center;
        justify-content: center;
        border: 2px solid #0c0f17;
    }

        .tbl-idava .role.owner[b-jz7mc0u6l9] {
            background: var(--gold-hi);
            color: #4a3600;
        }

.tbl-idtxt[b-jz7mc0u6l9] {
    min-width: 0;
    line-height: 1.5;
}

    .tbl-idtxt .nm[b-jz7mc0u6l9] {
        font-size: 0.98rem;
        font-weight: 800;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .tbl-idtxt .sub[b-jz7mc0u6l9] {
        font-size: 0.72rem;
        color: var(--muted);
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

        .tbl-idtxt .sub b[b-jz7mc0u6l9] {
            color: #c8d2de;
            font-weight: 700;
            font-variant-numeric: tabular-nums;
        }

/* スコープ切替(このクラブ / グローバル)。下の数字ブロックだけが入れ替わる。 */
.tbl-scope[b-jz7mc0u6l9] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2px;
    padding: 2px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.08);
}

    .tbl-scope button[b-jz7mc0u6l9] {
        border: none;
        border-radius: 999px;
        padding: 0.2rem 0.3rem;
        background: none;
        color: #8e99a8;
        font-family: inherit;
        font-size: 0.72rem;
        font-weight: 700;
        line-height: 1.45;
        white-space: nowrap;
        cursor: pointer;
    }

        .tbl-scope button.on[b-jz7mc0u6l9] {
            background: linear-gradient(180deg, #37995f, #1f5e3e);
            color: #eafff1;
            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18), 0 1px 4px rgba(0, 0, 0, 0.4);
        }

/* スタッツのタイル行(4列・縦罫つき)。サンプル不足でも高さは変わらない。 */
.tbl-tiles[b-jz7mc0u6l9] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    background: var(--panel);
    border: 1px solid rgba(255, 255, 255, 0.06);
    border-radius: 0.7rem;
    padding: 0.4rem 0;
}

.tbl-tile[b-jz7mc0u6l9] {
    text-align: center;
    line-height: 1.35;
    border-left: 1px solid rgba(255, 255, 255, 0.07);
    min-width: 0;
}

    .tbl-tile:first-child[b-jz7mc0u6l9] {
        border-left: none;
    }

    .tbl-tile .v[b-jz7mc0u6l9] {
        font-size: 1.15rem;
        font-weight: 800;
        font-variant-numeric: tabular-nums;
    }

        .tbl-tile .v small[b-jz7mc0u6l9] {
            font-size: 0.62em;
            font-weight: 700;
            margin-left: 0.05em;
        }

    .tbl-tile .k[b-jz7mc0u6l9] {
        font-size: 0.6rem;
        color: var(--muted);
        font-weight: 600;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .tbl-tile.dim .v[b-jz7mc0u6l9] {
        color: #6b7686;
    }

.tbl-tiles.small .v[b-jz7mc0u6l9] {
    font-size: 0.92rem;
}

/* ショーダウン帯: オレンジ=WTSD 全長、内側の緑=そのうち勝った分 */
.tbl-sd[b-jz7mc0u6l9] {
    background: var(--panel);
    border: 1px solid rgba(255, 255, 255, 0.06);
    border-radius: 0.7rem;
    padding: 0.45rem 0.7rem 0.5rem;
}

    .tbl-sd .row[b-jz7mc0u6l9] {
        display: flex;
        align-items: baseline;
        justify-content: space-between;
        font-size: 0.72rem;
        color: var(--muted);
        font-weight: 700;
    }

    .tbl-sd .l b[b-jz7mc0u6l9] {
        color: var(--warn);
        font-size: 1rem;
        margin-right: 0.3rem;
        font-variant-numeric: tabular-nums;
    }

    .tbl-sd .r b[b-jz7mc0u6l9] {
        color: var(--accent);
        font-size: 1rem;
        margin-left: 0.3rem;
        font-variant-numeric: tabular-nums;
    }

    .tbl-sd .bar[b-jz7mc0u6l9] {
        position: relative;
        height: 7px;
        border-radius: 999px;
        background: rgba(255, 255, 255, 0.09);
        margin-top: 0.4rem;
        overflow: hidden;
    }

        .tbl-sd .bar u[b-jz7mc0u6l9] {
            position: absolute;
            left: 0;
            top: 0;
            bottom: 0;
            background: var(--warn);
        }

        .tbl-sd .bar i[b-jz7mc0u6l9] {
            position: absolute;
            left: 0;
            top: 0;
            bottom: 0;
            background: var(--accent);
        }

.tbl-phint[b-jz7mc0u6l9] {
    font-size: 0.66rem;
    color: var(--muted);
    line-height: 1.5;
    padding: 0 0.15rem;
}

    .tbl-phint b[b-jz7mc0u6l9] {
        color: var(--gold-text);
    }

/* 取得中・失敗 */
.tbl-pmsg[b-jz7mc0u6l9] {
    padding: 1.4rem 0.8rem;
    text-align: center;
    color: var(--muted);
    font-size: 0.8rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.7rem;
}

/* 用語ヘルプ(? で差し替え表示) */
.tbl-phelp[b-jz7mc0u6l9] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 0.5rem 0.7rem 0.2rem;
}

    .tbl-phelp dl[b-jz7mc0u6l9] {
        margin: 0;
        display: grid;
        grid-template-columns: 3.6rem 1fr;
        gap: 0.3rem 0.5rem;
        font-size: 0.72rem;
        line-height: 1.45;
    }

    .tbl-phelp dt[b-jz7mc0u6l9] {
        color: var(--accent);
        font-weight: 800;
    }

    .tbl-phelp dd[b-jz7mc0u6l9] {
        margin: 0;
        color: #c2ccd8;
    }

    .tbl-phelp .sec[b-jz7mc0u6l9] {
        font-size: 0.66rem;
        color: var(--muted);
        font-weight: 700;
        margin: 0.5rem 0 0.3rem;
    }

.tbl-pft[b-jz7mc0u6l9] {
    flex: none;
    display: grid;
    gap: 0.5rem;
    padding: 0.15rem 0.6rem 0.6rem;
}

.tbl-pb[b-jz7mc0u6l9] {
    border-radius: 999px;
    border: 1px solid transparent;
    padding: 0.6rem 0.2rem;
    font-family: inherit;
    font-size: 0.82rem;
    font-weight: 800;
    white-space: nowrap;
    cursor: pointer;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12), 0 2px 6px rgba(0, 0, 0, 0.4);
}

    .tbl-pb.go[b-jz7mc0u6l9] {
        background: linear-gradient(180deg, #37995f, #1f5e3e);
        color: #eafff1;
        border-color: rgba(190, 240, 205, 0.45);
    }

    .tbl-pb.ghost[b-jz7mc0u6l9] {
        background: #212836;
        color: #b9c4d0;
        border-color: #3a4454;
        padding: 0.5rem 1.2rem;
    }

    .tbl-pb.gold[b-jz7mc0u6l9] {
        background: linear-gradient(180deg, #eec95c, #c99a2e);
        color: #4a3600;
        border-color: rgba(255, 240, 200, 0.6);
    }

    .tbl-pb.danger[b-jz7mc0u6l9] {
        background: linear-gradient(180deg, #8e3038, #5d1d24);
        color: #ffc9cd;
        border-color: rgba(255, 170, 170, 0.4);
    }

    .tbl-pb:disabled[b-jz7mc0u6l9] {
        background: #1a1f2b;
        color: #57606f;
        border-color: #2a3140;
        box-shadow: none;
        cursor: default;
    }

/* ==== メモ・タグ / 運営操作(T-1005) ====
   どちらもモーダル内の1ブロック。scope を切り替えても位置は変わらない。 */
.tbl-memo[b-jz7mc0u6l9],
.tbl-ops[b-jz7mc0u6l9] {
    background: var(--panel);
    border: 1px solid rgba(255, 255, 255, 0.06);
    border-radius: 0.7rem;
    padding: 0.45rem 0.7rem 0.55rem;
}

    .tbl-memo .cap[b-jz7mc0u6l9],
    .tbl-ops .cap[b-jz7mc0u6l9] {
        font-size: 0.66rem;
        color: var(--muted);
        font-weight: 700;
        margin-bottom: 0.35rem;
    }

    .tbl-memo .msg[b-jz7mc0u6l9],
    .tbl-ops .msg[b-jz7mc0u6l9] {
        margin-top: 0.35rem;
        font-size: 0.68rem;
        color: var(--gold-text);
    }

.tbl-tags[b-jz7mc0u6l9] {
    display: flex;
    gap: 0.35rem;
    flex-wrap: wrap;
}

.tbl-tag[b-jz7mc0u6l9] {
    font-family: inherit;
    font-size: 0.68rem;
    font-weight: 700;
    padding: 0.2rem 0.55rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.12);
    color: #c2ccd8;
    cursor: pointer;
}

    /* 選択中のタグだけ色を持たせる(魚=緑・レギュラー=金・その他は白)。 */
    .tbl-tag.on[b-jz7mc0u6l9] {
        background: rgba(255, 255, 255, 0.16);
        border-color: rgba(255, 255, 255, 0.4);
        color: #eef3f8;
    }

        .tbl-tag.on.fish[b-jz7mc0u6l9] {
            background: rgba(70, 209, 138, 0.18);
            border-color: rgba(70, 209, 138, 0.6);
            color: #9ff0c4;
        }

        .tbl-tag.on.reg[b-jz7mc0u6l9] {
            background: rgba(240, 160, 46, 0.16);
            border-color: rgba(240, 160, 46, 0.55);
            color: #ffd08a;
        }

.tbl-memoin[b-jz7mc0u6l9] {
    display: block;
    width: 100%;
    margin-top: 0.4rem;
    border-radius: 0.5rem;
    background: rgba(0, 0, 0, 0.35);
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 0.3rem 0.5rem;
    font-family: inherit;
    font-size: 0.75rem;
    color: #cfd8e2;
    line-height: 1.45;
    resize: none;
}

    .tbl-memoin[b-jz7mc0u6l9]::placeholder {
        color: #5f6a79;
    }

.tbl-ops[b-jz7mc0u6l9] {
    display: grid;
    gap: 0.4rem;
}

    .tbl-ops .row[b-jz7mc0u6l9] {
        display: grid;
        grid-template-columns: 1fr auto auto;
        gap: 0.4rem;
        align-items: center;
    }

    .tbl-ops input[b-jz7mc0u6l9] {
        min-width: 0;
        border-radius: 0.5rem;
        background: rgba(0, 0, 0, 0.35);
        border: 1px solid rgba(255, 255, 255, 0.1);
        padding: 0.4rem 0.5rem;
        font-family: inherit;
        font-size: 0.8rem;
        color: var(--ink);
        font-variant-numeric: tabular-nums;
    }

    .tbl-ops .tbl-pb[b-jz7mc0u6l9] {
        padding: 0.4rem 0.9rem;
        font-size: 0.78rem;
    }

/* フッターの最下段。キックがあれば2列、無ければ「閉じる」だけの1列。 */
.tbl-ftrow[b-jz7mc0u6l9] {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: 1fr;
    gap: 0.5rem;
}

/* ==== ハンド履歴(T-1104。モック docs/mockups/table-hand-history.html) ====
   入口は卓エリアの内側の左下に置いた常設アイコン1つ。下側の席(上から63.7%)にも
   自分のカードにも、下部の操作バーにも掛からないので、手番中でもボタンを塞がずに押せる。 */
.tbl-hbtn[b-jz7mc0u6l9] {
    position: absolute;
    left: 10px;
    bottom: 10px;
    z-index: 18;
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: none;
    background: none;
    padding: 0;
    cursor: pointer;
}

    .tbl-hbtn .cd[b-jz7mc0u6l9] {
        position: relative;
        width: 23px;
        height: 31px;
        border-radius: 3px;
        border: 1.6px solid #46d18a;
        background: rgba(70, 209, 138, 0.1);
        display: flex;
        align-items: center;
        justify-content: center;
        color: #46d18a;
        font-size: 0.9rem;
        font-style: normal;
        line-height: 1;
        box-shadow: 0 2px 10px rgba(0, 0, 0, 0.55);
    }

    /* 初回だけ出す説明チップ(1回押したら以降は出さない)。 */
    .tbl-hbtn .tip[b-jz7mc0u6l9] {
        position: absolute;
        left: 47px;
        top: 50%;
        transform: translateY(-50%);
        background: rgba(12, 16, 24, 0.94);
        border: 1px solid rgba(70, 209, 138, 0.45);
        border-radius: 999px;
        padding: 0.2rem 0.55rem;
        font-size: 0.64rem;
        font-weight: 800;
        color: #cfe9db;
        white-space: nowrap;
        box-shadow: 0 6px 18px rgba(0, 0, 0, 0.6);
    }

    .tbl-hbtn.hint .cd[b-jz7mc0u6l9] {
        box-shadow: 0 0 0 4px rgba(70, 209, 138, 0.22), 0 2px 10px rgba(0, 0, 0, 0.55);
    }

/* ドロワーの右に残った卓(24%)。暗くはせず、タップを「閉じる」に使うためだけに敷く。 */
.tbl-hscrim[b-jz7mc0u6l9] {
    position: absolute;
    inset: 0;
    z-index: 24;
    border: none;
    padding: 0;
    background: transparent;
}

@media (prefers-reduced-motion: reduce) {
    .tbl-seat.winner .tbl-ava[b-jz7mc0u6l9] {
        animation: none;
    }

    .tbl-toggle[b-jz7mc0u6l9],
    .tbl-toggle[b-jz7mc0u6l9]::after {
        transition: none;
    }
}


/* クラブボットの席バッジ(v2.7 / T-1405)。名前の右に小さく添える。 */
.tbl-bot[b-jz7mc0u6l9] {
    display: inline-block;
    margin-left: 0.2rem;
    padding: 0 0.2rem;
    border-radius: 0.2rem;
    background: #0f766e;
    color: #d8f3f0;
    font-size: 0.55rem;
    font-weight: 800;
    letter-spacing: 0.04em;
    vertical-align: middle;
}

/* ==== チップ追加(M20 / T-2002。モック docs/mockups/chips.html 02・04)====
   メニューシート(.tbl-sheet)と同じ明色の面に載るので、卓の暗色ではなくシートの色に合わせる。 */
.tbl-sheet-title[b-jz7mc0u6l9] {
    margin: 0 0 0.6rem;
    font-size: 1rem;
    font-weight: 700;
}

.tbl-sheet-label[b-jz7mc0u6l9] {
    display: block;
    font-size: 0.72rem;
    color: #6b7482;
    margin-bottom: 0.25rem;
}

/* 額は BB で入れるが、チップ換算を必ず併記する —— 残高はチップで持っているので、
   BB だけだと「いくら減るのか」が分からない。 */
.tbl-sheet-amount[b-jz7mc0u6l9] {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
}

    .tbl-sheet-amount input[b-jz7mc0u6l9] {
        flex: 1;
        min-width: 0;
        padding: 0.6rem 0.7rem;
        border: 1px solid #c9cfd8;
        border-radius: 0.6rem;
        background: #fff;
        color: #23272d;
        font: inherit;
        font-size: 1.1rem;
        font-weight: 800;
        font-variant-numeric: tabular-nums;
    }

    .tbl-sheet-amount > span[b-jz7mc0u6l9] {
        flex: none;
        font-size: 0.8rem;
        font-weight: 600;
        color: #6b7482;
        font-variant-numeric: tabular-nums;
    }

.tbl-sheet-hint[b-jz7mc0u6l9] {
    margin: 0.3rem 0 0;
    font-size: 0.72rem;
    color: #6b7482;
}

.tbl-sheet-quick[b-jz7mc0u6l9] {
    display: flex;
    gap: 0.4rem;
    margin-top: 0.5rem;
}

    .tbl-sheet-quick button[b-jz7mc0u6l9] {
        flex: 1;
        padding: 0.45rem 0;
        border: 1px solid #c9cfd8;
        border-radius: 0.5rem;
        background: #fff;
        color: #23272d;
        font: inherit;
        font-size: 0.78rem;
        font-weight: 700;
        cursor: pointer;
    }

    .tbl-sheet-quick button.on[b-jz7mc0u6l9] {
        background: var(--green1);
        border-color: var(--green1);
        color: #eafff1;
    }

/* 移動の前後。チップが増えないことがこの一行で伝わる必要がある。 */
.tbl-sheet-note[b-jz7mc0u6l9] {
    margin: 0.7rem 0 0;
    padding: 0.5rem 0.6rem;
    border-radius: 0.6rem;
    background: #eef4ff;
    border: 1px solid #c8dbf5;
    font-size: 0.76rem;
    color: #23334a;
}

.tbl-sheet-warn[b-jz7mc0u6l9] {
    margin: 0.7rem 0 0;
    padding: 0.5rem 0.6rem;
    border-radius: 0.6rem;
    background: #fdf4f5;
    border: 1px solid #e3b4ba;
    font-size: 0.76rem;
    color: #8a2b36;
}

.tbl-sheet-row[b-jz7mc0u6l9] {
    display: flex;
    gap: 0.5rem;
    margin-top: 0.8rem;
}

.tbl-sheet-btn[b-jz7mc0u6l9] {
    flex: 1;
    padding: 0.75rem 0;
    border: none;
    border-radius: 0.7rem;
    font: inherit;
    font-weight: 800;
    font-size: 0.9rem;
    cursor: pointer;
}

    .tbl-sheet-btn.primary[b-jz7mc0u6l9] {
        background: linear-gradient(180deg, #37995f, #1f5e3e);
        color: #eafff1;
    }

    .tbl-sheet-btn.ghost[b-jz7mc0u6l9] {
        background: #fff;
        border: 1px solid #c9cfd8;
        color: #23272d;
    }

    .tbl-sheet-btn:disabled[b-jz7mc0u6l9] {
        opacity: 0.45;
        cursor: default;
    }

/* 席のプレートに出す予約(金は「操作したもの」の色)。 */
.tbl-addon[b-jz7mc0u6l9] {
    display: block;
    font-size: 0.6rem;
    font-weight: 800;
    line-height: 1.25;
    color: var(--gold-hi);
}
