/*
 * LDM Live theme: felt table green, metallic gold, ivory tiles.
 * Loaded after the original styles. Layout rules from the original page are
 * untouched; this file only changes colour, type and surfaces.
 */
:root {
  --felt-black: #05140d;
  --felt-darker: #081c13;
  --felt-dark: #0e2b1d;
  --felt-surface: #123624;
  --felt: #1b4d32;
  --gold: #d4af37;
  --gold-light: #f7e7a9;
  --gold-dark: #997b1e;
  --ivory: #f7f3ea;
  --ivory-edge: #ded6c5;
  --tile-ink: #1d1a14;

  --ink: #eef2ea;
  --muted: #a9bcae;
  --line: rgba(212, 175, 55, 0.2);
  --paper: var(--felt-black);
  --green: #2f8f55;
  --panel: rgba(14, 43, 29, 0.72);
  --panel-solid: #0f2e1f;
  --field: #0a2217;
  --field-line: rgba(212, 175, 55, 0.32);
  --soft: rgba(212, 175, 55, 0.09);
  --pos: #57c27f;
  --neg: #f07a6e;
  --gold-gradient: linear-gradient(135deg, #e6c665 0%, #d4af37 50%, #aa820a 100%);
  --gold-text: linear-gradient(135deg, #fff8dc 0%, #f7e7a9 20%, #d4af37 50%, #e6c665 75%, #997b1e 100%);
  --shadow: 0 18px 40px -18px rgba(0, 0, 0, 0.75);
  color-scheme: dark;
}

/* ---------- page ---------- */
html { background: var(--felt-black); }
body {
  background-color: var(--felt-black);
  background-image:
    radial-gradient(circle at 50% 0%, rgba(27, 77, 50, 0.55) 0%, transparent 60%),
    radial-gradient(circle at 85% 60%, rgba(212, 175, 55, 0.07) 0%, transparent 45%),
    radial-gradient(circle at 15% 85%, rgba(14, 43, 29, 0.7) 0%, transparent 50%);
  background-attachment: fixed;
  color: var(--ink);
  font-family: 'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', 'PingFang TC', 'Microsoft JhengHei', sans-serif;
  -webkit-font-smoothing: antialiased;
}
::selection { background: var(--gold); color: var(--felt-black); }

/* ---------- headings ---------- */
h2, h3 { color: var(--ink); letter-spacing: 0.01em; }
h2 { font-weight: 800; }

/* ---------- surfaces ---------- */
.panel, .card {
  background: var(--panel);
  border: 1px solid var(--line);
  box-shadow: var(--shadow);
  -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
}
.stat { background: var(--soft); border: 1px solid var(--line); }
.stat small { color: var(--muted); }
.badge { background: var(--soft); color: var(--gold-light); border: 1px solid var(--line); }
.record { border-top-color: var(--line); }
.status { color: var(--gold); letter-spacing: .03em; }
.notice { border-left-color: var(--gold); color: var(--ink); }
.small, .muted { color: var(--muted); }

/* ---------- forms ---------- */
label { color: var(--gold-light); letter-spacing: .02em; }
input, select, textarea {
  background: var(--field); color: var(--ink);
  border: 1px solid var(--field-line);
  transition: border-color .2s, box-shadow .2s;
}
input::placeholder, textarea::placeholder { color: rgba(169, 188, 174, .6); }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--gold); box-shadow: 0 0 0 3px rgba(212, 175, 55, .22); }
select option, select optgroup { background: var(--panel-solid); color: var(--ink); }
input[type=checkbox], input[type=radio] { accent-color: var(--gold); }

/* ---------- buttons ---------- */
button {
  background: var(--gold-gradient); color: var(--felt-black);
  box-shadow: 0 6px 18px -8px rgba(212, 175, 55, .55);
  transition: transform .12s ease, filter .2s, box-shadow .2s;
  letter-spacing: .01em;
}
button:active:not(:disabled) { transform: translateY(1px) scale(.99); }
@media (hover: hover) { button:hover:not(:disabled) { filter: brightness(1.08); } }
button:focus-visible { outline: 2px solid var(--gold-light); outline-offset: 2px; }
.secondary, .desk-tabs button {
  background: rgba(212, 175, 55, .08); color: var(--gold-light);
  border: 1px solid var(--line); box-shadow: none;
}
.desk-tabs button.active { background: var(--gold-gradient); color: var(--felt-black); border-color: transparent; }
.danger { background: linear-gradient(135deg, #a23a32, #742d2b); color: #fff; box-shadow: none; }
.confirm { background: linear-gradient(135deg, #3aa866, #23703f); color: #fff; box-shadow: 0 6px 18px -8px rgba(58, 168, 102, .6); }
.link { background: none; color: var(--gold); box-shadow: none; text-underline-offset: 3px; }
.link:hover { filter: none; color: var(--gold-light); }

/* ---------- messages ---------- */
.message { background: var(--soft); color: var(--ink); border: 1px solid var(--line); }
.message.error, .error { background: rgba(240, 122, 110, .12); color: #ffb4aa; border-color: rgba(240, 122, 110, .35); }
.message.success, .success { background: rgba(87, 194, 127, .12); color: #a6e8bd; border-color: rgba(87, 194, 127, .35); }
#scoreMessage:not(.error) { background: none; border: 0; }

/* ---------- tables & standings ---------- */
th, td { border-bottom-color: var(--line); }
th { color: var(--gold); text-transform: uppercase; letter-spacing: .06em; font-weight: 700; }
td { font-variant-numeric: tabular-nums; }
details { border-top: 1px solid var(--line); padding-top: 4px; }
summary { color: var(--gold-light); }
summary::marker { color: var(--gold); }
.assignment { border-bottom-color: var(--line); }

/* ---------- HKTW payment math ---------- */
.hktw-payment { background: var(--soft); border-color: var(--line); }
.hktw-total { background: rgba(212, 175, 55, .2); border-left-color: var(--line); }

/* ---------- score desk & table board ---------- */
.score-overlay { background: rgba(3, 12, 8, .78); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.score-overlay > .panel, .table-entry-overlay > .panel { background: var(--panel-solid); }
.desk-context, .dealer-chip { color: var(--muted); }

/* Players are ivory mahjong tiles around the felt. */
.table-player-cards {
  background: radial-gradient(ellipse at center, rgba(27, 77, 50, .9) 0%, rgba(18, 54, 36, .85) 55%, rgba(8, 28, 19, .6) 100%);
  border: 1px solid var(--line); border-radius: 28px; padding: 8px;
  box-shadow: inset 0 0 40px rgba(0, 0, 0, .45);
}
.table-player-card {
  background: linear-gradient(145deg, #ffffff 0%, var(--ivory) 78%, var(--ivory-edge) 100%);
  border: 1px solid #e5dec9; color: var(--tile-ink);
  box-shadow: 0 5px 0 var(--felt-surface), 0 9px 16px rgba(0, 0, 0, .5), inset 0 1px 2px #fff;
}
.table-player-card .seat-label { color: #6f6447; text-transform: uppercase; letter-spacing: .1em; font-weight: 700; }
.table-player-card .player-total { font-family: 'Space Grotesk', 'Plus Jakarta Sans', system-ui, sans-serif; font-variant-numeric: tabular-nums; }
.player-total.positive { color: #1f7a43; }
.player-total.negative { color: #b02f2f; }
.table-player-card.is-dealer { border: 2px solid var(--gold); background: linear-gradient(145deg, #fffdf3 0%, #f7eccb 100%); box-shadow: 0 5px 0 var(--gold-dark), 0 9px 18px rgba(0, 0, 0, .5), 0 0 18px rgba(212, 175, 55, .45); }
.board-center { color: var(--gold-light); }
.review-delta { background: var(--soft); border: 1px solid var(--line); }
.table-stat-card { background: var(--panel); border-color: var(--line); }
.table-stat-grid strong { color: var(--gold-light); font-family: 'Space Grotesk', system-ui, sans-serif; }
.table-record-label { color: var(--muted); }

/* ---------- house rules ---------- */
.rules-pages { background: transparent; }
.rule-group > h3 { background: var(--gold-gradient); color: var(--felt-black); border-radius: 12px 12px 0 0; }
.rule-entry { color: var(--ink); border-bottom-color: var(--line); background: rgba(14, 43, 29, .55); }
.rule-entry:nth-child(odd) { background: rgba(212, 175, 55, .07); }
.rule-fan { color: var(--gold-light); }
.compact-house-rules { background: var(--panel); border-color: var(--line); }
.rules-conversion { color: var(--ink); }
.rules-conversion td, .rules-conversion th { border-color: var(--line); }
.rules-conversion th, .rules-conversion tbody tr:nth-child(even) { background: rgba(212, 175, 55, .16); }
.rules-conversion tbody tr:nth-child(odd) { background: rgba(14, 43, 29, .6); }

/* ---------- polish: spacing & layout ---------- */

/* Felt lighting on a fixed layer (iOS Safari ignores background-attachment: fixed). */
body { background-image: none; }
/* One even dark background everywhere; only a faint glow behind the header. */
html, body { background-color: var(--felt-black); }
html { overscroll-behavior-y: none; }
body::before {
  content: ''; position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background-color: var(--felt-black);
  background-image: radial-gradient(ellipse 70% 45% at 50% 0%, rgba(27, 77, 50, 0.38) 0%, transparent 100%);
}

/* A comfortable reading column on desktop. */
.wrap { max-width: 860px; }

/* Even spacing between stacked blocks */
.panel > :first-child { margin-top: 0; }
.panel > :last-child { margin-bottom: 0; }
button + h2, button + h3, .wide + h2, .wide + h3 { margin-top: 22px; }
.actions { gap: 10px; }
.topbar { align-items: center; margin-bottom: 14px; }
.rules-pages, #houseRulesViewer { margin-top: 12px; }
#houseRulesScreen .actions, .rules-tabs { margin-top: 10px; }
.message:not(:empty) { margin: 12px 0; }

/* Tables: never break words mid-way; rank column stays tight. */
td, th { overflow-wrap: normal; word-break: normal; hyphens: none; }
th { line-height: 1.25; vertical-align: bottom; }
td:first-child, th:first-child { width: 1%; white-space: nowrap; padding-right: 12px; }
tbody tr:first-child td:first-child { color: var(--gold-light); font-weight: 800; }
.panel, .card { overflow-x: auto; }

/* Table board: action buttons share the row evenly. */
.board-actions { display: flex; gap: 6px; }
.board-actions > button { flex: 1 1 0; min-width: 0; }
.board-actions > button[hidden] { display: none !important; }

/* Score entry popup: the "multiple winners" section spans the full width. */
#tablePayerField { grid-column: 1 / -1; }
#tablePayerField details { margin-top: 12px; }
.table-entry-overlay summary { line-height: 1.3; }

/* Disabled buttons read as clearly inactive. */
button:disabled { opacity: 1; filter: none; background: rgba(169, 188, 174, .1); color: rgba(169, 188, 174, .55); border: 1px solid rgba(169, 188, 174, .14); box-shadow: none; }

/* Player names stay on one line; wide tables scroll inside their card. */
td:nth-child(2) { white-space: nowrap; }
#refreshHouseRules { margin-bottom: 12px; }
#refreshHouseRules + .message:empty + .grid, #refreshHouseRules ~ .grid { margin-top: 0; }

/* Phones: a consistent side gutter and tables that fit. */
@media (max-width: 600px) {
  body:not(.playing-layout) { padding-left: 14px; padding-right: 14px; }
  .panel, .card { padding: 18px 14px; }
  table { font-size: 15px; }
  th { font-size: 11px; letter-spacing: .04em; }
  td, th { padding: 9px 5px; }
  td:first-child, th:first-child { padding-right: 8px; }
}

/* Respect reduced motion. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; }
}

/* ================= simplified design ================= */

/* ---------- icons ---------- */
.ico { width: 1.15em; height: 1.15em; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; vertical-align: -0.2em; }

/* ---------- slim top bar ---------- */
header.topnav { display: flex; align-items: center; justify-content: space-between; gap: 12px; text-align: left; margin: 0 0 18px; padding: 0 2px; }
.brand { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 0; background: none; box-shadow: none; color: var(--ink); text-align: left; border-radius: 12px; }
.brand-mark { width: 38px; height: 38px; flex: none; border-radius: 50%; display: flex; align-items: center; justify-content: center; }
.brand-mark img { display: block; width: 100%; height: 100%; object-fit: contain; border-radius: 50%; }
.brand-name { font-family: 'Cinzel', 'Times New Roman', serif; font-weight: 900; font-size: 21px; letter-spacing: .12em; white-space: nowrap;
  background: var(--gold-text); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: var(--gold); }
.brand-zh { color: var(--gold-light); font-size: 19px; letter-spacing: .08em; opacity: .85; white-space: nowrap; }
.account-btn { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; max-width: 56%; padding: 8px 14px; font-size: 16px; border-radius: 999px;
  background: rgba(212, 175, 55, .1); color: var(--gold-light); border: 1px solid var(--line); box-shadow: none; }
.account-btn span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.account-btn.signed-in { background: var(--gold-gradient); color: var(--felt-black); border-color: transparent; }
@media (max-width: 420px) { header.topnav { gap: 8px; } .brand { gap: 6px; } .brand-mark { width: 30px; height: 30px; } .brand-name { font-size: 19px; letter-spacing: .07em; } .brand-zh { display: inline; font-size: 17px; letter-spacing: .02em; } .account-btn { font-size: 14px; padding: 8px 10px; gap: 5px; } }

/* ---------- segmented toggle & tabs ---------- */
.seg { display: inline-flex; gap: 3px; padding: 3px; border: 1px solid var(--line); border-radius: 12px; background: var(--field); }
.seg button { min-height: 36px; padding: 6px 14px; font-size: 16px; border-radius: 9px; background: none; color: var(--muted); box-shadow: none; }
.seg button.active { background: var(--gold-gradient); color: var(--felt-black); }
.seg.tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); width: 100%; margin-bottom: 14px; }
.seg.tabs button { min-height: 44px; font-size: 17px; }
.seg.wide-seg { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; margin: 12px 0; }

/* ---------- home ---------- */
.hero { padding: 26px 22px; border-color: rgba(212, 175, 55, .38); background: linear-gradient(160deg, rgba(27, 77, 50, .85), rgba(14, 43, 29, .8)); }
.eyebrow { margin: 0 0 6px; font-size: 14px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--gold); }
.hero h2 { margin: 0; font-size: 30px; line-height: 1.2; }
.hero-meta { margin: 6px 0 0; font-size: 17px; }
.hero-cta { min-height: 58px; font-size: 22px; margin-top: 20px; }
.hero-watch { display: flex; align-items: center; justify-content: center; gap: 6px; width: 100%; margin-top: 6px; text-decoration: none; }
.card-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 4px; }
.card-head h3 { margin: 0; }
.standings-card > .link { display: inline-flex; align-items: center; gap: 4px; margin-top: 8px; text-decoration: none; }
.standing-list { list-style: none; margin: 8px 0 0; padding: 0; }
.standing-list li { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-top: 1px solid var(--line); }
.standing-list .rank { width: 26px; font-family: 'Space Grotesk', system-ui, sans-serif; font-weight: 700; color: var(--gold-light); }
.standing-list li:first-child .rank { color: var(--gold); }
.standing-list .name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.standing-list .pts { font-family: 'Space Grotesk', system-ui, sans-serif; font-weight: 700; font-variant-numeric: tabular-nums; }
.tile-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-bottom: 16px; }
.tile { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; min-height: 92px; padding: 14px 6px; font-size: 16px; line-height: 1.2; text-align: center;
  background: var(--panel); color: var(--gold-light); border: 1px solid var(--line); border-radius: 16px; box-shadow: var(--shadow); }
.tile .ico { width: 28px; height: 28px; color: var(--gold); }
.home-row { display: flex; align-items: center; gap: 12px; width: 100%; margin-bottom: 16px; padding: 14px 16px; text-align: left; font-size: 18px;
  background: var(--panel); color: var(--gold-light); border: 1px solid var(--line); border-radius: 16px; box-shadow: var(--shadow); }
.home-row .ico { color: var(--gold); }
.home-row span { flex: 1; }
.blessing { text-align: center; margin: 8px 0 0; }
@media (hover: hover) {
  .tile:hover, .home-row:hover { border-color: rgba(212, 175, 55, .5); filter: none; box-shadow: var(--shadow), 0 0 22px rgba(212, 175, 55, .12); }
}

/* ---------- score desk ---------- */
.desk-spacer { min-width: 72px; }

/* ---------- admin desk ---------- */
.phase { margin: 28px 0 4px; font-size: 14px; letter-spacing: .14em; text-transform: uppercase; color: var(--gold); }
#adminControls { overflow: visible; }
#adminMessage { position: sticky; top: 8px; z-index: 6; background: var(--panel-solid); box-shadow: var(--shadow); }
#adminMessage.error { background: linear-gradient(rgba(240, 122, 110, .16), rgba(240, 122, 110, .16)), var(--panel-solid); }
#adminMessage.success { background: linear-gradient(rgba(87, 194, 127, .16), rgba(87, 194, 127, .16)), var(--panel-solid); }

/* A light sun mark and compact host controls. */
.brand-sun { color: var(--gold-light); background: none; box-shadow: none; }
.brand-sun svg { display: block; width: 34px; height: 34px; }
.count-pill { display: inline-block; margin-left: 6px; padding: 2px 8px; border-radius: 20px; background: var(--gold); color: #17241a; font: 700 12px/1.6 system-ui; }
.count-pill[hidden] { display: none; }
.roster-add { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.2fr) auto; align-items: end; gap: 8px; margin: 12px 0; }
.roster-add label { margin-top: 0; }
.roster-add input, .roster-add select, .roster-add button { min-height: 44px; font-size: 15px; padding: 9px; }
#assignmentRows { display: grid; grid-template-columns: repeat(auto-fit,minmax(240px,1fr)); gap: 12px; }
.seat-card { padding: 12px; border: 1px solid var(--line); border-radius: 14px; }
.seat-card h3 { margin: 0 0 8px; font-size: 17px; }
.seat-line { display: grid; grid-template-columns: 44px minmax(0,1fr); align-items: center; gap: 6px; margin: 5px 0; font-size: 14px; }
.seat-line select { min-height: 44px; padding: 8px; font-size: 14px; }
.roster-person { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--line); font-size: 15px; }
.roster-person small { display: block; font-size: 12px; color: var(--muted); }
.roster-person button { min-height: 44px; flex: none; font-size: 13px; }
.member-editor { border-bottom: 1px solid var(--line); padding: 6px 0; }
.member-editor summary { font-size: 16px; }
.member-edit-form { display: grid; grid-template-columns: 1fr 1fr; gap: 0 12px; padding: 0 0 12px; }
.member-edit-form label { font-size: 14px; }
.member-edit-form input { min-height: 44px; font-size: 16px; padding: 9px; }
.member-edit-form .actions,.member-edit-form .message { grid-column: 1 / -1; }
@media(max-width:600px) { .roster-add { grid-template-columns: minmax(0,1fr) auto; } .roster-add>div { grid-column:1 / -1; } #assignmentRows { grid-template-columns: 1fr; } .member-edit-form { grid-template-columns: minmax(0,1fr); } }

/* Conflicting selections remain visible until the host resolves them. */
.seat-line select.seat-conflict { border: 2px solid #ef7979; background: #4b2027; color: #fff0f0; box-shadow: 0 0 0 2px #ef797933; }
.seat-conflict-row { color: #ffaaaa; }
.floater-add { margin: 8px 0 14px; }
.floater-add summary { font-size: 16px; }
.floater-add input { min-height: 44px; font-size: 16px; margin-bottom: 10px; }

/* Event scoring needs only table, history and statistics. */
.event-pin-scoring .desk-tabs { grid-template-columns: repeat(3,minmax(0,1fr)); }
.event-pin-scoring #tableTab,.event-pin-scoring #moreTab { display: none; }

.board-actions { grid-template-columns: repeat(5,minmax(0,1fr)); }
.table-player-card { position: relative; }
.player-corner { position: absolute; top: 7px; right: 9px; display: flex; align-items: center; gap: 3px; line-height: 1; }
.dealer-sun { font-size: 17px; }
.dealer-multiplier { font: 800 12px/1 system-ui; color: #8a6812; }
.table-entry-overlay .score-heading { position: sticky; top: 0; z-index: 2; background: var(--felt-surface,#102e20); padding: 6px 0; }
.popup-exit { position: sticky; bottom: -1px; z-index: 2; background: var(--felt-surface,#102e20); padding: 6px 0 0; }
.popup-exit .wide { margin: 0; }
#gpCorrectionOverlay { z-index: 10001; }
#gpCorrectionOverlay>.panel { width: min(100%,680px); max-height: 92dvh; overflow: auto; }

/* Starting seats use the same compass as the weekly score board. */
.casual-seat-setup{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:18px auto;max-width:650px;align-items:center}
.setup-seat{position:relative;min-width:0;border:1px solid var(--gold,#b89b41);border-radius:16px;padding:10px;background:#ffffff08}
.setup-seat input{width:100%;min-width:0;box-sizing:border-box;font-size:16px;padding:8px}
.setup-seat label{font-size:16px;margin:0 0 6px}.setup-seat.seat-east{grid-column:3;grid-row:2;padding-top:24px}.setup-seat.seat-south{grid-column:2;grid-row:1}.setup-seat.seat-west{grid-column:1;grid-row:2}.setup-seat.seat-north{grid-column:2;grid-row:3}.setup-sun{position:absolute;right:8px;top:5px;font-size:17px}.setup-center{grid-column:2;grid-row:2;text-align:center;font-size:14px}
.dice-control{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;margin:12px 0}.dice-control button{min-height:44px}.dice-control output{display:flex;align-items:center;gap:12px;font-size:16px}.dice-faces{font-size:32px;line-height:1.2}.card-head .seg{flex-wrap:wrap}
@media(max-width:420px){.setup-seat{padding:6px;border-radius:10px}.setup-seat input{font-size:14px;padding:6px}.casual-seat-setup{gap:5px}.setup-seat label{font-size:14px}}

.board-center .dice-control{flex-direction:column;gap:4px;margin:8px 0 0}.board-center .dice-control button{font-size:12px;line-height:1.2;padding:6px 3px;min-height:44px;width:100%}.board-center .dice-control output{flex-direction:column;font-size:11px;gap:2px;line-height:1.2}.board-center .dice-faces{font-size:23px}.compact-removal{margin-top:12px}

.inline-fan-list{min-height:150px!important;font-size:20px!important}.inline-fan-list option{padding:5px 8px}.dice-control output{flex-direction:row!important;gap:8px!important;flex-wrap:wrap;justify-content:center}.table-entry-overlay .popup-exit{position:static}.table-entry-overlay .score-heading{justify-content:flex-start}

.board-references{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:10px 0}.board-references button{min-height:64px;font-size:clamp(20px,4vw,26px);font-weight:750}.table-board .board-actions{grid-template-columns:repeat(5,minmax(0,1fr))}.board-actions #boardAdjustments:not([hidden]){display:contents}.board-actions:has(#boardAdjustments[hidden]){grid-template-columns:repeat(3,minmax(0,1fr))}.table-board .board-actions button{min-height:46px;padding:7px 3px;font-size:clamp(12px,2.9vw,15px);line-height:1.25}

.board-actions:has(#boardAdjustments[hidden]):has(#boardLiabilityButton:not([hidden])){grid-template-columns:repeat(4,minmax(0,1fr))}.hk-win-methods{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}.hk-win-methods button{white-space:normal;font-size:15px!important}.hk-win-methods button[aria-pressed="true"]{outline:2px solid var(--gold,#d4af37);outline-offset:2px}

/* Shared actions stay in the same positions in both leagues. */
.table-board .board-actions{grid-template-columns:repeat(3,minmax(0,1fr))!important}.board-specials{margin:8px 0}.board-specials #boardAdjustments:not([hidden]){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.board-specials button{min-height:44px;font-size:15px}
.dice-control button,.board-center .dice-control button{font-size:25px;padding:5px;min-height:44px}.dice-control output,.board-center .dice-control output{font-size:clamp(16px,5vw,26px);line-height:1.2;flex-wrap:nowrap;gap:3px!important;white-space:nowrap}.dice-control output .dice-faces,.dice-control output .dice-total{font:inherit;line-height:1.2}
.season-board{margin:14px 0 20px;min-width:0}.season-board>h3{font-size:17px;margin:0 0 10px}.season-columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-items:start}.season-column{min-width:0;border:1px solid #c4a34744;border-radius:12px;padding:10px 8px}.season-column h4{font-size:16px;margin:0 0 8px;line-height:1.25;color:var(--gold-light,#f3df9e)}.season-ranking{list-style:none;padding:0;margin:0}.season-ranking li{border-top:1px solid #c4a34733;padding:9px 0;min-width:0}.season-player{display:block;font-size:15px;line-height:1.35;overflow-wrap:anywhere}.season-points{font-size:13px;margin-top:3px;line-height:1.35}.season-ranking small,.season-ranking details,.season-empty{font-size:11px;line-height:1.35}.season-ranking details{margin-top:4px}.season-ranking summary{font-size:inherit;cursor:pointer}.season-ranking details p{font-size:inherit;margin:4px 0;overflow-wrap:anywhere}.season-empty{margin:0}.standings-card .season-board{margin-bottom:0}
@media(max-width:600px){#watchPaneSeason{padding:12px}.season-columns{gap:5px}.season-column{padding:8px 5px;border-radius:9px}.season-column h4{font-size:12px;min-height:30px}.season-player{font-size:12px}.season-points{font-size:11px}.season-ranking small,.season-ranking details,.season-empty{font-size:10px}.season-ranking li{padding:7px 0}.standings-card .season-column{padding:7px 4px}.standings-card .season-columns{gap:4px}.standings-card .season-player{font-size:11px}}

.hk-win-methods{grid-template-columns:minmax(0,1fr);margin:10px 0}.hk-win-methods button{width:100%;min-height:46px}

.stats-summary-table{width:100%;table-layout:fixed;border-collapse:collapse}.stats-summary-table th,.stats-summary-table td{font-size:clamp(11px,2.6vw,15px);padding:9px 3px;text-align:center;white-space:nowrap;line-height:1.25;border-bottom:1px solid #c4a34744}.stats-summary-table th:first-child{width:30%;text-align:left;overflow:hidden;text-overflow:ellipsis}.stats-summary-table abbr{text-decoration:none}.stats-summary-table tbody th{font-weight:650}.stats-summary-table tbody tr{height:38px}.stats-summary-table th:not(:first-child),.stats-summary-table td{width:11.666%}
.stats-summary-table tbody th{text-transform:none;letter-spacing:normal}

/* Keep both live leagues alongside each other, including on phones. */
.live-league-columns{grid-template-columns:repeat(2,minmax(0,1fr));margin:14px 0 20px}

.live-league-columns .season-column{padding:10px 12px;border-radius:12px}
.live-league-columns .season-column h4{margin:0;padding:0 0 8px;min-height:0}
.live-league-columns .season-ranking li{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 10px;padding:7px 0}
.live-league-columns .season-player{font-size:clamp(24px,2.5vw,32px);line-height:1.2;font-weight:650}
.live-league-columns .season-points{font-size:clamp(24px,2.5vw,32px);font-weight:800;line-height:1.1;margin:0;text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--gold-light,#f3df9e)}
.live-league-columns .season-ranking small{grid-column:1/-1;text-align:right}
@media(max-width:600px){.live-league-columns{gap:6px}.live-league-columns .season-column{padding:8px 6px}.live-league-columns .season-ranking li{gap:2px 5px;padding:6px 0}.live-league-columns .season-player{font-size:22px}.live-league-columns .season-points{font-size:22px}}
@media(max-width:360px){.live-league-columns .season-points{font-size:19px}.live-league-columns .season-player{font-size:19px}}

/* Watch Live: the two HK-Taiwanese tables in two colours (jade / crimson, like tile ink) */
.live-league-columns .table-key{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 6px}
.live-league-columns .table-tag{font-size:13px;font-weight:700;padding:2px 9px;border-radius:999px;border:1px solid}
.live-league-columns .table-tag.table-tone-1{color:#7fe0a8;border-color:#3fae6f;background:rgba(47,143,85,.18)}
.live-league-columns .table-tag.table-tone-2{color:#ffb0a6;border-color:#d0574b;background:rgba(208,87,75,.18)}
.live-league-columns .season-ranking li.table-tone-1,.live-league-columns .season-ranking li.table-tone-2{border-left:5px solid;padding-left:10px;padding-right:8px;border-radius:6px;margin-bottom:3px;border-bottom:0}
.live-league-columns .season-ranking li.table-tone-1{border-left-color:#3fae6f;background:rgba(47,143,85,.14)}
.live-league-columns .season-ranking li.table-tone-2{border-left-color:#d0574b;background:rgba(208,87,75,.2)}
@media(max-width:600px){.live-league-columns .season-ranking li.table-tone-1,.live-league-columns .season-ranking li.table-tone-2{border-left-width:4px;padding-left:6px;padding-right:5px}.live-league-columns .table-tag{font-size:11px;padding:1px 6px}}
@media(max-width:600px){.tile-row{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Open seat: tap a free player to seat them */
.open-seat-players{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:12px 0}
.open-seat-players .open-seat-player{min-height:56px;font-size:18px;font-weight:700}
.admin-seat-override{margin:18px 0 12px;padding:14px 12px;border:1px dashed var(--gold-dark);border-radius:12px;background:var(--soft)}
.admin-seat-override h3{margin:0 0 4px;font-size:17px}
.admin-seat-rows label{margin-top:10px}
.open-seat-players .open-seat-group{grid-column:1/-1;margin:8px 0 0}
.open-seat-players .open-seat-player.not-checked-in{opacity:.78;font-weight:600}

/* Live leaderboard fullscreen (desktop only; the button is hidden on touch devices) */
#watchPaneTonight { position: relative; }
.watch-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: -4px 0 6px; min-height: 34px; }
.watch-head > label { margin: 0; }
.fs-button { flex: none; z-index: 2; width: 34px; height: 34px; min-height: 0; padding: 0; display: inline-flex; align-items: center; justify-content: center; border-radius: 10px; border: 1px solid var(--line); background: transparent; color: var(--gold); box-shadow: none; }
.fs-button[hidden] { display: none; }
.fs-button:hover { border-color: rgba(212, 175, 55, .55); background: var(--soft); filter: none; }
.fs-button .ico { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.fs-button .fs-exit, .fs-button.is-on .fs-enter { display: none; }
.fs-button.is-on .fs-exit { display: block; }
.fs-title { display: none; }

#watchPaneTonight:fullscreen {
  box-sizing: border-box; width: 100vw; height: 100vh; margin: 0; border: 0; border-radius: 0;
  overflow: auto; padding: clamp(20.52px, 2.99vw, 47.88px) clamp(20.52px, 3.42vw, 61.56px);
  background-color: var(--felt-dark);
  background-image: radial-gradient(ellipse 85% 70% at 50% 35%, var(--felt) 0%, var(--felt-dark) 62%, var(--felt-black) 100%);
}
#watchPaneTonight:fullscreen::backdrop { background: var(--felt-black); }
#watchPaneTonight:fullscreen .watch-head { display: block; min-height: 0; margin: 0; }
#watchPaneTonight:fullscreen .watch-head > label { display: none; }
#watchPaneTonight:fullscreen .fs-button { position: absolute; top: clamp(15.39px, 2.14vw, 30.78px); right: clamp(15.39px, 2.14vw, 30.78px); width: 41.04px; height: 41.04px; background: rgba(5, 20, 13, .35); }
#watchPaneTonight:fullscreen .fs-button .ico { width: 20.52px; height: 20.52px; }
#watchPaneTonight:fullscreen > label, #watchPaneTonight:fullscreen > select, #watchPaneTonight:fullscreen > details, #watchPaneTonight:fullscreen > :not(#leagueTables):not(.watch-head):not(.fs-title):not(#watchStatus):not(#watchMessage) { display: none; }
#watchPaneTonight:fullscreen .fs-title { display: block; margin: 0 54.72px 3.42px 0; font-size: clamp(25.65px, 2.56vw, 44.46px); line-height: 1.15; color: var(--gold-light); letter-spacing: .01em; }
#watchPaneTonight:fullscreen #watchStatus { font-size: clamp(12.82px, 1.06vw, 18.81px); color: var(--muted); }
#watchPaneTonight:fullscreen .live-league-columns { gap: clamp(13.68px, 1.71vw, 30.78px); margin: clamp(15.39px, 2.14vw, 34.2px) 0 0; }
#watchPaneTonight:fullscreen .live-league-columns .season-column { padding: clamp(11.97px, 1.37vw, 23.94px) clamp(15.39px, 1.71vw, 29.07px); border-radius: 15.39px; background: rgba(5, 20, 13, .42); border-color: rgba(212, 175, 55, .3); }
#watchPaneTonight:fullscreen .live-league-columns .season-column h4 { font-size: clamp(18.81px, 1.71vw, 30.78px); padding-bottom: 10.26px; }
#watchPaneTonight:fullscreen .live-league-columns .season-ranking li { padding: clamp(4.27px, .9vh, 11.97px) 0; }
#watchPaneTonight:fullscreen .live-league-columns .season-player,
#watchPaneTonight:fullscreen .live-league-columns .season-points { font-size: clamp(20.52px, min(2.91vw, 4.1vh), 54.72px); }
#watchPaneTonight:fullscreen .live-league-columns .season-ranking small { font-size: clamp(11.97px, 1.03vw, 18.81px); }
#watchPaneTonight:fullscreen .live-league-columns .season-ranking li.table-tone-1,
#watchPaneTonight:fullscreen .live-league-columns .season-ranking li.table-tone-2 { padding-left: 13.68px; padding-right: 11.97px; border-left-width: 5.13px; }
#watchPaneTonight:fullscreen .live-league-columns .table-tag { font-size: clamp(11.97px, 0.94vw, 17.1px); padding: 2.56px 10.26px; }
.retake-seat { margin: 10px 0 4px; }
.open-seat-players .open-seat-player.returning { grid-column: 1 / -1; }

/* Score entry: Cancel and Confirm side by side, Confirm larger on the right (thumb side), gap between. */
.entry-actions { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 14px; align-items: stretch; }
.entry-actions.even { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.entry-actions[hidden] { display: none; }
.entry-actions > button { margin: 0; min-height: 58px; font-size: 18px; font-weight: 800; border-radius: 14px; width: 100%; }
.entry-actions > .entry-cancel { color: #f19a90; border-color: rgba(208, 87, 75, .55); }
.entry-actions > .entry-cancel:hover { border-color: rgba(208, 87, 75, .85); }
#tableEntryReview > .entry-actions { margin: 14px 0 8px; }
.table-entry-overlay .popup-exit { padding-top: 12px; }
/* Choice step (Win / Bonus / Penalty): only Cancel shows, full width. Review step has its own buttons. */
#tableEntryForm[hidden] ~ .popup-exit #reviewTableEntryButton { display: none; }
#tableEntryForm[hidden] ~ .popup-exit #tableEntryActions { grid-template-columns: 1fr; }
#tableEntryReview:not([hidden]) ~ .popup-exit { display: none; }
.discard-prompt { padding: 12px; border: 1px solid var(--field-line); border-radius: 14px; background: var(--felt-surface, #123624); }
.discard-prompt[hidden] { display: none; }
.discard-prompt p { margin: 0 0 10px; font-weight: 700; color: var(--gold-light); font-size: 17px; }
.discard-prompt .entry-actions > button { min-height: 52px; border-radius: 12px; }

/* ---------- Scoring page top bar: ‹ Home · table / player / round · ⋯ menu ---------- */
.score-desk .desk-top { display: grid; grid-template-columns: 44px minmax(0, 1fr) 44px; align-items: center; gap: 8px; height: auto; min-height: 48px; padding: 2px 0 4px; flex-shrink: 0; }
.desk-icon { width: 44px; height: 44px; min-height: 44px; margin: 0; padding: 0; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; background: transparent; border: 1px solid var(--line); color: var(--gold); box-shadow: none; }
.desk-icon:hover { background: var(--soft); border-color: rgba(212, 175, 55, .5); filter: none; }
.desk-icon[aria-expanded="true"] { background: var(--soft); border-color: rgba(212, 175, 55, .6); }
.desk-icon svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
#deskMenuButton svg circle { fill: currentColor; stroke: none; }
/* Nothing in the menu (members / admin): keep the space so the middle stays centred. */
#playing:not(:has(#leaveEventScoring:not([hidden]))) #deskMenuButton { visibility: hidden; }
.score-desk .desk-top .desk-context { display: block; min-width: 0; text-align: center; line-height: 1.25; gap: 0; font-size: 14px; }
.score-desk .desk-top .desk-context > b { display: block; font-size: 17px; font-weight: 750; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.score-desk .desk-top .desk-context > b #playingSeat:not(:empty)::before { content: " · "; color: var(--muted); }
.score-desk .desk-top .desk-context > #playingRound { display: block; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.desk-menu { position: fixed; z-index: 60; top: calc(env(safe-area-inset-top) + 60px); right: max(10px, calc((100vw - 740px) / 2 + 10px)); width: min(320px, calc(100vw - 20px)); background: var(--panel-solid); border: 1px solid var(--field-line); border-radius: 16px; box-shadow: 0 18px 40px -12px rgba(0, 0, 0, .85); padding: 6px; }
.desk-menu[hidden], .desk-menu-scrim[hidden] { display: none; }
.desk-menu-scrim { position: fixed; inset: 0; z-index: 59; background: rgba(3, 12, 8, .45); }
.desk-menu-item { display: flex; align-items: center; gap: 12px; width: 100%; min-height: 56px; margin: 0; padding: 10px 12px; background: transparent; border: 0; border-radius: 12px; box-shadow: none; text-align: left; color: var(--ink); font-weight: 700; }
.desk-menu-item[hidden] { display: none; }
.desk-menu-item:hover, .desk-menu-item:focus-visible { background: var(--soft); filter: none; }
.desk-menu-item svg { flex: none; width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.desk-menu-item b { display: block; font-size: 17px; }
.desk-menu-item small { display: block; font-size: 14px; font-weight: 500; line-height: 1.3; color: var(--muted); }
.desk-menu-item.leave { color: #f19a90; }
.desk-menu-item.leave small { color: #d9a59e; }

/* Play for Fun score entry: same side-by-side Cancel | Confirm and Discard check as the scoring page. */
#funEntryOverlay .popup-exit { padding-top: 12px; }
#funPreview > .entry-actions { margin: 14px 0 8px; }
#funEntryForm[hidden] ~ .fun-exit #funEntryActions > button[type="submit"] { display: none; }
#funEntryForm[hidden] ~ .fun-exit #funEntryActions { grid-template-columns: 1fr; }
#funPreview:not([hidden]) ~ .fun-exit { display: none; }
#funPending .fun-review-actions { margin: 14px 0 10px; }
#funPending .fun-cancel-mine { width: 100%; min-height: 48px; margin: 0; }

/* Score entry pop-ups on small phones (≤ 360px): keep every label, option and button label inside its box. */
@media (max-width: 360px) {
  .score-overlay { padding-left: max(8px, env(safe-area-inset-left)); padding-right: max(8px, env(safe-area-inset-right)); }
  .score-overlay > .panel { padding-left: 12px; padding-right: 12px; }
  .inline-fan-list { font-size: 17px !important; }
  .inline-fan-list option { padding: 5px 6px; }
  .score-overlay select:not([size]), .score-overlay select[size="1"] { font-size: 17px; padding-left: 10px; padding-right: 28px; }
  .entry-actions { gap: 10px; }
  .entry-actions > button { font-size: 17px; padding: 6px 8px; }
}
@media (max-width: 340px) {
  .score-overlay select:not([size]), .score-overlay select[size="1"] { font-size: 16px; padding-left: 8px; padding-right: 22px; background-position: right 6px center; }
}

/* Dice rolls: real number tiles, and a taller middle of the board so the roll fits.
   The middle row is the dice box; East/West tiles stay their normal size beside it. */
.dice-faces { display: inline-flex; gap: 6px; align-items: center; }
.die {
  display: inline-flex; align-items: center; justify-content: center;
  width: 38px; height: 38px; border-radius: 9px; font-size: 22px; font-weight: 800; line-height: 1;
  background: linear-gradient(145deg, #ffffff 0%, var(--ivory) 78%, var(--ivory-edge) 100%);
  color: var(--tile-ink); box-shadow: 0 2px 0 var(--gold-dark), 0 3px 6px rgba(0, 0, 0, .45);
  font-variant-numeric: tabular-nums;
}
.dice-total { font-weight: 800; color: var(--gold-light); }
.board-status:empty { display: none; }
.table-player-cards { grid-template-rows: minmax(106px, 1fr) minmax(176px, 1.55fr) minmax(106px, 1fr); min-height: 440px; height: clamp(440px, 66dvh, 700px); }
.table-player-card.seat-east, .table-player-card.seat-west { align-self: center; min-height: 106px; max-height: 100%; }
.table-player-cards .board-center {
  container-type: inline-size; align-self: stretch; min-width: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px;
  padding: 6px 4px; border-radius: 18px; background: rgba(0, 0, 0, .22); border: 1px solid var(--line);
}
.table-player-cards .board-center .dice-control { margin: 0; width: 100%; gap: 6px; }
.table-player-cards .board-center .dice-control output {
  display: flex; flex-direction: column !important; align-items: center; gap: 6px !important;
  white-space: normal; font-size: 15px; width: 100%;
}
.table-player-cards .board-center .dice-control output:empty { display: none; }
.table-player-cards .board-center .dice-faces { gap: 3px; font-size: inherit; line-height: 1; }
.table-player-cards .board-center .die { width: min(30px, 29cqi); height: min(30px, 29cqi); min-width: 22px; min-height: 22px; font-size: 17px; border-radius: 7px; }
.table-player-cards .board-center .dice-total { font-size: 21px; line-height: 1; white-space: nowrap; }
@media (max-width: 360px) { .table-player-cards .board-center { padding: 6px 2px; } .table-player-cards .board-center .dice-faces { gap: 2px; } }

/* Dealer sun (and HKTW "+N") sits on its own line above the wind label, at every screen size,
   so it never overlaps "EAST". The dealer tile is a little taller, which also marks the dealer. */
.table-player-card.is-dealer:has(.player-corner) { padding-top: 26px; }
.table-player-card .player-corner { top: 5px; left: 0; right: 0; justify-content: center; gap: 4px; }

/* Smallest phones: keep long names and 3-digit scores (e.g. Christine C, -296) whole inside the tile. */
@media (max-width: 360px) {
  .table-player-card .player-total { white-space: nowrap; font-size: clamp(22px, 7vw, 27px); letter-spacing: -.5px; }
  .table-player-card .player-label { overflow-wrap: break-word; word-break: normal; font-size: clamp(15px, 4.6vw, 16px); }
}

/* Empty sub-heading lines (e.g. under the table name) take no space. */
.board-heading p:empty { display: none; }

/* Compact admin award and final-results review. */
#ppAwardRows table,#resultsPreview table{width:100%;border-collapse:collapse;table-layout:fixed}
#ppAwardRows th,#ppAwardRows td,#resultsPreview th,#resultsPreview td{padding:6px 4px;border-bottom:1px solid var(--line);font-size:13px;line-height:1.25;text-align:center}
#ppAwardRows th:first-child,#resultsPreview th:first-child{text-align:left;overflow-wrap:anywhere}
#ppAwardRows th:first-child{width:40%}
#ppAwardRows .record{margin:0;padding:0;border-radius:0;background:none}
#ppAwardRows label{display:flex;align-items:center;justify-content:center;min-height:32px;margin:0;padding:0;cursor:pointer}
#ppAwardRows input{width:20px;height:20px;margin:0;padding:0}
#resultsPreview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:10px 0}
#resultsPreview section{min-width:0}
#resultsPreview h3{font-size:16px;margin:0 0 6px}
#resultsPreview th:first-child{width:56%}
#resultsPreview tbody td:last-child{font-weight:800;color:var(--gold-light)}
@media(max-width:600px){#resultsPreview{gap:6px}#resultsPreview h3{font-size:13px}#ppAwardRows th,#ppAwardRows td,#resultsPreview th,#resultsPreview td{font-size:11px;padding:5px 2px}}

#ppAwardRows th,#ppAwardRows td{padding-top:2px;padding-bottom:2px}
#ppAwardRows label{min-height:28px}

/* Tap a payer or Self Draw without opening a select menu. */
.payer-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:6px 0 10px}
.payer-buttons .payer-choice{min-height:46px;margin:0;padding:10px 8px;font-size:clamp(14px,3.8vw,18px);line-height:1.2;white-space:normal;overflow-wrap:anywhere}
.payer-buttons .payer-choice[aria-pressed="true"]{background:var(--gold-gradient);color:var(--felt-black);border-color:var(--gold);box-shadow:0 0 0 2px var(--gold)}

/* Active Play for Fun fits the visual viewport; dialogs retain their own scrolling. */
body.casual-layout{padding:0;overflow:hidden;height:100vh;height:100dvh}
body.casual-layout .wrap{max-width:740px;height:100%;margin:0 auto;padding:0}
body.casual-layout header,body.casual-layout .build{display:none}
body.casual-layout #casual.active{height:100%;display:flex;flex-direction:column;gap:4px;padding:max(4px,env(safe-area-inset-top)) max(6px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left))}
body.casual-layout #casual>.topbar{flex:none;min-height:34px;margin:0;align-items:center}
body.casual-layout #casual>.topbar button{font-size:14px;min-height:32px;padding:4px 8px}
body.casual-layout #casual>h2,body.casual-layout #casual>p.message{display:none}
body.casual-layout #casualMessage:not(:empty){flex:none;max-height:44px;overflow:auto;font-size:12px;line-height:1.25;padding:4px 6px;margin:0}
body.casual-layout #casualGame{flex:1;min-height:0;display:flex;flex-direction:column;gap:6px}
.fun-game-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;flex:none}
.fun-game-heading h3{margin:0;font-size:17px;line-height:1.2}
.fun-game-heading>button{min-height:34px;padding:5px 12px;font-size:14px}
body.casual-layout #funCards{flex:1;min-height:0;height:auto;width:100%;max-width:none;margin:0;padding:5px;gap:6px;border-radius:18px;grid-template-rows:repeat(3,minmax(0,1fr))}
body.casual-layout #funCards .table-player-card{min-height:0;min-width:0;padding:20px 4px 5px;border-radius:18px;gap:3px;position:relative}
body.casual-layout #funCards .seat-label{font-size:clamp(10px,2.8vw,13px);line-height:1.1;letter-spacing:.06em}
body.casual-layout #funCards .player-label{font-size:clamp(13px,3.8vw,20px);line-height:1.12;overflow-wrap:break-word;word-break:normal}
body.casual-layout #funCards .player-total{font-size:clamp(23px,7vw,38px);line-height:1.05;letter-spacing:-.5px;white-space:nowrap}
.fun-dealer-badge{position:absolute;right:6px;top:3px;font-size:12px;line-height:1.2;font-weight:750;color:#8a6715}
body.casual-layout #funCards .board-center{align-self:stretch;display:flex;flex-direction:column;justify-content:center;gap:5px;padding:4px 2px;min-height:0;font-size:clamp(11px,3vw,15px);line-height:1.2;border-radius:12px}
body.casual-layout #funCards .dice-control{gap:4px;margin:0}
body.casual-layout #funCards .dice-control button{min-height:40px;padding:3px;width:100%;font-size:26px}
body.casual-layout #funCards .dice-control output{font-size:18px;gap:3px}
body.casual-layout #funCards .die{min-width:16px;min-height:16px;width:22px;height:22px;font-size:13px;border-radius:4px}
body.casual-layout #funCards .dice-total{font-size:18px}
.fun-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;flex:none}
#funTableAdjustments:not([hidden]){display:contents}
.fun-actions>button,.fun-actions #funTableAdjustments>button{margin:0;min-height:44px;padding:6px 3px;font-size:clamp(12px,3.1vw,16px);line-height:1.15;border-radius:10px;white-space:normal}
body.casual-layout #funReviewPending{margin:0;min-height:36px;padding:5px;font-size:13px;flex:none}
#funDetailsOverlay>.panel{width:min(100%,680px);max-height:calc(100dvh - 24px);overflow:auto}
@media(max-height:600px){body.casual-layout #casual>.topbar{min-height:30px}body.casual-layout #casualGame{gap:4px}body.casual-layout #funCards{gap:4px;padding:4px}body.casual-layout #funCards .table-player-card{padding:15px 3px 3px;gap:2px;border-radius:12px}body.casual-layout #funCards .player-label{font-size:13px}body.casual-layout #funCards .player-total{font-size:24px}body.casual-layout #funCards .seat-label{font-size:10px}.fun-dealer-badge{font-size:10px}.fun-actions>button,.fun-actions #funTableAdjustments>button{min-height:40px;font-size:12px}.fun-game-heading h3{font-size:15px}.fun-game-heading>button{min-height:30px;font-size:12px}}
@media(max-height:450px) and (orientation:landscape){body.casual-layout #funCards{grid-template-rows:repeat(3,minmax(0,1fr));width:55%;height:100%;flex:1}body.casual-layout #casualGame{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}body.casual-layout .fun-game-heading,body.casual-layout #funReviewPending{grid-column:1/-1}body.casual-layout #funCards{width:100%;grid-column:1;grid-row:2}.fun-actions{grid-column:2;grid-row:2;align-content:center;grid-template-columns:repeat(2,minmax(0,1fr))}body.casual-layout #funCards .table-player-card{padding:12px 2px 1px}body.casual-layout #funCards .player-label{font-size:11px}body.casual-layout #funCards .player-total{font-size:19px}body.casual-layout #funCards .seat-label{font-size:9px}}

@media(max-height:600px){body.casual-layout #funCards .board-center{gap:2px;padding:2px;font-size:11px}body.casual-layout #funCards .dice-control{gap:2px}body.casual-layout #funCards .dice-control button{min-height:32px;font-size:22px}body.casual-layout #funCards .dice-control output{flex-direction:column!important;font-size:14px;gap:2px}body.casual-layout #funCards .die{width:18px;height:18px;min-width:16px;min-height:16px;font-size:11px}body.casual-layout #funCards .dice-total{font-size:14px}}
@media(max-height:450px) and (orientation:landscape){body.casual-layout #funCards .board-center{font-size:9px;line-height:1.1;padding:1px;gap:2px}body.casual-layout #funCards .die{width:16px;height:16px;font-size:10px}body.casual-layout #funCards .dice-total{font-size:12px}}

/* Quiet, compact game controls; equal columns keep every label aligned. */
#funActions.fun-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:2px 0}
#funActions>button,#funActions #funTableAdjustments>button{min-width:0;min-height:44px;padding:6px 4px;margin:0;border:1px solid rgba(212,175,55,.38);border-radius:9px;background:rgba(212,175,55,.055);color:var(--gold-light);box-shadow:none;font-size:13px;font-weight:650;line-height:1.15;letter-spacing:0;white-space:normal}
#funActions>button:hover,#funActions #funTableAdjustments>button:hover{background:rgba(212,175,55,.13);border-color:var(--gold)}
#funActions>button:active,#funActions #funTableAdjustments>button:active{background:rgba(212,175,55,.22);transform:translateY(1px)}
#funActions>button:last-child{color:var(--muted);border-color:var(--line);background:transparent}
@media(max-height:600px){#funActions>button,#funActions #funTableAdjustments>button{min-height:40px;font-size:12px;padding:5px 3px}}
@media(max-height:450px) and (orientation:landscape){#funActions.fun-actions{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Equal compass tiles and reference actions at the top of casual play. */
body.casual-layout #funCards .table-player-card{align-self:stretch;justify-self:stretch;width:100%;height:100%;max-height:none;box-sizing:border-box}
#funTopReferences{display:flex;gap:5px;flex:none}
#funTopReferences>button{min-height:34px;margin:0;padding:5px 8px;font-size:12px;line-height:1.15;font-weight:650;border:1px solid rgba(212,175,55,.38);border-radius:9px;background:rgba(212,175,55,.055);color:var(--gold-light);box-shadow:none;white-space:nowrap}
#casualGame>.fun-game-heading{gap:6px}
#casualGame>.fun-game-heading>#funGameTitle{flex:1;min-width:0;font-size:14px;line-height:1.15}
#casualGame>.fun-game-heading>button{font-size:12px;padding:5px 8px}

/* Recognize saved games by the players and GP, not the internal game code. */
#funSavedGames .saved-game-card{display:block;width:100%;min-height:0;margin:10px 0;padding:13px 12px;border:1px solid var(--line);border-radius:12px;background:var(--soft);color:var(--ink);box-shadow:none;text-align:left}
.saved-game-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.saved-game-title{font-size:12px;font-weight:650;color:var(--gold-light);line-height:1.35}
.saved-game-status{flex:none;font-size:10px;font-weight:500;color:var(--muted);padding:3px 6px;border:1px solid var(--line);border-radius:20px}
.saved-game-players{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 15px;margin-top:12px}
.saved-game-player{display:flex;align-items:baseline;justify-content:space-between;gap:6px;min-width:0;font-size:13px;font-weight:500;line-height:1.3}
.saved-game-player>span{min-width:0;overflow-wrap:anywhere}
.saved-game-player strong{flex:none;font-size:13px;white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:700}
.saved-game-player strong.positive{color:#9ac5a3}.saved-game-player strong.negative{color:#e0a39a}
#funSavedGames .saved-game-card:hover{border-color:var(--gold)}

/* Swipe a saved game left to reveal its delete action. */
.saved-game-item{position:relative;margin:10px 0;border-radius:12px;overflow:hidden;background:#632e2a}
#funSavedGames .saved-game-item .saved-game-card{margin:0;background:var(--felt-surface,#10271c);position:relative}
.saved-game-swipe{position:relative;z-index:1;transition:transform .18s ease;touch-action:pan-y}
.saved-game-item.is-swiped .saved-game-swipe{transform:translateX(-82px)}
.delete-saved-game{position:absolute;inset:0 0 0 auto;width:82px;height:100%;min-height:44px;margin:0;padding:8px;border:0;border-radius:0;background:#793a32;color:#fff2ec;font-size:13px;font-weight:650;box-shadow:none}
.delete-saved-game:focus-visible{outline:2px solid var(--gold-light);outline-offset:-5px}
.saved-game-item:focus-visible{outline:2px solid var(--gold-light);outline-offset:2px}
.saved-games-hint{margin:4px 0 10px;font-size:12px}
@media(prefers-reduced-motion:reduce){.saved-game-swipe{transition:none}}

/* Center the host entry independently of its edge icons. */
#homeAdminRow{display:grid;grid-template-columns:24px minmax(0,1fr) 24px;text-align:center;align-items:center}
#homeAdminRow[hidden]{display:none}
#homeAdminRow>span{text-align:center}
.tile-row .tile{font-size:14px;overflow-wrap:anywhere}

/* The unseated player sees openings instead of inactive scoring controls. */
#tableBoardPanel.seat-lobby>.dice-control,#tableBoardPanel.seat-lobby>.board-references,#tableBoardPanel.seat-lobby>.board-actions,#tableBoardPanel.seat-lobby>.board-specials,#tableBoardPanel.seat-lobby>#tablePlayerCards{display:none!important}
#tableBoardPanel.seat-lobby:not([hidden]){overflow-y:auto;display:block}
#availableSeatsPanel[hidden]{display:none}
#availableSeatsPanel h3{margin:12px 0 4px}
.available-table{padding:12px;margin:10px 0;border:1px solid var(--line);border-radius:14px;background:var(--panel)}
.available-table h4{margin:0 0 10px;color:var(--gold-light)}
.available-seat-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.available-seat-buttons button{min-height:48px;padding:10px;font-size:15px;white-space:normal}
.available-seat-buttons .returning{border-color:var(--gold);color:var(--gold-light)}

.roster-player-add{padding:12px 0;border-bottom:1px solid var(--line);margin-bottom:14px}
#assignmentRows .seat-line{grid-template-columns:60px minmax(0,1fr) 34px;gap:6px}
.roster-remove{width:32px;height:36px;min-height:36px;padding:0;border:0;background:transparent;color:var(--muted);font-size:24px;box-shadow:none}
.roster-remove:hover{color:var(--gold-light)}
.roster-chips{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 16px}
.roster-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 6px 3px 12px;border:1px solid var(--line);border-radius:999px;background:var(--panel);font-size:15px}
#unseatedRoster h3{margin-bottom:3px}
#hostSeatChoices{margin-top:12px}

.table-name-input{margin:6px 0;font-size:16px}.add-table-controls{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.add-table-controls label{grid-column:1/-1}.add-table-controls input{grid-column:1/-1}

/* Spreadsheet-style table columns with a narrow append control. */
#assignmentRows{grid-template-columns:repeat(var(--table-count,1),minmax(240px,1fr)) 42px;grid-auto-flow:column;gap:12px;overflow-x:auto;align-items:stretch;padding-bottom:8px;scroll-behavior:smooth}
#assignmentRows .seat-card{min-width:0}
.table-add-column{min-width:42px;width:42px;min-height:240px;padding:0;border:1px dashed var(--gold);border-radius:12px;background:transparent;color:var(--gold-light);font-size:30px;box-shadow:none}
.table-add-column:hover{background:rgba(212,175,55,.08)}

/* Calm, compact Admin Desk cards; seating columns retain their existing layout. */
#adminControls{padding:clamp(14px,2.5vw,26px);border-radius:24px;background:linear-gradient(150deg,rgba(16,49,34,.96),rgba(7,28,19,.98));border-color:rgba(212,175,55,.2)}
.admin-desk-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}
.admin-desk-head h2{margin:0;font-size:clamp(24px,4vw,32px);letter-spacing:-.6px}
.admin-eyebrow{margin:0 0 3px;font-size:11px;font-weight:750;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.admin-desk-head>button{min-height:42px;font-size:13px;padding:8px 12px;white-space:nowrap;border-radius:12px}
.admin-event-field{padding:12px 14px;background:rgba(255,255,255,.025);border:1px solid var(--line);border-radius:14px;margin-bottom:18px}
.admin-event-field label{margin:0 0 5px;font-size:12px;color:var(--muted)}
.admin-event-field select{min-height:44px;font-size:16px}
#adminControls>.phase{margin:22px 0 9px;font-size:13px;letter-spacing:.04em;text-transform:none;color:var(--muted)}
#adminControls .admin-group>details{padding:14px;margin:10px 0;border:1px solid rgba(212,175,55,.14);border-radius:16px;background:rgba(255,255,255,.018)}
#adminControls .admin-group>details>summary{display:flex;align-items:center;gap:7px;list-style:none;font-size:16px;line-height:1.35;font-weight:700;letter-spacing:-.2px}
#adminControls .admin-group>details>summary::-webkit-details-marker{display:none}
#adminControls .admin-group>details>summary::after{content:'⌄';margin-left:auto;color:var(--muted);font-size:18px}
#adminControls .admin-group>details[open]>summary::after{transform:rotate(180deg)}
#adminControls .admin-group>details>p{font-size:13px;line-height:1.6}
#adminControls #rosterTools{padding:14px 10px}
#adminControls .wide{font-size:15px;min-height:44px;padding:10px 14px;border-radius:12px}
#adminControls .admin-group>p.small{font-size:13px;line-height:1.6;margin:0 0 10px}
#tableProgress{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:14px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.025);margin-bottom:16px}
.half-time-status{margin:0;color:var(--muted);font-size:14px;line-height:1.4}
.advance-round-button{min-height:44px;padding:10px 16px;font-size:14px;border-radius:12px}
#assignmentRows .seat-card{position:relative}
#assignmentRows .seat-card h3{padding-right:32px}
#assignmentRows .table-delete{position:absolute;top:5px;right:5px;display:flex;align-items:center;justify-content:center;width:36px;min-width:36px;height:36px;min-height:36px;padding:0;background:transparent;border:0;box-shadow:none;color:var(--muted);font-size:25px;line-height:1;border-radius:10px}
#assignmentRows .table-delete:hover{color:var(--gold-light);background:rgba(255,255,255,.05)}
#member:has(#adminControls:not([hidden]))>.panel:has(#memberWelcome){display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:transparent;border:0;box-shadow:none;padding:0 4px 12px}
#member:has(#adminControls:not([hidden])) #memberWelcome{flex:1 0 100%;margin:0;font-size:20px}
#member:has(#adminControls:not([hidden])) #memberRole{flex:1;margin:0;font-size:13px}
#member:has(#adminControls:not([hidden]))>.panel:has(#memberWelcome)>.wide{width:auto;margin:0;min-height:38px;font-size:12px;padding:8px 10px;border-radius:10px}
@media(max-width:400px){.admin-desk-head{gap:8px}.admin-desk-head>button{font-size:12px;padding:8px}.advance-round-button{width:100%}}

/* Stats: readable names and GP on a phone; share the same shell for both views. */
.stats-main-tabs{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:14px 0 18px}.stats-main-tabs button{font-size:15px;min-height:46px;padding:9px 6px}
#watch .tabs button{font-size:14px;padding:10px 6px;min-width:0}#watch .topbar{margin-bottom:8px}
.live-league-columns.single-league{grid-template-columns:minmax(0,1fr)}
.live-league-columns .season-player{display:flex;align-items:baseline;gap:8px;min-width:0;overflow-wrap:normal;word-break:normal}
.live-league-columns .live-rank{flex:0 0 1.5em;color:var(--muted);font-size:.72em}.live-league-columns .live-name{min-width:0;white-space:normal;overflow-wrap:normal;word-break:normal}
#home .tile-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}#home .tile-row .tile{min-width:0;padding:14px 5px}#home .tile-row .tile span{font-size:12px;line-height:1.25}
@media(max-width:600px){
 #watch .panel{padding:14px 12px}#watch .watch-head label{font-size:13px;margin:0}#watchEvent{font-size:14px;padding:11px 9px}#watchStatus{font-size:12px;margin:8px 0 12px;line-height:1.4}
 #watch .live-league-columns{grid-template-columns:minmax(0,1fr);gap:14px}#watch .live-league-columns .season-column{padding:10px 12px}#watch .live-league-columns .season-ranking li{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 0}
 #watch .live-league-columns .season-player,#watch .live-league-columns .season-points{font-size:clamp(21px,6vw,29px);line-height:1.15}#watch .live-league-columns .season-points{white-space:nowrap}#watch .live-league-columns .season-column h4{font-size:18px}
 #watch .stats-summary-table{font-size:12px;table-layout:fixed}#watch .stats-summary-table th:first-child{width:31%;white-space:normal}#watch .stats-summary-table th,#watch .stats-summary-table td{padding:9px 2px;font-size:12px}
 #home .tile-row{gap:5px}#home .tile-row .tile .ico{width:22px;height:22px}#home .tile-row .tile span{font-size:11px}
}

.signup-name-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.signup-capacity{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin:16px 0}.signup-capacity-card{padding:12px;border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;gap:4px}.signup-capacity-card strong{font-size:16px}.signup-capacity-card span{font-size:12px;color:var(--muted)}.rsvp-consent{display:flex;gap:9px;align-items:center;font-size:14px;font-weight:400}.rsvp-consent input{width:20px;height:20px;flex:none}.registration-person{padding:10px 0;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:3px}.registration-person span{font-size:12px;color:var(--muted);overflow-wrap:anywhere}#registrationShareLink{font-size:13px}#eventSignupForm label{font-size:14px}#eventSignupForm input,#eventSignupForm select{font-size:16px}#eventSignupForm .wide{min-height:46px}#eventSignupReceipt{padding:10px 0}#registrationAdminRows{max-height:360px;overflow:auto;margin:14px 0}
@media(max-width:420px){.signup-name-grid{gap:8px}.event-signup-card{padding:16px 12px}}

.registration-person{position:relative;padding-right:35px}.registration-person>.link{position:absolute;right:0;top:8px;width:30px;height:30px;text-decoration:none;font-size:22px}

#statsPlayersPanel>.panel>h2{font-size:20px;margin-bottom:8px}.stats-filters{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}.stats-filters label{font-size:12px;margin:6px 0 4px}.stats-filters select,.stats-filters input{font-size:16px;min-width:0;padding:10px 8px;height:44px}.stats-key{margin:10px 0;font-size:12px}.stats-key summary{color:var(--muted);font-weight:500}#statsMessage{font-size:11px;padding:6px 8px;margin:8px 0}#playerStatsCards>h3{font-size:15px;margin:12px 0 6px}
@media(max-width:600px){.event-signup-card>h2{font-size:24px;line-height:1.2}.event-signup-card>.eyebrow{margin:0 0 6px;font-size:11px}.event-signup-card>#eventSignupDate{font-size:14px;margin:8px 0}.signup-capacity{margin:12px 0}.signup-capacity-card{padding:9px 10px}#eventSignupForm label{font-size:12px;margin:10px 0 4px}#eventSignupForm input:not([type=checkbox]),#eventSignupForm select{height:44px;padding:9px 10px}#eventSignupForm .rsvp-consent{font-size:12px;margin:12px 0;min-height:24px}#eventSignupForm .small{font-size:11px;line-height:1.45;margin:8px 0}#eventSignupForm .wide{margin-top:10px}.event-signup-card>.link{font-size:12px;margin-top:14px}}

/* Host desk: four compact work areas instead of one long expanded form. */
.admin-section-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;padding:4px;border:1px solid var(--line);border-radius:13px;margin:12px 0 16px;background:rgba(0,0,0,.12)}.admin-section-nav button{min-width:0;font-size:13px;padding:9px 3px;min-height:42px;border-radius:9px}.admin-section-nav button.active{background:var(--gold-gradient);color:#102015}.admin-section-nav .count-pill{font-size:10px;padding:1px 5px;margin-left:3px}.admin-group[hidden]{display:none!important}.admin-group>details:first-child{margin-top:0!important}.admin-other-events{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.admin-other-events:empty{display:none}.admin-other-events button{font-size:12px;padding:8px 10px}.dismissible-notice{position:relative;padding-right:42px!important}.message .notice-close{position:absolute;right:5px;top:4px;background:transparent!important;color:inherit!important;box-shadow:none!important;border:0!important;padding:4px 8px;font-size:22px;min-width:32px;min-height:32px}.initial-dealer-choices{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}.initial-dealer-choices button{min-height:52px;font-size:17px}#initialDealerOverlay .panel{max-width:520px;width:100%}.pp-guide{font-size:12px;margin:12px 0}.pp-guide summary{color:var(--gold-light);font-size:12px}.pp-guide p{font-size:12px;line-height:1.6}#rsvpEntryGate p{font-size:14px}#rsvpEntryGate .wide{font-size:15px;margin-top:10px}#rsvpMemberNote{padding:10px;border-radius:10px;background:rgba(212,175,55,.08)}#registrationAdminRows .registration-person{padding-right:0}#registrationAdminRows .registration-person>label{font-size:12px;margin-top:8px}#registrationAdminRows .registration-person>select{font-size:14px;padding:9px}#registrationAdminRows .actions button{font-size:12px;padding:9px 6px;min-height:40px}#registrationAdminRows .registration-person>strong{font-size:17px}#rsvpReceiptTitle{font-size:22px}#rsvpReceiptDetail{font-size:14px;line-height:1.6}

#member:has(#adminControls:not([hidden]))>.panel:first-of-type{display:none}
.admin-section-nav button{position:relative}.admin-section-nav .count-pill{position:absolute;top:-3px;right:-1px;margin:0;min-width:17px;text-align:center}.admin-section-nav .count-pill[hidden]{display:none!important}@media(max-width:360px){.admin-section-nav button{font-size:12px}}

/* House rules: one numbered list, without repeated section headings. */
.house-rule-list{margin:0;padding-left:1.6em}.house-rule-list li{padding:12px 0 12px 6px;border-bottom:1px solid var(--line);font-size:15px;line-height:1.6}.house-rule-list li:last-child{border-bottom:0}.house-rule-list li::marker{color:var(--gold-light);font-weight:700}.house-rule-list strong{display:block;font-size:15px}.house-rule-list p{margin:4px 0 0;font-size:15px;white-space:pre-wrap}.house-rule-list p:first-child{margin-top:0}

#watch .seg.tabs{grid-template-columns:repeat(2,minmax(0,1fr))}

/* Shared landing-page tiles above the scoring board; table/history below. */
#playing .playing-links{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;flex-shrink:0}#playing .playing-links .tile{padding:10px 6px;min-height:62px;font-size:13px}#playing .playing-links .tile .ico{width:22px;height:22px}#playing .playing-links .tile span{font-size:12px;line-height:1.25}
.event-pin-scoring .desk-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}body.playing-layout .desk-tabs{grid-template-columns:repeat(4,minmax(0,1fr))}body.playing-layout .event-pin-scoring .desk-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}
.live-league-columns .table-tag.table-tone-3{color:#a8ccff;border-color:#658bd5;background:#658bd526}.live-league-columns .table-tag.table-tone-4{color:#d6b5ff;border-color:#aa78d5;background:#aa78d526}.live-league-columns .table-tag.table-tone-5{color:#ffe19a;border-color:#c3a04a;background:#c3a04a26}.live-league-columns .table-tag.table-tone-6{color:#9fe1df;border-color:#49aba6;background:#49aba626}
.live-league-columns .season-ranking li:is(.table-tone-3,.table-tone-4,.table-tone-5,.table-tone-6){border-left:5px solid;padding-left:10px;padding-right:8px;border-radius:6px;margin-bottom:3px;border-bottom:0}.live-league-columns .season-ranking li.table-tone-3{border-left-color:#658bd5;background:#658bd526}.live-league-columns .season-ranking li.table-tone-4{border-left-color:#aa78d5;background:#aa78d526}.live-league-columns .season-ranking li.table-tone-5{border-left-color:#c3a04a;background:#c3a04a26}.live-league-columns .season-ranking li.table-tone-6{border-left-color:#49aba6;background:#49aba626}

/* The shared brand always leads home; Back returns to the previous page. */
header.topnav{position:sticky;top:0;z-index:25;background:var(--felt-black,#061b12);flex-shrink:0}#siteBackRow{margin:0 2px 10px;flex-shrink:0}#siteBackButton{min-height:32px;padding:4px 6px;font-size:14px}
body.playing-layout .wrap,body.casual-layout .wrap{display:flex;flex-direction:column;height:100dvh;min-height:0}body.playing-layout header.topnav,body.casual-layout header.topnav{display:flex!important;margin:0;padding:6px 10px;min-height:50px}body.playing-layout #siteBackRow,body.casual-layout #siteBackRow{margin:0 8px 2px}body.playing-layout .score-desk.active,body.casual-layout #casual.active{height:auto;flex:1;min-height:0}body.playing-layout .score-desk.active{padding-top:0}.score-desk .desk-top{grid-template-columns:minmax(0,1fr) 44px;min-height:40px}.playing-event-name{font-size:17px;line-height:1.25;margin:2px 0 4px;text-align:center;flex-shrink:0;overflow-wrap:anywhere}

/* Event date, table selector and a compact two-row game toolbar. */
.playing-event-date{font-size:13px;color:var(--muted);text-align:center;margin:0 0 4px;flex-shrink:0}.score-desk .desk-top{display:flex;justify-content:flex-end;min-height:0;height:0;padding:0;position:relative}.score-desk .desk-top #deskMenuButton{position:absolute;right:0;bottom:2px;transform:translateY(-4px);width:32px;height:32px;min-width:32px;min-height:32px}.playing-event-name{padding:0 34px}.game-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:8px 0}.game-controls .board-specials,.game-controls .board-actions,.game-controls #boardAdjustments:not([hidden]){display:contents!important}.game-controls button{min-width:0;min-height:46px;padding:7px 3px!important;font-size:clamp(12px,2.5vw,15px)!important;line-height:1.25}.game-controls #boardLiabilityButton{display:none!important}#tableBoardPanel.seat-lobby>.game-controls{display:none}
#tableBoardPanel:not(.seat-lobby){display:flex;flex-direction:column;min-height:0}#tablePlayerCards{flex:1;height:auto;min-height:250px;width:100%;grid-template-rows:repeat(3,minmax(0,1fr));margin:6px auto}#boardStatus:empty{display:none}.game-controls{flex-shrink:0}

/* Player cards keep room for their contents; smaller screens scroll the board. */
#tablePlayerCards{flex:none;min-height:450px;height:clamp(450px,60dvh,620px);grid-template-rows:repeat(3,minmax(140px,1fr));gap:8px}#tablePlayerCards .table-player-card{min-height:140px;padding:10px 5px;gap:5px;justify-content:center}#tablePlayerCards .seat-label{font-size:clamp(11px,2.8vw,14px);line-height:1.2;flex-shrink:0}#tablePlayerCards .player-label{font-size:clamp(14px,3.5vw,20px);line-height:1.2;flex-shrink:0}#tablePlayerCards .player-total{font-size:clamp(26px,7vw,40px);line-height:1.1;flex-shrink:0}.history-back{display:block;margin-bottom:10px}
.name-rail{display:flex;gap:10px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;touch-action:pan-x;padding:8px 2px 14px;min-height:76px}.name-option{flex:0 0 138px;display:flex;align-items:center;justify-content:center;min-height:60px;padding:10px;text-align:center;scroll-snap-align:center;border:1px solid var(--line);border-radius:14px;font-size:16px;cursor:pointer;background:var(--field)}.name-option[aria-selected=true]{border-color:var(--gold);background:rgba(212,175,55,.18);box-shadow:inset 0 0 0 1px var(--gold)}.name-option:focus-visible{outline:2px solid var(--gold)}.swap-picker-label{font-weight:700;font-size:14px;margin:14px 0 2px}#weeklySeatSwapOverlay .panel{max-height:calc(100dvh - 24px);overflow-y:auto}
#seasonTables .season-columns{grid-template-columns:repeat(2,minmax(0,1fr))}#seasonTables .season-column h4{font-size:22px}#seasonTables .season-player{font-size:20px}#seasonTables .season-points{font-size:18px}.season-pp-panel{margin:16px 0 0;border-top:1px solid var(--line);padding-top:12px}.season-pp-panel>summary{font-size:14px;color:var(--muted)}#seasonTables .season-pp-panel .season-player,#seasonTables .season-pp-panel .season-points{font-size:15px}.season-pp-panel .season-column{margin-top:10px;background:transparent}@media(max-width:600px){#seasonTables .season-columns{grid-template-columns:minmax(0,1fr)}}
.name-rail{padding-left:max(2px,calc(50% - 69px));padding-right:max(2px,calc(50% - 69px))}
#tablePlayerCards .table-player-card{width:100%;max-width:180px;justify-self:center}#tablePlayerCards .board-center{width:100%;max-width:180px;justify-self:center}

/* League standings take the space; Play Points unfolds in the right column. */
#seasonTables .season-board{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 56px;gap:10px;align-items:start}#seasonTables .season-board>h3{grid-column:1/-1}#seasonTables .season-board:has(>.season-pp-panel[open]){grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,.75fr)}#seasonTables .season-columns{display:contents}#seasonTables .season-pp-panel{grid-column:3;margin:0;padding:0;border:1px solid var(--line);border-radius:12px;min-width:0}#seasonTables .season-pp-panel>summary{display:flex;flex-direction:column;align-items:center;gap:5px;min-height:76px;padding:9px 4px;text-align:center;font-size:12px;line-height:1.25;list-style:none;overflow-wrap:normal}#seasonTables .season-pp-panel>summary::-webkit-details-marker{display:none}#seasonTables .season-pp-panel>summary:before{content:'+';font-size:22px;color:var(--gold-light)}#seasonTables .season-pp-panel[open]>summary:before{content:'−'}#seasonTables .season-pp-panel .season-column{margin:0;border:0;padding:8px;min-width:0}#seasonTables .season-column{min-width:0;padding:10px}#seasonTables .season-column h4{font-size:clamp(15px,3.6vw,22px)}#seasonTables .season-player{font-size:clamp(15px,3.8vw,20px)}#seasonTables .season-points{font-size:clamp(14px,3.5vw,18px)}#seasonTables .season-pp-panel .season-player,#seasonTables .season-pp-panel .season-points{font-size:13px}
#homeStandings .season-columns{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,.65fr)}#homeStandings .is-play-points{padding-left:7px;padding-right:7px}#homeStandings .is-play-points h4{font-size:clamp(12px,2.8vw,16px)}#homeStandings .is-play-points .season-player,#homeStandings .is-play-points .season-points{font-size:clamp(11px,2.7vw,15px)}.game-controls #boardHkPenalty{grid-column:span 2}
/* On normal-height phones, fit the full board without shrinking card contents. */
@media(max-width:600px){body.playing-layout header.topnav{min-height:46px;padding-top:3px;padding-bottom:3px}body.playing-layout #siteBackButton{min-height:28px;font-size:13px}#playing .playing-links .tile{min-height:50px;padding:6px}#playing .playing-links .tile .ico{width:18px;height:18px}.playing-event-name{font-size:15px;line-height:1.2;margin:2px 0}.playing-event-date{font-size:12px;margin:0 0 2px}#boardTablePicker label{font-size:12px;margin:2px 0}#boardSelectedTable{min-height:36px;height:36px;font-size:16px;padding:5px 8px}.game-controls{gap:5px;margin:6px 0}.game-controls button{min-height:42px}#tablePlayerCards{flex:1;min-height:342px;height:auto;grid-template-rows:repeat(3,minmax(108px,1fr));gap:6px;margin:4px auto}#tablePlayerCards .table-player-card{min-height:108px;padding:6px 3px;gap:3px}#tablePlayerCards .seat-label{font-size:11px}#tablePlayerCards .player-label{font-size:clamp(13px,3.5vw,16px)}#tablePlayerCards .player-total{font-size:clamp(26px,7vw,32px)}#boardStatus{font-size:11px;line-height:1.3;margin:3px 0}}
#homeStandings .season-column:not(.is-play-points) h4{font-size:clamp(13px,3.2vw,18px)}#homeStandings .season-column:not(.is-play-points) .season-player{font-size:clamp(12px,3vw,16px)}#homeStandings .season-column:not(.is-play-points) .season-points{font-size:clamp(11px,2.8vw,14px)}#homeStandings .is-play-points .season-player,#homeStandings .is-play-points .season-points{font-size:clamp(11px,2.7vw,13px)}
@media(max-width:600px) and (max-height:750px){#playing .playing-links .tile{min-height:44px;padding:4px;gap:3px}#playing .playing-links .tile .ico{width:16px;height:16px}#playing .playing-links .tile span{font-size:11px}.playing-event-name{font-size:14px}#boardSelectedTable{min-height:32px;height:32px}.game-controls button,.table-board .game-controls .board-actions button{min-height:38px;padding:5px 2px!important;font-size:11px!important}#tablePlayerCards{min-height:300px;grid-template-rows:repeat(3,minmax(96px,1fr));gap:4px}#tablePlayerCards .table-player-card{min-height:96px;padding:4px 3px;gap:2px}#tablePlayerCards .seat-label{font-size:10px}#tablePlayerCards .player-label{font-size:13px}#tablePlayerCards .player-total{font-size:26px}}
@media(max-width:600px){#tablePlayerCards .table-player-card .player-corner{left:auto;right:4px;top:4px;justify-content:flex-end;gap:1px}#tablePlayerCards .dealer-sun{font-size:12px}#tablePlayerCards .dealer-multiplier{font-size:9px}}

/* Quieter Play Points and centered public standings titles. */
#seasonTables .season-board{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 42px}#seasonTables .season-board:has(>.season-pp-panel[open]){grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,.55fr)}#seasonTables .season-pp-panel:not([open])>summary{font-size:11px}#homeStandings .season-columns{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,.45fr)}.season-column>h4,.season-board>h3,#homeSeasonLabel,#watch>h2,#watchPaneSeason>h2,.screen>h2,#eventSignupTitle{text-align:center}#home .card-head{justify-content:center}#home .hero{text-align:center}
.upcoming-event-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:start;padding:18px 0;border-top:1px solid var(--line)}.event-list-main{min-width:0}.event-list-main h3{font-size:20px;line-height:1.3;margin:0 0 6px;overflow-wrap:anywhere}.event-list-date{font-size:14px;color:var(--muted);margin:0}.event-signup-button{min-height:40px;padding:9px 12px;font-size:14px;white-space:nowrap}.event-description{margin:10px 0 0;font-size:14px}.event-description>summary{list-style:none;font-weight:400}.event-description>summary::-webkit-details-marker{display:none}.description-preview{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;line-height:1.5;color:var(--muted)}.description-more{display:inline-block;color:var(--gold-light);font-weight:700;font-size:12px;margin-top:4px}.description-full{font-size:14px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0}.event-description[open] .description-preview{display:none}#eventSignupDescription{margin-bottom:10px}.save-ldm{display:block;margin:12px auto 0;font-size:12px!important;min-height:30px;padding:4px 8px}#saveLdmOverlay>.panel{max-width:420px;width:100%;font-size:15px;line-height:1.6}#saveLdmOverlay h2{font-size:22px;margin:12px 0}
@media(max-width:400px){.upcoming-event-card{gap:9px}.event-list-main h3{font-size:17px}.event-list-date{font-size:12px}.event-signup-button{font-size:12px;padding:8px 10px}}
#homeStandings .is-play-points h4{font-size:clamp(11px,2.6vw,14px)}@media(max-width:400px){#homeStandings .is-play-points{padding-left:3px;padding-right:3px}}

/* A single ivory hand card for weekly and casual scoring. */
.win-popup>.panel{background:linear-gradient(145deg,#fffdf6,#f4eedf)!important;color:#143c2b;border:1px solid #e6dcc5;border-radius:24px;padding:20px;max-width:560px;width:100%;box-shadow:0 20px 70px #0007;max-height:calc(100dvh - 24px);overflow:auto}
.win-popup .score-heading{background:transparent!important;position:static;padding:0;justify-content:center!important}.win-popup h2,.win-popup h3{color:#103c2b;text-align:center;font-size:clamp(24px,6vw,34px);margin:0 0 16px;line-height:1.15}.win-popup label{color:#6d705c;font-size:13px;text-align:center;margin:12px 0 7px}.win-popup .locked-winner,.win-popup .win-note,.win-popup #funEntryTotals,.win-popup #tableEntryHint{display:none!important}.win-popup .entry-grid{gap:6px}.win-popup select,.win-popup input{background:#fffaf0;color:#143c2b;border-color:#d6cdb7}.win-popup .payer-buttons,.win-popup .winner-choices{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.win-popup .payer-choice,.win-popup .winner-choices button{background:#fbf7ec;color:#234536;border:1px solid #d9d0bb;box-shadow:0 3px 6px #45371409;min-height:44px;margin:0;padding:7px 4px;font-size:13px;border-radius:12px;overflow-wrap:anywhere;line-height:1.2}.win-popup button[aria-pressed=true]{background:#12452f;color:#fff4cb;border-color:#d4ad43;box-shadow:0 0 0 1px #d4ad43}.win-popup .multi-toggle,.win-popup #tableLiabilityButton,.win-popup #funLiabilityButton{min-height:32px;width:auto;padding:5px 9px;margin:8px 3px 0 0;background:transparent;color:#45654d;box-shadow:none;border:1px solid #d9d0bb;font-size:12px;border-radius:10px}.win-popup .multi-toggle[aria-pressed=true],.win-popup #tableLiabilityButton[aria-pressed=true],.win-popup #funLiabilityButton[aria-pressed=true]{background:#12452f;color:#fff4cb}.win-popup .hk-win-methods{display:inline}.win-popup #tableInlineScore>p,.win-popup #funInlineScore>p{font-size:13px;line-height:1.5;color:#63745f;text-align:center;margin:12px 0}.win-popup .hktw-payment{background:transparent;border:0;border-top:1px solid #ded6c3;padding:10px 0;margin:4px 0}.win-popup .hktw-payment h3{font-size:13px;color:#65715d;margin:3px 0 10px}.win-popup .hktw-math{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;text-align:center}.win-popup .hktw-math>div{background:transparent;border:0;display:flex;flex-direction:column-reverse;padding:0}.win-popup .hktw-math small{font-size:12px;color:#7b7b66}.win-popup .hktw-math strong{font-size:24px;color:#153d2c}.win-popup .hktw-math .hktw-total{grid-column:1/-1;flex-direction:row;justify-content:center;align-items:baseline;gap:8px;padding-top:8px}.win-popup .hktw-math .hktw-total strong{font-size:30px}.win-popup .win-total{border-top:1px solid #ded6c3;padding:10px 0;text-align:center;display:flex;justify-content:space-evenly;gap:8px}.win-popup .win-total small{display:block;color:#767d65;font-size:12px}.win-popup .win-total strong{font-size:34px;line-height:1.3;color:#145139}.win-popup .popup-exit{position:static;background:transparent;border:0;padding:12px 0 0}.win-popup .entry-actions{display:flex;gap:8px}.win-popup .entry-actions>button{min-height:48px;margin:0;border-radius:16px;font-size:18px}.win-popup .entry-actions>button[type=submit]{flex:1;background:linear-gradient(#174e37,#073523);color:#fff3c9;border:2px solid #d7b34f;box-shadow:0 3px 8px #86651433}.win-popup .entry-actions>.entry-cancel{flex:0 0 auto;min-height:44px;background:transparent;color:#69755f;border:1px solid #d9d0bb;box-shadow:none;font-size:13px;padding:8px 12px}.win-popup .message:empty{display:none}.win-popup .message{color:#a23f25}
.fan-source,.tap-select-source{display:none!important}.fan-wheel{display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;touch-action:pan-x;position:relative;padding:8px calc(50% - 30px);border:1px solid #ded6c3;border-radius:40px;width:100%;box-sizing:border-box;scrollbar-width:none;background:#faf6eb;min-height:76px}.fan-wheel::-webkit-scrollbar{display:none}.fan-wheel .fan-step{flex:0 0 60px;width:60px;height:60px;min-height:60px;padding:0;margin:0;border:2px solid transparent;border-radius:50%;background:transparent;color:#244a37;box-shadow:none;font-size:23px;font-weight:750;scroll-snap-align:center}.fan-wheel .fan-step[aria-pressed=true]{background:#12452f;color:#fff4cb;border-color:#d4ad43;box-shadow:0 2px 8px #6b582133}.fan-wheel .fan-step[data-value=custom]{font-size:12px}.fan-wheel .fan-step:focus-visible{outline:2px solid #b58f20;outline-offset:2px}
/* Keep the same header, reference tiles, toolbar and compass board in casual play. */
body.casual-layout #casual>.topbar{display:none}body.casual-layout #casualGame{overflow-y:auto;gap:5px}#funTopReferences.playing-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}#funTopReferences.playing-links>.tile{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;min-height:62px;background:var(--panel-solid);border:1px solid var(--line);border-radius:16px;white-space:normal;font-size:13px;padding:8px}#funTopReferences .ico{width:22px;height:22px}#casualGame>.fun-game-heading>#funGameTitle{font-size:15px;text-align:center}#casualGame>.fun-game-heading{padding:2px 0}#funActions.fun-actions{grid-template-columns:repeat(4,minmax(0,1fr));flex-shrink:0;gap:5px}#funActions #funTableAdjustments:not([hidden]){display:contents}#funActions>button,#funActions #funTableAdjustments>button{min-height:42px;font-size:12px;padding:5px 3px}body.casual-layout #funCards{flex:1 0 342px;min-height:342px;grid-template-rows:repeat(3,minmax(108px,1fr));gap:6px}body.casual-layout #funCards .table-player-card{min-height:108px;max-width:180px;justify-self:center;justify-content:center;height:100%;padding:8px 3px;gap:3px}body.casual-layout #funCards .board-center{max-width:180px;width:100%;justify-self:center}body.casual-layout #funCards .player-label{font-size:clamp(13px,3.5vw,18px)}body.casual-layout #funCards .player-total{font-size:clamp(26px,7vw,34px)}body.casual-layout #funCards .fun-dealer-badge{top:4px;right:4px;font-size:11px}#funDetailsOverlay>.panel{max-height:calc(100dvh - 24px);overflow:auto}
@media(max-width:600px){#funTopReferences.playing-links>.tile{min-height:50px;padding:5px;font-size:12px}#funTopReferences .ico{width:18px;height:18px}.win-popup>.panel{padding:16px 12px;border-radius:20px}.win-popup .payer-choice,.win-popup .winner-choices button{font-size:12px}.win-popup .hktw-math strong{font-size:22px}}
@media(max-width:600px) and (max-height:750px){#funTopReferences.playing-links>.tile{min-height:44px;font-size:11px}body.casual-layout #funCards{flex-basis:300px;min-height:300px;grid-template-rows:repeat(3,minmax(96px,1fr))}body.casual-layout #funCards .table-player-card{min-height:96px}#funActions>button,#funActions #funTableAdjustments>button{min-height:38px;font-size:11px}}
/* Dialogs stay above the shared sticky brand bar. */
.score-overlay{z-index:100}
.win-popup .entry-actions>button{width:auto;min-width:0}.win-popup .payer-buttons .payer-choice[aria-pressed=true]{background:#12452f;color:#fff4cb;border-color:#d4ad43;box-shadow:0 0 0 1px #d4ad43}.win-popup>.panel{overflow-x:hidden}

/* A quiet save shortcut immediately below the shared LDM header. */
#saveLdmButton.save-ldm{display:block;align-self:flex-start;flex-shrink:0;min-height:18px;font-size:10px;line-height:1.2;padding:0 3px;margin:-10px 0 10px;color:var(--muted);width:auto;letter-spacing:.02em}body.playing-layout #saveLdmButton,body.casual-layout #saveLdmButton{margin:0 10px 3px}.save-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}.save-options>button{min-width:0;min-height:88px;padding:12px 8px;display:flex;flex-direction:column;justify-content:center;gap:6px}.save-options span{font-size:13px;color:var(--muted)}.save-options strong{font-size:15px}#saveLdmInstructions{line-height:1.5}
/* League cards fold into a slim rail in Stats; home standings stay open. */
.league-panel{padding:0;border:1px solid var(--line);border-radius:14px;min-width:0;overflow:hidden}.league-panel>summary{display:flex;justify-content:center;align-items:center;gap:8px;list-style:none;padding:12px 7px;color:var(--gold-light);font-size:clamp(14px,3vw,22px);font-weight:750;line-height:1.3;text-align:center;cursor:pointer}.league-panel>summary::-webkit-details-marker{display:none}.league-panel>summary:before{content:'+';font-size:21px;font-weight:500;flex-shrink:0}.league-panel[open]>summary:before{content:'−'}.league-panel:not([open])>summary{min-height:128px;writing-mode:vertical-rl;font-size:13px;gap:10px;padding:10px 8px;width:100%}.league-panel>.season-column{border:0;border-radius:0!important;margin:0!important;background:transparent}.league-panel:not([open])>.season-column{display:none}#seasonTables .season-board>.season-columns{display:contents}#seasonTables .season-pp-panel{grid-column:auto}.live-league-columns .league-panel>.season-column{padding-top:0}#seasonTables .league-panel>summary{font-size:clamp(13px,3vw,20px)}#seasonTables .league-panel:not([open])>summary{font-size:12px}#seasonTables .league-panel .season-player{overflow-wrap:anywhere}#playerStatsCards h3{text-align:center}
.signup-capacity-card.is-full{opacity:.6}.signup-capacity-card.is-full strong{color:var(--muted)}#rsvpLeague option:disabled{color:#999}#rsvpFloaterFields{padding:10px 12px;border:1px solid var(--line);border-radius:12px;margin:12px 0;background:var(--soft)}.floater-explanation{line-height:1.6}.admin-group>.roster-player-add{padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--soft);margin:0 0 12px}.admin-group>.roster-player-add h3{margin:0 0 8px;font-size:18px}.admin-group>.roster-player-add input{margin-bottom:8px}
#watchPaneSeason:fullscreen{background:var(--felt-black);color:var(--ink);padding:clamp(16px,3vw,40px);overflow:auto;width:100vw;height:100vh;margin:0;border-radius:0}#watchPaneSeason:fullscreen::backdrop{background:var(--felt-black)}#watchPaneSeason:fullscreen .watch-head{display:flex;justify-content:space-between;align-items:center}#watchPaneSeason:fullscreen .season-board{gap:20px}#watchPaneSeason:fullscreen .league-panel[open]>summary{font-size:clamp(22px,3vw,38px)}#watchPaneSeason:fullscreen .league-panel .season-player,#watchPaneSeason:fullscreen .league-panel .season-points{font-size:clamp(22px,2.5vw,36px)}

/* Admin keeps the shared navigation and one clear scoring shortcut. */
#member:has(#adminControls:not([hidden])) #memberTopBar,#member:has(#adminControls:not([hidden])) #memberWelcome,#member:has(#adminControls:not([hidden])) #memberRole{display:none!important}#member:has(#adminControls:not([hidden]))>.member-summary{display:flex!important;justify-content:flex-end;padding:0 0 12px;margin:0;background:transparent;border:0;box-shadow:none}#memberQuickLinks{margin-bottom:12px}#memberQuickLinks .tile{min-width:0}#memberQuickLinks .tile span{overflow-wrap:normal}#member .admin-desk-head{margin-bottom:14px}#home>#saveLdmButton{margin-top:-10px;margin-bottom:12px}.signup-capacity-card.is-full{opacity:1}.signup-capacity-card.is-full>strong,.signup-capacity-card.is-full>span{opacity:.6}.join-waitlist{min-height:40px;padding:8px 10px;margin:9px 0 0;font-size:13px;line-height:1.3;white-space:normal;max-width:100%}.registration-requested{display:block;font-size:12px;color:var(--muted);line-height:1.5;margin:4px 0}
#adminControls #rosterTools.roster-assignment{border:0;background:transparent;box-shadow:none;padding:0;margin:0 0 12px}.roster-chip .roster-seat-name{min-height:36px;width:auto;padding:6px 8px;margin:0;border:0;border-radius:8px;background:transparent;box-shadow:none;color:var(--ink);font-size:14px;font-weight:650;line-height:1.3}.roster-chip .roster-seat-name:hover{background:var(--soft);color:var(--gold-light)}.roster-chip .roster-seat-name:focus-visible{outline:2px solid var(--gold);outline-offset:1px}

/* Tap choices for casual dealer and base adjustments. */
.casual-tap-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:8px 0 16px}.casual-tap-choices button{margin:0;min-width:0;min-height:48px;white-space:normal;overflow-wrap:anywhere}.casual-tap-choices button[aria-pressed=true]{border-color:var(--gold,#d4ad43);background:#23543c;color:#fff4cb;box-shadow:0 0 0 2px #d4ad4355}.casual-tap-choices.base-choices{grid-template-columns:repeat(3,minmax(0,1fr))}.base-choices button{font-size:clamp(14px,3.5vw,18px);padding:10px 6px}

/* Dealer picker mirrors the exact physical positions of the scoring board. */
#funEntryOverlay.dealer-popup>.panel{width:min(420px,calc(100vw - 24px));padding:20px;box-sizing:border-box}#funEntryOverlay.dealer-popup h3{text-align:center;margin:0 0 12px;font-size:24px}#funEntryOverlay.dealer-popup #funPlayerLabel{display:none}
.mini-dealer-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,82px);gap:7px;padding:10px;margin:0 0 16px;border:1px solid #b9a35955;border-radius:22px;background:radial-gradient(ellipse at center,#184a32,#08271a);box-sizing:border-box}
.mini-dealer-board .mini-dealer-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-width:0;width:100%;height:82px;min-height:82px;padding:7px 4px;margin:0;background:#faf7ee;color:#172c20;border:2px solid transparent;border-radius:15px;box-shadow:0 4px 0 #123c2a;font-size:clamp(12px,3.5vw,16px);line-height:1.15;overflow-wrap:anywhere}.mini-dealer-card .mini-wind{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#736a50}.mini-dealer-board .mini-dealer-card[aria-pressed=true]{background:#fff3c4;color:#172c20;border-color:#d5ae35;box-shadow:0 4px 0 #967619}.mini-dealer-card.seat-south{grid-column:2;grid-row:1}.mini-dealer-card.seat-west{grid-column:1;grid-row:2}.mini-dealer-card.seat-east{grid-column:3;grid-row:2}.mini-dealer-card.seat-north{grid-column:2;grid-row:3}.mini-dealer-center{grid-column:2;grid-row:2;display:grid;place-items:center;font-size:28px}

.mini-dealer-board .mini-dealer-card{position:relative}.mini-dealer-sun{position:absolute;top:3px;right:4px;font-size:16px;line-height:1}.mini-dealer-card[aria-pressed=true]{padding-top:16px}.member-pin-reset{margin-top:12px}

.event-pin-controls{display:flex;align-items:center;gap:10px}.event-pin-controls input{flex:1;min-width:0;letter-spacing:.2em;font-size:24px}.event-pin-controls button{flex-shrink:0;margin:0}#eventPinAdmin{margin-top:0}#eventPinAdmin label{margin-top:0}

#registrationAdminRows .registration-event-label{display:block;color:var(--gold-light,#f5df9a);font-size:14px;font-weight:650;line-height:1.4;overflow-wrap:anywhere;margin:5px 0}

.signup-whatsapp{display:inline-block;align-self:flex-start;margin:8px 0;padding:8px 13px;border:1px solid #5fae7a;border-radius:10px;color:#b8edca;text-decoration:none;font-size:14px;font-weight:650}.signup-whatsapp:hover{background:#205238}.fun-add-player{border-top:1px solid var(--line);margin-top:18px;padding-top:12px}.fun-add-player .actions{display:flex;gap:8px}.fun-add-player input{flex:1;min-width:0}.fun-add-player button{flex-shrink:0;margin:0}

#funSwapBoard{grid-template-rows:repeat(3,94px)}#funSwapBoard .mini-dealer-card{height:94px;min-height:94px;gap:4px;padding:10px 4px}#funSwapBoard .mini-dealer-card strong{font-size:clamp(12px,3.5vw,16px)}.mini-swap-gp{font-size:12px;color:#28603d}.swap-pick-number{position:absolute;top:3px;right:5px;font-size:11px;font-weight:800;color:#6a5419}.swap-waiting{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 8px;scroll-snap-type:x proximity}.swap-waiting .waiting-player{position:relative;flex:0 0 110px;min-height:78px;margin:0;padding:10px 6px;border:2px solid #b9a35955;border-radius:14px;background:#faf7ee;color:#172c20;scroll-snap-align:start;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:14px}.swap-waiting .waiting-player[aria-pressed=true]{border-color:#d5ae35;background:#fff3c4}#funSeatSwapOverlay>.panel{width:min(480px,calc(100vw - 24px));box-sizing:border-box}#funSwapWaitingSection h3{font-size:15px;margin:10px 0 4px}.registration-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.registration-actions button,.registration-actions .signup-whatsapp{margin:0!important;min-width:0;min-height:42px;padding:10px 6px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;text-align:center;font-size:13px;white-space:normal}.registration-actions .signup-whatsapp{align-self:stretch}@media(max-width:600px){.registration-actions{grid-template-columns:repeat(2,minmax(0,1fr))}}

.fun-add-player .actions{flex-wrap:nowrap}.fun-add-player .actions button{flex:0 0 auto;width:auto;font-size:14px;padding:10px 14px}.fun-add-player .actions input{font-size:16px}

.signup-attendance-summary{grid-column:1/-1;font-size:13px;color:var(--muted);margin:0 0 10px}#registrationAdminSummary{font-weight:650;color:var(--gold-light)}.registration-person>label select{margin-top:5px;font-size:14px}

.attendance-label{font-size:12px;font-weight:650;margin:10px 0 5px}.attendance-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:10px}.attendance-choices button{min-width:0;min-height:44px;margin:0;padding:10px 8px;font-size:14px;border:1px solid var(--line);box-shadow:none}.attendance-choices button[aria-pressed=true]{background:var(--gold-gradient);color:#102015;border-color:var(--gold);box-shadow:0 0 0 1px var(--gold)}

.host-attendance-control{margin:0 0 16px;padding:12px;border:1px solid var(--line);border-radius:14px;background:rgba(212,175,55,.04)}.host-attendance-control .attendance-label{margin:0 0 6px}.host-attendance-control .small{margin:4px 0 0}

.attendance-settings-person{padding:12px 0;border-top:1px solid var(--line)}.attendance-settings-person .attendance-choices{margin-top:8px}
/* Compact host workspace. */
.admin-section-nav{grid-template-columns:repeat(3,minmax(0,1fr))}
#eventPinAdmin{padding:10px 12px;margin-bottom:12px}
#eventPinAdmin>label{font-size:13px;margin:0 0 5px}
#eventPinAdmin .event-pin-controls{display:flex;align-items:center;gap:8px;justify-content:flex-start}
#activationPin{width:120px;min-width:0;font-size:17px;padding:8px 10px;letter-spacing:.15em}
#eventPinAdmin button{padding:8px 12px;min-height:38px;font-size:13px}
#activationPinStatus{font-size:11px;margin:5px 0 0}
#registrationAdmin>summary,#adminScoreTools>summary,#adminEventHistory>summary{cursor:pointer;padding:10px 0;font-weight:650}
.admin-history-events{display:grid;gap:7px;margin:8px 0}.admin-history-events button{text-align:left;font-size:13px}
#memberDirectory{max-height:65vh;overflow:auto}.seat-card .table-name-input{padding-right:32px}
.owner-view-banner{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--gold);border-radius:12px;margin-bottom:12px;font-size:12px;background:#173e2d}.owner-view-banner[hidden]{display:none}#ownerViewMenu .panel{width:min(420px,100%)}#ownerViewMenu button{margin-top:10px}#allPlayersArchive{margin-top:16px;font-size:12px}#allPlayersArchive>summary{font-size:12px;color:var(--muted)}#allPlayersRows{max-height:50vh;overflow:auto}
/* League cards share one baseline, including the narrower Play Points panel. */
#seasonTables .season-board>.league-panel,#seasonTables .season-board>.season-pp-panel,#seasonTables .season-columns>.league-panel{margin:0!important;align-self:start}
#seasonTables .season-pp-panel>summary{min-height:52px;padding:12px 7px;flex-direction:row;justify-content:center}
#seasonTables .league-panel,#seasonTables .season-pp-panel,#leagueTables .league-panel{background:linear-gradient(150deg,#153d2c,#082519);border-color:#b79b4659;box-shadow:0 8px 24px #0002}
#seasonTables .league-panel>summary,#seasonTables .season-pp-panel>summary,#leagueTables .league-panel>summary{background:linear-gradient(100deg,#d6b64c16,transparent);border-bottom:1px solid #c4a34744}
#seasonTables .season-ranking li[data-rank="1"]{background:linear-gradient(100deg,#dfbd4926,transparent);border-radius:9px;padding-left:8px;border-left:3px solid #dfbd49}
#seasonTables .season-ranking li[data-rank="2"],#seasonTables .season-ranking li[data-rank="3"]{padding-left:8px;border-left:3px solid #b8cebd70}
#seasonTables .season-points{color:#eed58b;font-weight:600}#seasonTables .season-player{letter-spacing:.01em}#seasonTables .season-ranking li{padding-top:12px;padding-bottom:12px}
