/* A quieter, legible table with dedicated space for players and score cards. */
body.in-game{background:#101918}
body.in-game:before{opacity:.18}
body.in-game header{background:#101918;border-bottom:1px solid #ffffff0b}
body.in-game .brand-icon{box-shadow:none;border:0;border-radius:7px}
body.in-game .quiet{border-color:#ffffff18;background:#ffffff03;color:#c8d3cb}
.room-heading h2{font-family:Arial,sans-serif;font-size:18px;font-weight:600;letter-spacing:-.5px}
.table-wrap{background:#14231f;border:1px solid #ffffff13;border-radius:20px;box-shadow:0 18px 50px #0003}
.live-score{background:#172923;border-color:#ffffff0e;padding:14px 16px;gap:14px}
.live-team-heading>span{font-size:11px}.live-team-heading small{border:0;color:#8da398;padding:0;margin-left:4px}
.live-set-score{background:transparent;border:1px solid #ffffff18;border-radius:5px}
.live-points-line>strong{font-family:Arial,sans-serif;font-weight:600;font-size:29px;letter-spacing:-1px}
.live-round>strong{font-family:Arial,sans-serif;font-weight:500;font-size:23px}
.live-track{height:4px;border:0}.live-goal{font-size:8px;color:#9eb2a7}
.live-round>b{border:0;background:#ffffff06;color:#c6b58c}
.table-top{padding:12px 17px 16px;color:#8ba195;letter-spacing:1px}
.table-top #phase-badge{border:0;background:#ffffff06;color:#aec0b1;border-radius:4px}
.felt,.table-wrap[data-phase=bid] .felt,.table-wrap[data-phase=trump] .felt{height:330px;margin:0 12px;border:1px solid #90b6a42c;border-radius:25px;background:radial-gradient(ellipse at 50% 45%,#285e49,#1d4536 72%);box-shadow:inset 0 0 55px #0a291b55,0 5px 15px #0002}
.table-wrap.revealed .felt{box-shadow:inset 0 0 55px #0a291b55,0 5px 15px #0002}
.felt:after{inset:8px;border:1px solid #d1ddc50c;border-radius:18px}
.felt-ring{display:none}
.seat.top{top:15px;transform:translateX(-50%)}.seat.bottom{bottom:13px;transform:translateX(-50%)}
.seat.left{left:9px;top:48%;transform:none}.seat.right{right:9px;top:48%;transform:none}
.avatar{width:35px;height:35px;font-size:17px;background:#153c2d;border:1px solid #a6c5ac55;box-shadow:0 3px 9px #0002;color:#e6dfc1}
.seat span{font-size:9px;color:#eff0df}.seat small{font-size:6px;color:#97b7a3}.seat .card-backs{display:none}
.center,.table-wrap[data-phase=bid] .center,.table-wrap[data-phase=trump] .center{top:52%;width:54%}
.center h3,.table-wrap[data-phase=bid] .center h3,.table-wrap[data-phase=trump] .center h3{font-size:21px;line-height:1.2;font-weight:400}
.center p{font-size:9px;line-height:1.6;color:#b3c6b6}
.table-wordmark{bottom:95px;font-size:6px;opacity:.35;letter-spacing:3px}.table-wordmark span{font-size:12px}
.played{inset:100px 45px 85px}
.table-side-score{top:18px;width:95px}.score-side-a{left:5px}.score-side-b{right:5px}
.table-side-score .team-score{border:0;gap:5px}.table-side-score .team-score span{font-size:9px;color:#b4c9b6}.table-side-score .team-score b{font-family:Arial,sans-serif;font-size:13px;font-weight:600;color:#f2deb0}
.table-side-score .score-pair{width:108px;min-width:108px;height:95px;margin:-3px -8px -23px}
.table-side-score .score-suit-pair{font-size:8px;letter-spacing:1px;color:#b4c9b6}
.table-side-score .set-tokens{margin-top:5px;gap:4px}.table-side-score .set-tokens>span{background:#102e23;border:1px solid #abc4a91c;border-radius:4px;padding:3px 5px}
.board-context{padding:12px 14px 0}.trump-panel{background:#ffffff03;border:1px solid #ffffff0d;padding:10px 12px}
.controls{padding:16px 14px 8px}.controls .primary{border-radius:10px;min-height:43px;font-size:11px}
.hand-section,.table-wrap[data-phase=bid] .hand-section{padding:18px 12px 16px;min-height:0}
.hand-heading{color:#a2b5a7;letter-spacing:1px;margin-bottom:18px}
.hand-section:has(.hand:empty){display:none}
.hand{min-height:90px}.hand .card{height:78px;flex-basis:53px;border-radius:5px}
.table-history{border-color:#ffffff0c;margin:7px 0 0}.table-history summary{color:#99ad9f;padding:14px 0}
@media(max-width:360px){.felt,.table-wrap[data-phase=bid] .felt,.table-wrap[data-phase=trump] .felt{margin:0 8px;height:315px}.table-side-score{width:78px;top:20px}.score-side-a{left:0}.score-side-b{right:0}.table-side-score .score-pair{width:92px;min-width:92px;height:84px;margin-bottom:-20px}.seat.left{left:4px}.seat.right{right:4px}.center h3{font-size:18px}.live-score{padding:12px;gap:8px}.live-team-heading>span{font-size:9px}.hand .card{flex-basis:43px;height:64px}}
@media(min-width:480px){.felt,.table-wrap[data-phase=bid] .felt,.table-wrap[data-phase=trump] .felt{height:390px;margin:0 20px;border-radius:32px}.felt:after{border-radius:25px}.table-side-score{top:24px;width:125px}.score-side-a{left:18px}.score-side-b{right:18px}.table-side-score .score-pair{width:145px;min-width:145px;height:123px;margin-bottom:-29px}.table-side-score .team-score span{font-size:11px}.table-side-score .team-score b{font-size:17px}.seat.top{top:20px}.seat.bottom{bottom:20px}.avatar{width:43px;height:43px;font-size:21px}.seat span{font-size:11px}.seat.left{left:20px}.seat.right{right:20px}.center h3{font-size:27px}.center p{font-size:11px}.played{inset:115px 70px 100px}.hand .card{flex-basis:76px;height:106px}.hand-section{padding:22px}.live-score{padding:18px 24px}.table-top{padding:14px 24px 18px}}
@media(prefers-reduced-motion:no-preference){.table-side-score{animation:scoreSettle .45s ease-out both}@keyframes scoreSettle{from{opacity:0;translate:0 -5px}to{opacity:1;translate:0 0}}}

.deal-strip{display:flex;justify-content:space-between;gap:10px;padding:0 18px 12px;font-size:9px;color:#c4d4c6}.play-direction{color:#8eaa99;font-size:8px}.dealer-badge{width:auto;min-width:19px;height:18px;padding:0 4px;right:-11px;bottom:-4px;border-radius:5px;font:600 7px/16px Arial,sans-serif;background:#e7c68a;color:#16362a;border:1px solid #f4dfad;box-shadow:0 2px 6px #0003}
@media(min-width:480px){.deal-strip{padding:0 25px 14px;font-size:11px}.play-direction{font-size:10px}}

.dealing-layer{position:fixed;inset:0;z-index:50;pointer-events:none}.dealing-layer img{position:absolute;width:38px;height:54px;object-fit:contain;border-radius:4px;box-shadow:0 4px 12px #0006}.dealing-status{position:absolute;left:50%;top:43%;transform:translate(-50%,-50%);z-index:20;max-width:85%;width:max-content;padding:12px 16px;border:1px solid #bca47455;border-radius:10px;background:#10281ff5;color:#f1d8a4;font-size:11px;text-align:center;box-shadow:0 8px 24px #0005}
