:root{color:#f7f5ed;font-synthesis:none;--paper:#f7f5ed;--ink:#283433;--muted:#d7dfd5;--red:#993e3a;--safe-left:max(14px,env(safe-area-inset-left));--safe-right:max(14px,env(safe-area-inset-right));background:#303b3a;font-family:Trebuchet MS,Arial,sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}body{min-width:280px;margin:0}button,input,select{font:inherit}button{min-width:44px;min-height:44px;color:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:0;border-radius:5px;padding:8px 14px}button:disabled{opacity:.5;cursor:default}button.primary{color:#25302e;background:#dde3d9}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible{outline-offset:3px;outline:2px solid}button:hover:not(:disabled){background:#ffffff10}input,select{min-height:46px;color:var(--paper);background:#252f2e;border:1px solid #8f9d94;border-radius:5px;width:100%;min-width:0;padding:10px}h1,h2,h3,p{margin-top:0}p{line-height:1.5}h1{font-size:36px;font-weight:400}h2{font-size:22px;font-weight:400}h3{margin:26px 0 10px;font-size:19px}label{gap:8px;font-size:15px;display:grid}.quiet{color:var(--muted);font-size:14px}.topbar{height:calc(44px + env(safe-area-inset-top));padding:env(safe-area-inset-top) var(--safe-right) 0 var(--safe-left);justify-content:space-between;align-items:center;gap:8px;display:flex}.topbar nav{gap:4px;display:flex}.topbar button{padding:8px 10px;font-size:13px}.brand-small{color:#d7dfd5;font-size:14px}#rooms{max-width:1200px;margin:auto}.screen{padding:24px max(24px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left));min-height:calc(100dvh - 44px)}.home{grid-template-columns:1.1fr 1fr;align-items:center;gap:40px;padding-inline:clamp(24px,7vw,100px);display:grid}.home h1{letter-spacing:-5px;margin:0 0 12px;font-family:Georgia,serif;font-size:clamp(86px,16vw,160px);line-height:1}.home p{margin:0 0 24px;font-size:22px;line-height:1.35}.home p.quiet{margin-top:18px;font-size:14px}.home-actions{flex-wrap:wrap;gap:10px;display:flex}.home-actions button:not(.primary){border:1px solid #ffffff50}.home-art{justify-content:center;align-items:center;min-height:270px;display:flex;position:relative}.hero-card{aspect-ratio:2/3;background:var(--paper);width:clamp(120px,21vw,225px);color:var(--ink);z-index:1;border-radius:12px;padding:18px;font-family:Georgia,serif;transform:rotate(-12deg)}.hero-card span{font-size:40px;line-height:1}.hero-card b{text-align:center;margin-top:30px;font-size:85px;font-weight:400;display:block}.hero-card.second{color:var(--red);z-index:0;position:absolute;transform:translate(50px,6px)rotate(10deg)}.form-screen{max-width:620px;margin:auto;padding-top:12px}.back{margin-bottom:4px;margin-left:-14px}.form-screen h1{margin-bottom:20px}#room-entry{gap:18px;display:grid}#entry-submit{justify-self:start;min-width:140px}#profile-hint{margin:0}#room-code{letter-spacing:5px;text-transform:uppercase}.banner{margin:0 var(--safe-right) 0 var(--safe-left);border-bottom:1px solid #ffffff25;align-items:center;gap:8px;padding:2px 0;font-size:13px;display:flex}.banner p{flex:1;margin:0}.banner button{padding:6px 10px;font-size:13px}.lobby{grid-template-columns:1fr 1.25fr;align-items:center;gap:48px;display:grid}.lobby-invite h1{letter-spacing:5px;margin:12px 0;font:clamp(38px,7vw,70px)/1.1 Georgia,serif}.lobby-invite p{margin:10px 0}.lobby-members h2{margin-bottom:12px}#room-seats{grid-template-columns:1fr 1fr;gap:8px 18px;margin:0 0 12px;padding:0;list-style:none;display:grid}.seat{border-bottom:1px solid #ffffff25;grid-template-columns:20px minmax(0,1fr);gap:3px 7px;padding:8px 0;display:grid}.seat small{color:#becbbf;grid-column:2;font-size:12px}.seat-name{overflow-wrap:anywhere;font-size:15px}.camp-label{color:#b8c5b7}.lobby-members label{align-items:center;gap:10px;font-size:13px;display:flex}.lobby-members select{width:150px;min-height:44px;padding:6px}.lobby-members #room-status{margin:10px 0;font-size:13px}.lobby-members button{font-size:14px}.in-game{flex-direction:column;height:100dvh;display:flex;overflow:hidden}.in-game #rooms{flex-direction:column;flex:1;width:100%;max-width:1400px;min-height:0;display:flex}.game{min-height:0;padding:0 var(--safe-right) env(safe-area-inset-bottom) var(--safe-left);flex-direction:column;flex:1;display:flex}.game-head{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;min-height:44px;display:grid}.score{white-space:nowrap;padding:6px;font-size:17px}.game-head p{text-align:center;overflow-wrap:anywhere;margin:0;font-size:15px;line-height:1.2}.game-controls{border-bottom:1px solid #ffffff20;justify-content:space-between;align-items:center;gap:8px;min-height:44px;display:flex}.views,#game-actions{align-items:center;gap:4px;display:flex}.game-controls button{white-space:nowrap;padding:8px 12px;font-size:14px}.views button{border-radius:0}.views button[aria-pressed=true]{box-shadow:inset 0 -2px #c8d0c6}.game-controls #play-card{min-width:118px}.play-area{flex:1;min-height:0;overflow:hidden}.hand-view,.table-view{height:100%;min-height:0;position:relative}.hand{justify-content:center;align-items:flex-start;gap:clamp(12px,3vw,30px);height:100%;padding-top:20px;display:flex}.playing-card{aspect-ratio:2/3;background:var(--paper);width:clamp(152px,25vw,320px);height:auto;color:var(--ink);text-align:left;box-shadow:none;border:2px solid #0000;border-radius:12px;flex:none;justify-content:flex-start;align-items:flex-start;padding:16px;font-family:Georgia,serif;transition:transform .1s;display:flex;position:relative}.playing-card:hover:not(:disabled){background:var(--paper)}.playing-card:disabled{opacity:1}.playing-card .rank{flex-direction:column;align-items:center;gap:3px;font-size:clamp(44px,6vw,72px);line-height:.95;display:flex}.rank small{font-size:.55em}.playing-card .suit{text-align:center;font-size:clamp(58px,8vw,98px);line-height:1;position:absolute;top:43%;left:0;right:0}.red{color:var(--red)}.playing-card[aria-pressed=true]{border-color:#b7c4b2;transform:translateY(-8px)}.selected-mark{color:#fff;text-align:center;background:#35493d;border-radius:50%;width:25px;height:25px;font:16px/25px Arial,sans-serif;position:absolute;top:10px;right:10px}.card-back{background:repeating-linear-gradient(45deg,#dce2d9,#dce2d9 7px,#d2d9cf 7px 8px);border-color:#bac6bb;justify-content:center;padding-top:65px}.lock-symbol{font-size:30px}.hand-message{text-align:center;margin:10px 0 0;font-size:13px}.hand-message:not([hidden])+.hand{padding-top:10px}.table-view>p{text-align:center;margin:10px 0 0;font-size:12px}.flat-table{justify-content:center;align-items:flex-start;gap:clamp(10px,2vw,24px);min-width:0;height:100%;padding-top:12px;display:flex}.played{flex:0 220px;justify-items:center;gap:8px;width:22%;min-width:0;display:grid}.played-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:13px;overflow:hidden}.table-card.playing-card{width:100%;padding:16px}.table-card .rank{font-size:clamp(34px,4vw,58px)}.table-card .suit{font-size:clamp(42px,6vw,80px)}.rotate-tip{display:none}.final-screen{text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.final-screen h1{margin-bottom:16px;font-family:Georgia,serif;font-size:clamp(30px,5vw,58px)}#final-score{font-size:19px}#final-detail{max-width:620px}.final-screen .home-actions{justify-content:center}dialog{background:var(--paper);width:min(660px,100vw - 24px);max-height:calc(100dvh - 24px);color:var(--ink);border:0;border-radius:12px;padding:0;box-shadow:0 20px 80px #0005}dialog[open]{flex-direction:column;display:flex}.dialog-head{border-bottom:1px solid #bbc7bc;flex:none;justify-content:space-between;align-items:center;gap:16px;padding:10px 18px;display:flex}.dialog-head h2{margin:0;font-size:23px}.dialog-head button{padding:6px;font-size:24px}.dialog-body{overscroll-behavior:contain;min-height:0;padding:18px 22px;line-height:1.55;overflow:auto}.dialog-body p{margin-bottom:16px;font-size:15px}.dialog-body>button{border:1px solid #adbcae;margin:6px 6px 0 0}.dialog-actions{justify-content:flex-end;gap:10px;margin:22px 0;display:flex}.dialog-actions button{border:1px solid #aab8ac}.rank-order{padding:12px 0;font:700 clamp(17px,3vw,24px) Georgia,serif}summary{cursor:pointer;min-height:44px;padding:10px 0;font-weight:700}.score-sheet,.examples{border-collapse:collapse;width:100%;margin:15px 0}.score-sheet th,.score-sheet td,.examples th,.examples td{text-align:left;border-bottom:1px solid #c3ccc1;padding:9px 6px}.examples{font-size:12px;line-height:1.4}.examples td:first-child,.examples td:last-child{white-space:nowrap;width:25%}.examples th{font-weight:700}.result-explanation{padding-top:8px}#fullscreen-message{margin:0}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (height<=460px) and (orientation:landscape){.screen{padding-top:12px;padding-bottom:12px}.home{gap:30px}.home h1{font-size:90px}.home p{margin-bottom:16px;font-size:19px}.home-art{min-height:210px}.hero-card{width:130px;padding:14px}.hero-card span{font-size:32px}.hero-card b{margin-top:18px;font-size:60px}.home p.quiet{margin-top:12px;font-size:12px}.form-screen{max-width:720px}.form-screen h1{margin-bottom:10px;font-size:27px}.back{position:absolute;top:49px;right:24px}#room-entry{grid-template-columns:1fr 1fr;gap:10px 20px}#entry-submit{grid-area:2/2}#profile-hint{grid-area:2/1;align-self:center;font-size:12px}.form-screen label{gap:5px;font-size:13px}.lobby{gap:24px}.lobby-members h2{margin-bottom:6px;font-size:19px}.lobby-invite p{font-size:12px}.lobby-invite h1{font-size:42px}.seat{padding:4px 0}.seat-name{font-size:13px}#room-seats{gap:5px 12px;margin-bottom:6px}.lobby-members #room-status{margin:6px 0}.final-screen h1{margin:5px 0 10px}.final-screen p{margin-bottom:12px;font-size:14px}.final-screen #final-score{font-size:18px}}@media (width<=600px) and (orientation:landscape){.topbar button{font-size:12px}.game-head p{font-size:13px}.score{font-size:15px}.game-controls button{padding:8px 9px;font-size:13px}.game-controls #play-card{min-width:100px}.game-controls{gap:4px}.hand{gap:14px}.home{gap:20px;padding-inline:28px}.home-actions{gap:7px}.home-actions button{padding-inline:12px;font-size:14px}.lobby{grid-template-columns:.85fr 1.15fr;gap:18px}.lobby-members label{gap:5px;font-size:12px}.lobby-members select{width:120px}.lobby-members button{padding-inline:10px;font-size:13px}}@media (orientation:portrait){.home{text-align:center;grid-template-columns:1fr;gap:30px;padding:40px 24px}.home-actions{justify-content:center}.home h1{font-size:100px}.home-art{min-height:230px}.hero-card{width:140px}.hero-card b{margin-top:25px;font-size:70px}.form-screen h1{font-size:30px}.lobby{grid-template-columns:1fr;align-content:start;gap:28px}.lobby-invite{text-align:center}.lobby-invite h1{font-size:52px}.lobby-members select{flex:1;width:auto}.game-head{grid-template-columns:1fr 1fr;gap:0}.game-head p{grid-area:2/1/auto/-1;align-content:center;min-height:28px}.score:last-child{grid-area:1/2}.game-controls{flex-wrap:wrap;gap:0}.views{justify-content:center;width:100%}#game-actions{flex-wrap:wrap;justify-content:center;width:100%;padding-bottom:4px}.hand{gap:10px;padding-top:22px}.playing-card{width:calc(33.3333vw - 17.3333px);min-width:0;max-width:200px;padding:9px}.playing-card .rank{font-size:38px}.playing-card .suit{font-size:45px}.selected-mark{width:20px;height:20px;font-size:13px;line-height:20px;top:8px;right:6px}.flat-table{flex-wrap:wrap;align-content:start;gap:12px}.played{flex:0 42%;width:42%;max-width:160px}.table-card.playing-card{padding:12px}.rotate-tip{text-align:center;color:#c0cbbf;margin:0;padding:5px 0;font-size:11px;display:block}.dialog-head{padding:8px 12px}.dialog-head h2{font-size:21px}.dialog-body{padding:16px}.examples{font-size:11px}.examples td,.examples th{padding:7px 3px}.brand-small{font-size:12px}.topbar{gap:0}.topbar button{padding-inline:8px;font-size:12px}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}.game-head{flex-shrink:0;grid-template-columns:minmax(0,1fr) minmax(100px,1fr) minmax(0,1fr);gap:10px;min-height:78px}.score{white-space:normal;flex-direction:column;align-items:center;gap:3px;width:100%;min-width:0;padding:6px;display:flex}.team-name{flex-direction:column;max-width:100%;font-size:14px;line-height:1.15;display:flex}.team-name>span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.points-value{font-size:16px;line-height:1.15}.tricks-count{color:var(--muted);white-space:nowrap;font-size:13px;line-height:1.2}.round-context{text-align:center;min-width:0}.game-head .round-context p{margin:0;font-size:14px;line-height:1.25}.game-head #trick-progress{color:var(--muted);margin-top:6px;font-size:12px}.game-controls{flex-shrink:0}.game-controls>span{font-size:12px}.play-area{grid-template-columns:minmax(0,58fr) minmax(0,42fr);gap:16px;padding-top:8px;display:grid}.hand-view{overflow:hidden;container-type:inline-size}.hand{justify-content:center;gap:0;padding-top:12px}.hand .playing-card{width:43cqw;min-width:0;max-width:260px;margin-left:-17cqw;padding:12px}.hand .playing-card:first-child{margin-left:0}.hand .playing-card[aria-pressed=true]{z-index:auto}.hand .playing-card .rank{font-size:clamp(38px,8cqw,65px)}.hand .playing-card .suit{font-size:clamp(50px,16cqw,90px)}.hand .selected-mark{width:22px;height:22px;font-size:15px;line-height:22px;top:7px;left:18cqw;right:auto}.hand .card-back{padding-top:45px}.table-view{border-left:1px solid #ffffff20;flex-direction:column;min-width:0;padding-left:14px;display:flex;overflow:hidden}.table-view>p{text-align:left;white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;margin:0 0 6px;font-size:12px;line-height:1.2;overflow:hidden}.flat-table{flex:1;grid-template-rows:repeat(2,minmax(0,1fr));grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 10px;height:auto;min-height:0;padding:0 0 8px;display:grid}.flat-table>.quiet{grid-column:1/-1;align-self:center;font-size:13px}.played{flex-direction:column;align-items:stretch;gap:3px;width:100%;max-width:none;min-height:0;display:flex}.played-name{flex-shrink:0;font-size:12px;line-height:15px}.table-card.playing-card{aspect-ratio:auto;border-radius:7px;align-items:center;width:100%;min-width:0;height:100%;min-height:28px;max-height:108px;padding:4px 9px}.table-card .rank{flex-direction:row;align-items:center;gap:7px;font-size:clamp(25px,3.5vw,40px)}.table-card .rank small{font-size:.75em}.table-card .suit{display:none}.seat{grid-template-columns:minmax(0,1fr)}.seat small{grid-column:1}.score-sheet th{overflow-wrap:anywhere}.examples td:first-child,.examples td:last-child{white-space:normal;overflow-wrap:anywhere}@media (width<=600px) and (orientation:landscape){.game-head{gap:6px}.team-name{font-size:13px}.points-value{font-size:15px}.tricks-count,.game-head .round-context p{font-size:12px}.play-area{gap:9px}.table-view{padding-left:8px}.flat-table{gap:5px 7px}.hand .playing-card{padding:10px}.hand .playing-card .rank{font-size:38px}.hand .selected-mark{width:20px;height:20px;line-height:20px;top:6px;right:auto}.table-card.playing-card{padding:3px 7px}.table-card .rank{font-size:26px}}@media (orientation:portrait){.game-head{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:3px;min-height:0}.round-context{grid-area:2/1/auto/-1;padding:4px 0}.game-head .round-context p{min-height:0;font-size:13px;display:inline}.game-head #trick-progress{margin-left:10px;font-size:12px}.game-head .score:last-child{grid-area:1/2}.game-controls{flex-wrap:nowrap;gap:5px}.game-controls>span{display:none}#game-actions{flex-wrap:nowrap;justify-content:flex-end;width:100%;padding:0}.play-area{grid-template-rows:minmax(150px,1fr) minmax(150px,1fr);grid-template-columns:1fr;gap:12px}.table-view{border-bottom:1px solid #ffffff20;border-left:0;grid-row:1;padding-left:0}.hand-view{grid-row:2}.hand .playing-card{width:31cqw;margin-left:0;padding:10px}.hand{gap:8px}.hand .playing-card .rank{font-size:38px}.flat-table{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px}.table-card.playing-card{max-height:95px}.table-card .rank{font-size:34px}.hand .selected-mark{left:auto;right:6px}}.lobby-invite,.lobby-members{min-width:0}.lobby-invite,.seat small{overflow-wrap:anywhere}.hand .playing-card{border-color:#cbd3ca}.hand .playing-card[aria-pressed=true]{border-color:#70836d}.examples{table-layout:fixed}.examples td{overflow-wrap:anywhere}#final-title,#final-score,#final-detail{overflow-wrap:anywhere;max-width:100%}.trick-status{text-align:center;min-height:22px;color:var(--paper);white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid #ffffff20;flex-shrink:0;margin:0;padding:3px 6px;font-size:14px;line-height:1.2;overflow:hidden}.table-card.playing-card{flex:1 1 0;height:auto}.score-marks{min-height:20px;color:inherit;flex-shrink:0;justify-content:center;align-items:center;gap:12px;line-height:1;display:inline-flex}.score-mark-group{align-items:center;gap:5px;display:inline-flex}.score-mark{background:currentColor;flex-shrink:0;display:block}.score-mark.long{border-radius:2px;width:3px;height:17px}.score-mark.petit{border-radius:50%;width:6px;height:6px}.score-zero{font-size:15px;line-height:20px}#final-score{flex-wrap:wrap;justify-content:center;gap:32px;display:flex}.final-team-score{flex-direction:column;align-items:center;gap:8px;min-width:100px;display:flex}.final-team-name{overflow-wrap:anywhere;font-size:16px}.final-team-score .score-marks{min-height:24px}.final-team-score .score-mark.long{width:4px;height:23px}:root{--cloth:#256b4c;--paper:#f7f1e5;--ink:#19251e;--muted:#c0d5b8;--gold:#e6aa32;--deep:#174531;--red:#a83e35;color:var(--paper);background:var(--cloth);font-family:Georgia,Times New Roman,serif}body{background:var(--cloth)}button{border-radius:10px}button.primary{background:var(--paper);color:var(--deep)}button.primary:hover:not(:disabled){background:#fffaf0}input,select{background:var(--deep);border-color:#8bab8d;border-radius:8px}h1,h2,h3{font-family:Georgia,Times New Roman,serif;font-weight:700}.topbar{height:calc(48px + env(safe-area-inset-top));flex-shrink:0}.topbar button,.brand-small,.quiet,.tricks-count,.trick-status,#trick-progress,.played-name,.force-guide{font-family:Courier New,monospace}.brand-small{color:var(--muted);letter-spacing:1px;white-space:nowrap;text-transform:uppercase;font-size:12px}.topbar button{color:var(--muted);font-size:12px}.home h1{font-weight:700}.hero-card{color:var(--ink);box-shadow:0 15px 24px #103e3428}.hero-card.second{color:var(--red)}.game-head{grid-template-columns:minmax(0,1fr) minmax(75px,.7fr) minmax(0,1fr);min-height:78px}.score{text-align:left;align-items:flex-start;gap:5px;padding:4px 6px}.score:last-child{text-align:right;align-items:flex-end}.team-name{font:700 clamp(20px,3vw,30px)/1.05 Georgia,serif}.team-name>span{display:block}.tricks-count{font-size:12px}.game-head #trick-progress{margin:0;font-size:11px}.score-marks{color:var(--gold);min-height:18px}.score-mark.long{width:3px;height:18px}.score-mark.petit{width:10px;height:10px}.score-zero{color:var(--muted)}.game-controls{border:0;gap:12px;padding:5px 0}.turn-announcement{overflow-wrap:anywhere;min-width:0;margin:0;font:700 clamp(18px,2.7vw,28px)/1.1 Georgia,serif}.game-controls button{min-height:44px;padding:8px 16px;font:700 18px/1.1 Georgia,serif}.game-controls #trut{color:var(--gold);border:1px solid var(--gold)}#game-actions{flex-shrink:0;gap:8px}#play-card{min-width:132px}.trick-status{color:var(--muted);border:0;min-height:20px;padding:2px 0;font-size:12px}.play-area{gap:22px;padding-top:6px}.table-view{border:0;padding-left:0}.hand .playing-card{background:var(--paper);color:var(--ink);border:3px solid #0000;border-radius:13px;box-shadow:0 10px 18px #103e3430}.hand .playing-card.red,.table-card.playing-card.red{color:var(--red)}.hand .playing-card[aria-pressed=true]{border-color:var(--gold);transform:translateY(-7px)}.hand .selected-mark{background:var(--gold);color:#fff;left:18cqw;right:auto}.table-card.playing-card{background:var(--paper);color:var(--ink);border:0;border-radius:9px}.played-name{color:var(--muted);font-size:11px}.flat-table>.quiet{text-align:center;font-size:13px}.awaiting-play{display:none}.force-guide{color:var(--muted);text-align:center;flex-shrink:0;margin:0;font-size:11px;line-height:20px}.final-team-name{font-size:22px;font-weight:700}.final-team-score .score-mark.petit{width:10px;height:10px}dialog{background:var(--paper);color:var(--ink);border-radius:16px}dialog::backdrop{background:#103c30c9}.dialog-head{border-color:#d2dac7}.dialog-head h2{font-weight:700}.dialog-body .quiet{color:#52624d}.dialog-actions button.primary{background:var(--deep);color:var(--paper)}#trut-title{color:var(--deep)}@media (orientation:landscape) and (width<=650px){.team-name{font-size:19px}.score{gap:3px;padding:3px}.game-head{gap:6px;min-height:72px}.tricks-count{font-size:11px}.turn-announcement{font-size:18px}.game-controls{gap:6px}.game-controls button{padding:8px 12px;font-size:16px}.play-area{gap:14px}.force-guide{display:none}}@media (orientation:portrait){:root{--safe-left:max(18px,env(safe-area-inset-left));--safe-right:max(18px,env(safe-area-inset-right))}.topbar{padding-inline:var(--safe-left) var(--safe-right);height:calc(52px + env(safe-area-inset-top))}.topbar nav{gap:0}.topbar button{padding-inline:6px;font-size:11px}.brand-small{letter-spacing:.3px;font-size:11px}.game{padding-bottom:max(10px,env(safe-area-inset-bottom));grid-template-rows:auto auto minmax(110px,1fr) auto auto clamp(145px,50vw - 14px,342px) auto;grid-template-columns:minmax(0,1fr);gap:10px;display:grid}.trick-status{grid-row:1}.game-head{grid-row:2;grid-template-columns:minmax(0,1fr) minmax(50px,.35fr) minmax(0,1fr);align-items:start;gap:4px;min-height:0}.score{gap:7px;padding:4px 0}.team-name{font-size:clamp(23px,6.4vw,34px)}.tricks-count{font-size:11px}.game-head .score:last-child{grid-area:1/3}.round-context{grid-area:1/2;align-self:center;padding:8px 0}.game-head #trick-progress{margin:0;font-size:10px;line-height:1.3;display:block}.game-controls,.play-area{display:contents}.turn-announcement{text-align:center;grid-row:4;margin:0;padding:5px 0;font-size:clamp(25px,7vw,36px);line-height:1.15}#game-actions{flex-wrap:wrap;grid-row:5;justify-content:center;gap:10px;width:100%;padding:8px 0;display:flex}#game-actions button{flex:1;min-width:0;min-height:52px;padding:10px 12px;font-size:clamp(18px,5vw,25px)}.game-controls #play-card{flex:1.4;min-width:0}.table-view{border:0;grid-row:3;height:100%;min-height:0;padding:8px 8px 4px;overflow:hidden;container-type:size}.flat-table{flex-wrap:nowrap;justify-content:center;align-items:center;gap:18px;width:100%;height:100%;padding:6px 0;display:flex}.played{flex:0 40%;justify-content:center;align-items:center;gap:7px;width:40%;max-width:145px;height:100%;max-height:220px}.played-name{max-width:100%;font-size:11px;line-height:14px}.table-card.playing-card{aspect-ratio:2/3;border-radius:12px;flex:none;align-items:flex-start;width:min(100%,130px,66.67cqh - 29.3348px);max-width:100%;height:auto;min-height:0;max-height:none;padding:10px;box-shadow:0 12px 20px #103e3430}.table-card .rank{flex-direction:column;align-items:center;gap:2px;font-size:clamp(27px,10cqh,42px);line-height:.95}.table-card .rank small{font-size:.55em}.table-card .suit{font-size:clamp(40px,22cqh,64px);display:block;top:43%}.played:first-child .table-card{transform:rotate(-3deg)}.awaiting-play{display:flex}.card-placeholder{aspect-ratio:2/3;width:min(100%,130px,66.67cqh - 29.3348px);max-width:100%;height:auto;max-height:none;color:var(--muted);text-align:center;border:1px dashed #a6c399;border-radius:12px;justify-content:center;align-items:center;padding:16px;font:14px/1.4 Courier New,monospace;display:flex;transform:rotate(3deg)}.game[data-players="4"] .flat-table{gap:8px}.game[data-players="4"] .played{flex:0 24%;max-width:110px}.game[data-players="4"] .table-card.playing-card{padding:6px}.game[data-players="4"] .table-card .rank{font-size:28px}.game[data-players="4"] .table-card .suit{font-size:34px}.game[data-players="4"] .card-placeholder{padding:5px;font-size:11px}.game[data-players="4"] .played:first-child .table-card{transform:none}.hand-view{grid-row:6;height:100%;overflow:hidden}.hand{align-items:flex-start;gap:8px;padding-top:12px}.hand .playing-card{aspect-ratio:2/3;border-radius:13px;width:calc(33.3333cqw - 5.33333px);max-width:220px;margin:0;padding:10px}.hand .playing-card .rank{font-size:clamp(36px,10cqw,56px)}.hand .playing-card .suit{font-size:clamp(48px,16cqw,74px)}.hand .selected-mark{width:22px;height:22px;line-height:22px;top:7px;left:auto;right:5px}.force-guide{white-space:nowrap;grid-row:7;font-size:clamp(9px,2.7vw,13px);line-height:20px}}@media (orientation:portrait) and (height<=700px){.game{grid-template-rows:auto auto minmax(80px,1fr) auto auto clamp(120px,50vw - 14px,220px) auto;gap:5px}.team-name{font-size:22px}.score{gap:4px}.turn-announcement{font-size:24px}#game-actions{padding:3px 0}#game-actions button{min-height:44px;font-size:19px}.force-guide{font-size:10px}.hand .playing-card{padding:8px}.game[data-players="4"] .team-name{font-size:20px}}#trut-alert{border:1px solid var(--gold);border-radius:20px;width:min(400px,100vw - 32px);box-shadow:0 18px 60px #092d2855}#trut-alert .dialog-head{border:0;flex-shrink:0;justify-content:center;padding:25px 54px 3px;position:relative}#trut-title{color:var(--deep);letter-spacing:-2px;margin:0;font:700 58px/1 Georgia,serif}#trut-close{color:var(--deep);border-radius:50%;min-width:44px;min-height:44px;padding:8px;font:26px/1 Georgia,serif;position:absolute;top:7px;right:7px}#trut-alert .dialog-body{text-align:center;padding:10px 24px 24px}#trut-alert .trut-announcer{overflow-wrap:anywhere;margin:0 0 8px;font:700 20px/1.3 Georgia,serif}#trut-description{color:#52624d;margin:0;font:13px/1.4 Courier New,monospace}#trut-wait{color:#52624d;overflow-wrap:anywhere;margin:16px 0 0;font:15px/1.4 Georgia,serif}#trut-alert .dialog-actions{grid-template-columns:1fr 1fr;gap:12px;margin:24px 0 0;display:grid}#trut-alert .dialog-actions button{border-radius:10px;min-width:0;min-height:48px;padding:12px 8px;font:700 18px/1.2 Georgia,serif}#trut-refuse{color:var(--deep);border:1px solid #a7b29b}#trut-alert #trut-accept{background:var(--deep);color:var(--paper);border:1px solid var(--deep)}#trut-alert #trut-accept:hover:not(:disabled){background:var(--cloth)}@media (height<=360px){#trut-alert .dialog-head{padding-top:18px}#trut-title{font-size:48px}#trut-alert .dialog-body{padding:8px 20px 18px}#trut-alert .dialog-actions{margin-top:18px}#trut-alert .trut-announcer{font-size:18px}}.home{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-content:center;gap:clamp(24px,5vw,64px)}.home h1{letter-spacing:normal;width:100%;min-width:0;margin:0;line-height:0}.brand-logo{width:100%;height:auto;display:block}.logo-dark{display:none}.home-copy{min-width:0}.skin-picker{max-width:340px;margin:0 0 22px}.skin-picker select{margin-top:4px}@media (orientation:portrait){.home{grid-template-columns:1fr;align-content:center;gap:24px;padding:24px}.home h1{justify-self:center;max-width:520px}.home-copy{text-align:center}.home-copy .home-actions{justify-content:center}}@media (orientation:landscape) and (height<=460px){.home{gap:24px;padding-block:18px}.home-copy p{font-size:20px}.home-copy .quiet{font-size:12px}}:root[data-skin=mono]{--cloth:#f7f1e5;--paper:#f7f1e5;--ink:#1e1e1e;--muted:#595959;--gold:#1e1e1e;--deep:#1e1e1e;--red:#1e1e1e;color:var(--ink);background:var(--cloth)}[data-skin=mono] .logo-light{display:none}[data-skin=mono] .logo-dark{display:block}[data-skin=mono] button.primary{background:var(--ink);color:var(--paper)}[data-skin=mono] button.primary:hover:not(:disabled){background:#383838}[data-skin=mono] button:hover:not(:disabled){background:#0000000b}[data-skin=mono] input,[data-skin=mono] select{background:var(--paper);color:var(--ink);border-color:#888}[data-skin=mono] .home-actions button:not(.primary),[data-skin=mono] .banner,[data-skin=mono] .seat{border-color:#b1aba2}[data-skin=mono] .seat small,[data-skin=mono] .camp-label{color:var(--muted)}[data-skin=mono] .hand .playing-card,[data-skin=mono] .table-card.playing-card{background:var(--ink);color:var(--paper);box-shadow:0 10px 20px #0002}[data-skin=mono] .hand .playing-card:hover:not(:disabled){background:#292929}[data-skin=mono] .hand .playing-card[aria-pressed=true]{border-color:var(--paper);outline:2px solid var(--ink);outline-offset:-1px}[data-skin=mono] .hand .selected-mark{background:var(--paper);color:var(--ink)}[data-skin=mono] .hand .card-back{background:repeating-linear-gradient(45deg,#272727,#272727 7px,#333 7px 8px);border-color:#555}[data-skin=mono] .card-placeholder{border-color:#777}[data-skin=mono] dialog::backdrop{background:#16161699}[data-skin=mono] .dialog-head,[data-skin=mono] .dialog-actions button,[data-skin=mono] .dialog-body>button,[data-skin=mono] .score-sheet th,[data-skin=mono] .score-sheet td,[data-skin=mono] .examples th,[data-skin=mono] .examples td{border-color:#b1aba2}[data-skin=mono] .dialog-body .quiet,[data-skin=mono] #trut-description,[data-skin=mono] #trut-wait{color:var(--muted)}[data-skin=mono] #trut-alert #trut-accept:hover:not(:disabled){background:#383838}[data-skin=mono] #trut-alert{box-shadow:0 18px 60px #0004}.home{min-height:calc(100dvh - 48px - env(safe-area-inset-top))}@media (orientation:portrait){.home{min-height:calc(100dvh - 52px - env(safe-area-inset-top))}}.home h1:focus{outline:none}.topbar{justify-content:flex-end}.tricks-count{align-items:center;gap:6px;min-height:14px;display:inline-flex}.trick-dot{width:12px;height:12px;box-shadow:inset 0 0 0 3px var(--cloth);background:currentColor;border:1px solid;border-radius:50%;flex:none;display:inline-block}.team-name.has-advantage{padding-right:19px;position:relative}.tie-advantage{color:var(--gold);font:14px/1 Georgia,serif;position:absolute;top:1px;right:0}.table-view{container-type:size}.game .flat-table.has-history{--peek:clamp(26px,12cqh,38px);grid-template-columns:minmax(0,1fr);grid-template-rows:16px repeat(calc(var(--trick-rows) - 1),var(--peek)) minmax(0,1fr);align-content:stretch;align-items:stretch;gap:0;padding:2px 0 4px;display:grid}.table-trick{grid-template-columns:minmax(0,1fr);align-items:stretch;gap:0;min-width:0;min-height:0;display:grid;position:relative}.trick-cards{grid-template-columns:repeat(var(--table-players),minmax(0,1fr));gap:5px;min-width:0;min-height:0;display:grid}.game .has-history .played{justify-content:flex-start;align-items:stretch;gap:0;width:100%;max-width:none;height:100%;min-height:0;max-height:none}.history-names .played-name{text-align:center;min-width:0;font-size:10px;line-height:14px}.game .has-history .table-card.playing-card{aspect-ratio:auto;border-radius:7px;flex:none;justify-content:flex-start;align-items:flex-start;width:100%;height:100%;min-height:24px;max-height:none;padding:3px 5px;transform:none;box-shadow:0 -2px 5px #0002}.game .has-history .table-card .rank{flex-direction:row;align-items:center;gap:3px;font-size:clamp(18px,8cqh,28px);line-height:1}.game .has-history .table-card .rank small{font-size:.7em}.game .has-history .table-card .suit{display:none}.game .has-history .card-placeholder{aspect-ratio:auto;background:var(--cloth);border-radius:7px;flex:none;width:100%;height:100%;min-height:24px;max-height:none;padding:3px;font-size:9px;line-height:1.1;transform:none}@media (orientation:landscape) and (width<=650px){.game[data-players="4"] .has-history .table-card.playing-card{padding-inline:3px}.trick-cards{gap:4px}.history-names .played-name{font-size:9px}}@media (orientation:portrait) and (width<=360px){#game-actions #next-round{padding-inline:8px;font-size:16px}}.game .flat-table.has-history{--peek:clamp(26px,11cqh,38px);--card-height:min(180px,calc((100cqw - 44px) / var(--table-players) * 1.5),calc(100cqh - 22px - (var(--trick-rows) - 1)*var(--peek)));padding-top:4px;padding-bottom:6px}.game .has-history .played{align-items:center}.game .has-history .played .table-card.playing-card{width:calc(var(--card-height)*.6667);height:var(--card-height);aspect-ratio:2/3;max-width:100%;min-height:0;transform:translateX(var(--laid-x,0px)) rotate(var(--laid-angle,0deg));transform-origin:50% 8px;border-radius:5px;flex-shrink:0;padding:3px}.game .has-history .table-card .rank{font-size:min(calc(var(--peek) - 8px),calc(var(--card-height)*.27),24px);gap:2px}.game .has-history .card-placeholder{width:calc(var(--card-height)*.6667);height:var(--card-height);flex-shrink:0;min-height:0}@media (orientation:landscape) and (width<=650px){.game[data-players="4"] .has-history .table-card.playing-card{padding:2px}}.game .has-history .table-card .suit{font-size:calc(var(--card-height)*.32);display:block;top:48%}@media (orientation:landscape) and (width<=650px){.game:has(.has-history) .team-name{flex-direction:row;gap:6px;min-width:0;display:flex}.game:has(.has-history) .team-name>span{text-overflow:ellipsis;min-width:0;overflow:hidden}.game:has(.has-history) .game-head{min-height:64px}}.game .flat-table.fixed-seats{grid-template-columns:repeat(var(--table-players),minmax(0,1fr));grid-template-rows:minmax(0,1fr);align-items:stretch;gap:8px;display:grid}.game .fixed-seats>.played{width:100%;min-width:0;max-width:none;height:100%}@media (orientation:landscape){.game[data-players="4"] .fixed-seats .table-card.playing-card{padding:4px}.game[data-players="4"] .fixed-seats .table-card .rank{gap:3px;font-size:clamp(18px,3vw,28px)}}
