@import url('/card-decks/deck-faces.css');

/* Shared gameplay presentation: white cards, compact panels, Georgia table labels
   and light/dark surfaces. Also used by the loaded replay workspace. */
.toolbar-actions { display:flex; gap:5px; flex-wrap:wrap; align-items:center; flex:1; }
.game-navigation { position:relative; }
.game-navigation>summary { display:flex; align-items:center; gap:8px; cursor:pointer; list-style:none; min-height:30px; padding:6px 9px; border:1px solid var(--line); border-radius:4px; background:var(--control); }
.game-navigation>summary::-webkit-details-marker { display:none; }
.game-navigation>nav { position:absolute; top:calc(100% + 4px); left:0; z-index:40; min-width:170px; padding:5px; border:1px solid var(--line); border-radius:6px; background:var(--panel); box-shadow:var(--shadow); }
.game-navigation[open]>nav { display:flex; flex-direction:column; gap:2px; }
.game-navigation>nav>a { padding:8px 10px; white-space:nowrap; text-decoration:none; border-radius:3px; }
.game-navigation>nav>a:hover { background:var(--hover); }
.mobile-only { display:none; }
:root { --safe-top:env(safe-area-inset-top,0px); --safe-right:env(safe-area-inset-right,0px); --safe-bottom:env(safe-area-inset-bottom,0px); --safe-left:env(safe-area-inset-left,0px); }
#app { padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left); }
#app>.toolbar { top:var(--safe-top); }
#iphoneGuide { inset:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left); margin:auto; width:min(540px,calc(100vw - var(--safe-left) - var(--safe-right) - 24px)); max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 24px); overflow:auto; border:1px solid var(--line); border-radius:12px; padding:16px 20px; background:var(--panel); color:var(--ink); font:15px/1.45 Arial,sans-serif; }
#iphoneGuide::backdrop { background:#0006; }
#iphoneGuide h2 { font:700 23px/1.2 Georgia,serif; margin:0 0 10px; }
#iphoneGuide p { margin:8px 0; }
#iphoneGuide ol { margin:10px 0; padding-left:23px; }
#iphoneGuide li { margin:5px 0; }
#iphoneGuide .iphone-guide-note { color:var(--muted); font-size:13px; }
.iphone-guide-actions { display:flex; gap:12px; align-items:center; justify-content:space-between; margin-top:12px; }
.iphone-guide-actions span { color:var(--muted); font-size:12px; }
.iphone-guide-actions button { min-height:44px; white-space:nowrap; }
.chat-delete { font-size:11px; min-height:28px; padding:3px 5px; margin-left:5px; color:var(--muted); }
.deleted-message { color:var(--muted); }
#mobileMenu { inset:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left); width:min(640px,calc(100vw - var(--safe-left) - var(--safe-right) - 16px)); max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 16px); margin:auto; overflow:hidden; background:var(--panel); color:var(--ink); border:1px solid var(--line); border-radius:12px; padding:12px; }
#mobileMenu:not(.chat-only)[open] { display:flex; flex-direction:column; }
#mobileMenu::backdrop { background:#0005; }
#mobileMenu .mobile-menu-heading { display:flex; flex:none; justify-content:space-between; align-items:center; gap:12px; margin-bottom:8px; }
#mobileMenu .mobile-menu-heading h2 { font:700 22px Georgia,serif; margin:0; }
#mobileMenu #closeMobileMenu { min-height:40px; }
#mobileMenu #mobileConnection { flex:none; margin:0 0 8px; }
#mobileMenu #mobileConnection:empty { display:none; }
#mobileMenu .mobile-menu-layout { display:grid; grid-template-columns:165px minmax(0,1fr); gap:12px; min-height:0; }
#mobileMenu .mobile-menu-layout>nav { display:flex; flex-direction:column; gap:4px; overflow-y:auto; overscroll-behavior:contain; }
#mobileMenu .mobile-menu-layout>nav button { flex:none; text-align:left; min-height:40px; }
#mobileMenu .mobile-menu-layout>div { min-width:0; min-height:0; overflow-y:auto; overscroll-behavior:contain; }
#mobileMenu .table-info-panel { position:static; max-height:none; }
#mobileMenu #infoView, #mobileMenu #fullscreenBtn { display:none; }
#mobileMenu .info-content { max-height:none; }
#mobileMenu .toolbar-actions { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(120px,100%),1fr)); align-items:stretch; gap:6px; }
#mobileMenu .toolbar-actions .spacer,#mobileMenu .toolbar-actions .mode-label { display:none; }
#mobileMenu .toolbar-actions button,#mobileMenu .toolbar-actions select,#mobileMenu .toolbar-actions a { min-width:0; min-height:40px; white-space:normal; overflow-wrap:anywhere; }
#mobileMenu .chat-messages { height:min(300px,calc(100dvh - var(--safe-top) - var(--safe-bottom) - 190px)); min-height:75px; }
#mobileMenu .table-chat { display:block; }

/* Direct table chat shares the existing form and draft, in a smaller overlay. */
#mobileMenu.chat-only { inset:calc(var(--chat-view-top,0px) + var(--safe-top) + 50px) max(8px,var(--safe-right)) auto auto; margin:0; width:min(420px,calc(100vw - var(--safe-left) - var(--safe-right) - 16px)); height:min(390px,calc(var(--chat-view-height,100dvh) - var(--safe-top) - var(--safe-bottom) - 62px)); max-height:none; padding:12px; overflow:hidden; }
#mobileMenu.chat-only[open] { display:flex; flex-direction:column; }
#mobileMenu.chat-only::backdrop { background:#0002; }
#mobileMenu.chat-only .mobile-menu-heading { flex:none; gap:10px; }
#mobileMenu.chat-only .mobile-menu-heading h2 { font-size:20px; margin:0; }
#mobileMenu.chat-only #closeMobileMenu { min-height:40px; }
#mobileMenu.chat-only #mobileConnection,#mobileMenu.chat-only .mobile-menu-layout>nav,#mobileMenu.chat-only #chatPanel>b { display:none; }
#mobileMenu.chat-only .mobile-menu-layout,#mobileMenu.chat-only .mobile-menu-layout>div,#mobileMenu.chat-only #mobileChatSlot { display:flex; flex-direction:column; flex:1; min-height:0; }
#mobileMenu.chat-only #chatPanel { display:flex; flex-direction:column; flex:1; min-height:0; padding:0; border:0; }
#mobileMenu.chat-only .chat-messages { flex:1; min-height:24px; height:auto; margin:0 0 8px; font-size:14px; overscroll-behavior:contain; }
#mobileMenu.chat-only #chatForm { flex:none; }
#mobileMenu.chat-only #chatInput { font-size:16px; min-height:40px; }
#mobileMenu.chat-only #chatSend { min-height:40px; }
#mobileMenu.chat-only #chatNotice { flex:none; font-size:11px; margin:6px 0 0; }
@media(max-width:600px){
 #mobileMenu.chat-only { top:auto; bottom:calc(100dvh - var(--chat-view-top,0px) - var(--chat-view-height,100dvh) + var(--safe-bottom) + 8px); height:min(360px,calc(var(--chat-view-height,100dvh) - var(--safe-top) - var(--safe-bottom) - 62px)); }
}

/* Compact controls also fit narrow desktop/portrait without changing the board. */
.compact-game-toolbar #app>.toolbar { height:43px; padding:3px 8px; flex-wrap:nowrap; position:relative; top:0; }
.compact-game-toolbar #app>.toolbar>.toolbar-actions { display:none; }
.compact-game-toolbar .mobile-only { display:block; }
.compact-game-toolbar .game-navigation { margin-right:auto; flex-shrink:0; }
.compact-game-toolbar .game-navigation>summary { min-height:36px; }
.compact-game-toolbar .game-navigation>nav { max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 55px); overflow-y:auto; }
.compact-game-toolbar #mobileMenuBtn { flex-shrink:0; min-height:36px; }
.compact-game-toolbar #mobileChatBtn { position:relative; flex-shrink:0; min-height:36px; padding-inline:8px; }
#mobileChatBtn[hidden],#mobileChatBadge[hidden] { display:none; }
#mobileChatBadge { position:absolute; top:-4px; right:-4px; min-width:15px; height:15px; padding:0 3px; border-radius:9px; background:var(--positive); color:var(--panel); font:700 10px/15px Arial,sans-serif; }
.compact-game-toolbar #mobileFullscreenBtn { flex:0 0 40px; min-height:36px; font-size:20px; padding:2px 6px; }
@media(max-width:540px){
  #mobileMenu:not(.chat-only) .mobile-menu-layout { grid-template-columns:minmax(0,1fr); grid-template-rows:auto minmax(0,1fr); overflow-y:auto; }
  #mobileMenu .mobile-menu-layout>nav { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); overflow-y:visible; }
  #mobileMenu .mobile-menu-layout>nav button { font-size:12px; padding:5px; }
}
/* Approved landscape A: one menu, current/last tricks, straight bottom hand. */
.mobile-landscape #onlineBar { display:none; }
.mobile-landscape .app { padding:0; max-width:none; }
.mobile-landscape .table { position:relative; display:block; height:calc(100dvh - 43px - var(--safe-top) - var(--safe-bottom)); min-height:0; border:0; border-radius:0; padding:0; box-shadow:none; --hand-height:calc(111px + var(--compact-heading-extra,0px)); --last-width:128px; }
.mobile-landscape .table>.top-left,.mobile-landscape .table>.side-panel,.mobile-landscape .table>.bottom-right,.mobile-landscape .bot-label { display:none; }
.mobile-landscape .table .opponent-hand { display:none; }
.mobile-landscape .table>.west-column,.mobile-landscape .table>.east-column { display:contents; }
.mobile-landscape .player.north { position:absolute; top:1px; left:calc(50% + 64px); transform:translateX(-50%); max-width:45%; padding:2px; z-index:2; }
.mobile-landscape .player.west,.mobile-landscape .player.east { position:absolute; top:55px; max-width:155px; min-height:0; padding:3px; z-index:2; display:block; }
.mobile-landscape .player.west { left:calc(var(--last-width) + 9px); }
.mobile-landscape .player.east { right:6px; }
.mobile-landscape .name-line { gap:3px; margin:0; min-height:0; }
.mobile-landscape .name { font-size:14px; }
.mobile-landscape .metric,.mobile-landscape .dealer-badge { font-size:10px; padding:1px 3px; }
.mobile-landscape .bid-badges { min-height:0; margin:1px 0; }
.mobile-landscape .bid-badge,.mobile-landscape .bid-owed { font-size:10px; padding:1px 3px; }
.mobile-landscape .play-center { position:absolute; inset:32px 160px var(--hand-height) calc(var(--last-width) + 160px); min-height:0; }
.mobile-landscape .middle { width:156px; height:132px; top:50%; }
.mobile-landscape .played-slot,.mobile-landscape .played-slot .card { width:44px; height:62px; }
.mobile-landscape .played-slot .corner { font-size:17px; line-height:17px; left:3px; top:3px; }
.mobile-landscape .played-slot .center-suit { display:none; }
.mobile-landscape .slot-W { left:4px; }.mobile-landscape .slot-E { right:4px; }
.mobile-landscape .trick-note { display:none; }
.mobile-landscape #lastTrickDock { display:block!important; position:absolute; left:5px; top:12px; bottom:calc(var(--hand-height) + 2px); width:var(--last-width); max-width:none; padding:3px; background:transparent; border:0; border-right:1px solid var(--line); border-radius:0; }
.mobile-landscape #lastTrickDock .panel-heading { display:block; margin:0; }
.mobile-landscape #lastTrickDock .panel-heading span { display:block; }
.mobile-landscape .last-trick-diamond { width:110px; height:124px; margin:2px auto 0; }
.mobile-landscape .last-play { font-size:9px; }
.mobile-landscape .last-play .card { width:31px; height:43px; }
.mobile-landscape .last-play .corner { font-size:13px; line-height:13px; left:2px; top:2px; }
.mobile-landscape .last-play .center-suit { display:none; }
.mobile-landscape .player.south { position:absolute; inset:auto 0 0; height:var(--hand-height); padding:2px 12px; border-radius:0; border-top:1px solid var(--line); background:var(--panel); }
.mobile-landscape #youChip .name-line { justify-content:flex-start; }
.mobile-landscape #youBidBadge { position:absolute; right:8px; top:3px; }
.mobile-landscape #youBidBadge .bid-call { display:none; }
.mobile-landscape #hand { display:grid; grid-template-columns:repeat(var(--hand-count,13),calc((100% - 24px) / 13)); gap:0; justify-content:center; align-items:end; min-height:75px; height:75px; width:100%; max-width:780px; margin:0 auto; padding:5px 0 0; }
.mobile-landscape #hand .card { justify-self:center; width:62px; height:70px; margin:0; min-width:0; transform:none; }
.mobile-landscape #hand .corner { font:700 23px/23px Georgia,serif; left:4px; top:4px; text-align:center; }
.mobile-landscape #hand .center-suit { display:none; }
.mobile-landscape .hand-hint { font-size:11px; margin-top:1px; min-height:12px; }
.mobile-landscape .modal-shade { min-height:0; }
.mobile-landscape .play-center:has(.modal-shade:not(.hidden)) { inset:0 8px var(--hand-height); z-index:8; }
.mobile-landscape .modal { padding:8px; max-height:100%; overflow-y:auto; }
.mobile-landscape .modal h2 { font-size:21px; margin-bottom:4px; }
.mobile-landscape .modal p { margin:4px 0 6px; font-size:12px; }
.mobile-landscape .modal .options { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:5px; }
.mobile-landscape #familyChoices { grid-template-columns:repeat(4,minmax(0,1fr)); }
.mobile-landscape .modal .options button { min-height:37px; padding:5px; }
.mobile-landscape .modal .rank-options { grid-template-columns:repeat(7,minmax(0,1fr)); }
.mobile-landscape .modal-actions { margin-top:5px; }
.mobile-landscape .modal:has(.double-chooser) { height:100%; }
.mobile-landscape .double-chooser { display:grid; height:100%; grid-template-columns:minmax(140px,.8fr) minmax(0,2fr); grid-template-rows:minmax(0,1fr) auto auto; gap:3px 10px; }
.mobile-landscape .double-call { grid-column:1; grid-row:1; display:block; min-height:0; overflow-y:auto; padding:3px; margin:0; border:0; background:none; }
.mobile-landscape .double-call strong { font-size:22px; }
.mobile-landscape .double-call .call-options { font-size:14px; }
.mobile-landscape .double-dealer { display:block; text-align:left; margin-top:4px; font-size:11px; }
.mobile-landscape .double-diamond { grid-area:1/2; width:100%; min-height:0; overflow-y:auto; margin:0; grid-template-columns:1fr 1.1fr 1fr; grid-template-rows:auto; gap:6px; align-items:start; }
.mobile-landscape .double-N { grid-area:1/2; width:100%; margin:0; }
.mobile-landscape .double-W { grid-area:1/1; margin:10px 0 0; }.mobile-landscape .double-E { grid-area:1/3; margin:10px 0 0; }
.mobile-landscape .double-target { min-height:76px; height:auto; gap:2px; padding:4px 3px!important; overflow-wrap:anywhere; }
.mobile-landscape .double-target small,.mobile-landscape .double-owed,.mobile-landscape .double-public-bid { font-size:10px; }
.mobile-landscape .double-name { font-size:12px; }
.mobile-landscape .double-actions { grid-area:3/2; align-self:end; margin:0; gap:5px; }
.mobile-landscape .double-actions button { min-height:35px; padding:4px; }
.mobile-landscape .selection-summary { grid-area:3/1; align-self:center; text-align:left; margin:0; }
.mobile-landscape .double-note { grid-area:2/1/3/-1; margin:1px 0!important; font-size:10px!important; }
@media(max-height:360px){
  .mobile-landscape .double-call strong { font-size:20px; line-height:1.05; }
  .mobile-landscape .double-dealer { margin-top:2px; line-height:1.15; }
}
.mobile-landscape.mobile-decision #lastTrickDock { display:none!important; }
.mobile-landscape:where(:not(.regular-watch)) .table:has(#domino:not(.hidden)) .player.west,.mobile-landscape:where(:not(.regular-watch)) .table:has(#domino:not(.hidden)) .player.east { top:1px; }
.mobile-landscape:where(:not(.regular-watch)) .play-center:has(#domino:not(.hidden)):not(:has(.modal-shade:not(.hidden))) { inset:57px 6px var(--hand-height) calc(var(--last-width) + 12px); }
.mobile-landscape .domino-row { margin:1px 0; }
.mobile-landscape .domino-cards .card { height:28px; }
.mobile-landscape .domino-cards .center-suit { display:none; }
.mobile-landscape .domino-cards .corner { font-size:11px; line-height:11px; }
/* Dominoes headers occupy a real shared row: wrapped names cannot cover cards.
   Completed-hand review retains its separate four-hand layout. */
.mobile-landscape:where(:not(.regular-watch)):not(.mobile-hand-review) .table:has(#domino:not(.hidden)):not(:has(.modal-shade:not(.hidden))) {
  display:grid; grid-template-columns:calc(var(--last-width) + 12px) repeat(3,minmax(0,1fr));
  grid-template-rows:auto minmax(0,1fr) var(--hand-height); gap:0; padding-right:6px;
}
.mobile-landscape:where(:not(.regular-watch)):not(.mobile-hand-review) .table:has(#domino:not(.hidden)):not(:has(.modal-shade:not(.hidden))) .player:is(.west,.north,.east) {
  position:static; transform:none; width:auto; max-width:none; min-height:0; padding:3px 4px; align-self:start;
}
.mobile-landscape:where(:not(.regular-watch)):not(.mobile-hand-review) .table:has(#domino:not(.hidden)) .player.west { grid-area:1/2; }
.mobile-landscape:where(:not(.regular-watch)):not(.mobile-hand-review) .table:has(#domino:not(.hidden)) .player.north { grid-area:1/3; }
.mobile-landscape:where(:not(.regular-watch)):not(.mobile-hand-review) .table:has(#domino:not(.hidden)) .player.east { grid-area:1/4; }
.mobile-landscape:not(.mobile-hand-review) .table:has(#domino:not(.hidden)) .player:not(.south) .name { overflow-wrap:anywhere; min-width:0; }
.mobile-landscape:not(.mobile-hand-review) .table:has(#domino:not(.hidden)) .player:not(.south) :is(.name-line,.bid-badges) { min-height:0; }
.mobile-landscape:where(:not(.regular-watch)):not(.mobile-hand-review) .table:has(#domino:not(.hidden)) :is(.player.south,#lastTrickDock) { grid-area:auto; }
.mobile-landscape:where(:not(.regular-watch)):not(.mobile-hand-review) .play-center:has(#domino:not(.hidden)):not(:has(.modal-shade:not(.hidden))) {
  position:relative; grid-area:2/2/3/5; inset:auto; height:100%; min-height:0;
}
.mobile-landscape:not(.mobile-hand-review) .domino-board { padding:3px 0; }
/* Turn guidance is already below South's hand; keep this space for the board. */
.mobile-landscape:not(.mobile-hand-review) .domino-status { display:none; }
@media(max-height:350px){
  .mobile-landscape:not(.mobile-hand-review) .table:has(#domino:not(.hidden)) { --hand-height:calc(115px + var(--compact-heading-extra,0px)); }
  .mobile-landscape:not(.mobile-hand-review) .table:has(#domino:not(.hidden)) #hand { height:64px; min-height:64px; }
  .mobile-landscape:not(.mobile-hand-review) .table:has(#domino:not(.hidden)) #hand .card { height:59px; }
  .mobile-landscape:not(.mobile-hand-review) .domino-cards .card { height:22px; }
  .mobile-landscape:not(.mobile-hand-review) .domino-cards .corner { font-size:10px; line-height:10px; top:1px; }
}
@media(max-width:740px){.mobile-landscape .table{--last-width:110px}.mobile-landscape .play-center{left:calc(var(--last-width) + 120px);right:120px}.mobile-landscape .player.west,.mobile-landscape .player.east{max-width:115px}.mobile-landscape #hand .card{width:56px}.mobile-landscape #hand .corner{font-size:21px;line-height:22px}.mobile-landscape .player.north{left:calc(50% + 55px)}}
:root {
  color-scheme: light;
  --felt: #fff; --ink: #141414; --muted: #666; --line: #d7d7d7;
  --panel: #f6f6f6; --cell: #fff; --page: #e9e9e9; --control: #f3f3f3;
  --hover: #fff; --active: #fffdf3; --gold: #b29835; --positive: #067806;
  --negative: #b00000; --shadow: 0 6px 22px rgba(0,0,0,.10);
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--page); color: var(--ink); font-family: Georgia, 'Times New Roman', serif; }
body.dark-mode {
  color-scheme: dark;
  --felt: #171717; --ink: #f2f2f2; --muted: #b8b8b8; --line: #444;
  --panel: #222; --cell: #2b2b2b; --page: #0f0f0f; --control: #2b2b2b;
  --hover: #3a3a3a; --active: #282411; --gold: #c7a935;
  --positive: #8be08d; --negative: #ff9999; --shadow: 0 8px 26px rgba(0,0,0,.45);
}
button, select, input { font: 13px/1.2 Arial, Helvetica, sans-serif; }
button, select {
  border: 1px solid #9a9a9a; background: var(--control); color: var(--ink);
  border-radius: 4px; padding: 6px 9px; cursor: pointer; min-height: 30px;
}
.dark-mode button, .dark-mode select { border-color: #666; }
button:hover { background: var(--hover); }
button:disabled { opacity: .45; cursor: default; }
button.primary { border-color: var(--gold); background: var(--active); font-weight: 700; }
button[aria-pressed="true"], .mode-label { border-color: var(--gold); background: var(--active); }
a { color: inherit; text-underline-offset: 3px; }
button:focus-visible, select:focus-visible, summary:focus-visible, a:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }
.hidden { display: none !important; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.tram-play-overlay { position:absolute;inset:0;z-index:8;display:flex;align-items:center;justify-content:center;pointer-events:none;user-select:none;color:var(--ink);opacity:.28;font:800 clamp(42px,7vw,96px)/1 Arial,sans-serif;letter-spacing:.05em; }
.mobile-domino-piles,.old-school-domino-piles { position:relative; }

/* Seated Regular Dominoes keeps each player's latest public action beside the
   hand as well as in Last plays. These faces never carry private hand data. */
body:not(.old-school-table) .table {
 --regular-last-play-height:calc(80px * var(--desktop-card-scale,1));
 --regular-last-play-width:calc(var(--regular-last-play-height) * var(--hand-card-ratio,calc(5 / 7)));
}
.regular-last-play {
 display:flex;align-items:center;justify-content:center;flex:none;
 width:var(--regular-last-play-width);height:var(--regular-last-play-height);
 margin:0;pointer-events:none;z-index:3;
}
body .table .regular-last-play>.card {
 container-type:inline-size;width:100%;height:100%;margin:0;flex:none;
}
body .table .regular-last-play .corner { font-size:27cqw;line-height:1;left:7cqw;top:6cqw; }
body .table .regular-last-play .center-suit { font-size:60cqw; }
.regular-last-pass { color:var(--positive);font:16px/1.2 Georgia,serif; }
body:not(.old-school-table):not(.mobile-landscape) .table:has(.regular-last-play) .player { position:relative; }
body:not(.old-school-table):not(.mobile-landscape) .table .regular-last-play { position:absolute; }
body:not(.old-school-table):not(.mobile-landscape) .table .regular-last-play-N { top:calc(100% + 6px);left:50%;transform:translateX(-50%); }
body:not(.old-school-table):not(.mobile-landscape) .table .regular-last-play-S { bottom:calc(100% + 6px);left:50%;transform:translateX(-50%); }
body:not(.old-school-table):not(.mobile-landscape) .table .regular-last-play-W { left:calc(100% + 8px);top:50%;transform:translateY(-50%); }
body:not(.old-school-table):not(.mobile-landscape) .table .regular-last-play-E { right:calc(100% + 8px);top:50%;transform:translateY(-50%); }
body:not(.old-school-table):not(.mobile-landscape) .table:has(.regular-last-play) #domino {
 inset:calc(var(--regular-last-play-height) + 8px) calc(var(--regular-last-play-width) + 12px);
}
body.mobile-landscape:not(.old-school-table) .table { --regular-last-play-height:38px; }
body.mobile-landscape:not(.old-school-table) .table .regular-last-play { margin:3px auto 0; }
body.mobile-landscape:not(.old-school-table) .table .regular-last-play-S {
 position:absolute;bottom:calc(100% + 4px);left:50%;transform:translateX(-50%);margin:0;
}
body.mobile-landscape:not(.old-school-table) .table:has(.regular-last-play) #domino { bottom:calc(var(--regular-last-play-height) + 8px); }
.toolbar {
  display: flex; gap: 5px; flex-wrap: wrap; align-items: center; padding: 6px 8px;
  background: var(--felt); border-bottom: 1px solid var(--line);
  position: sticky; top: 0; z-index: 30; box-shadow: 0 1px 6px rgba(0,0,0,.08);
  font: 13px Arial, Helvetica, sans-serif;
}
.wordmark { font: bold 20px Georgia, serif; margin-right: 6px; }
.mode-label { border: 1px solid var(--gold); border-radius: 4px; padding: 6px 10px; }
.spacer { flex: 1; }
.app { max-width: 1500px; margin: 0 auto; padding: 6px; }
.table {
  display: grid; grid-template-columns: minmax(210px, 1fr) minmax(420px, 1.9fr) minmax(240px, 1fr);
  grid-template-rows: auto minmax(280px, auto) auto; gap: 8px 12px;
  align-content: start; padding: 10px;
  background: var(--felt); border: 1px solid var(--line); border-radius: 12px; box-shadow: var(--shadow);
}
.top-left { grid-area: 1 / 1; }
.table, .toolbar button { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
.card, .table button, .toolbar button { touch-action: manipulation; }
.card .corner, .card .center-suit { pointer-events: none; }
.game-id { font: 11px Arial, sans-serif; color: var(--muted); margin-bottom: 4px; }
.deal-title { font-size: 22px; margin: 2px 0 4px; }
.dealer-line { font-size: 16px; font-weight: 700; margin-bottom: 3px; }
.contract-line { font-size: 16px; }
.contract-line.called { display: inline-block; margin-top: 5px; padding: 6px 9px; border-left: 4px solid var(--gold); border-radius: 3px; background: var(--active); font-size: 22px; font-weight: bold; }
.player { min-width: 0; padding: 4px; border-radius: 8px; align-self: start; }
.player.active { background: var(--active); box-shadow: 0 0 0 2px var(--gold) inset; }
.name-line { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; margin-bottom: 4px; }
.seat { font: 10px Arial, sans-serif; color: var(--muted); border: 1px solid #888; border-radius: 50%; width: 18px; height: 18px; display: inline-flex; align-items: center; justify-content: center; }
.name { font-size: 17px; }
.metric, .dealer-badge { font: 11px Arial, sans-serif; color: var(--muted); background: var(--cell); border: 1px solid var(--line); border-radius: 999px; padding: 2px 6px; }
.dealer-badge { color: var(--ink); }
.north { grid-area: 1 / 2; }
.south { grid-area: 3 / 2; align-self: end; padding: 4px; }
.south { position:relative; }
.hand-tools { position:absolute; top:4px; right:4px; z-index:6; display:flex; gap:4px; }
.hand-tools button { min-height:34px; border-color:var(--gold); background:var(--active); font-weight:bold; }
.south.has-hand-tools #youChip { padding-right:120px; }
.recommendation { margin:5px 0 0; font:13px/1.35 Arial,sans-serif; text-align:center; color:var(--ink); }
#practicePosition { font:12px Arial,sans-serif; }
.mobile-landscape .south.has-hand-tools #youChip { padding-right:90px; }
.mobile-landscape .south.has-hand-tools #youBidBadge { right:100px; }
.mobile-landscape .hand-tools { top:2px; }
.mobile-landscape .hand-tools button { min-height:20px; height:20px; padding:1px 5px; font-size:11px; line-height:16px; white-space:nowrap; }
.mobile-landscape .recommendation { position:absolute; top:8px; left:185px; right:112px; margin:0; font:12px/16px Arial,sans-serif; }
.mobile-landscape.practice-reviewing .review-controls { min-height:48px; padding:3px 6px; gap:3px; }
.mobile-landscape.practice-reviewing .table { height:calc(100dvh - 43px - var(--practice-review-height,48px) - var(--safe-top) - var(--safe-bottom)); min-height:0; }
.north .name-line, .south .name-line, .north .bid-badges, .south .bid-badges { justify-content: center; }
.east .name-line, .east .bid-badges, .east .opponent-hand { justify-content: flex-end; }
.west-column { grid-area: 2 / 1; display: grid; align-content: center; gap: 8px; }
.east-column { grid-area: 2 / 3; display: grid; align-content: center; gap: 8px; }
.bid-badges { display: flex; flex-wrap: wrap; gap: 3px; align-items: center; margin: 2px 0 3px; font: 11px Arial, sans-serif; }
.bid-badges:empty { display: none; }
.declarer-contracts { display:none; }
body:not(.mobile-landscape) .declarer-contracts { display:inline-flex; align-items:baseline; flex-wrap:wrap; gap:4px; color:var(--ink); }
.declarer-contracts > span { color:var(--muted); margin-right:2px; }
.declarer-contracts abbr { text-decoration:none; cursor:help; }
.mobile-landscape .bid-badges:has(> .declarer-contracts:only-child) { display:none; }
.bid-badge { padding: 2px 6px; border-radius: 999px; border: 1px solid var(--line); background: var(--cell); display: inline-flex; align-items: center; gap: 6px; }
.bid-pass { color: var(--positive); }
.bid-double, .bid-redouble { color: var(--negative); border-color: currentColor; background: #fff0ee; font: bold 12px Arial, sans-serif; }
.dark-mode .bid-double, .dark-mode .bid-redouble { background: #3b2525; }
.bid-call { color: #1d46cc; }
.dark-mode .bid-call { color: #8fb7ff; }
.bid-owed { color: var(--muted); font-size: 10px; }
.hand, .opponent-hand { display: flex; align-items: flex-end; padding-top: 4px; }
.hand { min-height: 86px; }
.opponent-hand .card { height: 50px; }
.hand, .north .opponent-hand { justify-content: center; }
.hand .card + .card { margin-left: -24px; }
.card {
  position: relative; width: 62px; height: 86px; flex: 0 0 auto;
  border: 1px solid #555; border-radius: 5px; background: #fff; color: #000;
  box-shadow: 1px 2px 3px rgba(0,0,0,.22); overflow: hidden; padding: 0;
}
.card .corner { position: absolute; left: 4px; top: 3px; font: 700 15px/14px Arial, Helvetica, sans-serif; text-align: center; }
.card .center-suit { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font: 32px Georgia, serif; }
.card.red { color: #d00000; }
.card.back { box-shadow: none; border-color: #ccc; }
.opponent-hand .card + .card { margin-left: -47px; }
.north .opponent-hand .card + .card { margin-left: -37px; }
.card.big { width: 82px; height: 116px; border-radius: 7px; }
.card.big .corner { font-size: 18px; line-height: 17px; left: 6px; top: 6px; }
.card.big .center-suit { font-size: 50px; }
/* Cards remain white in both themes, as in the replayer. */
button.card { background: white; border-color: #555; color: #000; cursor: default; }
button.card.red { color: #d00000; }
button.card:disabled { opacity: 1; }
button.card.legal { cursor: pointer; }
button.card.legal:focus-visible { outline: 2px solid var(--gold); outline-offset: -3px; }
button.card.legal:not(:disabled):active { box-shadow: inset 0 0 0 2px #607788; }
button.card.pending { box-shadow: inset 0 0 0 2px #607788; cursor: wait; }
button.card.pending::after { content: '…'; position: absolute; bottom: 3px; left: 2px; width: 16px; font: 14px/1.2 system-ui, sans-serif; color: #334955; background: white; text-align: center; }
@media (hover: hover) and (pointer: fine) {
  button.card.legal:not(:disabled):hover { box-shadow: inset 0 0 0 1px #607788; }
}
.hand-hint { min-height: 15px; margin-top: 4px; font: 12px Arial, sans-serif; text-align: center; color: var(--muted); }
.empty-hand { padding: 16px 0; color: var(--muted); font: 13px Arial, sans-serif; }
.revealed-hand { display: flex; flex-wrap: nowrap; justify-content: center; padding-top: 4px; }
.west .revealed-hand { justify-content: flex-start; }
.east .revealed-hand { justify-content: flex-end; }
.revealed-hand .card { width: 44px; height: 62px; flex: 0 1 44px; min-width: 30px; margin-right: -26px; }
.revealed-hand .card:last-child { margin-right: 0; flex-shrink: 0; }
.revealed-hand .corner { font-size: 11px; line-height: 11px; left: 2px; }
.revealed-hand .center-suit { font-size: 22px; }
.play-center { grid-area: 2 / 2; position: relative; min-height: 280px; align-self: stretch; }
.middle { position: absolute; width: 380px; height: 244px; top: 50%; left: 50%; transform: translate(-50%, -50%); }
.played-slot { position: absolute; width: 82px; height: 116px; }
.slot-N { top: 0; left: 50%; transform: translateX(-50%); }
.slot-S { bottom: 0; left: 50%; transform: translateX(-50%); }
.slot-W { left: 28px; top: 50%; transform: translateY(-50%); }
.slot-E { right: 28px; top: 50%; transform: translateY(-50%); }
.trick-note { position: absolute; top: 100%; margin-top: 8px; width: 100%; text-align: center; font: 12px Arial, sans-serif; color: var(--muted); }
.trick-note.collected { color: var(--ink); }
.center-message { position: absolute; inset: 0; display: grid; place-content: center; text-align: center; gap: 8px; color: var(--muted); }
.center-message strong { color: var(--ink); font-size: 20px; }
.domino-board { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: center; }
.domino-row { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 4px; align-items: center; margin: 3px 0; }
.domino-label { font-size: 18px; }
.domino-cards { display: grid; grid-template-columns: repeat(13, minmax(0, 1fr)); gap: 2px; }
.domino-cards .card { width: 100%; height: 42px; border-radius: 4px; box-shadow: none; }
.domino-cards .corner { font-size: 10px; line-height: 10px; left: 2px; top: 2px; }
.domino-cards .center-suit { font-size: 16px; }
.card.ghost { opacity: .24; }
.domino-status { text-align: center; margin-top: 12px; font: 12px/1.6 Arial, sans-serif; color: var(--muted); }
.side-panel { grid-area: 1 / 3; display: grid; align-content: start; gap: 6px; }
.bottom-right { grid-area: 3 / 3; display: grid; gap: 6px; align-self: end; }
.panel { background: var(--panel); border: 1px solid var(--line); border-radius: 8px; padding: 6px; font: 12px/1.4 Arial, Helvetica, sans-serif; min-width: 0; }
.panel summary { cursor: pointer; font-weight: 700; padding: 2px 0; }
.panel[open] summary { margin-bottom: 6px; }
.summary-hint { font-size: 10px; color: var(--muted); font-weight: normal; }
.panel-heading { display: flex; justify-content: space-between; align-items: baseline; gap: 6px; margin-bottom: 6px; }
.panel-heading span { font-size: 10px; color: var(--muted); }
.score-so-far-panel { align-self: start; }
#infoView { width: 100%; margin-bottom: 6px; }
.table-info-panel:has(.info-content.hidden) #infoView { margin-bottom: 0; }
.info-content { min-height: 0; overflow: auto; overscroll-behavior: contain; }
.score-scope { margin: 0 0 3px; text-align: right; }
#autoMode { max-width: 205px; }
.score-name { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: normal; color: var(--ink); }
#remainingCardsPanel summary .summary-hint { float: right; padding-top: 2px; }
.remaining-suit-row { display: grid; grid-template-columns: 14px 16px minmax(0, 1fr); gap: 3px; align-items: baseline; padding: 2px 0; }
.remaining-suit { font-size: 15px; }
.remaining-count { color: var(--muted); font-size: 10px; text-align: center; }
.remaining-ranks { display: flex; flex-wrap: wrap; gap: 2px; }
.remaining-rank { min-width: 11px; text-align: center; font-size: 11px; font-weight: bold; }
.remaining-suit-row.red { color: #c00000; }
.dark-mode .remaining-suit-row.red { color: #ff9999; }
.score-table { width: 100%; border-collapse: collapse; table-layout: fixed; font-variant-numeric: tabular-nums; text-align: center; }
.score-table th, .score-table td { padding: 3px 1px; }
.score-table thead { color: var(--muted); font-size: 10px; }
.score-table tbody tr { border-top: 1px solid var(--line); }
.score-table th:first-child { text-align: left; font-size: 11px; }
.score-value { font-size: 13px; font-weight: bold; }
.plus .score-value { color: var(--positive); }
.minus .score-value { color: var(--negative); }
/* The full sheet floats above the table without moving the playing field. */
#scoreSheet { inset:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left); margin:auto; width:min(520px,calc(100vw - var(--safe-left) - var(--safe-right) - 32px)); max-width:none; max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 32px); padding:0; overflow:hidden; border:1px solid var(--line); border-radius:14px; background:var(--panel); color:var(--ink); box-shadow:var(--shadow); }
#scoreSheet[open] { display:flex; flex-direction:column; }
#scoreSheet::backdrop { background:rgba(0,0,0,.58); }
.score-sheet-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; flex:none; padding:8px 10px; border-bottom:1px solid var(--line); }
.score-sheet-heading>div { display:flex; align-items:baseline; flex-wrap:wrap; gap:3px 8px; }
.score-sheet-heading h2 { margin:0; font:700 22px/1.15 Georgia,serif; }
.score-sheet-heading p { margin:0; color:var(--muted); font:12px/1.3 Arial,sans-serif; }
#closeScoreSheet { flex:none; width:32px; height:32px; padding:0; border-radius:50%; font:23px/1 Arial,sans-serif; }
.score-sheet-scroll { min-height:0; overflow:auto; overscroll-behavior:contain; scrollbar-gutter:stable; }
.score-sheet-scroll:focus-visible { outline:2px solid var(--gold); outline-offset:-3px; }
.score-sheet-table { width:100%; border-collapse:separate; border-spacing:0; table-layout:fixed; text-align:right; font:13px/1.2 Arial,sans-serif; font-variant-numeric:tabular-nums; }
.score-sheet-contract { width:32%; }
.score-sheet-table th,.score-sheet-table td { padding:2px 6px; border-bottom:1px solid var(--line); }
.score-sheet-table thead th { position:sticky; top:0; z-index:2; background:var(--panel); color:var(--muted); font-size:12px; vertical-align:bottom; }
.score-sheet-table thead th:first-child,.score-sheet-call { text-align:left; }
.score-sheet-table thead th span { display:block; overflow-wrap:anywhere; margin-top:2px; font-weight:400; }
.score-sheet-table tbody th { color:var(--muted); font-size:12px; font-weight:400; }
.score-sheet-table tbody .score-sheet-call { color:var(--ink); font-size:inherit; overflow-wrap:anywhere; }
.score-sheet-table .score-sheet-group th { text-align:left; color:var(--ink); font-weight:700; background:var(--cell); padding-block:3px; overflow-wrap:anywhere; }
.score-sheet-seat { display:inline-block; color:var(--muted); min-width:16px; font-weight:400; }
.score-sheet-table .score-value { font-size:13px; white-space:nowrap; }
.score-sheet-table .score-sheet-status { text-align:center; color:var(--muted); font-size:12px; font-style:italic; }
.score-sheet-current { background:var(--active); }
.score-sheet-current .score-sheet-call { font-weight:700; }
.score-sheet-future { color:var(--muted); }
.score-sheet-table tfoot th,.score-sheet-table tfoot td { position:sticky; bottom:0; z-index:2; background:var(--panel); border-top:2px solid var(--line); border-bottom:0; padding-block:5px; }
.score-sheet-table tfoot th { text-align:left; }
.score-sheet-table tfoot .score-value { font-size:15px; }
@media(max-width:600px){
 #scoreSheet { width:calc(100vw - var(--safe-left) - var(--safe-right) - 24px); max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 12px); border-radius:10px; }
 .score-sheet-heading { padding:7px 8px; gap:8px; }
 .score-sheet-heading h2 { font-size:20px; }
 .score-sheet-contract { width:32%; }
 .score-sheet-table { font-size:12px; }
 .score-sheet-table th,.score-sheet-table td { padding:2px 3px; }
 .score-sheet-table thead th { font-size:10px; }
 .score-sheet-table .score-value { font-size:13px; }
 .score-sheet-table tfoot th,.score-sheet-table tfoot td { padding-block:5px; }
 .score-sheet-table tfoot .score-value { font-size:15px; }
}
@media(max-width:320px){.score-sheet-table { min-width:300px; }}
@media(max-height:450px){.score-sheet-heading { padding-block:7px; }}
.doubles-owed-table { width: 100%; border-spacing: 1px; font-variant-numeric: tabular-nums; font-size: 11px; line-height: 1.2; }
.doubles-owed-table th, .doubles-owed-table td { background: var(--cell); border: 1px solid var(--line); border-radius: 4px; text-align: center; padding: 1px 3px; }
.owed-zero { color: var(--positive); }
.owed-two { color: var(--negative); }
.table-hint { color: var(--muted); font-size: 10px; margin: 5px 0 0; }
.remaining-contract-row { display: grid; grid-template-columns: minmax(70px, .9fr) minmax(0, 1.3fr); gap: 4px; padding: 4px 0; border-top: 1px dotted var(--line); }
.remaining-contract-row b { overflow-wrap: anywhere; }
.remaining-contract-row span { display: flex; flex-wrap: wrap; gap: 5px; }
.remaining-contract-row abbr { text-decoration: none; cursor: help; }
.last-trick { grid-area: 3 / 1; align-self: end; width: 100%; max-width: 270px; }
.last-trick-diamond { position: relative; width: 162px; height: 144px; margin: 6px auto 0; }
.last-play { position: absolute; }
.last-N { top: 0; left: 50%; transform: translateX(-50%); }
.last-S { bottom: 0; left: 50%; transform: translateX(-50%); }
.last-W { left: 0; top: 50%; transform: translateY(-50%); }
.last-E { right: 0; top: 50%; transform: translateY(-50%); }
.last-play { text-align: center; font-size: 10px; color: var(--muted); }
.last-play .card { width: 38px; height: 50px; margin-top: 3px; }
.last-pass { display: grid; place-items: center; width: 38px; height: 50px; margin-top: 3px; border: 1px dashed var(--line); border-radius: 5px; font: 11px Arial, sans-serif; color: var(--ink); }
.last-play .corner { font-size: 11px; line-height: 11px; left: 3px; }
.last-play .center-suit { font-size: 23px; }
.last-play.winner .card { outline: 2px solid var(--gold); outline-offset: 1px; }
.modal-shade { position: relative; min-height: 280px; height: 100%; display: flex; align-items: center; justify-content: center; z-index: 10; background: var(--felt); }
.modal { width: 100%; background: var(--panel); color: var(--ink); border: 1px solid var(--line); border-radius: 8px; padding: 12px; box-shadow: var(--shadow); font: 14px/1.5 Arial, sans-serif; }
/* Decisions float inside the existing field; their contents cannot resize it. */
body:not(.mobile-landscape) .modal-shade:has(.double-chooser) { position:absolute; inset:0; min-height:0; height:auto; }
body:not(.mobile-landscape) .modal:has(.double-chooser) { max-height:100%; overflow-y:auto; }
/* Reserve the public call/bid status space before decisions arrive. */
body:not(.mobile-landscape) .top-left { min-height:133px; }
body:not(.mobile-landscape) .contract-line { display:block; width:fit-content; max-width:100%; margin-top:5px; }
body:not(.mobile-landscape) :is(.north,.south) .name-line { min-height:24px; }
body:not(.mobile-landscape) :is(.north,.south) .bid-badges { display:flex; min-height:21px; }
.panel-action { min-height: 24px; margin-top: 6px; padding: 3px 6px; font-size: 11px; }
.modal h1, .modal h2 { font: bold 24px Georgia, serif; margin: 0 0 10px; }
.call-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap; margin-bottom:10px; }
.call-heading h2 { margin:0; }
.call-debts { display:flex; align-items:baseline; flex-wrap:wrap; gap:10px; margin-left:auto; font:13px Arial,sans-serif; }
.call-debts > span { white-space:nowrap; }
.call-debt-label { color:var(--muted); }
.call-debts strong { color:var(--negative); }
.modal h3 { font: bold 18px Georgia, serif; margin-bottom: 6px; }
.modal p { margin: 8px 0 12px; }
.options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; }
.options.three-col { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.options.rank-options { grid-template-columns: repeat(7, minmax(0, 1fr)); }
#familyChoices { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.choice { min-height: 42px; font-size: 14px; }
.modal-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; margin-top: 14px; }
.modal-actions button { min-height: 36px; }
.owed-live { border-left: 2px solid var(--gold); padding: 4px 9px; margin-bottom: 12px; font-size: 12px; }
.pace-row { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px; margin: 14px 0; }
.pace-row select { max-width: 100%; }
.call-options { display:inline-flex; align-items:baseline; gap:4px; font:16px Arial,sans-serif; color:var(--muted); white-space:nowrap; vertical-align:baseline; }
.call-options abbr { text-decoration:none; }
.call-options .chosen { font-weight:bold; color:var(--ink); }
.bid-call .call-options { font-size:11px; gap:3px; }
.double-call { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:8px 11px; margin-bottom:10px; border:1px solid var(--gold); border-radius:6px; background:var(--cell); }
.double-call small { display:block; margin-bottom:3px; color:var(--muted); font:10px Arial,sans-serif; }
.called-with-options { display:flex; align-items:baseline; flex-wrap:wrap; gap:8px; }
.double-call strong { font:bold 24px Georgia,serif; }
.double-dealer { flex-shrink:0; text-align:right; font:12px/1.6 Arial,sans-serif; }
.dealer-mark,.required-mark { display:inline-block; font:bold 9px Arial,sans-serif; padding:2px 4px; border-radius:4px; background:#f1e9bd; color:#584915; border:1px solid #c8b35d; }
.required-mark { color:#8c291f; background:#fff0d7; }
.double-diamond { display:grid; grid-template-columns:1.16fr 1fr 1.16fr; grid-template-rows:auto auto; gap:6px 9px; align-items:center; max-width:550px; margin:0 auto; }
.double-N { grid-area:1/2; }.double-W { grid-area:2/1; }.double-E { grid-area:2/3; }
.double-target { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; min-height:84px; padding:6px 4px; border-radius:6px; }
.double-name { display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:4px; font-weight:bold; font-size:13px; }
.double-target[aria-pressed="true"] { border:2px solid var(--gold); background:var(--active); padding:5px 3px; }
.double-target[aria-pressed="true"] .double-name::before { content:'✓ '; }
.double-target.required:disabled { opacity:1; }
.double-public-bid,.double-owed { font:11px Arial,sans-serif; }
.double-public-bid .bid-badge { font-size:11px; padding:1px 4px; }
.double-owed { color:var(--muted); }
.double-target small { font:10px Arial,sans-serif; color:var(--muted); }
.double-target.dealer-target { gap:8px; }
.your-debt { display:flex; align-items:baseline; gap:6px; padding:3px 9px; border:1px solid #d5ad63; border-radius:5px; background:#fff0ce; color:#85390d; font:bold 19px/1.15 Arial,sans-serif; }
.your-debt strong { font-size:25px; }
.double-center { grid-area:2/2; text-align:center; font:11px/1.5 Arial,sans-serif; color:var(--muted); }
.double-center h2 { margin:0 0 4px; font:18px Georgia,serif; color:var(--ink); }
.double-note { font-size:11px; color:var(--muted); text-align:center; margin:8px 0 0; }
.double-actions { display:grid; grid-template-columns:1fr 1.2fr 1fr; gap:8px; margin-top:10px; }
.double-actions button { min-height:40px; padding:7px 4px; font-size:13px; font-weight:bold; border-radius:5px; }
#passDouble { background:var(--active); color:var(--ink); border-color:var(--gold); }
#confirmDouble { background:#e9f3ec; color:#155e30; border-color:#508c61; }
#confirmDouble:hover { background:#dcefe2; }
.dark-mode #confirmDouble { background:#203629; color:#b6e4c5; border-color:#508c61; }
@media(max-width:650px){.double-name{font-size:11px}.your-debt{font-size:16px;padding:3px 4px}.your-debt strong{font-size:22px}.double-diamond{gap:6px}.double-call{padding:8px}.double-call strong{font-size:23px}.call-options{font-size:15px}.double-actions{gap:5px}.double-actions button{font-size:12px}}
.result-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; }
.middle:has(.completed-table){width:calc(100% - 24px);height:auto;max-height:100%;overflow:auto}
.completed-table{padding:16px;background:var(--panel);border:1px solid var(--line);border-radius:10px;text-align:center}
.completed-table h2{margin:0 0 10px;font:24px Georgia,serif}
.completed-table .modal-actions{justify-content:center;flex-wrap:wrap}
@media(max-width:700px){.completed-table{padding:8px;font-size:12px}.completed-table .result-grid{grid-template-columns:repeat(2,1fr)}.completed-table h2{font-size:18px}.mobile-landscape .middle:has(.completed-table){width:calc(100% - 8px);height:auto}}
.result-cell { background: var(--cell); border: 1px solid var(--line); border-radius: 5px; text-align: center; padding: 8px 3px; }
.result-cell b, .result-cell small { display: block; }
.result-cell b { font-size: 22px; }
.subtle, .muted { color: var(--muted); }
.subtle { font-size: 12px; }
.review-controls { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px; padding: 6px 8px; background: var(--panel); border-bottom: 1px solid var(--line); font: 12px Arial, sans-serif; }
.bot-label { font: 11px/1.5 Arial, sans-serif; color: var(--muted); padding: 6px 2px 0; text-align: center; }
.toast { position: fixed; bottom: calc(20px + var(--safe-bottom)); left: calc((100% + var(--safe-left) - var(--safe-right)) / 2); transform: translateX(-50%); max-width: calc(100% - var(--safe-left) - var(--safe-right) - 24px); padding: 10px 14px; border: 1px solid var(--line); border-radius: 6px; background: var(--panel); box-shadow: var(--shadow); font: 13px Arial, sans-serif; opacity: 0; pointer-events: none; z-index: 50; }
.toast.show { opacity: 1; }
#replayMode { height: 100dvh; display: flex; flex-direction: column; }
#replayMode iframe { width: 100%; flex: 1; min-height: 0; border: 0; }
@media (min-width: 1350px) { .hand .card + .card { margin-left: -18px; } }
@media (max-width: 1100px) {
  .table { grid-template-columns: minmax(160px, 1fr) minmax(380px, 2fr) minmax(180px, 1fr); gap: 8px; padding: 8px; }
  .opponent-hand .card + .card { margin-left: -52px; }
  .hand .card + .card { margin-left: -34px; }
  .hand .card { width: 60px; }
  .north .opponent-hand .card + .card { margin-left: -37px; }
  .last-trick-diamond { width: 140px; height: 140px; }
  .last-play .card { width: 34px; height: 49px; }
  .last-play .center-suit { font-size: 18px; }
}
@media (max-width: 800px) {
  .toolbar { position: relative; }
  #app>.toolbar { top:0; }
  .toolbar button { min-height: 36px; }
  .table { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-rows: auto auto auto auto auto; gap: 8px; padding: 8px; }
  .top-left { grid-area: 1 / 1; }
  .north { grid-area: 1 / 2; }
  .north .opponent-hand { justify-content: flex-end; }
  .north .opponent-hand .card + .card { margin-left: -51px; }
  .north .card { width: 45px; height: 50px; }
  .revealed-hand .card { width: 32px; height: 48px; flex-basis: 32px; min-width: 30px; margin-right: -21px; }
  .revealed-hand .card:last-child { margin-right: 0; }
  .revealed-hand .corner { font-size: 9px; line-height: 10px; left: 1px; }
  .revealed-hand .center-suit { font-size: 17px; }
  .north .opponent-hand .card + .card { margin-left: -36px; }
  .north .name-line, .north .bid-badges { justify-content: flex-end; }
  .west-column { grid-area: 2 / 1; align-content: start; }
  .east-column { grid-area: 2 / 2; align-content: start; }
  .west .opponent-hand, .east .opponent-hand { display: none; }

  .play-center { grid-area: 3 / 1 / auto / -1; min-height: 280px; }
  .south { grid-area: 4 / 1 / auto / -1; }
  .side-panel { grid-area: 5 / 2; }
  .bottom-right { grid-area: 6 / 2; align-self: start; }
  .table .west-column { display: contents; }
  .west { grid-area: 2 / 1; }
  .last-trick { grid-area: 5 / 1; align-self: start; max-width: none; }
  .east-column { display: contents; }
  .east { grid-area: 2 / 2; }

  .deal-title { font-size: 22px; }
  .dealer-line, .contract-line { font-size: 16px; }
  .modal { padding: 14px; }
  .hand .card { width: 62px; }
  .hand .card + .card { margin-left: -25px; }
}
@media (max-width: 540px) {
  .wordmark { width: auto; }
  .toolbar .spacer { display: none; }
  .app { padding: 4px; }
  .table { padding: 6px; gap: 8px 6px; }
  .game-id { font-size: 10px; }
  .player { padding: 5px 3px; }
  .north .opponent-hand .card + .card { margin-left: -37px; }
  .name { font-size: 16px; }
  .metric { font-size: 10px; }
  .north .name-line .metric { display: block; }
  .hand { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 9px 3px; padding: 7px 0 0; }
  .hand .card { width: 100%; height: 72px; }
  .hand .card + .card { margin-left: 0; }
  .hand .corner { font-size: 14px; line-height: 13px; }
  .hand .center-suit { font-size: 26px; padding-top: 14px; }
  /* Keep South horizontal too when reviewing with every hand revealed. */
  body:not(.old-school-table) .table:has(.revealed-hand) .hand { display: flex; flex-wrap: nowrap; gap: 0; padding-top: 4px; }
  body:not(.old-school-table) .table:has(.revealed-hand) .hand .card { width: 44px; height: 62px; flex: 0 1 44px; min-width: 30px; }
  body:not(.old-school-table) .table:has(.revealed-hand) .hand .card + .card { margin-left: -22px; }
  body:not(.old-school-table) .table:has(.revealed-hand) .hand .corner { font-size: 11px; line-height: 11px; left: 2px; }
  body:not(.old-school-table) .table:has(.revealed-hand) .hand .center-suit { font-size: 22px; padding-top: 0; }
  .middle { width: min(300px, 100%); height: 244px; }
  .slot-W { left: 3px; }
  .slot-E { right: 3px; }
  .card.big { width: 72px; height: 100px; }
  .played-slot { width: 72px; height: 100px; }
  .card.big .center-suit { font-size: 40px; }
  .domino-cards { gap: 1px; }
  .domino-cards .card { height: 38px; }
  .domino-cards .corner { font-size: 9px; line-height: 9px; left: 1px; }
  .domino-cards .center-suit { font-size: 12px; padding-top: 12px; }
  .panel { padding: 6px; font-size: 11px; }
  .panel-heading { flex-wrap: wrap; gap: 1px; }
  .score-value { font-size: 12px; }
  .summary-hint { display: none; }
  .modal h1, .modal h2 { font-size: 23px; }
  .modal-actions { justify-content: stretch; }
  .modal-actions button { flex: 1; }
}
@media (prefers-reduced-motion: reduce) { * { scroll-behavior: auto !important; } }
.mode-link { padding: 5px 8px; color: var(--ink); white-space: nowrap; }
.online-bar { padding: 5px 12px; font: 13px/1.4 Arial, sans-serif; background: var(--panel); color: var(--ink); border-bottom: 1px solid var(--line); }
.online-bar:empty { display:none; }
.room-seats { display: grid; gap: 6px; margin: 12px 0; }
.room-seat { display: flex; gap: 10px; align-items: center; padding: 6px; border: 1px solid var(--line); border-radius: 5px; }
.room-seat span { flex: 1; overflow-wrap: anywhere; }
.room-seat button { min-height: 34px; }
.room-listing { display: block; width: 100%; text-align: left; margin: 5px 0; }
#inviteLink { width: 100%; min-width: 0; font-size: 13px; padding: 8px; user-select: text; }
#onlineName, #joinCode { width: 100%; min-width: 0; padding: 8px; font-size: 16px; user-select: text; }

/* Shared games use relative compass labels and keep chat beside the table. */
@media (min-width: 801px) {
 .side-panel { grid-area: 1 / 3 / 3 / 4; position: relative; align-self: stretch; pointer-events: none; }
 .table-info-panel { position: absolute; inset: 0 0 auto; max-height: var(--info-space, 180px); display: flex; flex-direction: column; pointer-events: auto; z-index: 1; }
 #infoView { flex-shrink: 0; }
 .west-column, .east-column { align-content: center; }
 .west .opponent-hand, .east .opponent-hand { min-height: 54px; }
 .west, .east { display: flex; flex-direction: column; min-height: 160px; }
 .west .opponent-hand, .east .opponent-hand, .west .revealed-hand, .east .revealed-hand { margin-top: auto; }
 .west .name-line, .east .name-line { min-height: 42px; }
 .west .bid-badges, .east .bid-badges { min-height: 21px; }
}
.double-max, button.danger { background: #b51f2b; border-color: #981925; color: #fff; }
.double-max:hover, button.danger:hover { background: #961823; }
.online-site #reviewBtn, .online-site #replayBtn, .online-site #reviewControls,
.online-site.online-playing #downloadBtn { display: none !important; }
.table-chat { min-width: 0; }
.chat-messages { height: 130px; overflow-y: auto; margin: 6px 0; font: 12px/1.4 Arial, sans-serif; user-select: text; overflow-wrap: anywhere; }
.chat-messages p { margin: 5px 0; }
.chat-messages b { display: inline; font-size: 12px; color: var(--ink); }
#chatForm { display: flex; gap: 4px; }
#chatInput { min-width: 0; width: 100%; padding: 7px; border: 1px solid var(--line); border-radius: 4px; background: var(--cell); color: var(--ink); user-select: text; }
#chatSend { flex: 0 0 auto; }
@media (max-width: 980px) {
 .online-site .bottom-right { grid-area: 6 / 1 / auto / -1; }
 .chat-messages { height: 110px; }
 #chatInput { font-size: 16px; }
}

.waiting-player { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:9px 0; border-bottom:1px solid var(--line); }
.waiting-player span { color:var(--muted); font-size:12px; }

/* Selected compact doubling preview: permanent dealer fill and full-box X. */
.double-diamond { grid-template-columns:1fr 1.1fr 1fr; grid-template-rows:106px; gap:8px; align-items:start; max-width:none; }
.double-N { grid-area:1/2; margin:0; }.double-W { grid-area:1/1; margin-top:22px; }.double-E { grid-area:1/3; margin-top:22px; }
.double-target { position:relative; isolation:isolate; overflow:hidden; height:84px; width:100%; background:var(--cell); border:1px solid #acaca5; }
.double-target[aria-pressed="true"] { border:1px solid #acaca5; background:var(--cell); padding:6px 4px; }
.double-target[aria-pressed="true"] .double-name::before { content:none; }
.double-target.dealer-target, .double-target.dealer-target:hover, .double-target.dealer-target[aria-pressed="true"] { background:#fffbe5; color:#28271e; }
.dark-mode .double-target.dealer-target { background:#494127; color:#fff4c5; }
.your-debt { padding:0; border:0; background:none; color:inherit; font:14px/1.3 Arial,sans-serif; gap:4px; }
.your-debt strong { font-size:14px; color:#b02d29; }
.selection-cross { display:none; position:absolute; inset:5px; width:calc(100% - 10px); height:calc(100% - 10px); pointer-events:none; z-index:-1; }
.double-target[aria-pressed="true"] .selection-cross { display:block; }
.selection-cross path { stroke:#bd3531; stroke-width:3; vector-effect:non-scaling-stroke; opacity:.48; }
.selection-summary { text-align:center; margin-top:8px; font:12px/1.5 Arial,sans-serif; color:var(--muted); }
.selected-seats { color:#b02d29; font-weight:800; }
.dark-mode .selected-seats,.dark-mode .your-debt strong { color:#ffa49d; }
/* Keep the desktop table usable near the tablet/phone transition. */
@media (min-width:801px) and (max-width:1100px) {
 body:not(.mobile-landscape) .table:has(#domino:not(.hidden)) { grid-template-rows:auto minmax(240px,auto) auto; }
 body:not(.mobile-landscape) .play-center:has(#domino:not(.hidden)) { min-height:240px; }
 body:not(.mobile-landscape) .contract-line.called { font-size:18px; padding:4px 6px; }
 body:not(.mobile-landscape) .contract-line .call-options { font-size:12px; }
 body:not(.mobile-landscape) .modal { padding:8px; }
 body:not(.mobile-landscape) .double-call { padding:5px 8px; margin-bottom:6px; gap:6px; }
 body:not(.mobile-landscape) .double-call strong { font-size:20px; }
 body:not(.mobile-landscape) .double-call .call-options { font-size:13px; }
 body:not(.mobile-landscape) .double-dealer { font-size:11px; line-height:1.35; }
 body:not(.mobile-landscape) .double-diamond { grid-template-rows:auto; gap:6px; }
 body:not(.mobile-landscape) .double-W,body:not(.mobile-landscape) .double-E { margin-top:10px; }
 body:not(.mobile-landscape) .double-target { height:auto; min-height:72px; gap:2px; padding:5px 3px; }
 body:not(.mobile-landscape) .double-target.dealer-target { gap:4px; }
 body:not(.mobile-landscape) .double-actions { margin-top:6px; gap:6px; }
 body:not(.mobile-landscape) .double-actions button { min-height:36px; padding:5px 3px; }
 body:not(.mobile-landscape) .selection-summary { margin-top:4px; }
}
/* Mobile tables with tablet-height space can show a larger current trick. */
@media (min-height:500px) and (min-width:700px) {
 .mobile-landscape:not(.mobile-hand-review) .middle:not(:has(.completed-table)) { width:min(300px,100%); height:232px; }
 .mobile-landscape:not(.mobile-hand-review) .played-slot,.mobile-landscape:not(.mobile-hand-review) .played-slot .card { width:78px; height:110px; }
 .mobile-landscape:not(.mobile-hand-review) .played-slot .corner { font-size:23px; line-height:21px; }
 .mobile-landscape:not(.mobile-hand-review) .played-slot .center-suit { display:flex; font-size:48px; }
 .mobile-landscape:not(.mobile-hand-review) .domino-cards .card { height:44px; }
}
/* Account dialog and table lobby share the replayer's light, quiet surfaces. */
.account-dialog { width:min(440px,calc(100% - 24px)); border:1px solid var(--line); border-radius:12px; padding:24px; color:var(--ink); background:var(--felt); box-shadow:var(--shadow); }
.account-dialog::backdrop { background:rgba(0,0,0,.35); }
.account-dialog h2 { margin-top:0; }
.account-dialog p { line-height:1.5; }
.account-choice { display:flex; align-items:center; gap:8px; margin:15px 0; font:15px Arial,sans-serif; }
.account-choice small { color:var(--muted); }
.account-dialog input:not([type=radio]) { width:100%; padding:10px; }
.account-dialog { inset:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left); max-width:calc(100vw - var(--safe-left) - var(--safe-right) - 24px); max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 32px); overflow:auto; box-sizing:border-box; }
.account-field { display:block; margin:14px 0 6px; font:600 14px Arial,sans-serif; }
.account-dialog input:not([type=radio]) { box-sizing:border-box; font-size:16px; }
.account-dialog form > small { display:block; margin-top:5px; color:var(--muted); font:12px/1.4 Arial,sans-serif; }
.account-divider { color:var(--muted); font:13px Arial,sans-serif; text-align:center; }
#googleSignIn { min-height:40px; font:13px/1.5 Arial,sans-serif; }
#accountError { color:var(--negative); font:13px/1.5 Arial,sans-serif; }
#closeAccount { margin-top:16px; }
.privacy-page { max-width:760px; margin:30px auto; padding:28px; background:var(--felt); line-height:1.7; }
/* Lobby follows the approved table-card concept. Game styling stays above. */
#lobbyHeader,#onlineLobby { display:none; }
body.lobby-open { --felt:#fff; --page:#f7f7f3; --panel:#fff; --ink:#20241e; --muted:#5f665a; --line:#d5d9ce; --active:#f9f2d7; --gold:#a08c3b; --positive:#36583a; background:#fff; }
body.lobby-open.dark-mode { --felt:#292d27; --page:#20231f; --panel:#292d27; --ink:#eceee7; --muted:#b3bbac; --line:#48503f; --active:#484128; --gold:#b39b43; --positive:#accaaa; background:#141713; }
.lobby-open #app { max-width:1500px; margin:10px auto; border:1px solid var(--line); border-radius:12px; background:var(--page); min-height:calc(100dvh - 20px); }
.lobby-open #app>.toolbar,.lobby-open main.app { display:none; }
.lobby-open #lobbyHeader { display:flex; border-radius:12px 12px 0 0; }
.lobby-brand { text-decoration:none; }

.lobby-open .online-bar { background:#edf2e8; color:var(--muted); border-bottom:0; padding:10px 34px; font-size:14px; }
.lobby-open.dark-mode .online-bar { background:#343d2e; }
.lobby-open #onlineLobby { display:block; padding:36px 38px 30px; }
.lobby-heading { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:32px; }
.lobby-heading h1 { font:500 40px/1.1 Georgia,serif; letter-spacing:-.5px; margin:0 0 10px; }
.lobby-heading p { font:17px/1.5 Arial,sans-serif; color:var(--muted); margin:0; }
#onlineLobby button { min-height:42px; font-size:16px; border-color:var(--line); border-radius:6px; }
#onlineLobby button.primary { border-color:var(--gold); font-weight:500; }
#onlineLobby #createRoom { min-width:156px; padding:14px 20px; font-size:18px; }
.lobby-guest { display:flex; align-items:center; gap:14px; font:14px Arial,sans-serif; margin-bottom:24px; }
.lobby-guest input { width:220px; max-width:100%; padding:10px; border:1px solid var(--line); background:var(--felt); color:var(--ink); border-radius:5px; font-size:16px; }
.table-listings { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
.lobby-table-card { background:var(--felt); border:1px solid var(--line); border-radius:12px; padding:24px; min-width:0; display:flex; flex-direction:column; }
.lobby-table-card.joined-table,.lobby-table-card.nearly-full { border-color:var(--gold); }
.table-card-heading { display:flex; justify-content:space-between; align-items:baseline; gap:10px; flex-wrap:wrap; }
.table-card-heading h3 { font:500 26px/1.2 Georgia,serif; margin:0; }
.table-card-heading>span { color:var(--positive); font:14px Arial,sans-serif; white-space:nowrap; }
.table-places { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin:32px 0 26px; }
.table-place { display:flex; flex-direction:column; align-items:center; gap:9px; font:16px/1.3 Arial,sans-serif; text-align:center; min-width:0; overflow-wrap:anywhere; }
.table-place small { font-size:12px; color:var(--muted); }
.place-avatar { display:grid; place-items:center; width:52px; height:52px; flex-shrink:0; border-radius:50%; border:1px dashed var(--line); background:var(--felt); font:500 20px Arial,sans-serif; color:var(--muted); }
.occupied .place-avatar,.lobby-profile .place-avatar { border-style:solid; color:var(--ink); background:#edf2e8; }
.dark-mode .occupied .place-avatar,.dark-mode .lobby-profile .place-avatar { background:#343d2e; }
.lobby-profile .place-avatar { width:40px; height:40px; font-size:17px; }
.bot-place .place-avatar { border-style:solid; border-radius:9px; background:var(--active); font-size:12px; }
#onlineLobby button.table-place { padding:0; border:0; background:transparent; color:var(--ink); justify-content:start; min-height:0; }
#onlineLobby button.table-place:hover .place-avatar { border-color:var(--gold); box-shadow:0 0 0 2px var(--active); }
.table-place.fill-approved .place-avatar { color:var(--positive); border:2px solid var(--positive); }
.table-place.fill-approved small { color:var(--positive); }
.table-card-bottom { border-top:1px solid var(--line); padding-top:16px; margin-top:auto; display:flex; flex-direction:column; gap:16px; }
.table-tags { display:flex; gap:9px; align-items:center; flex-wrap:wrap; font:14px Arial,sans-serif; color:var(--muted); }
.table-tag { padding:6px 9px; border-radius:5px; background:var(--page); }
.table-card-bottom>button { width:100%; }
.joined-actions { display:flex; gap:8px; }
.joined-actions button { flex:1; }
.joined-hint { font:13px/1.5 Arial,sans-serif; color:var(--muted); margin:0; }
.start-countdown { margin:0; font:500 14px Arial,sans-serif; color:var(--positive); }
.start-countdown:empty,#copyNotice:empty { display:none; }
#copyNotice { font:13px/1.4 Arial,sans-serif; overflow-wrap:anywhere; }
.lobby-empty { grid-column:1/-1; padding:30px; border:1px dashed var(--line); border-radius:10px; text-align:center; color:var(--muted); }
.lobby-empty h3 { font:500 23px Georgia,serif; color:var(--ink); margin:0 0 9px; }
.lobby-empty p { font:15px Arial,sans-serif; margin:0; }
.playing-heading { font:500 25px Georgia,serif; margin:32px 0 14px; }
.playing-list { border:1px solid var(--line); border-radius:10px; overflow:hidden; background:var(--felt); }
.playing-list:has(.lobby-quiet) { border:0; background:transparent; }
.playing-row { display:grid; grid-template-columns:minmax(155px,1fr) minmax(240px,2fr) auto; align-items:center; gap:18px; padding:13px 18px; font:14px/1.4 Arial,sans-serif; }
.playing-row+.playing-row { border-top:1px solid var(--line); }
.playing-meta { display:flex; flex-direction:column; gap:3px; }
.playing-meta>span { color:var(--muted); font-size:13px; }
.playing-players { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; }
.playing-player { display:flex; flex-direction:column; gap:3px; min-width:0; }
.playing-player>span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--muted); }
.playing-actions { display:flex; gap:7px; }
#onlineLobby .playing-actions button { min-height:36px; padding:7px 11px; font-size:14px; }
.lobby-quiet { margin:0; color:var(--muted); font:15px Arial,sans-serif; padding:10px 0; }
.lobby-footer { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:18px; border-top:1px solid var(--line); margin-top:30px; padding-top:24px; font:14px/1.5 Arial,sans-serif; color:var(--muted); }
.join-code { display:flex; align-items:center; flex-wrap:wrap; gap:10px; }
.join-code input { width:145px; min-width:0; padding:12px; border:1px solid var(--line); border-radius:6px; background:var(--felt); color:var(--ink); font-size:16px; }
.saved-seats { margin-bottom:20px; font:14px/1.5 Arial,sans-serif; color:var(--muted); }
.saved-seats button { margin:8px 8px 0 0; }
.lobby-chat-details { margin-top:24px; font:15px Arial,sans-serif; }
.lobby-chat-details summary,.saved-seats summary { cursor:pointer; }
#lobbyChatSlot { max-width:500px; margin-top:12px; }
#lobbyChatSlot .table-chat { width:100%; padding:16px; }
#lobbyChatSlot .chat-messages { height:140px; max-height:140px; }
.table-setup { border:0; padding:0; margin:0; text-align:left; }
.table-setup legend { font:bold 15px Arial,sans-serif; margin-bottom:12px; }
.table-setup label { display:flex; gap:10px; align-items:center; font:14px Arial,sans-serif; padding:10px 0 5px; }
.table-setup p { color:var(--muted); font:12px/1.5 Arial,sans-serif; margin:4px 0 10px; }
.table-setup input { accent-color:var(--gold); }
.table-setup select { margin-left:auto; }
.modal-shade.lobby-dialog { position:fixed; inset:0; height:auto; min-height:0; padding:20px; z-index:100; background:#0005; }
.lobby-dialog .modal { max-width:470px; max-height:calc(100dvh - 40px); overflow-y:auto; padding:22px; }
.lobby-dialog .modal:has(.admin-view) { max-width:780px; }
.admin-rows { max-height:55dvh; overflow-y:auto; }
.admin-row { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:12px 0; border-top:1px solid var(--line); }
.admin-row>div { display:flex; flex-direction:column; gap:4px; min-width:0; }
.admin-row small { color:var(--muted); overflow-wrap:anywhere; }
.admin-row>button { flex-shrink:0; }
.account-reference { margin-top:16px; font:13px/1.5 Arial,sans-serif; color:var(--muted); }
.account-reference code { display:block; overflow-wrap:anywhere; user-select:all; margin:8px 0; }
.kibitz-navigation-short { display:none; }
.online-kibitzing #app>.toolbar { position:sticky; top:var(--safe-top); z-index:50; }
.online-kibitzing:has(.kibitz-hand-choices) #app>.toolbar { z-index:1; }
.online-kibitzing #modalShade:has(.kibitz-hand-choices) { position:fixed; inset:calc(var(--safe-top) + 48px) max(8px,var(--safe-right)) max(8px,var(--safe-bottom)) max(8px,var(--safe-left)); height:auto; min-height:0; padding:8px; background:#0005; z-index:60; }
.online-kibitzing #modalShade:has(.kibitz-hand-choices) #modal { box-sizing:border-box; width:min(460px,100%); max-height:100%; overflow:auto; }

.compact-game-toolbar #app>.kibitz-controls { display:none; }
#mobileMenu .kibitz-controls { border:1px solid var(--line); border-radius:6px; margin-top:8px; }
@media(max-width:400px){
 .online-kibitzing.compact-game-toolbar #app>.toolbar { gap:3px; padding-inline:5px; }
 .online-kibitzing.compact-game-toolbar .game-navigation-label { display:none; }
 .online-kibitzing.compact-game-toolbar .kibitz-navigation-short { display:inline; }
 .online-kibitzing.compact-game-toolbar .game-navigation>summary { gap:4px; padding-inline:6px; }
 .online-kibitzing.compact-game-toolbar #mobileFullscreenBtn { flex-basis:32px; }
}
#tableKibitzBtn[hidden] { display:none; }
#tableKibitzBtn { flex:none; font-weight:700; border-color:var(--accent); }
.compact-game-toolbar #tableKibitzBtn { display:block; min-height:36px; padding-inline:8px; }
.compact-game-toolbar #tableKibitzBtn[hidden] { display:none; }
.kibitz-controls { display:flex; gap:10px; flex-wrap:wrap; align-items:center; padding:9px 12px; background:var(--active); border-bottom:1px solid var(--gold); font:12px/1.4 Arial,sans-serif; }
.kibitz-controls label { display:flex; align-items:center; gap:8px; }
.kibitz-controls select { max-width:270px; }
.online-kibitzing #autoMode,.online-kibitzing #paceBtn,.online-kibitzing #downloadBtn,.online-kibitzing #newMatchBtn,.online-kibitzing #tableExitBtn { display:none!important; }
.online-kibitzing .hand button { cursor:default; }
@media(max-width:1100px){.table-listings{grid-template-columns:repeat(2,minmax(0,1fr))}.playing-row{grid-template-columns:minmax(145px,1fr) minmax(210px,2fr)}.playing-actions{grid-column:1/-1;justify-content:flex-end}}
@media(max-width:760px){
 .lobby-open #app{margin:0;border-radius:0;min-height:100dvh}.lobby-brand{font-size:30px}.lobby-open .online-bar{padding:9px 20px;font-size:13px}.lobby-open #onlineLobby{padding:26px 20px}.lobby-heading{align-items:start;gap:18px;flex-wrap:wrap;margin-bottom:24px}.lobby-heading h1{font-size:34px}.lobby-heading p{font-size:16px}#onlineLobby #createRoom{min-width:0;padding:10px 16px;font-size:16px}.table-listings{grid-template-columns:minmax(0,1fr);gap:16px}.lobby-table-card{padding:20px}.table-card-heading h3{font-size:24px}.table-places{margin:24px 0}.table-place{font-size:15px}.place-avatar{width:46px;height:46px}.playing-row{padding:12px;gap:10px;grid-template-columns:1fr auto}.playing-meta{grid-column:1/-1}.playing-players{grid-column:1/-1;gap:10px;font-size:13px}.playing-actions{grid-column:1/-1}.join-code{gap:8px}.join-code label{width:100%}.lobby-footer{font-size:13px}.kibitz-controls label{width:100%}.kibitz-controls select{max-width:100%;flex:1}
}
@media(max-width:400px){.lobby-brand{font-size:27px}.lobby-open #onlineLobby{padding:22px 14px}.table-places{gap:5px}.table-place{font-size:14px}.place-avatar{width:42px;height:42px}}

/* Table activity, administration and a retained-seat lobby visit. */
.chat-messages .chat-system { color:var(--negative); font-weight:600; }
.called-by b { color:var(--negative); font-weight:800; }
.double-call .called-by { text-transform:none; }
.current-table { display:flex; justify-content:space-between; align-items:center; gap:16px; padding:16px 20px; margin-bottom:24px; border:1px solid var(--gold); border-radius:10px; background:var(--active); font:15px Arial,sans-serif; }
.current-table>div { display:flex; flex-direction:column; gap:7px; }
.admin-players { display:flex; flex-direction:column; gap:6px; margin-top:8px; }
.admin-players>span { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.admin-players button { font-size:12px; padding:5px 8px; }
.lobby-open .kibitz-controls { display:none; }
@media(max-width:540px){.current-table{flex-wrap:wrap}.admin-row{align-items:flex-start;flex-wrap:wrap}.admin-row>div{width:100%}}

/* Approved navy game palette; the separate replayer document is untouched. */
body.dark-mode:not(.lobby-open){--felt:#14232f;--ink:#f2f4f6;--muted:#b6c4cf;--line:#425664;--panel:#1b2c38;--cell:#233744;--page:#101b24;--control:#263a47;--hover:#344f5e;--active:#2b3e36;--gold:#e6be64;--positive:#9ccd9e;--negative:#ff9390;background:#101b24}
.dark-mode .toolbar{background:#162530;border-color:#425664}
.dark-mode:not(.lobby-open) button,.dark-mode:not(.lobby-open) select{border-color:#526977}
.dark-mode .play-center{background:radial-gradient(ellipse at center,#1a3241,#14232f)}
.dark-mode .card.back{background:repeating-linear-gradient(45deg,#294556,#294556 4px,#244050 4px,#244050 8px);border-color:#698595}
.deck-options{margin:18px 0;padding:12px;border:1px solid var(--line);border-radius:6px;font:14px Arial,sans-serif}
.deck-options label{display:flex;align-items:center;gap:8px}.deck-options input{width:auto!important}.deck-options p{font-size:13px}
.deck-spades{color:var(--ink)}.deck-hearts{color:#bd2828}.deck-diamonds{color:#2868c4}.deck-clubs{color:#188453}
.dark-mode .deck-hearts{color:#ff9595}.dark-mode .deck-diamonds{color:#8fbaff}.dark-mode .deck-clubs{color:#8bcfa7}
body.four-color-deck .card[data-card^="s"]{color:#141414}
body.four-color-deck .card[data-card^="h"]{color:#c00000}
body.four-color-deck .card[data-card^="d"]{color:#075bbb}
body.four-color-deck .card[data-card^="c"]{color:#08733c}
#chatMessages .chat-author,#globalMessages .chat-author{color:hsl(var(--author-hue) 65% 31%)}
body.dark-mode #chatMessages .chat-author,body.dark-mode #globalMessages .chat-author{color:hsl(var(--author-hue) 65% 76%)}
#chatMessages time,#globalMessages time{font:10px Arial,sans-serif;color:var(--muted);white-space:nowrap;margin-left:7px}

/* Replacement consent belongs to the vacant place, in the viewer's perspective. */
.vacant-seat{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px 14px;width:max-content;max-width:100%;min-height:64px;padding:10px 12px;border:1px dashed var(--muted);border-radius:9px;background:var(--panel);font:14px Arial,sans-serif}
.empty-seat-name{display:inline-flex;align-items:center;gap:8px;font-weight:700;white-space:nowrap}
.bot-vote{display:inline-flex;align-items:center;justify-content:center;gap:12px;border-radius:22px;padding:8px 12px;font:13px Arial,sans-serif;min-height:40px;white-space:nowrap}
.bot-vote .vote-count,.bot-vote-status .vote-count{border-left:1px solid var(--line);padding-left:10px;font-weight:700}
.bot-vote[aria-pressed=true]{background:#e0efdf;border-color:#4d7954;color:#194523}
.dark-mode .bot-vote[aria-pressed=true]{background:#345742;border-color:#97ba96;color:#eff8ed}
.bot-vote-status{display:inline-flex;gap:10px;color:var(--muted);font-size:12px}
.north .vacant-seat,.south .vacant-seat{margin-inline:auto}
.east .vacant-seat{margin-left:auto}
.player.vacant .bid-badges,.player.vacant .opponent-hand,.player.vacant .hand:has(.card.back){display:none}
@media(pointer:coarse){.bot-vote{min-height:44px}}

/* Reserve the hand's spacing while the selected card is shown on the table.
   This is a pending presentation only; no local turn/score/winner is inferred. */
#hand .card.pending{visibility:hidden;pointer-events:none}
.card.pending-table{opacity:.8;animation:card-pending-in 100ms ease-out}
@keyframes card-pending-in{from{transform:translateY(5px);opacity:.5}to{transform:translateY(0);opacity:.8}}
@media(prefers-reduced-motion:reduce){.card.pending-table{animation:none}}

/* A settled deal uses the card area for its complete score breakdown. */
.deal-result h2 { margin:0 0 5px; }
.deal-result>p { margin:4px 0 9px; }
.deal-score-table { width:100%; border-collapse:collapse; font:14px/1.3 Arial,sans-serif; }
.deal-score-table th,.deal-score-table td { padding:7px 9px; text-align:right; border-bottom:1px solid var(--line); white-space:nowrap; }
.deal-score-table th:first-child { text-align:left; max-width:175px; overflow:hidden; text-overflow:ellipsis; }
.deal-score-table thead { color:var(--muted); font-size:12px; }
.deal-score-table tbody tr:first-child { background:var(--active); }
.table:has(.deal-result)>.player.south { display:none; }
.mobile-landscape .table:has(.deal-result)>.player,.mobile-landscape .table:has(.deal-result)>.west-column,.mobile-landscape .table:has(.deal-result)>.east-column,.mobile-landscape .table:has(.deal-result)>#lastTrickDock { display:none!important; }
.mobile-landscape .table .play-center:has(.modal-shade:not(.hidden)):has(.deal-result) { inset:5px 8px; }
.mobile-landscape .modal:has(.deal-result) { width:min(620px,100%); margin:auto; }
.mobile-landscape .deal-score-table th,.mobile-landscape .deal-score-table td { padding:5px 8px; }
.mobile-landscape .deal-result .modal-actions button { min-height:36px; }

/* All four horizontal hands with the landscape gameplay layout. */
.mobile-landscape.mobile-hand-review .review-controls { min-height:39px; padding:2px 6px; gap:4px; flex-wrap:nowrap; }
.mobile-hand-review #reviewLabel { display:none; }
.mobile-hand-review .review-controls button { min-height:34px; padding:4px 7px; font-size:11px; }
.mobile-landscape.mobile-hand-review .table { height:calc(100dvh - 43px - var(--practice-review-height,39px) - var(--safe-top) - var(--safe-bottom)); min-height:0; --hand-height:calc(82px + var(--compact-heading-extra,0px)); --last-width:100px; }
.mobile-hand-review .hand-hint,.mobile-hand-review .bid-badges,.mobile-hand-review #youBidBadge { display:none; }
.mobile-landscape.mobile-hand-review .player.north { top:0; left:50%; width:340px; max-width:46%; }
.mobile-landscape.mobile-hand-review .player.west,.mobile-landscape.mobile-hand-review .player.east { top:92px; width:30%; max-width:280px; }
.mobile-landscape.mobile-hand-review .player.west { left:7px; }
.mobile-landscape.mobile-hand-review .player.east { right:7px; }
.mobile-hand-review .revealed-hand { display:flex; width:100%; justify-content:center; padding-top:2px; }
.mobile-hand-review .revealed-hand .card { width:36px; min-width:0; height:48px; flex:0 0 36px; margin:0; }
.mobile-hand-review .revealed-hand .card+.card { margin-left:calc((100% - 36px) / 12 - 36px); }
.mobile-hand-review .revealed-hand .corner { font:700 15px/16px Georgia,serif; left:2px; top:2px; }
.mobile-hand-review .revealed-hand .center-suit { display:none; }
.mobile-landscape.mobile-hand-review .player.south { padding:2px 16px; }
.mobile-landscape.mobile-hand-review #hand { height:56px; min-height:56px; padding:2px 0; }
.mobile-landscape.mobile-hand-review #hand .card { height:54px; width:52px; }
.mobile-landscape.mobile-hand-review #hand .corner { font-size:20px; line-height:21px; }
.mobile-landscape.mobile-hand-review .play-center { inset:70px 31% 83px; }
.mobile-landscape.mobile-hand-review .middle { width:126px; height:112px; }
.mobile-landscape.mobile-hand-review .played-slot,.mobile-landscape.mobile-hand-review .played-slot .card { width:34px; height:46px; }
.mobile-hand-review .played-slot .corner { font-size:14px; line-height:15px; }
.mobile-landscape.mobile-hand-review #lastTrickDock { top:0; left:5px; bottom:auto; height:92px; font-size:10px; border:0; }
.mobile-hand-review #lastTrickDock .panel-heading span { display:none; }
.mobile-hand-review .last-trick-diamond { width:80px; height:75px; margin:0 auto; }
.mobile-hand-review .last-play { font-size:8px; }
.mobile-hand-review .last-play .card { width:23px; height:31px; }
.mobile-hand-review .last-play .corner { font-size:10px; line-height:10px; }
.mobile-hand-review .name { font-size:13px; }
.mobile-hand-review .name-line { justify-content:center; }
@media(max-height:375px){.mobile-landscape.mobile-hand-review .player.west,.mobile-landscape.mobile-hand-review .player.east{top:74px}.mobile-landscape.mobile-hand-review .play-center{top:55px}.mobile-hand-review .revealed-hand .card{height:42px}}
@media(max-width:740px){.mobile-landscape.mobile-hand-review .player.west,.mobile-landscape.mobile-hand-review .player.east{width:32%}.mobile-hand-review .west .revealed-hand .corner,.mobile-hand-review .east .revealed-hand .corner{font-size:13px;line-height:14px}}

/* Personal display preferences apply to gameplay and the loaded replay table.
   Fit against a full 13-card hand so spacing stays steady as cards are played. */
body:is(.card-spacing-set,.easy-read-cards) #hand { container-type:inline-size; --display-card-width:62px; --display-step:var(--card-spacing,38px); }
@media(min-width:801px){
  body:not(.mobile-landscape):is(.card-spacing-set,.easy-read-cards) #hand .card { width:var(--display-card-width); margin-left:0; }
  body:not(.mobile-landscape):is(.card-spacing-set,.easy-read-cards) #hand .card+.card { margin-left:calc(min(var(--display-step),(100cqw - var(--display-card-width)) / 12) - var(--display-card-width)); }
}

/* No color-only cues, dimming, legal-card highlights or hover movement. */
body.easy-read-cards .card:not(.back):not(.ghost) { border-color:#202020; border-width:2px; background:#fff; }
body.easy-read-cards #hand .corner,body.easy-read-cards .card-display-preview .corner { font:800 24px/1.05 Arial,Helvetica,sans-serif; left:3px; top:4px; text-align:center; }
body.easy-read-cards #hand .center-suit,body.easy-read-cards .card-display-preview .center-suit { display:none; }
@media(min-width:801px){
  body.easy-read-cards:not(.mobile-landscape) #hand .corner { font-size:clamp(16px,calc((min(var(--display-step),(100cqw - 62px) / 12) - 7px) * .85),24px); }
}
body.easy-read-cards .played-slot .corner { font:800 30px/1.05 Arial,Helvetica,sans-serif; left:5px; top:5px; }
body.easy-read-cards .card:not(.back):not(.ghost) .center-suit { display:none; }
body.easy-read-cards .last-play .corner { font:800 18px/1.05 Arial,Helvetica,sans-serif; left:2px; top:3px; }
body.easy-read-cards .last-play .center-suit { display:none; }
body.easy-read-cards .domino-cards .corner { font-weight:900; }
body.easy-read-cards.mobile-landscape #hand .corner { font-size:26px; line-height:27px; }
body.easy-read-cards.mobile-landscape .played-slot .corner { font-size:23px; line-height:24px; left:3px; top:3px; }
body.easy-read-cards.mobile-landscape .last-play .corner { font-size:16px; line-height:17px; left:1px; top:2px; }
body.easy-read-cards.mobile-hand-review #hand .corner { font-size:22px; line-height:23px; top:2px; }
body.easy-read-cards.mobile-hand-review .played-slot .corner { font-size:18px; line-height:19px; left:2px; top:2px; }
body.easy-read-cards.mobile-hand-review .last-play .corner { font-size:12px; line-height:12px; left:1px; top:1px; }
@media(max-width:740px){body.easy-read-cards.mobile-landscape:not(.mobile-hand-review) #hand .corner{font-size:24px;line-height:25px}}
@media(max-width:540px){body.easy-read-cards:not(.mobile-landscape) .table:has(.revealed-hand) #hand .corner{font-size:16px;line-height:18px;left:2px}}

/* Narrow desktop windows use the compact table too; keep compass positions
   distinct when there is less room across than on a landscape phone. */
@media(max-width:600px){
 .mobile-landscape:not(.mobile-hand-review) .table { --last-width:92px; --hand-height:calc(122px + var(--compact-heading-extra,0px)); }
 .mobile-landscape:not(.mobile-hand-review) .player.north { left:50%; max-width:calc(100% - 16px); }
 .mobile-landscape:not(.mobile-hand-review) .north :is(.name-line,.bid-badges) { justify-content:center; }
 .mobile-landscape:not(.mobile-hand-review) .player.west,.mobile-landscape:not(.mobile-hand-review) .player.east { top:58px; max-width:calc(50% - 12px); }
 .mobile-landscape:not(.mobile-hand-review) .player.west { left:6px; }
 .mobile-landscape:not(.mobile-hand-review) .play-center { inset:150px 8px var(--hand-height) 104px; }
 .mobile-landscape:not(.mobile-hand-review) #lastTrickDock { top:150px; }
 .mobile-landscape:not(.mobile-hand-review) .last-trick-diamond { transform:scale(.78); transform-origin:top left; }
 .mobile-landscape:not(.mobile-hand-review) #hand .card { width:clamp(36px,8vw,48px); }
 .mobile-landscape:not(.mobile-hand-review) #hand .corner { font-size:21px; line-height:22px; left:3px; }
 body.easy-read-cards.mobile-landscape:not(.mobile-hand-review) #hand .corner { font-size:22px; line-height:23px; }
 .mobile-landscape:not(.mobile-hand-review) .play-center:has(.modal-shade:not(.hidden)) { inset:0 8px var(--hand-height); }
 .mobile-landscape .double-chooser { grid-template-columns:minmax(0,1fr); grid-template-rows:auto minmax(0,1fr) auto auto auto; }
 .mobile-landscape .double-call { grid-area:1/1; }
 .mobile-landscape .double-diamond { grid-area:2/1; grid-template-columns:repeat(3,minmax(0,1fr)); }
 .mobile-landscape .double-note { grid-area:3/1; }
 .mobile-landscape .selection-summary { grid-area:4/1; }
 .mobile-landscape .double-actions { grid-area:5/1; }
 .mobile-landscape:where(:not(.regular-watch)):not(.mobile-hand-review) .table:has(#domino:not(.hidden)) .player:is(.west,.north,.east) { top:auto; left:auto; right:auto; max-width:none; }
}
@media(max-width:699px) and (min-height:500px){
 .mobile-landscape:not(.mobile-hand-review) .middle:not(:has(.completed-table)) { width:min(232px,100%); height:190px; }
 .mobile-landscape:not(.mobile-hand-review) .played-slot,.mobile-landscape:not(.mobile-hand-review) .played-slot .card { width:62px; height:88px; }
}

.card-spacing-controls { display:flex; align-items:center; gap:10px; margin:8px 0; }
.card-spacing-controls button { min-width:44px; min-height:44px; font-size:23px; }
.card-spacing-controls output { min-width:70px; text-align:center; font:700 18px/1.4 Arial,sans-serif; font-variant-numeric:tabular-nums; }
.card-spacing-controls #cardSpacingReset { font-size:14px; margin-left:8px; }
.phone-spacing-note { display:none; }
.card-display-options p { margin:7px 0 12px; }
.deck-options input[type=checkbox] { flex:0 0 18px; width:18px!important; height:18px; accent-color:#265b4c; }
.deck-options :is(input,select):focus-visible { outline:3px solid var(--gold); outline-offset:3px; }
/* Keep the Options sample at the saved desktop size while preserving spacing
   as the distance between card left edges, just like the gameplay hand. */
.card-display-preview { --preview-card-scale:1; --preview-card-base-width:58px; --preview-card-base-height:64px; --preview-card-width:calc(var(--preview-card-base-width) * var(--preview-card-scale)); display:flex; justify-content:center; padding:4px 0 12px; }
.card-display-preview .card { width:var(--preview-card-width); height:calc(var(--preview-card-base-height) * var(--preview-card-scale)); }
.card-display-preview .card+.card { margin-left:calc(var(--preview-spacing,var(--card-spacing,38px)) - var(--preview-card-width)); }
.card-display-preview .corner { font-size:calc(15px * var(--preview-card-scale)); line-height:calc(14px * var(--preview-card-scale)); left:calc(4px * var(--preview-card-scale)); top:calc(3px * var(--preview-card-scale)); }
.card-display-preview .center-suit { font-size:calc(32px * var(--preview-card-scale)); }
body.easy-read-cards .card-display-preview .corner { font-size:calc(clamp(16px,calc((var(--preview-spacing,var(--card-spacing,38px)) - 7px) * .85),24px) * var(--preview-card-scale)); line-height:1.05; left:calc(3px * var(--preview-card-scale)); top:calc(4px * var(--preview-card-scale)); }
@media (min-width:801px) and (min-height:621px), (min-width:1101px) {
  .card-display-preview { --preview-card-scale:var(--desktop-card-scale,1); --preview-card-base-width:74px; --preview-card-base-height:103px; }
  .card-display-preview .corner { font-size:calc(18px * var(--preview-card-scale)); line-height:calc(17px * var(--preview-card-scale)); left:calc(5px * var(--preview-card-scale)); top:calc(4px * var(--preview-card-scale)); }
  .card-display-preview .center-suit { font-size:calc(38px * var(--preview-card-scale)); }
  body.easy-read-cards .card-display-preview .corner { font-size:clamp(16px,calc((var(--preview-spacing,var(--card-spacing,38px)) - 7px) * .85),calc(29px * var(--preview-card-scale))); }
  body:is([data-deck-style="barbu-original"],[data-deck-style="barbu-vector"]) .card-display-preview .card[data-card]:not(.back):not(.ghost) { background-size:100% 100%; }
}
@media(max-width:800px),(max-width:1100px) and (max-height:620px) and (orientation:landscape){
  .desktop-card-spacing { display:none; }
  .phone-spacing-note { display:block; }
  .card-display-preview { --preview-spacing:38px; }
}
.account-details { border-top:1px solid var(--line); padding-top:12px; font:14px/1.4 Arial,sans-serif; }
.account-details>summary { cursor:pointer; }
.account-dialog:has(.card-display-options) { width:min(620px,calc(100% - 24px)); padding:20px; }
.account-dialog:has(.card-display-options) h2 { margin-bottom:8px; }
.account-dialog:has(.card-display-options) .deck-options { margin:12px 0; min-width:0; }
.secondary-display-options { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.account-dialog .secondary-display-options .deck-options { margin-top:0; }
.account-dialog:has(.card-display-options) #closeAccount { margin-top:12px; }
.account-dialog #accountError:empty { display:none; }
.secondary-display-options .deck-options p { margin:8px 0; }
.secondary-display-options .deck-options label { align-items:flex-start; }
@media(max-width:540px){.secondary-display-options{grid-template-columns:1fr;gap:0}}

/* Approved Dominoes board labels: larger rank and suit on one line.
   Size against each cell so all thirteen columns also fit narrow screens. */
body .domino-cards .card { container-type:inline-size; }
body .table .domino-cards .card .corner {
  inset:0; display:flex; align-items:center; justify-content:center; gap:2px;
  font:700 clamp(8px,42cqw,22px)/1 Arial,Helvetica,sans-serif; white-space:nowrap;
}
body .table .domino-cards .corner br { display:none; }
body .table .domino-cards .center-suit { display:none; }

/* Single-hand Duplicates retain the normal table, with context at each seat. */
.duplicate-context { font-size:12px; line-height:1.5; color:var(--ink); }
.duplicate-calls { flex-basis:100%; }
.east .duplicate-calls { text-align:right; }
.north .duplicate-calls,.south .duplicate-calls { text-align:center; }
.duplicate-calls abbr { display:inline-block; text-decoration:none; border:1px solid var(--line); border-radius:4px; padding:1px 4px; margin:1px; background:var(--cell); }
.duplicate-result { display:grid; gap:8px; }
.duplicate-result-heading { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:4px 12px; }
.modal .duplicate-result-heading :is(h2,h3,p) { margin:0; }
.duplicate-result-heading>p { color:var(--muted); }
.duplicate-result-summary { display:flex; flex-wrap:wrap; gap:8px 24px; padding:8px 0; border-block:1px solid var(--line); }
.duplicate-result-summary small,.duplicate-result-summary strong { display:block; }
.duplicate-result-summary strong { font-size:22px; line-height:1.2; margin-top:2px; }
.duplicate-result-overview,.duplicate-result-comparison { min-width:0; }
.modal .duplicate-result-overview>p { margin:6px 0 0; font-size:12px; color:var(--muted); }
.duplicate-result h3 { font-size:17px; }
.duplicate-result .duplicate-scroll { max-width:100%; overflow-x:auto; }
.duplicate-result .duplicate-table { width:100%; border-collapse:collapse; font-size:13px; font-variant-numeric:tabular-nums; }
.duplicate-result .duplicate-table :is(th,td) { padding:2px 6px; border-bottom:1px solid var(--line); text-align:right; }
.duplicate-result .duplicate-table :is(th,td):nth-child(2) { text-align:left; overflow-wrap:anywhere; min-width:85px; }
.duplicate-result .duplicate-table th { font-weight:500; }
.duplicate-result .duplicate-table td:last-child { white-space:nowrap; }
.duplicate-result .duplicate-table td:last-child a { display:inline-flex; align-items:center; min-height:28px; }
.duplicate-result .duplicate-table .you { background:var(--cell); }
.modal .duplicate-result .duplicate-help { margin:4px 0; font-size:12px; line-height:1.3; color:var(--muted); }
.duplicate-result .duplicate-table a { color:var(--ink); text-decoration:underline; text-underline-offset:3px; }
body.duplicate-table #modalShade:has(.duplicate-result) { position:fixed; inset:60px 12px 12px; height:auto; min-height:0; background:transparent; }
body.duplicate-table #modal:has(.duplicate-result) { width:min(760px,100%); max-height:100%; overflow-y:auto; overscroll-behavior:contain; }
.duplicate-result .modal-actions { margin:0; }
.duplicate-result .modal-actions button { min-height:36px; }
#duplicateNextStatus:empty { display:none; }
@media(min-width:620px) and (max-height:620px){
 body.duplicate-table #modalShade:has(.duplicate-result) { top:49px; bottom:4px; }
 .duplicate-result { grid-template-columns:minmax(140px,1fr) minmax(0,2.5fr); gap:6px 12px; }
 .duplicate-result>header,.duplicate-result>.modal-actions,.duplicate-result>#duplicateNextStatus { grid-column:1/-1; }
 .duplicate-result-summary { gap:10px; }
 .duplicate-result-summary>div { flex-basis:100%; }
 .duplicate-result-heading>button { min-height:28px; padding-block:4px; }
 .duplicate-result .duplicate-table { line-height:1.2; }
 .duplicate-result .duplicate-table :is(th,td) { padding-block:0; }
 .duplicate-result .duplicate-table td:last-child a { min-height:24px; }
}
@media(max-width:480px){.duplicate-result .duplicate-table :is(th,td){padding:2px 4px}.duplicate-result .duplicate-table :is(th,td):nth-child(4){display:none}}
.mobile-landscape .duplicate-context { font-size:10px; line-height:1.25; }
.mobile-landscape .duplicate-calls abbr { padding:0 2px; }
.mobile-landscape .north .bid-badges:has(.bid-call):has(.duplicate-calls) { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); }
.mobile-landscape .north :is(.duplicate-deal,.bid-call,.duplicate-calls) { flex-shrink:0; white-space:nowrap; }
.mobile-landscape .north .duplicate-deal { justify-self:end; }
.mobile-landscape .north .duplicate-calls { flex-basis:auto; justify-self:start; }
@media(max-width:600px){.mobile-landscape .north .bid-badges:has(.bid-call):has(.duplicate-calls){display:flex;flex-wrap:nowrap}}

/* Table chat preference and the original player’s return action. */
.table-chat-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.table-chat-heading label{display:inline-flex;align-items:center;gap:4px;font:12px Arial,sans-serif}.empty-seat-name{flex-wrap:wrap}.reclaim-seat{font:12px Arial,sans-serif;min-height:32px;padding:4px 7px}@media(pointer:coarse){.reclaim-seat,.table-chat-heading label{min-height:44px}}

/* Illustrated decks change only the public face of existing cards. Hidden
   cards and empty Dominoes cells have no data-card or face-image request. */
body:is([data-deck-style="english"],[data-deck-style="large-index"],[data-deck-style="french"],[data-deck-style="modern-white"],[data-deck-style="barbu-original"],[data-deck-style="barbu-vector"],[data-deck-style="bridge5"],[data-deck-style="bridge5-four-color"],[data-deck-style="vertical2"]) .card[data-card]:not(.back):not(.ghost) {
  background-color:transparent;
  background-image:var(--deck-face-image);
  background-size:contain;
  background-position:center;
  background-repeat:no-repeat;
  border:0;
  border-radius:0;
}
/* The artwork owns its edge and corners. Keep this shadow reset less specific
   than hover, pressed and pending feedback so those states remain visible. */
:where(body:is([data-deck-style="english"],[data-deck-style="large-index"],[data-deck-style="french"],[data-deck-style="modern-white"],[data-deck-style="barbu-original"],[data-deck-style="barbu-vector"],[data-deck-style="bridge5"],[data-deck-style="bridge5-four-color"],[data-deck-style="vertical2"])) .card[data-card]:where(:not(.back):not(.ghost)) {
  box-shadow:none;
}
body:is([data-deck-style="english"],[data-deck-style="large-index"],[data-deck-style="french"],[data-deck-style="modern-white"],[data-deck-style="barbu-original"],[data-deck-style="barbu-vector"],[data-deck-style="bridge5"],[data-deck-style="bridge5-four-color"],[data-deck-style="vertical2"]) .card[data-card]:not(.back):not(.ghost) :is(.corner,.center-suit) {
  visibility:hidden;
}

/* Full desktop Dominoes has room for taller illustrated faces. Match empty
   cells to played cards, without changing Classic, replay or compact boards. */
@media (min-width:1101px) and (min-height:621px) {
  body:not(.mobile-landscape):not(.replay-loaded):is([data-deck-style="english"],[data-deck-style="large-index"],[data-deck-style="french"],[data-deck-style="modern-white"],[data-deck-style="barbu-original"],[data-deck-style="barbu-vector"],[data-deck-style="bridge5"],[data-deck-style="bridge5-four-color"],[data-deck-style="vertical2"]) .table .domino-cards .card {
    height:auto;
    aspect-ratio:5 / 7;
    max-height:56px;
  }
}

/* Regular watching uses the deployed play layout below. Its only additional
   content is revealed opponent faces; layout ownership lives in the final
   Regular watching section instead of separate breakpoint-based boards. */

/* Keep the existing Options heading and both Close controls available. */
.account-dialog .account-options-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.account-dialog .account-options-heading h2 { margin:0; }
.account-dialog .account-options-heading > button { flex:0 0 auto; min-height:44px; }

/* Dominoes follows the Retro/mobile format: four public endpoint piles. */
.mobile-domino-piles {
  display:grid; grid-template-columns:repeat(4,minmax(0,1fr));
  --domino-overlap:clamp(20px,3vw,26px);
  gap:clamp(8px,2vw,18px); width:min(100%,420px); align-self:center;
}
.mobile-domino-pile { position:relative; min-width:0; aspect-ratio:1; }
.mobile-domino-pile > .card,
.mobile-domino-empty { position:absolute; inset:0 auto 0 0; width:calc(100% - var(--domino-overlap)); height:100%; }
.mobile-domino-pile > .card { padding:0; container-type:inline-size; }
.mobile-domino-pile > .card.mobile-domino-low { left:var(--domino-overlap); }
.mobile-domino-pile > .card .corner {
  inset:3px auto auto 3px; font:700 clamp(14px,30cqw,22px)/1.05 Georgia,serif;
}
.mobile-domino-pile > .card .center-suit { display:none; }
.mobile-domino-empty {
  display:grid; place-items:center; border:1px dashed var(--line); border-radius:5px;
  color:var(--muted); font:24px Georgia,serif;
}

/* Closer endpoint stacks give seated Regular play larger native-ratio faces.
   Size the pile from a face so narrower decks also gain real artwork height. */
body:not(.old-school-table):not(.regular-watch):not(.replay-loaded) .table .mobile-domino-piles {
  --domino-overlap:clamp(16px,2.2vw,20px);
}
body:not(.old-school-table):not(.regular-watch):not(.replay-loaded) .table .mobile-domino-pile { aspect-ratio:auto; }
body:not(.old-school-table):not(.regular-watch):not(.replay-loaded) .table .mobile-domino-pile::before {
  content:'';display:block;width:calc(100% - var(--domino-overlap));
  aspect-ratio:var(--hand-card-ratio,calc(74 / 103));pointer-events:none;
}

body.easy-read-cards .mobile-domino-pile > .card .corner { font-family:Arial,Helvetica,sans-serif; font-weight:900; }

/* Optional old-school table. Public game state and existing controls stay authoritative. */
.old-school-only { display:none; }
.old-school-table .old-school-only { display:inline-block; }
.old-school-auction { display:none; }
.old-school-table .table {
  --felt:#171b19; --ink:#f2f2f2; --muted:#c5c7c6; --line:#565a57;
  --panel:#292b2c; --cell:#303332; --control:#696969; --active:#292e2b;
  --positive:#4dff39; --negative:#ff4242;
  background:#171b19; color:#f2f2f2; font-family:Georgia,'Times New Roman',serif;
  box-shadow:none; border-radius:0; border:0;
}
.old-school-table .table .player { background:transparent; box-shadow:none; border:0; border-radius:0; }
.old-school-table .table .name-line { gap:5px; font:18px Georgia,serif; }
.old-school-table .table .name { font:inherit; color:#f2f2f2!important; }
.old-school-table .table .player.active .name { color:#4b7cff!important; }
.old-school-table .table .player.active .name::after { content:' *'; }
.old-school-table .table .seat,
.old-school-table .table .dealer-badge,
.old-school-table .table .opponent-hand,
.old-school-table .table .name-line>.bid-badge { display:none; }
.old-school-table .table .metric { font:inherit; color:inherit; border:0; background:none; padding:0; }
.old-school-table .table .bid-badges { font:12px Arial,sans-serif; }
.old-school-table .table .bid-owed { color:#b7bab8; }
.old-school-table .table .bid-call { background:none; border:0; color:inherit; padding:0; }
.old-school-table .table .contract-line.called { border:0; background:none; padding:0; font-weight:normal; }
.old-school-table .table .card.old-school-face {
  width:73px; height:97px; border:0; border-radius:0; padding:0;
  background:transparent; box-shadow:none; overflow:hidden; color:#000;
}
.old-school-table .table .old-school-face>.corner,
.old-school-table .table .old-school-face>.center-suit { display:none; }
.old-school-face>img { width:100%; height:100%; object-fit:contain; display:block; pointer-events:none; }
.old-school-table .table .card.old-school-face.big { width:73px; height:97px; }
.old-school-table .table .card.legal:not(:disabled):focus-visible { outline:3px solid #87adff; outline-offset:2px; }
.old-school-table .table .card.legal:not(:disabled):hover { outline:2px solid #87adff; outline-offset:-2px; }
.old-school-table .table .card.pending-table { opacity:.7; outline:2px solid #87adff; }
.old-school-table .table .hand .card + .card { margin-left:calc(var(--card-spacing,17px) - 73px); }
.old-school-table .table .hand { min-height:101px; }
.old-school-table .table .domino-board { flex-direction:row; align-items:center; justify-content:center; }
.old-school-domino-piles { display:flex; justify-content:center; align-items:center; gap:clamp(12px,2.8vw,36px); width:100%; }
.old-school-suit-pile { position:relative; flex:0 0 87px; height:97px; }
.old-school-suit-pile>.card { position:absolute; top:0; left:0; }
.old-school-suit-pile>.old-school-end-low { left:14px; }
.old-school-last-play { min-height:97px; display:flex; justify-content:center; margin-top:12px; }
.old-school-last-pass { color:#4dff39; font:17px Georgia,serif; padding-top:12px; }
.old-school-table .table .panel { border:0; border-radius:0; background:transparent; color:inherit; }
.old-school-table .table .table-chat { background:#292b2c; padding:4px; }
.old-school-table .table .chat-messages { font:13px/1.25 Georgia,serif; }
.old-school-table .table .table-chat-heading { font-size:11px; }
.old-school-table .table .game-id { color:#d5d7d5; }
.old-school-table .table .table-hint { color:#c5c7c6; }
.old-school-table .table .trick-note { color:#c5c7c6; }
.old-school-table .old-school-auction:not(.hidden) { display:grid; }
.old-school-auction {
  position:relative; min-height:180px; font:16px Georgia,serif;
  grid-template-columns:repeat(2,minmax(0,1fr));
  grid-template-rows:auto auto auto; gap:14px 20px; align-items:center;
}
.old-school-auction-seat { min-width:0; text-align:center; overflow-wrap:anywhere; }
.old-school-auction-N { grid-area:1 / 1 / 2 / 3; }
.old-school-auction-W { grid-area:2 / 1; }
.old-school-auction-E { grid-area:2 / 2; }
.old-school-auction-S { grid-area:3 / 1 / 4 / 3; }
.old-school-auction-name { display:block; }
.old-school-auction-response { display:block; margin-top:5px; line-height:1.25; }
.old-school-auction-pass { color:inherit; }
.old-school-table .old-school-auction-double { color:var(--old-school-double,#c00000); }
.old-school-auction-waiting { color:#b7bab8; }
@media all {
  body.old-school-table:not(.mobile-landscape) .app { max-width:1500px; padding:0; }
  body.old-school-table:not(.mobile-landscape) .table { position:relative; display:block; height:calc(100dvh - 88px); min-height:620px; padding:24px; }
  body.old-school-table:not(.mobile-landscape) .top-left { position:absolute; left:3%; top:6%; width:25%; text-align:center; }
  body.old-school-table:not(.mobile-landscape) .deal-title { margin:20px 0 16px; font-size:25px; font-weight:normal; }
  body.old-school-table:not(.mobile-landscape) .dealer-line { margin-bottom:22px; font-size:21px; font-weight:normal; }
  body.old-school-table:not(.mobile-landscape) .contract-line { font-size:18px; }
  body.old-school-table:not(.mobile-landscape) .player.north { position:absolute; top:6%; left:50%; width:26%; transform:translateX(-50%); }
  body.old-school-table:not(.mobile-landscape) .west-column,
  body.old-school-table:not(.mobile-landscape) .east-column,
  body.old-school-table:not(.mobile-landscape) .side-panel { display:contents; }
  body.old-school-table:not(.mobile-landscape) .player.west,
  body.old-school-table:not(.mobile-landscape) .player.east { position:absolute; top:43%; width:23%; }
  body.old-school-table:not(.mobile-landscape) .player.west { left:2%; }
  body.old-school-table:not(.mobile-landscape) .player.east { right:2%; }
  body.old-school-table:not(.mobile-landscape) .player.west .name-line,
  body.old-school-table:not(.mobile-landscape) .player.east .name-line { justify-content:center; }
  body.old-school-table:not(.mobile-landscape) .player.south { position:absolute; bottom:4%; left:50%; width:46%; transform:translateX(-50%); }
  body.old-school-table:not(.mobile-landscape) .player.south .old-school-last-play { position:absolute; bottom:calc(100% + 8px); left:50%; transform:translateX(-50%); margin:0; }
  body.old-school-table:not(.mobile-landscape) .play-center { position:absolute; left:27%; right:27%; top:25%; bottom:27%; min-height:0; }
  body.old-school-table:not(.mobile-landscape) .middle { width:300px; height:210px; }
  body.old-school-table:not(.mobile-landscape) .played-slot { width:73px; height:97px; }
  body.old-school-table:not(.mobile-landscape) .slot-W { left:5px; }
  body.old-school-table:not(.mobile-landscape) .slot-E { right:5px; }
  body.old-school-table:not(.mobile-landscape) .old-school-auction { position:absolute; top:5%; right:3%; width:25%; }
  body.old-school-table:not(.mobile-landscape) #tableInfoPanel { position:absolute; inset:auto auto 3% 29%; width:170px; max-height:none; }
  body.old-school-table:not(.mobile-landscape) #tableInfoPanel.old-school-info-open { bottom:21%; width:300px; max-height:340px; overflow:auto; }
  body.old-school-table:not(.mobile-landscape) .bottom-right { position:absolute; left:2%; bottom:4%; width:25%; }
  body.old-school-table:not(.mobile-landscape) .table-chat { max-height:195px; }
  body.old-school-table:not(.mobile-landscape) .chat-messages { height:115px; min-height:70px; }
  body.old-school-table:not(.mobile-landscape) #lastTrickDock { position:absolute; bottom:4%; right:2%; width:24%; max-width:260px; }
  body.old-school-table:not(.mobile-landscape) .table:has(#domino:not(.hidden)) #lastTrickDock { display:none!important; }
  body.old-school-table:not(.mobile-landscape) .table:has(#domino:not(.hidden)) .bid-badges { display:none; }
  body.old-school-table:not(.mobile-landscape) .last-trick-diamond { width:196px; height:216px; }
  body.old-school-table:not(.mobile-landscape) #lastTrickDock .card { width:63px; height:84px; }
}
/* Dominoes side plays share the central pile's vertical anchor. */
@media all {
  body.old-school-table:not(.mobile-landscape) .table {
    --old-school-board-top:25%; --old-school-board-bottom:27%; --old-school-card-width:73px; --old-school-card-height:97px;
  }
  body.old-school-table:not(.mobile-landscape) .play-center {
    top:var(--old-school-board-top); bottom:var(--old-school-board-bottom);
  }
  body.old-school-table:not(.mobile-landscape) .table:has(#domino:not(.hidden)) .player:is(.west,.east) {
    top:calc((100% + var(--old-school-board-top) - var(--old-school-board-bottom) - var(--old-school-card-height)) / 2);
    padding:0; min-height:var(--old-school-card-height);
  }
  body.old-school-table:not(.mobile-landscape) .table:has(#domino:not(.hidden)) .player:is(.west,.east) .name-line {
    position:absolute; bottom:calc(100% + 12px); left:0; right:0; min-height:0; margin:0;
  }
  body.old-school-table:not(.mobile-landscape) .table:has(#domino:not(.hidden)) .player:is(.west,.east) .old-school-last-play {
    order:-1; margin:0; min-height:var(--old-school-card-height);
  }
}

/* Temporarily omit the desktop details box in the old-school table. */
.old-school-table:not(.mobile-landscape) #tableInfoPanel { display:none; }

/* Keep the old-school table focused on cards and player positions. */
.old-school-table .table .trick-note,
.old-school-table #lastTrickDock .panel-heading>span,
.old-school-table #recommendBtn,
.old-school-table #recommendation { display:none!important; }
.old-school-table .south.has-hand-tools:has(#undoBidBtn.hidden) #youChip { padding-right:0; }
.old-school-table:not(.mobile-landscape) .top-left {
  display:flex; flex-direction:column; align-items:center;
}
.old-school-table:not(.mobile-landscape) .top-left :is(.game-id,.deal-title,.dealer-line,.contract-line,.table-hint) {
  box-sizing:border-box; width:100%; max-width:100%; text-align:center;
}

/* Original white table in light appearance; dark appearance keeps its felt. */
html body.old-school-table:not(.dark-mode) {
  --site-page:#fff; --site-panel:#fff; --site-ink:#000; --site-muted:#000;
  background:#fff; color:#000;
}
.old-school-table:not(.dark-mode) .table {
  --felt:#fff; --ink:#000; --muted:#000; --line:#999;
  --panel:#fff; --cell:#fff; --control:#eee; --active:#eee;
  background:#fff; color:#000;
}
.old-school-table:not(.dark-mode) .table .name { color:#000!important; }
.old-school-table:not(.dark-mode) .table :is(.game-id,.table-hint,.bid-owed,.hand-hint),
.old-school-table:not(.dark-mode) :is(.old-school-last-pass,.old-school-auction-pass,.old-school-auction-waiting) { color:#000; }
.old-school-table:not(.dark-mode) .table .table-chat { background:#fff; }

/* Native v161 card faces retain the complete-deck loading/fallback system. */
.old-school-table .table :is(.hand,.kibitz-hand,.played-slot,.old-school-suit-pile,.old-school-last-play) .card { width:73px; height:97px; flex-shrink:0; }
.old-school-table .table .card { border-radius:0; }
.old-school-table:not(.dark-mode) .table .player.active .name { color:#2458c9!important; }
.old-school-table .table .old-school-last-pass { color:inherit; }
.old-school-table .table .auction-panel { font-family:Georgia,serif; }

body.old-school-table:not(.replay-loaded) #hand { --display-card-width:73px; }
body.old-school-table:not(.replay-loaded) #hand .card { height:97px; }

/* Persistent Retro keeps a centered single row even when viewport media
   queries would otherwise select the Regular phone hand/grid. */
body.old-school-table:not(.replay-loaded):not(.mobile-landscape) .table #hand {
 display:flex;flex-wrap:nowrap;justify-content:center;gap:0;container-type:inline-size;
 --display-card-width:var(--old-school-card-width,73px);--display-step:var(--card-spacing,17px);
}
body.old-school-table:not(.replay-loaded):not(.mobile-landscape) .table #hand .card+.card {
 margin-left:calc(min(var(--display-step),(100cqw - var(--display-card-width)) / 12) - var(--display-card-width));
}

.old-school-table .table .domino-status,.old-school-table #botLabel { display:none; }
/* Short desktop windows keep a clear gap between centre and South's last card. */
@media(max-height:760px) {
 body.old-school-table:not(.replay-loaded) .table { --old-school-card-width:60px;--old-school-card-height:80px;--old-school-board-bottom:35%; }
 body.old-school-table:not(.replay-loaded) .table :is(.hand,.kibitz-hand,.played-slot,.old-school-suit-pile,.old-school-last-play) .card { width:60px;height:80px; }
 body.old-school-table:not(.replay-loaded) #hand { --display-card-width:60px;min-height:84px; }
 body.old-school-table:not(.replay-loaded) #hand .card { height:80px; }
 body.old-school-table:not(.replay-loaded) .old-school-suit-pile { flex-basis:74px;height:80px; }
 body.old-school-table:not(.replay-loaded) .old-school-last-play { min-height:80px; }
 body.old-school-table:not(.replay-loaded) .deal-title { margin:12px 0;font-size:22px; }
 body.old-school-table:not(.replay-loaded) .dealer-line { margin-bottom:14px;font-size:18px; }
}
/* The normal narrow-desktop centre minimum must not move this shared anchor. */
body.old-school-table:not(.mobile-landscape) .table .play-center { min-height:0!important;background:transparent!important; }
@media(max-height:760px) {
 body.old-school-table .old-school-auction { min-height:0;font:13px/1.15 Georgia,serif;gap:6px 12px;top:3%; }
}
/* Long public target names stay inside the diamond above the East player. */
body.old-school-table:not(.mobile-landscape) .old-school-auction { max-height:200px;overflow:auto; }
/* Decisions use viewport room instead of the intentionally small centre field. */
body.old-school-table #modalShade:not(.hidden) { position:fixed;inset:60px 12px 150px;min-height:0;height:auto;background:transparent;z-index:40; }
body.old-school-table #modal { width:min(760px,100%);max-height:100%;overflow-y:auto;overscroll-behavior:contain; }

/* Keep public player details beneath their centered Old school name lines. */
body.old-school-table .table .player .bid-badges {
  justify-content:center; text-align:center;
}
body.old-school-table .table .player .declarer-contracts {
  justify-content:center; text-align:center;
}
body.old-school-table .table .player .bid-badges > :is(.bid-badge,.bid-owed,.duplicate-context) {
  justify-content:center; text-align:center;
}
/* The original Kibitz control node sits immediately above the table chat. */
body.old-school-table .table .bottom-right { display:flex; flex-direction:column; gap:8px; }
body.old-school-table .table .bottom-right > #kibitzControls { align-self:flex-start; margin:0; max-width:100%; }
body.old-school-table #kibitzControls .kibitz-view-buttons { flex-wrap:wrap; }
body.old-school-table .bottom-right #kibitzControls .kibitz-table-options > div { top:auto; bottom:calc(100% + 5px); }

/* Old school scores stay open beside the table until explicitly closed. */
body.old-school-table .old-school-scores-button {
  margin:0 0 8px;padding:6px 12px;min-height:34px;
  border:1px solid var(--site-line);border-radius:3px;
  background:var(--site-soft);color:var(--site-ink);font:15px/1.25 Arial,sans-serif;
}
html body.old-school-table #scoreSheet.old-school-score-sheet {
  position:fixed;inset:74px 12px 12px auto;margin:0;
  width:min(900px,61vw);max-width:none;max-height:calc(100dvh - 86px);
  height:calc(100dvh - 86px);border:1px solid var(--site-line);
  border-radius:0;box-shadow:none;background:var(--site-panel);color:var(--site-ink);
  --panel:var(--site-panel);--line:var(--site-line);--ink:var(--site-ink);--muted:var(--site-muted);
  z-index:60;
}
html body.old-school-table #scoreSheet .score-sheet-heading {
  padding:10px 12px;border:0;align-items:center;gap:12px;
}
html body.old-school-table #scoreSheet .score-sheet-heading>div { display:block; }
html body.old-school-table #scoreSheet .score-sheet-heading h2 { font:700 20px/1.25 Georgia,serif; }
html body.old-school-table #scoreSheet .score-sheet-heading p { font:13px/1.3 Georgia,serif;margin-top:4px; }
html body.old-school-table #closeScoreSheet {
  border:1px solid var(--site-line);border-radius:3px;min-height:34px;padding:6px 10px;
  background:var(--site-soft);color:var(--site-ink);font:15px/1.25 Arial,sans-serif;white-space:nowrap;
}
html body.old-school-table #scoreSheet .score-sheet-scroll { padding:0 12px 8px; }
html body.old-school-table #scoreSheet .score-sheet-table {
  table-layout:fixed;border-collapse:separate;border-spacing:0;
  text-align:center;font:14px/1.2 Georgia,'Times New Roman',serif;
}
html body.old-school-table #scoreSheet .score-sheet-table col:first-child { width:19%; }
html body.old-school-table #scoreSheet .score-sheet-table col:nth-child(2) { width:21%; }
html body.old-school-table #scoreSheet .score-sheet-table col:nth-child(n+3) { width:15%; }
html body.old-school-table #scoreSheet .score-sheet-table :is(th,td) {
  color:var(--site-ink);font:inherit;text-align:center;border:0;padding:2px 5px;overflow-wrap:anywhere;
}
html body.old-school-table #scoreSheet .score-sheet-table thead th { font-weight:bold;padding-block:8px; }
html body.old-school-table #scoreSheet .score-sheet-table :is(.score-value,.score-sheet-call) { font:inherit;color:inherit; }
html body.old-school-table #scoreSheet .score-sheet-table .score-sheet-current { background:none; }
html body.old-school-table #scoreSheet .score-sheet-table .score-sheet-current .score-sheet-call { font-weight:bold; }
html body.old-school-table #scoreSheet .score-sheet-table tr[data-declarer="S"]+tr[data-declarer="W"] :is(th,td),
html body.old-school-table #scoreSheet .score-sheet-table tr[data-declarer="W"]+tr[data-declarer="N"] :is(th,td),
html body.old-school-table #scoreSheet .score-sheet-table tr[data-declarer="N"]+tr[data-declarer="E"] :is(th,td) { padding-top:14px; }
html body.old-school-table #scoreSheet .score-sheet-table tfoot :is(th,td) { padding-block:10px;border-top:1px solid var(--site-line); }
html body.old-school-table #scoreSheet .score-sheet-table .score-sheet-status { color:var(--site-muted);font-style:italic; }
@media(min-width:801px) and (max-width:1000px) {
 html body.old-school-table #scoreSheet.old-school-score-sheet { width:69vw; }
 html body.old-school-table #scoreSheet .score-sheet-table { font-size:13px; }
 html body.old-school-table #scoreSheet .score-sheet-table :is(th,td) { padding-inline:3px; }
}

/* Undo remains a separate action; it must not shift South's name or bids. */
body.old-school-table .south.has-hand-tools #youChip { padding-right:0; }
html body.old-school-table #closeScoreSheet { width:auto;height:auto;flex:0 0 auto; }
html body.old-school-table #scoreSheet .score-sheet-scroll { padding-bottom:0; }
html body.old-school-table #scoreSheet .score-sheet-declarer { color:var(--site-ink)!important; }
/* Revealed side hands need room above the scores, Kibitz controls and chat. */
@media(min-width:1101px) {
}

/* Retro's direct appearance control is offered alongside Options on desktop. */
.table-style-toggle[hidden],.table-style-status[hidden] { display:none!important; }
.table-style-status { font:12px/1.25 Arial,sans-serif;max-width:240px; }
@media(max-width:800px) {
 body:not(.old-school-table):not(.old-school-home) .table-style-toggle,body:not(.old-school-table):not(.old-school-home) .table-style-status { display:none!important; }
}
body.old-school-table :is(#reviewBtn,#reviewDeal) { display:none!important; }
body.old-school-table .toolbar #oldSchoolInfoBtn {
 margin:0;width:auto;min-height:30px;padding:6px 9px;font:inherit;white-space:nowrap;
}
/* Public responses sit directly beneath the name, followed by call/debt details. */
body.old-school-table .table .player .bid-badges {
 flex-direction:column;align-items:center;gap:4px;font:16px/1.3 Georgia,'Times New Roman',serif;
}
html body.old-school-table .table .player :is(.bid-call,.declarer-contracts,.duplicate-calls) {
 color:#2458a6;font:inherit;
}
html body.old-school-table .table .player .bid-owed { color:#17666b;font:inherit; }
html body.old-school-table.dark-mode .table .player :is(.bid-call,.declarer-contracts,.duplicate-calls) { color:#a9c4ff; }
html body.old-school-table.dark-mode .table .player .bid-owed { color:#88d5d5; }
body.old-school-table .table .old-school-player-response {
 display:block;max-width:100%;font:18px/1.25 Georgia,'Times New Roman',serif;
}
html body.old-school-table .table .old-school-player-response.old-school-auction-double { color:var(--old-school-double,#c00000); }
/* Compact doubling decision: opponent choices form the upper three points,
   with the player's Pass/Double/Max choices completing the diamond below. */
html body.old-school-table #modalShade:has(.retro-double-chooser,.retro-call-chooser) {
 position:absolute;inset:0;min-height:0;height:auto;padding:0;
 background:transparent;pointer-events:none;
}
html body.old-school-table #modal:has(.retro-double-chooser,.retro-call-chooser) {
 width:min(320px,100%);max-width:100%;max-height:100%;margin:0;padding:0;
 border:0;border-radius:0;box-shadow:none;background:transparent;pointer-events:auto;
}
body.old-school-table .retro-double-chooser .double-diamond {
 display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:auto auto;
 align-items:center;gap:6px;max-width:320px;margin:0 auto;
}
body.old-school-table .retro-double-chooser .double-N { grid-area:1/2;margin:0; }
body.old-school-table .retro-double-chooser .double-W { grid-area:2/1;margin:0; }
body.old-school-table .retro-double-chooser .double-E { grid-area:2/3;margin:0; }
body.old-school-table .retro-double-chooser .double-target {
 min-height:44px;height:auto;gap:2px;padding:4px;border-radius:0;
 background:var(--control);color:var(--ink);border:1px solid var(--line);
}
body.old-school-table .retro-double-chooser .double-name { font:13px/1.2 Georgia,'Times New Roman',serif;overflow-wrap:anywhere; }
body.old-school-table .retro-double-chooser .double-target small { font:11px/1.2 Arial,sans-serif;color:var(--muted); }
body.old-school-table .retro-double-chooser .double-target[aria-pressed="true"] {
 border:2px solid var(--old-school-double,#c00000);background:var(--active);padding:3px;
}
body.old-school-table .retro-double-chooser .double-target[aria-pressed="true"] .selection-cross { display:none; }
body.old-school-table .retro-double-chooser .double-target[aria-pressed="true"] .double-name::before { content:'✓ ';color:var(--old-school-double,#c00000); }
body.old-school-table .retro-double-chooser .double-actions {
 display:flex;justify-content:center;gap:5px;margin:6px auto 0;max-width:320px;
}
body.old-school-table .retro-double-chooser .double-actions button { min-height:28px;padding:4px 6px;flex:1;font-size:12px; }
body.old-school-table .retro-double-chooser .selection-summary { margin:4px 0 0;font-size:11px; }
body.old-school-table .retro-double-chooser .double-note { margin:6px 0 0;font:12px/1.3 Arial,sans-serif;text-align:center; }

html body.old-school-table .table .player .declarer-contracts>span { color:inherit; }

/* A saved Retro choice always uses its desktop canvas, including small windows. */
html body.old-school-table { min-width:1000px;overflow:auto; }
html body.old-school-table #app>.toolbar { min-width:1000px; }
html body.old-school-table #app>.app { min-width:1000px; }
html body.old-school-table .table .player .name-line { justify-content:center; }
html body.old-school-table .table .old-school-auction { max-height:200px; }
html body.old-school-table :is(.table-style-toggle,.table-style-status) { display:inline-block; }
html body.old-school-table :is(.table-style-toggle,.table-style-status)[hidden] { display:none!important; }
html body.old-school-table .table :is(.old-school-auction-pass,.old-school-last-pass),
html body.old-school-table .retro-double-chooser #passDouble { color:var(--old-school-pass,#16752b); }
/* Contract, suit and rank choices share the same small, clear center field. */
body.old-school-table .retro-call-chooser h2 { margin:0 0 6px;text-align:center;font:18px/1.2 Georgia,'Times New Roman',serif; }
body.old-school-table .retro-call-chooser :is(.options,#familyChoices):not(.rank-options) { grid-template-columns:repeat(2,minmax(0,1fr));gap:5px; }
body.old-school-table .retro-call-chooser .rank-options { grid-template-columns:repeat(7,minmax(0,1fr)); }
body.old-school-table .retro-call-chooser .choice { min-height:30px;padding:4px 6px;font-size:13px;border-radius:2px; }
body.old-school-table .retro-call-chooser .modal-actions { justify-content:center;margin-top:6px;gap:5px; }
body.old-school-table .retro-call-chooser .modal-actions button { min-height:28px;padding:4px 8px;font-size:12px; }

html body.old-school-table .desktop-card-spacing { display:block; }
html body.old-school-table .phone-spacing-note { display:none; }

/* Transparent decisions replace only the generic center-phase hint. */
body.old-school-table .play-center:has(#modalShade:not(.hidden) :is(.retro-call-chooser,.retro-double-chooser))>.middle>.center-message { visibility:hidden; }

/* Retro keeps public controller roles readable without repeating owner identity. */
body.old-school-table .table .name-line .retro-player-role {
  font:12px/1.2 Georgia,'Times New Roman',serif;
  font-weight:normal;color:#4b514d;white-space:normal;
}
body.old-school-table.dark-mode .table .name-line .retro-player-role { color:#c5cec8; }
/* Expanded vacancy details reserve desktop space instead of growing into chat. */
body.old-school-table .table:has(.vacancy-vote-details[open]) { min-height:max(900px,var(--retro-vacancy-min-height,0px)); }
body.old-school-table .table .vacant-seat {
  box-sizing:border-box;width:100%;max-width:100%;padding:8px;
  gap:6px;border-radius:2px;
}
body.old-school-table .table .vacant-seat .empty-seat-name { justify-content:center;white-space:normal; }
body.old-school-table .table .vacant-seat .bot-vote {
  box-sizing:border-box;max-width:100%;min-height:32px;padding:5px 8px;
  border-radius:2px;white-space:normal;font-size:12px;
}
body.old-school-table .table .vacancy-vote-details { box-sizing:border-box;max-width:100%; }
body.old-school-table .table .vacancy-vote-details[open] {
  flex-basis:100%;max-height:148px;overflow-y:auto;overscroll-behavior:contain;
  padding:6px;border-radius:2px;box-shadow:none;
}
body.old-school-table .table .vacancy-vote-details[open] > summary {
  position:sticky;top:-6px;padding-block:3px;background:var(--site-panel,#fff);
}

/* Revealed Retro hands inherit the seated table's positions and card sizes.
   Opponent faces fit inside their seat width; side faces use the space above
   their unchanged player header, leaving the existing bottom panels clear. */
body.old-school-table .table .kibitz-hand {
 --kibitz-card-width:var(--old-school-card-width);--kibitz-card-height:var(--old-school-card-height);
 display:flex;flex-wrap:nowrap;justify-content:center;align-items:flex-end;
 width:100%;min-width:0;container-type:inline-size;
}
body.old-school-table .table .kibitz-hand .card {
 flex:0 0 var(--kibitz-card-width);min-width:0;margin:0;
}
body.old-school-table .table .kibitz-hand .card+.card,
body.old-school-table .table .kibitz-suit-row+.kibitz-suit-row>.card:first-child {
 margin-left:calc(min(var(--card-spacing,17px),(100cqw - var(--kibitz-card-width)) / 12) - var(--kibitz-card-width));
}
body.old-school-table .table .kibitz-side-hand {
 position:absolute;bottom:calc(100% + 12px);left:0;right:0;padding:0;
}
body.old-school-table .table .kibitz-suit-row { display:contents; }

/* Make room for North's extra faces without moving the public name or field. */
body.old-school-table .table .north:has(.kibitz-hand) .bid-badges { flex-direction:row;gap:8px; }
body.old-school-table .table .north:has(.kibitz-hand) .name-line { margin-bottom:2px; }
body.old-school-table .table .north .kibitz-hand { padding-top:0; }
/* Dominoes retains the public last play at its gameplay anchor. */
body.old-school-table .table:has(#domino:not(.hidden)) .kibitz-side-hand {
 top:calc(100% - 4px);bottom:auto;
}
/* Spectator controls use space within gameplay's existing chat panel. */
body.old-school-table .table #chatPanel:has(>#kibitzControls:not(.hidden)) {
 display:flex;flex-direction:column;height:195px;box-sizing:border-box;
}
body.old-school-table .table #chatPanel>#kibitzControls { flex:none;align-self:flex-start;margin:0 0 4px; }
body.old-school-table .table #chatPanel:has(>#kibitzControls:not(.hidden)) .chat-messages {
 flex:1;height:auto;min-height:0;overflow:auto;
}
body.old-school-table .table #chatPanel:has(>#kibitzControls:not(.hidden)) :is(.table-chat-heading,#chatForm,#chatNotice) { flex:none; }

/* Personal Retro sizing is opt-in on roomy live tables. Scaled canvas minima
   and the lower field reserve keep the enlarged hand and last play separate. */
@media (min-width:1101px) and (min-height:761px) {
 html body.old-school-table.desktop-card-size-set:not(.replay-loaded):not(.mobile-landscape) .table {
  --old-school-card-width:calc(73px * var(--desktop-card-scale));
  --old-school-card-height:calc(97px * var(--desktop-card-scale));
  --old-school-board-bottom:calc(2 * var(--old-school-card-height) + 175px);
  min-width:calc(1000px * var(--desktop-card-scale));min-height:max(calc(620px * var(--desktop-card-scale)),var(--retro-vacancy-min-height,0px));
 }
 html body.old-school-table.desktop-card-size-set:not(.replay-loaded):not(.mobile-landscape) .table :is(.hand,.kibitz-hand,.played-slot,.old-school-suit-pile,.old-school-last-play) .card {
  width:var(--old-school-card-width);height:var(--old-school-card-height);
 }
 html body.old-school-table.desktop-card-size-set:not(.replay-loaded):not(.mobile-landscape) #hand {
  --display-card-width:var(--old-school-card-width);--display-step:var(--card-spacing,38px);
  container-type:inline-size;min-height:calc(var(--old-school-card-height) + 4px);
 }
 html body.old-school-table.desktop-card-size-set:not(.replay-loaded):not(.mobile-landscape) #hand .card {
  width:var(--old-school-card-width);height:var(--old-school-card-height);
 }
 html body.old-school-table.desktop-card-size-set:not(.replay-loaded):not(.mobile-landscape) .table:has(.vacancy-vote-details[open]) {
  min-height:max(900px,calc(620px * var(--desktop-card-scale)),var(--retro-vacancy-min-height,0px));
 }
 html body.old-school-table.desktop-card-size-set:not(.replay-loaded):not(.mobile-landscape) .table #hand .card+.card {
  margin-left:calc(min(var(--display-step),(100cqw - var(--display-card-width)) / 12) - var(--display-card-width));
 }
 html body.old-school-table.desktop-card-size-set:not(.replay-loaded):not(.mobile-landscape) .table .middle {
  width:calc(300px * var(--desktop-card-scale));height:calc(210px * var(--desktop-card-scale));
 }
 html body.old-school-table.desktop-card-size-set:not(.replay-loaded):not(.mobile-landscape) .table .played-slot {
  width:var(--old-school-card-width);height:var(--old-school-card-height);
 }
 html body.old-school-table.desktop-card-size-set:not(.replay-loaded):not(.mobile-landscape) .table .slot-W { left:calc(5px * var(--desktop-card-scale)); }
 html body.old-school-table.desktop-card-size-set:not(.replay-loaded):not(.mobile-landscape) .table .slot-E { right:calc(5px * var(--desktop-card-scale)); }
 html body.old-school-table.desktop-card-size-set:not(.replay-loaded):not(.mobile-landscape) .table .old-school-suit-pile {
  flex-basis:calc(87px * var(--desktop-card-scale));height:var(--old-school-card-height);
 }
 html body.old-school-table.desktop-card-size-set:not(.replay-loaded):not(.mobile-landscape) .table .old-school-end-low { left:calc(14px * var(--desktop-card-scale)); }
 html body.old-school-table.desktop-card-size-set:not(.replay-loaded):not(.mobile-landscape) .table .old-school-last-play { min-height:var(--old-school-card-height); }
 html body.old-school-table.desktop-card-size-set:not(.replay-loaded):not(.mobile-landscape) .table #lastTrickDock { width:24%;max-width:calc(260px * var(--desktop-card-scale)); }
 html body.old-school-table.desktop-card-size-set:not(.replay-loaded):not(.mobile-landscape) .table .last-trick-diamond { width:calc(196px * var(--desktop-card-scale));height:calc(216px * var(--desktop-card-scale)); }
 html body.old-school-table.desktop-card-size-set:not(.replay-loaded):not(.mobile-landscape) .table #lastTrickDock .card { width:calc(63px * var(--desktop-card-scale));height:calc(84px * var(--desktop-card-scale)); }
}

/* Desktop-only personal sizing. Reserve layout space as cards grow; retain
   the existing phone, Retro and replay geometry at every saved percentage. */
.desktop-card-size { margin-block:12px; }
.desktop-card-size #desktopCardSizeReset { font-size:14px;margin-left:8px; }
.desktop-card-size>p { margin-block:6px; }
@media (max-width:800px), (max-width:1100px) and (max-height:620px) {
 .desktop-card-size { display:none; }
}
@media (min-width:801px) and (min-height:621px), (min-width:1101px) {
 body:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded):is([data-deck-style="barbu-original"],[data-deck-style="barbu-vector"]) .table .card[data-card]:not(.back):not(.ghost) { background-size:100% 100%; }
 body:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded):is([data-deck-style="barbu-original"],[data-deck-style="barbu-vector"]) .table .domino-cards .card { height:42px;aspect-ratio:auto;max-height:none; }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table {
  --sized-card-width:calc(62px * var(--desktop-card-scale));
  --sized-card-height:calc(86px * var(--desktop-card-scale));
  grid-template-columns:minmax(calc(180px * var(--desktop-card-scale)),1fr) minmax(calc(380px * var(--desktop-card-scale)),2fr) minmax(calc(180px * var(--desktop-card-scale)),1fr);
 }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .card { width:var(--sized-card-width);height:var(--sized-card-height); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table #hand { --display-card-width:var(--sized-card-width);min-height:calc(86px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table #hand .card { width:var(--sized-card-width);height:var(--sized-card-height); }
 /* The player's desktop hand starts larger at 100%; fit all thirteen cards
    using that same width, including for guests without saved spacing. */
 body:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) .table #hand { --display-card-width:calc(74px * var(--desktop-card-scale,1));--display-step:var(--card-spacing,38px);container-type:inline-size;min-height:calc(103px * var(--desktop-card-scale,1)); }
 body:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) .table #hand .card { width:var(--display-card-width);height:calc(103px * var(--desktop-card-scale,1));margin-left:0; }
 body:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) .table #hand .card+.card { margin-left:calc(min(var(--display-step),(100cqw - var(--display-card-width)) / 12) - var(--display-card-width)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .card .corner { font-size:calc(15px * var(--desktop-card-scale));line-height:calc(14px * var(--desktop-card-scale));left:calc(4px * var(--desktop-card-scale));top:calc(3px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .card .center-suit { font-size:calc(32px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .played-slot,
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .card.big { width:calc(82px * var(--desktop-card-scale));height:calc(116px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .play-center { min-height:calc(280px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .middle { width:calc(380px * var(--desktop-card-scale));height:calc(244px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .slot-W { left:calc(28px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .slot-E { right:calc(28px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .card.big .corner { font-size:calc(18px * var(--desktop-card-scale));line-height:calc(17px * var(--desktop-card-scale));left:calc(6px * var(--desktop-card-scale));top:calc(6px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .card.big .center-suit { font-size:calc(50px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .opponent-hand { container-type:inline-size; }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .opponent-hand .card { height:calc(50px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .opponent-hand .card+.card { margin-left:calc(min(15px * var(--desktop-card-scale),(100cqw - var(--sized-card-width)) / 12) - var(--sized-card-width)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .north .opponent-hand .card+.card { margin-left:calc(min(25px * var(--desktop-card-scale),(100cqw - var(--sized-card-width)) / 12) - var(--sized-card-width)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .revealed-hand:not(.kibitz-hand) .card { width:calc(44px * var(--desktop-card-scale));height:calc(62px * var(--desktop-card-scale));flex-basis:calc(44px * var(--desktop-card-scale));margin-right:calc(-26px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .revealed-hand:not(.kibitz-hand) .card:last-child { margin-right:0; }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .last-trick-diamond { width:calc(var(--sized-last-width,162px) * var(--desktop-card-scale));height:calc(var(--sized-last-height,144px) * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .last-play .card { width:calc(var(--sized-last-card-width,38px) * var(--desktop-card-scale));height:calc(var(--sized-last-card-height,50px) * var(--desktop-card-scale));margin-top:calc(3px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .last-play .corner { font-size:calc(11px * var(--desktop-card-scale));line-height:calc(11px * var(--desktop-card-scale));left:calc(3px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .last-play .center-suit { font-size:calc(23px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .mobile-domino-piles { width:min(100%,calc(420px * var(--desktop-card-scale)));--domino-overlap:calc(26px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded):not(.regular-watch) .table .mobile-domino-piles { --domino-overlap:calc(20px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .mobile-domino-pile>.card { width:calc(100% - var(--domino-overlap));height:100%; }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .mobile-domino-pile>.card .corner { inset:calc(3px * var(--desktop-card-scale)) auto auto calc(3px * var(--desktop-card-scale));font-size:clamp(14px,30cqw,calc(22px * var(--desktop-card-scale)));line-height:1.05; }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .mobile-domino-pile>.card .center-suit { display:none; }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .domino-cards { grid-template-columns:repeat(13,minmax(calc(24px * var(--desktop-card-scale)),1fr)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .domino-cards .card { width:100%;height:calc(42px * var(--desktop-card-scale));aspect-ratio:auto;max-height:none; }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .domino-cards .corner { font-size:calc(10px * var(--desktop-card-scale));line-height:calc(10px * var(--desktop-card-scale));left:calc(2px * var(--desktop-card-scale));top:calc(2px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .domino-cards .center-suit { font-size:calc(16px * var(--desktop-card-scale)); }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded).easy-read-cards .table #hand .corner { font-size:calc(24px * var(--desktop-card-scale));line-height:1.05; }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded).easy-read-cards .table .played-slot .corner { font-size:calc(30px * var(--desktop-card-scale));line-height:1.05; }
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded).easy-read-cards .table .last-play .corner { font-size:calc(18px * var(--desktop-card-scale));line-height:1.05; }
 body:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) .table #hand .corner { font-size:calc(18px * var(--desktop-card-scale,1));line-height:calc(17px * var(--desktop-card-scale,1));left:calc(5px * var(--desktop-card-scale,1));top:calc(4px * var(--desktop-card-scale,1)); }
 body:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) .table #hand .center-suit { font-size:calc(38px * var(--desktop-card-scale,1)); }
 body.easy-read-cards:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) .table #hand .corner { font-size:clamp(16px,calc((min(var(--display-step),(100cqw - var(--display-card-width)) / 12) - 7px) * .85),calc(29px * var(--desktop-card-scale,1)));line-height:1.05;left:calc(3px * var(--desktop-card-scale,1));top:calc(4px * var(--desktop-card-scale,1)); }
}
@media (min-width:801px) and (max-width:1100px) and (min-height:621px) {
 body.desktop-card-size-set:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table { --sized-last-width:140px;--sized-last-height:140px;--sized-last-card-width:34px;--sized-last-card-height:49px; }
}

/* Desktop current cards follow the visible South hand, including Kibitz. */
@media (min-width:801px) and (min-height:621px), (min-width:1101px) {
 body:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table { --current-card-width:calc(74px * var(--desktop-card-scale,1));--current-card-height:calc(103px * var(--desktop-card-scale,1)); }
 body:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .middle .played-slot,
 body:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) .table .middle .played-slot>.card { width:var(--current-card-width);height:var(--current-card-height); }
 body:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) .table .card.big .corner { font-size:calc(18px * var(--desktop-card-scale,1));line-height:calc(17px * var(--desktop-card-scale,1));left:calc(5px * var(--desktop-card-scale,1));top:calc(4px * var(--desktop-card-scale,1)); }
 body:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) .table .card.big .center-suit { font-size:calc(38px * var(--desktop-card-scale,1)); }
 body.easy-read-cards:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) .table .played-slot .corner { font-size:calc(29px * var(--desktop-card-scale,1));line-height:1.05;left:calc(3px * var(--desktop-card-scale,1));top:calc(4px * var(--desktop-card-scale,1)); }
}
/* Short Retro windows use the same smaller face and slot as their hand. */
body.old-school-table:not(.replay-loaded) .table .played-slot,
body.old-school-table:not(.replay-loaded) .table .played-slot>.card { width:var(--old-school-card-width,73px);height:var(--old-school-card-height,97px); }

/* Regular completed-trick cards: readable desktop/tablet faces with the seat
   identity retained in the accessible group, outside the visible diamond. */
@media (min-width:801px) and (min-height:621px), (min-width:1101px), (min-width:601px) and (max-width:800px) and (min-height:700px), (min-width:900px) and (max-width:1100px) and (min-height:540px) {
 body:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table :is(#lastTrickDock,.replay-last):has(.last-trick-completed) {
  --last-trick-card-height:70px;
  --last-trick-card-ratio:calc(5 / 7);
  --last-trick-diamond-width:calc(var(--last-trick-card-height) * var(--last-trick-card-ratio) * 3 + 8px);
  --last-trick-diamond-height:calc(var(--last-trick-card-height) * 2 + 8px);
  --last-trick-fit-width:calc((100cqw - 8px * var(--last-trick-scale)) / 3);
  --last-trick-scale:var(--desktop-card-scale,1);
  width:min(100%,calc(var(--last-trick-diamond-width) * var(--last-trick-scale) + 14px));
  max-width:none;
 }
 body:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table :is(#lastTrickDock,.replay-last):has(.last-trick-completed) .panel-heading { flex-wrap:wrap;gap:2px 6px; }
 body:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact):is([data-deck-style="barbu-original"],[data-deck-style="barbu-vector"]) .table :is(#lastTrickDock,.replay-last) { --last-trick-card-ratio:calc(73 / 97); }
 body:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact):is([data-deck-style="bridge5"],[data-deck-style="bridge5-four-color"]) .table :is(#lastTrickDock,.replay-last) { --last-trick-card-ratio:calc(9 / 14); }
 body:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact)[data-deck-style="vertical2"] .table :is(#lastTrickDock,.replay-last) { --last-trick-card-ratio:calc(2 / 3); }
 body:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact)[data-deck-style="modern-white"] .table :is(#lastTrickDock,.replay-last) { --last-trick-card-ratio:calc(14 / 19); }
 body:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact)[data-deck-style="french"] .table :is(#lastTrickDock,.replay-last) { --last-trick-card-ratio:calc(338 / 489); }
 body:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table :is(#lastTrickDock,.replay-last) .last-trick-completed {
  container-type:inline-size;
  width:min(100%,calc(var(--last-trick-diamond-width) * var(--last-trick-scale)));
  height:calc(var(--last-trick-diamond-height) * var(--last-trick-scale));transform:none;
 }
 body:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table :is(#lastTrickDock,.replay-last) .last-trick-completed .last-trick-seat {
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;
 }
 body:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table :is(#lastTrickDock,.replay-last) .last-trick-completed .last-play>.card {
  --last-trick-rendered-width:min(calc(var(--last-trick-card-height) * var(--last-trick-card-ratio) * var(--last-trick-scale)),var(--last-trick-fit-width));
  container-type:inline-size;display:block;width:var(--last-trick-rendered-width);height:auto;aspect-ratio:var(--last-trick-card-ratio);margin:0;background-size:contain;
 }
 body:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table :is(#lastTrickDock,.replay-last) .last-trick-completed .last-play .corner {
  font-size:27cqw;line-height:1;left:7cqw;top:6cqw;
 }
 body:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table :is(#lastTrickDock,.replay-last) .last-trick-completed .last-play .center-suit { font-size:60cqw; }
 body.easy-read-cards:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table :is(#lastTrickDock,.replay-last) .last-trick-completed .last-play .corner { font-size:38cqw; }
 body:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact):not(.easy-read-cards) .table :is(#lastTrickDock,.replay-last) .last-trick-completed .last-play .center-suit { display:flex; }
 body:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table :is(#lastTrickDock,.replay-last) .last-trick-completed .last-play.winner { z-index:2; }
}
@media (min-width:601px) and (max-width:800px) and (min-height:700px), (min-width:900px) and (max-width:1100px) and (min-height:540px) {
 body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz) .table:has(#lastTrickDock .last-trick-completed) { --last-width:180px; }
 body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table #lastTrickDock:has(.last-trick-completed) { bottom:auto;height:auto;width:min(var(--last-width),calc(var(--last-trick-diamond-width) * var(--last-trick-scale) + 14px));--last-trick-fit-width:calc((var(--last-width) - 19px) / 3); }
 body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz) .table:has(#lastTrickDock .last-trick-completed)>.player.north { left:calc(50% + var(--last-width) / 2); }
}


/* Embedded Gelasio Regular: unmodified local reference font.
Copyright 2022 The Gelasio Project Authors (https://github.com/SorkinType/Gelasio)

This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
https://openfontlicense.org

-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.

"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).

"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).

"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.

"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:

1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.

TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
*/


@font-face{font-family:Gelasio;src:url(data:font/ttf;base64,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ATQBMwEVAR0A6wDsAOcA6QDqAOgIAAEABV7/5QVe/+UFXv/lBV7/5QVe/+UFXv/lBV7/5QVe/+UHxP+fBTsAOQUjAEEFIwBBBf4AYAX+AF8FOgBgBToAYAU6AGAFOgBgBToAYATLAGAFzQBUBoUAYAMeAGwDHgBsAx4AOQMeAEoDHgBZBCQALAQkACwFjgBgBNQAYAdrAFEGIwA1BiMANQX0AF4F9ABeBfQAXgX0AF4F9ABeBfQAXgX0AF4H/ABeBOEAYATqAGAF9ABeBZ0AYAR9AG4E8wAnBg0ASgYNAEoGDQBKBg0ASgYNAEoFVf/aB87//AWvAA0E7P/UBOz/1ATQAEEECABhBAgAYQQIAGEECABhBAgAYQQIAGEECABhBeUAYQR7/+QDogBFA6IARQSYAFwEQQBGA94ARQPeAEUD3gBFA94ARQPeAEUCmgA4BBMAOQSoABACWAAuAlgALgJYAC4CWP/hAlj/8gJYAC4CWP/yAlb/zQJW/80CVv/NBEkABgJKAAIHDAAvBLoALQS6AC0EUABNBFAATQRQAE0EUABNBFAATQRQAE0EUABNBogARgSSAAsEef/kBHoAXANHAD0DdQBEBGMAEgLDAB4EmgAxBJoAMQSaADEEmgAxBJoAMQP5/94F5v/OBAoADwPw/+0D8P/tA/D/7QONACIE9gA/BxIAPwcSACoEqQAYBLgAGAQAAKYEAAB6BKIAhATpAJADcACWBHgAcQRqAFsEhQA5BDoAQASHAGAEBQBDBMUAiwSHAGAFGgCPA3AAgQR4AH8EagBTBIUAKQQ6ADwEhwBgBAUARQTFAIsEhwBgBRoAewUaANkFGgCgBRoAcwUaAEYFGgCEBRoAfQUaAIQFGgCcBRoAfQUaAJcFGgD7BRoAuQUaAKEFGgBTBRoAjQUaAIUFGgCNBRoApAUaAIUEAABzBAAAjAQAAJAEAACPBAAASgQAAI8EAACMBAAAdQQAAIoEAACQBAAAcwQAAIwEAACQBAAAjwQAAEoEAACPBAAAjAQAAHUEAACKBAAAkACm/s8IZgBWCGYAVghmALQEAACMBAAAkAQAAI8B7gAAAe4AAAQAAAABAAAAAAAAAAAAAAACKACIAigAeQKAAM8CgACjBnUA1wKmAMcCpgC+A9QARwPUAE4CPACSAyQAkQPHAEoFJQBjA8AArgPAADEBVQAe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b20JZm91ci5kbm9tCWZpdmUuZG5vbQhzaXguZG5vbQpzZXZlbi5kbm9tCmVpZ2h0LmRub20JbmluZS5kbm9tCXplcm8ubnVtcghvbmUubnVtcgh0d28ubnVtcgp0aHJlZS5udW1yCWZvdXIubnVtcglmaXZlLm51bXIIc2l4Lm51bXIKc2V2ZW4ubnVtcgplaWdodC5udW1yCW5pbmUubnVtcgd1bmkwMEI5B3VuaTAwQjIHdW5pMDBCMwd1bmkwMEEwB3VuaTIwMDIHdW5pMjAwOQd1bmkyMDBCAkNSFnBlcmlvZGNlbnRlcmVkLmxvY2xDQVQbcGVyaW9kY2VudGVyZWQubG9jbENBVC5jYXNlBm1pbnV0ZQZzZWNvbmQERXVybwd1bmkyMjE1B3VuaTAwQjUHYXJyb3d1cAlhcnJvd2Rvd24HdW5pMDMwOAd1bmkwMzA3CWdyYXZlY29tYglhY3V0ZWNvbWIHdW5pMDMwMgd1bmkwMzBBCXRpbGRlY29tYgd1bmkwMzA0DWhvb2thYm92ZWNvbWIMZG90YmVsb3djb21iB3VuaTAzMjcHdW5pMDMyOQx1bmkwMzA4LmNhc2UOZ3JhdmVjb21iLmNhc2UOYWN1dGVjb21iLmNhc2UMdW5pMDMwMi5jYXNlDHVuaTAzMDYuY2FzZQx1bmkwMzBBLmNhc2UOdGlsZGVjb21iLmNhc2UMdW5pMDMwNC5jYXNlEmhvb2thYm92ZWNvbWIuY2FzZRFkb3RiZWxvd2NvbWIuY2FzZQd1bmkwMkJDB3VuaTAyQkIMb1NsYXNoX3BhcnQuAAABAAAACgA2AGAAAkRGTFQAHmxhdG4ADgAEAAAAAP//AAMAAAABAAIABAAAAAD//wACAAEAAgADa2VybgAkbWFyawAcbWttawAUAAAAAgADAAQAAAACAAEAAgAAAAEAAAAFCAoBqAEUANIADAAGABAAAQAKAAIAAQCgAKAAAQBuAAwADABcAFYAUABKAEQAPgA4ADIALAAmACAAGgABANIFswABAAAFJgABAAAFDgABAAAGHwAB/+cGHwABAAAFjQABAM0FswABAAAE8gABAAAFMwABAZ4FtQABAm4FnwABAAAFWQAMAAAHXgAAB1gAAAdSAAAHTAAAB0wAAAdGAAAHTAAABzQAAAdMAAAHTAAAB0wAAAcuAAEADAEV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) format("truetype");font-style:normal;font-weight:400;font-display:swap}
/* Additional reference-file Retro preview. Retains the native renderer, controls and deck loader. */
.retro-playground-count{display:none}
body.retro-playground{min-width:0!important;background:#fff!important;color:#000!important;overflow-x:hidden}
body.retro-playground #app{min-width:0!important;max-width:none!important}
body.retro-playground #app>.app,body.retro-playground #root{display:block!important;padding:0!important;max-width:none!important;min-width:0!important;background:#fff!important}
body.retro-playground .table{position:relative!important;display:block!important;box-sizing:border-box!important;max-width:none!important;margin:0 auto!important;padding:0!important;border:0!important;border-radius:0!important;background:#fff!important;color:#000!important;overflow:visible!important;font-family:Gelasio,Georgia,serif!important}
body.retro-playground .table :is(.top-left,.side-panel,.west-column,.east-column,.play-center,.bottom-right,.player,#youChip,.old-school-auction,.old-school-auction-seat){display:contents!important}
body.retro-playground .table #tableInfoPanel,body.retro-playground .table .replay-remaining{display:none!important}
body.retro-playground .table :is(.game-id,.deal-title,.dealer-line,.contract-line,.name-line,.old-school-auction-name,.old-school-auction-response),
body.retro-playground .table #gameRulesNotice{box-sizing:border-box!important;min-width:0!important;max-width:none!important;min-height:0!important;height:auto!important;padding:0!important;margin:0!important;line-height:1.2!important;text-align:center!important;white-space:normal!important;overflow-wrap:anywhere!important;font-family:Gelasio,Georgia,serif!important;font-weight:400!important;color:#000!important;background:transparent!important;border:0!important}
body.retro-playground .table .name-line{display:flex!important;align-items:center!important;justify-content:center!important;gap:5px!important}
body.retro-playground .table .name-line :is(.name,.retro-playground-count){font:inherit!important;font-weight:400!important;color:inherit!important}
body.retro-playground .table .active .name-line{color:#00f!important}
body.retro-playground .table .active .name::after{content:none!important}
body.retro-playground .table .active .retro-playground-count::after{content:'*'}
body.retro-playground .retro-playground-count{display:inline}
body.retro-playground .table .name-line :is(.seat,.metric,.dealer-badge,.old-school-player-response),body.retro-playground .table .bid-badges,body.retro-playground .table :is(.hand-hint,.trick-note,.last-trick-seat),body.retro-playground .table .last-trick>:not(.last-trick-diamond){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important}
body.retro-playground .table #playerS .old-school-last-play{display:none!important}
body.retro-playground .table :is(.old-school-auction-pass,.old-school-last-pass){color:#207132!important;font-weight:400!important}
body.retro-playground .table .old-school-auction-name,body.retro-playground .table .old-school-auction-response{display:block!important}
body.retro-playground .table .card,body.retro-playground .table .card.big{box-sizing:border-box!important;width:var(--retro-playground-card-width,73px)!important;height:97px!important;min-width:var(--retro-playground-card-width,73px)!important;min-height:97px!important;max-width:none!important;max-height:none!important;padding:0!important;aspect-ratio:auto!important;background-size:100% 100%!important;border-radius:0!important;box-shadow:none!important;flex:none!important}
body.retro-playground .table .card .corner{font-size:29px!important;line-height:29px!important;left:4px!important;top:3px!important}
body.retro-playground .table .card .center-suit{font-size:48px!important}
body.retro-playground .table :is(.hand,.revealed-hand,.opponent-hand,.kibitz-side-hand,.replay-side-hand){display:block!important;min-height:97px!important;max-height:none!important;max-width:none!important;padding:0!important;overflow:visible!important;gap:0!important;grid-template-columns:none!important;transform-origin:center!important}
body.retro-playground .table :is(.replay-suit-row,.kibitz-suit-row){display:contents!important}
body.retro-playground .table .middle{position:absolute!important;height:217px!important;min-height:217px!important;max-height:none!important;max-width:none!important;overflow:visible!important;padding:0!important;inset:auto}
body.retro-playground .table :is(.played-slot,.last-play){position:absolute!important;width:var(--retro-playground-card-width,73px)!important;height:97px!important;margin:0!important;padding:0!important;font-size:0!important;transform:translate(-50%,-50%)!important;right:auto!important;bottom:auto!important}
body.retro-playground .table :is(.slot-N,.last-N){left:50%!important;top:calc(50% - 60px)!important}
body.retro-playground .table :is(.slot-S,.last-S){left:50%!important;top:calc(50% + 60px)!important}
body.retro-playground .table :is(.slot-W,.last-W){left:calc(50% - 80px)!important;top:50%!important}
body.retro-playground .table :is(.slot-E,.last-E){left:calc(50% + 80px)!important;top:50%!important}
body.retro-playground .table :is(.played-slot,.last-play)>.card{position:relative!important;inset:0!important;margin:0!important;transform:none!important}
body.retro-playground .table .last-trick{display:block!important;background:transparent!important;border:0!important;padding:0!important;min-height:0!important;max-width:none!important;overflow:visible!important;container-type:normal!important;box-shadow:none!important}
body.retro-playground .table .last-trick-diamond{position:relative!important;inset:auto!important;width:100%!important;height:217px!important;margin:0!important;transform:none!important}
body.retro-playground .table .last-play.winner{z-index:2}
body.retro-playground .table .domino-board{height:97px!important;min-height:97px!important;display:block!important;border:0!important;background:none!important;padding:0!important;overflow:visible!important}
body.retro-playground .table .domino-board.hidden{display:none!important}
body.retro-playground .table .old-school-domino-piles{display:contents!important}
body.retro-playground .table .old-school-suit-pile{width:calc(var(--retro-playground-card-width) + 13px)!important;height:97px!important;margin:0!important;overflow:visible!important}
body.retro-playground .table .old-school-suit-pile>.card{position:absolute!important;top:0!important;left:0!important;transform:none!important;margin:0!important}
body.retro-playground .table .old-school-suit-pile>.old-school-end-low{left:13px!important}
body.retro-playground .table .old-school-last-play{height:97px!important;min-height:97px!important;max-height:none!important;display:block!important;margin:0!important;padding:0!important}
body.retro-playground .table .old-school-last-play>.card{position:relative!important;inset:auto!important;margin:0!important;transform:none!important}
body.retro-playground .table .domino-status{position:absolute!important;clip:rect(0,0,0,0)!important;width:1px!important;height:1px!important;overflow:hidden!important}
body.retro-playground .table #chatPanel{display:block!important;box-sizing:border-box!important;border:0!important;border-radius:0!important;padding:6px!important;background:#dcdcdc!important;color:#000!important;font-family:Gelasio,Georgia,serif!important}
body.retro-playground .table #chatPanel.hidden{display:none!important}
body.retro-playground .table #chatMessages{height:var(--retro-playground-chat-height,150px)!important;min-height:0!important;max-height:none!important;color:#000!important;background:#dcdcdc!important;font:inherit!important}
body.retro-playground .table #chatMessages *{color:#000!important;font:inherit!important}
body.retro-playground .table #chatForm{display:flex!important;gap:5%!important}
body.retro-playground .table #chatInput{width:70%!important;min-width:0!important;font-family:inherit!important}
body.retro-playground .table #chatSend{width:25%!important;font-family:inherit!important}
body.retro-playground #scoreSheet,body.retro-playground #replayDrawer{color:#000!important;background:#cfcfcf!important;font-family:Gelasio,Georgia,serif!important;font-size:max(14px,calc(15px * var(--retro-playground-font-unit,1) * var(--retro-playground-scale,1)))!important}
body.retro-playground :is(#scoreSheet,#replayDrawer) :is(table,th,td,h2,p){color:#000!important;background:#cfcfcf!important;font:inherit!important}
body.retro-playground.replay-loaded>.toolbar{background:#eee!important;color:#000!important;flex-wrap:wrap!important}
body.retro-playground.replay-loaded>.toolbar :is(button,summary,label){color:#000!important;background:#eee!important}
body.retro-playground .table .hide-hand-btn{font:14px/1.2 Arial,sans-serif!important;min-height:28px!important}

html body.retro-playground.old-school-table{min-width:0!important}
body.retro-playground .table #chatPanel{max-height:none!important;height:auto!important}

body.retro-playground .table .opponent-hand:not(.replay-hand){display:none!important}

/* Preserve native visibility state even while wrappers become source-positioned leaves. */
body.retro-playground .table .hidden,body.retro-playground .table [hidden]{display:none!important}
body.retro-playground #app>.toolbar{min-width:0!important;width:100%!important;box-sizing:border-box!important}

body.retro-playground.replay-loaded>.toolbar{min-width:0!important;width:100%!important;box-sizing:border-box!important}
/* The controller measures the retained online control row and places it above chat. */
body.retro-playground .table #chatPanel>#kibitzControls:not(.hidden){position:static!important;inset:auto!important;transform:none!important;display:flex!important;flex-wrap:wrap!important;align-items:center!important;box-sizing:border-box!important;width:100%!important;max-width:100%!important;height:auto!important;min-height:calc(36px / var(--retro-playground-scale,1))!important;margin:0 0 8px!important;padding:0!important;font:calc(14px / var(--retro-playground-scale,1))/1.2 Arial,sans-serif!important;color:#000!important;background:transparent!important;float:none!important}
body.retro-playground .table #chatPanel>.table-chat-heading{position:static!important;clear:both!important;margin-top:0!important}
body.retro-playground .table #kibitzControls .kibitz-view-buttons{display:flex!important;flex-wrap:wrap!important;gap:3px!important;max-width:100%!important}
body.retro-playground .table #kibitzControls :is(.kibitz-view-buttons button,.kibitz-table-options>summary){box-sizing:border-box!important;min-width:calc(36px / var(--retro-playground-scale,1))!important;min-height:calc(36px / var(--retro-playground-scale,1))!important;font:calc(14px / var(--retro-playground-scale,1))/1.2 Arial,sans-serif!important;color:#000!important;background:#eee!important}

body.retro-playground .table #kibitzControls .kibitz-controls-label{font:inherit!important;color:#000!important}

/* Native old-Retro gameplay toolbar, wrapping in the additional preview only. */
body.retro-playground #app>.toolbar,body.retro-playground #app>.toolbar #toolbarActions{display:flex!important;flex-wrap:wrap!important;min-width:0!important;max-width:100%!important;box-sizing:border-box!important;height:auto!important}
body.retro-playground #app>.toolbar{width:100%!important}
body.retro-playground #app>.toolbar #toolbarActions{width:100%;gap:5px}
body.retro-playground #app>.toolbar :is(button,select){max-width:100%!important;min-height:36px}
/* Normal connection status uses no row; native errors/retry stay visible. */
body.online-site #onlineBar:not([data-retro-playground-error="true"]){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

/* Reference Retro keeps trick progress available to assistive technology without painting it. */
html body:is(.old-school-table,.retro-playground) .table .middle>.trick-note{
 display:block!important;position:absolute!important;inset:auto!important;left:0!important;top:0!important;
 width:1px!important;height:1px!important;min-width:0!important;min-height:0!important;max-width:1px!important;max-height:1px!important;
 padding:0!important;margin:-1px!important;border:0!important;overflow:hidden!important;
 clip:rect(0,0,0,0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;pointer-events:none!important;
}

/* Cold artwork uses neutral paper, never another deck. Keep every real card
   box, accessible rank/suit, legal/pending outline and completed-trick node. */
html body[data-deck-paint="pending"] .card[data-card]:not(.back):not(.ghost){
 background-image:linear-gradient(135deg,#fff 0%,#fff 45%,#eceeec 50%,#fff 55%,#fff 100%)!important;
 background-color:#fff!important;border:1px solid #aeb6ae!important;
}
html body[data-deck-paint="pending"] .card[data-card]:not(.back):not(.ghost)>:is(.corner,.center-suit,img){visibility:hidden!important}

/* Retro card size changes artwork and its trick cluster, retaining the board anchors. */
body.retro-playground .table :is(.card,.card.big){height:var(--retro-playground-card-height,97px)!important;min-height:var(--retro-playground-card-height,97px)!important}
body.retro-playground .table :is(.hand,.revealed-hand,.opponent-hand,.kibitz-side-hand,.replay-side-hand,.played-slot,.last-play,.domino-board,.old-school-last-play){min-height:var(--retro-playground-card-height,97px)!important}
body.retro-playground .table :is(.played-slot,.last-play,.domino-board,.old-school-last-play){height:var(--retro-playground-card-height,97px)!important}
body.retro-playground .table .middle{height:var(--retro-playground-trick-height,217px)!important;min-height:var(--retro-playground-trick-height,217px)!important}
body.retro-playground .table .last-trick-diamond{height:var(--retro-playground-trick-height,217px)!important}
body.retro-playground .table :is(.slot-N,.last-N){top:calc(50% - var(--retro-playground-vertical-offset,60px))!important}
body.retro-playground .table :is(.slot-S,.last-S){top:calc(50% + var(--retro-playground-vertical-offset,60px))!important}
body.retro-playground .table :is(.slot-W,.last-W){left:calc(50% - var(--retro-playground-horizontal-offset,80px))!important}
body.retro-playground .table :is(.slot-E,.last-E){left:calc(50% + var(--retro-playground-horizontal-offset,80px))!important}
body.retro-playground .table .old-school-suit-pile{width:calc(var(--retro-playground-card-width) + var(--retro-playground-end-step,13px))!important;height:var(--retro-playground-card-height,97px)!important}
body.retro-playground .table .old-school-suit-pile>.old-school-end-low{left:var(--retro-playground-end-step,13px)!important}
body.retro-playground .table .card .corner{font-size:calc(29px * var(--retro-playground-card-scale,1))!important;line-height:calc(29px * var(--retro-playground-card-scale,1))!important;left:calc(4px * var(--retro-playground-card-scale,1))!important;top:calc(3px * var(--retro-playground-card-scale,1))!important}
body.retro-playground .table .card .center-suit{font-size:calc(48px * var(--retro-playground-card-scale,1))!important}
body.retro-playground .table .old-school-auction-response.old-school-auction-double{color:#c00000!important}

/* Reference Retro follows the saved native dark theme; card artwork stays unchanged. */
html body.retro-playground.dark-mode{background:var(--site-page)!important;color:var(--site-ink)!important}
html body.retro-playground.dark-mode :is(#app>.app,#root,.table){background:var(--site-panel)!important;color:var(--site-ink)!important}
html body.retro-playground.dark-mode .table{
 --felt:var(--site-panel);--ink:var(--site-ink);--muted:var(--site-muted);--line:var(--site-line);
 --panel:var(--site-panel);--cell:var(--site-soft);--control:var(--site-soft);--active:var(--site-gold-soft);
 --positive:var(--old-school-pass,#77df8b);--negative:var(--old-school-double,#ff8080);
}
html body.retro-playground.dark-mode .table :is(.game-id,.deal-title,.dealer-line,.contract-line,.name-line,.old-school-auction-name,.old-school-auction-response),
html body.retro-playground.dark-mode .table #gameRulesNotice{color:var(--site-ink)!important}
html body.retro-playground.dark-mode .table .active .name-line{color:var(--site-action)!important}
html body.retro-playground.dark-mode .table :is(.old-school-auction-pass,.old-school-last-pass){color:var(--old-school-pass,#77df8b)!important}
html body.retro-playground.dark-mode .table .old-school-auction-response.old-school-auction-double{color:var(--old-school-double,#ff8080)!important}
html body.retro-playground.dark-mode .table :is(#chatPanel,#chatMessages){background:var(--site-soft)!important;color:var(--site-ink)!important}
html body.retro-playground.dark-mode .table #chatMessages *{color:var(--site-ink)!important}
html body.retro-playground.dark-mode .table #chatMessages time{color:var(--site-muted)!important}
html body.retro-playground.dark-mode .table #chatMessages .chat-system{color:var(--old-school-double,#ff8080)!important}
html body.retro-playground.dark-mode .table :is(#chatInput,#chatSend){background:var(--site-panel)!important;color:var(--site-ink)!important;border-color:var(--site-line)!important}
html body.retro-playground.dark-mode .table #chatInput::placeholder{color:var(--site-muted);opacity:1}
html body.retro-playground.dark-mode :is(#scoreSheet,#replayDrawer),html body.retro-playground.dark-mode :is(#scoreSheet,#replayDrawer) :is(table,th,td,h2,p){background:var(--site-panel)!important;color:var(--site-ink)!important}
html body.retro-playground.dark-mode #app>.toolbar,html body.retro-playground.dark-mode.replay-loaded>.toolbar{background:var(--site-panel)!important;color:var(--site-ink)!important;border-color:var(--site-line)!important}
html body.retro-playground.dark-mode.replay-loaded>.toolbar :is(button,summary,label){background:var(--site-soft)!important;color:var(--site-ink)!important;border-color:var(--site-line)!important}
html body.retro-playground.dark-mode .table #chatPanel>#kibitzControls:not(.hidden),html body.retro-playground.dark-mode .table #kibitzControls .kibitz-controls-label{color:var(--site-ink)!important}
html body.retro-playground.dark-mode .table #kibitzControls :is(.kibitz-view-buttons button,.kibitz-table-options>summary){background:var(--site-panel)!important;color:var(--site-ink)!important;border-color:var(--site-line)!important}
html body.retro-playground.dark-mode :is(.toolbar,#kibitzControls) button[aria-pressed="true"]{background:var(--site-gold-soft)!important}
html body.retro-playground.dark-mode.replay-loaded>.toolbar :is(#playFromHere,#replayMenuPractice){background:var(--site-action)!important;color:var(--site-action-ink)!important}

/* Own-hand illustrations use their native proportions. The asset supplies
   the paper and outline; no letterbox or added CSS frame becomes clickable. */
body:is([data-deck-style="english"],[data-deck-style="large-index"],[data-deck-style="french"],[data-deck-style="modern-white"],[data-deck-style="barbu-original"],[data-deck-style="barbu-vector"],[data-deck-style="bridge5"],[data-deck-style="bridge5-four-color"],[data-deck-style="vertical2"]) {
  --hand-card-ratio:calc(73 / 97);
  --hand-card-corners:0px;
}
body:is([data-deck-style="english"],[data-deck-style="large-index"]) { --hand-card-ratio:calc(5 / 7);--hand-card-corners:5% / 3.5714%; }
body[data-deck-style="modern-white"] { --hand-card-ratio:calc(14 / 19);--hand-card-corners:11.4286% / 8.4211%; }
body[data-deck-style="french"] { --hand-card-ratio:calc(338 / 489);--hand-card-corners:3% / 2.0736%; }
body[data-deck-style="barbu-vector"] { --hand-card-corners:1.8493% / 1.3918%; }
body:is([data-deck-style="bridge5"],[data-deck-style="bridge5-four-color"]) { --hand-card-ratio:calc(9 / 14);--hand-card-corners:8.9623% / 5.7751%; }
body[data-deck-style="vertical2"] { --hand-card-ratio:calc(2 / 3);--hand-card-corners:7.1429% / 4.7619%; }
body:is([data-deck-style="english"],[data-deck-style="large-index"],[data-deck-style="french"],[data-deck-style="modern-white"],[data-deck-style="barbu-original"],[data-deck-style="barbu-vector"],[data-deck-style="bridge5"],[data-deck-style="bridge5-four-color"],[data-deck-style="vertical2"]) #hand button.card[data-card]:not(.back):not(.ghost) {
  box-sizing:border-box;
  width:auto!important;
  min-width:0!important;
  aspect-ratio:var(--hand-card-ratio)!important;
  flex-basis:auto!important;
  background-color:transparent;
  background-size:contain!important;
  border:0;
  border-radius:0!important;
  background-origin:border-box;
  background-clip:border-box;
  clip-path:inset(0 round var(--hand-card-corners));
}
/* Preserve the saved overlap step with the narrower native own-hand faces. */
@media (min-width:1101px) and (min-height:621px) {
  body:not(.old-school-table):not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch)[data-deck-style]:not([data-deck-style="classic"]) .table #hand {
    --display-card-width:calc(103px * var(--desktop-card-scale,1) * var(--hand-card-ratio));
  }
}
body.regular-desktop-fit[data-deck-style]:not([data-deck-style="classic"]) .table #hand {
  --display-card-width:calc(var(--regular-fit-hand-height,calc(103px * var(--desktop-card-scale,1))) * var(--hand-card-ratio));
}
/* The phone's seven-column hand still fits each grid cell. A constrained
   width reduces height proportionally instead of adding invisible top space. */
@media (max-width:540px) {
  body:not(.regular-desktop-fit):not(.old-school-table):not(.mobile-landscape):not(.replay-loaded)[data-deck-style]:not([data-deck-style="classic"]) .table:not(:has(.revealed-hand)) #hand button.card[data-card]:not(.back):not(.ghost) {
    width:calc(72px * var(--hand-card-ratio))!important;
    max-width:100%!important;
    height:auto!important;
    max-height:72px!important;
  }
}
body #hand button.card.legal:not(:disabled):focus-visible {
  outline:2px solid #4169b1;
  outline-offset:-3px;
}
body.easy-read-cards[data-deck-style="classic"] #hand button.card[data-card]:not(.back):not(.ghost) {
  border:2px solid #202020;
}


/* Desktop cards and compass stay at the selected size at every CSS viewport.
   The desktop canvas scrolls; phones/tablets retain their responsive classes. */
@media all {
 html body.regular-desktop-fit:not(.old-school-table):not(.mobile-landscape):not(.replay-loaded) #app .app { padding:4px 6px;zoom:var(--regular-screen-scale,1); }
 html body.regular-desktop-fit:not(.old-school-table):not(.mobile-landscape):not(.replay-loaded) #app .table {
  --fit-scale:var(--regular-fit-card-scale,1);
  --sized-card-width:calc(62px * var(--fit-scale));--sized-card-height:calc(86px * var(--fit-scale));
  --current-card-width:calc(82px * var(--fit-scale));--current-card-height:calc(116px * var(--fit-scale));
  box-sizing:border-box;height:var(--regular-fit-height,calc(100dvh - 112px));min-height:0;
  grid-template-columns:minmax(138px,1fr) minmax(max(278px,calc(380px * var(--fit-scale))),2fr) minmax(166px,1fr);
  grid-template-rows:auto minmax(calc(232px * var(--fit-scale) + 28px),1fr) auto;align-content:stretch;gap:5px 8px;padding:7px;
 }
 html body.regular-desktop-fit:not(.old-school-table) #app .table>.top-left { grid-area:1 / 1;min-width:0; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table>.north { grid-area:1 / 2; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table>.side-panel { grid-area:1 / 3;min-height:0; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table>.west-column { grid-area:2 / 1;display:grid;align-content:center;gap:5px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table>.east-column { grid-area:2 / 3;display:grid;align-content:center;gap:5px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .player:is(.west,.east) { grid-area:auto; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table>.play-center { grid-area:2 / 2;min-height:0;min-width:0; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table>.south { grid-area:3 / 2;min-width:0;padding:3px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table>#lastTrickDock { grid-area:3 / 1;align-self:end;box-sizing:border-box;max-width:100%; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table>.bottom-right { grid-area:3 / 3;align-self:end;min-width:0; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .game-id { font-size:12px;margin-bottom:3px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .deal-title { font-size:clamp(19px,2.1vw,22px);margin:1px 0 3px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .dealer-line { font-size:15px;margin-bottom:2px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .contract-line { font-size:15px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .contract-line.called { font-size:18px;padding:4px 6px;margin-top:3px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .player { padding:3px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .name { font-size:16px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .name-line { gap:3px;margin-bottom:2px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .north .name-line,
 html body.regular-desktop-fit:not(.old-school-table) #app .table .north .bid-badges { justify-content:center; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .opponent-hand { display:flex;min-width:0;container-type:inline-size;padding-top:2px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .opponent-hand .card { width:var(--sized-card-width);height:calc(42px * var(--fit-scale)); }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .opponent-hand .card+.card { margin-left:calc(min(15px * var(--fit-scale),(100cqw - var(--sized-card-width)) / 12) - var(--sized-card-width)); }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .north .opponent-hand { justify-content:center; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .north .opponent-hand .card+.card { margin-left:calc(min(23px * var(--fit-scale),(100cqw - var(--sized-card-width)) / 12) - var(--sized-card-width)); }
 html body.regular-desktop-fit:not(.old-school-table) #app .table #hand { display:flex;flex-wrap:nowrap;gap:0;--display-card-width:calc(var(--regular-fit-hand-height,103px) * var(--hand-card-ratio,.718447));container-type:inline-size;min-height:var(--regular-fit-hand-height,103px);padding-top:3px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table #hand .card { width:var(--display-card-width);height:var(--regular-fit-hand-height,103px);margin-left:0; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table #hand .card+.card { margin-left:calc(min(var(--card-spacing,38px),(100cqw - var(--display-card-width)) / 12) - var(--display-card-width)); }
 html body.regular-desktop-fit:not(.old-school-table) #app .table #hand .corner,
 html body.regular-desktop-fit:not(.old-school-table) #app .table .card.big .corner { font-size:max(13px,calc(18px * var(--fit-scale)));line-height:1;left:calc(5px * var(--fit-scale));top:calc(4px * var(--fit-scale)); }
 html body.regular-desktop-fit.easy-read-cards:not(.old-school-table) #app .table #hand .corner { font-size:clamp(16px,calc((min(var(--card-spacing,38px),(100cqw - var(--display-card-width)) / 12) - 6px) * .85),calc(29px * var(--fit-scale))); }
 html body.regular-desktop-fit:not(.old-school-table) #app .table #hand .center-suit,
 html body.regular-desktop-fit:not(.old-school-table) #app .table .card.big .center-suit { padding-top:0;font-size:calc(38px * var(--fit-scale)); }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .hand-hint { font-size:12px;min-height:14px;margin-top:3px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .middle:not(:has(.completed-table)) { width:min(100%,calc(380px * var(--fit-scale)));height:calc(232px * var(--fit-scale) + 20px);max-height:100%;top:50%; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .middle .played-slot,
 html body.regular-desktop-fit:not(.old-school-table) #app .table .middle .played-slot>.card { width:var(--current-card-width);height:var(--current-card-height); }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .slot-W { left:4px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .slot-E { right:4px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .trick-note { margin-top:3px;font-size:12px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .panel { padding:5px;font-size:12px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .info-content { max-height:clamp(85px,calc(var(--regular-fit-height,600px) * .24),175px); }
 html body.regular-desktop-fit:not(.old-school-table) #app .table :is(#infoView,#chatInput,#chatSend) { font-size:12px;min-height:28px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table #infoView { margin-bottom:4px;padding:4px 6px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .chat-messages { height:clamp(28px,calc(var(--regular-fit-height,600px) * .10),70px);margin:3px 0;font-size:12px;line-height:1.3; }
 /* Chat uses the empty space below East without changing the card grid. Its
    measured log height applies only while the native panel stays on the table. */
 html body.regular-desktop-fit:not(.regular-watch):not(.old-school-table):not(.mobile-landscape):not(.replay-loaded) #app .table>.bottom-right { position:relative; }
 html body.regular-desktop-fit:not(.regular-watch):not(.old-school-table):not(.mobile-landscape):not(.replay-loaded) #app .table>.bottom-right>#chatPanel:not(.hidden) { position:absolute;inset:auto 0 0; }
 html body.regular-desktop-fit:not(.old-school-table):not(.mobile-landscape):not(.replay-loaded) #app .table>.bottom-right>#chatPanel>.chat-messages { height:var(--regular-chat-height,70px); }
 html body.regular-desktop-fit:not(.old-school-table) #app .table #chatInput { padding:4px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table #chatSend { padding:4px 6px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table #chatNotice { font-size:12px;line-height:1.2;margin:3px 0 0; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table #lastTrickDock { --last-trick-scale:var(--fit-scale);--last-trick-card-height:60px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .last-trick-diamond { transform:none; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .modal-shade { min-height:0; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .modal { box-sizing:border-box;max-height:100%;overflow-y:auto;font-size:13px;padding:8px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .modal h2 { font-size:21px; }
 html body.regular-desktop-fit:not(.old-school-table) #app>.toolbar { gap:4px;padding:4px 6px; }
 html body.regular-desktop-fit:not(.old-school-table) #app>.toolbar .toolbar-actions { gap:4px; }
 html body.regular-desktop-fit:not(.old-school-table) #app>.toolbar :is(button,select,summary) { font-size:12px;min-height:30px;padding:5px 7px; }
 /* The old narrow desktop used one toolbar. Keep its 801 x 621 corner and
    full 82 x 116 played cards by releasing header and caption reservations. */
 html body.regular-desktop-fit.compact-game-toolbar:not(.old-school-table):not(.mobile-landscape):not(.replay-loaded) #app .app { padding-top:0; }
 html body.regular-desktop-fit.compact-game-toolbar:not(.old-school-table):not(.mobile-landscape):not(.replay-loaded) #app .table { grid-template-rows:auto minmax(calc(232px * var(--fit-scale) + 10px),1fr) auto;gap:4px 8px;padding:5px 7px; }
 html body.regular-desktop-fit.compact-game-toolbar:not(.old-school-table) #app .table>.south { padding:2px 3px; }
 html body.regular-desktop-fit.compact-game-toolbar:not(.old-school-table) #app .table .middle:not(:has(.completed-table)) { top:50%; }
 html body.regular-desktop-fit.compact-game-toolbar:not(.old-school-table) #app .table .middle .trick-note { top:auto;bottom:0;right:0;width:auto;max-width:calc(50% - var(--current-card-width) / 2 - 4px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right; }
}
/* A short desktop that has switched to tablet keeps its played cards at least
   as tall as the tablet hand. Phone and spectator layouts retain their sizes. */
@media(min-width:701px) and (max-height:499px){
 body.tablet-game-layout.mobile-landscape .middle:not(:has(.completed-table)) { min-height:150px; }
 body.tablet-game-layout.mobile-landscape .middle .played-slot,
 body.tablet-game-layout.mobile-landscape .middle .played-slot>.card { width:calc(70px * var(--hand-card-ratio,calc(62 / 70)));height:70px; }
}
/* Smaller saved card sizes can retain desktop in a short window. Scores keep
   every row; the chat log and previous trick take less vertical room. */
@media(min-width:701px) and (max-height:550px){
 html body.regular-desktop-fit:not(.old-school-table) #app .table { gap:4px 8px;padding:6px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table>.top-left { min-height:0; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .player:is(.west,.east) { min-height:0; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .player:is(.west,.east) :is(.name-line,.bid-badges,.opponent-hand) { min-height:0; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .player.south :is(.name-line,.bid-badges) { min-height:0;margin:1px 0; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .table-info-panel:has(#scorePanel:not(.hidden)) { max-height:none; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .info-content:has(>#scorePanel:not(.hidden)) { max-height:none; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .score-table { font-size:12px;line-height:1.15; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .score-table :is(th,td) { padding:2px 1px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .score-table :is(thead,.score-name,th:first-child) { font-size:12px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table .chat-messages { height:28px; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table #chatNotice { line-height:1.1; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table #lastTrickDock { --last-trick-card-height:46px;--last-trick-scale:1; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table #lastTrickDock .last-trick-diamond { width:126px;height:100px;margin:3px auto 0; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table #lastTrickDock .last-trick-completed .last-trick-seat { position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap; }
 html body.regular-desktop-fit:not(.old-school-table) #app .table #lastTrickDock .last-play>.card { width:calc(46px * var(--hand-card-ratio,.714286));height:46px;margin:0; }
}


/* End-of-hand scores keep all five columns with a tighter readable table. */
html body #modal:has(>.deal-result) { box-sizing:border-box;width:min(440px,100%);margin:auto;padding:8px 10px; }
html body .deal-result h2 { font-size:19px;line-height:1.2;margin:0 0 3px; }
html body .deal-result>p { font:12px/1.3 Arial,sans-serif;margin:3px 0 5px; }
html body .deal-score-table { font:13px/1.25 Arial,sans-serif; }
html body .deal-score-table :is(th,td) { padding:4px 6px; }
html body .deal-result .modal-actions { gap:4px;margin-top:6px; }
html body .deal-result #nextDealCountdown { margin:4px 0 0; }
html body .deal-result #nextDealCountdown:empty { display:none; }
@media(pointer:fine){html body .deal-result .modal-actions button { min-height:30px;padding:4px 7px;font-size:12px; }}


/* The redundant turn/thinking caption does not occupy the Dominoes board. */
html body .domino-status { position:absolute;width:1px;height:1px;min-width:0;min-height:0;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0; }

/* Regular Dominoes Last plays uses the same readable natural-size faces as
   completed tricks. The four compass positions, Pass and unseen state remain. */
@media (min-width:701px) {
 html body:not(.old-school-table):not(.mobile-landscape):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) #app .table #lastTrickDock:has(.last-plays-diamond) {
  --last-plays-card-height:70px;
  --last-plays-card-ratio:var(--hand-card-ratio,calc(5 / 7));
  --last-plays-card-width:calc(var(--last-plays-card-height) * var(--last-plays-card-ratio));
  box-sizing:border-box;width:min(100%,calc(var(--last-plays-card-width) * 3 + 22px));max-width:100%;
 }
 html body.regular-desktop-fit:not(.old-school-table) #app .table #lastTrickDock:has(.last-plays-diamond) {
  --last-plays-card-height:min(70px,var(--regular-fit-hand-height,70px));
 }
 html body:not(.old-school-table):not(.mobile-landscape):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) #app .table #lastTrickDock .last-plays-diamond {
  container-type:inline-size;width:min(100%,calc(var(--last-plays-card-width) * 3 + 8px));height:calc(var(--last-plays-card-height) * 2 + 8px);margin:6px auto 0;transform:none;
 }
 html body:not(.old-school-table):not(.mobile-landscape):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) #app .table #lastTrickDock .last-plays-diamond .last-trick-seat {
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;
 }
 html body:not(.old-school-table):not(.mobile-landscape):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) #app .table #lastTrickDock .last-plays-diamond .last-play>:is(.card,.last-pass) {
  box-sizing:border-box;container-type:inline-size;display:block;width:min(var(--last-plays-card-width),calc((100cqw - 8px) / 3));height:auto;aspect-ratio:var(--last-plays-card-ratio);margin:0;background-size:contain;
 }
 html body:not(.old-school-table):not(.mobile-landscape):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) #app .table #lastTrickDock .last-plays-diamond .last-play>.last-pass { display:grid;place-items:center; }
 html body:not(.old-school-table):not(.mobile-landscape):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) #app .table #lastTrickDock .last-plays-diamond .last-play .corner { font-size:27cqw;line-height:1;left:7cqw;top:6cqw; }
 html body:not(.old-school-table):not(.mobile-landscape):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) #app .table #lastTrickDock .last-plays-diamond .last-play .center-suit { font-size:60cqw; }
 html body.easy-read-cards:not(.old-school-table):not(.mobile-landscape):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) #app .table #lastTrickDock .last-plays-diamond .last-play .corner { font-size:38cqw; }
}
@media (min-width:701px) and (max-height:550px) {
 html body.regular-desktop-fit:not(.old-school-table) #app .table #lastTrickDock:has(.last-plays-diamond) { --last-plays-card-height:min(46px,var(--regular-fit-hand-height,46px)); }
}

/* Compact games retain one navigation row and a call beside your details. */
html body.has-global-site-header.compact-game-toolbar #app #tableSiteHeader { display:none; }
html body.has-global-site-header.compact-game-toolbar { --global-site-header-height:0px!important; }
body.has-global-site-header.compact-game-toolbar #app>.toolbar #gameNavigation { display:block; }
.hand-heading { display:contents; }
#mobileContract { display:none; }
.mobile-landscape:not(.mobile-kibitz) .hand-heading {
 display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:0 6px;
}
.mobile-landscape:not(.mobile-kibitz) .hand-heading #youChip { min-width:0; }
.mobile-landscape:not(.mobile-kibitz) .hand-heading .name { overflow-wrap:anywhere;min-width:0; }
.mobile-landscape:not(.mobile-kibitz) .hand-heading #youBidBadge {
 position:static;grid-column:1/-1;justify-content:flex-start;
}
.mobile-landscape:not(.mobile-kibitz) .hand-heading #youBidBadge:has(>.bid-call:only-child) { display:none; }
.mobile-landscape:not(.mobile-kibitz) .south.has-hand-tools .hand-heading { padding-right:90px; }
.mobile-landscape:not(.mobile-kibitz) .south.has-hand-tools .hand-heading #youChip { padding-right:0; }
.mobile-landscape:not(.mobile-kibitz) #mobileContract:not([hidden]) {
 display:block;margin-left:auto;font:700 12px/18px Arial,sans-serif;
 color:var(--ink);text-align:right;white-space:nowrap;
}
#mobileContract[hidden] { display:none; }

#mobileMenu #tableSiteAccount { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;justify-content:start;gap:6px;width:100%;margin:10px 0 0; }
#mobileMenu .site-account [hidden] { display:none!important; }
#mobileMenu #tableSiteAccount :is(button,.site-account-menu>summary) { display:flex;align-items:center;justify-content:center;width:100%;max-width:none;min-height:40px;padding:8px;border:1px solid var(--line);border-radius:4px;background:var(--control);color:var(--ink);font:13px/1.4 Arial,sans-serif;cursor:pointer; }
#mobileMenu #tableSiteAccount .site-account-menu { min-width:0; }
#mobileMenu #tableSiteAccount .site-account-menu>summary { list-style:none; }
#mobileMenu #tableSiteAccount .site-account-menu>summary::-webkit-details-marker { display:none; }
#mobileMenu #tableSiteAccount .site-account-popover { display:grid;gap:4px;margin:6px 0 0; }
#mobileMenu #tableSiteAccount .site-account-popover :is(a,button) { display:block;width:100%;max-width:none;padding:8px;text-align:left;font:13px/1.4 Arial,sans-serif;overflow-wrap:anywhere; }
#mobileMenu #tableSiteAccount .table-style-status { grid-column:1/-1; }


/* The game alone owns Retro; both appearances reuse the same compact actions. */
html body.old-school-table.compact-game-toolbar #app>.toolbar {
 display:flex!important;flex-wrap:nowrap!important;height:43px!important;
 min-width:0!important;max-width:100%!important;padding:3px 8px!important;
}
html body.old-school-table.compact-game-toolbar #app>.toolbar>#toolbarActions { display:none!important; }
html body.old-school-table.compact-game-toolbar #app>.toolbar>#gameNavigation { display:block!important; }
html body.old-school-table.compact-game-toolbar #app>.toolbar>#gameNavigation a[href] { display:block!important; }
html body.compact-game-toolbar #app>.toolbar #compactGameActions>#tableStyleToggle:not([hidden]) {
 display:inline-block!important;flex:0 0 auto;min-height:36px;white-space:nowrap;
}
html body.old-school-table.compact-game-toolbar #app>.toolbar #compactGameActions>#oldSchoolInfoBtn {
 display:inline-block!important;flex:0 0 auto;min-height:36px;font:13px/1.2 Arial,sans-serif;
}
@media(max-width:600px){
 html body.compact-game-toolbar #app>.toolbar { gap:3px;padding-inline:5px; }
 html body.compact-game-toolbar #app>.toolbar #tableStyleToggle { font-size:0!important;padding-inline:6px; }
 html body.compact-game-toolbar #app>.toolbar #tableStyleToggle::after { content:'Retro';font:12px/1.2 Arial,sans-serif; }
 html body.old-school-table.compact-game-toolbar #app>.toolbar #compactGameActions>#oldSchoolInfoBtn { font-size:0!important;padding-inline:6px; }
 html body.old-school-table.compact-game-toolbar #app>.toolbar #compactGameActions>#oldSchoolInfoBtn::after { content:'Scores';font:12px/1.2 Arial,sans-serif; }
}
@media(max-width:420px){
 html body.compact-game-toolbar #app>.toolbar .game-navigation-label { display:none; }
 html body.compact-game-toolbar #app>.toolbar .kibitz-navigation-short { display:inline; }
 html body.compact-game-toolbar #app>.toolbar .game-navigation>summary { gap:4px;padding-inline:6px;font-size:12px; }
 html body.compact-game-toolbar #app>.toolbar #mobileFullscreenBtn { flex-basis:32px;padding-inline:3px; }
 html body.compact-game-toolbar #app>.toolbar :is(#mobileMenuBtn,#mobileChatBtn) { font-size:12px;padding-inline:6px; }
}

/* One landscape heading row: public Duplicate context belongs beside the call. */
@media(orientation:landscape), (min-width:601px) and (min-height:421px){
 body.mobile-landscape:not(.mobile-kibitz):not(.mobile-hand-review) .hand-heading {
  display:flex;flex-wrap:wrap;align-items:center;gap:0 7px;
 }
 body.mobile-landscape:not(.mobile-kibitz):not(.mobile-hand-review) .hand-heading #youChip { flex:1 1 auto;order:0; }
 body.mobile-landscape:not(.mobile-kibitz):not(.mobile-hand-review) .hand-heading #mobileContract { order:1;margin-left:auto; }
 body.mobile-landscape:not(.mobile-kibitz):not(.mobile-hand-review) .hand-heading #youBidBadge { display:contents; }
 body.mobile-landscape:not(.mobile-kibitz):not(.mobile-hand-review) .hand-heading #youBidBadge>.duplicate-calls { order:2;flex:0 0 auto;text-align:left;white-space:nowrap; }
 body.mobile-landscape:not(.mobile-kibitz):not(.mobile-hand-review) .hand-heading #youBidBadge>.duplicate-deal { order:3;flex:0 0 auto;white-space:nowrap; }
 body.mobile-landscape:not(.mobile-kibitz):not(.mobile-hand-review) .hand-heading #youBidBadge>.bid-owed { order:4; }
 body.mobile-landscape:not(.mobile-kibitz):not(.mobile-hand-review) .hand-heading .duplicate-calls abbr { margin-block:0; }

 /* A self-contained diamond sits above the hand, without an empty left rail. */
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz) #app .table {
  --last-width:150px;--compact-last-height:56px;
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz) #app .table:not(:has(#lastTrickDock .last-trick-diamond)),
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz) #app .table:has(#lastTrickDock.hidden) { --last-width:0px; }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz) #app .table #lastTrickDock {
  top:auto;bottom:calc(var(--hand-height) + 6px);left:5px;width:var(--last-width);
  height:auto;max-height:calc(100% - var(--hand-height) - 10px);padding:3px;
  border:0;overflow:auto;--last-trick-card-height:var(--compact-last-height);--last-trick-scale:1;
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz) #app .table #lastTrickDock:not(:has(.last-trick-diamond)),
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz) #app .table #lastTrickDock.hidden { display:none!important; }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz) #app .table #lastTrickDock .panel-heading { font:11px/1.15 Arial,sans-serif; }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz) #app .table #lastTrickDock .panel-heading span { overflow-wrap:anywhere; }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz) #app .table #lastTrickDock .last-trick-diamond {
  width:calc(3 * var(--compact-last-height) * var(--hand-card-ratio,.718447) + 8px);
  max-width:100%;height:calc(2 * var(--compact-last-height) + 8px);margin:3px auto 0;transform:none;
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz) #app .table #lastTrickDock .last-play>:is(.card,.last-pass) {
  display:block;width:calc(var(--compact-last-height) * var(--hand-card-ratio,.718447));
  height:var(--compact-last-height);margin:0;container-type:inline-size;
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz) #app .table #lastTrickDock .last-pass { display:grid;place-items:center;font-size:11px; }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz) #app .table #lastTrickDock .last-trick-seat {
  position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz) #app .table #lastTrickDock .last-play .corner { font-size:27cqw;line-height:1;left:7cqw;top:6cqw; }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz) #app .table>.player.north { left:calc(50% + var(--last-width) / 2); }
}
@media(orientation:landscape) and (max-height:350px){
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz) #app .table { --compact-last-height:42px;--last-width:112px; }
}

.compact-game-actions:empty { display:none; }
.compact-game-toolbar .compact-game-actions { display:flex;flex:0 0 auto;gap:5px;align-items:center; }
@media(max-width:600px){.compact-game-toolbar .compact-game-actions { gap:3px; }}

/* Tablet-height play uses the whole board symmetrically. Last trick stays in
   the bottom-left corner above South instead of reserving a left-hand rail. */
@media(min-width:601px) and (min-height:421px){
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded) #app .table {
  --compact-current-height:clamp(88px,calc((100dvh - var(--safe-top) - var(--safe-bottom) - var(--hand-height) - 113px) / 2),116px);
  --compact-current-width:calc(var(--compact-current-height) * var(--hand-card-ratio,.718447));
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded) #app .table>.player.north { left:50%; }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded) #app .table .player.west { left:6px;right:auto; }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded) #app .table .player.east { right:6px;left:auto; }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded) #app .table .play-center:not(:has(#domino:not(.hidden))):not(:has(.modal-shade:not(.hidden))) {
  inset:54px 150px var(--hand-height);
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded) #app .table .middle:not(:has(.completed-table)) {
  width:min(100%,calc(3 * var(--compact-current-width) + 16px));height:calc(2 * var(--compact-current-height) + 8px);min-height:0;
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded) #app .table .middle .played-slot,
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded) #app .table .middle .played-slot>.card {
  width:var(--compact-current-width);height:var(--compact-current-height);
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded) #app .table .played-slot .corner { font-size:24px;line-height:1; }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded) #app .table .played-slot .center-suit { display:flex;font-size:48px; }
}

/* Keep bidding together at its actual content height, centred in the field.
   Short screens scroll this same panel; no action moves to a distant edge. */
html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded) #app .table .modal:has(.double-chooser) {
 width:min(720px,100%);height:auto;min-height:0;max-height:100%;overflow-y:auto;align-self:center;
}
html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded) #app .table .double-chooser {
 height:auto;grid-template-rows:none;grid-auto-rows:auto;align-content:start;
}

/* Desktop already shows the declarer's remaining calls beside the contract. */
html body:not(.mobile-landscape):not(.mobile-kibitz):not(.replay-loaded) #app .table .duplicate-calls { display:none!important; }

/* Compact seated tricks use the available field, with one native card size
   for all four seats. Landscape phones and tablets share the same geometry. */
@media(orientation:landscape), (min-width:601px) and (min-height:421px){
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):not(.online-kibitzing) #app .table .play-center:not(:has(#domino:not(.hidden))):not(:has(.modal-shade:not(.hidden))) {
  top:54px;bottom:var(--hand-height);container-type:size;
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) #app .table .play-center:not(:has(#domino:not(.hidden))):not(:has(.modal-shade:not(.hidden)))>.middle:not(:has(.completed-table)) {
  --compact-trick-gap:clamp(12px,calc(100cqh - 155px),20px);
  --compact-trick-breathing:clamp(0px,calc(100cqh - 180px),12px);
  --compact-trick-card-height:min(108px,calc((100cqh - var(--compact-trick-gap) - var(--compact-trick-breathing)) / 2),calc((100cqw - 16px) / 3 / var(--hand-card-ratio,.718447)));
  --compact-trick-card-width:calc(var(--compact-trick-card-height) * var(--hand-card-ratio,.718447));
  width:calc(3 * var(--compact-trick-card-width) + 16px);height:calc(2 * var(--compact-trick-card-height) + var(--compact-trick-gap));
  min-width:0;min-height:0;max-width:100%;max-height:100%;top:50%;left:50%;transform:translate(-50%,-50%);
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) #app .table .play-center:not(:has(#domino:not(.hidden))):not(:has(.modal-shade:not(.hidden)))>.middle .played-slot,
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) #app .table .play-center:not(:has(#domino:not(.hidden))):not(:has(.modal-shade:not(.hidden)))>.middle .played-slot>.card {
  width:var(--compact-trick-card-width);height:var(--compact-trick-card-height);min-width:0;min-height:0;margin:0;
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) #app .table .play-center:not(:has(#domino:not(.hidden))):not(:has(.modal-shade:not(.hidden)))>.middle .slot-N { top:0;bottom:auto;left:50%;right:auto;transform:translateX(-50%); }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) #app .table .play-center:not(:has(#domino:not(.hidden))):not(:has(.modal-shade:not(.hidden)))>.middle .slot-S { bottom:0;top:auto;left:50%;right:auto;transform:translateX(-50%); }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) #app .table .play-center:not(:has(#domino:not(.hidden))):not(:has(.modal-shade:not(.hidden)))>.middle .slot-W { left:0;right:auto;top:50%;bottom:auto;transform:translateY(-50%); }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) #app .table .play-center:not(:has(#domino:not(.hidden))):not(:has(.modal-shade:not(.hidden)))>.middle .slot-E { right:0;left:auto;top:50%;bottom:auto;transform:translateY(-50%); }
}

/* Retro keeps its common settings and public information within one row. */
html body.old-school-table.compact-game-toolbar #app>.toolbar #compactGameActions {
 display:flex;align-items:center;gap:5px;min-width:0;
}
html body.old-school-table.compact-game-toolbar #app>.toolbar #compactGameActions>:is(#site-options,#darkModeToggle,#oldSchoolContractsBtn,#oldSchoolOwedBtn) {
 display:inline-flex!important;align-items:center;justify-content:center;flex:0 0 auto;
 min-height:36px;max-width:none;padding:6px 9px;white-space:nowrap;font:13px/1.2 Arial,sans-serif;
 border:1px solid var(--line);border-radius:4px;background:var(--control);color:var(--ink);
}
html body.old-school-table.compact-game-toolbar #app>.toolbar #compactGameActions>#darkModeToggle { gap:5px; }
#mobileMenu #mobileActionsSlot:not([hidden]) { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:10px; }
#mobileMenu #mobileActionsSlot[hidden] { display:none!important; }
#mobileMenu #mobileActionsSlot>:is(#toolbarActions,#tableSiteAccount) { grid-column:1/-1; }
#mobileMenu #mobileActionsSlot>:is(button,.site-theme-toggle) {
 display:flex;align-items:center;justify-content:center;gap:5px;min-height:40px;max-width:none;
 padding:8px;border:1px solid var(--line);border-radius:4px;background:var(--control);color:var(--ink);font:13px/1.4 Arial,sans-serif;
}
#mobileMenu #mobileActionsSlot>button[hidden] { display:none!important; }
@media(max-width:1100px){
 html body.old-school-table.compact-game-toolbar #app>.toolbar { gap:4px!important; }
 html body.old-school-table.compact-game-toolbar #app>.toolbar #compactGameActions { gap:4px; }
 html body.old-school-table.compact-game-toolbar #app>.toolbar #compactGameActions>:is(button,#tableStyleToggle) { padding-inline:6px;font-size:12px; }
}

/* Small read-only Retro information sheets reuse public panel content. */
html body.old-school-table #tableInfoPopup {
 position:fixed;inset:51px 12px auto auto;margin:0;width:min(550px,calc(100vw - 24px));
 max-height:calc(100dvh - 63px);padding:0;overflow:hidden;z-index:65;
 border:1px solid var(--site-line);border-radius:5px;box-shadow:var(--shadow);
 background:var(--site-panel);color:var(--site-ink);
 --panel:var(--site-panel);--line:var(--site-line);--ink:var(--site-ink);--muted:var(--site-muted);
 font:14px/1.35 Arial,sans-serif;
}
html body.old-school-table #tableInfoPopup[open] { display:flex;flex-direction:column; }
#tableInfoPopup .table-info-popup-heading { display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px; }
#tableInfoPopupTitle { margin:0;font:700 20px/1.2 Georgia,serif; }
html body.old-school-table #closeTableInfoPopup { flex:none;width:auto;height:auto;min-height:34px;padding:6px 10px;border:1px solid var(--line);border-radius:3px;background:var(--site-soft);color:var(--ink);font:13px/1.2 Arial,sans-serif; }
#tableInfoPopupContent { min-height:0;padding:0 12px 12px;overflow:auto;overscroll-behavior:contain; }
#tableInfoPopupContent table { width:100%;border-collapse:collapse;font:inherit; }
#tableInfoPopupContent :is(th,td) { padding:5px;text-align:center;border-bottom:1px solid var(--line); }
#tableInfoPopupContent p { margin:0; }
/* A panel moved into Menu is no longer the hidden Retro table sidebar. */
html body.old-school-table #mobileMenu #tableInfoPanel {
 display:block!important;position:static;inset:auto;width:auto;max-height:none;overflow:visible;
}

/* Touchscreen laptops can opt into the same tablet board, on this browser. */
html body #app #touchModeToggle[hidden] { display:none!important; }
html body #app #tableSiteAccount>#touchModeToggle:not([hidden]),
html body.compact-game-toolbar #app>.toolbar #compactGameActions>#touchModeToggle:not([hidden]) {
 display:inline-flex!important;align-items:center;justify-content:center;flex:0 0 auto;
 min-height:36px;max-width:none;padding:6px 9px;white-space:nowrap;font:13px/1.2 Arial,sans-serif;
 border:1px solid var(--line);border-radius:4px;background:var(--control);color:var(--ink);
}
html body #app #touchModeToggle[aria-pressed="true"] { border-color:var(--gold);background:var(--active); }

/* The same native kibitz row follows table chat into the Retro game menu. */
html body.old-school-table #mobileMenu #chatPanel>#kibitzControls:not(.hidden) {
 position:static!important;inset:auto!important;transform:none!important;visibility:visible!important;
 display:flex!important;flex-wrap:wrap!important;align-items:center;gap:5px;width:100%!important;
 max-width:100%!important;margin:0 0 8px!important;font:13px/1.3 Arial,sans-serif;
}
html body.old-school-table #mobileMenu #kibitzControls .kibitz-view-buttons { display:flex;flex-wrap:wrap;gap:3px; }
html body.old-school-table #mobileMenu #kibitzControls :is(button,summary) { min-height:36px; }

/* Retro reading proportions follow card size, while native actions keep their state. */
html body.retro-playground.old-school-table #modal:has(.retro-double-chooser,.retro-call-chooser){
 width:min(var(--retro-playground-choice-width,320px),100%);
 max-height:var(--retro-playground-choice-height,217px)!important;overflow-y:auto!important;
 font-size:max(12px,calc(14px * var(--retro-playground-font-unit,1)));
}
html body.retro-playground.old-school-table .retro-double-chooser :is(.double-diamond,.double-actions){max-width:none;width:100%}
html body.retro-playground.old-school-table .retro-double-chooser .double-diamond{gap:calc(6px * var(--retro-playground-font-unit,1))}
html body.retro-playground.old-school-table .retro-double-chooser .double-target{
 min-height:max(40px,calc(44px * var(--retro-playground-font-unit,1)));
 gap:calc(2px * var(--retro-playground-font-unit,1));
}
html body.retro-playground.old-school-table .retro-double-chooser .double-name{
 font-size:max(12px,calc(14px * var(--retro-playground-font-unit,1)));
}
html body.retro-playground.old-school-table .retro-double-chooser .double-target small,
html body.retro-playground.old-school-table .retro-double-chooser :is(.selection-summary,.double-note){
 font-size:max(12px,calc(12px * var(--retro-playground-font-unit,1)));
}
html body.retro-playground.old-school-table .retro-double-chooser .double-actions button,
html body.retro-playground.old-school-table .retro-call-chooser :is(.choice,.modal-actions button){
 min-height:max(32px,calc(36px * var(--retro-playground-font-unit,1)));
 font-size:max(12px,calc(14px * var(--retro-playground-font-unit,1)));
}
html body.retro-playground.old-school-table .retro-call-chooser h2{
 font-size:calc(18px * var(--retro-playground-font-unit,1));
}
html body.retro-playground.old-school-table .table .old-school-last-pass{
 font-size:max(12px,calc(16px * var(--retro-playground-font-unit,1)))!important;
}

/* The clipped native debt remains accessible alongside Retro's visual inline count. */
html body.retro-playground.old-school-table .table .bid-badges:has(.bid-owed){display:flex!important}

/* During doubling, the dealer's native call and choices follow their measured name. */
.retro-playground-call{display:none}
html body.retro-playground.old-school-table .table .bid-badges:has(.bid-call){display:flex!important}
html body.retro-playground.old-school-table .table .name-line:has(.retro-playground-call){
 flex-wrap:wrap!important;row-gap:5px!important;
}
html body.retro-playground.old-school-table .table .name-line .retro-playground-call{
 display:block;flex-basis:100%;min-width:0;max-width:100%;
 font-size:max(12px,calc(16px * var(--retro-playground-font-unit,1)));line-height:1.2;color:inherit;
}
html body.retro-playground.old-school-table .table .retro-playground-call .call-options{
 display:inline;font:inherit;color:inherit;white-space:normal;
}

/* Roomy Touch tables use the available hand width and a compass-shaped field.
   Short landscape phones and narrow portrait screens retain their own layout. */
@media(min-width:701px) and (min-height:621px){
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) #app .table {
  --touch-field-top:76px;
  --touch-hand-card-height:min(clamp(96px,calc((100dvh - var(--safe-top) - var(--safe-bottom) - 150px) * .18),150px),calc((100vw - var(--safe-left) - var(--safe-right) - 48px) / 7 / var(--hand-card-ratio,calc(62 / 70))));
  --touch-hand-card-width:calc(var(--touch-hand-card-height) * var(--hand-card-ratio,calc(62 / 70)));
  --hand-height:calc(var(--touch-hand-card-height) + 46px + var(--compact-heading-extra,0px));
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) #app .table #hand {
  display:flex;align-items:flex-end;justify-content:center;container-type:inline-size;
  width:calc(100% - 24px);max-width:none;height:calc(var(--touch-hand-card-height) + 8px);min-height:calc(var(--touch-hand-card-height) + 8px);padding:6px 0 2px;
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) #app .table #hand .card {
  width:var(--touch-hand-card-width);height:var(--touch-hand-card-height);flex:0 0 auto;margin:0;
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) #app .table #hand .card+.card {
  margin-left:calc(min(var(--touch-hand-card-width),(100cqw - var(--touch-hand-card-width)) / 12) - var(--touch-hand-card-width));
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) #app .table #hand .corner {
  font-size:clamp(24px,calc(var(--touch-hand-card-height) * .26),36px);line-height:1;left:5px;top:5px;
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):not(.online-kibitzing) #app .table:not(:has(#domino:not(.hidden))) .player:is(.west,.east) {
  top:calc((100% - var(--hand-height) + var(--touch-field-top)) / 2);transform:translateY(-50%);max-width:min(220px,20vw);
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):not(.online-kibitzing) #app .table:not(:has(#domino:not(.hidden))):has(#lastTrickDock:not(.hidden) .last-trick-diamond) .player:is(.west,.east) {
  top:min(calc((100% - var(--hand-height) + var(--touch-field-top)) / 2),calc(100% - var(--hand-height) - 206px));
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):not(.online-kibitzing) #app .table .play-center:not(:has(#domino:not(.hidden))):not(:has(.modal-shade:not(.hidden))) {
  top:var(--touch-field-top);
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):not(.online-kibitzing) #app .table .player .name { font-size:16px; }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch):not(.easy-read-cards)[data-deck-style="classic"] #app .table #hand .center-suit {
  display:flex;font-size:calc(var(--touch-hand-card-height) * .55);
 }
}

/* The hand and current trick share one face size and readable typography.
   Space around each played face keeps the four-seat diamond clear. */
@media(min-width:701px) and (min-height:621px){
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) #app .table:not(:has(#domino:not(.hidden))) {
  --equal-card-ratio:var(--hand-card-ratio,calc(74 / 103));
  --equal-card-height:min(124px,clamp(96px,calc((100dvh - var(--safe-top) - var(--safe-bottom) - 150px) * .18),150px),calc((100vw - var(--safe-left) - var(--safe-right) - 48px) / 7 / var(--equal-card-ratio)));
  --touch-hand-card-height:var(--equal-card-height);
  --touch-hand-card-width:calc(var(--equal-card-height) * var(--equal-card-ratio));
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) #app .table:not(:has(#domino:not(.hidden))) .play-center:not(:has(.modal-shade:not(.hidden)))>.middle:not(:has(.completed-table)) {
  --compact-trick-card-height:var(--equal-card-height);
  --compact-trick-card-width:var(--touch-hand-card-width);
  --equal-slot-height:calc(var(--equal-card-height) + 36px);
  width:calc(3 * var(--touch-hand-card-width) + 32px);height:calc(2 * var(--equal-slot-height) + 20px);
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) #app .table:not(:has(#domino:not(.hidden))) .play-center:not(:has(.modal-shade:not(.hidden)))>.middle .played-slot {
  width:var(--touch-hand-card-width);height:var(--equal-slot-height);
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):is(:not(.online-kibitzing),.regular-watch) #app .table:not(:has(#domino:not(.hidden))) .play-center:not(:has(.modal-shade:not(.hidden)))>.middle .played-slot>.card {
  width:var(--touch-hand-card-width);height:var(--equal-card-height);
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):not(.online-kibitzing) #app .table:not(:has(#domino:not(.hidden))) :is(#hand,.middle) .card>.corner {
  font:700 clamp(20px,calc(var(--equal-card-height) * .22),30px)/1 Georgia,'Times New Roman',serif;left:5px;top:5px;
 }
 html body.mobile-landscape.easy-read-cards:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):not(.online-kibitzing) #app .table:not(:has(#domino:not(.hidden))) :is(#hand,.middle) .card>.corner {
  font-family:Arial,Helvetica,sans-serif;font-weight:800;
 }
 html body.mobile-landscape:not(.easy-read-cards):not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):not(.online-kibitzing) #app .table:not(:has(#domino:not(.hidden))) :is(#hand,.middle) .card>.center-suit {
  display:flex;font-size:calc(var(--equal-card-height) * .42);padding-top:calc(var(--equal-card-height) * .24);
 }
 html body.mobile-landscape[data-deck-style="classic"]:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):not(.online-kibitzing) #app .table:not(:has(#domino:not(.hidden))) :is(#hand,.middle) .card {
  border-radius:5px;
 }
}

/* A roomy doubling chooser keeps the existing player information around it.
   Its shade remains an ordinary input surface inside this central region. */
@media(min-width:1001px) and (min-height:621px){
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):not(.online-kibitzing) #app .table .play-center:has(>#modalShade:not(.hidden)>.modal>.double-chooser) {
  inset:var(--touch-field-top,76px) clamp(160px,calc(20vw + 16px),236px) var(--hand-height);
 }
 html body.mobile-landscape:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-loaded):not(.online-kibitzing) #app .table #modalShade:has(>.modal>.double-chooser) {
  background:transparent;
 }
}


/* Regular watching shares deployed play's board and face-size policy. Only
   opponent content and its intrinsic space are added here. The controller
   measures South after native sizing and supplies --watch-face-*; changing
   the revealed hand never selects a different layout or card percentage. */
html body.regular-watch:not(.old-school-table):not(.replay-loaded) #app .table {
 --watch-suit-step:max(20px,calc(var(--watch-corner-height,36px) + var(--watch-corner-top,4px) + 4px));
}
/* The original artwork needs 31 native pixels to expose its rank and suit.
   Tighten only the vertical gap between suit rows around that corner. */
html body.regular-watch[data-deck-style="barbu-original"]:not(.old-school-table):not(.replay-loaded) #app .table {
 --watch-suit-step:calc(var(--watch-face-height,103px) * 31 / 97);
}
html body.regular-watch:not(.old-school-table):not(.replay-loaded) #app .table .kibitz-hand {
 container-type:inline-size;min-width:0;width:100%;padding-top:3px;gap:0;
}
html body.regular-watch:not(.old-school-table):not(.replay-loaded) #app .table .north :is(.kibitz-hand,.opponent-hand) {
 display:flex;flex-wrap:nowrap;justify-content:center;align-items:flex-end;
 min-height:var(--watch-face-height,103px);padding-top:3px;
}
html body.regular-watch:not(.old-school-table):not(.replay-loaded) #app .table :is(.west,.east) :is(.kibitz-hand,.opponent-hand) {
 min-height:calc(var(--watch-face-height,103px) + 3 * var(--watch-suit-step));padding-top:3px;
}
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table :is(.west,.east) :is(.kibitz-hand,.opponent-hand) { min-height:0; }
html body.regular-watch:not(.old-school-table):not(.replay-loaded) #app .table .kibitz-hand .card {
 width:var(--watch-face-width,74px);height:var(--watch-face-height,103px);
 flex:0 0 var(--watch-face-width,74px);min-width:0;margin:0;
}
html body.regular-watch:not(.old-school-table):not(.replay-loaded) #app .table .north .kibitz-hand>.card+.card {
 margin-left:calc(min(var(--card-spacing,38px),(100cqw - var(--watch-face-width,74px)) / 12) - var(--watch-face-width,74px));
}
html body.regular-watch:not(.old-school-table):not(.replay-loaded) #app .table .kibitz-side-hand { display:block; }
html body.regular-watch:not(.old-school-table):not(.replay-loaded) #app .table .kibitz-suit-row {
 position:relative;z-index:var(--suit-layer);display:flex;justify-content:flex-start;
 width:100%;height:var(--watch-face-height,103px);
}
html body.regular-watch:not(.old-school-table):not(.replay-loaded) #app .table .east .kibitz-suit-row { justify-content:flex-end; }
html body.regular-watch:not(.old-school-table):not(.replay-loaded) #app .table .kibitz-suit-row+.kibitz-suit-row {
 margin-top:calc(var(--watch-suit-step) - var(--watch-face-height,103px));
}
html body.regular-watch:not(.old-school-table):not(.replay-loaded) #app .table .kibitz-suit-row>.card+.card {
 margin-left:calc(min(var(--card-spacing,38px),(100cqw - var(--watch-face-width,74px)) / var(--suit-gaps,12)) - var(--watch-face-width,74px));
}
html body.regular-watch:not(.old-school-table):not(.replay-loaded) #app .table .kibitz-hand .corner {
 font-family:var(--watch-corner-family,Arial,sans-serif);font-weight:var(--watch-corner-weight,700);
 font-size:var(--watch-corner-size,18px);line-height:var(--watch-corner-line-height,1);
 left:var(--watch-corner-left,5px);top:var(--watch-corner-top,4px);
}
html body.regular-watch:not(.old-school-table):not(.replay-loaded) #app .table .kibitz-hand .center-suit { font-size:var(--watch-center-size,38px); }

/* Keep the desktop compass inside the measured play viewport. Side players
   use their own column space between native details and auxiliary panels;
   their revealed suits must not enlarge the center column's grid rows. */
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table {
 height:var(--regular-fit-height,calc(100dvh - 112px));min-height:0;
}
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table>.side-panel .table-info-panel {
 position:static;max-height:none;
}
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table>:is(.top-left,.side-panel) { align-self:start; }
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table>:is(.west-column,.east-column) {
 grid-row:1/-1;display:flex;flex-direction:column;justify-content:center;box-sizing:border-box;min-height:0;pointer-events:none;
}
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table>.west-column {
 grid-column:1;padding-top:var(--watch-west-top,140px);padding-bottom:var(--watch-west-bottom,140px);
}
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table>.east-column {
 grid-column:3;padding-top:var(--watch-east-top,140px);padding-bottom:var(--watch-east-bottom,140px);
}
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table>:is(.west-column,.east-column)>.player {
 flex:0 0 auto;box-sizing:border-box;min-height:0;width:100%;pointer-events:auto;
}
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table>#lastTrickDock { grid-area:1/1/-1/2;align-self:end; }
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table>.bottom-right { grid-area:1/3/-1/4;align-self:end; }
html body.regular-watch.regular-desktop-fit.compact-game-toolbar:not(.old-school-table):not(.replay-loaded) #app .table { gap:3px 8px;padding-block:4px; }
html body.regular-watch.regular-desktop-fit.compact-game-toolbar:not(.old-school-table):not(.replay-loaded) #app .table :is(.north,.south) .bid-badges { min-height:0;margin-block:0; }
html body.regular-watch.regular-desktop-fit.compact-game-toolbar:not(.old-school-table):not(.replay-loaded) #app .table .hand-hint { display:none; }
html body.regular-watch.regular-desktop-fit.compact-game-toolbar:not(.old-school-table):not(.replay-loaded) #app .table #chatNotice {
 position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;
}
html body.regular-watch.regular-desktop-fit.compact-game-toolbar:not(.old-school-table):not(.replay-loaded) #app .table .player:is(.west,.east) :is(.name-line,.bid-badges) { min-height:0; }
/* Revealed hands extend Regular's measured grid. Side seats share one band;
   wide boards use three horizontal hand lanes at the native card size. */
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .app { max-width:none; }
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table.watch-horizontal-sides {
 grid-template-columns:repeat(3,minmax(0,1fr));
}
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table>:is(.west-column,.east-column) {
 padding-top:max(var(--watch-west-top,140px),var(--watch-east-top,140px));
 padding-bottom:max(var(--watch-west-bottom,140px),var(--watch-east-bottom,140px));
}
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table>:is(.west-column,.east-column)>.player {
 display:grid;grid-template-rows:var(--watch-side-name-line-height,auto) var(--watch-side-bid-badges-height,auto) auto;row-gap:2px;
}
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table .player:is(.west,.east)>:is(.name-line,.bid-badges) {
 align-self:start;margin-block:0;
}
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table .player:is(.west,.east)>.name-line { grid-row:1; }
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table .player:is(.west,.east)>.bid-badges { grid-row:2; }
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table .player:is(.west,.east)>:is(.kibitz-hand,.opponent-hand) {
 grid-row:3;height:calc(var(--watch-face-height,103px) + 3 * var(--watch-suit-step) + 3px);min-height:0;
}
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table.watch-horizontal-sides .player:is(.west,.east)>:is(.kibitz-hand,.opponent-hand) {
 height:calc(var(--watch-face-height,103px) + 3px);
}
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table.watch-horizontal-sides .kibitz-side-hand {
 display:flex;flex-wrap:nowrap;justify-content:flex-start;align-items:flex-end;
}
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table.watch-horizontal-sides .east .kibitz-side-hand { justify-content:flex-end; }
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table.watch-horizontal-sides .kibitz-suit-row { display:contents; }
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table.watch-horizontal-sides .kibitz-suit-row>.card {
 margin-left:calc(min(var(--card-spacing,38px),(100cqw - var(--watch-face-width,74px)) / 12) - var(--watch-face-width,74px));
}
html body.regular-watch.regular-desktop-fit:not(.old-school-table):not(.replay-loaded) #app .table.watch-horizontal-sides .kibitz-suit-row:first-child>.card:first-child { margin-left:0; }

/* Below the desktop width budget, keep one explicit compass arrangement.
   South and played cards still use native compact play sizing. The field's
   reservation accommodates those same faces; normal page scrolling handles
   a shorter viewport. Information remains in the existing native Menu. */
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .app {
 max-width:none;padding:4px 6px;margin:0 auto;
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table {
 --watch-field-height:max(180px,calc(2 * var(--watch-face-height,70px) + 92px));
 display:grid;grid-template-columns:minmax(0,1fr) minmax(120px,1.6fr) minmax(0,1fr);
 grid-template-rows:auto max-content minmax(var(--watch-field-height),1fr) max-content;
 height:auto;min-height:max(0px,calc(var(--watch-viewport-height,calc(100dvh - 51px - var(--safe-top))) - var(--safe-bottom)));
 max-height:none;align-content:stretch;gap:5px 6px;padding:5px;border:1px solid var(--line);border-radius:12px;
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table>.top-left {
 display:block;grid-area:1/1/2/-1;min-width:0;
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table>.top-left>:not(#kibitzControls) { display:none; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table #kibitzControls { margin:0; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table #kibitzControls .kibitz-mobile-contract { display:block; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table>.west-column,
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table>.east-column { display:contents; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player:is(.north,.south,.west,.east) {
 position:static;inset:auto;transform:none;display:block;width:100%;max-width:none;
 height:auto;min-height:0;margin:0;padding:3px;align-self:center;
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player.north { grid-area:2/1/3/-1; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player.west { grid-area:3/1; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player.east { grid-area:3/3; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player.south {
 grid-area:4/1/5/-1;border-radius:8px;border-top:0;
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player .opponent-hand { display:flex; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player .name-line { min-height:20px; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .north :is(.name-line,.bid-badges) { justify-content:center; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .play-center {
 position:relative;inset:auto;grid-area:3/2;min-width:0;min-height:0;
 height:var(--watch-field-height);margin:0;padding:0;container-type:size;
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .middle:not(:has(.completed-table)) { top:50%;left:50%; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .play-center>.domino-board {
 position:absolute;inset:0;width:100%;height:100%;min-height:0;display:flex;flex-direction:column;justify-content:center;
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .domino-row {
 grid-template-columns:16px minmax(0,1fr);min-width:0;gap:3px;
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .domino-cards { min-width:0; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table>.side-panel,
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table>.bottom-right,
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table>#lastTrickDock { display:none!important; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .modal-shade {
 position:fixed;inset:calc(var(--safe-top) + 43px) var(--safe-right) var(--safe-bottom) var(--safe-left);
 min-height:0;height:auto;width:auto;padding:6px;overflow:auto;z-index:70;background:rgba(0,0,0,.55);
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .modal { width:min(720px,100%);max-height:100%;overflow:auto; }
@media(max-width:600px){
 html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table {
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  grid-template-rows:auto max-content max-content minmax(var(--watch-field-height),1fr) max-content;
 }
 html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player.west { grid-area:3/1; }
 html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player.east { grid-area:3/2; }
 html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .play-center { grid-area:4/1/5/-1; }
 html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player.south { grid-area:5/1/6/-1; }
}
/* Menu uses the original Last trick node, restored to its board anchor when
   closed. The inline-only rule above never hides the relocated node. */
html body.regular-watch.compact-game-toolbar #mobileMenu #lastTrickDock:not(.hidden) {
 display:block!important;position:static;inset:auto;width:100%;height:auto;max-width:none;
 padding:6px;border:1px solid var(--line);border-radius:6px;background:var(--panel);
}
html body.regular-watch.compact-game-toolbar #mobileMenu #lastTrickDock .last-trick-diamond { margin:6px auto;transform:none; }
html body.regular-watch.compact-game-toolbar #mobileMenu #lastTrickDock.hidden { display:none!important; }
/* Keep the original status text and its Reconnect action visible during an
   error. The measured board top reserves this native banner's actual height. */
html body.regular-watch.mobile-landscape #onlineBar[data-retro-playground-error="true"] { display:block; }

/* Retro observers choose hands from the toolbar, outside the fixed table. */
html body:is(.old-school-table,.regular-watch.mobile-landscape).online-kibitzing #app>.toolbar>#tableKibitzBtn:not([hidden]) { display:block!important;flex:0 0 auto;min-height:32px;padding:4px 8px;font:700 12px/1.2 Arial,sans-serif; }
html body:is(.old-school-table,.regular-watch.mobile-landscape).online-kibitzing #app>.toolbar>#kibitzControls.kibitz-header-controls:not(:popover-open) { display:none!important; }
html body:is(.old-school-table,.regular-watch.mobile-landscape).online-kibitzing #app>.toolbar>#kibitzControls.kibitz-header-controls:popover-open {
 position:fixed!important;inset:var(--kibitz-popup-top,48px) auto auto var(--kibitz-popup-left,8px)!important;
 display:flex!important;align-items:center;gap:5px;flex-wrap:wrap;box-sizing:border-box;
 width:max-content;max-width:calc(100vw - 16px);max-height:calc(100dvh - var(--kibitz-popup-top,48px) - 8px);overflow:auto;
 margin:0!important;padding:8px!important;border:1px solid var(--line)!important;border-radius:7px;
 background:var(--panel)!important;color:var(--ink)!important;box-shadow:var(--shadow);
 font:12px/1.2 Arial,sans-serif!important;
}
html body:is(.old-school-table,.regular-watch.mobile-landscape) #kibitzControls.kibitz-header-controls .kibitz-view-buttons { gap:3px;flex-wrap:wrap; }
html body:is(.old-school-table,.regular-watch.mobile-landscape) #kibitzControls.kibitz-header-controls .kibitz-view-buttons button { min-width:28px!important;min-height:30px!important;padding:4px 6px;font:700 12px/1.2 Arial,sans-serif!important; }
html body:is(.old-school-table,.regular-watch.mobile-landscape) #kibitzControls.kibitz-header-controls .kibitz-view-buttons button[aria-pressed=true] { padding:3px 5px; }

/* Original-site Retro proportions. Native cards and controls remain authoritative. */
html body.retro-playground .table,
html body.retro-playground .table :is(.game-id,.deal-title,.dealer-line,.contract-line,.name-line,.old-school-auction-name,.old-school-auction-response,#chatPanel),
html body.retro-playground .table #gameRulesNotice{font-family:Gelasio,Georgia,serif!important}
html body.retro-playground .table .name-line :is(.name,.retro-playground-count){font-weight:inherit!important}
html body.retro-playground.old-school-table .table .old-school-last-pass{font-size:max(12px,calc(20px * var(--retro-playground-font-unit,1)))!important}
html body.retro-playground.old-school-table .table .name-line .retro-playground-call{font-size:max(12px,calc(16px * var(--retro-playground-font-unit,1)))!important}
html body.retro-playground .table #chatPanel{padding:0!important}
html body.retro-playground .table #chatPanel>.table-chat-heading{min-height:0;font:12px/1.2 Arial,sans-serif}
/* Keep native chat controls and accessible context without painting extra chrome. */
html body.retro-playground .table :is(#chatPanel>.table-chat-heading>b,#chatNotice,#chatMessages time){
 display:block!important;position:absolute!important;inset:auto!important;
 width:1px!important;height:1px!important;min-width:0!important;min-height:0!important;max-width:1px!important;max-height:1px!important;
 padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important;
}
html body.retro-playground .table #chatMessages{margin:0!important;line-height:1.15!important}
html body.retro-playground .table #chatMessages p{margin:0!important}
html body.retro-playground .table #chatForm{gap:0!important;margin:0!important}
html body.retro-playground .table #chatForm :is(#chatInput,#chatSend){height:24px!important;min-height:24px!important;padding:1px 5px!important;border-radius:2px!important;font:14px/1.2 Arial,sans-serif!important}
html body.retro-playground .table #chatInput{width:75%!important}
html body.retro-playground .table #chatSend{width:25%!important}
html body.retro-playground .table #chatNotice{position:static!important;width:100%!important;margin:0!important;font:12px/1.15 Arial,sans-serif!important}

/* At smaller desktop widths the native Menu retains these same controls. */
@media(max-width:1000px){
 html body.retro-playground.old-school-table.compact-game-toolbar #app>.toolbar #compactGameActions>:is(#oldSchoolContractsBtn,#oldSchoolOwedBtn){display:none!important}
}
@media(max-width:700px){
 html body.retro-playground.old-school-table.compact-game-toolbar #app>.toolbar #compactGameActions>:is(#site-options,#darkModeToggle){display:none!important}
}
@media(max-width:380px){
 html body.retro-playground.old-school-table.compact-game-toolbar #app>.toolbar #compactGameActions>#oldSchoolInfoBtn{display:none!important}
}

/* Fixed-position Retro: a bounded reading canvas scrolls without changing regions. */
html body.retro-playground #app>.app { overscroll-behavior-x:contain; }


/* Keep desktop controls in the viewport while its complete board can scroll.
   The extra two pixels reserve the table border as well as its grid tracks. */
html body.regular-desktop-scroll:not(.old-school-table):not(.mobile-landscape):not(.replay-loaded) #app .app {
 min-width:0;overflow-x:auto;
}
html body.regular-desktop-scroll:not(.old-school-table):not(.mobile-landscape):not(.replay-loaded) #app .table {
 min-width:max(calc(var(--regular-fit-min-width,801px) - 12px),calc(336px + 380px * var(--fit-scale,1)));
 min-height:var(--regular-fit-min-height,572px);
}
/* Reserve the full Dominoes field plus its hand-marker gutters before allowing
   the desktop canvas to scroll. Resizing must not shrink the endpoint faces. */
html body.regular-desktop-scroll:not(.old-school-table):not(.mobile-landscape):not(.regular-watch):not(.replay-loaded) #app .table:has(#domino:not(.hidden)) {
 --regular-domino-field-width:calc(420px * var(--fit-scale,1));
 --regular-domino-middle-width:calc(var(--regular-domino-field-width) + 2 * (var(--regular-last-play-width) + 12px));
 grid-template-columns:minmax(138px,1fr) minmax(var(--regular-domino-middle-width),2fr) minmax(166px,1fr);
 min-width:max(calc(var(--regular-fit-min-width,801px) - 12px),calc(336px + var(--regular-domino-middle-width)));
}
html body.regular-desktop-scroll:not(.old-school-table):not(.mobile-landscape):not(.regular-watch):not(.replay-loaded) #app .table:has(#domino:not(.hidden)) #domino .mobile-domino-piles {
 width:var(--regular-domino-field-width);gap:calc(18px * var(--fit-scale,1));
 --domino-overlap:calc(20px * var(--fit-scale,1));
}
html body.regular-desktop-scroll:not(.old-school-table):not(.mobile-landscape):not(.regular-watch):not(.replay-loaded) #app .table:has(#domino:not(.hidden)) #domino :is(.mobile-domino-pile>.card,.mobile-domino-empty) {
 width:calc(100% - var(--domino-overlap));height:100%;
}
html body.regular-desktop-scroll:not(.old-school-table):not(.mobile-landscape):not(.regular-watch):not(.replay-loaded) #app .table:has(#domino:not(.hidden)) .regular-last-play>.card { width:100%;height:100%; }
/* Leave a card-sized lane between the larger North/South public markers. */
html body.regular-desktop-scroll:not(.old-school-table):not(.mobile-landscape):not(.regular-watch):not(.replay-loaded) #app .table:has(#domino:not(.hidden)) {
 --regular-domino-face-width:calc((var(--regular-domino-field-width) - 54px * var(--fit-scale,1)) / 4 - 20px * var(--fit-scale,1));
 --regular-domino-middle-height:calc(2 * var(--regular-last-play-height) + var(--regular-domino-face-width) / var(--hand-card-ratio,.718447) + 24px * var(--fit-scale,1));
 grid-template-rows:auto minmax(var(--regular-domino-middle-height),1fr) auto;
 min-height:calc(var(--regular-fit-min-height,572px) + max(0px,var(--regular-domino-middle-height) - (232px * var(--fit-scale,1) + 10px)));
}
@media(max-width:700px) {
 body.regular-desktop-scroll:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table :is(#lastTrickDock,.replay-last):has(.last-trick-completed) {
  --last-trick-card-height:70px;
  --last-trick-card-ratio:calc(5 / 7);
  --last-trick-diamond-width:calc(var(--last-trick-card-height) * var(--last-trick-card-ratio) * 3 + 8px);
  --last-trick-diamond-height:calc(var(--last-trick-card-height) * 2 + 8px);
  --last-trick-fit-width:calc((100cqw - 8px * var(--last-trick-scale)) / 3);
  --last-trick-scale:var(--desktop-card-scale,1);
  width:min(100%,calc(var(--last-trick-diamond-width) * var(--last-trick-scale) + 14px));
  max-width:none;
 }
 body.regular-desktop-scroll:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table :is(#lastTrickDock,.replay-last):has(.last-trick-completed) .panel-heading { flex-wrap:wrap;gap:2px 6px; }
 body.regular-desktop-scroll:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact):is([data-deck-style="barbu-original"],[data-deck-style="barbu-vector"]) .table :is(#lastTrickDock,.replay-last) { --last-trick-card-ratio:calc(73 / 97); }
 body.regular-desktop-scroll:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact):is([data-deck-style="bridge5"],[data-deck-style="bridge5-four-color"]) .table :is(#lastTrickDock,.replay-last) { --last-trick-card-ratio:calc(9 / 14); }
 body.regular-desktop-scroll:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact)[data-deck-style="vertical2"] .table :is(#lastTrickDock,.replay-last) { --last-trick-card-ratio:calc(2 / 3); }
 body.regular-desktop-scroll:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact)[data-deck-style="modern-white"] .table :is(#lastTrickDock,.replay-last) { --last-trick-card-ratio:calc(14 / 19); }
 body.regular-desktop-scroll:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact)[data-deck-style="french"] .table :is(#lastTrickDock,.replay-last) { --last-trick-card-ratio:calc(338 / 489); }
 body.regular-desktop-scroll:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table :is(#lastTrickDock,.replay-last) .last-trick-completed {
  container-type:inline-size;
  width:min(100%,calc(var(--last-trick-diamond-width) * var(--last-trick-scale)));
  height:calc(var(--last-trick-diamond-height) * var(--last-trick-scale));transform:none;
 }
 body.regular-desktop-scroll:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table :is(#lastTrickDock,.replay-last) .last-trick-completed .last-trick-seat {
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;
 }
 body.regular-desktop-scroll:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table :is(#lastTrickDock,.replay-last) .last-trick-completed .last-play>.card {
  --last-trick-rendered-width:min(calc(var(--last-trick-card-height) * var(--last-trick-card-ratio) * var(--last-trick-scale)),var(--last-trick-fit-width));
  container-type:inline-size;display:block;width:var(--last-trick-rendered-width);height:auto;aspect-ratio:var(--last-trick-card-ratio);margin:0;background-size:contain;
 }
 body.regular-desktop-scroll:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table :is(#lastTrickDock,.replay-last) .last-trick-completed .last-play .corner {
  font-size:27cqw;line-height:1;left:7cqw;top:6cqw;
 }
 body.regular-desktop-scroll:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table :is(#lastTrickDock,.replay-last) .last-trick-completed .last-play .center-suit { font-size:60cqw; }
 body.regular-desktop-scroll.easy-read-cards:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table :is(#lastTrickDock,.replay-last) .last-trick-completed .last-play .corner { font-size:38cqw; }
 body.regular-desktop-scroll:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact):not(.easy-read-cards) .table :is(#lastTrickDock,.replay-last) .last-trick-completed .last-play .center-suit { display:flex; }
 body.regular-desktop-scroll:not(.old-school-table):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) .table :is(#lastTrickDock,.replay-last) .last-trick-completed .last-play.winner { z-index:2; }

 html body.regular-desktop-scroll:not(.old-school-table):not(.mobile-landscape):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) #app .table #lastTrickDock:has(.last-plays-diamond) {
  --last-plays-card-height:70px;
  --last-plays-card-ratio:var(--hand-card-ratio,calc(5 / 7));
  --last-plays-card-width:calc(var(--last-plays-card-height) * var(--last-plays-card-ratio));
  box-sizing:border-box;width:min(100%,calc(var(--last-plays-card-width) * 3 + 22px));max-width:100%;
 }
 html body.regular-desktop-scroll.regular-desktop-fit:not(.old-school-table) #app .table #lastTrickDock:has(.last-plays-diamond) {
  --last-plays-card-height:min(70px,var(--regular-fit-hand-height,70px));
 }
 html body.regular-desktop-scroll:not(.old-school-table):not(.mobile-landscape):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) #app .table #lastTrickDock .last-plays-diamond {
  container-type:inline-size;width:min(100%,calc(var(--last-plays-card-width) * 3 + 8px));height:calc(var(--last-plays-card-height) * 2 + 8px);margin:6px auto 0;transform:none;
 }
 html body.regular-desktop-scroll:not(.old-school-table):not(.mobile-landscape):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) #app .table #lastTrickDock .last-plays-diamond .last-trick-seat {
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;
 }
 html body.regular-desktop-scroll:not(.old-school-table):not(.mobile-landscape):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) #app .table #lastTrickDock .last-plays-diamond .last-play>:is(.card,.last-pass) {
  box-sizing:border-box;container-type:inline-size;display:block;width:min(var(--last-plays-card-width),calc((100cqw - 8px) / 3));height:auto;aspect-ratio:var(--last-plays-card-ratio);margin:0;background-size:contain;
 }
 html body.regular-desktop-scroll:not(.old-school-table):not(.mobile-landscape):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) #app .table #lastTrickDock .last-plays-diamond .last-play>.last-pass { display:grid;place-items:center; }
 html body.regular-desktop-scroll:not(.old-school-table):not(.mobile-landscape):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) #app .table #lastTrickDock .last-plays-diamond .last-play .corner { font-size:27cqw;line-height:1;left:7cqw;top:6cqw; }
 html body.regular-desktop-scroll:not(.old-school-table):not(.mobile-landscape):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) #app .table #lastTrickDock .last-plays-diamond .last-play .center-suit { font-size:60cqw; }
 html body.regular-desktop-scroll.easy-read-cards:not(.old-school-table):not(.mobile-landscape):not(.mobile-hand-review):not(.mobile-kibitz):not(.replay-compact) #app .table #lastTrickDock .last-plays-diamond .last-play .corner { font-size:38cqw; }
}

/* Desktop options remain desktop options while the board scrolls. */
html:has(>body.regular-desktop-scroll) { overflow-x:clip; }
body.regular-desktop-scroll #accountDialog :is(.desktop-card-size,.desktop-card-spacing) { display:block; }
body.regular-desktop-scroll #accountDialog .phone-spacing-note { display:none; }
body.regular-desktop-scroll #accountDialog .card-display-preview { --preview-spacing:var(--card-spacing,38px);--preview-card-scale:var(--desktop-card-scale,1);--preview-card-base-width:74px;--preview-card-base-height:103px; }
body.regular-desktop-scroll #accountDialog .card-display-preview .corner { font-size:calc(18px * var(--preview-card-scale));line-height:calc(17px * var(--preview-card-scale));left:calc(5px * var(--preview-card-scale));top:calc(4px * var(--preview-card-scale)); }
body.regular-desktop-scroll #accountDialog .card-display-preview .center-suit { font-size:calc(38px * var(--preview-card-scale)); }
body.regular-desktop-scroll.easy-read-cards #accountDialog .card-display-preview .corner { font-size:clamp(16px,calc((var(--preview-spacing,var(--card-spacing,38px)) - 7px) * .85),calc(29px * var(--preview-card-scale))); }

/* Mobile observers extend Regular's native compact board and controls. */
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .app { padding:2px 4px;zoom:1; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table {
 --watch-mobile-face-height:clamp(48px,calc((var(--watch-viewport-height,340px) - 100px) / 4),70px);
 --touch-hand-card-height:var(--watch-mobile-face-height);
 --touch-hand-card-width:calc(var(--watch-mobile-face-height) * var(--hand-card-ratio,.718447));
 --watch-field-height:calc(2 * var(--watch-mobile-face-height) + 8px);
 box-sizing:border-box;height:calc(var(--watch-viewport-height,calc(100dvh - 43px)) - var(--safe-bottom) - 4px)!important;min-height:0;margin:0;
 grid-template-columns:minmax(0,1fr) calc(3 * var(--touch-hand-card-width) + 20px) minmax(0,1fr);
 grid-template-rows:max-content minmax(0,1fr) max-content;gap:3px 6px;padding:3px;
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table>.top-left:not(:has(#kibitzControls:not(.hidden))) { display:none; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table>.player.north { grid-area:1/1/2/-1; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player.west { grid-area:2/1; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player.east { grid-area:2/3; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table>.player.south { grid-area:3/1/4/-1; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player {
 box-sizing:border-box;padding:2px;min-width:0;align-self:center;
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .name-line {
 display:flex;flex-wrap:nowrap;gap:3px;min-height:20px;height:20px;margin:0;overflow:hidden;
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .name {
 font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .name-line :is(.metric,.dealer-badge,.bid-badge) {
 flex:0 0 auto;font-size:10px;line-height:14px;padding:0 3px;white-space:nowrap;
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .seat { width:16px;height:16px;font-size:10px;flex:0 0 auto; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .bid-badges {
 min-height:14px;height:14px;line-height:14px;font-size:11px;margin:0;white-space:nowrap;overflow:hidden;
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table #handHeading { display:grid;grid-template-columns:minmax(0,1fr);gap:0;margin:0; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table #mobileContract { display:block;margin:0;font-size:11px;line-height:14px; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table :is(#youBidBadge,.hand-hint) { display:none; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table #hand {
 display:flex;align-items:flex-end;justify-content:center;container-type:inline-size;box-sizing:border-box;
 width:100%;max-width:100%;height:calc(var(--watch-mobile-face-height) + 3px);min-height:0;margin:0;padding:3px 0 0;gap:0;
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table #hand .card {
 width:var(--touch-hand-card-width)!important;height:var(--watch-mobile-face-height)!important;
 flex:0 0 var(--touch-hand-card-width)!important;margin:0;
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table #hand .card+.card {
 margin-left:calc(min(var(--card-spacing,38px),(100cqw - var(--touch-hand-card-width)) / 12) - var(--touch-hand-card-width));
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table #hand .corner { font-size:max(11px,calc(var(--watch-mobile-face-height) * .21));line-height:1;left:3px;top:3px; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table #hand .center-suit { font-size:calc(var(--watch-mobile-face-height) * .48); }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player:is(.west,.east) {
 display:grid;grid-template-rows:var(--watch-side-name-line-height,20px) var(--watch-side-bid-badges-height,14px) auto;row-gap:0;
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player:is(.west,.east)>.name-line { grid-row:1;align-self:start; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player:is(.west,.east)>.bid-badges { grid-row:2;align-self:start; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player:is(.west,.east)>:is(.kibitz-hand,.opponent-hand) {
 grid-row:3;min-height:0;height:calc(var(--watch-face-height,70px) + 3 * var(--watch-suit-step) + 3px);
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table.watch-horizontal-sides .player:is(.west,.east)>:is(.kibitz-hand,.opponent-hand) { height:calc(var(--watch-face-height,70px) + 3px); }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table.watch-horizontal-sides .kibitz-side-hand { display:flex;flex-wrap:nowrap;align-items:flex-end;justify-content:flex-start; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table.watch-horizontal-sides .east .kibitz-side-hand { justify-content:flex-end; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table.watch-horizontal-sides .kibitz-suit-row { display:contents; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table.watch-horizontal-sides .kibitz-suit-row>.card { margin-left:calc(min(var(--card-spacing,38px),(100cqw - var(--watch-face-width,50px)) / 12) - var(--watch-face-width,50px)); }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table.watch-horizontal-sides .kibitz-suit-row:first-child>.card:first-child { margin-left:0; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .play-center { position:relative;inset:auto;grid-area:2/2;width:100%;height:100%;min-height:0;margin:0;container-type:size; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .play-center>.middle:not(:has(.completed-table)) {
 position:absolute!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;
 width:calc(3 * var(--watch-face-width,50px) + 12px)!important;height:calc(2 * var(--watch-face-height,70px) + 8px)!important;margin:0!important;
}
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .middle .played-slot { position:absolute!important;width:var(--watch-face-width,50px)!important;height:var(--watch-face-height,70px)!important; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .middle .played-slot>.card { width:var(--watch-face-width,50px)!important;height:var(--watch-face-height,70px)!important;margin:0; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .middle .slot-N { top:0!important;bottom:auto!important;left:50%!important;right:auto!important;transform:translateX(-50%)!important; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .middle .slot-S { bottom:0!important;top:auto!important;left:50%!important;right:auto!important;transform:translateX(-50%)!important; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .middle .slot-W { left:0!important;right:auto!important;top:50%!important;bottom:auto!important;transform:translateY(-50%)!important; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .middle .slot-E { right:0!important;left:auto!important;top:50%!important;bottom:auto!important;transform:translateY(-50%)!important; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table #domino:not(.hidden) { position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;width:100%;height:100%;min-height:0;container-type:size; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table #domino .mobile-domino-piles { --watch-domino-height:min(var(--watch-face-height,70px),calc((100cqh - 16px) / 2));--domino-overlap:max(20px,calc(var(--watch-domino-height) * .3));grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;width:calc(2 * (var(--watch-domino-height) * var(--hand-card-ratio,.718447) + var(--domino-overlap)) + 6px);max-width:100%; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table #domino .mobile-domino-pile { height:var(--watch-domino-height);aspect-ratio:auto; }
html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table #domino .mobile-domino-pile>.card { width:calc(var(--watch-domino-height) * var(--hand-card-ratio,.718447));height:var(--watch-domino-height); }
html body.regular-watch.mobile-landscape #kibitzControls.kibitz-header-controls .kibitz-view-buttons button { min-height:44px!important;min-width:36px!important; }
@media(orientation:landscape) {
 html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .bid-badges { display:none; }
 html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table #handHeading { display:flex;flex-wrap:nowrap;gap:5px;height:20px; }
 html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table #youChip { min-width:0; }
 html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table #mobileContract { margin-left:auto;max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
}
@media(orientation:portrait) {
 html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table #domino .mobile-domino-piles { grid-template-columns:repeat(4,minmax(0,1fr));width:calc(4 * (var(--watch-domino-height) * var(--hand-card-ratio,.718447) + var(--domino-overlap)) + 18px); }
 html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table {
  --watch-mobile-face-height:clamp(48px,calc((var(--watch-viewport-height,700px) - 240px) / 7),76px);
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:max-content max-content minmax(0,1fr) max-content;
 }
 html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player.west { grid-area:2/1; }
 html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .player.east { grid-area:2/2; }
 html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table .play-center { grid-area:3/1/4/-1; }
 html body.regular-watch.mobile-landscape:not(.old-school-table):not(.replay-loaded) #app .table>.player.south { grid-area:4/1/5/-1; }
}
