/* Shared lounge palette. Keep green on the felt and meaningful live states;
   neutral surfaces and gold actions provide the surrounding hierarchy. */
:root {
  --bg:#101214;
  --panel:#1b1f23;
  --surface-raised:#252b31;
  --line:#394149;
  --muted:#b1b8c0;
  --cream:#f0eee5;
  --gold:#f0bd5b;
  --brass:#d6ad63;
  --brass-hover:#e2bc7c;
  --gold-ink:#241b0b;
  --gold-surface:#332b1d;
  --green:#69d3a2;
}

/* Page chrome and shared panels. */
.sidebar,.topbar,.mobile-header,.mobile-room .mobile-header { background:#16191d; border-color:var(--line); }
.mobile-nav { background:var(--panel); border-color:var(--line); }
.lobby-table-card,.content-panel,.chat-card,.session-card,.table-options-card,
.mobile-table-sheet,.sidebar-player-card { background:var(--panel); border-color:var(--line); box-shadow:none; }
.game-board,body:has(.game-board:fullscreen) .game-board { background:var(--panel); border-color:var(--line); }
.moon-card,.tournament-banner { background:var(--surface-raised); border-color:var(--line); }
.sidebar-account { background:#16191d; border-color:var(--line); }
.sidebar-practice-summary,.table-options-heading,footer { border-color:var(--line); }

/* Neutral secondary copy stays readable without competing with headings. */
.main-nav>button,.mobile-nav>button,.brand small,.sidebar-section,.support,
.moon-card p,.moon-eyebrow,.sidebar-wallet-heading,.sidebar-practice-summary,
.sidebar-profile-copy small,.sidebar-profile>svg,.online-sidebar,
.section-heading p,.page-heading p,.lobby-table-head,.lobby-table-card>p,
.table-card-metrics small,.table-browse-note,.content-panel>p,
.tournament-banner p,.tournament-metrics span,footer,.footer-brand,footer button,
.table-topline,.table-bottom,.panel-tabs button,.chat-notice,.chat-empty,
.message-meta time,.session-stats span,.session-bottom p,.session-bottom strong,
.room-controls-note,.join-strip p,.mobile-wallet-copy small { color:var(--muted); }
.table-card-metrics strong,.tournament-metrics b,.room-setting strong,
.table-options-heading h2,.sidebar-profile-copy strong,.sidebar-practice-summary b,
.chat-message p { color:var(--cream); }
.table-card-metrics small { color:#969fa8; }
.table-card-metrics strong { color:#c3c7c8; }

/* Navigation and filters: selected states retain their underline or border. */
.main-nav>button:hover,.filter-buttons button:hover:not(.selected),
.funding-tabs button:hover:not(.selected) { background:var(--surface-raised); color:var(--cream); }
.main-nav>button.active { background:var(--gold-surface); color:var(--gold); box-shadow:none; }
.mobile-nav>button.active,.panel-tabs button.selected { color:var(--gold); }
.mobile-nav>button.active:after,.panel-tabs button.selected:after { background:var(--gold); }
.filter-buttons,.funding-tabs { background:var(--panel); border-color:var(--line); }
.filter-buttons button,.funding-tabs button { color:var(--muted); }
.filter-buttons button.selected,.funding-tabs button.selected {
  background:var(--gold-surface); color:var(--gold); box-shadow:inset 0 0 0 1px #80632f;
}
.funding-tabs button.selected { border-color:transparent; box-shadow:none; }
.stake-filters button.selected { border-color:transparent; box-shadow:none; }

/* Soft brass connects the lobby's table actions with the primary actions. */
.primary-button,.table-card-button,#dialog-body .primary-button {
  background:var(--brass); color:var(--gold-ink); border-color:var(--brass);
}
.primary-button:is(:hover,:focus-visible):not(:disabled),
.table-card-button:is(:hover,:focus-visible):not(:disabled),
#dialog-body .primary-button:is(:hover,:focus-visible):not(:disabled) {
  background:var(--brass-hover); border-color:var(--brass-hover);
}
.primary-button:disabled,.table-card-button:disabled { opacity:.4; }
.primary-button:disabled,.table-card-button:disabled { background:var(--brass); border-color:var(--brass); }
main:not(.in-table) .secondary-button,.mobile-room .mobile-room-tools>button,
.mobile-room .mobile-profile,.mobile-profile,.room-leave {
  background:var(--surface-raised); color:var(--cream); border-color:var(--line);
}
.mobile-wallet,.mobile-room .mobile-wallet {
  background:var(--gold-surface); color:var(--gold); border-color:#80632f;
}
.mobile-room .mobile-room-tools>button:hover { background:#323b44; color:var(--gold); }
.sidebar-wallet-amount,.sidebar-wallet-heading>svg,.table-options-heading>svg { color:var(--gold); }

/* Poker retains its green felt; surrounding controls use neutral surfaces. */
.mobile-room .mobile-actions,.chat-notice,.chat-form { background:var(--surface-raised); border-color:var(--line); }
.chat-form input::placeholder { color:var(--muted); }
.live-badge { background:#19392d; color:#91e7bd; }
.connection i,.online-dot { background:var(--green); }
.empty-seat { opacity:1; }
.empty-seat-circle { background:#172a22; border-color:#6f8677; color:#b4c4b9; }
.empty-seat>span:last-child { color:#a7b5ad; text-shadow:0 1px 3px #101214; }
.table-corner-label,.hand-status { color:#dae5da; }
.room-setting input[type=checkbox] { accent-color:var(--gold); }

/* Dialogs share the same charcoal surfaces and brass actions as the lobby. */
#app-dialog,.mobile-table-sheet { background:var(--panel); color:var(--cream); border-color:var(--line); box-shadow:0 18px 70px #0008; scrollbar-color:var(--line) transparent; }
#app-dialog::backdrop,.mobile-table-sheet::backdrop { background:#080a0dcc; }
#app-dialog .dialog-header h2,#dialog-body h3 { color:var(--cream); }
#app-dialog .dialog-header .icon-button { color:var(--muted); background:transparent; }
#app-dialog .dialog-header .icon-button:hover { color:var(--cream); background:var(--surface-raised); }
#dialog-body,#dialog-body label,#dialog-body .auth-intro,#dialog-body .auth-form>p,
#dialog-body .modal-eyebrow,#dialog-body .deposit-network-note,#dialog-body .deposit-pending p { color:var(--muted); }
#dialog-body .privacy-note { color:var(--muted)!important; }
#dialog-body .auth-switch { color:var(--brass)!important; }
#dialog-body button:not(.primary-button):not(.auth-switch),#app-dialog .secondary-button {
  background:var(--surface-raised); border-color:var(--line); color:var(--cream);
}
#dialog-body button:not(.primary-button):not(.auth-switch):hover { background:#30373f; }
#dialog-body input:not([type=checkbox]):not([type=radio]):not([type=range]),#dialog-body select,#dialog-body textarea {
  background:var(--bg); border-color:var(--line); color:var(--cream);
}
#dialog-body input::placeholder,#dialog-body textarea::placeholder { color:#88929c; }
#dialog-body input[type=checkbox],#dialog-body input[type=radio] { accent-color:var(--brass); }
#app-dialog :is(input,select,textarea,button,a):focus-visible { outline:2px solid var(--brass); outline-offset:3px; }
#dialog-body .modal-coin { background:var(--gold-surface); color:var(--brass); }
#dialog-body .modal-balance { color:var(--brass); }
#dialog-body .modal-stats { border-color:var(--line); }
#dialog-body .modal-stats b { color:var(--cream); }

/* Remaining pages: neutral surfaces, consistent copy and restrained accents. */
.reward-feature,.affiliate-earnings,.fair-intro,.admin-dashboard-treasury { background:var(--surface-raised); border-color:var(--line); }
.affiliate-metrics article,.admin-dashboard-metric,.admin-dashboard-metric.is-accent,
.practice-wallet-note,.wallet-cash-history,.fair-batch,.fair-report,.fair-reveal-time,
.admin-chart-inspector { background:var(--panel); border-color:var(--line); }
.deposit-asset,.deposit-address-box,.withdrawal-policy,.withdrawal-review>code,
.leaderboard-avatar,.transfer-symbol,.admin-presence-avatar,.tournament-entries>span,
.wallet-tether,.sidebar-profile>img { background:var(--surface-raised); border-color:var(--line); }
.affiliate-notice,.cash-rake-disclosure,.wallet-pending-notice,.deposit-pending,
.table-admin-pending,.table-admin-policy,.fair-policy { background:var(--gold-surface); border-color:var(--line); color:var(--muted); }
.fair-policy { color:var(--muted)!important; }
.affiliate-rate-tag,.table-admin-tier,.admin-transfer-badge,.fair-policy-button,
.deposit-network small { background:var(--gold-surface); color:var(--brass); border-color:var(--line); }
.affiliate-copy-row input,.table-admin-form select,.admin-dashboard-range select {
  background:var(--bg); color:var(--cream); border-color:var(--line);
}
.table-admin-form input[readonly],.table-admin-form select:disabled { background:var(--surface-raised); }
.demo-badge,.deposit-launch-tag,.admin-data-badge,.admin-network-tag { color:var(--muted); border-color:var(--line); }
.profile-stats,.setting-row,.setting-slider,.history-item,.leaderboard-labels,.leaderboard-row,
.help-grid details,.wallet-overview .real-balance,.transfer-row,.demo-wallet-tools,
.withdrawal-review .withdrawal-total,.fair-history-callout,.fair-details,.fair-check,
.affiliate-rate,.affiliate-table th,.affiliate-table td,.affiliate-table tr,
.table-admin-card-bottom,.admin-dashboard-gas,.admin-dashboard-table th,.admin-dashboard-table td,
.admin-presence-list li,.admin-transfer-row,.admin-dashboard-pagination,.session-bottom { border-color:var(--line); }
.loading-state p,.empty-state p,.empty-symbol,.wallet-protection,.wallet-stack-note,
.wallet-overview .real-balance,.deposit-asset small,.deposit-asset strong span,.deposit-network,
.deposit-panel .deposit-network-note,.deposit-panel .deposit-pending p,.deposit-roadmap,
.demo-wallet-tools,.practice-wallet-note>span,.practice-wallet-note p,.deposit-address-box>span,
.wallet-finality-note,.transfer-row small,.transfer-status,.wallet-empty,.wallet-pending-notice p,
.withdrawal-policy>span,.withdrawal-review>span,.withdrawal-review>label,.withdrawal-review>div,
.wallet-cash-history p,.profile-stats span,.setting-row p,.setting-slider,.history-item small,
.history-item svg,.leaderboard-labels,.help-grid details p,.reward-feature p,
.fair-intro p,.fair-explain-grid p,.fair-note,.fair-details p,.fair-history-callout p,
.fair-receipt-heading,.fair-report p,.fair-report li,.fair-check small,.fair-metadata dt,
.fair-reveal-time span,.fair-reveal-time small,.affiliate-section-title p,
.affiliate-link-panel label,.affiliate-earnings>span,.affiliate-earnings>small,
.affiliate-metrics span,.affiliate-table th,.affiliate-table td,.affiliate-table td small,
.affiliate-empty>svg,.affiliate-empty p,.affiliate-pagination>span,.affiliate-explainer p,
.affiliate-intro p,.affiliate-table td:nth-child(2),.affiliate-table td[data-label]:before,
.table-admin-toolbar>p,.table-admin-facts dt,.table-admin-card-bottom>span,
.table-admin-card .table-admin-card-note,.table-admin-page-note,.table-admin-pending p,
.table-admin-policy p { color:var(--muted); }
.deposit-asset strong,.deposit-network strong,.deposit-roadmap strong,.practice-wallet-note>strong,
.withdrawal-policy b,.withdrawal-review>code,.withdrawal-review>div b,.fair-metadata dd,
.affiliate-table td strong,.table-admin-facts dd,.session-stats strong { color:var(--cream); }
.wallet-page-amount,.profile-stats strong,.history-detail-profit,.history-suit,
.deposit-address-box code,.withdrawal-review>strong,.wallet-pending-notice strong,
.deposit-pending strong,.deposit-lock,.leaderboard-avatar,.transfer-symbol,.transfer-row a,
.affiliate-earnings>strong,.affiliate-rate,.affiliate-explainer article>span,
.affiliate-earnings .text-button,.setting-slider>span,.fair-batch strong,
.fair-reveal-time strong,.fair-check-status { color:var(--brass); }
.toggle-setting { background:var(--surface-raised); color:var(--muted); border-color:var(--line); }
.toggle-setting[aria-pressed=true] { background:var(--gold-surface); color:var(--brass); }
.setting-row input,.setting-slider input,.admin-chart-inspector input { accent-color:var(--brass); }
.fair-emblem { background:var(--gold-surface); border-color:var(--brass); color:var(--brass); box-shadow:none; }
.reward-coin { background:var(--gold-surface); border-color:var(--brass); box-shadow:none; }
.reward-coin svg { color:var(--brass); }
.fair-batch-dots i { background:var(--surface-raised); border-color:var(--line); }
.fair-batch-dots i.current { background:var(--brass); border-color:var(--brass); box-shadow:none; }
.fair-report.failed { background:#30231e; border-color:#a96d58; }
.fair-report.matched { border-color:#65805a; }
.fair-check-status.pass,.session-stats strong.profit { color:#9ac88d; }
.fair-check-status.fail { color:#e0a089; }
.room-topup { background:var(--gold-surface); color:var(--brass); border-color:var(--line)!important; }
.mobile-room .mobile-table-options>.secondary-button { background:var(--surface-raised); border-color:var(--line); color:var(--cream); }
.mobile-room .mobile-table-options .table-fairness { border-color:var(--line); }
.admin-dashboard { --admin-line:var(--line); }
.admin-dashboard-treasury>div:first-child>span:first-child,.admin-dashboard-treasury>p,
.admin-dashboard-liabilities>p,.admin-dashboard-gas>span,.admin-dashboard-treasury>small,
.admin-dashboard-liabilities dt,.admin-dashboard-metric>span,.admin-dashboard-metric>small,
.admin-chart-legend,.admin-chart-inspector label,.admin-chart-selected-values>span,
.admin-dashboard-note,.admin-dashboard-table thead th,.admin-dashboard-table small,
.admin-dashboard-table td,.admin-presence-counts span,.admin-presence-list li>div>span,
.admin-presence-empty,.admin-transfer-player time,.admin-transfer-amount small,
.admin-transfer-state small,.admin-dashboard-pagination>span,.admin-dashboard-empty,
.admin-dashboard-loading,.admin-dashboard-empty p,.admin-treasury-address { color:var(--muted); }
.admin-dashboard-liabilities dd,.admin-dashboard-gas>strong,.admin-dashboard-metric>strong,
.admin-chart-inspector label strong,.admin-chart-selected-values strong,.admin-dashboard-table strong,
.admin-presence-list strong,.admin-transfer-player strong,.admin-transfer-amount>strong,
.admin-dashboard-empty h3 { color:var(--cream); }
.admin-dashboard-treasury>strong,.admin-dashboard-metric.is-accent>strong,
.admin-presence-counts strong,.admin-transfer-state a,.admin-treasury-address span { color:var(--brass); }
.admin-presence-list { scrollbar-color:var(--line) transparent; }
.eyebrow,.steps p { color:var(--muted); }
.privacy-note { color:var(--muted)!important; }
.text-button { color:var(--brass); }
.secondary-button svg,.secondary-button svg use { color:inherit; }
.wallet-overview .real-balance strong { color:var(--cream); }
.connection-banner { background:var(--gold-surface); border-color:var(--line); color:var(--brass); }
.connection-banner button { background:var(--brass); color:var(--gold-ink); }

/* Signed-in review: chart chrome, admin metadata and token details. */
.admin-dashboard { --admin-muted:var(--muted); }
.admin-chart-grid line { stroke:var(--line); }
.admin-chart-grid text,.admin-chart-date { fill:var(--muted); }
.admin-chart-cursor line { stroke:var(--muted); }
.admin-chart-rake { stroke:var(--brass); }
.admin-chart-cursor circle { fill:var(--brass); stroke:var(--panel); }
#admin-chart-net-dot { fill:#91b77e; }
.admin-chart-legend i { background:var(--brass); }
.admin-chart-legend>span:last-child i { background:#91b77e; }
.admin-presence-avatar { color:var(--cream); }
.asset-icon { background:var(--surface-raised); color:var(--brass); }
.asset-check { color:#9ac88d; }
.token-details { color:var(--muted); }
.token-details a { color:var(--brass); }
.token-details code { color:var(--cream); }

/* Local Bitcoin wallet uses the same restrained wallet surfaces. */
.bitcoin-deposit-panel { margin-top: 20px; }
.bitcoin-deposit-panel .real-balance { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding: 12px 0; }
.bitcoin-deposit-panel .real-balance strong { color: #c3c7c8; white-space: nowrap; }

/* One deposit panel, with the network and address tied to the selected coin. */
.deposit-coin-selector { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; margin: 24px 0; }
.deposit-coin-option { display: flex; align-items: center; gap: 12px; width: 100%; min-width: 0; padding: 16px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-raised); color: var(--muted); text-align: left; cursor: pointer; }
.deposit-coin-option.is-selected { background: var(--gold-surface); border-color: transparent; color: var(--cream); }
.deposit-coin-option .asset-icon { flex: 0 0 auto; font-size: 26px; color: var(--brass); }
.deposit-coin-option strong { display: block; font-size: 16px; font-weight: 600; }
.deposit-coin-option small { display: block; margin-top: 4px; font-size: 12px; color: var(--muted); }
.deposit-coin-option .asset-check { margin-left: auto; min-width: 12px; color: var(--brass); }
.deposit-coin-option:focus-visible { outline: 2px solid var(--brass); outline-offset: 3px; }
@media(max-width:440px) { .deposit-coin-option { gap: 8px; padding: 12px 10px; } .deposit-coin-option strong { font-size: 14px; } .deposit-coin-option .asset-icon { font-size: 22px; } }

/* Account security stays behind the settings actions. */
.account-security-actions{border-top:1px solid var(--line);margin:24px 0;padding-top:20px}
.security-buttons{display:flex;flex-wrap:wrap;gap:12px}
.security-key{display:grid;gap:8px;margin:20px 0;color:var(--muted)}
.security-key input,.security-recovery{box-sizing:border-box;width:100%;padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--cream);font:14px/1.8 monospace}
.security-recovery{margin:14px 0;resize:vertical}
@media(max-width:520px){.security-buttons{flex-direction:column}.security-buttons button{width:100%}}

.profile-account-actions{display:flex;flex-direction:column;align-items:stretch;gap:12px}
.profile-account-actions>button{margin:0;width:100%;justify-content:center}

.security-qr{display:flex;justify-content:center;margin:20px 0}
.security-qr img{display:block;width:256px;max-width:100%;height:auto;background:#fff;border-radius:8px}

.seat .avatar>span.avatar-countdown{display:grid;place-items:center;width:100%;height:100%;font:600 20px Outfit,system-ui,sans-serif;color:var(--cream);background:var(--gold-surface);border-radius:inherit;font-variant-numeric:tabular-nums;line-height:1;min-width:0;filter:none;box-sizing:border-box}
.seat .avatar>span.avatar-countdown.timer-urgent{color:var(--gold)}
@media(max-width:600px){.seat .avatar>span.avatar-countdown{font-size:16px}}

.seat .seat-info{position:relative;overflow:hidden}
.seat-time-track{position:absolute!important;left:0;right:0;bottom:0;height:3px!important;background:var(--gold-surface);overflow:hidden;pointer-events:none}
.seat-time-fill{display:block!important;width:100%;height:100%!important;background:var(--brass);transform-origin:left center;transition:transform .5s linear}
.seat-time-fill.timer-urgent{background:var(--gold)}
@media(prefers-reduced-motion:reduce){.seat-time-fill{transition:none}}

/* Action badges sit above the name card; the time track clips itself. */
.seat .seat-info{overflow:visible}
.seat .seat-info>.seat-action-badge{position:absolute;left:50%;top:0;transform:translate(-50%,-90%);z-index:5;display:block;padding:6px 13px;border:1px solid var(--brass);border-radius:6px;background:var(--bg);color:var(--brass);font:600 14px/1.2 Outfit,system-ui,sans-serif;letter-spacing:.04em;white-space:nowrap;box-shadow:0 2px 6px #0005}
.seat .seat-info>.seat-action-badge[data-action-kind="fold"]{color:var(--muted);border-color:var(--line)}
@media(max-width:600px){.seat .seat-info>.seat-action-badge{padding:5px 10px;font-size:12px}}

.seat-time-fill.timer-bank{background:var(--gold)}

.bet-controls[hidden],.raise-controls[hidden],.raise-button[hidden]{display:none!important}

/* Readable betting actions on desktop and phones. */
.action-panel .action-buttons>button{font-size:20px;font-weight:600;line-height:1.2;padding:16px 8px;min-height:78px}
.action-panel .action-buttons>button>span{font-size:12px;line-height:1.4;margin-top:7px;opacity:.9}
.action-panel .raise-button svg{width:18px;height:18px}
@media(max-width:600px){
 .action-panel .action-buttons>button{font-size:19px;padding:15px 6px;min-height:80px}
 .action-panel .action-buttons>button>span{font-size:11px;line-height:1.35}
}

/* Use surface/text emphasis rather than outlines for keyboard focus. */
*,*::before,*::after { outline:none!important; }
:is(button,input,textarea,select,[role="button"],[tabindex]):focus-visible {
  filter:brightness(1.2);
}
:is(input,textarea,select):focus-visible { background-color:#30373c!important; }
a:focus-visible { color:var(--brass); text-decoration:underline; text-underline-offset:4px; }
@media(forced-colors:active) { :focus-visible { outline:2px solid Highlight!important; } }

/* Match Twentynine: center and scale the fixed-width challenge on narrow phones. */
.auth-turnstile { position:relative; width:100%; min-width:0; height:65px; }
.auth-turnstile:empty { display:none; }
.auth-turnstile > div { position:absolute; top:0; left:50%; width:300px; line-height:0; transform:translateX(-50%); transform-origin:top center; }
#auth-form { min-width:0; }

.mobile-header .mobile-login { display:flex; align-items:center; justify-content:center; gap:6px; }
.mobile-header .mobile-login svg { width:17px; height:17px; flex:none; }
.mobile-header .mobile-login > span { font-size:13px; font-weight:650; white-space:nowrap; }
