/* The felt is established project artwork. The score and teams remain public. */
.stage{max-width:660px;padding:8px;border:0;background:transparent}
.turnbar{--tb-msg-lines:2;--tb-st-lines:1}.turnbar .message{height:3.1em;min-height:3.1em;font-size:16px;line-height:1.55}
#table{background:#285b46 url('assets/felt.webp');color:#fff8ea;padding:10px;border:1px solid #1e4b38;border-radius:8px}
#team-score{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 6px;font-size:16px}
.team-box{border:1px solid #ffffff50;border-radius:6px;padding:4px 8px;display:flex;justify-content:space-between;align-items:center;gap:6px}.team-box strong{font-size:22px}.team-box small{font-size:14px;white-space:nowrap}
#table-meta{min-height:0;margin:0;font-size:14px;line-height:1.5}
.trick-layout{grid-template-columns:1fr 1.2fr 1fr;grid-template-rows:84px 104px 80px;margin:4px 0}
.seat{padding:3px;border:2px solid transparent;line-height:1.2;font-size:14px}.seat strong{min-height:0;line-height:1.2}.seat small{font-size:14px;line-height:1.2;margin-top:2px}.seat .played{width:49px;height:68px;margin:3px auto}.played svg{display:block;filter:drop-shadow(0 1px 1px #0005)}
.seat.on{border-color:#ffe5a0;background:#ffffff15}.seat.out{opacity:1;background:#ffffff15;border-style:dashed;border-color:#ffffff60}.seat.winning .played{outline:2px solid #ffe5a0;border-radius:6px}.seat[data-seat="0"] .played{width:45px;height:62px}.seat[data-seat="0"] small{display:none}
.seat .played:empty{width:49px;height:68px;border:1px dashed #ffffff70;border-radius:5px;background:#ffffff0c}
.trump-center{font-size:14px;line-height:1.4;align-self:center}.trump-center strong{font-size:28px;line-height:1.2}.trump-center #bower-note{font-size:14px;line-height:1.3;margin-top:4px}.trump-center #maker{font-size:13px;line-height:1.25}
.upcard{display:flex;flex-direction:column;gap:2px;margin:0;min-height:0;font-size:14px}.upcard svg{width:52px;height:72px}.upcard + .trump-center{margin:0}
#table[data-phase="bid"] .trick-layout,#table[data-phase="discard"] .trick-layout{grid-template-rows:34px 98px 26px}
#table[data-phase="bid"] .played,#table[data-phase="discard"] .played{display:none}
#table[data-phase="bid"] #trump-label,#table[data-phase="bid"] #trump-mark,#table[data-phase="bid"] #maker{display:none}
#table[data-phase="discard"] #bower-note{display:none}
#table[data-phase="discard"] #trump-label,#table[data-phase="discard"] #trump-mark,#table[data-phase="discard"] #maker{display:none}
#table{min-height:444px}.team-box>span{display:flex;align-items:center;gap:4px;white-space:nowrap}
.seat[data-seat="2"]{grid-area:1/1/2/4;display:flex;justify-content:center;align-items:center;gap:10px}.seat[data-seat="0"]{grid-area:3/1/4/4;display:flex;justify-content:center;align-items:center;gap:10px}
.seat[data-seat="2"] .played,.seat[data-seat="0"] .played{margin:0}.seat[data-seat="2"] small{margin:0}.seat[data-seat="0"] strong{min-width:70px}.trick-layout{grid-template-rows:80px 110px 74px}
#table[data-phase="bid"] .hand-card:disabled{opacity:1}.play-order{display:block;font-size:12px;line-height:1.2;color:#fff8ea;min-height:14px}
.hand-label{font-size:14px;text-align:center;line-height:1.35;min-height:1.35em;margin:5px 0}
#hand{gap:8px;min-height:99px;align-items:flex-start}
.hand-card{position:relative;width:58px;min-width:44px;min-height:99px;padding:2px 0;border:2px solid transparent;border-radius:6px;background:transparent;color:#fff8ea;touch-action:pan-y}
.hand-card svg{width:100%;height:77px;max-height:none;display:block;filter:drop-shadow(0 1px 1px #0005)}.hand-card span{font-size:13px;line-height:1.2;min-height:16px}
.hand-card.legal{border-color:#e9ffe5;background:#ffffff15}.hand-card:disabled{opacity:.52}.hand-card.bower span{color:#ffe5a0}.hand-card:focus-visible{outline:3px solid #ffe5a0;outline-offset:2px}
#action-panel{margin:6px 0 0;min-height:0}#bid-panel .suits{gap:8px;margin-bottom:6px}#bid-panel .suits .btn{font-size:24px;min-height:44px;line-height:1.1;padding:5px;color:#263b45;background:#fffdf6;border-color:#d9d6ce}#bid-panel .suits .btn[data-red="true"]{color:#a72b2b}#bid-panel .suits .btn small{display:block;font-size:13px;line-height:1.2}
#bid-panel .suits .btn:disabled{opacity:.4;border-style:dashed}.bid-other{justify-content:space-between;gap:8px}.bid-other .btn{background:#fffdf6;color:#263b45;min-width:88px}.bid-other label{font-size:16px;min-height:44px;padding:4px}.bid-other input{accent-color:#2f5d8a;margin:0;width:24px;height:24px}
#next-panel{min-height:0;padding:0;display:flex;align-items:center;justify-content:space-between;gap:8px}#next-panel p{min-height:0;font-size:16px;line-height:1.35;margin:0;flex:1}#next-panel .btn{min-height:44px;min-width:100px;background:#fffdf6;color:#263b45}
.controls{gap:8px;margin-top:8px}.controls .btn{font-size:16px;min-height:44px;padding:8px 12px}.aux-tools{margin-top:8px}.aux-tools summary{min-height:44px;padding:10px 4px;cursor:pointer;font-size:16px}
.card-flight{position:fixed;z-index:1200;pointer-events:none;transform-origin:top left}.card-flight svg{display:block;width:100%;height:100%;filter:drop-shadow(0 2px 1px #0005)}
.guide-image{position:relative;max-width:360px;margin:auto}.guide-image img{display:block;width:100%;height:auto;margin:0;filter:none}.guide-image .annotation{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.article figcaption{font-size:16px;line-height:1.65;margin-top:8px}.article figure{margin:20px 0 28px}
#table:is([data-phase="bid"],[data-phase="discard"]) .hand-label{display:none;}
@media(min-width:641px){#bid-panel{display:flex;align-items:center;gap:8px;}#bid-panel .suits{flex:1;margin:0;}#bid-panel .bid-other{flex-wrap:nowrap;}#table[data-phase="bid"] .trick-layout{grid-template-rows:28px 94px 26px;}#table[data-phase="bid"] .team-box{line-height:1.2;}#table[data-phase="bid"] #hand{min-height:88px;}#table[data-phase="bid"] .hand-card{min-height:87px;}#table[data-phase="bid"] .hand-card svg{height:65px;}}
@media(max-width:420px){.stage{padding:4px}.turnbar{--tb-msg-lines:3}.turnbar .message{height:4.65em;min-height:4.65em;font-size:15px}.turnbar .status{font-size:16px}#table{padding:8px}.team-box{padding:4px;font-size:14px;gap:4px}.team-box strong{font-size:20px}.team-box small{font-size:13px}.trick-layout{grid-template-columns:1fr 1fr 1fr;grid-template-rows:82px 102px 78px}.seat{font-size:13px}.seat small{font-size:13px}.seat .played{width:47px;height:65px}.seat strong{display:block;min-height:0}.trump-center{font-size:13px}.trump-center #maker{font-size:12px}#hand{gap:8px;min-height:89px}.hand-card{width:calc((100% - 40px)/6);min-width:44px;min-height:87px}.hand-card svg{height:65px}.hand-card span{font-size:13px}.bid-other label{font-size:15px}.controls .btn{font-size:16px;padding:8px 10px}.upcard svg{width:49px;height:68px}}
@media(prefers-reduced-motion:reduce){.card-flight{display:none}}
@media(max-width:420px){.team-box{flex-direction:column;align-items:center;padding:3px}#table{padding-inline:4px}#hand{gap:8px}.hand-card{width:calc((100% - 40px)/6)}#table{min-height:453px}.trick-layout{grid-template-rows:80px 118px 74px}.seat[data-seat="2"],.seat[data-seat="0"]{gap:8px}}
