
/* Shared navigation and reading hierarchy for every Kenny module. Loaded last. */
:root,.app { --kenny-nav-size:16px; --kenny-title-size:26px; --kenny-body-size:16px; --kenny-note-size:13px; }
.kenny-icon { display:inline-block; width:22px; height:22px; flex:none; vertical-align:middle; object-fit:contain; }
:root[data-theme="dark"] .kenny-icon,.app.dark .kenny-icon { filter:brightness(0) invert(.85); }
.game-room header.game-nav {
  display:grid; grid-template-columns:1fr auto 1fr; gap:6px; align-items:center;
  min-height:56px; height:auto; padding:6px max(12px,env(safe-area-inset-right)) 6px max(12px,env(safe-area-inset-left));
  background:var(--game-surface); color:var(--game-text); border-bottom:1px solid var(--game-line);
}
.game-room header.game-nav .nav-back,.game-room header.game-nav>button,
.game-room header.game-nav .nav-actions button {
  display:inline-flex; align-items:center; justify-content:center; gap:4px;
  min-height:44px; height:44px; min-width:44px; padding:6px; border:0; border-radius:12px;
  color:var(--game-accent); background:transparent; font:600 var(--kenny-nav-size)/1.4 var(--game-font); letter-spacing:0;
}
.game-room header.game-nav .nav-title { font:600 var(--kenny-nav-size)/1.4 var(--game-font); color:var(--game-text); letter-spacing:0; }
.game-room .nav-back .kenny-icon,.app .kgc-back .kenny-icon { width:20px; height:20px; }
.app .kgc-back-row { display:grid; grid-template-columns:1fr auto 1fr; min-height:56px; gap:6px; }
.app .kgc-back { min-height:44px; gap:4px; padding:6px; font:600 var(--kenny-nav-size)/1.4 var(--game-font); }
.app .kgc-back-caption { font:600 var(--kenny-nav-size)/1.4 var(--game-font); }
.app .kgc-center>.leisure-section:first-child { margin-top:4px; }
.leisure-room,.leisure-room.dark {
  --bg:var(--game-bg); --paper:var(--game-surface); --ink:var(--game-text); --muted:var(--game-secondary);
  --line:var(--game-line); --accent:var(--game-accent); --soft:var(--game-fill);
  font:var(--kenny-body-size)/1.6 var(--game-font); background:var(--game-bg); color:var(--game-text);
}
.leisure-room main { max-width:620px; margin:auto; padding:20px 16px calc(28px + env(safe-area-inset-bottom)); }
.leisure-room h1,.leisure-room .hero h1,.leisure-room #casting h1,.leisure-room #reading-title { font:650 var(--kenny-title-size)/1.4 var(--game-font); letter-spacing:0; margin:8px 0 12px; }
.leisure-room h2,.leisure-room .dialog-head h2 { font:600 20px/1.5 var(--game-font); letter-spacing:0; }
.leisure-room button,.leisure-room .share-buttons a { min-height:48px; padding:10px 14px; font:600 16px/1.4 var(--game-font); border-radius:14px; }
.leisure-room button:not(.quiet):not(.secondary):not(.history-item) { background:var(--game-accent); color:var(--game-on-accent); }
.leisure-room button:disabled { background:var(--game-fill)!important; color:var(--game-disabled)!important; cursor:default; }
.leisure-room .quiet { display:inline-flex; align-items:center; gap:4px; background:transparent; border:0; color:var(--game-accent); }
.leisure-room .secondary { background:var(--game-fill); color:var(--game-text); }
.leisure-room .micro,.leisure-room .input-meta,.leisure-room .foot,.leisure-room .hint,.leisure-room .eyebrow,.leisure-room .entry-head p,.leisure-room .hex-meta,.leisure-room .hex-label,.leisure-room .history-item small { font-size:var(--kenny-note-size); letter-spacing:0; line-height:1.65; }
.leisure-room .subtitle,.leisure-room .reading-block p,.leisure-room #reading-question,.leisure-room dialog p { font-size:var(--kenny-body-size); line-height:1.7; }
.leisure-room textarea { font-size:16px; }
.leisure-room nav { display:flex; gap:4px; }
.leisure-room nav button { flex:1; min-width:0; padding:8px 4px; font-size:14px; background:transparent!important; color:var(--game-secondary)!important; }
.leisure-room nav button[aria-pressed=true] { background:var(--game-surface)!important; color:var(--game-text)!important; }
.leisure-room .actions button { font-size:15px; padding:10px 6px; }
.leisure-room .hero { padding:8px 0 20px; }
.leisure-room .hero .seal { margin-bottom:12px; }
.leisure-room .entry-card { padding:18px; border-radius:18px; }
.leisure-room .entry-head h2 { margin:0 0 4px; }
.leisure-room .history-item strong { font:600 20px/1.5 var(--game-font); }
.leisure-room dialog { padding:20px; border:1px solid var(--game-line); border-radius:20px; background:var(--game-surface); color:var(--game-text); }
.game-room .tools .kenny-icon { width:22px; height:22px; }
.game-room .touch-controls .kenny-icon { width:28px; height:28px; filter:brightness(0) invert(1); }
/* The action game's rotated surface must use the same navigation metrics. */
.game-room.orientation-fallback header.game-nav { min-height:56px; height:56px; background:var(--game-surface); padding:6px 12px; }
.game-room.orientation-fallback header.game-nav .nav-back,
.game-room.orientation-fallback header.game-nav .nav-title,
.game-room.orientation-fallback header.game-nav .nav-actions button { font-size:var(--kenny-nav-size); }
.game-room.orientation-fallback header.game-nav .nav-title { color:var(--game-text); }
.game-room.orientation-fallback header.game-nav .quiet { background:transparent; color:var(--game-accent); border:0; }
.game-room.orientation-fallback header.game-nav .nav-actions button { min-height:44px; min-width:44px; }
/* Reading and text actions share one fixed phone hierarchy, independent of board scaling. */
.game-room,.app .kgc-card-area {
  --game-title-size:26px; --game-display-size:28px; --game-body-size:16px;
  --game-secondary-size:14px; --game-caption:13px; --game-action-size:16px;
  --game-control-height:48px;
}
.leisure-room .micro,.leisure-room .input-meta,.leisure-room .foot { color:var(--game-secondary); }
.app .kgc-card-area .hs-title,.app .kgc-card-area .gd-title { font-size:var(--kenny-title-size); line-height:1.4; }
.app .kgc-card-area .hs-sub,.app .kgc-card-area .gd-sub,.app .kgc-card-area .hs-brief-line,.app .kgc-card-area .gd-wild-txt { font-size:14px; line-height:1.6; }

/* Fullscreen card rooms use the same safe-area navigation as iframe games. */
.app .card-fullscreen { position:fixed; inset:0; z-index:100; margin:0; padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)!important; background:var(--bg); overflow-y:auto; }
.app .card-fullscreen .kgc-back-row { position:sticky; top:0; z-index:20; margin:0; padding:6px max(12px,env(safe-area-inset-right)) 6px max(12px,env(safe-area-inset-left)); background:var(--bg); border-bottom:1px solid var(--line); }
.app .card-fullscreen .kgc-back { justify-self:start; color:var(--game-text); }
.app .card-fullscreen .kgc-back-caption { grid-column:2; text-align:center; color:var(--txt); }
.app .kb-game-picker { display:flex; flex-wrap:wrap; gap:8px; }
.app .kb-game-picker .kb-seg-i { flex:0 0 auto; min-height:44px; padding:8px 14px; font-size:15px; background:var(--bg); border:1px solid var(--line); border-radius:12px; }
.app .kb-game-picker .kb-seg-i.on { background:var(--accent); color:#fff; }
.app .kb-article { font-size:16px; line-height:1.7; }
.app .kb-article h2 { font-size:20px; margin:20px 0 8px; }
.app .kb-article p { margin:8px 0 16px; }
.app .kb-article select { width:100%; min-height:48px; font:inherit; border:1px solid var(--line); border-radius:12px; background:var(--bg); color:var(--txt); padding:8px; }
.app .kb-article a { color:var(--accent); }
.app .kb-source { font-size:13px; color:var(--sub); }

.game-room .game-nav > .nav-back { justify-self:start; }
.game-room .game-nav > .nav-title { grid-column:2; text-align:center; }
.game-room .game-nav > .nav-rules { grid-column:3; justify-self:end; }
.game-room .game-nav > [hidden] { display:none!important; }
.game-secondary-actions { display:flex; align-items:center; justify-content:flex-end; gap:8px; padding:8px 16px; background:var(--game-bg); }
.game-secondary-actions button,.game-secondary-actions a { min-width:44px; min-height:44px; font:600 14px/1.4 var(--game-font); color:var(--game-accent); background:var(--game-fill); border:0; border-radius:12px; padding:8px 12px; text-decoration:none; }
.app .kgc-rules { justify-self:end; color:var(--accent); background:transparent; font-size:16px; }
.app .rules-fullscreen { position:fixed; inset:0; z-index:12000; background:var(--bg); padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)!important; overflow:auto; margin:0; }
.app .rules-fullscreen > .kgc-back-row { flex-shrink:0; position:sticky; top:0; z-index:2; margin:0; padding:6px 12px; background:var(--bg); border-bottom:1px solid var(--line); }
/* Navigation belongs to the page surface, matching the host title bar. */
.game-room header.game-nav,.game-room.orientation-fallback header.game-nav {
  background:var(--game-bg); border-bottom:0; min-height:60px; padding-top:8px; padding-bottom:8px;
}
.game-room header.game-nav .nav-back,.game-room header.game-nav .nav-rules,
.app .kgc-back,.app .kgc-rules {
  font-size:15px; font-weight:500; letter-spacing:0; color:var(--game-text,var(--txt));
  border:0; border-radius:12px; background:transparent; padding:8px 10px; min-height:44px;
  transition:background .16s ease,opacity .16s ease;
}
.game-room header.game-nav .nav-back:active,.game-room header.game-nav .nav-rules:active,
.app .kgc-back:active,.app .kgc-rules:active { background:var(--game-fill,var(--line)); }
.game-room header.game-nav .nav-title,.app .kgc-back-caption { font-size:17px; font-weight:600; letter-spacing:-.2px; }
.app .card-fullscreen .kgc-back-row,.app .rules-fullscreen > .kgc-back-row { border-bottom:0; min-height:60px; padding-top:8px; padding-bottom:8px; }
.game-room .nav-back .kenny-icon,.app .kgc-back .kenny-icon { width:18px; height:18px; }

.leisure-room .duel-main { padding-top:12px; }
.duel-main .players { margin:12px 0; }
.duel-main .board-wrap { width:min(100%,480px,calc(100svh - 290px)); margin:0 auto; padding:8px; }
.duel-main #board { width:100%; height:auto; aspect-ratio:auto; }
.duel-main #status { margin:12px 0 4px; }
.duel-main .hint { margin-bottom:12px; }
.duel-main .foot { margin-top:12px; }
.app .kb-game-picker { padding:0 16px; }
.app .kb-rules-wrap { padding-left:16px; padding-right:16px; }
.app .rules-fullscreen { color:var(--game-text); }
.game-room.orientation-fallback header.game-nav .nav-back,
.game-room.orientation-fallback header.game-nav .nav-rules { font-size:15px; font-weight:500; color:var(--game-text); }
.game-room.orientation-fallback header.game-nav .nav-title { font-size:17px; font-weight:600; }

/* Card rooms: the same quiet surfaces and action hierarchy as the other games. */
.app .card-fullscreen .kgc-card-area { width:min(100%,680px); padding:12px 16px 28px; }
.app .kgc-card-area :is(.holdem-start,.gd-start,.h-result.v2,.gd-result) { padding:20px; border:0; border-radius:18px; background:var(--game-surface); box-shadow:none; }
.app .kgc-card-area :is(.hs-head,.gd-head) { margin:0; padding:0 0 20px; text-align:left; }
.app .kgc-card-area :is(.hs-title,.gd-title) { font-size:26px; font-weight:650; }
.app .kgc-card-area :is(.hs-sub,.gd-sub) { margin-top:6px; color:var(--game-secondary); }
.app .kgc-card-area .kcoin-float-body { border:0; padding:8px 12px; border-radius:16px; }
.app .kgc-card-area .kcoin-float-val { font-size:22px; font-variant-numeric:tabular-nums; }
.app .kgc-card-area .kcoin-float-ic { background:var(--game-fill); color:var(--game-secondary); border:0; box-shadow:none; }
.app .kgc-card-area :is(.hs-blind-seg,.gd-diff) { margin-bottom:20px; }
.app .kgc-card-area .gd-diff-label { font-size:14px; font-weight:500; margin-bottom:8px; }
.app .kgc-card-area :is(.hs-btn,.gd-btn) { margin:16px 0 0; min-height:52px; border-radius:14px; box-shadow:none; }
.app .kgc-card-area :is(.gd-wild-note,.gd-session) { background:var(--game-fill); border:0; border-radius:14px; padding:14px; margin:0 0 20px; }
.app .kgc-card-area :is(.hs-brief,.gd-brief) { margin:16px 0 0; padding:0; border:0; text-align:left; }
.app .kgc-card-area :is(.hs-brief-link,.gd-brief-link) { display:none; }
.app .kgc-card-area :is(.h-ai,.gd-ai,.h-player,.h-raise-panel) { background:var(--game-surface); border:1px solid var(--game-line); border-radius:14px; box-shadow:none; }
.app .kgc-card-area :is(.h-ai,.gd-ai).turn { border-color:var(--game-accent); background:var(--game-selection); }
.app .kgc-card-area :is(.h-actions,.gd-actions,.h-result-btns,.gd-result-btns) { gap:8px; }
.app .kgc-card-area :is(.h-btn,.gd-act-btn,.h-result-btn,.gd-result-btn,.gd-session-end,.h-quick-btn) { display:flex; align-items:center; justify-content:center; min-height:48px; padding:10px 8px; font-size:15px; font-weight:600; line-height:1.4; border:0; border-radius:12px; background:var(--game-fill); color:var(--game-text); box-shadow:none; }
.app .kgc-card-area :is(.h-btn.call,.h-btn.raise,.gd-act-btn.play,.h-result-btn.primary,.gd-result-btn.primary) { background:var(--game-accent); color:var(--game-on-accent); }
.app .kgc-card-area :is(.h-btn.fold,.gd-session-end) { color:var(--game-danger); }
.app .kgc-card-area :is(.gd-act-btn.ask,.gd-act-btn.hint,.gd-act-btn.auto.on) { color:var(--game-accent); background:var(--game-selection); }
.app .kgc-card-area .gd-act-btn.dis { background:var(--game-fill); color:var(--game-disabled); opacity:1; }
.app .kgc-card-area :is(.h-result-badge,.gd-result-badge) { background:var(--game-fill); color:var(--game-text); box-shadow:none; font-size:22px; border-radius:12px; }
.app .kgc-card-area :is(.h-result-badge.win,.gd-result-badge.win) { background:var(--game-selection); color:var(--game-accent); }

/* One rule reader for every module, including the original card manuals. */
.app .kb-rules-wrap { width:min(100%,680px); margin:0 auto; padding:0 16px 32px; box-sizing:border-box; font-family:var(--game-font); color:var(--game-text); }
.app .kb-game-picker { width:min(100%,680px); margin:0 auto; box-sizing:border-box; }
.app .kb-rules-intro { padding:4px 0 16px; font-size:14px; line-height:1.6; color:var(--game-secondary); }
.app .kb-rules :is(.hs-rules-sec,.kb-section) { background:var(--game-surface); border:0; border-radius:18px; padding:18px; margin:0 0 14px!important; }
.app .kb-rules :is(h2,.hs-rules-sec-hd) { margin:0 0 12px; padding:0; border:0; font-size:20px; font-weight:600; line-height:1.5; color:var(--game-text); }
.app .kb-rules .hs-rules-sec-hd text { font-size:20px; font-weight:600; color:var(--game-text); }
.app .kb-rules .hs-sec-ic { display:none; }
.app .kb-rules p { margin:0; font-size:16px; line-height:1.75; }
.app .kb-rules :is(.hs-rule-card,.hs-rule-step,.hs-rule-action,.kb-pay-row) { display:flex; flex-wrap:wrap; align-items:center; gap:10px; padding:14px 0; margin:0; background:transparent; border:0; border-bottom:1px solid var(--game-line); border-radius:0; }
.app .kb-rules :is(.hs-rule-card,.hs-rule-step,.hs-rule-action,.kb-pay-row):last-child { border-bottom:0; padding-bottom:0; }
.app .kb-rules :is(.hs-rc-info,.hs-step-txt) { flex:1; min-width:130px; gap:4px; }
.app .kb-rules :is(.hs-rc-name,.hs-step-title,.kb-pay-place) { font-size:16px; font-weight:600; color:var(--game-text); }
.app .kb-rules :is(.hs-rc-desc,.hs-step-desc,.hs-act-desc,.kb-pay-desc,.kb-note,.kb-source) { font-size:14px; line-height:1.65; color:var(--game-secondary); }
.app .kb-rules :is(.hs-rc-rank,.hs-step-n) { width:26px; height:26px; flex:0 0 26px; font-size:13px; border:0; border-radius:8px; background:var(--game-fill); color:var(--game-secondary); }
.app .kb-rules .hs-rc-eg { display:flex; gap:4px; flex-wrap:wrap; }
.app .kb-rules .h-card.xsm { width:28px; height:40px; min-width:28px; border-radius:5px; }
.app .kb-rules .h-card.xsm .h-card-r { font-size:14px; }
.app .kb-rules .h-card.xsm .h-card-s { font-size:12px; }
.app .kb-rules .hs-act-btn { min-height:36px; padding:6px 12px; font-size:14px; border-radius:9px; background:var(--game-fill); color:var(--game-text); }
.app .kb-rules .hs-act-desc { flex:1; min-width:130px; }
.app .kb-rules .kb-bomb { font-size:13px; padding:6px 10px; background:var(--game-fill); color:var(--game-text); border:0; }
.app .kb-rules .kb-bomb.hot { background:var(--game-selection); color:var(--game-accent); }
.app .kb-classics p { margin:12px 0; }
.app .kgc-card-area :is(.holdem-start,.gd-start) { flex:0 0 auto; min-height:0; }
.app .kgc-card-area .h-table.compact { flex:0 0 auto; min-height:0; gap:16px; padding:16px; }
.app .kgc-card-area .h-comm { flex:0 0 auto; min-height:100px; padding:12px 0; }
.app .kgc-card-area .h-cback { background:var(--game-selection); border:1px solid var(--game-accent); box-shadow:none; }
.app .kgc-card-area .h-pot-chip { background:var(--game-fill); border:2px dashed var(--game-secondary); box-shadow:none; }
.app .kgc-card-area .gd-hand-wrap { border-radius:14px; box-shadow:none; }
.app .kgc-card-area .gd-hand-wrap.myturn { background:var(--game-selection); border-color:var(--game-accent); box-shadow:none; }
.app .kgc-card-area .gd-hand-turn { color:var(--game-accent); }
.app .kb-rules .hs-rc-eg { flex-basis:100%; }
/* Game controls share the shell's short feedback without moving the board. */
.game-room button { transition:transform 140ms ease,opacity 140ms ease; }
.game-room button:active:not(:disabled) { transform:scale(.97); opacity:.85; }
.game-room dialog[open] { animation:gameDialogIn 180ms ease-out; }
@keyframes gameDialogIn { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:translateY(0); } }
@media(prefers-reduced-motion:reduce) {
 .game-room *, .game-room *::before, .game-room *::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; }
 .game-room button:active:not(:disabled) { transform:none; }
}
