/* Poker Club — poker skin (docs/pc/poker-skin.md). Loaded ONLY by /pc/poker (pcPokerPage.ts); /poker keeps its look.
 * Same visual family as the /pc home and the chess board: deep-space nebula, glossy black lacquer, gold toward the
 * players, electric blue toward the centre, glass panels. EVERY colour, glass value and duration is a --pc-* token from
 * /pc/theme/pc-theme.css (translucency = rgba(var(--pc-*-rgb), α)); poker.css's --pk-* tokens are re-pointed at them.
 * Motion: transform / opacity only, 150–400 ms tokens; poker.js finishes queued animations on every new update
 * (anim.catchUp), so a late frame never plays a stale animation. */

.pcx-poker .pk-root {
  --pk-bg: transparent;
  --pk-surface: rgba(var(--pc-panel-rgb), .78);
  --pk-surface-2: rgba(var(--pc-chrome-rgb), .07);
  --pk-border: var(--pc-glass-border-neutral);
  --pk-text: var(--pc-text);
  --pk-muted: var(--pc-dim);
  --pk-accent: var(--pc-blue);
  --pk-gold: var(--pc-gold-hi);
  --pk-green: var(--pc-ok);
  --pk-danger: var(--pc-danger);
  --pk-timer: var(--pc-blue);
  --pk-timebank: var(--pc-gold-hi);
  --pk-card-face: var(--pc-card-face);
  --pk-card-red: var(--pc-card-red);
  --pk-card-black: var(--pc-card-ink);
  --pk-font-cond: var(--pc-display);
  --pk-radius: var(--pc-glass-radius);
  background: transparent;
}
.pcx-poker .pk-root[data-mode="table"] { background: transparent; }
/* 4-colour deck (settings menu; per viewer): diamonds blue, clubs green */
.pcx-poker .pk-root[data-deck="4"] { --pk-suit-d: var(--pc-suit4-d); --pk-suit-c: var(--pc-suit4-c); }

/* ── glass: plates, panels, menus, modals ─────────────────────────────────── */
.pcx-poker .pk-plate, .pcx-poker .pk-tcard, .pcx-poker .pk-hero, .pcx-poker .pk-modal, .pcx-poker .pk-menu,
.pcx-poker .pk-toast, .pcx-poker .pk-log, .pcx-poker .pk-pot, .pcx-poker .pk-banner, .pcx-poker .pk-empty {
  background: var(--pc-glass-fill-solid);
  border: var(--pc-glass-border-w) solid var(--pc-glass-border-neutral);
  box-shadow: var(--pc-glass-highlight), var(--pc-glass-shadow);
}
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .pcx-poker .pk-plate, .pcx-poker .pk-hero, .pcx-poker .pk-modal, .pcx-poker .pk-menu, .pcx-poker .pk-toast, .pcx-poker .pk-pot, .pcx-poker .pk-banner {
    background: var(--pc-glass-fill);
    -webkit-backdrop-filter: blur(var(--pc-glass-blur)) saturate(var(--pc-glass-saturate));
    backdrop-filter: blur(var(--pc-glass-blur)) saturate(var(--pc-glass-saturate));
  }
}
/* the solid-glass operator switch (pcSettings PC_SWITCHES.glassDuringPlay) applies to the live table */
[data-pc-glass-play="solid"] .pcx-poker .pk-root[data-mode="table"] .pk-plate,
[data-pc-glass-play="solid"] .pcx-poker .pk-root[data-mode="table"] .pk-pot { background: var(--pc-glass-fill-solid); -webkit-backdrop-filter: none; backdrop-filter: none; }

/* ── lobby ────────────────────────────────────────────────────────────────── */
.pcx-poker .pk-hero { border-color: var(--pc-glass-border-gold); background-image: linear-gradient(90deg, rgba(var(--pc-bg-rgb), .2), rgba(var(--pc-bg-rgb), 0)); }
.pcx-poker .pk-hero-title { font-family: var(--pc-display); color: var(--pc-text); letter-spacing: .01em; }
.pcx-poker .pk-bank-amt { font-family: var(--pc-display); color: var(--pc-gold-hi); }
.pcx-poker .pk-tcard { border-color: var(--pc-glass-border-blue); transition: transform var(--pc-dur) var(--pc-ease), border-color var(--pc-dur-fast); }
.pcx-poker .pk-tcard:hover { border-color: var(--pc-gold); transform: translate3d(0, -2px, 0); }
.pcx-poker .pk-tcard-name, .pcx-poker .pk-lvl { font-family: var(--pc-display); }
.pcx-poker .pk-lvl { background: rgba(var(--pc-chrome-rgb), .07); color: var(--pc-dim); }
.pcx-poker .pk-lvl[data-tier="3"] { color: var(--pc-blue-hi); }
.pcx-poker .pk-lvl[data-tier="4"] { color: var(--pc-chrome); }
.pcx-poker .pk-lvl[data-tier="5"] { color: var(--pc-gold-hi); }
.pcx-poker .pk-seatbar i { background: rgba(var(--pc-chrome-rgb), .12); }
.pcx-poker .pk-seatbar i.pk-h { background: var(--pc-gold); box-shadow: 0 0 6px var(--pc-gold-glow); }
.pcx-poker .pk-seatbar i.pk-b { background: var(--pc-blue); }
.pcx-poker .pk-chip-tag.pk-sandbox { color: var(--pc-gold-hi); border-color: var(--pc-glass-border-gold); }
.pcx-poker .pk-bot-tag { background: rgba(var(--pc-blue-rgb), .85); color: var(--pc-white); }

/* ── table: glossy black rail, nebula felt, gold edge toward the seats, blue glow toward the pot ── */
.pcx-poker .pk-felt, .pcx-poker .pk-felt.pk-img {
  background: radial-gradient(ellipse at center, var(--pc-table-under) 0%, var(--pc-bg) 75%);   /* until the 2D render arrives (the rail image is retired) */
  box-shadow: inset 0 1px 0 rgba(var(--pc-white-rgb), .18), 0 0 0 1px rgba(var(--pc-white-rgb), .07), 0 22px 60px rgba(var(--pc-ink-rgb), .65);
}
.pcx-poker .pk-felt::before {
  content: ''; position: absolute; inset: calc(var(--u) * 1.6); border-radius: 50%;
  background: var(--pc-felt-image) center / cover, var(--pc-space-fallback);
  box-shadow: 0 0 0 1.5px var(--pc-felt-edge-seat), 0 0 14px var(--pc-felt-edge-seat-glow), inset 0 0 0 1px rgba(var(--pc-blue-rgb), .55), inset 0 0 70px var(--pc-felt-edge-pot);
}
.pcx-poker .pk-center { z-index: 2; }
.pcx-poker .pk-pot { color: var(--pc-gold-hi); font-family: var(--pc-display); border-color: var(--pc-glass-border-gold); }
.pcx-poker .pk-sidepots, .pcx-poker .pk-last { color: var(--pc-dim); }

/* seats: dark glass plates; the player to act gets a neon ring that pulses (opacity/transform only) */
.pcx-poker .pk-plate { border-radius: 999px; }
.pcx-poker .pk-name { color: var(--pc-text); }
.pcx-poker .pk-stack { font-family: var(--pc-display); color: var(--pc-gold-hi); }
.pcx-poker .pk-seat.pk-acting .pk-plate { border-color: var(--pc-blue); box-shadow: 0 0 0 1px var(--pc-blue), 0 0 18px var(--pc-blue-glow); }
.pcx-poker .pk-av { background-color: rgba(var(--pc-chrome-rgb), .1); }
.pcx-poker .pk-seat.pk-acting .pk-av::after {
  content: ''; position: absolute; inset: -7px; border-radius: 50%; border: 1.5px solid var(--pc-blue-hi); pointer-events: none;
  animation: pcpk-ring 1.2s var(--pc-ease) infinite;
}
@keyframes pcpk-ring { from { transform: scale(.92); opacity: .9; } to { transform: scale(1.18); opacity: 0; } }
.pcx-poker .pk-ring circle { stroke: var(--pc-blue); filter: drop-shadow(0 0 2px var(--pc-blue-glow)); }
.pcx-poker .pk-ring.pk-tb circle { stroke: var(--pc-gold-hi); }
.pcx-poker .pk-ring.pk-late circle { stroke: var(--pc-danger); }
.pcx-poker .pk-seat.pk-winner .pk-plate { border-color: var(--pc-gold); box-shadow: 0 0 0 1px var(--pc-gold), 0 0 22px var(--pc-gold-glow); }
.pcx-poker .pk-status { color: var(--pc-dim); }
.pcx-poker .pk-status.pk-allin { color: var(--pc-white); background: var(--pc-danger); }
.pcx-poker .pk-desc { color: var(--pc-gold-hi); }
.pcx-poker .pk-eq { background: rgba(var(--pc-blue-rgb), .85); color: var(--pc-white); }
.pcx-poker .pk-empty { border-style: dashed; color: var(--pc-dim); }
.pcx-poker .pk-empty:hover:not(:disabled) { color: var(--pc-text); border-color: var(--pc-gold); }
.pcx-poker .pk-dealer { background: radial-gradient(circle at 35% 30%, var(--pc-white), var(--pc-chrome) 60%, rgba(var(--pc-chrome-rgb), .7)); color: var(--pc-card-ink);
  box-shadow: 0 0 0 1px var(--pc-gold), 0 2px 6px rgba(var(--pc-ink-rgb), .6); }
.pcx-poker .pk-seat.pk-enter { animation-duration: var(--pc-dur-slow); }

/* chips: one colour family per denomination tier (poker.js chipTier → data-d 1…6) */
.pcx-poker .pk-chipimg { width: calc(var(--u) * 2.5); height: calc(var(--u) * 2.5); background: var(--pc-chip-3-image) center / cover no-repeat; box-shadow: 0 0 0 1px var(--pc-chip-3-rim), 0 1px 3px rgba(var(--pc-ink-rgb), .6); }
.pcx-poker .pk-chipimg[data-d="1"] { background-image: var(--pc-chip-1-image); box-shadow: 0 0 0 1px var(--pc-chip-1-rim), 0 1px 3px rgba(var(--pc-ink-rgb), .6); }
.pcx-poker .pk-chipimg[data-d="2"] { background-image: var(--pc-chip-2-image); box-shadow: 0 0 0 1px var(--pc-chip-2-rim), 0 1px 3px rgba(var(--pc-ink-rgb), .6); }
.pcx-poker .pk-chipimg[data-d="3"] { background-image: var(--pc-chip-3-image); box-shadow: 0 0 0 1px var(--pc-chip-3-rim), 0 1px 3px rgba(var(--pc-ink-rgb), .6); }
.pcx-poker .pk-chipimg[data-d="4"] { background-image: var(--pc-chip-4-image); box-shadow: 0 0 0 1px var(--pc-chip-4-rim), 0 1px 3px rgba(var(--pc-ink-rgb), .6); }
.pcx-poker .pk-chipimg[data-d="5"] { background-image: var(--pc-chip-5-image); box-shadow: 0 0 0 1px var(--pc-chip-5-rim), 0 1px 3px rgba(var(--pc-ink-rgb), .6); }
.pcx-poker .pk-chipimg[data-d="6"] { background-image: var(--pc-chip-6-image); box-shadow: 0 0 0 1px var(--pc-chip-6-rim), 0 1px 3px rgba(var(--pc-ink-rgb), .6); }
.pcx-poker .pk-bet { font-family: var(--pc-display); color: var(--pc-text); text-shadow: 0 1px 2px rgba(var(--pc-ink-rgb), .8); }

/* cards: faces drawn in SVG by poker.js (high-contrast ink on a light face); backs = nebula + thin neon frame + PC mark */
.pcx-poker .pk-card { background: var(--pc-card-face); box-shadow: 0 0 0 1px rgba(var(--pc-ink-rgb), .35), 0 3px 8px rgba(var(--pc-ink-rgb), .55); }
/* backs (redesign): deep blue + gold-foil engraving + centre emblem — all in card-back.webp */
.pcx-poker .pk-card.pk-back { position: relative; border: 0; background: var(--pc-card-back-image) center / 100% 100%, var(--pc-space-fallback); box-shadow: 0 3px 8px rgba(var(--pc-ink-rgb), .55); }
/* empty board slots: faint outlines etched in the glass (gold, a blue line inside), not dark boxes */
.pcx-poker .pk-card.pk-slot { background: transparent; box-shadow: none; border: 1px solid rgba(var(--pc-gold-rgb), .5); outline: 1px solid rgba(var(--pc-blue-rgb), .4); outline-offset: calc(var(--u) * -0.45); }
.pcx-poker .pk-card.pk-win { box-shadow: 0 0 0 2px var(--pc-gold-hi), 0 0 14px var(--pc-gold-glow); }
.pcx-poker .pk-card.pk-flip { animation-duration: var(--pc-dur-slow); }
.pcx-poker .pk-card.pk-flip, .pcx-poker .pk-fly { backface-visibility: hidden; }

/* 2D | 3D toggle (table header, next to Settings) */
.pcx-poker .pk-viewtog { background: var(--pc-glass-fill-solid); border-color: var(--pc-glass-border-neutral); }
.pcx-poker .pk-viewbtn { font-family: var(--pc-display); color: var(--pc-dim); }
.pcx-poker .pk-viewbtn[aria-pressed="true"] { background: var(--pc-gold); color: var(--pc-on-accent); }
.pcx-poker .pk-3d-boot .pk-stage::after { border-color: var(--pc-line-2); border-top-color: var(--pc-gold-hi); }
[data-pc-motion="off"] .pcx-poker .pk-3d-boot .pk-stage::after { animation: none; }

/* action bar */
.pcx-poker .pk-actions { background: linear-gradient(transparent, rgba(var(--pc-bg-rgb), .9) 30%); }
.pcx-poker .pk-act { font-family: var(--pc-display); color: var(--pc-text); border: var(--pc-glass-border-w) solid var(--pc-glass-border-neutral);
  background: var(--pc-glass-fill-solid); transition: transform var(--pc-dur-fast) ease, opacity var(--pc-dur-fast) ease; }
.pcx-poker .pk-act-call { background: rgba(var(--pc-blue-rgb), .22); border-color: var(--pc-blue); box-shadow: 0 0 12px var(--pc-blue-glow); }
.pcx-poker .pk-act-raise { background: var(--pc-gold); border-color: var(--pc-gold-hi); color: var(--pc-on-accent); box-shadow: 0 0 12px var(--pc-gold-glow); }
.pcx-poker .pk-act:active:not(:disabled) { transform: scale(.97); }
.pcx-poker .pk-sizer input[type="range"] { accent-color: var(--pc-gold); }
.pcx-poker .pk-sizer input[type="number"], .pcx-poker .pk-preset { background: var(--pc-glass-fill-solid); color: var(--pc-text); border-color: var(--pc-glass-border-neutral); font-family: var(--pc-display); }
.pcx-poker .pk-preset.pk-on { border-color: var(--pc-gold); color: var(--pc-gold-hi); }
.pcx-poker .pk-btn { background: var(--pc-glass-fill-solid); border-color: var(--pc-glass-border-neutral); color: var(--pc-text); font-family: var(--pc-display); }
.pcx-poker .pk-btn.pk-primary { background: var(--pc-gold); color: var(--pc-on-accent); border-color: var(--pc-gold-hi); }
.pcx-poker .pk-banner { color: var(--pc-gold-hi); font-family: var(--pc-display); border-color: var(--pc-glass-border-gold); }
.pcx-poker .pk-conn.pk-bad { color: var(--pc-danger); }
.pcx-poker .pk-bubble { background: var(--pc-card-face); color: var(--pc-card-ink); }

/* motion off: the shared PC toggle (data-pc-motion) or the OS setting unless the toggle says on */
[data-pc-motion="off"] .pcx-poker .pk-seat.pk-acting .pk-av::after,
[data-pc-motion="off"] .pcx-poker .pk-ring.pk-tb { animation: none; }
[data-pc-motion="off"] .pcx-poker .pk-fly, [data-pc-motion="off"] .pcx-poker .pk-bet, [data-pc-motion="off"] .pcx-poker .pk-dealer,
[data-pc-motion="off"] .pcx-poker .pk-tcard, [data-pc-motion="off"] .pcx-poker .pk-act { transition: none !important; }
@media (prefers-reduced-motion: reduce) {
  :root:not([data-pc-motion="on"]) .pcx-poker .pk-seat.pk-acting .pk-av::after { animation: none; }
  :root:not([data-pc-motion="on"]) .pcx-poker .pk-tcard, :root:not([data-pc-motion="on"]) .pcx-poker .pk-act { transition: none !important; }
}

/* ── the table page has no bar (2026-10-24): the shared game overlay (/games/pcg/shell/overlay.js) sits inside the table root ── */
.pcx-poker .pk-stack-w { gap: .3em; }
.pcx-poker .pk-pot .nut-amt, .pcx-poker .pk-sidepots .nut-amt { vertical-align: -2px; }
.pcx-poker .pk-sit-cur .nut-tok { vertical-align: middle; }
.pcx-poker .pk-bank-amt .nut-amt { gap: .3em; }
/* the table page (2026-10-24): no bar — the shared game overlay (/games/pcg/shell/overlay.js) sits inside the table root;
   the Settings menu (poker.js settingsMenu) drops below its icons */
.pcx-poker .pk-root { position: relative; }
.pcx-poker .pcg-ov .pk-menu { top: 40px; right: 4px; text-shadow: none; }
/* the "pick a seat" pill (glass, centred under the board) */
.pcx-poker .pk-pick { background: var(--pc-glass-fill-solid); border-color: var(--pc-glass-border-gold); color: var(--pc-text); }
.pcx-poker .pk-seatctl { color: var(--pc-dim); }
}
}

/* ── round 3 (2026-10-22) ─────────────────────────────────────────────────────────────────────────────────────────────── */
/* page background (layout pass 2026-10-25): the table sits on the SITE's own game-page background (views/pc/gamePageBg.ts) —
   no sky, no nebula glow, no star layers here. */
.pcx-poker .pk-root[data-mode="table"] > .pk-stage { z-index: 1; }

/* seat pods size to their text: 11u–18u wide; a name still too wide drops one font step, then wraps to two lines
   (poker.js fitPods); names past 16 characters are cut with … in poker.js, the full name in the tooltip */
.pcx-poker .pk-seat { width: max-content; min-width: calc(var(--u) * 11); max-width: max(calc(var(--u) * 18), 136px); }   /* px floor: phone u is tiny, the 10 px text floor is not */
.pcx-poker .pk-plate { padding-right: calc(var(--u) * 1.3); }
.pcx-poker .pk-name { text-overflow: clip; }
.pcx-poker .pk-seat.pk-tight .pk-name, .pcx-poker .pk-seat.pk-tight .pk-desc { font-size: max(9px, calc(var(--u) * 1.05)); }
.pcx-poker .pk-seat.pk-wrap .pk-name, .pcx-poker .pk-seat.pk-wrap .pk-desc { white-space: normal; line-height: 1.1; }   /* at word breaks only */
.pcx-poker .pk-desc { overflow: hidden; text-overflow: clip; font-size: max(10px, calc(var(--u) * 1.15)); }
/* initials avatars, one colour per player (poker.js avatarHues) */
.pcx-poker .pk-av.pk-av-ini { display: grid; place-items: center; background: hsl(var(--pk-av-h, 210) 46% 28%);
  box-shadow: inset 0 0 0 1.5px hsl(var(--pk-av-h, 210) 62% 58% / .75); }
.pcx-poker .pk-av-t { font-family: var(--pc-display); font-size: max(11px, calc(var(--u) * 1.5)); line-height: 1; color: var(--pc-white); letter-spacing: .03em; }
/* the last action as a badge ON the pod's top edge (replaces loose text on the felt) */
.pcx-poker .pk-status.pk-badge { bottom: 100%; margin-bottom: calc(var(--u) * -0.5); padding: calc(var(--u) * 0.18) calc(var(--u) * 0.75); border-radius: 999px;
  font-size: max(10px, calc(var(--u) * 1.05)); line-height: 1.25; letter-spacing: .06em; z-index: 3; color: var(--pc-text);
  background: rgba(var(--pc-panel-rgb), .96); border: 1px solid var(--pc-line-2); box-shadow: 0 2px 6px rgba(var(--pc-ink-rgb), .5); }
.pcx-poker .pk-badge[data-kind="fold"] { color: var(--pc-dim); }
/* the kind is the border colour; the text stays full white (coloured text on the dark pill measured < 4.5:1) */
.pcx-poker .pk-badge[data-kind="check"], .pcx-poker .pk-badge[data-kind="call"] { border-color: var(--pc-blue); color: var(--pc-white); }
.pcx-poker .pk-badge[data-kind="bet"], .pcx-poker .pk-badge[data-kind="raise"], .pcx-poker .pk-badge[data-kind="win"] { border-color: var(--pc-gold); color: var(--pc-white); }
.pcx-poker .pk-badge[data-kind="allin"], .pcx-poker .pk-status.pk-badge.pk-allin { background: color-mix(in srgb, var(--pc-danger) 50%, var(--pc-bg)); border-color: color-mix(in srgb, var(--pc-danger) 50%, var(--pc-bg)); color: var(--pc-white); }
/* the floating action line on the felt is gone (badges say it); kept for screen readers */
.pcx-poker .pk-last { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
/* 2D hole cards: every opponent the same size + angle (4.2u, ±4°); the hero's 1.3× (5.5u), lifted */
.pcx-poker .pk-seat-cards .pk-card { width: calc(var(--u) * 4.2); height: calc(var(--u) * 5.88); }
.pcx-poker .pk-seat-cards .pk-card:first-child { transform: rotate(-4deg); margin-right: calc(var(--u) * -1.4); }
.pcx-poker .pk-seat-cards .pk-card + .pk-card { transform: rotate(4deg); }
/* PLO 4 / 5: flat overlapping fan (poker table config 2026-10-24) */
.pcx-poker .pk-seat-cards.pk-hole-4 .pk-card, .pcx-poker .pk-seat-cards.pk-hole-5 .pk-card { transform: none; width: calc(var(--u) * 3.6); height: calc(var(--u) * 5.04); margin-right: calc(var(--u) * -2.3); }
.pcx-poker .pk-seat-cards.pk-hole-4 .pk-card:last-child, .pcx-poker .pk-seat-cards.pk-hole-5 .pk-card:last-child { margin-right: 0; }
.pcx-poker .pk-hero-cards .pk-card { box-shadow: 0 0 0 1px rgba(var(--pc-ink-rgb), .35), 0 10px 22px rgba(var(--pc-ink-rgb), .6); }
/* sitting down: the pod slides up into place */
.pcx-poker .pk-seat.pk-seat-in { animation: pcpk-seat-in var(--pc-dur-slow) var(--pc-ease) both; }
@keyframes pcpk-seat-in { from { opacity: 0; transform: translate(-50%, -50%) translateY(calc(var(--u) * 3)) scale(.85); } to { opacity: 1; transform: translate(-50%, -50%); } }
[data-pc-motion="off"] .pcx-poker .pk-seat.pk-seat-in { animation: none; }
@media (prefers-reduced-motion: reduce) { :root:not([data-pc-motion="on"]) .pcx-poker .pk-seat.pk-seat-in { animation: none; } }
/* my turn: the action row centred, buttons full size */
.pcx-poker .pk-act-row, .pcx-poker .pk-sizer, .pcx-poker .pk-pre { justify-content: center; }
.pcx-poker .pk-info { text-align: center; color: var(--pc-text); }
.pcx-poker .pk-act { min-width: 150px; min-height: 52px; font-size: 1.15rem; border-radius: 12px; }

/* ── "Sit at seat N": a glass dialog over a dimmed, blurred table; a bottom sheet on phones ── */
.pcx-poker .pk-root.pk-dlg-open .pk-pick { visibility: hidden; }
.pcx-poker .pk-sitdlg-bg { position: fixed; inset: 0; z-index: 40; display: grid; place-items: center; padding: 16px; background: rgba(var(--pc-ink-rgb), .6); }
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .pcx-poker .pk-sitdlg-bg { background: rgba(var(--pc-ink-rgb), .45); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
}
.pcx-poker .pk-modal.pk-sitdlg { width: min(420px, 100%); gap: 12px; padding: 22px 22px 18px; border-radius: 18px; color: var(--pc-text); font-family: var(--pc-body);
  background: rgba(var(--pc-panel-rgb), .94); border: 1px solid var(--pc-glass-border-neutral); box-shadow: var(--pc-glass-highlight), 0 24px 60px rgba(var(--pc-ink-rgb), .6);
  -webkit-backdrop-filter: blur(18px) saturate(1.35); backdrop-filter: blur(18px) saturate(1.35); }
.pcx-poker .pk-sitdlg h2 { font-family: var(--pc-display); font-size: 1.5rem; line-height: 1.2; color: var(--pc-text); }
.pcx-poker .pk-sitdlg p { margin: 0; }
.pcx-poker .pk-sit-sub { color: var(--pc-dim); font-size: .95rem; margin-top: -6px !important; }
.pcx-poker .pk-sit-bal { color: var(--pc-gold-hi); font-family: var(--pc-display); font-size: 1rem; }
.pcx-poker .pk-sit-lbl { color: var(--pc-dim); font-size: .85rem; margin-bottom: -6px; }
.pcx-poker .pk-sit-amt { display: flex; align-items: baseline; gap: 8px; border-bottom: 1px solid var(--pc-line-2); padding-bottom: 4px; }
.pcx-poker .pk-sitdlg.is-invalid .pk-sit-amt { border-bottom-color: var(--pc-danger); }
.pcx-poker .pk-sit-cur { font-family: var(--pc-display); font-size: 1.6rem; color: var(--pc-gold-hi); }
.pcx-poker .pk-sit-amt input { flex: 1; min-width: 0; width: 100%; background: transparent; border: 0; outline: none; padding: 0; color: var(--pc-text);
  font-family: var(--pc-display); font-size: 2.3rem; line-height: 1.1; font-variant-numeric: tabular-nums; }
.pcx-poker .pk-sit-amt input:focus-visible { box-shadow: 0 2px 0 var(--pc-gold); }
.pcx-poker .pk-sit-bb { color: var(--pc-dim); font-size: 1rem; white-space: nowrap; }
.pcx-poker .pk-sit-range { width: 100%; accent-color: var(--pc-gold); margin: 4px 0 0; }
.pcx-poker .pk-sit-lim { display: flex; justify-content: space-between; color: var(--pc-dim); font-size: .8rem; margin-top: -6px; }
.pcx-poker .pk-sit-pre { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.pcx-poker .pk-sit-pre .pk-preset { height: 36px; border-radius: 10px; font-size: .9rem; border: 1px solid var(--pc-line-2); }
.pcx-poker .pk-sit-err { min-height: 1.3em; color: var(--pc-danger); font-size: .9rem; }
.pcx-poker .pk-sit-err:empty { min-height: 0; }
.pcx-poker .pk-sit-opt { display: grid; grid-template-columns: auto 1fr; column-gap: 10px; align-items: center; color: var(--pc-text); font-size: .95rem; }
.pcx-poker .pk-sit-opt input { width: 18px; height: 18px; accent-color: var(--pc-gold); margin: 0; }
.pcx-poker .pk-sit-opt small { grid-column: 2; color: var(--pc-dim); font-size: .8rem; line-height: 1.35; }
.pcx-poker .pk-sitdlg .pk-modal-row { gap: 10px; margin-top: 4px; }
.pcx-poker .pk-sitdlg .pk-modal-row .pk-btn { flex: 1; height: 48px; border-radius: 12px; font-size: 1.05rem; letter-spacing: .04em; border: 1px solid var(--pc-line-2); }
.pcx-poker .pk-sitdlg .pk-sit-cancel { background: rgba(var(--pc-white-rgb), .06); color: var(--pc-text); }
.pcx-poker .pk-sitdlg .pk-sit-ok { background: var(--pc-gold); color: var(--pc-on-accent); border-color: var(--pc-gold-hi); }
.pcx-poker .pk-sitdlg .pk-sit-ok:disabled { opacity: 1; background: rgba(var(--pc-white-rgb), .08); color: var(--pc-dim); border-color: var(--pc-line-2); }
@media (max-width: 600px) {
  .pcx-poker .pk-sitdlg-bg { place-items: end stretch; padding: 0; }
  .pcx-poker .pk-modal.pk-sitdlg { width: 100%; border-radius: 18px 18px 0 0; padding: 20px 16px calc(16px + env(safe-area-inset-bottom)); }
}
/* P0 2026-10-25: head · scrollable body · footer actions outside the scroll — the dialog never outgrows the screen and
   Sit down / Cancel are always on it. Phone landscape: compact, 2 columns (amount + slider | quick buttons + options),
   actions under the right column. */
.pcx-poker .pk-modal.pk-sitdlg { max-height: calc(100dvh - 32px); min-height: 0; }
.pcx-poker .pk-sit-head, .pcx-poker .pk-sit-col { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.pcx-poker .pk-sit-body { display: flex; flex-direction: column; gap: 12px; flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain;
  margin: 0 -4px; padding: 2px 4px; }
.pcx-poker .pk-sitdlg .pk-modal-row.pk-sit-foot { flex: none; }
@media (orientation: landscape) and (max-height: 540px) {
  .pcx-poker .pk-sitdlg-bg { place-items: center; padding: max(6px, env(safe-area-inset-top)) max(10px, env(safe-area-inset-right)) max(6px, env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left)); }
  .pcx-poker .pk-modal.pk-sitdlg { width: min(720px, 100%); border-radius: 14px; gap: 8px; padding: 10px 16px 10px;
    max-height: calc(100dvh - max(6px, env(safe-area-inset-top)) - max(6px, env(safe-area-inset-bottom))); }
  .pcx-poker .pk-sit-head { flex-direction: row; align-items: baseline; gap: 10px; flex-wrap: wrap; }
  .pcx-poker .pk-sitdlg h2 { font-size: 1.15rem; }
  .pcx-poker .pk-sit-sub { margin-top: 0 !important; font-size: .85rem; }
  .pcx-poker .pk-sit-body { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 18px; align-items: start; }
  .pcx-poker .pk-sit-col { gap: 8px; }
  .pcx-poker .pk-sit-bal { font-size: .9rem; }
  .pcx-poker .pk-sit-lbl { margin-bottom: -4px; }
  .pcx-poker .pk-sit-amt input { font-size: 1.6rem; }
  .pcx-poker .pk-sit-cur { font-size: 1.2rem; }
  .pcx-poker .pk-sit-lim { margin-top: -4px; }
  .pcx-poker .pk-sit-pre { grid-template-columns: repeat(2, 1fr); }
  .pcx-poker .pk-sit-pre .pk-preset { height: 34px; }
  .pcx-poker .pk-sit-opt { font-size: .85rem; }
  .pcx-poker .pk-sit-opt small { font-size: .75rem; line-height: 1.25; }
  .pcx-poker .pk-sitdlg .pk-modal-row.pk-sit-foot { width: calc(50% - 9px); align-self: flex-end; margin-top: 0; }
  .pcx-poker .pk-sitdlg .pk-modal-row .pk-btn { height: 42px; font-size: .95rem; }
}
/* the side-pot line sits on the felt: full text colour (dim failed 4.5:1 there) */
.pcx-poker .pk-sidepots { color: var(--pc-text); }

/* ── table redesign (2026-10-22): match the /pc lobby game art — black glass over deep space, gold + electric-blue etching,
   chrome and gold metal. docs/pc/poker-skin.md § Table redesign ── */
/* 2D table (operator spec 2026-10-24): the /nut lobby hero banner's rail — dark padded leather, a stitch line, a warm gold
   rim light along the top edge (NOT chrome) — around the banner's deep-space felt with the gold circuit grid. ONE material:
   the --nh-rail-* / --nh-felt-* tokens of pc-games-core/client/shell/table-frame.css (linked by pcPokerPage on table pages,
   art under /games/pcg/art/) — reused, never copied. Rail ≈ 1.5× the retired 2D render's (inset 6.4% / 3.3% → 9.6% / 4.95%);
   seat positions unchanged. Accent: /nut = cosmic gold; Reloader + alliances = the site accent. 3D keeps its own model. */
.pcx-poker { --pk-rail-accent: var(--ws-accent-fg, var(--ws-brand-primary, var(--pc-gold-hi))); --pk-rail-y: 9.6%; --pk-rail-x: 4.95%; }
/* the shared tokens' url() is relative to table-frame.css, but Chrome resolves a var()'d url against the stylesheet that
   USES it (here /pc/poker/) — so this page re-points the two art tokens at the same files, absolute (same art, no copy) */
.pcx-poker { --nh-rail-image: url('/games/pcg/art/nh-rail-leather.webp'); --nh-felt-image: url('/games/pcg/art/nh-felt.webp'); }
body.pcx-nh .pcx-poker { --pk-rail-accent: var(--pc-gold-hi); }
.pcx-poker .pk-root.pk-portrait { --pk-rail-y: 4.95%; --pk-rail-x: 9.6%; }
.pcx-poker .pk-root:not(.pk-3d):not(.pk-3d-boot) .pk-felt {
  /* a dark wash over the tile: the banner's rail reads as DARK leather at this size */
  background: var(--nh-rail-pad), linear-gradient(rgba(12, 8, 5, .5), rgba(12, 8, 5, .5)), var(--nh-rail-grain) 0 0 / 160px 160px, var(--nh-rail-image) 0 0 / var(--nh-rail-image-size), var(--nh-rail-base, #17110d);
  box-shadow:
    inset 0 2px 0 var(--nh-rail-rim, rgba(236, 196, 120, .85)), inset 0 10px 16px -6px var(--nh-rail-rim-soft, rgba(227, 180, 100, .28)),
    inset 0 -4px 10px rgba(0, 0, 0, .75), 0 0 0 1px rgba(0, 0, 0, .8), 0 -1px 18px -6px var(--nh-rail-rim-soft, rgba(227, 180, 100, .28)),
    0 22px 60px rgba(var(--pc-ink-rgb), .65);
}
/* ::before = the felt (inside the rail) with the gold seam; ::after = the stitch line on the padded rail */
.pcx-poker .pk-root:not(.pk-3d):not(.pk-3d-boot) .pk-felt::before, .pcx-poker .pk-root:not(.pk-3d):not(.pk-3d-boot) .pk-felt::after {
  content: ''; position: absolute; border-radius: 50%; pointer-events: none; animation: none; filter: none; mix-blend-mode: normal; opacity: 1;
}
.pcx-poker .pk-root:not(.pk-3d):not(.pk-3d-boot) .pk-felt::before {
  display: block; inset: var(--pk-rail-y) var(--pk-rail-x);
  /* darker than the banner so cards, bets and the pot read on it */
  background: radial-gradient(ellipse at 50% 45%, rgba(3, 4, 10, .30) 0%, rgba(3, 4, 10, .62) 100%),
    var(--nh-felt-image) center / var(--nh-felt-size, cover), var(--nh-felt-base, #070a18);
  border: 1.5px solid color-mix(in srgb, var(--pk-rail-accent) 70%, transparent);
  box-shadow: 0 0 8px color-mix(in srgb, var(--pk-rail-accent) 35%, transparent), inset 0 0 40px rgba(0, 0, 0, .7);
}
.pcx-poker .pk-root:not(.pk-3d):not(.pk-3d-boot) .pk-felt::after {
  inset: calc(var(--pk-rail-y) * .45) calc(var(--pk-rail-x) * .45); background: none;
  border: 1px dashed var(--nh-rail-stitch, rgba(201, 162, 74, .42)); opacity: .8;
}

/* seat pods: dark glass plates with a thin chrome edge, set into the rail (inner shadow); the active seat / my turn is gold */
.pcx-poker .pk-seat .pk-plate {
  border: 1.5px solid transparent;
  background: linear-gradient(rgba(var(--pc-panel-rgb), .93), rgba(var(--pc-panel-rgb), .93)) padding-box,
    linear-gradient(135deg, var(--pc-chrome-hi), var(--pc-chrome-mid) 32%, var(--pc-chrome) 52%, var(--pc-chrome-lo) 78%, var(--pc-chrome)) border-box;
  -webkit-backdrop-filter: none; backdrop-filter: none;
  box-shadow: inset 0 2px 7px rgba(var(--pc-ink-rgb), .7), 0 3px 10px rgba(var(--pc-ink-rgb), .55);
}
.pcx-poker .pk-seat.pk-acting .pk-plate, .pcx-poker .pk-seat.pk-winner .pk-plate {
  background: linear-gradient(rgba(var(--pc-panel-rgb), .93), rgba(var(--pc-panel-rgb), .93)) padding-box,
    linear-gradient(135deg, var(--pc-gold-pale), var(--pc-gold) 35%, var(--pc-gold-hi) 55%, var(--pc-gold-deep) 80%, var(--pc-gold-hi)) border-box;
  box-shadow: inset 0 2px 7px rgba(var(--pc-ink-rgb), .7), 0 0 18px var(--pc-gold-glow);
}
.pcx-poker .pk-seat.pk-acting .pk-av::after { border-color: var(--pc-gold-hi); }
.pcx-poker .pk-ring circle { stroke: var(--pc-gold-hi); filter: drop-shadow(0 0 2px var(--pc-gold-glow)); }
/* SIT: a glowing empty inset plate */
.pcx-poker .pk-empty { border: 1px solid rgba(var(--pc-blue-rgb), .6); border-style: solid; color: var(--pc-blue-hi); background: rgba(var(--pc-panel-rgb), .82);
  box-shadow: inset 0 2px 10px rgba(var(--pc-ink-rgb), .7), inset 0 0 14px rgba(var(--pc-blue-rgb), .22), 0 0 12px rgba(var(--pc-blue-rgb), .35); letter-spacing: .14em; }
.pcx-poker .pk-empty:hover:not(:disabled) { color: var(--pc-white); border-color: var(--pc-blue-hi); box-shadow: inset 0 2px 10px rgba(var(--pc-ink-rgb), .7), inset 0 0 18px rgba(var(--pc-blue-rgb), .35), 0 0 18px var(--pc-blue-glow); }
/* initials: the body font — the display font's O reads as a zero ("OrbitOwl" showed "00") */
.pcx-poker .pk-av-t { font-family: var(--pc-body); letter-spacing: .02em; }
/* 2D chips: the new top-view chips carry their own rim; no extra ring */
.pcx-poker .pk-chipimg[data-d] { box-shadow: 0 1px 3px rgba(var(--pc-ink-rgb), .6); }
/* 2D seat zones (poker.js zones2d): gold bracket arcs + round pads, non-scaling strokes */
.pcx-poker .pk-zones { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 1; overflow: visible; }
.pcx-poker .pk-zone { fill: none; stroke: var(--pc-gold-hi); stroke-width: 1.6; opacity: .7; vector-effect: non-scaling-stroke; }
.pcx-poker .pk-zone-pad { stroke: var(--pc-gold-hi); stroke-width: 7; stroke-linecap: round; opacity: .8; vector-effect: non-scaling-stroke; }
.pcx-poker .pk-3d .pk-zones { display: none; }
/* the dealer button (2D): a polished gold coin with an engraved "D" (as in 3D) */
.pcx-poker .pk-dealer { background: radial-gradient(circle at 36% 30%, var(--pc-gold-pale), var(--pc-gold-hi) 45%, var(--pc-gold) 100%); color: var(--pc-engrave);
  box-shadow: inset 0 0 0 2px rgba(var(--pc-ink-rgb), .3), inset 0 0 0 4px rgba(var(--pc-gold-rgb), .9), inset 0 0 0 5px rgba(var(--pc-ink-rgb), .25), 0 2px 6px rgba(var(--pc-ink-rgb), .6); }
/* text over the etched surface sits on solid dark glass (the bright line work under bare text measured < 4.5:1) */
.pcx-poker .pk-pot { background: rgba(var(--pc-panel-rgb), .92); }
.pcx-poker .pk-sidepots:not(:empty) { padding: 2px 12px; border-radius: 999px; background: rgba(var(--pc-panel-rgb), .9); border: 1px solid var(--pc-line-2); }
.pcx-poker .pk-empty { color: var(--pc-white); background: rgba(var(--pc-panel-rgb), .94); }

/* ── the action bar OVERLAYS the bottom of the table stage (operator 2026-10-22: "the table shrinks when I sit down") ──
   It used to be a flex row under the stage, so sitting down (92 px) and my turn (195 px) shrank the stage and the table
   with it. Now the stage keeps the full height in every state, so the table has ONE size seated and unseated; poker.js
   fit() and the 3D camera lift the table into its own spare height so --pk-act-reserve px stay clear for the bar (the
   table never shrinks for it). The bar is compact enough to fit the reserve: Sit out / Stand up sit beside it on
   desktop, and on phones Fold / Call / Raise share one row. */
.pcx-poker .pk-root[data-mode="table"] { --pk-act-reserve: 150px; }
.pcx-poker .pk-root[data-mode="table"] > .pk-actions { position: absolute; left: 0; right: 0; bottom: 0; z-index: 7;
  padding: 18px 24px max(12px, env(safe-area-inset-bottom, 0px)); gap: 6px; pointer-events: none;
  background: linear-gradient(transparent, rgba(var(--pc-bg-rgb), .82) 45%); }
.pcx-poker .pk-root[data-mode="table"] > .pk-actions > * { pointer-events: auto; }
.pcx-poker .pk-root[data-mode="table"] > .pk-actions:not(:has(.pk-actions-in:not(:empty))) { background: none; }
.pcx-poker .pk-actions-in { gap: 6px; }
.pcx-poker .pk-info { min-height: 0; font-size: .85rem; line-height: 1.2; }
.pcx-poker .pk-preset { padding: 5px 10px; }
@media (min-width: 768px) {
  .pcx-poker .pk-root[data-mode="table"] .pk-seatctl { position: absolute; right: 24px; bottom: max(12px, env(safe-area-inset-bottom, 0px)); z-index: 1; }
  .pcx-poker .pk-act { min-height: 48px; }
}
@media (max-width: 767px) {
  .pcx-poker .pk-root[data-mode="table"] { --pk-act-reserve: 172px; }
  /* my turn on a phone: only the decision — Sit out / Stand up return when the turn ends; "Your turn" = the hero pod's ring */
  .pcx-poker .pk-actions:has(.pk-act-row .pk-act-fold) .pk-seatctl, .pcx-poker .pk-actions-in:has(.pk-act-fold) > .pk-info { display: none; }
  .pcx-poker .pk-root[data-mode="table"] > .pk-actions { padding: 10px 12px max(10px, env(safe-area-inset-bottom, 0px)); gap: 6px; }
  .pcx-poker .pk-seatctl { gap: 10px; }
  .pcx-poker .pk-seatctl .pk-btn, .pcx-poker .pk-seatctl button { padding: 6px 12px; min-height: 36px; }
  .pcx-poker .pk-act-row { flex-wrap: nowrap; gap: 6px; }
  .pcx-poker .pk-act { min-width: 0; flex: 1 1 0; min-height: 48px; padding: 8px 6px; font-size: 1rem; }
  .pcx-poker .pk-sizer { gap: 6px; flex-wrap: wrap; }
  .pcx-poker .pk-sizer .pk-preset { flex: 1 1 0; min-height: 34px; }
  .pcx-poker .pk-sizer input[type="range"] { min-width: 0; flex: 1 1 60%; max-width: none; }
  .pcx-poker .pk-sizer input[type="number"] { width: 84px; }
}

/* bet amounts (2026-10-24): coin + number on a small dark backdrop, never a bare number on the felt; in 3D the 2D chip
   image stays next to it too (poker.css hides it under .pk-3d) */
.pcx-poker .pk-bet-amt { display: inline-flex; align-items: center; gap: 3px; padding: 1px 6px 1px 4px; border-radius: 999px; line-height: 1.25;
  background: rgba(5, 6, 10, .72); box-shadow: 0 0 0 1px rgba(255, 255, 255, .10); }
.pcx-poker .pk-bet-amt .nut-amt { gap: 3px; }
.pcx-poker.pcx-poker .pk-3d .pk-bet .pk-chipimg { visibility: visible !important; }
/* one pot pill (2026-10-25): "Pot X · Side pot 1: Y" never wraps onto the board */
.pcx-poker .pk-root[data-mode="table"] .pk-pot { white-space: nowrap; }
/* short landscape (phones on their side, ≤ 500 px tall): the compact bar needs less room — the table keeps more height */
@media (max-height: 500px) { .pcx-poker .pk-root[data-mode="table"] { --pk-act-reserve: 124px; } }

/* ── LAYOUT PASS (operator 2026-10-25): THE TOOLBAR holds Leave · Sit out · Stand up (poker.js .pk-tb); the table is CENTRED
   (poker.js fit, dx 0) and takes the height — no bottom reserve, no side column. The bar is split into the two bottom
   corners, over the felt's edge, below the side seats and clear of the hero: Fold · Call · Raise in the BOTTOM-RIGHT thumb
   zone (left of the toolbar), the bet size (presets + amount) in the BOTTOM-LEFT. The bar's own boxes are transparent and
   click-through; only its controls take taps. Phones in landscape: the table may slide --pk-tb-ov px under the toolbar
   strip and is capped at --pk-max-h of the height (poker.js fit). */
.pcx-poker .pk-root.pk-tb .pk-seatctl { display: none !important; }
html.pcg-mob-land .pcx-poker .pk-root.pk-tb[data-mode="table"] { --pk-act-reserve: 0px; --pk-side: 0px; --pk-tb-ov: 22px; --pk-max-h: .94; }
/* run 4: the seat ring 1.6u further in (--pk-ring-in, poker.js ringIn) — the pods overhang the table box less, so the table
   takes >= 90 % of the height on iPhone landscape and every pod stays on screen */
html.pcg-mob-land .pcx-poker .pk-root.pk-tb[data-mode="table"] { --pk-ring-in: 2.8; }
@media (min-width: 901px) { html:not(.pcg-mob) .pcx-poker .pk-root.pk-tb[data-mode="table"] { --pk-act-reserve: 0px; } }
html.pcg-mob-land .pcx-poker .pk-root.pk-tb[data-mode="table"] > .pk-actions,
html:not(.pcg-mob) .pcx-poker .pk-root.pk-tb[data-mode="table"] > .pk-actions {
  left: max(4px, env(safe-area-inset-left, 0px)); right: calc(var(--pcg-tb-rw, calc(var(--pcg-tb-w, 48px) + env(safe-area-inset-right, 0px))) + 4px); top: auto; bottom: 0;   /* rw carries the inset */
  width: auto; box-sizing: border-box; padding: 0 0 max(4px, env(safe-area-inset-bottom, 0px)); background: none; pointer-events: none; }
html.pcg-mob-land .pcx-poker .pk-root.pk-tb .pk-actions-in, html:not(.pcg-mob) .pcx-poker .pk-root.pk-tb .pk-actions-in {
  display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: space-between; align-items: flex-end; gap: 4px; pointer-events: none; }
html.pcg-mob-land .pcx-poker .pk-root.pk-tb .pk-actions-in > *, html:not(.pcg-mob) .pcx-poker .pk-root.pk-tb .pk-actions-in > * { pointer-events: auto; }
html.pcg-mob-land .pcx-poker .pk-root.pk-tb .pk-actions-in > .pk-info, html:not(.pcg-mob) .pcx-poker .pk-root.pk-tb .pk-actions-in > .pk-info { display: none; }
html.pcg-mob-land .pcx-poker .pk-root.pk-tb .pk-act-row, html:not(.pcg-mob) .pcx-poker .pk-root.pk-tb .pk-act-row { order: 2; margin-left: auto; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 4px; }
html.pcg-mob-land .pcx-poker .pk-root.pk-tb .pk-sizer, html:not(.pcg-mob) .pcx-poker .pk-root.pk-tb .pk-sizer { order: 1; display: flex; flex-wrap: nowrap; gap: 3px; align-items: center; }
/* phones: 66 px decisions, 36 px presets, a 64 px amount box, no slider */
html.pcg-mob-land .pcx-poker .pk-root.pk-tb .pk-act-row .pk-act { flex: none; width: 66px; min-height: 44px; padding: 3px 4px; font-size: 12px; line-height: 1.15; white-space: normal; }
html.pcg-mob-land .pcx-poker .pk-root.pk-tb .pk-sizer input[type="range"] { display: none; }
html.pcg-mob-land .pcx-poker .pk-root.pk-tb .pk-sizer .pk-preset { flex: none; min-height: 36px; width: 36px; min-width: 0; padding: 2px; font-size: 12px; }
html.pcg-mob-land .pcx-poker .pk-root.pk-tb .pk-sizer input[type="number"] { width: 64px; box-sizing: border-box; min-height: 36px; }
/* desktop: 96 px decisions, kept 100 px in from the toolbar (the site's floating support button owns the very corner); the
   sizer keeps a short slider */
html:not(.pcg-mob) .pcx-poker .pk-root.pk-tb[data-mode="table"] > .pk-actions { right: calc(var(--pcg-tb-w, 48px) + 100px); left: 12px; padding-bottom: 12px; }
html:not(.pcg-mob) .pcx-poker .pk-root.pk-tb .pk-act-row .pk-act { flex: none; width: 96px; min-width: 0; }
html:not(.pcg-mob) .pcx-poker .pk-root.pk-tb .pk-sizer input[type="range"] { width: 120px; min-width: 0; flex: none; }
/* very short (iPhone with Safari's bars up): the size presets give way — the amount box + the three decisions stay */
@media (max-height: 360px) { html.pcg-mob-land .pcx-poker .pk-root.pk-tb .pk-sizer .pk-preset { display: none; } }

/* fix/mobile-landscape-tables: phones in landscape — the 3D camera fits the table to ITS host box (pc-poker-3d.js fit), so the
   host runs from the notch (safe-area left) to the toolbar (--pcg-tb-rw = its rendered width, right inset included): the 3D
   table + its seat pods are centred in the space a player can see and never sit under the toolbar. poker.js positions() maps
   the 3D anchors through the host's own rect, so the DOM pods follow. */
html.pcg-mob-land .pcx-poker .pk-root.pk-tb[data-mode="table"] .pk-3d-host { left: env(safe-area-inset-left, 0px);
  right: var(--pcg-tb-rw, calc(var(--pcg-tb-w, 52px) + env(safe-area-inset-right, 0px))); }
