/* /Components/Database/DatabaseInspector.razor.rz.scp.css */
.database-inspector-card[b-h244eyiv7d] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.database-inspector-content[b-h244eyiv7d] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    flex: 1;
    min-height: 0;
    overflow: hidden;
}

.table-selector[b-h244eyiv7d] {
    flex-shrink: 0;
}

.table-info[b-h244eyiv7d] {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    border: 1px solid var(--ant-border-color);
    border-radius: 4px;
    padding: 0.75rem;
    background-color: var(--ant-bg-container);
}

.row-count[b-h244eyiv7d] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}

.row-count .label[b-h244eyiv7d] {
    font-weight: 600;
    font-size: 0.875rem;
}

.row-count .value[b-h244eyiv7d] {
    font-family: monospace;
    font-size: 0.875rem;
    padding: 0.25rem 0.5rem;
    background-color: var(--ant-bg-layout);
    border-radius: 2px;
}

.row-count .value.changed[b-h244eyiv7d] {
    background-color: rgba(255, 193, 7, 0.1);
    color: var(--ant-warning-color);
    font-weight: 600;
    animation: highlight-pulse-b-h244eyiv7d 600ms ease-out;
}

@keyframes highlight-pulse-b-h244eyiv7d {
    0% {
        box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.7);
    }
    70% {
        box-shadow: 0 0 0 6px rgba(255, 193, 7, 0);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(255, 193, 7, 0);
    }
}

.create-statement[b-h244eyiv7d] {
    font-size: 0.875rem;
}

.create-statement details[b-h244eyiv7d] {
    cursor: pointer;
}

.create-statement summary[b-h244eyiv7d] {
    font-weight: 600;
    color: var(--ant-primary-color);
    padding: 0.25rem 0;
    user-select: none;
}

.create-statement summary:hover[b-h244eyiv7d] {
    opacity: 0.8;
}

.create-statement pre[b-h244eyiv7d] {
    margin: 0.5rem 0 0 0;
    padding: 0.5rem;
    background-color: var(--ant-bg-layout);
    border: 1px solid var(--ant-border-color);
    border-radius: 2px;
    font-size: 0.75rem;
    overflow-x: auto;
    max-height: 10rem;
}

.create-statement code[b-h244eyiv7d] {
    font-family: 'Courier New', monospace;
    color: var(--ant-text-color);
}

/* Bounded by the tab pane rather than by a height of its own: the grid grows to the bottom of the
   screen and scrolls inside that box. */
.table-grid-container[b-h244eyiv7d] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: auto;
    border: 1px solid var(--ant-border-color);
    border-radius: 4px;
}

.simple-table[b-h244eyiv7d] {
    width: 100%;
    border-collapse: collapse;
    border: 1px solid var(--ant-border-color);
    font-size: 0.875rem;
    background-color: var(--ant-bg-container);
}

.simple-table th[b-h244eyiv7d] {
    background-color: var(--ant-table-header-bg);
    font-weight: 600;
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--ant-border-color);
    border-bottom-width: 2px;
    text-align: left;
    color: var(--ant-text-color);
    position: sticky;
    top: 0;
}

.simple-table td[b-h244eyiv7d] {
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--ant-border-color);
    word-break: break-word;
    font-family: monospace;
    font-size: 0.8rem;
    color: var(--ant-text-color);
}

.simple-table tbody tr:hover td[b-h244eyiv7d] {
    background-color: var(--ant-table-row-hover-bg);
}

.paging-controls[b-h244eyiv7d] {
    flex-shrink: 0;
    padding: 0.75rem;
    border-top: 1px solid var(--ant-border-color);
    background-color: var(--ant-table-header-bg);
    text-align: center;
}

:deep(.paging-controls .ant-pagination)[b-h244eyiv7d] {
    justify-content: center;
}

:deep(.paging-controls .ant-pagination-item-active)[b-h244eyiv7d] {
    background-color: var(--ant-primary-color);
    border-color: var(--ant-primary-color);
}

:deep(.paging-controls .ant-pagination-item-active a)[b-h244eyiv7d] {
    color: #fff;
}

.empty-state[b-h244eyiv7d] {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 1;
    color: var(--ant-text-color-secondary);
    font-size: 0.875rem;
    text-align: center;
    padding: 2rem;
}
/* /Components/EngineCalls/EngineCalls.razor.rz.scp.css */
/* The panel fills its tab pane, whose height is fixed to the space under the header and the tab
   bar, so the list below grows to the bottom of the screen and scrolls inside it. */
.engine-calls-panel[b-ppen1sqg87] {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
    height: 100%;
    background-color: var(--color-background);
    color: var(--color-text);
    border: 1px solid var(--color-border);
    border-radius: 4px;
    overflow: hidden;
}

.engine-calls-header[b-ppen1sqg87] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    border-bottom: 1px solid var(--color-border);
    background-color: var(--color-surface);
}

.engine-calls-header h3[b-ppen1sqg87] {
    margin: 0;
    font-size: 16px;
    font-weight: 600;
}

.copy-session-btn[b-ppen1sqg87] {
    padding: 6px 12px;
    background-color: var(--color-primary);
    color: white;
    border: none;
    border-radius: 3px;
    cursor: pointer;
    font-size: 14px;
    font-weight: 500;
    transition: background-color 0.2s ease;
}

.copy-session-btn:hover[b-ppen1sqg87] {
    background-color: var(--color-primary-hover);
}

.copy-session-btn:active[b-ppen1sqg87] {
    transform: scale(0.98);
}

.engine-calls-list[b-ppen1sqg87] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 12px;
}

.no-entries[b-ppen1sqg87] {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    color: var(--color-text-secondary);
}

.no-entries p[b-ppen1sqg87] {
    margin: 0;
    font-size: 14px;
}

.engine-call-entry[b-ppen1sqg87] {
    margin-bottom: 16px;
    padding: 12px;
    background-color: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 4px;
}

.entry-header[b-ppen1sqg87] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 12px;
    font-size: 13px;
}

.entry-number[b-ppen1sqg87] {
    font-weight: 600;
    color: var(--color-text);
}

.status-success[b-ppen1sqg87] {
    color: #52c41a;
    font-weight: 500;
}

.status-error[b-ppen1sqg87] {
    color: #ff4d4f;
    font-weight: 500;
}

.copy-btn[b-ppen1sqg87] {
    padding: 4px 8px;
    background-color: var(--color-secondary);
    color: white;
    border: none;
    border-radius: 3px;
    cursor: pointer;
    font-size: 12px;
    font-weight: 500;
    transition: background-color 0.2s ease;
}

.copy-btn:hover[b-ppen1sqg87] {
    background-color: var(--color-secondary-hover);
}

.copy-btn:active[b-ppen1sqg87] {
    transform: scale(0.95);
}

.engine-call-entry pre[b-ppen1sqg87] {
    margin: 0;
    padding: 12px;
    background-color: var(--color-code-background);
    border: 1px solid var(--color-border);
    border-radius: 3px;
    overflow-x: auto;
    font-family: 'Fira Code', 'Courier New', monospace;
    font-size: 13px;
    line-height: 1.5;
}

.engine-call-entry code[b-ppen1sqg87] {
    color: var(--color-code-text);
}

.error-message[b-ppen1sqg87] {
    margin-top: 8px;
    padding: 8px 12px;
    background-color: #fff2f0;
    border-left: 3px solid #ff4d4f;
    color: #ff4d4f;
    font-size: 13px;
}

/* The result dump under each call. AntDesign renders the Collapse, so its markup carries no scope
   attribute of this component and is reached through ::deep (fact 22). */
.engine-call-entry[b-ppen1sqg87]  .result-dump {
    margin-top: 8px;
    background: transparent;
}

.engine-call-entry[b-ppen1sqg87]  .result-dump .ant-collapse-header {
    padding: 4px 8px;
    font-family: 'Fira Code', 'Courier New', monospace;
    font-size: 13px;
    color: var(--color-text);
}

.engine-call-entry[b-ppen1sqg87]  .result-dump .ant-collapse-content-box {
    padding: 4px 0 0;
}
/* /Components/EngineCalls/ObjectDumpView.razor.rz.scp.css */
/* Fixed layout with percentage columns: the table is exactly as wide as the call entry, and a long
   value is cut rather than allowed to push the page into a horizontal scrollbar. */
.object-dump[b-gp2rl86sc9] {
    width: 100%;
    table-layout: fixed;
    border-collapse: collapse;
    font-family: Consolas, "Cascadia Mono", Menlo, monospace;
    font-size: 12px;
    color: var(--color-text);
}

.dump-col-name[b-gp2rl86sc9] {
    width: 24%;
}

.dump-col-value[b-gp2rl86sc9] {
    width: 46%;
}

.dump-col-type[b-gp2rl86sc9] {
    width: 30%;
}

.object-dump th[b-gp2rl86sc9] {
    padding: 4px 6px;
    text-align: left;
    font-weight: 600;
    background-color: var(--color-background);
    border-bottom: 1px solid var(--color-border);
}

.object-dump td[b-gp2rl86sc9] {
    padding: 2px 6px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    border-bottom: 1px solid var(--color-border);
    vertical-align: middle;
}

.object-dump th + th[b-gp2rl86sc9],
.object-dump td + td[b-gp2rl86sc9] {
    border-left: 1px solid var(--color-border);
}

.dump-row:hover td[b-gp2rl86sc9] {
    background-color: var(--color-background);
}

.dump-type[b-gp2rl86sc9] {
    color: var(--color-text-secondary);
}

.dump-toggle[b-gp2rl86sc9],
.dump-toggle-spacer[b-gp2rl86sc9] {
    display: inline-block;
    width: 16px;
    margin-right: 2px;
    text-align: center;
}

.dump-toggle[b-gp2rl86sc9] {
    padding: 0;
    border: none;
    background: none;
    color: inherit;
    font: inherit;
    line-height: 1;
    cursor: pointer;
}
/* /Components/Table/ActionPanel.razor.rz.scp.css */
/*
    Only the raw elements ActionPanel.razor writes itself are styled here: they carry the
    [b-xxxxxxxxxx] scope attribute, so these rules match. The AntDesign Buttons inside the bar do
    not, which is why their colours and sizes are in wwwroot/css/app.css (fact 22).
*/
/* As wide as a seat row and centred like one, so the bar lines up with the seats above it rather
   than running past them to the table's edges. That is still one row wide enough for the buttons,
   the raise sizing and the turn box side by side: a wrapped bar is a second row of height the table
   cannot spare. The shared width is a custom property in app.css (fact 22). */
.action-bar[b-xva1flxncp] {
    display: flex;
    flex-wrap: wrap;
    align-self: center;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem 1rem;
    width: 100%;
    max-width: var(--demo-table-row-max-width);
    padding: 0.5rem 0.75rem;
    background: rgba(0, 0, 0, 0.35);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 8px;
}

/* A zero basis, so the controls share the row with the turn box and wrap inside themselves on a
   narrow screen rather than pushing the box onto a line of its own. */
.action-bar-controls[b-xva1flxncp] {
    display: flex;
    flex: 1 1 0;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem 1.25rem;
    min-width: 0;
}

.action-bar-buttons[b-xva1flxncp] {
    display: flex;
    flex: 0 0 auto;
    flex-wrap: nowrap;
    gap: 0.5rem;
}

.raise-controls[b-xva1flxncp] {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 0.5rem;
    flex: 1 1 300px;
    min-width: 0;
}

.raise-slider-row[b-xva1flxncp] {
    display: flex;
    flex: 1 1 auto;
    align-items: center;
    gap: 0.4rem;
    min-width: 0;
}

/* The reference layout's text box: whose turn it is, in a panel of its own at the bar's right end. */
.action-bar-info[b-xva1flxncp] {
    flex: 0 1 200px;
    min-width: 160px;
    padding: 0.5rem 0.75rem;
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.92);
    color: #1f1f1f;
    font-weight: 600;
    text-align: center;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.no-actions[b-xva1flxncp] {
    color: rgba(255, 255, 255, 0.6);
    font-style: italic;
}
/* /Components/Table/GameSetup.razor.rz.scp.css */
/*
    The form's own inputs, captions and grid are plain elements GameSetup.razor writes, so they
    carry its scope attribute and these rules match. The AntDesign Select and Buttons do not
    (fact 22); they only need their width, which the markup sets.
*/
.game-options[b-z47vc7u896] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 12px 16px;
}

.form-group label[b-z47vc7u896] {
    display: block;
    margin-bottom: 4px;
}

.big-blind-value[b-z47vc7u896] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    min-height: 32px;
    padding-top: 4px;
}

.field-hint[b-z47vc7u896] {
    font-size: 12px;
    color: #999;
}

.setup-input[b-z47vc7u896] {
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    height: 32px;
    padding: 4px 8px;
    border: 1px solid var(--demo-outline);
    border-radius: 2px;
    background: var(--ant-bg-container);
    color: var(--ant-text-color);
}

.players-section[b-z47vc7u896] {
    margin-top: 8px;
}

.players-section h3[b-z47vc7u896] {
    margin-bottom: 8px;
}

/* Name takes what is left; Seat and Buy-in are fixed and wide enough for their numbers; the last
   column is the Remove button. A row is display: contents, so its cells sit in the caption
   row's columns. */
.players-grid[b-z47vc7u896] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 72px 110px auto;
    gap: 8px 12px;
    align-items: center;
    margin-bottom: 12px;
}

.player-row[b-z47vc7u896] {
    display: contents;
}

.players-caption[b-z47vc7u896] {
    font-size: 12px;
    color: #8c8c8c;
}

.blind-caption[b-z47vc7u896] {
    display: block;
    margin-bottom: 4px;
}

.threshold-list[b-z47vc7u896] {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 12px;
    min-height: 32px;
    align-items: center;
}

.threshold-option[b-z47vc7u896] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 0;
}

.threshold-option label[b-z47vc7u896] {
    margin-bottom: 0;
}

.field-message[b-z47vc7u896] {
    display: block;
    margin-top: 4px;
    font-size: 12px;
    color: var(--ant-error-color, #ff4d4f);
}
/* /Components/Table/PlayingCard.razor.rz.scp.css */
.playing-card[b-26kpgak14t] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 46px;
    height: 62px;
    background: #fff;
    border: 2px solid #333;
    border-radius: 4px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
    transition: all 0.2s ease;
}

.playing-card:hover[b-26kpgak14t] {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
}

.card-content[b-26kpgak14t] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    font-weight: 700;
}

.card-rank[b-26kpgak14t] {
    font-size: 14px;
    color: #333;
}

.card-suit[b-26kpgak14t] {
    font-size: 16px;
    line-height: 1;
}

/* Suit-specific colors */
.playing-card[data-suit="club"] .card-suit[b-26kpgak14t],
.playing-card[data-suit="spade"] .card-suit[b-26kpgak14t] {
    color: #000;
}

.playing-card[data-suit="diamond"] .card-suit[b-26kpgak14t],
.playing-card[data-suit="heart"] .card-suit[b-26kpgak14t] {
    color: #e74c3c;
}

/* One of the cards a hovered or pinned result chip points at. A transform moves nothing else, so
   the table's height budget is the same with or without a highlight. */
.playing-card.card-highlighted[b-26kpgak14t],
.playing-card.card-highlighted:hover[b-26kpgak14t] {
    transform: translateY(-10px);
    border-color: #d4a017;
    box-shadow: 0 0 0 2px #ffd700, 0 6px 16px rgba(255, 215, 0, 0.55);
}

/* Responsive design for smaller screens */
@media (max-width: 480px) {
    .playing-card[b-26kpgak14t] {
        width: 50px;
        height: 68px;
    }

    .card-rank[b-26kpgak14t] {
        font-size: 12px;
    }

    .card-suit[b-26kpgak14t] {
        font-size: 14px;
    }
}
/* /Components/Table/PokerTable.razor.rz.scp.css */
/* The table, action bar included, has to fit the space under the header in a 1366x768 viewport
   with the first-visit banner above it (the browser gate asserts it), so the vertical rhythm is
   deliberately tight: every rem here is paid for twice, once per seat row.
   On a taller screen the table grows to the bottom of its tab pane, and the spare height goes
   between the rows, so the action bar stays on the table's bottom edge. */
.poker-table[b-skrils77k6] {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
    padding: 0.6rem 0.75rem;
    background: linear-gradient(135deg, #1a5f3f 0%, #2d8659 100%);
    border-radius: 8px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

.table-seats-row[b-skrils77k6] {
    display: flex;
    justify-content: center;
    align-items: stretch;
    flex-wrap: wrap;
    gap: 0.75rem;
    width: 100%;
    max-width: var(--demo-table-row-max-width);
}

.table-center[b-skrils77k6] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.4rem;
    background: rgba(255, 255, 255, 0.05);
    padding: 0.5rem 1rem;
    border-radius: 8px;
    border: 2px solid rgba(255, 255, 255, 0.1);
    width: 100%;
    max-width: 600px;
}

/* Seven to ten seats: the finished hand's ten result chips take three lines of a 600px centre, a
   line more than the six-seat table pays, and at 1366x768 that pushes the action bar off the
   screen. 900px holds five chips a line, so the chips stay on two. */
.poker-table-large .table-center[b-skrils77k6] {
    max-width: 900px;
}

.community-cards[b-skrils77k6] {
    display: flex;
    gap: 0.5rem;
    justify-content: center;
    min-height: 66px;
    align-items: center;
    flex-wrap: wrap;
}

.empty-board[b-skrils77k6] {
    color: rgba(255, 255, 255, 0.5);
    font-size: 14px;
    font-style: italic;
}

.pot-info[b-skrils77k6] {
    text-align: center;
}

.pot-row[b-skrils77k6] {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 0.75rem;
    color: #fff;
    font-size: 18px;
    font-weight: 700;
}

.pot-label[b-skrils77k6] {
    opacity: 0.8;
}

.pot-value[b-skrils77k6] {
    color: #ffd700;
}

.pot-breakdown[b-skrils77k6] {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 1rem;
    font-size: 12px;
    color: rgba(255, 255, 255, 0.7);
}

/* Amber reads on the table's green felt in both themes. */
.blind-raised[b-skrils77k6] {
    color: #ffd666;
    font-weight: 600;
}

.pot-small[b-skrils77k6] {
    opacity: 0.8;
}

/* The finished hand's outcome, one chip per seat that reached the result, in seat order. Chips
   wrap rather than stack so six seats cost two lines of the centre, not six. */
.hand-results[b-skrils77k6] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.35rem 0.5rem;
}

.hand-result[b-skrils77k6] {
    display: inline-flex;
    align-items: baseline;
    gap: 0.4rem;
    padding: 0.15rem 0.6rem;
    border-radius: 999px;
    border: 1px solid rgba(255, 255, 255, 0.25);
    background: rgba(0, 0, 0, 0.25);
    color: #fff;
    font-size: 12px;
}

/* A chip points at the cards of its hand: hovering previews them, a click keeps them lit. */
.hand-result[b-skrils77k6] {
    cursor: pointer;
    transition: background-color 0.15s ease, box-shadow 0.15s ease;
}

.hand-result:hover[b-skrils77k6],
.hand-result:focus-visible[b-skrils77k6],
.hand-result-selected[b-skrils77k6] {
    outline: none;
    background: rgba(0, 0, 0, 0.45);
    box-shadow: 0 0 0 2px #ffd700;
}

.hand-result-name[b-skrils77k6] {
    font-weight: 600;
}

.hand-result-rank[b-skrils77k6] {
    opacity: 0.75;
}

.hand-result-net[b-skrils77k6] {
    font-weight: 700;
}

.result-winner[b-skrils77k6] {
    border-color: #6ac88a;
}

.result-winner .hand-result-net[b-skrils77k6] {
    color: #90ee90;
}

.result-loser .hand-result-net[b-skrils77k6] {
    color: #ff8a8a;
}

.result-neutral .hand-result-net[b-skrils77k6] {
    color: rgba(255, 255, 255, 0.7);
}

/* Responsive design for smaller screens */
@media (max-width: 768px) {
    .poker-table[b-skrils77k6] {
        padding: 0.5rem;
        gap: 0.5rem;
    }

    .table-seats-row[b-skrils77k6] {
        gap: 0.5rem;
    }

    .table-center[b-skrils77k6] {
        padding: 0.5rem;
    }
}
/* /Components/Table/Seat.razor.rz.scp.css */
.seat[b-hhhge4x9g8] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.25rem;
    padding: 0.4rem 0.6rem;
    background: rgba(255, 255, 255, 0.1);
    border: 2px solid rgba(255, 255, 255, 0.2);
    border-radius: 8px;
    min-width: 124px;
    transition: all 0.3s ease;
    color: #fff;
    position: relative;
}

.seat-acting[b-hhhge4x9g8] {
    background: rgba(255, 215, 0, 0.2);
    border-color: #ffd700;
    box-shadow: 0 0 12px rgba(255, 215, 0, 0.5);
}

.seat-folded[b-hhhge4x9g8] {
    opacity: 0.5;
    background: rgba(128, 128, 128, 0.1);
    border-color: rgba(255, 255, 255, 0.1);
}

.seat-all-in[b-hhhge4x9g8] {
    background: rgba(220, 20, 60, 0.2);
    border-color: rgba(220, 20, 60, 0.5);
}

.seat-left[b-hhhge4x9g8] {
    opacity: 0.4;
    background: rgba(128, 128, 128, 0.1);
    border-style: dashed;
}

/* Overlaid on the seat's top edge rather than a row of its own: the seat keeps the height the
   browser gate pins, and the control is there only between hands. */
.seat-stand-up[b-hhhge4x9g8],
.seat-buy-in[b-hhhge4x9g8],
.seat-kick[b-hhhge4x9g8],
.badge-left[b-hhhge4x9g8] {
    position: absolute;
    top: -10px;
    right: 6px;
    padding: 0 0.5rem;
    border-radius: 9px;
    font-size: 10px;
    font-weight: 700;
    line-height: 18px;
    white-space: nowrap;
}

.seat-stand-up[b-hhhge4x9g8],
.seat-buy-in[b-hhhge4x9g8] {
    border: 1px solid rgba(255, 255, 255, 0.5);
    background: rgba(0, 0, 0, 0.65);
    color: #fff;
    cursor: pointer;
}

.seat-stand-up:hover[b-hhhge4x9g8],
.seat-kick:hover[b-hhhge4x9g8] {
    background: #cf1322;
    border-color: #cf1322;
}

/* Kick is on the bottom edge's right corner: the top edge has no room for a third button, and the
   buy-in note, centred there, is pushed to the left corner to make room. */
.seat-kick[b-hhhge4x9g8] {
    top: auto;
    bottom: -10px;
}

.seat-kick-confirm[b-hhhge4x9g8] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.2rem;
    font-size: 11px;
}

.seat-kick-buttons[b-hhhge4x9g8] {
    display: flex;
    gap: 0.25rem;
}

.seat-kick-yes[b-hhhge4x9g8],
.seat-kick-no[b-hhhge4x9g8] {
    height: 24px;
    padding: 0 0.5rem;
    border: 1px solid rgba(255, 255, 255, 0.5);
    border-radius: 6px;
    background: rgba(0, 0, 0, 0.45);
    color: #fff;
    font-size: 11px;
    cursor: pointer;
}

.seat-kick-yes[b-hhhge4x9g8] {
    border-color: #cf1322;
    background: #cf1322;
}

/* Top up / Rebuy take the top edge's left corner, Stand up its right one. */
.seat-buy-in[b-hhhge4x9g8] {
    right: auto;
    left: 6px;
}

.seat-buy-in:hover[b-hhhge4x9g8] {
    background: #237804;
    border-color: #237804;
}

/* Laid on the seat's bottom edge, the mirror of the buttons on its top edge: a full-ring table at
   1366x768 has no height to spare, so a line in the seat's flow would push the table off the screen
   (the browser gate pins it). */
.seat-buy-in-info[b-hhhge4x9g8] {
    position: absolute;
    bottom: -10px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: 0.4rem;
    padding: 0 0.5rem;
    border: 1px solid rgba(255, 255, 255, 0.3);
    border-radius: 9px;
    background: rgba(0, 0, 0, 0.75);
    font-size: 10px;
    font-weight: 700;
    line-height: 16px;
    white-space: nowrap;
}

.seat-pending[b-hhhge4x9g8] {
    color: #90ee90;
}

.seat-rebuys[b-hhhge4x9g8] {
    color: rgba(255, 255, 255, 0.8);
}

.badge-left[b-hhhge4x9g8] {
    background: #8c8c8c;
    color: #fff;
}

.badge[b-hhhge4x9g8] {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    font-size: 10px;
    font-weight: 700;
    text-align: center;
    line-height: 1;
}

.badge-dealer[b-hhhge4x9g8] {
    background: #ffd700;
    color: #000;
}

.badge-small-blind[b-hhhge4x9g8] {
    background: #87ceeb;
    color: #000;
}

.badge-big-blind[b-hhhge4x9g8] {
    background: #ff6b6b;
    color: #fff;
}

.seat-content[b-hhhge4x9g8] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.25rem;
    flex: 1 1 auto;
    width: 100%;
    text-align: center;
}

.seat-name[b-hhhge4x9g8] {
    font-weight: 600;
    font-size: 14px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 100%;
}

/* One line: the badges, the stack and the hand's delta. */
.seat-stack[b-hhhge4x9g8] {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: center;
    gap: 0.3rem;
    min-height: 18px;
    font-size: 12px;
    white-space: nowrap;
}

.stack-amount[b-hhhge4x9g8] {
    font-weight: 700;
    color: #ffd700;
}

.delta-positive[b-hhhge4x9g8] {
    color: #90ee90;
    font-size: 11px;
}

.delta-negative[b-hhhge4x9g8] {
    color: #ff6b6b;
    font-size: 11px;
}

.seat-hole-cards[b-hhhge4x9g8] {
    display: flex;
    gap: 0.35rem;
}

/* A single line pinned to the bottom of the seat: seats in a row share its height, so one without
   a last action leaves its spare space under the cards rather than between them and the name. */
.seat-last-action[b-hhhge4x9g8] {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: baseline;
    justify-content: center;
    margin-top: auto;
    white-space: nowrap;
    gap: 0.35rem;
    font-size: 12px;
    background: rgba(0, 0, 0, 0.3);
    padding: 0.15rem 0.5rem;
    border-radius: 4px;
    width: 100%;
}

.action-type[b-hhhge4x9g8] {
    font-weight: 600;
    color: #87ceeb;
}

.action-size[b-hhhge4x9g8] {
    color: #ffd700;
    font-weight: 600;
}

/* Responsive design */
@media (max-width: 480px) {
    .seat[b-hhhge4x9g8] {
        min-width: 120px;
        padding: 0.75rem;
    }

    .seat-name[b-hhhge4x9g8] {
        font-size: 12px;
    }

    .seat-stack[b-hhhge4x9g8] {
        font-size: 11px;
    }

    .badge[b-hhhge4x9g8] {
        width: 18px;
        height: 18px;
        font-size: 10px;
    }
}
/* /Components/Table/SeatAmountForm.razor.rz.scp.css */
/* Laid over the seat's own face rather than added to its flow: a full-ring table at 1366x768 has no
   height to spare, so a seat that grew would push the table off the screen (the browser gate pins
   it). The seat is the containing block; min-height lets the form run past a seat shorter than its
   two lines instead of squeezing them. Two lines, the amount over the buttons, so it fits the seat's
   own width at the narrowest gate width with ten seats in a row. */
.seat-amount-form[b-qomdpiyzbf] {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    box-sizing: border-box;
    min-height: 100%;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: center;
    gap: 0.25rem;
    padding: 0.3rem 0.5rem;
    border-radius: 6px;
    background: rgba(20, 20, 20, 0.97);
    font-size: 12px;
}

.seat-amount-input[b-qomdpiyzbf] {
    box-sizing: border-box;
    width: 100%;
    height: 24px;
    padding: 0 0.4rem;
    border: 1px solid rgba(255, 255, 255, 0.4);
    border-radius: 4px;
    background: #fff;
    color: #1f1f1f;
}

.seat-amount-buttons[b-qomdpiyzbf] {
    display: flex;
    gap: 0.25rem;
}

.seat-amount-confirm[b-qomdpiyzbf],
.seat-amount-cancel[b-qomdpiyzbf] {
    flex: 1 1 0;
    height: 24px;
    padding: 0 0.25rem;
    border: 1px solid rgba(255, 255, 255, 0.5);
    border-radius: 6px;
    background: rgba(0, 0, 0, 0.45);
    color: #fff;
    font-size: 11px;
    cursor: pointer;
}

.seat-amount-confirm:disabled[b-qomdpiyzbf] {
    cursor: not-allowed;
    opacity: 0.5;
}
/* /Components/Table/SeatJoinForm.razor.rz.scp.css */
/* The toggle is the only part in the action bar's flow. The panel opens upward over the table, so
   neither opening it nor queueing a player changes the height the browser gate pins. */
.seat-join[b-tgdifctt86] {
    position: relative;
    flex: 0 0 auto;
}

.seat-join-toggle[b-tgdifctt86],
.seat-join-add[b-tgdifctt86],
.seat-join-remove[b-tgdifctt86] {
    border: 1px solid rgba(255, 255, 255, 0.5);
    border-radius: 6px;
    background: rgba(0, 0, 0, 0.45);
    color: #fff;
    cursor: pointer;
}

.seat-join-toggle[b-tgdifctt86] {
    height: 40px;
    padding: 0 1rem;
    font-weight: 600;
}

.seat-join-add:disabled[b-tgdifctt86] {
    cursor: not-allowed;
    opacity: 0.5;
}

.seat-join-panel[b-tgdifctt86] {
    position: absolute;
    bottom: calc(100% + 0.5rem);
    left: 0;
    z-index: 10;
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.5rem 0.75rem;
    width: max-content;
    max-width: min(34rem, 90vw);
    padding: 0.6rem 0.75rem;
    border: 1px solid rgba(255, 255, 255, 0.3);
    border-radius: 8px;
    background: rgba(20, 20, 20, 0.95);
    color: #fff;
    font-size: 12px;
}

.seat-join-panel label[b-tgdifctt86] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}

.seat-join-panel select[b-tgdifctt86],
.seat-join-panel input[b-tgdifctt86] {
    height: 28px;
    padding: 0 0.4rem;
    border: 1px solid rgba(255, 255, 255, 0.4);
    border-radius: 4px;
    background: #fff;
    color: #1f1f1f;
}

.seat-join-name[b-tgdifctt86] {
    width: 9rem;
}

.seat-join-buyin[b-tgdifctt86] {
    width: 6rem;
}

.seat-join-add[b-tgdifctt86] {
    height: 28px;
    padding: 0 0.75rem;
}

.seat-join-queued[b-tgdifctt86] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.15rem 0.5rem;
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.15);
}

.seat-join-remove[b-tgdifctt86] {
    width: 18px;
    height: 18px;
    padding: 0;
    line-height: 1;
}

.seat-join-none[b-tgdifctt86] {
    color: rgba(255, 255, 255, 0.7);
}
/* /Layout/MainLayout.razor.rz.scp.css */
/* Layout container styles.

   Every rule here is ::deep, which compiles to [b-hash] X and therefore needs an ancestor
   carrying this component's scope attribute. Blazor emits that attribute only on elements
   written as markup in MainLayout.razor, so the div.layout-root wrapper there is what makes
   these rules match the AntDesign components underneath it (issue #72). */
[b-a8th94kx97] .layout-full-height {
    height: 100vh;
    display: flex;
    flex-direction: column;
}

[b-a8th94kx97] .layout-header {
    /* Theme tokens from app.css; a scoped stylesheet cannot define its own (fact 22). */
    background-color: var(--demo-header-bg);
    border-bottom: 1px solid var(--demo-header-border);
    padding: 0 24px;
    display: flex;
    align-items: center;
    height: 64px;
}

[b-a8th94kx97] .layout-header-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    gap: 24px;
}

[b-a8th94kx97] .layout-title {
    margin: 0;
    font-size: 20px;
    font-weight: 500;
}

[b-a8th94kx97] .layout-title-group {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 10px;
}

[b-a8th94kx97] .layout-commit-sha {
    font-size: 12px;
    white-space: nowrap;
}

[b-a8th94kx97] .layout-title a {
    color: var(--demo-header-text);
    text-decoration: none;
}

[b-a8th94kx97] .layout-title a:hover {
    color: #1890ff;
}

[b-a8th94kx97] .layout-header-actions {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-left: auto;
}

[b-a8th94kx97] .layout-walkthrough-button {
    font-size: 18px;
    height: 32px;
    width: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
}

[b-a8th94kx97] .layout-github-link {
    color: #1890ff;
    text-decoration: none;
    white-space: nowrap;
}

[b-a8th94kx97] .layout-github-link:hover {
    text-decoration: underline;
}

[b-a8th94kx97] .layout-body {
    flex: 1;
    overflow: hidden;
}

[b-a8th94kx97] .layout-content {
    height: 100%;
    overflow: auto;
}
