:root{color-scheme:light;--bg:#efede8;--ink:#453b42;--muted:#9b9095;--line:#69565c16;--accent:#815164;--play-w:43px;--play-h:61px;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;min-height:100dvh;background:radial-gradient(ellipse at 15% 5%,#f7f4ef,transparent 65%),var(--bg)}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}button:disabled{cursor:default}button,a{touch-action:manipulation}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:4px}svg{width:18px;height:18px;flex-shrink:0;stroke-width:1.6}button svg{pointer-events:none}[hidden]{display:none!important}
.site-header{height:78px;max-width:1280px;padding:0 40px;margin:auto;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:18px}.header-title{display:flex;align-items:center;gap:18px;white-space:nowrap}.brand{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:23px;font-weight:600;letter-spacing:4px}.header-title>span{font-size:10px;color:#aa9da1;padding-left:17px;border-left:1px solid var(--line)}.scoreboard{display:flex;align-items:center;gap:19px;font-size:10px;color:#9c9095}.scoreboard>span{display:flex;align-items:center;gap:9px}.scoreboard b{font:21px Georgia,serif;color:#65545e}.scoreboard>i{font-style:normal;color:#c4b9bb}.header-tools{display:flex;align-items:center;gap:7px;justify-self:end}.icon-button{display:inline-flex;align-items:center;justify-content:center;height:34px;width:34px;color:#9c9095;border-radius:50%;transition:background .15s,color .15s}.icon-button:hover{color:#5e4353;background:#7b53640a}.icon-button svg{height:17px;width:17px}.level-card{width:27px;height:36px;display:flex;align-items:center;justify-content:center;flex-direction:column-reverse;gap:0;margin-right:13px;color:#9a4b5a;background:#fbf9f4;border:1px solid #e2dcd6;border-radius:3px;box-shadow:1px 2px 4px #715b6114;transform:rotate(-7deg);font-size:9px;line-height:11px}.level-card b{font:bold 17px/18px Georgia,serif}body:not(.level-in-header) .level-card{display:none}
main{max-width:1280px;min-height:calc(100dvh - 78px);margin:auto;padding:4px 28px 30px;display:flex;flex-direction:column;justify-content:center;gap:6px}.table{isolation:isolate;position:relative;flex-shrink:0;width:100%;height:264px;max-width:710px;margin:0 auto}.table:before{content:"";position:absolute;left:50%;top:5px;width:250px;height:250px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(circle at 30% 23%,#eeebe7,#e1dadd 80%);border:1px solid #fbf8f18f;box-shadow:inset 3px 4px 10px #bbafb012,1px 1px 2px #fff8,12px 18px 35px -12px #b3a4a727;pointer-events:none;z-index:-1}.player{position:absolute;display:flex;flex-direction:column;align-items:center;gap:7px;font-size:11px;white-space:nowrap;z-index:2}.player-top{top:0;left:50%;transform:translateX(-50%)}.player-left{left:12px;top:116px}.player-right{right:12px;top:116px}.player-name{position:relative;color:#8a7c83;font-weight:450;letter-spacing:1px}.player-nickname{display:block;max-width:5em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.team-badge{display:inline-flex;align-items:center;flex:none;border:1px solid transparent;border-radius:4px;padding:2px 5px;font-size:11px;font-weight:600;line-height:1.15;letter-spacing:.02em;white-space:nowrap}.team-partner{background:#e7d7e1;border-color:#bd9bac;color:#62374f}.team-opponent{background:#e6e8e8;border-color:#bcc3c5;color:#4e5b61}
.seat-hand>.team-badge{position:absolute;bottom:calc(100% + 5px);left:50%;transform:translateX(-50%);pointer-events:none}.seat-hand{position:relative;display:block;width:40px;height:40px;flex-shrink:0;border-radius:50%;background:linear-gradient(135deg,#faf7f2,#eae4e2);border:1px solid #fff9;box-shadow:2px 4px 8px #a9919b17,inset 0 1px 0 #fff7}.seat-hand i{display:none}.player-count{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;color:#6b5965;font:22px Georgia,serif;z-index:1;font-variant-numeric:tabular-nums}.seat-hand.finished .player-count{font:10px -apple-system,"PingFang SC",sans-serif;color:#947780}.player.active .player-name{color:#745160}.player.active .seat-hand{border-color:#a68a96;box-shadow:0 0 0 3px #a68a9614,2px 4px 8px #a9919b17}
.played{position:absolute;display:flex;flex-direction:column;align-items:center;width:32%;max-width:49%;transform:translateX(-50%);z-index:1}.played-left{left:28%;top:122px}.played-top{left:50%;top:64px;width:49%}.played-right{left:72%;top:122px}.played-bottom{left:50%;bottom:8px;width:49%}.play-cards{display:flex;justify-content:center}.play-cards .card{width:var(--play-w);height:var(--play-h);border-radius:3px;margin-left:var(--played-overlap,-12px);box-shadow:-1px 1px 3px #694b5526;pointer-events:none}.play-cards .card:first-child{margin-left:0}.play-cards .card-corner{font-size:18px;line-height:17px;left:4px;top:4px;letter-spacing:-1px}.play-cards .card-corner>span{font-size:12px;line-height:13px}.play-cards .card-symbol{position:absolute;font-size:22px;right:5px;bottom:5px}.play-cards .wild-tag{font-size:7px;left:4px;top:auto;right:auto;bottom:4px}.play-cards .card.joker .card-corner{font-size:10px;line-height:15px;letter-spacing:1px;top:7px;left:5px}.play-label{font-size:9px;color:#a1949a;margin-top:6px;line-height:14px}.played.lead .play-label{color:#805f70}.pass-label{font-size:10px;color:#a99ba1;padding:19px 0}.table-center{position:absolute;left:50%;top:56%;transform:translate(-50%,-50%);text-align:center;display:flex;flex-direction:column;align-items:center;gap:13px;z-index:3}.round-ready .table-center{top:61%}.round-object{--card-w:74px;--card-h:108px;--rank-size:22px;display:flex;flex-direction:column;align-items:center}.round-object .card{pointer-events:none;transform:rotate(-13deg);box-shadow:4px 8px 17px #74586124,0 1px 2px #fff8;border-color:#e4dad6}.round-object .wild-tag{display:none}.round-caption{font-size:11px;line-height:12px;letter-spacing:3px;color:#78666f;margin-top:15px;margin-left:3px}.start-button{background:#755064;color:#fcf7ef;border:1px solid #734b61;box-shadow:1px 3px 7px #73546720;border-radius:22px;padding:8px 23px;font-size:11px;letter-spacing:2px;white-space:nowrap;transition:background .15s,transform .15s}.start-button:hover{background:#644154;transform:translateY(-1px)}.center-note{color:#78666f;font-size:11px;margin:0;white-space:nowrap}.return-note{font-size:12px;color:#805a6d;margin:0;white-space:nowrap}
.hand-section{padding:0 4px;margin:0;min-width:0}.hand-heading{height:30px;display:flex;align-items:center;justify-content:space-between;margin-bottom:3px;padding:0 11px}.hand-meta{display:flex;align-items:center;gap:16px}.hand-meta>span:first-child{font-size:11px;color:#78666f;font-variant-numeric:tabular-nums}#turn-status{font-size:11px;color:#a38e99;white-space:nowrap}#turn-status:empty{display:none}#turn-status.your-turn{color:#845d73}#turn-status.your-turn:before{content:"";display:inline-block;height:4px;width:4px;background:#9a6b83;border-radius:50%;margin:0 7px 2px 0}.hand-tools{display:flex;align-items:center;gap:16px}.quiet-button{font-size:10px;color:#8e7381;padding:7px 3px;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;border-radius:4px}.quiet-button svg{width:12px;height:12px}.quiet-button:hover{color:#79586c}.quiet-button.active{color:#7e536d}.hand-scroll{padding:23px 0 0;overflow:visible}.hand{--card-w:88px;--card-h:128px;display:flex;flex-direction:column;gap:10px;width:100%;position:relative}.hand-row{position:relative;margin:0 auto}.fan-card{position:absolute;display:block;width:var(--card-w);height:var(--card-h);transform:rotate(var(--fan-angle));transform-origin:50% 100%;pointer-events:none}.fan-card>.card{pointer-events:auto;transform-origin:50% 100%}.card{position:relative;display:block;flex-shrink:0;width:var(--card-w);height:var(--card-h);padding:0;background:#fdfbf7;border:1px solid #e2dcd6;border-radius:5px;box-shadow:-2px 0 4px #69515c1b,1px 3px 5px #80687317;color:#373138;font-family:Georgia,"Times New Roman",serif;text-align:left;user-select:none;overflow:hidden;transition:transform .18s cubic-bezier(.2,.8,.2,1),box-shadow .18s,border-color .18s}.card.red{color:#9a475b}.card.level{border-color:#bea0aa}.card-corner{position:absolute;top:6px;left:5px;font-size:var(--rank-size,24px);font-weight:600;line-height:1;display:flex;flex-direction:column;align-items:center;letter-spacing:-1.6px}.card-corner>span{font-weight:400;font-size:.61em;line-height:1.1;letter-spacing:0;margin-top:2px}.card-corner.opposite{top:auto;left:auto;right:5px;bottom:6px;transform:rotate(180deg)}.card-face{position:absolute;inset:0;pointer-events:none}.pip{position:absolute;transform:translate(-50%,-50%);font-size:calc(var(--card-w) * .15);line-height:1;font-weight:400}.pip.inverted{transform:translate(-50%,-50%) rotate(180deg)}.ace-symbol{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:calc(var(--card-w) * .5);line-height:1}.wild-tag{position:absolute;right:5px;top:6px;color:#9b7183;font:8px/10px -apple-system,sans-serif}.card.joker .card-corner{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:13px;writing-mode:vertical-rl;line-height:17px;letter-spacing:2px;top:9px;left:4px}.card.joker .card-corner.opposite{top:auto;left:auto;right:4px;bottom:9px}.hand .card:hover{transform:translateY(-8px);box-shadow:-2px 3px 5px #72576726,0 8px 12px #72576724}.hand .card.selected{transform:translateY(-22px) rotate(var(--fan-inverse));border-color:#8e6078;box-shadow:0 0 0 1px #8e6078,3px 11px 18px #7257672b}.fan-card:has(.card:focus-visible){z-index:60!important}.fan-card .card:focus-visible{outline-offset:2px}
.action-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:79px;padding:6px 10px 0}.selection-info{display:flex;align-items:center;gap:9px;min-width:0;min-height:15px}#selection-count{font-size:11px;color:#78666f;white-space:nowrap}#selection-type{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.declaration{font-size:9px;padding:3px 7px;border:1px solid #79526616;border-radius:5px;line-height:15px;color:#ae97a5}.declaration.active{border-color:#a37a933b;color:#8d627d;background:#a37a9307}.actions{display:flex;gap:9px;flex-shrink:0}.button{height:42px;min-width:76px;border-radius:23px;font-size:11px;letter-spacing:1px;background:#e8e1e3;border:1px solid #866b7910;display:inline-flex;align-items:center;justify-content:center;color:#94788b;transition:background .15s,transform .15s}.button:hover:enabled{background:#dfd3da}.button:active:enabled{transform:translateY(1px)}.button:disabled{background:#ebe6e4;color:#c3b8bb;border-color:transparent}.button-pass{background:transparent;border-color:#b399a329;color:#ad95a2}.button-hint{background:#e5dce2;color:#7d5b70}.button-play{min-width:120px;background:#755064;border-color:#755064;color:#f9f2eb;font-weight:500;box-shadow:1px 4px 9px #8660751c}.button-play:hover:enabled{background:#664057}.button-play:disabled{background:#c4b3bd;border-color:transparent;color:#f9f4ef;box-shadow:none}.hints{display:flex;gap:6px;justify-content:flex-end;padding:4px 10px 0;flex-wrap:wrap}.hint-option{border:1px solid #9c7b8d1c;border-radius:6px;background:#e7dfe4;color:#a48799;padding:6px 8px;font-size:9px}.hint-option b{font-weight:450;color:#8a627c;margin-right:6px}.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#795b6e;color:#fcf7f0;font-size:11px;padding:12px 21px;border-radius:9px;box-shadow:0 5px 30px #6c4e6230;z-index:40;max-width:92vw;text-align:center}
dialog{padding:0;width:min(430px,calc(100vw - 32px));border:1px solid #fffc;border-radius:17px;background:#f5f1ed;color:var(--ink);box-shadow:0 20px 80px #6f556329;max-height:88dvh}dialog::backdrop{background:#56404d38;backdrop-filter:blur(5px)}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:17px 23px;border-bottom:1px solid var(--line)}.dialog-header h2{font-size:15px;font-weight:500;margin:0}.dialog-header h2 span{font-size:10px;color:#b7a3ae;margin-left:6px}#modal-body{padding:22px 25px 25px;font-size:12px;line-height:1.9;color:#a38d9b}#modal-body h3{font-size:12px;font-weight:500;color:#846677;margin:17px 0 7px}#modal-body h3:first-child{margin-top:0}#modal-body p{margin:0 0 12px}#modal-body a{color:#89657b;border-bottom:1px solid #bca78540}.setting-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:21px}.setting-row label{color:#97788b;font-size:12px}.setting-row select{font:12px -apple-system,"PingFang SC",sans-serif;color:#927086;background:#eae2e7;border:1px solid #a88b9e1a;padding:8px;border-radius:6px;max-width:180px}.setting-row input{accent-color:#9e7b93}.settings-links{display:flex;gap:22px;border-top:1px solid var(--line);padding-top:12px;margin-top:4px}.settings-links button{font-size:12px;color:#a48a9a;padding:4px 0}.settings-links button:hover{color:#87647b}.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:20px}.result-emblem{font:48px "Songti SC",serif;color:#a37b95;text-align:center;margin-bottom:8px}.result-sub{text-align:center;margin-bottom:21px!important;font-size:12px}.result-rank{display:flex;justify-content:space-between;padding:10px 0;border-top:1px solid var(--line);font-size:11px}.result-rank b{font-weight:450;color:#99778f}.result-rank span:first-child{width:44px;color:#b596a8}.result-actions{display:flex;justify-content:center;gap:9px;margin-top:23px}.history-panel{position:fixed;inset:0 0 0 auto;width:350px;background:#f0ebe8;border-left:1px solid #fff7;z-index:20;display:flex;flex-direction:column;box-shadow:-10px 0 50px #8d6e8020}.replay-toolbar{display:flex;align-items:center;gap:9px;padding:14px 20px;border-bottom:1px solid var(--line)}.replay-toolbar input{width:100%;min-width:20px;accent-color:#9e7b93}.replay-toolbar>span{font-size:10px;color:#b6a0ae;white-space:nowrap}#history-list{padding:5px 22px 15px;flex:1;overflow:auto}.history-empty{padding:40px 0;text-align:center;font-size:12px;color:#baa5b2}.history-row{display:grid;grid-template-columns:22px 45px 1fr;gap:5px;padding:12px 0;border-bottom:1px solid var(--line);font-size:11px;line-height:1.8}.history-row .step{font-size:10px;color:#c3b0bb;margin-top:2px}.history-row .who{color:#b99cad}.history-row.ours .who{color:#a9859e}.history-row .what{color:#9b788e;word-break:break-all}.history-row .what em{font-style:normal;font-size:10px;color:#b89eaf;margin-right:8px}.history-row.active{background:#b49bad12;margin:0 -8px;padding:12px 8px;border-radius:4px}.history-bottom{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:12px 20px}.no-motion *{animation:none!important;transition:none!important}
@media(min-width:1050px) and (min-height:501px){main{display:grid;grid-template-columns:minmax(320px,.82fr) minmax(0,1.18fr);align-items:center;gap:54px;padding:12px 40px 48px}.table{height:410px;max-width:440px}.table:before{width:330px;height:330px;top:40px}.player-top{top:12px}.player-left,.player-right{top:174px}.player-left{left:0}.player-right{right:0}.seat-hand{width:44px;height:44px}.player-count{font-size:24px}.player-name{font-size:11px}.player{gap:9px}.played-top{top:91px}.played-left,.played-right{top:174px;width:35%}.played-bottom{bottom:29px}.table-center{top:57%;gap:16px}.round-object{--card-w:100px;--card-h:146px;--rank-size:25px}.round-caption{margin-top:19px}.start-button{padding:9px 26px}.hand-section{padding:0}.hand-heading{padding:0 10px}.hand{gap:13px}.hand-scroll{padding-top:27px}.action-bar{min-height:81px;flex-direction:column;align-items:flex-start;gap:7px;padding:6px 10px 0}.actions{align-self:flex-end}.selection-info:has(#selection-count:empty):has(#selection-type:empty){visibility:hidden}}
@media(min-width:701px) and (max-width:1049px){.site-header{height:68px;padding:0 26px}main{min-height:calc(100dvh - 68px);padding-left:23px;padding-right:23px;gap:5px}.table{height:252px;max-width:650px}.table:before{width:238px;height:238px;top:5px}.played-top{top:57px}.played-left,.played-right{top:115px}.player-left,.player-right{top:110px}.player-top{flex-direction:row;gap:10px}.hand-section{padding:0 3px}.hand-scroll{padding-top:22px}}
@media(max-width:700px){:root{--play-w:34px;--play-h:49px}.site-header{height:64px;padding:0 18px;gap:8px}.brand{font-size:21px;letter-spacing:3px}.header-title>span{display:none}.scoreboard{gap:10px;font-size:9px}.scoreboard>span{gap:5px}.scoreboard b{font-size:17px}.header-tools{gap:1px}.icon-button{height:29px;width:28px}.icon-button svg{width:15px;height:15px}.level-card{height:30px;width:23px;margin-right:8px;font-size:9px;line-height:10px}.level-card b{font-size:15px;line-height:15px}main{padding:4px 16px max(25px,env(safe-area-inset-bottom));gap:3px;min-height:calc(100dvh - 64px)}.table{height:264px}.table:before{width:250px;height:250px;top:5px}.player-left{left:12px}.player-right{right:12px}.player{font-size:10px;gap:7px}.seat-hand{width:38px;height:38px}.player-count{font-size:21px}.player-nickname{max-width:3em}.played-left{left:28%;top:122px;width:32%}.played-right{left:72%;top:122px;width:32%}.played-top{top:64px;width:49%}.played-bottom{bottom:8px;width:49%}.play-cards .card-corner{font-size:15px;line-height:14px;top:3px;left:3px;letter-spacing:-1px}.play-cards .card-corner>span{font-size:10px;line-height:11px;margin-top:1px}.play-cards .card-symbol{font-size:19px;bottom:5px;right:4px}.play-cards .wild-tag{display:none}.play-cards .card.joker .card-corner{font-size:9px;letter-spacing:1px;line-height:12px;left:4px;top:5px}.play-label{font-size:8px;line-height:12px;margin-top:4px}.pass-label{font-size:10px;padding:13px 0}.round-object{--card-w:74px;--card-h:108px;--rank-size:22px}.round-caption{margin-top:14px}.center-note{max-width:190px;white-space:normal}.return-note{font-size:11px}.hand-section{margin:0 -12px;padding:0}.hand-heading{height:29px;padding:0 16px;margin-bottom:2px}.hand-meta{gap:13px}#turn-status{font-size:11px}.hand-tools{gap:14px}.quiet-button{font-size:10px;padding:7px 1px}.quiet-button svg{width:12px;height:12px}.hand-scroll{padding:21px 0 0}.hand{gap:10px}.card{border-radius:5px}.card-corner{top:5px;left:4px;letter-spacing:-1.5px}.card-corner.opposite{bottom:5px;right:4px}.card.joker .card-corner{font-size:12px;line-height:15px;letter-spacing:1.5px;left:3px;top:7px}.card.joker .card-corner.opposite{right:3px;bottom:7px}.wild-tag{font-size:7px;line-height:9px;top:5px;right:4px}.hand .card:hover{transform:none}.hand .card.selected,.hand .card.selected:hover{transform:translateY(-20px) rotate(var(--fan-inverse));box-shadow:0 0 0 1px #8e6078,3px 10px 17px #7257672b}.action-bar{margin:0 12px;min-height:81px;padding:4px 0 0;gap:6px;align-items:flex-start;flex-direction:column}.selection-info{min-height:15px;gap:7px;max-width:100%}.selection-info:has(#selection-count:empty):has(#selection-type:empty){visibility:hidden}.declaration{font-size:9px;line-height:13px;padding:3px 5px}.actions{display:grid;grid-template-columns:1fr 1fr 1.6fr;width:100%;gap:9px}.button{height:43px;min-width:0;font-size:11px}.button-play{min-width:0}.hints{justify-content:flex-start;padding:4px 12px 0;gap:5px}.hint-option{font-size:9px;padding:6px 7px}.hint-option b{margin-right:4px}.history-panel{width:min(350px,95vw)}}
@media(max-width:400px){.site-header{padding:0 14px;gap:7px}.brand{font-size:20px}.scoreboard{gap:7px}.scoreboard>span{gap:4px}.level-card{margin-right:5px}.icon-button{width:25px}main{padding-left:13px;padding-right:13px}.table{height:252px}.table:before{width:236px;height:236px;top:7px}.seat-hand{width:36px;height:36px}.player-left{left:3px}.player-right{right:3px}.player-left,.player-right{top:112px}.played-left,.played-right{top:116px}.played-top{top:58px}.player-top{gap:6px}.round-object{--card-w:70px;--card-h:102px}.round-caption{margin-top:13px}.hand-section{margin-left:-10px;margin-right:-10px}.hand-tools{gap:12px}.hand-heading{padding:0 13px}.action-bar{margin-left:10px;margin-right:10px}}
@media(max-height:740px) and (max-width:700px){:root{--play-w:28px;--play-h:40px}.site-header{height:58px}main{min-height:calc(100dvh - 58px);padding-top:1px;padding-bottom:14px;gap:1px}.table{height:200px}.table:before{width:190px;height:190px;top:4px}.player-top{flex-direction:row;gap:8px}.seat-hand{height:31px;width:31px}.player-count{font-size:18px}.player-left,.player-right{top:86px}.played-top{top:44px}.played-left,.played-right{top:88px}.played-bottom{bottom:6px}.table-center{top:57%;gap:10px}.round-object{--card-w:61px;--card-h:89px;--rank-size:19px}.round-caption{line-height:13px;letter-spacing:2px;margin-top:10px}.start-button{font-size:10px;padding:6px 21px}.hand-heading{height:27px}.hand-scroll{padding-top:19px}.hand{gap:5px}.action-bar{min-height:75px}.card.joker .card-corner{font-size:11px;line-height:14px}.play-cards .card-corner{font-size:13px;line-height:12px}.play-cards .card-corner>span{font-size:9px;line-height:10px}}
@media(max-height:500px) and (orientation:landscape){:root{--play-w:25px;--play-h:35px}.site-header{height:43px}.header-title>span{display:none}main{display:flex;min-height:calc(100dvh - 43px);padding:0 22px 9px;gap:5px;justify-content:flex-start}.table{height:139px;margin:8px auto 0;max-width:800px}.table:before{width:240px;height:118px;top:9px}.player-top{top:0;flex-direction:row;gap:7px}.player-left,.player-right{top:47px;flex-direction:row;gap:8px}.seat-hand{height:27px;width:27px}.seat-hand>.team-badge{bottom:calc(100% + 3px);padding:1px 4px;font-size:10px}.player-count{font-size:15px}.player-name{font-size:10px}.played-top{top:37px}.played-left,.played-right{top:58px}.played-bottom{bottom:2px}.play-cards .card-corner{font-size:11px;line-height:10px;left:3px;top:3px}.play-cards .card-corner>span{font-size:8px;line-height:9px}.play-cards .card-symbol{font-size:13px;bottom:3px;right:3px}.play-label{font-size:7px;line-height:9px;margin-top:2px}.table-center{top:57%;gap:8px;flex-direction:row}.round-object{--card-w:45px;--card-h:66px;--rank-size:15px}.round-caption{display:none}.start-button{padding:7px 19px;font-size:10px}.hand-section{padding:0 2px;margin:0}.hand-heading{height:23px;margin-bottom:0}.hand-scroll{padding-top:16px}.action-bar{min-height:40px;flex-direction:row;align-items:center;padding-top:4px;margin:0 10px}.actions{display:flex;justify-content:flex-end;width:auto}.button{height:31px;min-width:58px;font-size:11px}.button-play{min-width:78px}.card-corner{left:4px;top:4px}.card-corner.opposite{right:4px;bottom:4px}.card.joker .card-corner{font-size:10px;line-height:13px}}
@media(min-width:1050px) and (min-height:501px) and (max-height:650px){.site-header{height:62px}main{min-height:calc(100dvh - 62px);padding:4px 32px 24px;gap:36px}.table{height:350px}.table:before{width:280px;height:280px;top:28px}.player-top{top:0}.player-left,.player-right{top:142px}.seat-hand{width:38px;height:38px}.player-count{font-size:21px}.played-top{top:76px}.played-left,.played-right{top:147px}.played-bottom{bottom:20px}.round-object{--card-w:88px;--card-h:128px}.round-caption{margin-top:15px}.hand-heading{height:26px}.hand-scroll{padding-top:17px}.hand{gap:8px}.action-bar{min-height:67px;padding-top:4px;gap:6px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.hand{touch-action:pan-y pinch-zoom}.card{-webkit-touch-callout:none}.hand.is-dragging .card{transition-duration:.06s}.flying-card{will-change:transform}
.feedback-row{display:flex;align-items:center;height:24px;min-height:24px;max-height:24px;min-width:0;flex:1;width:100%}.feedback-row .selection-info{width:100%;min-width:0}.feedback-row .hints{padding:0;max-width:100%;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.feedback-row:has(.hints:not([hidden])) .selection-info{display:none}.hint-option,.declaration{flex-shrink:0;white-space:nowrap}.feedback-row .hint-option{height:24px;padding-top:3px;padding-bottom:3px}#selection-type{min-width:0;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}#selection-count{flex-shrink:0}
#hand-count{display:inline-flex;align-items:baseline;gap:4px}#hand-count-number{font-size:16px;font-weight:500;color:#8e7884;line-height:1;font-variant-numeric:tabular-nums}#hand-count.low-count #hand-count-number{font-size:18px;color:#94495f;font-weight:650}.seat-hand.low-count{background:#e9dce2;border-color:#c2a2b0}.seat-hand.low-count .player-count{font-size:28px;font-weight:600;color:#92455e}
.exchanging .table-center{top:54%;gap:14px}.exchange-display{display:flex;justify-content:center;gap:18px}.exchange-pair{display:flex;gap:8px}.exchange-move{display:flex;flex-direction:column;align-items:center;gap:5px;width:58px;--card-w:44px;--card-h:64px;--rank-size:16px}.exchange-direction{font:9px/12px -apple-system,"PingFang SC",sans-serif;color:#a48c99;white-space:nowrap}.exchange-label{font:9px/12px -apple-system,"PingFang SC",sans-serif;color:#8d687f}.exchange-move .card{pointer-events:none;border-radius:4px}.exchange-move .card-corner{left:3px;top:4px;letter-spacing:-1px}.exchange-move .card-symbol{position:absolute;font-size:19px;bottom:4px;right:4px}.exchange-move .card.joker .card-corner{font-size:9px;line-height:12px;letter-spacing:1px;left:3px;top:5px}.exchange-wait{width:var(--card-w);height:var(--card-h);display:grid;place-items:center;border:1px dashed #c9b5bf70;border-radius:4px;color:#c0aab6;font-size:16px}
.history-tabs{display:flex;gap:22px;padding:0 22px;border-bottom:1px solid var(--line);flex-shrink:0}.history-tabs button{font-size:11px;padding:14px 0 12px;color:#b29ba9;border-bottom:2px solid transparent}.history-tabs button[aria-selected=true]{color:#80576f;border-bottom-color:#9d788e}.history-view{display:flex;flex-direction:column;min-height:0;flex:1}#history-title{font-size:15px;color:inherit;margin:0}#history-exchanges{padding:17px 12px 13px;border-bottom:1px solid var(--line);flex-shrink:0}#history-exchanges .exchange-display{gap:14px}#history-exchanges .exchange-move{width:53px}#results-view{overflow:auto}#results-list{padding:0 22px 22px}.round-record{padding:19px 0 15px;border-bottom:1px solid var(--line)}.record-heading{display:flex;align-items:center;gap:11px;font-size:11px}.record-heading>b{font-weight:500;color:#87667b}.record-heading time{margin-left:auto;font-size:11px;color:#78666f;white-space:nowrap}.record-outcome{font-size:11px;color:#78666f}.record-outcome.ours{color:#8f627e}.record-meta{font-size:11px;line-height:15px;color:#78666f;margin-top:5px}.record-ranking{padding:0;margin:10px 0 0;list-style:none}.record-ranking li{display:flex;align-items:center;gap:14px;padding:6px 0;font-size:11px;color:#b09ba7}.record-ranking b{font-weight:450;color:#987d8e}.record-ranking .ours b{color:#835b75}.record-ranking small{margin-left:auto;font-size:11px;color:#78666f}
@media(max-width:700px){#hand-count-number{font-size:15px}#hand-count.low-count #hand-count-number{font-size:17px}.seat-hand.low-count .player-count{font-size:24px}.exchange-display{gap:12px}.exchange-pair{gap:6px}.exchange-move{width:46px;--card-w:34px;--card-h:50px;--rank-size:13px;gap:4px}.exchange-direction,.exchange-label{font-size:8px;line-height:10px}.exchange-move .card-symbol{font-size:16px;bottom:4px;right:3px}.exchange-move .card-corner{left:3px;top:3px}.exchange-move .card.joker .card-corner{font-size:8px;line-height:10px;letter-spacing:0;top:4px}.exchanging .table-center{gap:12px;top:54%}}
@media(max-height:740px) and (max-width:700px){#hand-count-number{font-size:14px}#hand-count.low-count #hand-count-number{font-size:16px}.seat-hand.low-count .player-count{font-size:21px}.exchange-move{width:43px;--card-w:29px;--card-h:42px;--rank-size:12px;gap:3px}.exchange-display{gap:10px}.exchange-direction,.exchange-label{font-size:7px;line-height:9px}.exchanging .table-center{gap:9px;top:54%}}
@media(max-height:500px) and (orientation:landscape){#hand-count-number{font-size:14px}#hand-count.low-count #hand-count-number{font-size:16px}.seat-hand.low-count .player-count{font-size:18px}.exchange-move{width:42px;--card-w:25px;--card-h:36px;--rank-size:10px;gap:2px}.exchange-display{gap:12px}.exchange-direction,.exchange-label{font-size:7px;line-height:8px}.exchange-move .card-symbol{font-size:13px;bottom:3px;right:2px}.exchange-move .card-corner{top:2px;left:2px}.exchanging .table-center{gap:12px}}
.table-center{transition:opacity .2s ease}.exchange-presenting .table-center{opacity:0;pointer-events:none}.exchange-actions{display:flex;align-items:center;justify-content:center;position:relative}.exchange-replay{width:26px;height:26px;display:grid;place-items:center;padding:5px;color:#ad95a3;opacity:.75;border-radius:50%}.exchange-replay svg{width:14px;height:14px}.exchange-replay:hover:enabled{opacity:1;color:#805b71}.exchange-replay:disabled{opacity:.3}.exchange-actions .exchange-replay{position:absolute;left:calc(100% + 8px)}.anti-exchange{display:flex;flex-direction:column;align-items:center;gap:10px}.anti-exchange>.exchange-label{letter-spacing:2px}.exchange-motion-layer{position:fixed;inset:0;z-index:16;pointer-events:none;isolation:isolate}.exchange-motion-card{position:fixed;left:0;top:0;margin:0;transform-origin:50% 50%;will-change:transform,opacity;pointer-events:none;backface-visibility:hidden;border-color:#d9cdd0}.exchange-motion-caption{position:fixed;transform:translateX(-50%);opacity:0;text-align:center;white-space:nowrap;color:#947385;font:10px/16px -apple-system,"PingFang SC",sans-serif;letter-spacing:1px;will-change:opacity,transform}
@media(max-width:700px){.exchange-motion-caption{font-size:9px;line-height:13px;letter-spacing:.5px}.anti-exchange{gap:7px}}
.play-flight{position:fixed;left:0;top:0;z-index:15;pointer-events:none;transform-origin:50% 50%;border-radius:5px;background:#fdfbf7;overflow:hidden;will-change:transform,opacity}.play-flight .flight-full,.play-flight .flight-compact{position:absolute;left:0;top:0;pointer-events:none}.play-flight .flight-compact{transform-origin:0 0}.play-flight .card{transition:none!important;pointer-events:none}
/* Quiet, functional extensions to the existing porcelain table. */
.room-entry{display:flex;align-items:center;gap:7px;border:0;background:none;color:var(--ink,#453f42);font:inherit;font-size:11px;letter-spacing:.08em;padding:8px;cursor:pointer;white-space:nowrap}.room-entry svg{width:19px;height:19px}.room-entry.in-room{font-variant-numeric:tabular-nums;letter-spacing:.04em}.room-entry.disconnected{opacity:.45}.manual-order #hand{touch-action:none}.manual-order .card{cursor:grab}.manual-order .card:active{cursor:grabbing}.manual-order #manual-btn{color:#683a4f}.order-source{opacity:.18!important}.order-ghost{z-index:10000!important;pointer-events:none!important;box-shadow:0 15px 32px #38262f26!important;outline:1px solid #81586a66!important;transition:none!important;opacity:1!important}.manual-order .hand-row{outline:1px solid #66425413;outline-offset:4px;border-radius:18px}.manual-order .card:focus-visible{outline:2px solid #84576a;outline-offset:3px}
