/* Mobile-first game board. All match information belongs to the table. */
body.in-game header{height:58px;padding:0 12px}body.in-game .brand-icon{width:29px;height:36px;font-size:20px}body.in-game .brand{font-size:10px;letter-spacing:1.5px;gap:8px}body.in-game .brand small,body.in-game .connection,body.in-game footer{display:none}body.in-game .header-right{gap:5px}body.in-game .header-right .quiet{font-size:8px;padding:8px 7px}body.in-game main{max-width:900px;padding:0 8px}.room-heading{margin:12px 3px;gap:8px;flex-wrap:nowrap}.room-heading>div:first-child>.eyebrow{display:none}.room-heading h2{font-size:18px;margin:0}.room-tools{width:auto;flex-direction:row}.room-tools .quiet{padding:7px 9px;font-size:9px}.game-layout{display:block;margin-bottom:12px}.table-wrap{border-radius:17px;overflow:hidden}.table-top{padding:11px 14px;font-size:7px}.table-top #phase-badge{font-size:7px;padding:4px 9px;margin-top:-3px}.board-scorebar{display:grid;grid-template-columns:minmax(0,1fr) 65px minmax(0,1fr);gap:5px;align-items:center;padding:0 12px 13px;background:linear-gradient(180deg,#071b1422,transparent)}.board-team{min-width:0}.team-score{padding:0 0 5px;align-items:center;gap:7px}.team-score span{font-size:10px}.team-score small{display:none}.team-score b{font-size:17px;line-height:1;color:#e6c985}.traditional-score{border:0;padding:0;display:flex;flex-direction:row;align-items:center;gap:6px;height:auto}.score-stack{position:relative;width:43px;min-width:43px;height:56px;margin:0}.score-under{width:32px;height:45px;left:2px;top:4px;transform:rotate(-9deg)}.score-face{width:35px;height:49px;left:8px;top:3px;transform:rotate(4deg);border-radius:3px}.score-face svg{width:100%;height:100%;display:block}.score-explainer{padding:0;min-width:0}.score-explainer>strong{font-size:8px;white-space:nowrap}.set-tokens{gap:3px;margin-top:6px;display:flex;flex-direction:column;align-items:flex-start}.set-tokens>span{font-size:8px;padding:2px 4px;border-radius:4px;white-space:nowrap}.set-tokens>span>span{display:none}.board-score-caption{text-align:center;align-self:center;padding-top:8px}.board-score-caption>span{display:block;font-size:6px;letter-spacing:1.5px;color:#d3b877}.board-score-caption small{display:block;font-size:7px;color:#8ea58c;line-height:1.8;margin-top:6px}.felt,.table-wrap[data-phase=bid] .felt,.table-wrap[data-phase=trump] .felt{height:265px;margin:0 8px;border-width:6px;border-radius:35%;box-shadow:0 0 0 1px #c4a46c55,0 0 0 3px #132820,0 6px 16px #0003,inset 0 0 60px #071f15aa}.felt:after,.felt-ring{border-radius:35%}.felt-ring{inset:35px 24px}.seat{min-width:58px;max-width:82px}.seat.top{top:0;transform:translate(-50%,-8%)}.seat.bottom{bottom:0;transform:translate(-50%,8%)}.seat.left{left:1px;top:41%;transform:translateX(-8%)}.seat.right{right:1px;top:41%;transform:translateX(8%)}.avatar{width:31px;height:31px;font-size:16px;border-width:2px;margin-bottom:4px}.seat span{font-size:8px}.seat small{font-size:6px;letter-spacing:.7px;margin-top:3px}.seat .seat-call{font-size:6px;padding:2px 4px;margin-top:3px}.seat .card-backs{display:none}.turn-meter{margin-top:4px;width:40px}.dealer-badge{width:15px;height:15px;font-size:8px;right:-6px;bottom:-4px}.center,.table-wrap[data-phase=bid] .center,.table-wrap[data-phase=trump] .center{width:58%;top:47%}.center h3,.table-wrap[data-phase=bid] .center h3,.table-wrap[data-phase=trump] .center h3{font-size:18px;margin-bottom:7px}.center p{font-size:8px;line-height:1.6;margin-bottom:0}.table-wordmark{bottom:55px;letter-spacing:3px;font-size:6px}.table-wordmark span{font-size:17px;margin-top:2px}.played{inset:71px 39px 70px}.played .card{width:48px;height:67px}.played .p0,.played .p2{left:calc(50% - 24px)}.played .p0{bottom:10px}.played .p1{left:calc(50% - 67px);top:calc(50% - 33px)}.played .p3{right:calc(50% - 67px);top:calc(50% - 33px)}.board-context{padding:11px 13px 0;display:flex;flex-direction:column;gap:8px}.board-context:has(.contract:empty):has(.trump-panel:empty){display:none}.contract{margin:0;padding:7px 10px;font-size:9px;line-height:1.6;border-radius:8px;min-width:0}.contract br{display:none}.contract>strong{margin-right:7px}.contract .contract-progress{height:3px;margin-top:5px}.trump-panel{margin:0;padding:8px 10px;border-radius:8px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;background:#132d2077}.trump-display{gap:8px;justify-content:flex-start}.trump-indicator{width:27px;height:38px;border-radius:3px}.trump-display .eyebrow{font-size:5px;letter-spacing:1px}.trump-display strong{font-size:11px;margin:3px 0}.trump-display small{font-size:7px;line-height:1.4}.trump-display small:last-child{display:none}.marriage-display{margin:0;padding:0;border:0;gap:7px}.marriage-cards img{width:24px;height:34px}.marriage-display strong{font-size:8px}.marriage-display small{font-size:7px}.marriage-display>small{font-size:7px}.controls{padding:13px 13px 6px;min-height:0}.controls:empty{display:none}.status-label{font-size:9px}.bid-panel,.trump-picker{max-width:none;padding:0}.bid-panel-heading{margin-bottom:8px}.bid-panel-heading>span{font-size:7px}.bid-panel-heading small{font-size:8px}.bid-actions{gap:8px;grid-template-columns:1fr 1.5fr}.bid-actions>button{min-height:68px;border-radius:9px}.pass-button strong{font-size:23px}.pass-button>span{display:none}.pass-button small{font-size:8px}.call-button strong{font-size:31px}.call-button>span{font-size:6px}.call-button small{font-size:8px}.bid-amounts{margin-top:8px;gap:4px}.bid-amounts button{min-height:34px;padding:6px 0;font-size:10px}.bid-help{margin:6px 0 0;font-size:7px}.trump-picker{background:none;border:0}.suit-choices{gap:6px}.suit-choice{min-height:62px;border-radius:8px}.suit-choice span{font-size:29px}.suit-choice strong{font-size:8px}.seventh-choice{margin-top:8px;padding:9px 12px;gap:11px}.seventh-choice img{width:25px;height:35px}.seventh-choice strong{font-size:12px}.seventh-choice small{font-size:7px;margin-top:3px}.seventh-choice>b{font-size:23px}.hand-section,.table-wrap[data-phase=bid] .hand-section{padding:12px 9px 9px;min-height:0}.hand-heading{margin:0 0 13px;font-size:7px;letter-spacing:1px}#hint{font-size:8px}.hand{min-height:78px;padding-bottom:5px}.hand .card{flex-basis:44px;height:62px;margin-left:-5px}.table-wrap[data-phase=bid] .hand .card{flex-basis:61px;height:86px;margin-left:0}.hand .card .mobile-index{display:flex}.held-seventh{padding:5px 8px;margin:6px auto 0}.held-seventh img{width:23px;height:32px}.held-seventh strong{font-size:8px}.held-seventh small{font-size:7px}.table-history{border-top:1px solid #a9ad7b20;margin-top:5px;padding:0 13px;color:#91a18a}.table-history summary{padding:11px 0;cursor:pointer;list-style:none;font-size:9px;display:flex;justify-content:space-between}.table-history summary::-webkit-details-marker{display:none}.table-history p{font-size:8px;margin:8px 0 12px;line-height:1.6}#activity{max-height:160px;margin:0}#activity li{padding:6px 0;font-size:9px}.table-event{font-size:9px;top:25%;padding:8px 12px}.set-result{font-size:10px;line-height:1.6}.room-heading h2{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}
@media(min-width:480px){.board-scorebar{padding:0 22px 17px;grid-template-columns:1fr 100px 1fr;gap:20px}.traditional-score{gap:12px}.score-stack{width:58px;min-width:58px;height:72px}.score-under{width:43px;height:60px}.score-face{width:46px;height:65px;left:11px}.set-tokens{flex-direction:row;flex-wrap:wrap}.set-tokens>span>span{display:inline}.score-explainer>strong{font-size:10px}.team-score span{font-size:12px}.team-score b{font-size:22px}.board-score-caption>span{font-size:8px}.board-score-caption small{font-size:9px}.felt,.table-wrap[data-phase=bid] .felt,.table-wrap[data-phase=trump] .felt{height:310px;border-radius:42%}.felt:after,.felt-ring{border-radius:42%}.avatar{width:38px;height:38px;font-size:20px}.seat span{font-size:10px}.seat small{font-size:7px}.center h3,.table-wrap[data-phase=bid] .center h3,.table-wrap[data-phase=trump] .center h3{font-size:23px}.center p{font-size:10px}.played{inset:85px 65px 80px}.played .card{width:58px;height:81px}.played .p0,.played .p2{left:calc(50% - 29px)}.played .p1{left:calc(50% - 86px)}.played .p3{right:calc(50% - 86px)}.controls{padding:17px 25px 8px}.hand-section,.table-wrap[data-phase=bid] .hand-section{padding:17px 24px 12px}.hand .card{flex-basis:65px;height:91px}.hand{min-height:103px}.table-wrap[data-phase=bid] .hand .card{flex-basis:73px;height:102px}.board-context{padding:13px 24px 0;flex-direction:row;align-items:center}.contract{flex:1}.trump-panel{flex:1.5}.bid-panel,.trump-picker{max-width:560px}.bid-actions>button{min-height:78px}.bid-amounts button{min-height:37px}.table-history{padding:0 24px}.table-history summary{font-size:10px}.room-heading h2{font-size:24px;max-width:none}.room-heading{margin:20px 6px}.room-tools .quiet{font-size:11px;padding:9px 13px}}
@media(min-width:900px){body.in-game main{max-width:940px;padding:0 22px}body.in-game header{height:70px;padding:0 5%}.board-scorebar{padding:0 30px 17px;grid-template-columns:1fr 150px 1fr;gap:25px}.team-score small{display:block;font-size:8px}.traditional-score{gap:13px}.board-score-caption{padding-top:0}.felt,.table-wrap[data-phase=bid] .felt,.table-wrap[data-phase=trump] .felt{height:330px;margin:0 21px}.hand .card{flex-basis:76px;height:106px}.table-wrap[data-phase=bid] .hand .card{flex-basis:80px;height:112px}.board-context{gap:15px}.hand{min-height:117px}.hand-heading{font-size:8px}.board-team{max-width:260px}.board-team:last-child{justify-self:end;width:100%}.center{width:60%}.seat .card-backs{display:flex}.seat.bottom .card-backs{display:none}.seat.top{transform:translate(-50%,-12%)}.played{inset:100px 90px 85px}.room-heading{margin:17px 6px}.table-top{padding:13px 25px}}
@media(max-width:360px){.board-scorebar{grid-template-columns:1fr 50px 1fr;padding:0 9px 10px}.board-score-caption small{font-size:6px}.score-explainer>strong{font-size:7px}.traditional-score{gap:3px}.hand .card{flex-basis:40px;height:57px;margin-left:-6px}.room-heading h2{font-size:16px;max-width:170px}.room-tools .quiet{padding:7px;font-size:8px}.felt,.table-wrap[data-phase=bid] .felt,.table-wrap[data-phase=trump] .felt{height:240px}.played{inset:66px 30px 63px}.board-context{padding:9px 10px 0}}
.room-heading>div:first-child{min-width:0;flex:1}.room-heading h2{max-width:100%}.room-tools{flex-shrink:0}.room-tools .quiet{white-space:nowrap}
@media(max-width:360px){body.in-game .brand>span:last-child{display:none}body.in-game .header-right .quiet{font-size:8px;padding:8px}.room-heading h2{max-width:100%}}
@media(max-width:479px){.hand .card{flex-basis:clamp(32px,calc((100vw - 70px)/8 + 5px),44px)}}
