:root{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#243d34;background:#f5f3ec;font-synthesis:none;--green:#234e3e;--cream:#f9f6ed;--muted:#839084;--red:#b44a37;--gold:#a98a52;--tile-w:44px;--tile-h:62px}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:default;opacity:.55}button,a,input,select{touch-action:manipulation}button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #d4aa62;outline-offset:4px}button{border:0}h1,h2,h3,p{margin:0}svg{display:block}.icon{width:21px;height:21px;flex-shrink:0}.topbar{height:90px;max-width:1200px;margin:auto;padding:0 36px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:13px;font-weight:650;font-size:25px;letter-spacing:2px}.brand>span:last-child{display:flex;align-items:center;gap:17px}.brand small{font-weight:400;font-size:12px;letter-spacing:3px;color:#7c8c7f}.brand-mark{display:grid;place-items:center;width:43px;height:43px;border-radius:12px;background:var(--green);color:var(--cream);font-family:serif;font-size:26px;transform:rotate(-4deg);box-shadow:0 3px 0 #17372b}.topbar-right{display:flex;align-items:center;gap:13px}.icon-button{width:38px;height:38px;display:inline-grid;place-items:center;border-radius:50%;background:transparent;color:#6d7e72}.icon-button:hover{background:#e7e9df}.profile{display:flex;align-items:center;gap:9px;margin-right:16px;font-size:12px}.avatar{display:inline-grid;place-items:center;flex-shrink:0;width:36px;height:36px;border-radius:50%;background:#e2e8d9;color:#315840;font-size:16px;font-family:serif;font-weight:650;border:2px solid #f6f3e7}.avatar-1{background:#e7d9bd;color:#755f34}.avatar-2{background:#d7e2e6;color:#4b6577}.avatar-3{background:#eedbd4;color:#8c584a}.icon-button,.text-button,.subtle-button,.primary-button,.secondary-button,.action-chip{transition:background .15s,transform .15s,box-shadow .15s}.primary-button,.secondary-button{min-height:46px;padding:12px 22px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;gap:9px;font-weight:600;font-size:14px}.primary-button{background:var(--green);color:#fffdf5;box-shadow:0 3px 0 #183f30}.primary-button:hover{background:#32654e}.primary-button:active{transform:translateY(2px);box-shadow:0 1px 0 #183f30}.secondary-button{background:#edf0e5;border:1px solid #d8dfcf;color:#2f5841}.secondary-button:hover{background:#e0e7d8}.large{min-height:52px;padding:15px 24px}.wide{width:100%}.text-button,.subtle-button{background:transparent;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:12px;min-height:36px;padding:7px 10px;color:#748677}.text-button:hover,.subtle-button:hover{color:#254d3a;background:#e8ecdf;border-radius:7px}.eyebrow{font-size:10px;letter-spacing:3.5px;font-weight:650;color:#82907f}.pill{display:inline-flex;align-items:center;font-size:10px;border:1px solid #d5ddcd;border-radius:5px;padding:5px 9px;letter-spacing:1px;color:#617660;background:#edf1e7}.pill.light{background:#ffffff10;border-color:#ffffff2e;color:#d2dfcf}.fineprint{font-size:11px;line-height:1.8;color:#8b9788}.mobile-only{display:none}
.lobby{min-height:var(--screen-height,100dvh);background:radial-gradient(ellipse at 10% 5%,#e9ede12b,transparent 55%),#f5f3ec}.lobby-body{max-width:1110px;margin:auto;padding:37px 32px 24px}.lobby-heading{position:relative;margin-bottom:32px}.lobby-heading h1{font-family:serif;font-weight:500;letter-spacing:2px;font-size:34px;line-height:1.65;margin-top:11px}.version-badge{position:absolute;right:0;bottom:12px;font-size:10px;border:1px solid #d9ded1;padding:7px 10px;border-radius:20px;color:#84917e}.mode-grid{display:grid;grid-template-columns:1.82fr 1fr;gap:22px}.classic-card{position:relative;overflow:hidden;min-height:350px;border-radius:17px;background:radial-gradient(ellipse at 85% 30%,#3f7158,transparent 63%),#244d3d;color:#faf6e9;box-shadow:0 8px 18px #29463512;padding:28px 30px}.classic-card:after{content:'巷';position:absolute;right:-17px;top:26px;font-family:serif;font-size:256px;color:#ffffff03;transform:rotate(-12deg);pointer-events:none}.card-top{display:flex;justify-content:space-between;align-items:center;position:relative;z-index:1}.room-feature{display:inline-flex;align-items:center;gap:6px;font-size:10px;color:#b7cbb8}.room-feature .icon{width:15px;height:15px}.classic-copy{position:relative;z-index:1;margin-top:28px}.classic-copy h2{font-family:serif;font-size:34px;font-weight:500;letter-spacing:3px}.classic-copy p{font-size:12px;color:#adc3b0;margin-top:11px;letter-spacing:.5px}.classic-bottom{position:absolute;bottom:28px;left:30px;right:30px;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px}.micro-label{font-size:10px;letter-spacing:2px;color:#d9d5b0}.classic-bottom p{font-size:11px;color:#9eb7a3;margin-top:6px}.classic-bottom .primary-button{background:#ead8ac;color:#334f37;box-shadow:0 3px 0 #bbab83;white-space:nowrap}.classic-bottom .primary-button:hover{background:#f3e6c7}.hero-tiles{position:absolute;right:49px;top:95px;width:190px;height:152px;transform:rotate(11deg);z-index:1}.tile.hero-tile{position:absolute;width:67px;height:95px;box-shadow:0 6px 0 #c3baa1,0 8px 0 #134632,4px 14px 14px #0b2f3555;border-radius:8px}.hero-tile.one{left:3px;top:20px;transform:rotate(-19deg)}.hero-tile.two{left:61px;top:5px;transform:rotate(-4deg)}.hero-tile.three{left:121px;top:20px;transform:rotate(12deg)}.friends-card{background:#fffdf7;border:1px solid #e3e5d9;border-radius:17px;padding:27px 26px 20px;box-shadow:0 5px 14px #334d2605}.friends-card .card-top>.icon{color:#9ca58d;width:19px;height:19px}.friends-card h2{font-family:serif;font-size:23px;font-weight:500;letter-spacing:1px;margin-top:21px}.friends-card>p{font-size:11px;color:#8c9988;margin-top:10px}.friend-seats{display:flex;justify-content:space-between;margin:22px 0}.friend-seat{display:flex;flex-direction:column;align-items:center;gap:7px}.friend-seat>.avatar,.friend-seat>.icon{width:34px;height:34px}.friend-seat>.icon{padding:9px;border-radius:50%;border:1px dashed #d7dfce;color:#b4c0aa}.friend-seat small{font-size:9px;color:#9ca791}.friends-card>.fineprint{display:block;text-align:center;font-size:9px}.utility-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:16px;margin-top:23px}.utility-card{display:flex;align-items:center;gap:12px;border:1px solid #e0e4d6;background:#fffdf8;border-radius:11px;padding:22px 17px;text-align:left;min-width:0}.utility-card:hover{border-color:#aebfa5;box-shadow:0 3px 15px #34472c0a}.utility-icon{display:grid;place-items:center;width:37px;height:37px;flex-shrink:0;border-radius:10px;background:#eaf0e2;color:#66815a}.utility-icon.gold{background:#f4ecd8;color:#ac8e54}.utility-icon.pale{background:#e8efec;color:#73968c}.utility-card strong{display:block;font-size:12px;font-weight:500}.utility-card small{display:block;font-size:10px;color:#9aa38e;margin-top:6px}.utility-end{font-size:9px;color:#9eaa93;margin-left:auto;white-space:nowrap}.lobby-footer{display:flex;justify-content:space-between;font-size:9px;color:#a8ad9d;margin:27px 1px 0;letter-spacing:.5px}
.tile{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--tile-w);height:var(--tile-h);border:1px solid #e5dec8;border-radius:5px;background:linear-gradient(110deg,#fffef9,#f4f0df);box-shadow:0 3px 0 #c6bea4,0 5px 0 #27624e;vertical-align:middle;padding:1px;position:relative;color:#273e40;user-select:none}.tile svg{width:100%;height:100%}.tile-number{font-family:serif;font-size:26px;fill:#273e40;font-weight:600}.tile-wan{font-family:serif;font-size:20px;fill:#aa3e31;font-weight:700}.tile.small{--tile-w:24px;--tile-h:33px;border-radius:3px;box-shadow:0 2px 0 #bab49d,0 3px 0 #174934}.tile.back{background:linear-gradient(125deg,#367c62,#235b46);border:1px solid #82a18a;box-shadow:0 3px 0 #d7d7ba}.tile-back-pattern{width:76%;height:81%;border:1px solid #ffffff19;border-radius:3px;background:repeating-linear-gradient(45deg,transparent 0 5px,#ffffff06 5px 6px)}
.game-shell{height:var(--screen-height,100dvh);min-height:600px;display:flex;flex-direction:column;max-width:1400px;margin:auto}.game-shell .topbar{height:68px;min-height:68px;width:100%;max-width:none;padding:0 28px}.game-shell .brand{font-size:18px;letter-spacing:1px}.game-shell .brand small{font-size:10px;letter-spacing:1px}.table-toolbar{display:flex;align-items:center;gap:18px;padding:0 30px 11px;color:#88917d;font-size:11px}.toolbar-spacer{flex:1}.table-toolbar>span:has(.icon){display:flex;align-items:center;gap:5px}.table-toolbar .icon{width:15px;height:15px}.table-toolbar b{font-weight:500;min-width:15px}.table{position:relative;isolation:isolate;flex:1;min-height:485px;margin:0 20px 17px;border-radius:24px;background:radial-gradient(ellipse at 50% 48%,#37715b 0%,#2d634f 48%,#254e3e 100%);box-shadow:inset 0 0 0 6px #cfbc98,inset 0 0 0 9px #8c7c5d,inset 0 0 0 12px #ebd9ad,inset 0 0 0 14px #1d4837,0 9px 18px #183e3020;overflow:hidden}.felt-line{position:absolute;inset:25px;border:1px solid #c4d5aa12;border-radius:15px;pointer-events:none}.player{position:absolute;color:#f2efd8;z-index:2}.player-id{display:flex;align-items:center;gap:7px;padding:6px 9px;border:1px solid #d9e5cc16;background:#153f313b;border-radius:9px;transition:border .15s}.player.active .player-id{border-color:#d4c89b90;background:#1e4a36;box-shadow:0 0 17px #ddc16e13}.player-id .avatar{width:31px;height:31px;border:2px solid #ddd4b68a;font-size:14px}.player-id strong{display:block;font-size:11px;font-weight:500;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-id small{display:block;font-size:8px;color:#9cb79c;margin-top:4px}.score{font-size:14px;font-weight:500;color:#e0d7ad;margin-left:8px;min-width:18px}.dealer{display:grid;place-items:center;font-size:9px;width:16px;height:16px;color:#5d3327;background:#e6c08b;border-radius:3px}.player-north{left:50%;top:25px;transform:translateX(-50%);display:flex;align-items:center;gap:13px}.player-north .opponent-hand{display:flex;gap:2px}.opponent-hand .tile{--tile-w:21px;--tile-h:30px;border-radius:3px}.player-east{right:25px;top:39%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:15px}.player-west{left:25px;top:39%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:15px}.player-east .opponent-hand,.player-west .opponent-hand{display:flex;gap:2px;flex-wrap:wrap;width:63px;max-height:185px;overflow:hidden}.player-east .opponent-hand .tile,.player-west .opponent-hand .tile{--tile-w:19px;--tile-h:27px}.player-south{bottom:158px;left:50%;transform:translateX(-50%);display:flex;gap:12px;align-items:center}.melds{display:flex;gap:8px;align-items:center}.meld{display:flex;gap:1px}.player-east .melds,.player-west .melds{flex-direction:column;gap:6px}.player-north .melds{position:absolute;top:52px;left:0}.player-north .opening-tag{position:absolute;top:50px;right:0}.opening-tag{font-size:9px;color:#d1ca9a;white-space:nowrap}.player-east .opening-tag,.player-west .opening-tag{max-width:100px;white-space:normal;line-height:1.5}.rivers{position:absolute;top:98px;bottom:211px;left:185px;right:185px;display:grid;grid-template-columns:1fr 112px 1fr;grid-template-rows:1fr 104px 1fr;gap:9px;max-width:620px;margin:auto;min-height:180px}.river{display:flex;align-content:flex-start;gap:4px 3px;flex-wrap:wrap;overflow:hidden;--river-w:24px}.river-0{grid-column:2/4;grid-row:3;align-content:flex-end;max-width:232px;justify-self:center;justify-content:center}.river-1{grid-column:3;grid-row:1/3;align-self:center;justify-content:flex-start;max-width:160px;margin-left:8px}.river-2{grid-column:1/3;grid-row:1;align-self:start;justify-self:center;max-width:232px;justify-content:center}.river-3{grid-column:1;grid-row:2/4;align-self:center;justify-content:flex-end;max-width:160px;justify-self:end;margin-right:8px}.river .tile{--tile-w:24px;--tile-h:33px}.river .claimed{opacity:.18;box-shadow:none}.river .latest{outline:2px solid #dfc46d;outline-offset:2px}.table-center{grid-column:2;grid-row:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:#9fbb9c;align-self:center}.compass{position:relative;width:76px;height:76px;display:grid;place-items:center;border:1px solid #d4dbba2b;transform:rotate(45deg);border-radius:15px;background:#174a38a3}.center-mark{font-size:24px;color:#a3ba9280;font-family:serif;transform:rotate(-45deg)}.wind{position:absolute;font-size:9px;color:#739477;transform:rotate(-45deg)}.wind.on{color:#efd38e;text-shadow:0 0 8px #edcf6877}.wind-0{bottom:3px;right:7px}.wind-1{right:4px;top:6px}.wind-2{top:3px;left:7px}.wind-3{left:4px;bottom:6px}.wall-count{font-size:9px;margin-top:11px;letter-spacing:1px}.wall-count strong{font-size:16px;color:#ded9ac;font-weight:400;margin-left:3px}.table-center>small{font-size:8px;color:#739c80;white-space:nowrap}.table-event{position:absolute;right:44px;bottom:177px;display:flex;align-items:center;gap:9px;color:#a5bfa1;font-size:9px}.own-area{position:absolute;bottom:25px;left:0;right:0;display:flex;flex-direction:column;align-items:center;z-index:3;padding:0 18px}.action-bar{display:flex;justify-content:center;align-items:center;gap:8px;min-height:43px;flex-wrap:wrap;margin-bottom:15px}.action-caption{font-size:10px;color:#b6c7a3;margin-right:8px}.action-chip{background:#e7dec0;color:#36523b;border:1px solid #fff5d347;min-width:48px;min-height:37px;padding:6px 13px;border-radius:8px;font-size:15px;box-shadow:0 3px 0 #91886a}.action-chip.hu{background:#bb513c;color:#fff5d6;box-shadow:0 3px 0 #7e3529;border-color:#e39c6e3b}.action-chip.pass{background:#ffffff10;color:#bfcda9;border-color:#ffffff20;box-shadow:none;font-size:12px}.action-chip:hover{filter:brightness(1.1);transform:translateY(-2px)}.action-chip small{display:block;font-size:8px;opacity:.8;margin-top:3px}.hand-row{display:flex;align-items:flex-end;justify-content:center;gap:4px;min-height:68px;width:100%;max-width:800px}.hand-row .tile{transition:transform .15s,outline .15s;width:min(calc(var(--screen-width,100vw) * 0.055999999999999994),48px);height:min(calc(var(--screen-width,100vw) * 0.079),68px);border-radius:5px}.hand-row .drawn{margin-left:9px}.hand-row button.tile:hover{transform:translateY(-5px)}.hand-row .tile.selected{transform:translateY(-14px);outline:2px solid #ead38d;outline-offset:2px}.hand-row .tile.hinted{outline:2px solid #d9bd60;outline-offset:2px}.hand-footer{display:flex;align-items:center;gap:8px;justify-content:flex-end;max-width:780px;width:100%;margin-top:10px;font-size:9px;color:#a4bd9b;min-height:22px}.hand-footer>span{margin-right:auto}.hand-footer .text-button{font-size:9px;min-height:22px;color:#b7caaa;padding:3px 5px}.hand-footer .text-button:hover{background:#ffffff0a;color:#f6e6b8}.hand-footer .icon{width:12px;height:12px}
.room-lobby{margin:50px auto;padding:36px;max-width:630px;text-align:center;background:#fffdf7;border:1px solid #e2e4d8;border-radius:18px}.room-lobby h1{font-family:serif;font-weight:500;margin:18px 0 25px;font-size:29px;letter-spacing:2px}.room-code{display:flex;align-items:center;justify-content:center;gap:18px;background:#f1f3e9;padding:17px;border-radius:10px}.room-code small{font-size:11px;color:#8b9981}.room-code strong{font-size:30px;letter-spacing:6px;font-weight:500}.waiting-seats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin:35px 0}.waiting-seats>div{display:flex;flex-direction:column;align-items:center;gap:9px}.waiting-seats .avatar,.empty-avatar{width:51px;height:51px;font-size:21px}.empty-avatar{display:grid;place-items:center;border:1px dashed #cad3bd;border-radius:50%;color:#b0bba1}.waiting-seats strong{font-size:12px;font-weight:500}.waiting-seats small{font-size:10px;color:#8b9981}.room-lobby>p{font-size:11px;color:#7b8b71;line-height:1.8;margin:10px 0}.room-lobby>.primary-button{margin-top:19px}.room-lobby>.text-button{display:flex;margin:14px auto 0}
.modal-backdrop{position:fixed;inset:0;z-index:30;background:#122b2580;backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;padding:24px}.modal{background:#fcfaf3;color:#344d3b;border:1px solid #e4e3d4;border-radius:17px;width:440px;max-width:100%;max-height:calc(var(--screen-height,100dvh) * 0.9);box-shadow:0 25px 70px #0b241e40;display:flex;flex-direction:column;overflow:hidden}.wide-modal{width:620px}.modal>header{display:flex;align-items:center;justify-content:space-between;padding:19px 24px;border-bottom:1px solid #e9e9dc}.modal>header h2{font-size:16px;font-weight:600;letter-spacing:1px}.modal-content{overflow:auto;padding:24px;overscroll-behavior:contain;font-size:13px;line-height:1.8}.modal-content>p{color:#7a8871}.modal>footer{padding:17px 24px;border-top:1px solid #e7e6d7;display:flex;gap:10px;justify-content:flex-end}.modal>footer>button{flex:1}.modal-content form{display:flex;flex-direction:column;gap:20px}.modal-content label{display:flex;flex-direction:column;gap:8px;font-size:12px;color:#687c5f}.modal-content input:not([type=checkbox]):not([type=range]),.modal-content select{background:#fffef8;border:1px solid #d9ddcc;border-radius:8px;min-height:46px;padding:10px 13px;color:#2c513a;width:100%}.modal-content input[type=range]{accent-color:#3f6b4c;width:100%}.modal-content .checkbox-label{flex-direction:row;align-items:center;gap:10px}.checkbox-label input{accent-color:#3f6b4c;width:16px;height:16px}.rules-intro{border-radius:9px;padding:14px 17px;background:#edf1e5;margin-bottom:24px!important;color:#426344!important}.rules-intro small{color:#90a080;font-size:10px}.rules-list>section{display:flex;gap:16px;margin-bottom:25px}.rules-list>section>span{font-size:12px;letter-spacing:1px;color:#a8b398;border-top:1px solid #c7d2bb;padding-top:3px;min-width:23px}.rules-list h3{font-size:14px;font-weight:600;margin-bottom:8px}.rules-list p{font-size:12px;color:#879279;line-height:1.9}.result-heading{text-align:center;margin-bottom:17px}.result-heading h3{font-family:serif;font-size:28px;font-weight:500;margin:8px 0}.result-score{font-size:42px;font-weight:500;line-height:1.6}.positive{color:#a97836}.negative{color:#73866d}.result-heading p{font-size:11px;color:#919c82}.bird-result{display:flex;align-items:center;justify-content:space-between;background:#f2f1e5;padding:12px 17px;border-radius:9px;margin-bottom:17px}.bird-result>span{font-size:11px;color:#8c9477}.bird-result>div{display:flex;gap:17px}.bird-result>div>span{display:flex;align-items:center;gap:7px}.bird-result small{font-size:9px;color:#8c9477}.score-list>div{display:flex;align-items:center;gap:10px;border-bottom:1px solid #ebeadd;padding:10px 0;font-size:12px}.score-list .avatar{width:29px;height:29px;font-size:12px}.score-list b{margin-left:auto;font-size:17px;font-weight:500}.score-list small{color:#9ca58c;font-size:9px;min-width:55px;text-align:right}.settlement{margin-top:20px;font-size:11px;color:#839174}.settlement summary{cursor:pointer;padding:7px 0}.settlement p{padding:10px 0;border-bottom:1px solid #e7e8d9;font-size:11px;color:#728165}.settlement b{float:right;font-weight:500;color:#9b7e40}.settlement small{display:block;color:#a2ab92;font-size:9px}.empty-state{text-align:center;padding:25px 0}.empty-state>.icon{width:36px;height:36px;margin:0 auto 20px;color:#c0b07c}.empty-state h3{font-family:serif;font-size:21px;font-weight:500}.empty-state p{font-size:11px;color:#9ca38c;margin:12px 0 24px}.history-list>button{width:100%;display:flex;align-items:center;gap:12px;background:transparent;border-bottom:1px solid #e9e9dc;padding:13px 0;text-align:left}.history-symbol{width:34px;height:34px;display:grid;place-items:center;border-radius:7px;background:#eceddd;color:#a3986b;font-family:serif}.history-list strong{display:block;font-size:12px;font-weight:500}.history-list small{display:block;font-size:9px;color:#9eaa8e;margin-top:4px}.history-list b{margin-left:auto;font-size:19px;font-weight:500}.history-list .icon{width:15px;color:#a7b195}.replay-control{position:sticky;top:-24px;background:#fcfaf3;padding:12px 0 19px;z-index:1}.replay-control label{display:block}.replay-control input{display:block;margin-top:7px}.replay-log{list-style:none;padding:0;margin:0}.replay-log li{padding:8px 0;border-bottom:1px solid #eeeddf;font-size:11px;color:#7c8f6f}.replay-log li[hidden]{display:none}.replay-log li>span{color:#b1bba0;margin-right:18px;font-size:9px}.lesson-title{font-family:serif;font-size:23px;font-weight:500;margin:16px 0 10px;line-height:1.5}.lesson-tiles{display:flex;justify-content:center;gap:6px;margin:24px 0 30px}.lesson-answers{display:flex;flex-direction:column;gap:10px}.lesson-feedback{background:#f5ead7;border:1px solid #e5d7ba;padding:16px;border-radius:9px;margin-top:20px}.lesson-feedback.correct{background:#e8efdf;border-color:#d4e0c6}.lesson-feedback strong{font-size:13px}.lesson-feedback p{font-size:11px;color:#89916f;margin:6px 0 12px}.lesson-feedback .primary-button{min-height:36px;padding:8px 15px;font-size:11px}#toast{position:fixed;bottom:max(30px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%,10px);background:#203f32ee;color:#f6f0da;border:1px solid #ffffff22;padding:12px 22px;border-radius:10px;box-shadow:0 6px 24px #132f2525;font-size:12px;line-height:1.7;max-width:min(calc(var(--screen-width,100vw) * 0.9),500px);width:max-content;z-index:50;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}#toast.visible{opacity:1;transform:translate(-50%,0)}
@media (min-width:1100px) and (min-height:800px){body:not(.room-active) .table{margin:0 40px 28px}body:not(.room-active) .game-shell .topbar{padding:0 45px}body:not(.room-active) .table-toolbar{padding-left:48px;padding-right:48px}body:not(.room-active) .player-south{bottom:183px}body:not(.room-active) .own-area{bottom:33px}body:not(.room-active) .rivers{top:110px;bottom:255px;grid-template-rows:1fr 120px 1fr}body:not(.room-active) .hand-row .tile{width:51px;height:72px}body:not(.room-active) .table-event{bottom:200px}body:not(.room-active) .action-bar{margin-bottom:20px}}
@container room-screen (min-width:1100px) and (min-height:800px){.table{margin:0 40px 28px}.game-shell .topbar{padding:0 45px}.table-toolbar{padding-left:48px;padding-right:48px}.player-south{bottom:183px}.own-area{bottom:33px}.rivers{top:110px;bottom:255px;grid-template-rows:1fr 120px 1fr}.hand-row .tile{width:51px;height:72px}.table-event{bottom:200px}.action-bar{margin-bottom:20px}}
@media (max-width:1000px){body:not(.room-active) .classic-card{padding:25px}body:not(.room-active) .hero-tiles{right:28px;top:113px;transform:rotate(11deg) scale(.85);transform-origin:right center}body:not(.room-active) .classic-copy h2{font-size:30px}body:not(.room-active) .classic-bottom{left:25px;right:25px}body:not(.room-active) .classic-bottom>div p{max-width:100px;line-height:1.6}body:not(.room-active) .classic-bottom .primary-button{padding:13px 17px}body:not(.room-active) .utility-card{padding:18px 13px;gap:8px}body:not(.room-active) .utility-end{display:none}body:not(.room-active) .rivers{left:150px;right:150px;grid-template-columns:1fr 90px 1fr;grid-template-rows:1fr 96px 1fr}body:not(.room-active) .river .tile{--tile-w:21px;--tile-h:29px}body:not(.room-active) .player-north .opponent-hand .tile{--tile-w:17px;--tile-h:25px}body:not(.room-active) .player-east{right:22px}body:not(.room-active) .player-west{left:22px}body:not(.room-active) .player-id{padding:5px 6px}body:not(.room-active) .player-id strong{max-width:70px}body:not(.room-active) .player-east .opponent-hand,body:not(.room-active) .player-west .opponent-hand{max-height:140px}body:not(.room-active) .score{margin-left:3px}}
@container room-screen (max-width:1000px){.classic-card{padding:25px}.hero-tiles{right:28px;top:113px;transform:rotate(11deg) scale(.85);transform-origin:right center}.classic-copy h2{font-size:30px}.classic-bottom{left:25px;right:25px}.classic-bottom>div p{max-width:100px;line-height:1.6}.classic-bottom .primary-button{padding:13px 17px}.utility-card{padding:18px 13px;gap:8px}.utility-end{display:none}.rivers{left:150px;right:150px;grid-template-columns:1fr 90px 1fr;grid-template-rows:1fr 96px 1fr}.river .tile{--tile-w:21px;--tile-h:29px}.player-north .opponent-hand .tile{--tile-w:17px;--tile-h:25px}.player-east{right:22px}.player-west{left:22px}.player-id{padding:5px 6px}.player-id strong{max-width:70px}.player-east .opponent-hand,.player-west .opponent-hand{max-height:140px}.score{margin-left:3px}}
@media (max-width:700px){body:not(.room-active) .topbar{height:73px;padding:0 23px}body:not(.room-active) .brand{font-size:22px;gap:10px}body:not(.room-active) .brand>span:last-child{gap:11px}body:not(.room-active) .brand small{font-size:10px;letter-spacing:2px}body:not(.room-active) .brand-mark{width:35px;height:35px;border-radius:9px;font-size:22px}body:not(.room-active) .topbar-right{gap:4px}body:not(.room-active) .profile{display:none}body:not(.room-active) .lobby-body{padding:24px 22px}body:not(.room-active) .lobby-heading{margin-bottom:23px}body:not(.room-active) .lobby-heading h1{font-size:29px;line-height:1.55;letter-spacing:1px}body:not(.room-active) .eyebrow{font-size:8px;letter-spacing:3px}body:not(.room-active) .version-badge{bottom:3px;font-size:8px;padding:5px 8px}body:not(.room-active) .mode-grid{grid-template-columns:1fr;gap:16px}body:not(.room-active) .classic-card{min-height:310px;padding:24px}body:not(.room-active) .classic-copy{margin-top:25px}body:not(.room-active) .classic-copy h2{font-size:30px}body:not(.room-active) .classic-copy p{font-size:10px;max-width:135px;line-height:1.8}body:not(.room-active) .hero-tiles{right:25px;top:92px;transform:rotate(11deg) scale(.8)}body:not(.room-active) .classic-bottom{left:24px;right:24px;bottom:23px}body:not(.room-active) .classic-bottom>div p{max-width:none;font-size:9px}body:not(.room-active) .classic-bottom .primary-button{padding:12px 17px;min-height:47px;font-size:12px}body:not(.room-active) .micro-label{font-size:9px}body:not(.room-active) .friends-card{padding:22px 24px;display:grid;grid-template-columns:1fr 1fr;gap:0 15px}body:not(.room-active) .friends-card .card-top{grid-column:1/-1}body:not(.room-active) .friends-card h2{grid-column:1/-1;font-size:22px;margin-top:16px}body:not(.room-active) .friends-card>p{grid-column:1/-1;font-size:10px}body:not(.room-active) .friend-seats{grid-column:1/-1;margin:20px 0}body:not(.room-active) .friends-card>.text-button{min-height:46px;border:1px solid #e1e5d8;border-radius:9px}body:not(.room-active) .friends-card>.fineprint{grid-column:1/-1;margin-top:12px}body:not(.room-active) .utility-grid{grid-template-columns:1fr;gap:10px;margin-top:16px}body:not(.room-active) .utility-card{padding:15px 18px;gap:13px}body:not(.room-active) .utility-card strong{font-size:12px}body:not(.room-active) .utility-end{display:block}body:not(.room-active) .utility-icon{height:32px;width:32px}body:not(.room-active) .utility-icon>.icon{width:18px;height:18px}body:not(.room-active) .lobby-footer{font-size:8px;margin-top:22px;gap:12px;flex-wrap:wrap}body:not(.room-active) .room-lobby{margin:30px 20px;padding:25px 18px}body:not(.room-active) .room-code{gap:9px}body:not(.room-active) .room-code strong{font-size:26px;letter-spacing:5px}body:not(.room-active) .waiting-seats{gap:8px}body:not(.room-active) .waiting-seats strong{font-size:10px}body:not(.room-active) .waiting-seats .avatar,body:not(.room-active) .empty-avatar{width:43px;height:43px}body:not(.room-active) .game-shell{min-height:700px}body:not(.room-active) .game-shell .topbar{height:60px;min-height:60px;padding:0 14px}body:not(.room-active) .game-shell .brand{font-size:15px;gap:3px}body:not(.room-active) .game-shell .brand>span:last-child{display:block}body:not(.room-active) .game-shell .brand small{display:block;font-size:8px;letter-spacing:0;margin-top:4px}body:not(.room-active) .game-shell .topbar-right{gap:0}body:not(.room-active) .game-shell .subtle-button span{display:none}body:not(.room-active) .game-shell .icon-button{width:33px;height:33px}body:not(.room-active) .table-toolbar{padding:0 18px 10px;font-size:9px;gap:10px}body:not(.room-active) .table-toolbar .pill{font-size:8px;padding:4px 7px}body:not(.room-active) .table-toolbar .text-button{font-size:10px;min-height:25px;padding:4px 6px}body:not(.room-active) .table{margin:0 7px 9px;min-height:590px;border-radius:17px;box-shadow:inset 0 0 0 3px #cfbc98,inset 0 0 0 5px #8c7c5d,inset 0 0 0 7px #ebd9ad,inset 0 0 0 8px #1d4837}body:not(.room-active) .felt-line{inset:15px;border-radius:10px}body:not(.room-active) .player-north{top:18px;display:flex;flex-direction:column;gap:10px}body:not(.room-active) .player-id .avatar{width:27px;height:27px;font-size:12px}body:not(.room-active) .player-id strong{font-size:9px;max-width:68px}body:not(.room-active) .player-id small{font-size:7px;margin-top:3px}body:not(.room-active) .player-id{gap:5px;padding:5px 7px;border-radius:7px}body:not(.room-active) .score{font-size:12px;margin-left:5px}body:not(.room-active) .dealer{font-size:8px;width:13px;height:13px}body:not(.room-active) .opponent-hand .tile{--tile-w:15px!important;--tile-h:22px!important;border-radius:2px}body:not(.room-active) .player-north .opponent-hand{gap:2px}body:not(.room-active) .player-north .melds{position:static;margin-top:2px}body:not(.room-active) .meld .tile.small{--tile-w:16px;--tile-h:23px}body:not(.room-active) .player-north .opening-tag{position:static;margin-top:0}body:not(.room-active) .player-east{right:14px;top:37%;gap:10px;max-width:105px}body:not(.room-active) .player-west{left:14px;top:37%;gap:10px;max-width:105px}body:not(.room-active) .player-east .player-id,body:not(.room-active) .player-west .player-id{display:grid;grid-template-columns:28px 1fr;gap:3px}body:not(.room-active) .player-east .player-id .score,body:not(.room-active) .player-west .player-id .score{grid-column:2;grid-row:2;margin-left:0;font-size:10px}body:not(.room-active) .player-east .player-id .dealer,body:not(.room-active) .player-west .player-id .dealer{position:absolute;top:-4px;right:-3px}body:not(.room-active) .player-east .opponent-hand,body:not(.room-active) .player-west .opponent-hand{width:33px;max-height:172px;gap:2px}body:not(.room-active) .player-east .melds,body:not(.room-active) .player-west .melds{position:absolute;top:235px;gap:3px}body:not(.room-active) .player-east .opening-tag,body:not(.room-active) .player-west .opening-tag{position:absolute;top:215px;font-size:7px;max-width:75px}body:not(.room-active) .player-south{bottom:162px;max-width:95%;gap:8px;flex-wrap:wrap;justify-content:center}body:not(.room-active) .player-south .melds{gap:5px}body:not(.room-active) .player-south .opening-tag{font-size:7px}body:not(.room-active) .rivers{left:70px;right:70px;top:140px;bottom:230px;min-height:220px;grid-template-columns:1fr 70px 1fr;grid-template-rows:1fr 87px 1fr;gap:5px}body:not(.room-active) .river{gap:3px 2px}body:not(.room-active) .river .tile{--tile-w:16px;--tile-h:23px;box-shadow:0 1px 0 #bab49d,0 2px 0 #174934}body:not(.room-active) .river-0{grid-column:1/4;max-width:190px}body:not(.room-active) .river-2{grid-column:1/4;max-width:190px}body:not(.room-active) .river-1{grid-column:3;grid-row:2;margin-left:2px;max-width:40px}body:not(.room-active) .river-3{grid-column:1;grid-row:2;margin-right:2px;max-width:40px}body:not(.room-active) .compass{width:55px;height:55px;border-radius:10px}body:not(.room-active) .center-mark{font-size:20px}body:not(.room-active) .wind{font-size:8px}body:not(.room-active) .wall-count{font-size:8px;margin-top:8px;letter-spacing:0}body:not(.room-active) .wall-count strong{font-size:14px}body:not(.room-active) .table-center>small{font-size:7px}body:not(.room-active) .table-event{right:19px;bottom:175px;font-size:7px;gap:5px}body:not(.room-active) .table-event .tile.small{--tile-w:18px;--tile-h:26px}body:not(.room-active) .table-event>span:first-child{max-width:40px;line-height:1.5}body:not(.room-active) .own-area{bottom:20px;padding:0 10px}body:not(.room-active) .hand-row{gap:2px;min-height:49px}body:not(.room-active) .hand-row .tile{width:calc((100vw - 67px)/14);height:calc((100vw - 67px)/14 * 1.43);border-radius:3px;max-width:39px;max-height:56px;padding:0}body:not(.room-active) .hand-row .drawn{margin-left:4px}body:not(.room-active) .hand-row .tile.selected{transform:translateY(-10px)}body:not(.room-active) .action-bar{gap:6px;min-height:35px;margin-bottom:14px;max-width:96%}body:not(.room-active) .action-caption{font-size:8px;margin-right:2px}body:not(.room-active) .action-chip{min-width:36px;min-height:32px;padding:5px 9px;font-size:13px;border-radius:6px}body:not(.room-active) .action-chip small{font-size:7px}body:not(.room-active) .hand-footer{margin-top:11px;font-size:8px;gap:5px;max-width:95%;min-height:22px;flex-wrap:wrap}body:not(.room-active) .hand-footer>span{max-width:68%;line-height:1.7}body:not(.room-active) .hand-footer .text-button{font-size:8px}body:not(.room-active) .hand-footer .icon{width:11px;height:11px}body:not(.room-active) .modal-backdrop{padding:15px}body:not(.room-active) .modal{max-height:92dvh;border-radius:13px}body:not(.room-active) .modal>header{padding:13px 18px}body:not(.room-active) .modal>header h2{font-size:14px}body:not(.room-active) .modal-content{padding:20px}body:not(.room-active) .modal>footer{padding:14px 18px}body:not(.room-active) .modal>footer>button{font-size:12px;padding:12px 10px}body:not(.room-active) .rules-list p{font-size:11px}body:not(.room-active) .rules-list>section{gap:12px;margin-bottom:23px}body:not(.room-active) .result-heading h3{font-size:25px}body:not(.room-active) .score-list>div{font-size:11px}body:not(.room-active) .score-list small{font-size:8px}body:not(.room-active) .bird-result{padding:11px 13px}body:not(.room-active) .bird-result>div{gap:10px}body:not(.room-active) .bird-result small{font-size:8px}body:not(.room-active) .modal-content form{gap:16px}}
@container room-screen (max-width:700px){.topbar{height:73px;padding:0 23px}.brand{font-size:22px;gap:10px}.brand>span:last-child{gap:11px}.brand small{font-size:10px;letter-spacing:2px}.brand-mark{width:35px;height:35px;border-radius:9px;font-size:22px}.topbar-right{gap:4px}.profile{display:none}.lobby-body{padding:24px 22px}.lobby-heading{margin-bottom:23px}.lobby-heading h1{font-size:29px;line-height:1.55;letter-spacing:1px}.eyebrow{font-size:8px;letter-spacing:3px}.version-badge{bottom:3px;font-size:8px;padding:5px 8px}.mode-grid{grid-template-columns:1fr;gap:16px}.classic-card{min-height:310px;padding:24px}.classic-copy{margin-top:25px}.classic-copy h2{font-size:30px}.classic-copy p{font-size:10px;max-width:135px;line-height:1.8}.hero-tiles{right:25px;top:92px;transform:rotate(11deg) scale(.8)}.classic-bottom{left:24px;right:24px;bottom:23px}.classic-bottom>div p{max-width:none;font-size:9px}.classic-bottom .primary-button{padding:12px 17px;min-height:47px;font-size:12px}.micro-label{font-size:9px}.friends-card{padding:22px 24px;display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.friends-card .card-top{grid-column:1/-1}.friends-card h2{grid-column:1/-1;font-size:22px;margin-top:16px}.friends-card>p{grid-column:1/-1;font-size:10px}.friend-seats{grid-column:1/-1;margin:20px 0}.friends-card>.text-button{min-height:46px;border:1px solid #e1e5d8;border-radius:9px}.friends-card>.fineprint{grid-column:1/-1;margin-top:12px}.utility-grid{grid-template-columns:1fr;gap:10px;margin-top:16px}.utility-card{padding:15px 18px;gap:13px}.utility-card strong{font-size:12px}.utility-end{display:block}.utility-icon{height:32px;width:32px}.utility-icon>.icon{width:18px;height:18px}.lobby-footer{font-size:8px;margin-top:22px;gap:12px;flex-wrap:wrap}.room-lobby{margin:30px 20px;padding:25px 18px}.room-code{gap:9px}.room-code strong{font-size:26px;letter-spacing:5px}.waiting-seats{gap:8px}.waiting-seats strong{font-size:10px}.waiting-seats .avatar,.empty-avatar{width:43px;height:43px}.game-shell{min-height:700px}.game-shell .topbar{height:60px;min-height:60px;padding:0 14px}.game-shell .brand{font-size:15px;gap:3px}.game-shell .brand>span:last-child{display:block}.game-shell .brand small{display:block;font-size:8px;letter-spacing:0;margin-top:4px}.game-shell .topbar-right{gap:0}.game-shell .subtle-button span{display:none}.game-shell .icon-button{width:33px;height:33px}.table-toolbar{padding:0 18px 10px;font-size:9px;gap:10px}.table-toolbar .pill{font-size:8px;padding:4px 7px}.table-toolbar .text-button{font-size:10px;min-height:25px;padding:4px 6px}.table{margin:0 7px 9px;min-height:590px;border-radius:17px;box-shadow:inset 0 0 0 3px #cfbc98,inset 0 0 0 5px #8c7c5d,inset 0 0 0 7px #ebd9ad,inset 0 0 0 8px #1d4837}.felt-line{inset:15px;border-radius:10px}.player-north{top:18px;display:flex;flex-direction:column;gap:10px}.player-id .avatar{width:27px;height:27px;font-size:12px}.player-id strong{font-size:9px;max-width:68px}.player-id small{font-size:7px;margin-top:3px}.player-id{gap:5px;padding:5px 7px;border-radius:7px}.score{font-size:12px;margin-left:5px}.dealer{font-size:8px;width:13px;height:13px}.opponent-hand .tile{--tile-w:15px!important;--tile-h:22px!important;border-radius:2px}.player-north .opponent-hand{gap:2px}.player-north .melds{position:static;margin-top:2px}.meld .tile.small{--tile-w:16px;--tile-h:23px}.player-north .opening-tag{position:static;margin-top:0}.player-east{right:14px;top:37%;gap:10px;max-width:105px}.player-west{left:14px;top:37%;gap:10px;max-width:105px}.player-east .player-id,.player-west .player-id{display:grid;grid-template-columns:28px 1fr;gap:3px}.player-east .player-id .score,.player-west .player-id .score{grid-column:2;grid-row:2;margin-left:0;font-size:10px}.player-east .player-id .dealer,.player-west .player-id .dealer{position:absolute;top:-4px;right:-3px}.player-east .opponent-hand,.player-west .opponent-hand{width:33px;max-height:172px;gap:2px}.player-east .melds,.player-west .melds{position:absolute;top:235px;gap:3px}.player-east .opening-tag,.player-west .opening-tag{position:absolute;top:215px;font-size:7px;max-width:75px}.player-south{bottom:162px;max-width:95%;gap:8px;flex-wrap:wrap;justify-content:center}.player-south .melds{gap:5px}.player-south .opening-tag{font-size:7px}.rivers{left:70px;right:70px;top:140px;bottom:230px;min-height:220px;grid-template-columns:1fr 70px 1fr;grid-template-rows:1fr 87px 1fr;gap:5px}.river{gap:3px 2px}.river .tile{--tile-w:16px;--tile-h:23px;box-shadow:0 1px 0 #bab49d,0 2px 0 #174934}.river-0{grid-column:1/4;max-width:190px}.river-2{grid-column:1/4;max-width:190px}.river-1{grid-column:3;grid-row:2;margin-left:2px;max-width:40px}.river-3{grid-column:1;grid-row:2;margin-right:2px;max-width:40px}.compass{width:55px;height:55px;border-radius:10px}.center-mark{font-size:20px}.wind{font-size:8px}.wall-count{font-size:8px;margin-top:8px;letter-spacing:0}.wall-count strong{font-size:14px}.table-center>small{font-size:7px}.table-event{right:19px;bottom:175px;font-size:7px;gap:5px}.table-event .tile.small{--tile-w:18px;--tile-h:26px}.table-event>span:first-child{max-width:40px;line-height:1.5}.own-area{bottom:20px;padding:0 10px}.hand-row{gap:2px;min-height:49px}.hand-row .tile{width:calc((var(--screen-width,100vw) - 67px)/14);height:calc((var(--screen-width,100vw) - 67px)/14 * 1.43);border-radius:3px;max-width:39px;max-height:56px;padding:0}.hand-row .drawn{margin-left:4px}.hand-row .tile.selected{transform:translateY(-10px)}.action-bar{gap:6px;min-height:35px;margin-bottom:14px;max-width:96%}.action-caption{font-size:8px;margin-right:2px}.action-chip{min-width:36px;min-height:32px;padding:5px 9px;font-size:13px;border-radius:6px}.action-chip small{font-size:7px}.hand-footer{margin-top:11px;font-size:8px;gap:5px;max-width:95%;min-height:22px;flex-wrap:wrap}.hand-footer>span{max-width:68%;line-height:1.7}.hand-footer .text-button{font-size:8px}.hand-footer .icon{width:11px;height:11px}.modal-backdrop{padding:15px}.modal{max-height:calc(var(--screen-height,100dvh) * 0.92);border-radius:13px}.modal>header{padding:13px 18px}.modal>header h2{font-size:14px}.modal-content{padding:20px}.modal>footer{padding:14px 18px}.modal>footer>button{font-size:12px;padding:12px 10px}.rules-list p{font-size:11px}.rules-list>section{gap:12px;margin-bottom:23px}.result-heading h3{font-size:25px}.score-list>div{font-size:11px}.score-list small{font-size:8px}.bird-result{padding:11px 13px}.bird-result>div{gap:10px}.bird-result small{font-size:8px}.modal-content form{gap:16px}}
@media (max-width:380px){body:not(.room-active) .classic-copy p{max-width:112px}body:not(.room-active) .hero-tiles{right:18px;transform:rotate(11deg) scale(.68)}body:not(.room-active) .classic-bottom{left:20px;right:20px}body:not(.room-active) .classic-bottom>div p{max-width:110px;line-height:1.7}body:not(.room-active) .lobby-body{padding:20px 18px}body:not(.room-active) .lobby-heading h1{font-size:26px}body:not(.room-active) .version-badge{font-size:7px}body:not(.room-active) .player-east{right:11px}body:not(.room-active) .player-west{left:11px}body:not(.room-active) .player-id strong{max-width:53px}body:not(.room-active) .player-id small{font-size:6px}body:not(.room-active) .rivers{left:65px;right:65px}body:not(.room-active) .action-caption{width:100%;text-align:center}body:not(.room-active) .player-south{bottom:181px}body:not(.room-active) .table-event{bottom:198px}body:not(.room-active) .hand-footer>span{max-width:60%}}
@container room-screen (max-width:380px){.classic-copy p{max-width:112px}.hero-tiles{right:18px;transform:rotate(11deg) scale(.68)}.classic-bottom{left:20px;right:20px}.classic-bottom>div p{max-width:110px;line-height:1.7}.lobby-body{padding:20px 18px}.lobby-heading h1{font-size:26px}.version-badge{font-size:7px}.player-east{right:11px}.player-west{left:11px}.player-id strong{max-width:53px}.player-id small{font-size:6px}.rivers{left:65px;right:65px}.action-caption{width:100%;text-align:center}.player-south{bottom:181px}.table-event{bottom:198px}.hand-footer>span{max-width:60%}}
@media (orientation:landscape) and (max-height:600px){body:not(.room-active) .game-shell{min-height:100dvh;height:100dvh}body:not(.room-active) .game-shell .topbar{height:44px;min-height:44px;padding:0 18px}body:not(.room-active) .game-shell .brand{font-size:14px}body:not(.room-active) .game-shell .brand>span:last-child{display:flex;gap:9px;align-items:center}body:not(.room-active) .game-shell .brand small{font-size:8px;margin:0;display:inline}body:not(.room-active) .game-shell .icon-button{width:30px;height:30px}body:not(.room-active) .game-shell .topbar-right{gap:3px}body:not(.room-active) .table-toolbar{position:absolute;z-index:4;top:51px;left:25px;right:25px;padding:0;pointer-events:none;gap:10px;font-size:8px}body:not(.room-active) .table-toolbar .pill{display:none}body:not(.room-active) .table-toolbar .text-button{pointer-events:auto;color:#b5c8a5;min-height:23px;font-size:9px;padding:2px 6px}body:not(.room-active) .table-toolbar>span{color:#aec09e}body:not(.room-active) .table-toolbar .icon{width:11px;height:11px}body:not(.room-active) .table{min-height:0;margin:0 12px 8px;border-radius:14px;box-shadow:inset 0 0 0 3px #cfbc98,inset 0 0 0 5px #8c7c5d,inset 0 0 0 7px #ebd9ad,inset 0 0 0 8px #1d4837}body:not(.room-active) .felt-line{inset:13px}body:not(.room-active) .player-north{top:12px;gap:9px;flex-direction:row}body:not(.room-active) .player-north .opponent-hand{gap:1px}body:not(.room-active) .opponent-hand .tile{--tile-w:12px!important;--tile-h:18px!important}body:not(.room-active) .player-id{padding:3px 6px;gap:5px}body:not(.room-active) .player-id .avatar{width:23px;height:23px;font-size:10px}body:not(.room-active) .player-id strong{font-size:8px;max-width:58px}body:not(.room-active) .player-id small{font-size:6px;margin-top:2px}body:not(.room-active) .score{font-size:10px;margin-left:4px}body:not(.room-active) .dealer{width:12px;height:12px;font-size:7px}body:not(.room-active) .player-east{right:18px;top:38%;gap:5px}body:not(.room-active) .player-west{left:18px;top:38%;gap:5px}body:not(.room-active) .player-east .player-id,body:not(.room-active) .player-west .player-id{display:flex}body:not(.room-active) .player-east .player-id .score,body:not(.room-active) .player-west .player-id .score{margin-left:3px;position:static;font-size:10px}body:not(.room-active) .player-east .player-id .dealer,body:not(.room-active) .player-west .player-id .dealer{position:static}body:not(.room-active) .player-east .opponent-hand,body:not(.room-active) .player-west .opponent-hand{width:83px;max-height:48px;gap:1px}body:not(.room-active) .player-east .melds,body:not(.room-active) .player-west .melds{position:static;flex-direction:row;gap:3px}body:not(.room-active) .player-east .opening-tag,body:not(.room-active) .player-west .opening-tag{position:static;max-width:100px;font-size:6px}body:not(.room-active) .player-south{left:24px;bottom:32px;transform:none;display:flex;flex-direction:column;gap:4px;align-items:flex-start;max-width:140px}body:not(.room-active) .player-south .melds{gap:3px}body:not(.room-active) .player-south .opening-tag{font-size:6px}body:not(.room-active) .player-north .melds{position:absolute;top:34px;left:0}body:not(.room-active) .player-north .opening-tag{position:absolute;top:35px;right:0;font-size:6px}body:not(.room-active) .meld .tile.small{--tile-w:13px;--tile-h:19px}body:not(.room-active) .rivers{top:57px;bottom:121px;left:155px;right:155px;min-height:80px;grid-template-columns:1fr 65px 1fr;grid-template-rows:1fr 62px 1fr;gap:3px;max-width:430px}body:not(.room-active) .river{gap:2px 2px}body:not(.room-active) .river .tile{--tile-w:15px;--tile-h:21px;box-shadow:0 1px 0 #bab49d}body:not(.room-active) .river-0{grid-column:2/4;grid-row:3;max-width:180px;align-content:center}body:not(.room-active) .river-2{grid-column:1/3;grid-row:1;max-width:180px}body:not(.room-active) .river-1{grid-column:3;grid-row:1/3;max-width:100px;margin-left:5px}body:not(.room-active) .river-3{grid-column:1;grid-row:2/4;max-width:100px;margin-right:5px}body:not(.room-active) .compass{width:40px;height:40px;border-radius:8px}body:not(.room-active) .center-mark{font-size:15px}body:not(.room-active) .wind{font-size:6px}body:not(.room-active) .wind-0{bottom:2px;right:4px}body:not(.room-active) .wind-1{right:2px;top:4px}body:not(.room-active) .wind-2{top:2px;left:4px}body:not(.room-active) .wind-3{left:2px;bottom:4px}body:not(.room-active) .wall-count{font-size:7px;margin-top:3px}body:not(.room-active) .wall-count strong{font-size:11px}body:not(.room-active) .table-center>small{display:none}body:not(.room-active) .table-center{gap:3px}body:not(.room-active) .table-event{right:27px;bottom:80px;font-size:7px;gap:5px}body:not(.room-active) .table-event .tile.small{--tile-w:17px;--tile-h:24px}body:not(.room-active) .own-area{left:150px;right:150px;bottom:12px;padding:0}body:not(.room-active) .hand-row{gap:2px;min-height:36px;max-width:580px}body:not(.room-active) .hand-row .tile{width:min(3.2vw,32px);height:min(4.6vw,46px);border-radius:3px}body:not(.room-active) .hand-row .drawn{margin-left:5px}body:not(.room-active) .hand-row .tile.selected{transform:translateY(-9px)}body:not(.room-active) .action-bar{min-height:25px;margin-bottom:9px;gap:6px;flex-wrap:nowrap;max-width:100%}body:not(.room-active) .action-caption{font-size:7px;margin-right:2px;white-space:nowrap;width:auto}body:not(.room-active) .action-chip{min-height:25px;min-width:30px;padding:4px 8px;font-size:12px;border-radius:5px}body:not(.room-active) .action-chip small{font-size:6px;margin-top:1px}body:not(.room-active) .hand-footer{margin-top:7px;min-height:13px;gap:6px;font-size:7px;max-width:100%;flex-wrap:nowrap}body:not(.room-active) .hand-footer>span{max-width:70%;line-height:1.3}body:not(.room-active) .hand-footer .text-button{font-size:7px;min-height:14px;padding:1px 3px}body:not(.room-active) .hand-footer .icon{width:9px;height:9px}body:not(.room-active) .modal-backdrop{padding:12px}body:not(.room-active) .modal{max-height:94dvh}body:not(.room-active) .modal>header{padding:8px 17px}body:not(.room-active) .modal-content{padding:16px 21px}body:not(.room-active) .modal>footer{padding:10px 18px}body:not(.room-active) .modal>footer>button{min-height:37px;padding:9px}body:not(.room-active) .result-heading{margin-bottom:10px}body:not(.room-active) .result-heading h3{font-size:22px}body:not(.room-active) .result-score{font-size:30px}body:not(.room-active) .lesson-tiles{margin:15px 0 20px}body:not(.room-active) .lesson-title{font-size:20px}body:not(.room-active) .lobby .topbar{height:60px}body:not(.room-active) .lobby-body{padding-top:18px}body:not(.room-active) .lobby-heading h1{font-size:27px}body:not(.room-active) .mode-grid{grid-template-columns:1.6fr 1fr}body:not(.room-active) .classic-card{min-height:300px}body:not(.room-active) .friends-card{display:block;padding:22px}body:not(.room-active) .friend-seats{margin:18px 0}body:not(.room-active) .friends-card h2{font-size:20px}body:not(.room-active) .utility-grid{grid-template-columns:1fr 1fr 1fr}body:not(.room-active) .utility-card{padding:13px 11px}body:not(.room-active) .utility-icon{width:28px;height:28px}body:not(.room-active) .utility-card strong{font-size:10px}body:not(.room-active) .utility-card small{font-size:8px}body:not(.room-active) .utility-end{display:none}}
@container room-screen (orientation:landscape) and (max-height:600px){.game-shell{min-height:var(--screen-height,100dvh);height:var(--screen-height,100dvh)}.game-shell .topbar{height:44px;min-height:44px;padding:0 18px}.game-shell .brand{font-size:14px}.game-shell .brand>span:last-child{display:flex;gap:9px;align-items:center}.game-shell .brand small{font-size:8px;margin:0;display:inline}.game-shell .icon-button{width:30px;height:30px}.game-shell .topbar-right{gap:3px}.table-toolbar{position:absolute;z-index:4;top:51px;left:25px;right:25px;padding:0;pointer-events:none;gap:10px;font-size:8px}.table-toolbar .pill{display:none}.table-toolbar .text-button{pointer-events:auto;color:#b5c8a5;min-height:23px;font-size:9px;padding:2px 6px}.table-toolbar>span{color:#aec09e}.table-toolbar .icon{width:11px;height:11px}.table{min-height:0;margin:0 12px 8px;border-radius:14px;box-shadow:inset 0 0 0 3px #cfbc98,inset 0 0 0 5px #8c7c5d,inset 0 0 0 7px #ebd9ad,inset 0 0 0 8px #1d4837}.felt-line{inset:13px}.player-north{top:12px;gap:9px;flex-direction:row}.player-north .opponent-hand{gap:1px}.opponent-hand .tile{--tile-w:12px!important;--tile-h:18px!important}.player-id{padding:3px 6px;gap:5px}.player-id .avatar{width:23px;height:23px;font-size:10px}.player-id strong{font-size:8px;max-width:58px}.player-id small{font-size:6px;margin-top:2px}.score{font-size:10px;margin-left:4px}.dealer{width:12px;height:12px;font-size:7px}.player-east{right:18px;top:38%;gap:5px}.player-west{left:18px;top:38%;gap:5px}.player-east .player-id,.player-west .player-id{display:flex}.player-east .player-id .score,.player-west .player-id .score{margin-left:3px;position:static;font-size:10px}.player-east .player-id .dealer,.player-west .player-id .dealer{position:static}.player-east .opponent-hand,.player-west .opponent-hand{width:83px;max-height:48px;gap:1px}.player-east .melds,.player-west .melds{position:static;flex-direction:row;gap:3px}.player-east .opening-tag,.player-west .opening-tag{position:static;max-width:100px;font-size:6px}.player-south{left:24px;bottom:32px;transform:none;display:flex;flex-direction:column;gap:4px;align-items:flex-start;max-width:140px}.player-south .melds{gap:3px}.player-south .opening-tag{font-size:6px}.player-north .melds{position:absolute;top:34px;left:0}.player-north .opening-tag{position:absolute;top:35px;right:0;font-size:6px}.meld .tile.small{--tile-w:13px;--tile-h:19px}.rivers{top:57px;bottom:121px;left:155px;right:155px;min-height:80px;grid-template-columns:1fr 65px 1fr;grid-template-rows:1fr 62px 1fr;gap:3px;max-width:430px}.river{gap:2px 2px}.river .tile{--tile-w:15px;--tile-h:21px;box-shadow:0 1px 0 #bab49d}.river-0{grid-column:2/4;grid-row:3;max-width:180px;align-content:center}.river-2{grid-column:1/3;grid-row:1;max-width:180px}.river-1{grid-column:3;grid-row:1/3;max-width:100px;margin-left:5px}.river-3{grid-column:1;grid-row:2/4;max-width:100px;margin-right:5px}.compass{width:40px;height:40px;border-radius:8px}.center-mark{font-size:15px}.wind{font-size:6px}.wind-0{bottom:2px;right:4px}.wind-1{right:2px;top:4px}.wind-2{top:2px;left:4px}.wind-3{left:2px;bottom:4px}.wall-count{font-size:7px;margin-top:3px}.wall-count strong{font-size:11px}.table-center>small{display:none}.table-center{gap:3px}.table-event{right:27px;bottom:80px;font-size:7px;gap:5px}.table-event .tile.small{--tile-w:17px;--tile-h:24px}.own-area{left:150px;right:150px;bottom:12px;padding:0}.hand-row{gap:2px;min-height:36px;max-width:580px}.hand-row .tile{width:min(calc(var(--screen-width,100vw) * 0.032),32px);height:min(calc(var(--screen-width,100vw) * 0.046),46px);border-radius:3px}.hand-row .drawn{margin-left:5px}.hand-row .tile.selected{transform:translateY(-9px)}.action-bar{min-height:25px;margin-bottom:9px;gap:6px;flex-wrap:nowrap;max-width:100%}.action-caption{font-size:7px;margin-right:2px;white-space:nowrap;width:auto}.action-chip{min-height:25px;min-width:30px;padding:4px 8px;font-size:12px;border-radius:5px}.action-chip small{font-size:6px;margin-top:1px}.hand-footer{margin-top:7px;min-height:13px;gap:6px;font-size:7px;max-width:100%;flex-wrap:nowrap}.hand-footer>span{max-width:70%;line-height:1.3}.hand-footer .text-button{font-size:7px;min-height:14px;padding:1px 3px}.hand-footer .icon{width:9px;height:9px}.modal-backdrop{padding:12px}.modal{max-height:calc(var(--screen-height,100dvh) * 0.94)}.modal>header{padding:8px 17px}.modal-content{padding:16px 21px}.modal>footer{padding:10px 18px}.modal>footer>button{min-height:37px;padding:9px}.result-heading{margin-bottom:10px}.result-heading h3{font-size:22px}.result-score{font-size:30px}.lesson-tiles{margin:15px 0 20px}.lesson-title{font-size:20px}.lobby .topbar{height:60px}.lobby-body{padding-top:18px}.lobby-heading h1{font-size:27px}.mode-grid{grid-template-columns:1.6fr 1fr}.classic-card{min-height:300px}.friends-card{display:block;padding:22px}.friend-seats{margin:18px 0}.friends-card h2{font-size:20px}.utility-grid{grid-template-columns:1fr 1fr 1fr}.utility-card{padding:13px 11px}.utility-icon{width:28px;height:28px}.utility-card strong{font-size:10px}.utility-card small{font-size:8px}.utility-end{display:none}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
@media (max-width:700px) and (orientation:portrait){body:not(.room-active) .mobile-only{display:block}body:not(.room-active) .version-badge{bottom:8px}body:not(.room-active) .hero-tiles{top:125px}body:not(.room-active) .game-shell{min-height:620px}body:not(.room-active) .table{min-height:520px}}
@container room-screen (max-width:700px) and (orientation:portrait){.mobile-only{display:block}.version-badge{bottom:8px}.hero-tiles{top:125px}.game-shell{min-height:620px}.table{min-height:520px}}
@media (max-width:700px) and (orientation:portrait) and (max-height:760px){body:not(.room-active) .rivers{top:125px;bottom:215px;min-height:180px}}
@container room-screen (max-width:700px) and (orientation:portrait) and (max-height:760px){.rivers{top:125px;bottom:215px;min-height:180px}}
@media (orientation:landscape) and (max-height:600px) and (min-width:701px){body:not(.room-active) .hand-row .tile{width:min(calc((100vw - 356px)/14),40px);height:min(calc((100vw - 356px)/14 * 1.43),57px)}}
@container room-screen (orientation:landscape) and (max-height:600px) and (min-width:701px){.hand-row .tile{width:min(calc((var(--screen-width,100vw) - 356px)/14),40px);height:min(calc((var(--screen-width,100vw) - 356px)/14 * 1.43),57px)}}
.tile-face{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}.wind{font-family:"Songti SC","SimSun",serif;font-size:12px;font-weight:400;color:#7e9c7b}.wind.self{font-weight:800;color:#f6d77e;text-shadow:0 0 5px #b68b3040}.lobby-footer a{color:inherit;text-decoration:underline;text-underline-offset:3px}.asset-credit{font-size:9px;color:#a0ac94;margin-top:18px}.asset-credit a{color:inherit}.voice-description{font-size:10px;color:#8a9d79;margin-top:-9px}
@media (max-width:700px){body:not(.room-active) .wind{font-size:10px}body:not(.room-active) .wind.self{font-size:11px}}
@container room-screen (max-width:700px){.wind{font-size:10px}.wind.self{font-size:11px}}
@media (orientation:landscape) and (max-height:600px){body:not(.room-active) .wind{font-size:8px}body:not(.room-active) .wind.self{font-size:9px}}
@container room-screen (orientation:landscape) and (max-height:600px){.wind{font-size:8px}.wind.self{font-size:9px}}
