html,body{height:100%;min-height:100%;margin:0}body{background:#1e3d2f}.game-summary-modal{z-index:60;align-items:flex-start;padding:.75rem;overflow:auto}.game-summary-card{background:#1e3d30;border-radius:14px;flex-direction:column;gap:.75rem;width:100%;max-width:min(1200px,100%);max-height:calc(100dvh - 1.5rem);padding:1rem 1.1rem;display:flex;overflow:hidden;box-shadow:0 16px 48px #00000073}.game-summary-header{flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.game-summary-header h2{margin:0}.game-summary-winners{color:#d4e8d4;margin:.25rem 0 0;font-weight:600}.game-summary-tabs{gap:.35rem;display:flex}.game-summary-tabs button{color:#fff;background:#ffffff1a;padding:.4rem .85rem}.game-summary-tabs button.active{color:#1a1a1a;background:#f0c14b}.game-summary-stats{flex:1;min-height:0;overflow:auto}.game-summary-meta{margin:0 0 .65rem}.stats-grid{grid-template-columns:repeat(auto-fill,minmax(17rem,1fr));gap:.65rem;display:grid}.stats-player-card{background:#244a3a;border-radius:10px;padding:.75rem}.stats-player-card h3{margin:0 0 .25rem;font-size:1rem}.stats-score{color:#f0c14b;margin-bottom:.5rem;font-size:1.35rem;font-weight:800}.stats-dl{grid-template-columns:1fr 1fr;gap:.35rem .75rem;margin:0;font-size:.8rem;display:grid}.stats-dl div{flex-direction:column;gap:.1rem;display:flex}.stats-dl dt{opacity:.7;font-weight:600}.stats-dl dd{margin:0;font-weight:700}.stats-words{margin:.5rem 0 0;font-size:.75rem;line-height:1.35}.game-summary-replay{flex:1;grid-template-columns:minmax(9rem,12rem) minmax(0,1fr) minmax(10rem,14rem);gap:.65rem;min-height:0;display:grid;overflow:hidden}.replay-timeline,.replay-racks-panel{background:#244a3a;border-radius:10px;min-height:0;padding:.55rem;overflow:auto}.replay-timeline h4,.replay-racks-panel h4{margin:0 0 .45rem;font-size:.85rem}.replay-turn-list details{margin-bottom:.35rem}.replay-turn-list summary{cursor:pointer;padding:.2rem 0;font-size:.82rem;font-weight:700}.replay-turn-list ul{margin:0;padding:0 0 0 .35rem;list-style:none}.replay-turn-list li button{text-align:left;color:#fff;background:#00000026;flex-direction:column;gap:.1rem;width:100%;margin-bottom:.25rem;padding:.35rem .45rem;font-size:.72rem;display:flex}.replay-turn-list li button.active{color:#1a1a1a;background:#f0c14b}.replay-event-type{text-transform:capitalize;font-weight:700}.replay-event-who{opacity:.85}.replay-main{flex-direction:column;gap:.45rem;min-width:0;min-height:0;display:flex;overflow:auto}.replay-detail-box{background:#244a3a;border-radius:8px;flex-shrink:0;padding:.5rem .65rem;font-size:.82rem}.replay-detail-box p{margin:.15rem 0}.replay-board-wrap{flex:1;justify-content:center;align-items:center;min-height:0;display:flex}.replay-board-coords{width:min(100%,52vh);height:min(100%,52vh)}.replay-racks{flex-direction:column;gap:.5rem;display:flex}.replay-rack-player{border-top:1px solid #ffffff1f;padding-top:.4rem}.replay-rack-player:first-child{border-top:none;padding-top:0}.replay-rack-header{justify-content:space-between;align-items:baseline;margin-bottom:.25rem;font-size:.8rem;display:flex}.replay-rack-score{color:#f0c14b;font-weight:700}.replay-rack-tiles{flex-wrap:wrap;gap:.25rem;display:flex}.replay-rack-tile{color:#1a1a1a;background:#faf8f4;border-radius:3px;flex-direction:column;justify-content:center;align-items:center;width:1.65rem;height:1.85rem;font-size:.75rem;font-weight:800;line-height:1;display:inline-flex}.replay-rack-tile .pts{font-size:.5rem;font-weight:700}.game-summary-footer{border-top:1px solid #ffffff1a;flex-shrink:0;justify-content:flex-end;padding-top:.25rem;display:flex}@media (width<=900px){.game-summary-replay{grid-template-columns:1fr;overflow:auto}.replay-board-coords{width:min(100%,70vw);height:min(100%,70vw)}}.summary-overview{flex:1;align-content:start;gap:.85rem;min-height:0;display:grid;overflow:auto}.summary-highlights{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.summary-highlights li{background:#244a3a;border-radius:10px;gap:.15rem;padding:.6rem .75rem;display:grid}.summary-highlight-label{color:#a9c7b3;text-transform:uppercase;letter-spacing:.04em;font-size:.78rem}.summary-highlights strong{color:#fff;font-size:1.2rem}.summary-highlight-who{color:#d4e8d4;font-size:.85rem}.score-chart{background:#244a3a;border-radius:10px;margin:0;padding:.6rem .75rem .3rem;position:relative}.score-chart svg{touch-action:none;width:100%;height:auto;display:block}.score-chart-legend{color:#d4e8d4;flex-wrap:wrap;gap:.9rem;margin-bottom:.25rem;font-size:.85rem;display:flex}.score-chart-legend>span,.score-chart-tooltip>span{align-items:center;gap:.35rem;display:inline-flex}.score-chart-key{vertical-align:-.05rem;border-radius:3px;width:.7rem;height:.7rem;margin-right:.35rem;display:inline-block}.score-chart-grid{stroke:#ffffff1a;stroke-width:1px}.score-chart-axis{fill:#a9c7b3;font-size:11px}.score-chart-label{fill:#fff;font-size:12px;font-weight:600}.score-chart-dot{stroke:#244a3a;stroke-width:2px}.score-chart-crosshair{stroke:#ffffff59;stroke-width:1px}.score-chart-tooltip{color:#fff;pointer-events:none;background:#0f2219;border-radius:8px;gap:.15rem;min-width:7rem;padding:.4rem .55rem;font-size:.8rem;display:grid;position:absolute;top:2.2rem;transform:translate(-50%);box-shadow:0 6px 18px #00000059}.summary-table-wrap{gap:.5rem;display:grid;overflow-x:auto}.summary-table{border-collapse:collapse;color:#fff;width:100%;font-size:.88rem}.summary-table th,.summary-table td{text-align:right;white-space:nowrap;border-bottom:1px solid #ffffff1a;padding:.45rem .55rem}.summary-table th:first-child{text-align:left}.summary-table thead th{color:#a9c7b3;font-size:.78rem;font-weight:600}.summary-table td.lucky strong{color:#86efac}.summary-table td.unlucky strong{color:#fca5a5}.summary-overview .hint,.summary-table .hint{color:#a9c7b3}.replay-best{color:#f6e3b0;background:#f0c14b26;border-radius:6px;margin-top:.4rem;padding:.4rem .55rem}.app.in-game,.app.play-layout{--play-bg:#e8eef4;--play-text:#1e293b;--play-muted:#1e293bb8;--play-panel:#fff;--play-panel-deep:#f1f5f9;--play-input-border:#cbd5e1;--play-input-bg:#f8fafc;--play-accent:#2563eb;--play-accent-text:#fff;--play-accent-secondary:#e2e8f0;--play-accent-secondary-text:#1e293b;--play-btn-mode:#7c3aed;--play-board:#94a3b8;--play-board-empty:#fff;--play-tw:#dc2626;--play-dw:#f87171;--play-tl:#0284c7;--play-dl:#7dd3fc;--play-tile:#f0e2b8;--play-tile-edge:#d4c49a;--play-tile-ink:#1a1a1a;--play-tile-ink-muted:#5c4a32;--play-timer:#2563eb;--play-timer-over:#dc2626;--play-timer-paused:#0891b2;--play-score-preview:#16a34a;--play-active-ring:#2563eb;--play-rack-outline:#fff;--play-rack-dash:#1e293b38;--play-rack-slot-bg:#94a3b833;--play-coord:#64748b;--play-log-border:#0f172a14;--play-turn-banner:#2563eb1a;--play-turn-yours:#22c55e33;--play-error-bg:#fecaca;--play-modal-overlay:#0f172a59;--play-modal-card:#fff;--play-hidden-tile:linear-gradient(135deg, #94a3b8 0%, #64748b 50%, #94a3b8 100%);background:var(--play-bg);color:var(--play-text)}.app.in-game[data-theme=sage],.app.play-layout[data-theme=sage]{--play-bg:#eef2ea;--play-text:#1f2a22;--play-muted:#1f2a22b8;--play-panel:#fff;--play-panel-deep:#f3f6f0;--play-input-border:#c5d1c0;--play-input-bg:#f8faf6;--play-accent:#5f7d5e;--play-accent-text:#fff;--play-accent-secondary:#e2e8de;--play-accent-secondary-text:#1f2a22;--play-btn-mode:#7a9478;--play-board:#a8b5a0;--play-board-empty:#fff;--play-tw:#b56a5a;--play-dw:#c98878;--play-tl:#6a8f8a;--play-dl:#9bb8b2;--play-timer:#5f7d5e;--play-timer-over:#b4534a;--play-timer-paused:#6a8f8a;--play-active-ring:#5f7d5e;--play-score-preview:#4a7c59;--play-rack-dash:#1f2a222e;--play-rack-slot-bg:#a8b5a038;--play-coord:#6b7d68;--play-log-border:#1f2a2214;--play-turn-banner:#5f7d5e1f;--play-turn-yours:#4a7c592e;--play-error-bg:#f2d4d0;--play-modal-overlay:#1f2a224d;--play-modal-card:#fff;--play-hidden-tile:linear-gradient(135deg, #a8b5a0 0%, #8a9982 50%, #a8b5a0 100%)}.app.in-game[data-theme=linen],.app.play-layout[data-theme=linen]{--play-bg:#f5f0e8;--play-text:#3d3428;--play-muted:#3d3428b8;--play-panel:#fffcf7;--play-panel-deep:#f8f2e9;--play-input-border:#d9cfc0;--play-input-bg:#faf6ef;--play-accent:#9a8478;--play-accent-text:#fff;--play-accent-secondary:#ebe3d8;--play-accent-secondary-text:#3d3428;--play-btn-mode:#a8907e;--play-board:#c4b8a8;--play-board-empty:#fffcf7;--play-tw:#b07a68;--play-dw:#c49a88;--play-tl:#8898a8;--play-dl:#a8b8c8;--play-timer:#9a8478;--play-timer-over:#b4534a;--play-timer-paused:#8898a8;--play-active-ring:#9a8478;--play-score-preview:#6b8f6a;--play-rack-dash:#3d34282e;--play-rack-slot-bg:#c4b8a840;--play-coord:#8a7d6e;--play-log-border:#3d342814;--play-turn-banner:#9a84781f;--play-turn-yours:#6b8f6a2e;--play-error-bg:#f2ddd4;--play-modal-overlay:#3d342847;--play-modal-card:#fffcf7;--play-hidden-tile:linear-gradient(135deg, #c4b8a8 0%, #a89888 50%, #c4b8a8 100%)}.app.in-game[data-theme=mist],.app.play-layout[data-theme=mist]{--play-bg:#eef1f4;--play-text:#334155;--play-muted:#334155b8;--play-panel:#f8fafc;--play-panel-deep:#f1f4f7;--play-input-border:#c8d0d8;--play-input-bg:#f4f6f8;--play-accent:#6b8499;--play-accent-text:#fff;--play-accent-secondary:#e2e6ea;--play-accent-secondary-text:#334155;--play-btn-mode:#8299aa;--play-board:#b0bcc9;--play-board-empty:#fff;--play-tw:#b06a6a;--play-dw:#c88a8a;--play-tl:#6a8aa0;--play-dl:#9ab0c0;--play-timer:#6b8499;--play-timer-over:#b4534a;--play-timer-paused:#6a8aa0;--play-active-ring:#6b8499;--play-score-preview:#5a8a6a;--play-rack-dash:#3341552e;--play-rack-slot-bg:#b0bcc938;--play-coord:#7a8794;--play-log-border:#33415514;--play-turn-banner:#6b84991f;--play-turn-yours:#5a8a6a2e;--play-error-bg:#f0d8d8;--play-modal-overlay:#3341554d;--play-modal-card:#f8fafc;--play-hidden-tile:linear-gradient(135deg, #b0bcc9 0%, #929fad 50%, #b0bcc9 100%)}.app.in-game[data-theme=lavender],.app.play-layout[data-theme=lavender]{--play-bg:#f2eff5;--play-text:#3b3548;--play-muted:#3b3548b8;--play-panel:#faf8fc;--play-panel-deep:#f3f0f6;--play-input-border:#d4cedc;--play-input-bg:#f7f5fa;--play-accent:#8b7fa8;--play-accent-text:#fff;--play-accent-secondary:#e8e4ef;--play-accent-secondary-text:#3b3548;--play-btn-mode:#9d92b0;--play-board:#b8afc9;--play-board-empty:#fff;--play-tw:#b07888;--play-dw:#c898a8;--play-tl:#8890b0;--play-dl:#a8b0c8;--play-timer:#8b7fa8;--play-timer-over:#b4534a;--play-timer-paused:#8890b0;--play-active-ring:#8b7fa8;--play-score-preview:#6a9078;--play-rack-dash:#3b35482e;--play-rack-slot-bg:#b8afc938;--play-coord:#857a94;--play-log-border:#3b354814;--play-turn-banner:#8b7fa81f;--play-turn-yours:#6a90782e;--play-error-bg:#f0d8e0;--play-modal-overlay:#3b35484d;--play-modal-card:#faf8fc;--play-hidden-tile:linear-gradient(135deg, #b8afc9 0%, #9a92ad 50%, #b8afc9 100%)}.app.in-game button,.app.play-layout button{background:var(--play-accent);color:var(--play-accent-text)}.app.in-game button.rack-tile,.app.play-layout button.rack-tile{background:var(--play-tile);color:var(--play-tile-ink);box-shadow:2px 2px 0 var(--play-tile-edge)}.app.in-game button.secondary,.app.play-layout button.secondary{background:var(--play-accent-secondary);color:var(--play-accent-secondary-text)}.app.in-game button.active-mode,.app.play-layout button.active-mode{background:var(--play-btn-mode);color:#fff;outline-color:var(--play-rack-outline)}.app.in-game button.challenge-btn-active,.app.play-layout button.challenge-btn-active{color:#fff;background:#c0392b}.app.in-game button.challenge-btn-inactive,.app.play-layout button.challenge-btn-inactive{color:#fff6;background:#1a1a1a}.app.in-game button.challenge-btn-inactive:disabled,.app.play-layout button.challenge-btn-inactive:disabled{opacity:1;cursor:not-allowed;color:#fff6;background:#1a1a1a}.app.in-game button.challenge-btn-active:not(:disabled):hover,.app.play-layout button.challenge-btn-active:not(:disabled):hover{background:#a93226}.app.in-game .players-bar.sidebar,.app.play-layout .players-bar.sidebar,.app.in-game .actions,.app.play-layout .actions,.app.in-game .rack-section,.app.play-layout .rack-section,.app.in-game .log-panel,.app.play-layout .log-panel,.app.in-game .seat-claims,.app.play-layout .seat-claims{background:var(--play-panel)}.app.in-game .players-bar.sidebar .player-chip,.app.play-layout .players-bar.sidebar .player-chip,.app.in-game .subpanel,.app.play-layout .subpanel{background:var(--play-panel-deep)}.app.in-game .view-as select,.app.play-layout .view-as select,.app.in-game .theme-picker select,.app.play-layout .theme-picker select,.app.in-game .claim-form input,.app.in-game .claim-form select,.app.in-game .subpanel select,.app.play-layout .subpanel select,.app.in-game .triplicate-row select,.app.play-layout .triplicate-row select{border:1px solid var(--play-input-border);background:var(--play-input-bg);color:var(--play-text)}.app.in-game .player-chip.active,.app.play-layout .player-chip.active{border-color:var(--play-active-ring);box-shadow:0 0 0 1px var(--play-active-ring)}.app.in-game .timer,.app.play-layout .timer{color:var(--play-timer)}.app.in-game .timer.over,.app.play-layout .timer.over{color:var(--play-timer-over)}.app.in-game .timer.paused,.app.play-layout .timer.paused{color:var(--play-timer-paused)}.app.in-game .pending-score,.app.play-layout .pending-score{color:var(--play-score-preview)}.app.in-game .board,.app.play-layout .board{background:var(--play-board)}.app.in-game .cell,.app.play-layout .cell{background-color:var(--play-board-empty)!important}.app.in-game .cell.premium-TW,.app.play-layout .cell.premium-TW{background-color:var(--play-tw)!important}.app.in-game .cell.premium-DW,.app.play-layout .cell.premium-DW{background-color:var(--play-dw)!important}.app.in-game .cell.premium-TL,.app.play-layout .cell.premium-TL{background-color:var(--play-tl)!important}.app.in-game .cell.premium-DL,.app.play-layout .cell.premium-DL{background-color:var(--play-dl)!important}.app.in-game .cell.center,.app.play-layout .cell.center{background-color:var(--play-dw)!important}.app.in-game .tile-face,.app.play-layout .tile-face,.app.in-game .rack-tile,.app.play-layout .rack-tile{background:var(--play-tile);box-shadow:1px 1px 0 var(--play-tile-edge);color:var(--play-tile-ink)}.app.in-game .tile-face .letter,.app.play-layout .tile-face .letter,.app.in-game .tile-face .pts,.app.play-layout .tile-face .pts,.app.in-game .rack-tile .letter,.app.play-layout .rack-tile .letter,.app.in-game .rack-tile .pts,.app.play-layout .rack-tile .pts{color:var(--play-tile-ink)}.app.in-game .tile-face .blank-badge,.app.play-layout .tile-face .blank-badge,.app.in-game .rack-blank-label,.app.play-layout .rack-blank-label{color:var(--play-tile-ink-muted)}.app.in-game .rack-tile,.app.play-layout .rack-tile{box-shadow:2px 2px 0 var(--play-tile-edge)}.app.in-game .rack-tile.selected,.app.play-layout .rack-tile.selected{outline-color:var(--play-rack-outline)}.app.in-game .rack-tile.is-blank.selected,.app.play-layout .rack-tile.is-blank.selected{outline-color:var(--play-active-ring)}.app.in-game .rack-tile.is-hidden,.app.play-layout .rack-tile.is-hidden{background:var(--play-hidden-tile)}.app.in-game .cell.recent-play .tile-face,.app.play-layout .cell.recent-play .tile-face{background:color-mix(in srgb, color-mix(in srgb, var(--play-tile) 70%, #fff 30%) 88%, var(--recent-play-color,#f0c14b) 12%);box-shadow:1px 1px 0 var(--play-tile-edge), inset 0 0 0 2px color-mix(in srgb, var(--recent-play-color,#f0c14b) 55%, #fff)}.app.in-game .cell.recent-play .tile-face.is-blank,.app.play-layout .cell.recent-play .tile-face.is-blank{background:color-mix(in srgb, color-mix(in srgb, var(--play-tile) 70%, #fff 30%) 88%, var(--recent-play-color,#f0c14b) 12%)}.app.in-game .rack-slot.empty,.app.play-layout .rack-slot.empty{border-color:var(--play-rack-dash);background:var(--play-rack-slot-bg)}.app.in-game .rack-shuffle,.app.play-layout .rack-shuffle{background:var(--play-accent-secondary);color:var(--play-accent-secondary-text)}.app.in-game .board-col-labels,.app.in-game .board-row-labels,.app.play-layout .board-col-labels,.app.play-layout .board-row-labels{color:var(--play-coord)}.app.in-game .log-panel li,.app.play-layout .log-panel li{border-bottom-color:var(--play-log-border)}.app.in-game .topbar-error,.app.play-layout .topbar-error{background:var(--play-error-bg);color:#fff}.app.in-game .turn-banner,.app.play-layout .turn-banner{background:var(--play-turn-banner);color:var(--play-text)}.app.in-game .turn-banner.yours,.app.play-layout .turn-banner.yours{background:var(--play-turn-yours)}.app.in-game .modal,.app.play-layout .modal{background:var(--play-modal-overlay)}.app.in-game .modal-card,.app.play-layout .modal-card{background:var(--play-modal-card);color:var(--play-text)}.app.in-game .hint,.app.play-layout .hint{color:var(--play-muted)}.app.in-game .hint-inline,.app.play-layout .hint-inline{opacity:1;color:var(--play-muted)}.theme-picker{flex-shrink:0;align-items:center;gap:.35rem;font-size:.85rem;display:inline-flex}.theme-picker-label{opacity:.85;font-weight:500}.theme-picker select{border:1px solid var(--play-input-border,#3d6b55);background:var(--play-input-bg,#163528);color:var(--play-text,#fff);border-radius:6px;max-width:9.5rem;padding:.25rem .45rem;font-size:.8rem}.theme-swatch{border:1px solid #0f172a2e;border-radius:4px;flex-shrink:0;width:1.1rem;height:1.1rem}.play-body{gap:var(--gap,.5rem);flex:1;min-height:0;display:grid}.play-board-col{flex-direction:column;gap:.4rem;min-width:0;min-height:0;display:flex}.play-aside{flex-direction:column;gap:.5rem;min-width:0;min-height:0;display:flex;overflow:auto}.play-zone.play-board{flex:1;justify-content:center;align-items:center;min-height:0;display:flex}.play-zone.play-rack,.play-zone.play-scores,.play-zone.play-actions{flex-shrink:0}.play-zone.play-log{flex-direction:column;flex:1;gap:.35rem;min-height:0;display:flex}.play-body[data-layout=classic]{grid-template-columns:minmax(0, 1fr) var(--side-width,300px);grid-template-areas:"board-col aside"}.play-body[data-layout=classic] .play-board-col{grid-area:board-col}.play-body[data-layout=classic] .play-aside{grid-area:aside}.play-body[data-layout=sidebar-left]{grid-template-columns:var(--side-width,300px) minmax(0, 1fr);grid-template-areas:"aside board-col"}.play-body[data-layout=sidebar-left] .play-board-col{grid-area:board-col}.play-body[data-layout=sidebar-left] .play-aside{grid-area:aside}.play-body[data-layout=board-hero] .play-board-col,.play-body[data-layout=board-hero] .play-aside{display:contents}.play-body[data-layout=board-hero]{grid-template:"scores scores""board board"minmax(0,1fr)"rack rack""actions log"/1fr 1fr}.play-body[data-layout=board-hero] .play-scores{grid-area:scores}.play-body[data-layout=board-hero] .play-board{grid-area:board}.play-body[data-layout=board-hero] .play-rack{grid-area:rack}.play-body[data-layout=board-hero] .play-actions{grid-area:actions;max-height:38vh;overflow:auto}.play-body[data-layout=board-hero] .play-log{grid-area:log;max-height:38vh}.play-body[data-layout=board-hero] .players-bar.sidebar{flex-flow:wrap}.play-body[data-layout=board-hero] .players-bar.sidebar .player-chip{flex:8rem}.play-body[data-layout=command-deck] .play-board-col,.play-body[data-layout=command-deck] .play-aside{display:contents}.play-body[data-layout=command-deck]{grid-template:"actions actions actions""scores board log"minmax(0,1fr)"rack rack rack"/minmax(10rem,14rem) minmax(0,1fr) minmax(10rem,14rem)}.play-body[data-layout=command-deck] .play-actions{grid-area:actions}.play-body[data-layout=command-deck] .play-scores{grid-area:scores;overflow:auto}.play-body[data-layout=command-deck] .play-board{grid-area:board}.play-body[data-layout=command-deck] .play-log{grid-area:log;overflow:auto}.play-body[data-layout=command-deck] .play-rack{grid-area:rack}.play-body[data-layout=command-deck] .actions{flex-wrap:wrap;align-items:flex-start;gap:.25rem .5rem;padding:.4rem .6rem;display:flex}.play-body[data-layout=command-deck] .actions>h3{display:none}.play-body[data-layout=command-deck] .actions .btn-row{flex:0 auto;margin-bottom:0}.play-body[data-layout=command-deck] .actions .action-group .hint,.play-body[data-layout=command-deck] .actions .subpanel{display:none}.play-body[data-layout=split-focus]{--split-side-min:10.5rem;--board-pane-gap:.5in;--board-rack-block:6.25rem;--board-max-height:calc(100dvh - var(--topbar-h,2.5rem) - 2 * var(--pad-y,.5rem) - var(--board-rack-block) - .35rem);--board-max-width:calc(100vw - 2 * var(--split-side-min) - 2 * var(--board-pane-gap) - 1.5rem);--board-size:min(var(--board-max-height), var(--board-max-width));gap:var(--board-pane-gap);grid-template-columns:minmax(var(--split-side-min), 1fr) auto minmax(var(--split-side-min), 1fr);grid-template-rows:minmax(0,1fr);grid-template-areas:"left-col board-col right-col"}.play-body[data-layout=split-focus] .play-left-col{flex-direction:column;grid-area:left-col;gap:.5rem;min-width:0;min-height:0;display:flex;overflow:hidden}.play-body[data-layout=split-focus] .play-left-main{flex-direction:column;flex:auto;gap:.5rem;min-height:0;display:flex;overflow:auto}.play-body[data-layout=split-focus] .play-left-bottom,.play-body[data-layout=split-focus] .play-challenge-bar{flex-shrink:0;margin-top:auto}.play-body[data-layout=split-focus] .play-left-header{flex-direction:column;flex-shrink:0;align-items:stretch;gap:.45rem;padding:.55rem .65rem;display:flex}.play-body[data-layout=split-focus] .play-left-title{letter-spacing:-.02em;text-align:center;margin:0;font-size:1.3rem;font-weight:700;line-height:1.2}.play-body[data-layout=split-focus] .play-left-title .room-tag{letter-spacing:.06em;color:var(--muted,#666);font-size:.55em;font-weight:600}.play-body[data-layout=split-focus] .play-left-look-row{justify-content:center;width:100%;display:flex}.play-body[data-layout=split-focus] .play-left-header .theme-picker{flex-wrap:nowrap;justify-content:center;gap:.4rem .5rem;width:auto}.play-body[data-layout=split-focus] .play-left-header .theme-picker select{flex:0 auto;width:auto;min-width:8.5rem;max-width:11rem}.play-body[data-layout=split-focus] .play-right-col{flex-direction:column;grid-area:right-col;gap:.5rem;min-width:0;min-height:0;display:flex;overflow:hidden}.play-body[data-layout=split-focus] .play-right-main{flex-direction:column;flex:auto;gap:.5rem;min-height:0;display:flex;overflow:hidden}.play-body[data-layout=split-focus] .play-right-bottom{flex-direction:column;flex-shrink:0;gap:.35rem;margin-top:auto;display:flex}.play-body[data-layout=split-focus] .play-board-col{width:auto;min-width:0;min-height:0;max-width:var(--board-size);flex-direction:column;grid-area:board-col;justify-content:flex-start;align-self:start;align-items:center;gap:.35rem;height:auto;display:flex}.play-body[data-layout=split-focus] .board-coords{grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr);gap:0;width:100%;height:100%}.play-body[data-layout=split-focus] .board-corner,.play-body[data-layout=split-focus] .board-col-labels,.play-body[data-layout=split-focus] .board-row-labels{display:none}.play-body[data-layout=split-focus] .board{grid-area:1/1}.play-body[data-layout=split-focus] .play-board{min-height:0;width:var(--board-size);height:var(--board-size);max-width:100%;max-height:min(var(--board-size), 100%);flex:none;justify-content:stretch;align-self:center;align-items:stretch;container-type:size}.play-body[data-layout=split-focus] .play-board.board-frame{justify-content:stretch;align-items:stretch}.play-body[data-layout=split-focus] .play-rack.rack-section.under-board{width:min(var(--board-size), 100%);flex:none;align-items:center;max-width:100%}.play-body[data-layout=split-focus] .play-rack .rack-label{text-align:center;align-self:center}.play-body[data-layout=split-focus] .play-scores{flex-shrink:0}.play-body[data-layout=split-focus] .play-actions{flex-direction:column;flex:auto;justify-content:center;align-items:stretch;min-height:0;display:flex;overflow:auto}.play-body[data-layout=split-focus] .play-actions .actions{gap:.35rem;width:100%}.play-body[data-layout=split-focus] .play-actions .actions h3{text-align:center}.play-body[data-layout=split-focus] .play-actions .btn-row,.play-body[data-layout=split-focus] .play-actions .btn-row-paired{flex-flow:column;align-items:stretch;gap:.35rem;margin-bottom:0}.play-body[data-layout=split-focus] .play-actions .action-group{flex:none;gap:.35rem;width:100%;min-width:0}.play-body[data-layout=split-focus] .play-actions .actions button{text-align:center;justify-content:center;align-items:center;width:100%;min-height:2.65rem;padding:.35rem .45rem;font-size:.8rem;line-height:1.15;display:flex}.play-body[data-layout=split-focus] .play-actions .action-group .hint{text-align:center;font-size:.72rem}.play-body[data-layout=split-focus] .play-actions .subpanel{gap:.35rem}.play-body[data-layout=split-focus] .play-actions .subpanel select{width:100%}.play-body[data-layout=split-focus] .play-primary-bar .primary-play-bar{padding:.55rem .65rem}.play-body[data-layout=split-focus] .play-primary-bar .btn-row{flex-direction:column;gap:.35rem;margin-bottom:0}.play-body[data-layout=split-focus] .play-primary-bar button{text-align:center;justify-content:center;align-items:center;width:100%;min-height:2.65rem;display:flex}.play-body[data-layout=split-focus] .play-log{flex-direction:column;flex:auto;min-height:0;max-height:42%;display:flex;overflow:hidden}.play-body[data-layout=split-focus] .play-log .game-log-panel{flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.play-body[data-layout=split-focus] .play-log .game-log-panel ul{flex:auto;min-height:0;overflow:auto}.play-body[data-layout=split-focus] .play-challenge-bar .challenge-play-bar{padding:.55rem .65rem}.play-body[data-layout=split-focus] .play-challenge-bar .btn-row{margin-bottom:0}.play-body[data-layout=split-focus] .play-challenge-bar button{text-align:center;justify-content:center;align-items:center;width:100%;min-height:2.65rem;font-size:.8rem;line-height:1.15;display:flex}.play-body[data-layout=split-focus] .play-primary-bar{flex-shrink:0}@media (width<=1280px){.play-body[data-layout=split-focus]{--split-side-min:9.5rem}}@media (width<=1100px){.play-body[data-layout=split-focus]{--split-side-min:8.75rem}}@media (width<=960px){.play-body[data-layout=split-focus]{--split-side-min:8rem}}.play-body[data-layout=studio] .play-board-col,.play-body[data-layout=studio] .play-aside{display:contents}.play-body[data-layout=studio]{grid-template:"scores board log""scores board log"minmax(0,1fr)"actions rack log"/minmax(11rem,16rem) minmax(0,1fr) minmax(11rem,16rem)}.play-body[data-layout=studio] .play-scores{grid-area:scores;align-self:start}.play-body[data-layout=studio] .play-actions{grid-area:actions;align-self:start}.play-body[data-layout=studio] .play-board{grid-area:board}.play-body[data-layout=studio] .play-rack{grid-area:rack}.play-body[data-layout=studio] .play-log{grid-area:1/log/-1}.play-body[data-layout=arcade-dock]{flex-direction:column;gap:.35rem;display:flex;position:relative}.play-body[data-layout=arcade-dock] .play-board-col{flex:1;min-height:0}.play-body[data-layout=arcade-dock] .play-aside{flex-flow:wrap;flex-shrink:0;align-items:stretch;overflow:visible}.play-body[data-layout=arcade-dock] .play-scores{z-index:3;border-radius:10px;max-width:min(20rem,88vw);position:absolute;top:.25rem;left:.25rem;box-shadow:0 6px 24px #0006}.play-body[data-layout=arcade-dock] .play-actions{flex:2 18rem;order:1}.play-body[data-layout=arcade-dock] .play-log{flex:12rem;order:2;max-height:9rem}.play-body[data-layout=arcade-dock] .play-aside .actions,.play-body[data-layout=arcade-dock] .play-aside .log-panel{border-radius:10px}.play-body[data-layout=compact-stack] .play-board-col,.play-body[data-layout=compact-stack] .play-aside{display:contents}.play-body[data-layout=compact-stack]{grid-template:"scores""board"minmax(0,1fr)"rack""actions""log"/1fr;overflow:auto}.play-body[data-layout=compact-stack] .play-scores{grid-area:scores}.play-body[data-layout=compact-stack] .play-board{grid-area:board;min-height:min(52vh,26rem)}.play-body[data-layout=compact-stack] .play-rack{grid-area:rack}.play-body[data-layout=compact-stack] .play-actions{grid-area:actions}.play-body[data-layout=compact-stack] .play-log{grid-area:log;max-height:9rem}.play-body[data-layout=compact-stack] .players-bar.sidebar{flex-flow:wrap}.play-body[data-layout=compact-stack] .players-bar.sidebar .player-chip{flex:7rem}.layout-picker{flex-shrink:0;align-items:center;gap:.35rem;font-size:.85rem;display:inline-flex}.layout-picker-label{opacity:.85;font-weight:500}.layout-picker select{border:1px solid var(--play-input-border,#3d6b55);background:var(--play-input-bg,#163528);color:var(--play-text,#fff);border-radius:6px;max-width:10.5rem;padding:.25rem .45rem;font-size:.8rem}@media (width<=900px){.play-body[data-layout=classic],.play-body[data-layout=sidebar-left]{grid-template-columns:1fr;grid-template-areas:"aside""board-col"}.play-body[data-layout=split-focus],.play-body[data-layout=studio],.play-body[data-layout=command-deck],.play-body[data-layout=board-hero]{flex-direction:column;display:flex;overflow:auto}.play-body[data-layout=split-focus] .play-board-col,.play-body[data-layout=split-focus] .play-left-col,.play-body[data-layout=split-focus] .play-right-col,.play-body[data-layout=studio] .play-board-col,.play-body[data-layout=studio] .play-aside,.play-body[data-layout=command-deck] .play-board-col,.play-body[data-layout=command-deck] .play-aside,.play-body[data-layout=board-hero] .play-board-col,.play-body[data-layout=board-hero] .play-aside{flex-direction:column;display:flex}.play-body[data-layout=split-focus] .play-log{display:flex}.play-body[data-layout=arcade-dock] .play-scores{max-width:none;box-shadow:none;position:static}}:root{--ink:#1c1917;--muted:#57534e;--paper:#f5efe4;--panel:#fffaf2;--line:#d6d3d1;--accent:#0f766e;--accent-ink:#f0fdfa;--danger:#991b1b;--danger-bg:#fef2f2;color:var(--ink);font-family:IBM Plex Sans,system-ui,sans-serif}.lobby-root{background:radial-gradient(ellipse at 20% 0%, #e7dcc8 0%, transparent 50%), radial-gradient(ellipse at 90% 10%, #c5d5c8 0%, transparent 40%), var(--paper);min-height:100vh}.lobby-root h1,.lobby-root h2{margin:0 0 .4rem;font-family:"Source Serif 4",Georgia,serif;font-weight:700}.lobby-root button,.lobby-root input,.lobby-root select{font:inherit}.lobby-root button{cursor:pointer;border:1px solid var(--line);background:#fff;border-radius:6px;padding:.55rem .9rem}.lobby-root button:disabled{opacity:.45;cursor:not-allowed}.lobby-root button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.lobby{max-width:720px;margin:0 auto;padding:3rem 1.25rem 4rem}.lobby-hero h1{letter-spacing:-.02em;font-size:clamp(2.4rem,5vw,3.4rem)}.room-tag{letter-spacing:.02em;color:var(--muted);vertical-align:middle;font-size:.45em;font-weight:600}.eyebrow{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:0 0 .5rem;font-size:.75rem}.lede{color:var(--muted);max-width:36rem;font-size:1.05rem;line-height:1.5}.lobby-panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;gap:1rem;margin-top:1.75rem;padding:1.25rem;display:grid}.lobby-local{background:var(--panel);border:1px solid var(--line);border-radius:12px;margin-top:1.25rem;padding:0 1.25rem 1.25rem}.lobby-local summary{cursor:pointer;padding:1.25rem 0 .75rem;font-weight:600;list-style:none}.lobby-local summary::-webkit-details-marker{display:none}.lobby-options{border:1px solid var(--line);border-radius:8px;gap:.65rem;margin:0;padding:.65rem .75rem;display:grid}.lobby-options legend{color:var(--muted);padding:0 .25rem;font-size:.78rem;font-weight:700}.lobby-option{cursor:pointer;align-items:flex-start;gap:.45rem;margin:0;font-size:.88rem;display:flex}.lobby-option input:disabled{cursor:not-allowed}.lobby-option-desc{color:var(--muted);margin-top:.1rem;font-size:.75rem;font-weight:500;display:block}.lobby-win-row{flex-wrap:wrap;align-items:flex-end;gap:.65rem;display:flex}.lobby-win-field{flex:0 auto;min-width:7rem}.lobby-win-field input,.lobby-win-field select{width:100%;max-width:8rem}.conn{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.5rem;font-size:.9rem;display:flex}.dot{background:#a8a29e;border-radius:50%;width:.55rem;height:.55rem}.dot.open{background:#16a34a}.dot.connecting{background:#ca8a04}.dot.closed{background:#dc2626}.field{gap:.35rem;font-weight:500;display:grid}.field input,.field select,.join input{border:1px solid var(--line);background:#fff;border-radius:6px;padding:.55rem .7rem}.row{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.join{gap:.4rem;display:flex}.join input{text-transform:uppercase;letter-spacing:.08em;width:6.5rem;font-weight:600}.hint{color:var(--muted);margin:0;font-size:.9rem;line-height:1.45}.room-code{font-size:1.15rem}.players{gap:.45rem;margin:0;padding:0;list-style:none;display:grid}.players li{align-items:center;gap:.5rem;display:flex}.lobby-player-label{flex:1;min-width:0}.swatch{border-radius:3px;flex-shrink:0;width:.85rem;height:.85rem;display:inline-block}.banner{background:color-mix(in srgb, var(--ink) 6%, transparent);border-radius:8px;justify-content:space-between;align-items:center;gap:.75rem;padding:.65rem .75rem;display:flex}.banner.error{background:var(--danger-bg);color:var(--danger)}.lobby-root .setup{padding:.5rem 0 0}.lobby-root .setup label{gap:.35rem;margin-top:.75rem;font-weight:500;display:grid}.lobby-root .setup .error-banner{color:var(--danger);background:var(--danger-bg);border-radius:8px;padding:.65rem .75rem}.lobby-root .setup .primary{margin-top:1rem}.lobby-root code{font-size:.9em}.lobby-login{gap:.85rem;display:grid}.lobby-root .conn{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.lobby-root button.link-button{color:var(--accent);background:0 0;border:none;padding:.2rem .3rem;font-size:.9rem;text-decoration:underline}.open-games{border-top:1px solid var(--line);gap:.6rem;margin-top:.5rem;padding-top:1rem;display:grid}.open-games h2{font-size:1.2rem}.open-games-list{gap:.6rem;margin:0;padding:0;list-style:none;display:grid}.open-game{border:1px solid var(--line);background:#fff;border-radius:8px;gap:.45rem;padding:.75rem;display:grid}.open-game-head{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.open-game-code{letter-spacing:.08em;font-size:1.05rem}.open-game-status{min-width:10rem;color:var(--muted);flex:1;font-size:.9rem}.open-game-status.lobby{color:var(--accent);font-weight:600}.open-game-players{flex-wrap:wrap;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.open-game-players li{border:1px solid var(--line);border-radius:999px;padding:.15rem .55rem;font-size:.85rem}.open-game-players li.connected{background:color-mix(in srgb, var(--accent) 12%, #fff);border-color:color-mix(in srgb, var(--accent) 40%, #fff)}.open-game-players li.away{color:var(--muted)}.open-game-players li.open-seat{color:var(--muted);border-style:dashed}.seat-dialog-backdrop{z-index:50;background:#1c191773;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.seat-dialog{background:var(--panel);border-radius:10px;gap:.85rem;width:min(26rem,100%);padding:1.25rem;display:grid;box-shadow:0 12px 40px #00000040}.admin-toolbar{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.admin-filter{align-items:center;gap:.35rem;font-size:.9rem;display:flex}.admin-list{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.admin-card{border:1px solid var(--line);background:#fff;border-radius:8px;gap:.6rem;padding:.85rem;display:grid}.admin-card h2{font-size:1.15rem}.admin-card-head{flex-wrap:wrap;justify-content:space-between;gap:.75rem;display:flex}.admin-status{vertical-align:middle;background:color-mix(in srgb, var(--ink) 8%, transparent);border-radius:999px;padding:.1rem .5rem;font-family:IBM Plex Sans,system-ui,sans-serif;font-size:.8rem;font-weight:600}.admin-status.lobby{color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, #fff)}.admin-status.playing{color:#1d4ed8;background:#dbeafe}.admin-metrics{gap:1.25rem;display:flex}.admin-metrics>div{text-align:right;display:grid}.admin-metric-label{color:var(--muted);font-size:.75rem}.admin-players{gap:.3rem;margin:0;padding:0;list-style:none;display:grid}.admin-players li{align-items:center;gap:.6rem;display:flex}.admin-player-name{flex:1;min-width:0}.admin-actions{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.lobby-root button.danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 40%, #fff);background:var(--danger-bg)}.stats-totals{grid-template-columns:repeat(auto-fit,minmax(7rem,1fr));gap:.6rem;display:grid}.stats-totals>div{border:1px solid var(--line);background:#fff;border-radius:8px;padding:.6rem .75rem;display:grid}.stats-totals strong{font-size:1.4rem}.stats-totals span{color:var(--muted);font-size:.85rem}.stats-tabs{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:.4rem;padding-bottom:.5rem;display:flex}.lobby-root .stats-tabs button.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.stats-table-wrap{overflow-x:auto}.stats-table{border-collapse:collapse;background:#fff;width:100%;font-size:.9rem}.stats-table th,.stats-table td{text-align:right;white-space:nowrap;border-bottom:1px solid var(--line);padding:.45rem .6rem}.stats-table th:first-child{text-align:left}.stats-table thead th{color:var(--muted);font-size:.8rem;font-weight:600}.stats-h2h{gap:.85rem;display:grid}.stats-h2h-card{border:1px solid var(--line);background:#fff;border-radius:8px;gap:.6rem;padding:.85rem;display:grid}.stats-h2h-score{grid-template-columns:1fr auto 1fr;align-items:center;gap:.75rem;font-size:1.05rem;display:grid}.stats-h2h-score span:last-child{text-align:right}.stats-h2h-score strong{font-variant-numeric:tabular-nums;font-size:1.8rem}.lobby-root .stats-dl{gap:.35rem;margin:0;display:grid}.lobby-root .stats-dl>div{justify-content:space-between;gap:1rem;display:flex}.lobby-root .stats-dl dt{color:var(--muted)}.lobby-root .stats-dl dd{text-align:right;margin:0}.stats-subhead{margin-top:.5rem;font-size:1.05rem}.stats-matchups,.stats-records,.stats-games{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.stats-records li{border:1px solid var(--line);background:#fff;border-radius:8px;grid-template-columns:11rem 1fr auto;align-items:baseline;gap:.75rem;padding:.5rem .65rem;display:grid}.stats-record-label{color:var(--muted);font-size:.9rem}@media (width<=560px){.stats-records li{grid-template-columns:1fr;gap:.15rem}}.stats-game-row{border:1px solid var(--line);background:#fff;border-radius:8px;flex-wrap:wrap;justify-content:space-between;gap:.6rem;padding:.6rem .75rem;display:flex}.stats-game-meta{display:grid}.stats-game-scores{flex-wrap:wrap;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.stats-game-scores li{align-items:center;gap:.35rem;display:flex}.stats-skill{gap:.6rem;display:grid}.stats-table td.lucky strong{color:#15803d}.stats-table td.unlucky strong{color:var(--danger)}:root{color:#1a1a1a;--wood:#d4c4a8;--wood-dark:#c4b89a;--tile:#f0e2b8;--tile-edge:#d4c49a;--board:#3d6b54;--board-empty:#faf8f4;--tw:#b07a76;--dw:#c49a8f;--tl:#7a9bb0;--dl:#8fafc4;background:#1e3d2f;font-family:Segoe UI,system-ui,sans-serif;line-height:1.4}*{box-sizing:border-box}body{min-height:100vh;margin:0}#root{height:100%;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer;color:#1a1a1a;background:#f0c14b;border:none;border-radius:8px;padding:.5rem .9rem;font-weight:600}button:disabled{opacity:.45;cursor:not-allowed}button.secondary{background:#dde5e0}button.active-mode{color:#fff;background:#e67e22;outline:3px solid #fff}button.primary{padding:.75rem 1.5rem;font-size:1.1rem}.app{color:#f5f5f5;max-width:1280px;margin:0 auto;padding:1rem}.app.play-layout{--side-width:300px;--topbar-h:2.5rem;--rack-h:4.75rem;--pad-y:.5rem;--gap:.5rem;width:100%;max-width:none;height:100dvh;padding:var(--pad-y) .75rem;flex-direction:column;gap:.35rem;margin:0;display:flex;overflow:hidden}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.topbar.compact{min-height:var(--topbar-h);flex-wrap:nowrap;flex-shrink:0;margin-bottom:0}.topbar-start{flex:auto;align-items:center;gap:.65rem;min-width:0;display:flex}.topbar-error{color:#fff;white-space:nowrap;text-overflow:ellipsis;background:#922b21;border-radius:6px;max-width:min(42vw,32rem);padding:.15rem .55rem;font-size:.8rem;font-weight:600;overflow:hidden}.topbar h1{letter-spacing:.02em;margin:0;font-size:1.5rem}.topbar.compact h1{flex-shrink:0;font-size:1.15rem}.view-as{flex-shrink:0}.setup{background:#244a3a;border-radius:16px;flex-direction:column;gap:.75rem;max-width:420px;margin:3rem auto;padding:2rem;display:flex;box-shadow:0 12px 40px #00000059}.setup h1{text-align:center;margin:0}.tagline{text-align:center;opacity:.85;margin-top:0}.setup label{flex-direction:column;gap:.25rem;font-size:.9rem;display:flex}.setup input,.setup select,.claim-form input,.claim-form select,.view-as select,.subpanel select{color:#fff;background:#163528;border:1px solid #3d6b55;border-radius:6px;padding:.45rem .6rem}.hint{opacity:.8;margin:.25rem 0;font-size:.85rem}.players-bar{flex-wrap:wrap;align-items:stretch;gap:.5rem;margin-bottom:.75rem;display:flex}.players-bar.sidebar{background:#244a3a;border-radius:12px;flex-flow:column;gap:.35rem;margin-bottom:0;padding:.6rem .75rem}.players-bar-header{justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.15rem;display:flex}.players-bar-header h3{margin:0;font-size:1rem}.players-bar.sidebar .bag-count{opacity:.85;margin-left:0;font-size:.85rem}.player-chip{background:#244a3a;border:2px solid #0000;border-radius:10px;min-width:120px;padding:.5rem .75rem}.players-bar.sidebar .player-chip{background:#1a3328;min-width:0;padding:.4rem .55rem}.player-chip-main{align-items:flex-start;gap:.5rem;display:flex}.player-info{flex:1;min-width:0}.name-row{justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.color-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px;margin-top:.35rem;box-shadow:0 0 0 1px #ffffff40}.player-chip.active{border-color:#f0c14b;box-shadow:0 0 0 1px #f0c14b}.player-chip .name{font-weight:700}.player-chip .score{font-variant-numeric:tabular-nums;font-size:.95rem;font-weight:700}.timer{font-variant-numeric:tabular-nums;color:#f0c14b;margin-top:.2rem;font-size:.9rem;font-weight:700}.timer-row{align-items:baseline;gap:.5rem;margin-top:.2rem;display:flex}.timer-row .timer{margin-top:0}.pending-score{font-variant-numeric:tabular-nums;color:#7dcea0;font-size:.9rem;font-weight:700}.timer.over{color:#ff6b6b;animation:1s infinite pulse}.timer.paused{color:#5dade2;animation:none}.pause-votes{flex-direction:row;flex-shrink:0;align-items:center;gap:.3rem;margin-left:.15rem;display:flex}.pause-check{cursor:pointer;border:2px solid;border-radius:4px;flex-shrink:0;place-items:center;width:22px;height:22px;display:grid;position:relative}.pause-check.locked{cursor:not-allowed;opacity:.55}.pause-check.mine{box-shadow:0 0 0 2px #ffffff59}.pause-check input:disabled{cursor:not-allowed}.pause-check input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.pause-check .check-mark{color:#fff;pointer-events:none;font-size:.85rem;font-weight:800;line-height:1}@keyframes pulse{50%{opacity:.65}}.play-body{flex:1;min-height:0}@media (width<=900px){.app.play-layout{height:auto;min-height:100dvh;overflow:auto}}.board-column{flex-direction:column;align-items:center;gap:.4rem;min-width:0;max-width:none;height:100%;min-height:0;display:flex}.board-frame{flex:1;justify-content:center;align-items:center;width:100%;min-height:0;display:flex;container-type:size}.board-coords{grid-template-rows:1.05rem minmax(0,1fr);grid-template-columns:1.15rem minmax(0,1fr);gap:2px;width:min(100cqw,100cqh);height:min(100cqw,100cqh);display:grid}.board-corner{display:block}.board-col-labels,.board-row-labels{color:var(--muted,#9aa3b2);letter-spacing:.02em;-webkit-user-select:none;user-select:none;font-size:.65rem;font-weight:700;display:grid}.board-col-labels{grid-template-columns:repeat(15,minmax(0,1fr));place-items:end center;padding:0 4px}.board-row-labels{grid-template-rows:repeat(15,minmax(0,1fr));place-items:center end;padding:4px .15rem 4px 0}.board{background:var(--board);border-radius:8px;grid-template-columns:repeat(15,minmax(0,1fr));gap:2px;width:100%;height:100%;padding:4px;display:grid;container-type:size}.cell{aspect-ratio:1;color:#1a1a1a;border:none;border-radius:3px;place-items:center;padding:1px;font-size:clamp(.45rem,1.4vw,.7rem);font-weight:700;display:grid;position:relative;overflow:hidden;background-color:var(--board-empty)!important}.cell.premium-none{background-color:#faf8f4!important}.cell.premium-TW{background-color:var(--tw)!important}.cell.premium-DW{background-color:var(--dw)!important}.cell.premium-TL{background-color:var(--tl)!important}.cell.premium-DL{background-color:var(--dl)!important}.cell.center{background-color:var(--dw)!important}.cell.has-tile{padding:1px;background-color:#0000!important}.rack-tile.is-dragging-to-board{opacity:.35}.cell.pending .tile-face{cursor:grab;outline:2px dashed #fff}.cell.build-over-overlay .tile-face{box-shadow:1px 1px 0 var(--play-tile-edge,var(--tile-edge)), inset 0 0 0 2px #e8a83873;outline:2px dashed #e8a838}.cell.pending.pending-selected .tile-face{outline:3px solid var(--play-active-ring,#f0c14b);transform:translateY(-2px)}.cell.recent-play .tile-face{background:color-mix(in srgb, color-mix(in srgb, var(--play-tile,var(--tile)) 70%, #fff 30%) 90%, var(--recent-play-color,#f0c14b) 10%);box-shadow:1px 1px 0 var(--play-tile-edge,var(--tile-edge)), inset 0 0 0 2px color-mix(in srgb, var(--recent-play-color,#f0c14b) 55%, #fff)}.cell.recent-play .tile-face.is-blank{background:color-mix(in srgb, #f9f1d9 90%, var(--recent-play-color,#f0c14b) 10%);box-shadow:inset 0 0 0 2px #dfd4b6, 1px 1px 0 var(--play-tile-edge,var(--tile-edge)), inset 0 0 0 3px color-mix(in srgb, var(--recent-play-color,#f0c14b) 45%, #fff)}.cell.pending .tile-face:active{cursor:grabbing}.tile-face.is-dragging-from-board{opacity:.35}.rack-slot.empty.rack-return-target,.rack-tile.rack-return-target{outline-offset:-2px;outline:2px dashed #ffffffa6}.cell.dibs{box-shadow:inset 0 0 0 2px var(--dibs-color,#f1c40f)}.cell.dibs-block-outline{box-shadow:inset 0 0 0 2px var(--dibs-block-color,#ff6b6b);outline:2px dashed var(--dibs-block-color,#ff6b6b);outline-offset:-3px}.cell.dibs.dibs-block-outline{box-shadow:inset 0 0 0 2px var(--dibs-color,#f1c40f);outline:2px dashed var(--dibs-block-color,#ff6b6b);outline-offset:-3px}.cell.selected{box-shadow:inset 0 0 0 3px #fff}.premium-text{box-sizing:border-box;text-align:center;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:0;width:100%;height:100%;padding:5%;line-height:1.05;display:flex}.premium-words{text-transform:none;letter-spacing:0;color:#1a1a1a;width:100%;height:100%;text-shadow:none;flex-direction:column;justify-content:center;align-items:center;gap:0;font-size:clamp(.36rem,1.85cqmin,.65rem);font-weight:700;display:flex}.premium-line{text-align:center;width:100%;line-height:1.08;display:block;overflow:hidden}.premium-text.center-star .star{color:#1a1a1a;margin-bottom:2%;font-size:clamp(.55rem,2.4cqmin,.9rem);line-height:1}.premium-text.center-star .premium-words{height:auto;font-size:clamp(.34rem,1.7cqmin,.58rem)}.tile-face{background:var(--tile);color:#111;width:100%;height:100%;box-shadow:1px 1px 0 var(--tile-edge);border-radius:3px;place-items:center;display:grid;position:relative}.tile-face.is-blank{box-shadow:inset 0 0 0 2px #c4b07a, 1px 1px 0 var(--tile-edge);background:#f6ebc8}.tile-face .letter{color:#111;font-size:clamp(.7rem,2.2vw,1.1rem);font-weight:800;line-height:1}.tile-face.is-blank .letter{font-style:italic;font-weight:700}.tile-face .pts,.rack-tile .pts{font-size:.55rem;font-weight:700;position:absolute;bottom:1px;right:2px}.blank-badge{letter-spacing:.02em;color:#6e6454;font-size:clamp(.22rem,.7cqw,.42rem);font-weight:800;line-height:1;position:absolute;top:1px;left:1px}.blank-mark{color:#888;font-size:.5rem;position:absolute;top:1px;left:2px}.dibs-mark{pointer-events:none;box-sizing:border-box;width:100%;height:100%;color:var(--dibs-color,#f1c40f);flex-direction:column;justify-content:center;align-items:center;gap:0;padding:1px;line-height:1.05;display:flex}.dibs-mark-letter{font-size:clamp(.55rem,1.6cqw,.85rem);font-weight:800}.dibs-mark-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:clamp(.28rem,.85cqw,.45rem);font-weight:700;overflow:hidden}.star{color:#fff;font-size:.9rem}.cell.pinned.has-tile{box-shadow:inset 0 0 0 2px #f0c14b}.cell.pin-pick-target{outline-offset:-2px;outline:2px dashed #f0c14bd9}.cell.pin-selected{outline-offset:-2px;outline:3px solid #f0c14b}.pin-mark{pointer-events:none;font-size:.45rem;line-height:1;position:absolute;top:0;right:0}.bag-scout-peek{margin-top:.25rem}.bag-scout-tiles{flex-wrap:wrap;gap:.3rem;display:flex}.bag-scout-tile{color:#1a1a1a;background:#faf8f4;border-radius:4px;flex-direction:column;justify-content:center;align-items:center;width:1.75rem;height:2rem;font-size:.8rem;font-weight:800;line-height:1;display:inline-flex}.bag-scout-tile .pts{font-size:.5rem}.pin-commit-hint{margin:0 0 .35rem}button.linkish{color:#f0c14b;cursor:pointer;font-weight:600;font-size:inherit;background:0 0;border:none;padding:0;text-decoration:underline}.side{flex-direction:column;gap:.5rem;min-height:0;display:flex;overflow:auto}.actions,.rack-section,.log-panel,.seat-claims,.move-suggest{background:#244a3a;border-radius:12px;padding:.6rem .75rem}.move-suggest label{flex-direction:column;gap:.3rem;font-size:.9rem;font-weight:600;display:flex}.move-suggest select{color:#fff;background:#163528;border:1px solid #3d6b55;border-radius:6px;width:100%;padding:.45rem .6rem;font-weight:400}.triplicate-choices{flex-direction:column;gap:.5rem;display:flex}.triplicate-row{justify-content:space-between;align-items:center;gap:.75rem;font-size:.95rem;font-weight:600;display:flex}.triplicate-row select{color:#fff;background:#163528;border:1px solid #3d6b55;border-radius:6px;min-width:6.5rem;padding:.35rem .5rem}.rack-section.under-board{flex-direction:column;flex-shrink:0;align-items:center;gap:.3rem;width:100%;max-width:100%;padding:.45rem .6rem;display:flex}.rack-label{align-self:stretch;font-size:.85rem;font-weight:700}.hint-inline{opacity:.75;font-size:.8rem;font-weight:400}.actions{flex-direction:column;gap:.4rem;display:flex}.actions h3,.rack-section h3,.log-panel h3{margin:0;font-size:.95rem}.diagnostic-log-panel{color:var(--muted,#9aa3b2);margin-top:.5rem;font-size:.75rem}.diagnostic-log-panel summary{cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600}.diagnostic-log-actions{margin:.35rem 0}.diagnostic-log-copy{padding:.2rem .5rem;font-size:.75rem}.diagnostic-log-panel ul{max-height:8rem;margin:0;padding:0;list-style:none;overflow:auto}.diagnostic-log-panel li{border-bottom:1px solid #ffffff0f;padding:.15rem 0}.diagnostic-event{text-transform:uppercase;letter-spacing:.04em;font-size:.65rem;font-weight:700}.log-panel{flex-direction:column;flex:1;min-height:0;display:flex}.log-panel ul{flex:1;max-height:none;margin:0;padding:0;font-size:.8rem;list-style:none;overflow:auto}.btn-row{flex-wrap:wrap;gap:.4rem;margin-bottom:0;display:flex}.btn-row-paired{align-items:flex-start;gap:.5rem}.action-group{flex-direction:column;flex:1 1 0;gap:.35rem;min-width:min(100%,9.5rem);display:flex}.action-group>button{width:100%}.action-group .hint{margin:0}.action-group .subpanel{margin-bottom:0}.subpanel{background:#1a3328;border-radius:8px;flex-direction:column;gap:.4rem;margin-bottom:.5rem;padding:.5rem;display:flex}.rack-row{justify-content:center;align-items:center;gap:.5rem;width:100%;display:flex}.rack{flex-wrap:nowrap;justify-content:center;gap:.35rem;display:flex}.rack-slot.empty{box-sizing:border-box;background:#0000001f;border:2px dashed #ffffff47;border-radius:4px;flex-shrink:0;width:44px;height:48px}.rack-tools{flex-shrink:0;align-items:center;gap:.3rem;display:flex}.rack-shuffle{color:#1a1a1a;background:#dde5e0;border-radius:8px;flex-shrink:0;width:40px;height:48px;padding:0;font-size:1.35rem;line-height:1}.rack-shuffle:hover{filter:brightness(1.06)}.rack-tile{background:var(--tile);color:#111;width:44px;height:48px;box-shadow:2px 2px 0 var(--tile-edge);cursor:grab;border-radius:4px;flex-shrink:0;padding:0;position:relative}.rack-tile:active{cursor:grabbing}.rack-tile:disabled{cursor:default}.rack-tile .letter{color:#1a1a1a;font-size:1.35rem;font-weight:800}.rack-tile .pts{color:#1a1a1a}.rack-tile.is-blank{box-shadow:inset 0 0 0 2px #c4b07a, 2px 2px 0 var(--tile-edge);background:#f6ebc8}.rack-blank-label{letter-spacing:.02em;color:#6e6454;text-transform:lowercase;font-size:.55rem;font-weight:700}.rack-tile.is-blank.selected{outline:3px solid #f0c14b}.rack-tile.is-hidden{cursor:default;pointer-events:none;background:linear-gradient(135deg,#8b6914 0%,#6b4f12 45%,#8b6914 100%);box-shadow:inset 0 0 0 2px #4a3810,2px 2px #3d2e0c}.rack-hidden-mark{color:#ffffff59;font-size:1.1rem;font-weight:800}.topbar-meta{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.turn-banner{color:#d4e8d4;background:#ffffff14;border-radius:999px;padding:.2rem .55rem;font-size:.9rem;font-weight:600}.turn-banner.yours{color:#ecfdf5;background:#16a34a59}.conn-inline{color:#ffffffa6;align-items:center;gap:.35rem;font-size:.8rem;display:inline-flex}.conn-inline .dot{background:#a8a29e;border-radius:50%;width:.5rem;height:.5rem}.conn-inline .dot.open{background:#16a34a}.conn-inline .dot.connecting{background:#ca8a04}.conn-inline .dot.closed{background:#dc2626}.player-name-lock{color:#ffffffd9;font-size:.9rem}.log-panel li{border-bottom:1px solid #ffffff14;padding:.25rem 0 .25rem .45rem}.log-panel li.log-entry-player{border-left:3px solid var(--log-player-color,#ffffff59);color:var(--log-player-color,inherit)}.log-panel li.log-entry-system{opacity:.82;border-left:3px solid #0000}.error-banner{color:#fff;background:#922b21;border-radius:8px;flex-shrink:0;padding:.4rem .75rem}.actions .struck{opacity:.65;text-decoration:line-through}.exchange-flash{color:#fff;background:#e74c3c;width:100%;margin-bottom:.75rem;padding:.85rem;font-size:1.2rem;animation:.7s infinite flash}@keyframes flash{50%{filter:brightness(1.35);transform:scale(1.01)}}.modal{z-index:50;background:#0000008c;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal-card{background:#244a3a;border-radius:12px;flex-direction:column;gap:.75rem;width:100%;max-width:420px;padding:1.25rem;display:flex}.modal-card .row{gap:.5rem;display:flex}.rack-tile.selected{outline:3px solid #fff;transform:translateY(-4px)}.blank-picker-card{max-width:420px}.play-layout.play-locked .play-body{pointer-events:none;-webkit-user-select:none;user-select:none}.play-layout.play-locked .play-exit-bar,.play-layout.play-locked .play-exit-bar *{pointer-events:auto}.final-play-modal-layer{z-index:60;pointer-events:none;position:fixed;inset:0}.final-play-floating{pointer-events:auto;width:min(440px,100vw - 2rem);position:fixed;top:42%;left:50%;box-shadow:0 16px 48px #00000073}.final-play-drag-handle{cursor:grab;touch-action:none;align-items:center;gap:.5rem;margin:-.15rem 0 .35rem;padding:.15rem 0;display:flex}.final-play-drag-handle:active{cursor:grabbing}.final-play-drag-handle h3{text-align:left;flex:auto;margin:0}.final-play-drag-grip{opacity:.55;letter-spacing:-.12em;-webkit-user-select:none;user-select:none;font-size:.85rem}.final-play-card{text-align:center}.game-over-banner{text-align:center;background:#2563eb1f;border-radius:8px;margin-bottom:.55rem;padding:.55rem .65rem;font-size:.92rem}.exit-play-btn{width:100%}.final-play-words{margin:0;font-size:1.15rem;font-weight:700}.final-play-actions{flex-wrap:wrap;justify-content:center;gap:.65rem;display:flex}.final-play-actions button{min-width:9rem}.final-play-accept-btn{color:#fff!important;background:#2563eb!important}.final-play-accept-btn:disabled{opacity:.65}.final-play-challenge-btn{color:#fff!important;background:#c0392b!important}.final-play-challenge-btn:disabled{opacity:.65}.blank-letter-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:.35rem;display:grid}.blank-letter-btn{aspect-ratio:1;background:var(--tile);color:#111;min-height:40px;box-shadow:1px 1px 0 var(--tile-edge);padding:0;font-size:1.1rem;font-weight:800}.blank-letter-btn:hover{filter:brightness(1.08)}.blank-input{text-align:center;text-transform:uppercase;color:#fff;background:#163528;border:1px solid #3d6b55;border-radius:8px;padding:.5rem;font-size:1.5rem}.seat-claim-timer{margin:.5rem 0;font-size:1.05rem}.seat-claim-status{margin:0 0 1rem;padding:0;list-style:none}.seat-claim-status li{padding:.2rem 0}.seat-claim-done{color:#2d8a4e;font-size:1.1rem;font-weight:700}.seat-claims{max-width:640px;margin:1rem auto}.claim-form{gap:.5rem;margin:1rem 0;display:grid}.claim-form label{flex-direction:column;gap:.25rem;display:flex}.phase{color:#1a1a1a;background:#f0c14b;border-radius:999px;padding:.2rem .6rem;font-size:.85rem;font-weight:700}.game-over-summary-btn{margin-right:.6rem;padding:.25rem .6rem;font-size:.85rem}
