.score-lab{max-width:1500px;padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(20px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));--tw:28px;--th:41px}.score-lab header{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.score-lab h1{font-size:1.4rem;margin:0}.score-lab a{color:#e8ce8f}.lab-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.score-lab .panel{min-width:0;padding:12px}.lab-controls,.lab-tiles{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.score-lab .lab-tile{padding:2px;min-width:34px;min-height:46px;background:transparent;border:1px solid transparent;display:inline-flex;align-items:center;flex-direction:column;gap:0;width:auto}.lab-tile:focus-visible{outline:3px solid #ffdd88}.score-lab .lab-tile:disabled{opacity:.5}.score-lab .lab-exhausted:disabled{opacity:.2}.lab-pool{order:-1;align-self:start}.lab-pool h2{font-size:1.1rem;margin:0 0 6px}.lab-pool p{font-size:13px;margin:4px 0 10px}.lab-pool section{display:grid;grid-template-columns:20px minmax(0,1fr);gap:4px;align-items:center;margin:6px 0}.lab-pool h3{font-size:14px;margin:0}.lab-kind-grid{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:3px}.score-lab .lab-picker{width:100%;min-width:0;min-height:56px;border:1px solid #52796b;border-radius:6px}.score-lab .lab-tile small{font-size:10px;line-height:12px;color:#dfe8d1}.lab-meld{border:1px solid #739286;border-radius:8px;padding:8px;margin:8px 0}.lab-meld>span{margin:0 8px}.lab-controls label{flex:1;min-width:140px}.score-lab select{display:block;width:100%;min-height:44px;background:#eff0db;color:#163d30;border-radius:8px;padding:8px}.lab-result{border-top:2px solid #dab875;margin-top:16px}.lab-result table{width:100%;border-collapse:collapse;table-layout:fixed}.lab-result th,.lab-result td{padding:8px 4px;border-bottom:1px solid #52796b;overflow-wrap:anywhere;text-align:left}.lab-result th:nth-child(1){width:28%}.lab-result th:nth-child(2){width:12%}.score-lab details{margin:12px 0}.score-lab summary{cursor:pointer;padding:10px;border:1px solid #739286;border-radius:8px}@media(max-width:650px){.lab-layout{grid-template-columns:minmax(0,1fr)}.score-lab{--tw:25px;--th:36px}.score-lab .lab-picker{min-height:52px}.score-lab header .lab-controls{font-size:13px}.score-lab>p{font-size:13px;margin:8px 0}.lab-pool{position:sticky;top:0;z-index:1;box-shadow:0 4px 12px #0c251f}.lab-pool p{margin-bottom:6px}}@media(max-height:500px)and (min-width:651px){.score-lab{--tw:23px;--th:34px}.score-lab header .lab-controls{margin:0}.score-lab>p{font-size:12px;margin:4px 0}.score-lab .lab-picker{min-height:48px}.lab-pool section{margin:3px 0}.lab-pool{position:sticky;top:0;z-index:1}.lab-pool p{font-size:12px;margin-bottom:4px}}@media(max-height:500px)and (min-width:651px){.score-lab .lab-pool{--tw:20px;--th:28px;padding:8px}.score-lab .lab-picker{min-height:46px}.lab-pool section{margin:1px 0}.lab-pool h2{font-size:15px;line-height:22px;margin-bottom:2px}.lab-pool p{margin:2px 0;font-size:12px;line-height:16px}}.score-lab .tile-face{--tw:inherit;--th:inherit}:root{font-family:-apple-system,BlinkMacSystemFont,PingFang HK,Noto Sans HK,system-ui,sans-serif;color:#eaf1e8;background:#102b26;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;min-height:100dvh}input,button{-webkit-tap-highlight-color:transparent}button{touch-action:manipulation}main{max-width:850px;margin:auto;padding:calc(24px + env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) calc(28px + env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left))}header{display:flex;justify-content:space-between;align-items:center}.brand{font-weight:700;font-size:22px}.connection{border:1px solid #537268;border-radius:30px;padding:7px 12px;font-size:13px}.live{color:#a9edb1}.offline{color:#ffd49b}.intro{margin:42px 0 28px}.eyebrow{color:#ccba88;font-size:13px;letter-spacing:2px}h1{font-size:clamp(27px,5vw,38px);margin:10px 0}p{line-height:1.65;color:#c7d8d0}.panel{background:#1c3933;border:1px solid #456158;border-radius:18px;padding:22px}.lobby{max-width:440px;margin:auto}label{display:block;font-size:14px}input{display:block;width:100%;margin:9px 0 18px;padding:13px;border:1px solid #678078;border-radius:9px;background:#112b25;color:#fff;font:inherit;font-size:16px}button{min-height:48px;border:0;border-radius:9px;background:#e3c78a;color:#182d23;font:inherit;font-weight:700;padding:12px 20px;cursor:pointer}button:disabled{opacity:.5;cursor:default}.lobby button{width:100%}.secondary{background:#2e5147;color:#eff6ee;border:1px solid #6d877c}.quiet{background:transparent;color:#e0e9e3;border:1px solid #789083}.divider{text-align:center;font-size:13px;color:#a3b9af;margin:25px 0}.room-info{display:flex;flex-wrap:wrap;gap:18px;align-items:center;justify-content:space-between}small{display:block;color:#b4c8bd}.room-info strong{font-size:28px;letter-spacing:4px}.invite{width:100%;color:#cdddca;overflow-wrap:anywhere;font-size:13px}.table{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:20px 0}.seat{min-height:205px;border:1px dashed #54766a;border-radius:16px;padding:20px;background:#15352c}.occupied{border-style:solid;background:#21483a}.wind{display:inline-grid;place-items:center;background:#e8dfc5;color:#254436;border-radius:6px;width:34px;height:42px;font-size:23px;font-weight:700}h2{font-size:19px;margin:12px 0 0;overflow-wrap:anywhere}.seat p{font-size:13px;margin:5px 0 12px}.seat span:not(.wind){display:block;font-size:13px}.ready{margin-top:7px;color:#f3deb0}.actions{margin-bottom:20px}.actions p{margin-top:0;overflow-wrap:anywhere}.seat{min-width:0}.actions p:last-child{margin-bottom:0}.actions button{margin:0 10px 8px 0}footer{font-size:12px;color:#a1b9ab;line-height:1.8;margin-top:30px}.error{padding:12px;background:#673e34;border-radius:8px;color:#ffe9db}a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid #e9d9a9;outline-offset:3px}@media(max-width:450px){main{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}.seat{padding:14px;min-height:205px}.intro{margin-top:30px}.room-info{padding:17px}.room-info button{font-size:13px;padding:10px}}@media(min-width:768px){main{padding-top:calc(32px + env(safe-area-inset-top))}.intro{margin-top:36px}.table{gap:20px}.seat{min-height:220px;padding:24px}.lobby{max-width:520px}}@media(max-height:500px)and (orientation:landscape){main{padding-top:calc(16px + env(safe-area-inset-top))}.intro{margin:20px 0}.table{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.seat{padding:12px;min-height:190px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important}}.gameplay{margin-bottom:20px}.hand{display:flex;flex-wrap:wrap;gap:6px;margin:16px 0}.hand button{min-width:44px;min-height:60px;padding:8px;background:#f3ecd6;font-size:18px;color:#183e2d}.hand button:disabled{opacity:1;color:#667368}.public-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.public-tiles>div{min-width:0}.public-tiles strong{font-size:14px;overflow-wrap:anywhere}.discard-tiles{display:flex;flex-wrap:wrap;gap:4px}.discard-tiles span{background:#eee5ce;color:#234638;padding:5px;border-radius:4px}.public-tiles p{font-size:13px}.response-actions,.turn-actions{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0}.response-actions h2,.response-actions p{width:100%}.melds p{font-size:14px;overflow-wrap:anywhere}.response-actions{border:1px solid #b9a56d;border-radius:12px;padding:14px}.game-shell{max-width:1480px;padding:12px max(12px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}.game-shell>.intro,.game-shell>.table,.game-shell>section[aria-label=登入身份]{display:none}.game-shell>.room-info{padding:8px 14px;margin:8px 0;border-radius:10px}.game-shell .room-info strong{font-size:16px;letter-spacing:2px}.game-shell .room-info small,.game-shell .invite{display:none}.game-shell .room-info button{min-height:36px;padding:6px 14px}.game-shell>section[aria-label=圈數及莊家]{padding:8px 14px;margin:8px 0}.game-shell>section[aria-label=圈數及莊家] h2{font-size:15px;margin:0}.game-shell>section[aria-label=圈數及莊家] p{font-size:12px;margin:3px 0}.dev-tools{margin:10px 0}.dev-tools summary{cursor:pointer;padding:10px;font-size:13px}.dev-tools .panel{margin-bottom:12px}.game-shell>header{font-size:13px}.game-shell .brand{font-size:18px}.game-shell footer{margin-top:10px}.table-game{background:none;border:0;padding:0;min-width:0}.rotate-notice{display:none}.table-topline{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 14px;background:#102e28;border:1px solid #466d5b;border-radius:12px 12px 0 0}.phase-label{margin:0;font-size:14px;font-weight:650;color:#f2e9d3}.table-connection{font-size:12px;color:#d5e0ce;flex-shrink:0}.mahjong-board{display:grid;grid-template-columns:minmax(130px,19%) minmax(0,1fr) minmax(130px,19%);grid-template-rows:auto minmax(180px,1fr) auto;grid-template-areas:"left top right" "left rivers right" "bottom bottom bottom";gap:10px;padding:14px;background:radial-gradient(ellipse at center,#266852,#153f33 78%);border:5px solid #655235;box-shadow:inset 0 0 35px #092b2070;border-radius:0 0 18px 18px;min-width:0}.table-player{min-width:0;align-self:start;border:1px solid #527c66;border-radius:10px;background:#113b30da;padding:10px;color:#e8efe4}.player-left{grid-area:left}.player-right{grid-area:right}.player-top{grid-area:top;justify-self:center;width:100%}.player-bottom{grid-area:bottom}.player-active{border:2px solid #edca78;box-shadow:0 0 0 2px #e1b86426;padding:9px}.player-heading{display:flex;gap:8px;align-items:center;min-width:0}.player-heading>div{min-width:0;flex:1}.player-heading strong{display:block;font-size:14px;overflow-wrap:anywhere}.player-relation{display:block;font-size:11px;color:#d6d9bf}.seat-wind{display:grid;place-items:center;background:#ede5c9;border-radius:5px;font-size:22px;width:28px;height:34px;color:#284b39;flex-shrink:0}.turn-badge{font-size:11px;color:#152d22;background:#edca78;padding:3px 6px;border-radius:5px;flex-shrink:0}.player-meta{font-size:11px;margin:5px 0;color:#e0e8d5}.player-extras{min-width:0}.flower-row{display:flex;gap:3px;flex-wrap:wrap;align-items:center;margin:4px 0}.flower-row>span:first-child{font-size:11px;margin-right:3px}.concealed-hand{display:flex;gap:2px;flex-wrap:wrap;margin:7px 0}.concealed-hand .tile-small{--tw:12px;--th:21px;border-radius:3px}.meld-groups{display:flex;gap:8px;flex-wrap:wrap}.meld-group{max-width:100%;padding:3px;background:#091e194d;border-radius:5px}.meld-caption{display:block;font-size:10px;color:#efe0b4;margin-bottom:3px}.meld-group>div{display:flex;gap:2px}.player-bottom .player-extras{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.player-bottom .player-heading{max-width:380px}.player-top .player-extras{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.table-rivers{grid-area:rivers;display:grid;grid-template-columns:minmax(0,1fr) 70px minmax(0,1fr);grid-template-rows:auto minmax(70px,1fr) auto;grid-template-areas:"top top top" "left compass right" "bottom bottom bottom";gap:7px;min-width:0}.river{background:#0e3b305e;border:1px solid #62907b55;border-radius:8px;padding:6px;min-width:0}.river-top{grid-area:top}.river-bottom{grid-area:bottom}.river-left{grid-area:left}.river-right{grid-area:right}.river h3{font-size:10px;margin:0 0 4px;color:#d2e5d4;font-weight:500}.river h3 span{opacity:.8}.river-tiles{display:flex;gap:3px;flex-wrap:wrap;max-height:120px;overflow-y:auto;padding:3px}.river-tiles>span{position:relative;display:inline-flex}.discard-response{outline:3px solid #f5cd71;border-radius:4px;z-index:1;margin-top:8px}.discard-tag{position:absolute;top:-13px;left:-2px;font-size:8px;color:#173b28;background:#f5cd71;border-radius:3px;white-space:nowrap;padding:1px 2px}.table-compass{grid-area:compass;align-self:center;display:flex;align-items:center;flex-direction:column;background:#163c31;border:1px solid #cfbb83;border-radius:12px;padding:10px 2px;box-shadow:0 3px 12px #0b281a44}.table-compass small{font-size:10px}.table-compass strong{font-size:27px;color:#f3de9e}.table-compass span{font-size:9px;text-align:center}.player-dock{background:#142e28;border:1px solid #496554;border-radius:14px;padding:12px;margin-top:10px;min-width:0}.dock-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.dock-heading h2{font-size:14px;margin:0}.dock-heading p{font-size:11px;margin:0;color:#c7d2bb}.table-game .hand{display:flex;flex-wrap:nowrap;gap:0;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;margin:10px 0;padding:6px 4px 10px;min-width:0;scrollbar-color:#bda773 #193b2e;align-items:end}.sorted-hand{display:flex;gap:5px;flex-shrink:0}.drawn-slot{display:flex;flex-direction:column;gap:3px;align-items:center;flex-shrink:0;padding-left:18px;margin-left:12px;border-left:1px solid #c3b885}.drawn-slot small{font-size:10px;color:#f2d591}.table-game .hand .hand-tile{padding:0;min-width:44px;min-height:64px;background:none;border-radius:6px;flex-shrink:0;color:inherit}.table-game .hand .hand-tile:disabled{color:inherit;opacity:1}.hand-tile:disabled .tile-face{filter:saturate(.7);opacity:.78}.hand-tile:not(:disabled){box-shadow:0 0 0 1px #ead39c}.hand-tile:active:not(:disabled){transform:translateY(-3px)}.table-reminders p{font-size:12px;margin:5px 0;color:#e7d4a4}.legal-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0;padding-top:6px}.legal-actions>p{font-size:12px;margin:0}.legal-actions button{min-height:44px;padding:7px 14px;font-size:14px}.reaction-label{display:flex;align-items:center;gap:8px;font-size:12px;flex-basis:100%;min-width:0}.reaction-label>span{color:#d7dece}.option-action,.ding-action{display:flex;align-items:center;gap:8px}.option-preview{display:flex;gap:2px}.legal-actions .tile-small{--tw:22px;--th:32px}.table-game .round-result,.table-game .score-details,.final-hands{margin-top:16px;padding:16px;border:1px solid #577363;background:#193b30;border-radius:12px}.score-details h2,.round-result h2{margin:0}.score-details li{font-size:13px;line-height:1.65;overflow-wrap:anywhere}.final-hands>section>div{display:flex;gap:4px;flex-wrap:wrap;margin:8px 0}.final-hands h3{font-size:13px}.winning-face{display:flex;gap:4px;margin-left:8px;align-items:center}.winning-face small{font-size:11px}.tile-face{--tw:44px;--th:64px;width:var(--tw);height:var(--th);position:relative;display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;flex-direction:column;background:linear-gradient(135deg,#fffcf1,#eee7ce);border:1px solid #d5cfb6;border-bottom:4px solid #bbb393;border-radius:5px;box-shadow:0 2px 2px #0b281840;color:#253f32;overflow:hidden;-webkit-user-select:none;user-select:none}.tile-small{--tw:24px;--th:35px;border-bottom-width:2px;border-radius:3px}.tile-corner{position:absolute;top:2px;left:3px;font-size:9px;font-weight:800}.tile-art{width:85%;height:75%;margin-top:4px}.tile-caption{position:absolute;bottom:1px;left:0;width:100%;text-align:center;font-size:9px;font-weight:750;color:#355849}.tile-small .tile-corner{font-size:6px;top:1px;left:2px}.tile-small .tile-caption{font-size:6px;bottom:0}.character-art{display:flex;flex-direction:column;align-items:center;line-height:1.05;font-family:Songti TC,"Noto Serif TC",serif}.character-art b{font-size:22px;color:#253c31}.character-art strong{font-size:23px;color:#b23432}.tile-small .character-art b,.tile-small .character-art strong{font-size:13px}.honour-art{font-size:31px;font-family:Songti TC,serif}.tile-dragon .honour-art{color:#b52e31}.tile-dragon:has(.honour-art) .tile-caption{color:#b52e31}.tile-dragon[aria-label=發] .honour-art{color:#256b40}.tile-small .honour-art{font-size:20px}.white-dragon{width:60%;height:65%;border:3px double #365f92;border-radius:4px;margin-bottom:2px}.flower-art{position:relative;width:88%;height:75%;display:grid;place-items:center}.flower-art svg{width:100%;height:100%;opacity:.55}.flower-art b{position:absolute;font-size:26px;color:#5b315d;text-shadow:0 1px 2px #fff}.tile-small .flower-art b{font-size:17px}.tile-back{background:#285d57;border-color:#527d70;border-bottom-color:#173a35}.back-weave{width:80%;height:85%;border:1px solid #82a98d;border-radius:3px;background:repeating-linear-gradient(45deg,transparent 0 4px,#a5c4a333 4px 5px),repeating-linear-gradient(-45deg,transparent 0 4px,#a5c4a333 4px 5px)}@media(max-width:1000px)and (orientation:landscape){.mahjong-board{grid-template-columns:minmax(110px,18%) minmax(0,1fr) minmax(110px,18%);gap:6px;padding:8px;border-width:3px;grid-template-rows:auto minmax(140px,1fr) auto}.table-player{padding:6px}.player-active{padding:5px}.player-heading strong{font-size:12px}.player-meta{font-size:10px}.seat-wind{width:23px;height:28px;font-size:18px}.turn-badge{font-size:9px;padding:2px}.table-rivers{grid-template-columns:minmax(0,1fr) 54px minmax(0,1fr);gap:4px}.river{padding:4px}.river-tiles{max-height:72px;gap:2px}.table-compass strong{font-size:22px}.player-dock{padding:8px}.game-shell>section[aria-label=圈數及莊家]{display:none}.table-topline{padding:6px 10px}.phase-label{font-size:12px}.player-top .concealed-hand,.game-shell .dev-tools{margin:0}.game-shell .dev-tools summary{padding:5px}.table-game .hand{margin:4px 0}.dock-heading p{font-size:10px}.player-bottom .player-extras{gap:8px}.game-shell{padding-top:6px}.player-left .concealed-hand,.player-right .concealed-hand{gap:1px;margin:3px 0}.player-left .concealed-hand .tile-small,.player-right .concealed-hand .tile-small{--tw:9px;--th:15px}.flower-row .tile-small,.meld-group .tile-small{--tw:20px;--th:28px}}@media(orientation:portrait){.game-active .table-content{display:none}.game-active .rotate-notice{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:55dvh;padding:24px;border:1px solid #698269;border-radius:16px;background:#1a3b30}.rotate-notice>span{font-size:64px;color:#e7cc8c}.rotate-notice p{max-width:32ch}.table-game:not(.game-active) .mahjong-board{display:none}.table-game:not(.game-active) .table-topline{flex-wrap:wrap}.table-game:not(.game-active) .dock-heading{flex-wrap:wrap}}@media(prefers-reduced-motion:reduce){.table-game *{animation:none!important;transition:none!important}.hand-tile:active:not(:disabled){transform:none}}.game-shell{display:flex;flex-direction:column}.game-shell>.table-game{order:-1}.game-shell>header,.game-shell>.room-info,.game-shell>.dev-tools{order:1}.game-shell>footer{order:2}.hand:focus-visible{outline:2px solid #efce84;outline-offset:2px}@media(max-height:500px)and (orientation:landscape){.mahjong-board{grid-template-rows:60px minmax(80px,1fr) 48px;min-height:205px;height:205px}.table-player{max-height:100%;overflow-y:auto;scrollbar-width:thin}.player-left,.player-right{max-height:182px}.player-top .player-heading,.player-bottom .player-heading{float:left;width:48%;margin-right:5px}.player-top .player-meta,.player-bottom .player-meta{margin-top:0}.player-top .player-extras,.player-bottom .player-extras{gap:4px}.player-top .flower-row,.player-bottom .flower-row{margin:0}.player-top .concealed-hand{display:none}.table-rivers{grid-template-rows:24px minmax(32px,1fr) 24px;gap:3px}.river{padding:2px}.river h3{margin:0;font-size:8px}.river-top,.river-bottom{display:flex;align-items:center;gap:6px}.river-top .river-tiles,.river-bottom .river-tiles{max-height:22px;flex:1;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}.river .tile-small{--tw:17px;--th:24px}.river-left .river-tiles,.river-right .river-tiles{max-height:54px}.table-compass{padding:3px 1px}.table-compass strong{font-size:18px}.table-game .hand{padding-top:3px;padding-bottom:6px}.table-game .hand .hand-tile{min-height:60px}.table-reminders p{font-size:10px;line-height:1.4}.legal-actions{padding-top:2px;gap:5px}.player-dock{margin-top:5px}.dock-heading p{margin:0}.table-topline{padding:4px 8px}.table-game .tile-face:not(.tile-small){--th:60px}.game-shell .table-topline{border-radius:8px 8px 0 0}}.tile-m .tile-caption,.tile-wind .tile-caption,.tile-dragon:has(.honour-art) .tile-caption,.tile-flower .tile-caption{display:none}.tile-green .honour-art{color:#256b40}.tile-back .tile-corner{display:none}@media(max-height:500px)and (orientation:landscape){.player-top,.player-bottom{display:grid;grid-template-columns:minmax(130px,40%) minmax(0,1fr);grid-template-rows:auto auto;column-gap:6px}.player-top .player-heading,.player-bottom .player-heading{float:none;width:auto;margin:0;grid-column:1;grid-row:1}.player-top .player-meta,.player-bottom .player-meta{grid-column:1;grid-row:2;margin:0;line-height:1.3}.player-top .player-extras,.player-bottom .player-extras{grid-column:2;grid-row:1/span 2;max-height:100%;overflow:auto;align-self:center}.player-top .player-heading strong,.player-bottom .player-heading strong{font-size:11px}.player-relation,.player-top .flower-row,.player-bottom .flower-row{font-size:9px}.player-top .seat-wind,.player-bottom .seat-wind{width:20px;height:24px;font-size:16px}.player-top .turn-badge,.player-bottom .turn-badge{font-size:8px;padding:2px}.player-top .tile-small,.player-bottom .tile-small{--tw:18px;--th:26px}}@media(max-height:500px)and (orientation:landscape){.mahjong-board{height:217px;grid-template-rows:60px minmax(80px,1fr) 60px}.player-left,.player-right{height:100%;min-height:0;max-height:100%}.table-reminders p{font-size:12px}.table-player:focus-visible{outline:2px solid #efce84}}@media(min-width:760px)and (max-height:500px)and (orientation:landscape){.legal-actions:not(:has(.ding-action)) .reaction-label{flex-basis:auto;flex-shrink:0}.legal-actions:not(:has(.ding-action)) .reaction-label:not(.reaction-answered)>span{display:none}.player-left .concealed-hand .tile-small,.player-right .concealed-hand .tile-small{--tw:7px;--th:13px}}.header-tools{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.force-reload{min-height:44px;padding:8px 12px;font-size:13px}.game-shell>header{order:-2;margin-bottom:8px}.game-shell header .brand{flex-shrink:0}header{gap:8px}@media(max-width:450px){.header-tools .connection{font-size:11px;padding:5px 8px}.force-reload{font-size:12px;padding:8px}.brand{font-size:19px}}.table-menu{position:relative}.table-menu summary{display:grid;place-items:center;list-style:none;cursor:pointer;width:44px;height:36px;border:1px solid #678078;border-radius:7px;font-size:23px}.table-menu summary::-webkit-details-marker{display:none}.table-menu summary:focus-visible{outline:3px solid #e9d9a9}.table-menu-content{position:absolute;z-index:20;right:0;top:42px;width:min(320px,85vw);max-height:calc(100dvh - 60px);overflow:auto;background:#173c31;border:1px solid #a9b894;border-radius:10px;padding:12px;box-shadow:0 8px 24px #0008}.table-menu-content button{display:block;width:100%;margin:8px 0;font-size:13px}.header-match{font-size:12px;color:#dfcfac}.game-shell>.room-info,.game-shell>.dev-tools,.game-shell>section[aria-label=圈數及莊家]{display:none}.river .tile-small{border:1px solid #918b76;border-bottom:2px solid #89836d;box-shadow:0 0 0 1px #ffffff35}.river .character-art b,.river .character-art strong{font-size:calc(var(--tw)*.45)}.river .honour-art{font-size:calc(var(--tw)*.65)}.river .flower-art b{font-size:calc(var(--tw)*.6)}.river .tile-art{width:76%;height:70%}.river .tile-corner,.river .tile-caption{font-size:5px}@media(orientation:landscape){body:has(.game-shell .table-fixed){overflow:hidden;height:100dvh}.game-shell:has(.table-fixed){height:100dvh;max-width:none;padding:env(safe-area-inset-top) max(8px,env(safe-area-inset-right)) max(4px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));gap:3px;overflow:hidden}.game-shell:has(.table-fixed)>header{height:36px;min-height:36px;margin:0;order:-2}.game-shell:has(.table-fixed) .brand{font-size:15px}.game-shell:has(.table-fixed) .connection{padding:3px 8px;font-size:11px}.game-shell:has(.table-fixed)>footer,.game-shell:has(.table-fixed)>p:not(.error){display:none}.game-shell:has(.table-fixed)>.error{position:absolute;top:40px;left:20%;right:20%;z-index:10;margin:0;padding:5px;font-size:12px}.game-shell .table-fixed{flex:1;min-height:0;margin:0}.game-shell .table-fixed .table-content{height:100%;display:flex;flex-direction:column;gap:3px;min-height:0}.game-shell .table-fixed .table-topline{min-height:24px;padding:2px 8px;border-radius:6px;gap:5px}.game-shell .table-fixed .phase-label{font-size:11px}.game-shell .table-fixed .table-connection{font-size:10px}.game-shell .table-fixed .mahjong-board{flex:1;height:auto;min-height:0;grid-template-columns:minmax(85px,16%) minmax(0,1fr) minmax(85px,16%);grid-template-rows:42px minmax(0,1fr) 38px;gap:3px;padding:4px;border-width:2px;border-radius:8px;overflow:hidden}.game-shell .table-fixed .table-player{min-height:0;max-height:100%;padding:3px;overflow:auto}.game-shell .table-fixed .player-active{padding:2px}.game-shell .table-fixed .player-heading strong{font-size:11px}.game-shell .table-fixed .player-relation{font-size:8px}.game-shell .table-fixed .player-meta{font-size:9px;line-height:1.3;margin:2px 0}.game-shell .table-fixed .seat-wind{width:19px;height:23px;font-size:16px}.game-shell .table-fixed .turn-badge{font-size:8px;padding:2px}.game-shell .table-fixed .player-top,.game-shell .table-fixed .player-bottom{display:grid;grid-template-columns:minmax(115px,40%) minmax(0,1fr);grid-template-rows:auto auto;column-gap:4px}.game-shell .table-fixed .player-top .player-heading,.game-shell .table-fixed .player-bottom .player-heading{grid-column:1;grid-row:1;width:auto;float:none;margin:0}.game-shell .table-fixed .player-top .player-meta,.game-shell .table-fixed .player-bottom .player-meta{grid-column:1;grid-row:2;margin:0}.game-shell .table-fixed .player-top .player-extras,.game-shell .table-fixed .player-bottom .player-extras{grid-column:2;grid-row:1/span 2;align-self:center;overflow:auto}.game-shell .table-fixed .player-top .concealed-hand{display:none}.game-shell .table-fixed .flower-row{margin:0;gap:2px}.game-shell .table-fixed .flower-row .tile-small{--tw:16px;--th:23px}.game-shell .table-fixed .flower-row .flower-art b{font-size:13px}.game-shell .table-fixed .player-left,.game-shell .table-fixed .player-right{height:100%}.game-shell .table-fixed .concealed-hand{gap:1px;margin:3px 0}.game-shell .table-fixed .concealed-hand .tile-small{--tw:6px;--th:12px}.game-shell .table-fixed .meld-group .tile-small{--tw:17px;--th:25px}.game-shell .table-fixed .meld-caption{font-size:8px;margin:0}.game-shell .table-fixed .table-rivers{min-height:0;grid-template-columns:minmax(0,1fr) 45px minmax(0,1fr);grid-template-rows:minmax(22px,1fr) minmax(30px,1.5fr) minmax(22px,1fr);gap:2px}.game-shell .table-fixed .river{min-height:0;padding:2px;overflow:hidden}.game-shell .table-fixed .river h3{font-size:8px;margin:0}.game-shell .table-fixed .river-tiles{max-height:100%;min-height:0;gap:2px;overflow:auto}.game-shell .table-fixed .river-top,.game-shell .table-fixed .river-bottom{display:flex;gap:3px;align-items:center}.game-shell .table-fixed .river-top .river-tiles,.game-shell .table-fixed .river-bottom .river-tiles{flex:1;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;max-height:100%}.game-shell .table-fixed .river .tile-small{--tw:18px;--th:26px}.game-shell .table-fixed .table-compass{padding:1px}.game-shell .table-fixed .table-compass strong{font-size:18px}.game-shell .table-fixed .table-compass span,.game-shell .table-fixed .table-compass small{font-size:8px}.game-shell .table-fixed .discard-tag{font-size:6px}.game-shell .table-fixed .player-dock{flex-shrink:0;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"notes actions" "hand hand";gap:3px;padding:4px 6px;margin:0;border-radius:8px}.game-shell .table-fixed .dock-heading{display:none}.game-shell .table-fixed .table-reminders{grid-area:notes;align-self:center}.game-shell .table-fixed .table-reminders p{font-size:10px;line-height:1.2;margin:0}.game-shell .table-fixed .legal-actions{grid-area:actions;justify-content:flex-end;align-items:center;max-width:100%;gap:3px;padding:0}.game-shell .table-fixed .legal-actions button{min-height:36px;padding:3px 7px;font-size:12px;gap:3px}.game-shell .table-fixed .legal-actions .tile-small{--tw:16px;--th:23px}.game-shell .table-fixed .reaction-label{flex-basis:auto;font-size:10px;gap:3px}.game-shell .table-fixed .reaction-label:not(.reaction-answered)>span{display:none}.game-shell .table-fixed .reaction-label .tile-small{--tw:16px;--th:23px}.game-shell .table-fixed .legal-actions>p{font-size:10px}.game-shell .table-fixed .hand{grid-area:hand;width:100%;container-type:inline-size;display:flex;gap:3px;overflow:visible;padding:0;margin:0;align-items:flex-end;min-width:0;height:64px}.game-shell .table-fixed .hand .tile-face{--tw:min(44px,calc((100cqw - 44px) / var(--hand-units)));--th:60px}.game-shell .table-fixed .sorted-hand{gap:2px;min-width:0}.game-shell .table-fixed .hand .hand-tile{min-width:0;width:min(44px,calc((100cqw - 44px) / var(--hand-units)));min-height:60px;flex-shrink:0}.game-shell .table-fixed .drawn-slot{gap:0;padding-left:5px;margin-left:2px}.game-shell .table-fixed .drawn-slot small{position:absolute;transform:translateY(-10px);font-size:8px}.game-shell .table-fixed .hand .character-art b,.game-shell .table-fixed .hand .character-art strong{font-size:calc(var(--tw)*.5)}.game-shell .table-fixed .hand .honour-art{font-size:calc(var(--tw)*.7)}.game-shell .table-fixed .hand .tile-caption,.game-shell .table-fixed .hand .tile-corner{font-size:7px}.game-shell .table-fixed .own-melds:empty{display:none}.game-shell .table-fixed .own-melds .meld-groups{flex-wrap:nowrap;gap:3px}.game-shell .table-fixed .own-melds .meld-group{padding:2px;border:1px solid #b3a57e;background:#284c3b;flex-shrink:0}.game-shell .table-fixed .own-melds .meld-group>div{gap:1px}.game-shell .table-fixed .own-melds .tile-face{--tw:min(32px,calc((100cqw - 44px) / var(--hand-units)*.72));--th:45px}.game-shell .table-fixed .own-melds .meld-caption{font-size:8px}.game-shell .table-fixed .own-melds .tile-corner{font-size:5px}.game-shell .table-fixed .player-dock:has(.ding-action){grid-template-columns:1fr}.game-shell .table-fixed .player-dock:has(.ding-action) .legal-actions{flex-wrap:wrap}.game-shell .table-fixed .player-dock:has(.ding-action) .table-reminders{display:none}}@media(orientation:landscape){.game-shell .table-fixed .mahjong-board{grid-template-rows:40px minmax(0,1fr) 44px}.game-shell .table-fixed .table-rivers{grid-template-rows:minmax(0,1fr) minmax(0,1.5fr) minmax(0,1fr)}.game-shell .table-fixed .legal-actions button{min-height:44px}.game-shell .table-fixed .player-dock:has(.ding-action){grid-template-columns:minmax(0,1fr);grid-template-areas:"actions" "hand"}.game-shell .table-fixed .legal-actions:has(.ding-action:nth-of-type(5)) .ding-action>span:first-child{display:none}.game-shell .table-fixed .legal-actions:has(.ding-action:nth-of-type(5)):before{content:"叮並打出";font-size:11px;color:#eed9aa}.game-shell .table-fixed .legal-actions:has(.ding-action:nth-of-type(5)) .ding-action{padding:3px 6px}}@media(max-height:360px)and (orientation:landscape){.game-shell .table-fixed .table-compass{display:none}.game-shell .table-fixed .table-rivers{grid-template-columns:1fr 1fr;grid-template-rows:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"top right" "left bottom"}.game-shell .table-fixed .river{display:flex;gap:2px;align-items:center}.game-shell .table-fixed .river h3{font-size:7px;flex-shrink:0;max-width:40px}.game-shell .table-fixed .river-tiles{flex:1;flex-wrap:nowrap;overflow:auto;max-height:100%}.game-shell .table-fixed .river .tile-small{--tw:13px;--th:18px}.game-shell .table-fixed .river .tile-corner,.game-shell .table-fixed .river .tile-caption{font-size:4px}.game-shell .table-fixed .player-relation{font-size:7px}}@media(orientation:landscape){.game-shell:has(.table-fixed){position:relative}.game-shell:has(>header[data-game-toolbar]) .table-fixed .table-topline{position:absolute;top:calc(env(safe-area-inset-top) + 3px);left:88px;right:132px;min-height:30px;border:0;background:transparent;padding:0 5px}.game-shell:has(>header[data-game-toolbar]) .table-fixed .table-connection{display:none}.game-shell:has(>header[data-game-toolbar]) .table-fixed .phase-label{font-size:11px;line-height:1.25}}@media(orientation:landscape){.game-shell .table-fixed .hand{height:70px}.game-shell .table-fixed .drawn-slot{position:relative}.game-shell .table-fixed .drawn-slot small{top:-9px;left:5px;transform:none;white-space:nowrap}}@media(max-width:700px)and (orientation:landscape){.game-shell .table-fixed .legal-actions:has(.ding-action:nth-of-type(5)){gap:2px}.game-shell .table-fixed .legal-actions:has(.ding-action:nth-of-type(5)) .ding-action{padding:2px 4px}.game-shell .table-fixed .legal-actions:has(.ding-action:nth-of-type(5)) .tile-small{--tw:14px;--th:23px}.game-shell .table-fixed .legal-actions:has(.ding-action:nth-of-type(5)):before{font-size:10px}}.player-inspect{display:flex;align-items:center;gap:3px;text-align:left;background:none;color:inherit;border:0;padding:0;min-height:24px;max-width:100%}.player-inspect strong{overflow-wrap:anywhere}.player-inspect>span{font-size:11px;color:#efdbad}.river-inspect{display:flex;align-items:center;gap:4px;background:none;color:#e7dcc0;min-height:22px;padding:0;font-size:inherit}.river-inspect span:last-child{color:#e7c987}.full-screen-overlay{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;border:0;padding:0;background:#102e28;color:#edf1e4;overscroll-behavior:contain}.full-screen-overlay[open]{display:flex;flex-direction:column}.full-screen-overlay::backdrop{background:#000b}.overlay-header{flex-shrink:0;padding:calc(6px + env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 6px max(16px,env(safe-area-inset-left));border-bottom:1px solid #648375;background:#1d4438}.overlay-header h2{margin:0;font-size:20px}.overlay-header button{min-height:44px;padding:6px 14px;font-size:13px}.overlay-body{flex:1;min-height:0;overflow:auto;padding:12px max(16px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));overscroll-behavior:contain}.inspection-tiles{display:flex;flex-wrap:wrap;gap:5px}.overlay-body>.meld-groups{gap:14px}.overlay-body>.meld-groups .tile-small{--tw:36px;--th:52px}.overlay-body>.meld-groups .meld-caption{font-size:13px}.overlay-body h3{font-size:14px;margin:8px 0}.overlay-body p{font-size:13px;margin:8px 0}.result-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.result-layout>.round-result,.winner-hands{grid-column:1/-1}.table-game .result-layout>.round-result,.table-game .result-layout>.score-details,.table-game .result-layout>.final-hands{margin:0;padding:12px;background:#1a4035;min-width:0}.result-layout .round-result h2{font-size:18px}.winner-hands{padding:8px 12px;background:linear-gradient(110deg,#405e43,#17382f);border:1px solid #c4ad6b;border-radius:10px}.winner-tiles{display:flex;gap:3px;flex-wrap:wrap;align-items:flex-end}.winner-tiles>.tile-small,.winner-tiles>.winning-face>.tile-small{--tw:30px;--th:44px}.winner-tiles .meld-groups{gap:4px}.winner-tiles .meld-group .tile-small{--tw:25px;--th:37px}.result-layout .score-details h2{font-size:16px}.result-layout .score-details ul{padding-left:20px;margin:5px 0}.result-layout .final-hands .tile-small{--tw:22px;--th:32px}.result-reopen{margin:10px 0;align-self:flex-end}.result-layout .score-details strong{color:#f4d58b}.result-layout .score-details h3{font-size:16px}body:has(.full-screen-overlay[open]){overflow:hidden}@media(max-width:600px)and (orientation:portrait){.result-layout{grid-template-columns:1fr}.overlay-header h2{font-size:17px}.overlay-body{padding:10px}.winner-tiles>.tile-small{--tw:25px;--th:37px}}@media(orientation:landscape){.game-shell .table-fixed .mahjong-board{grid-template-columns:minmax(90px,13%) minmax(0,1fr) minmax(90px,13%);grid-template-rows:54px minmax(0,1fr) 40px;background:radial-gradient(ellipse at center,#2a7259,#153e31);gap:4px}.game-shell .table-fixed .table-player{background:#0c2e2299;border-color:#446f59;border-radius:6px}.game-shell .table-fixed .player-bottom{grid-template-columns:minmax(140px,30%) minmax(0,1fr)}.game-shell .table-fixed .player-inspect{min-height:22px}.game-shell .table-fixed .player-top{grid-template-columns:minmax(130px,25%) minmax(0,1fr)}.game-shell .table-fixed .player-top .player-extras{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:nowrap}.game-shell .table-fixed .concealed-hand{display:none}.game-shell .table-fixed .table-player .meld-groups{gap:4px}.game-shell .table-fixed .table-player .meld-group{border:1px solid #74977d;background:#143528;padding:2px}.game-shell .table-fixed .table-player .meld-group .tile-small{--tw:24px;--th:35px}.game-shell .table-fixed .table-player .meld-caption{font-size:9px;line-height:1.2}.game-shell .table-fixed .table-player .flower-row .tile-small{--tw:18px;--th:26px}.game-shell .table-fixed .table-rivers{grid-template-columns:minmax(0,1fr) 42px minmax(0,1fr);grid-template-rows:minmax(0,1fr) minmax(0,1.4fr) minmax(0,1fr);gap:3px}.game-shell .table-fixed .river{background:#153e3066;border:1px solid #587e6299;border-radius:5px;display:flex;flex-direction:column;align-items:stretch;gap:1px;overflow:hidden;padding:2px 4px}.game-shell .table-fixed .river h3{font-size:9px;flex-shrink:0;max-width:none}.game-shell .table-fixed .river-inspect{min-height:14px;font-size:9px}.game-shell .table-fixed .river-tiles{display:flex;flex:1;flex-wrap:wrap;gap:2px;align-content:flex-start;overflow:auto;max-height:none;min-height:0}.game-shell .table-fixed .river .tile-small{--tw:25px;--th:35px}.game-shell .table-fixed .river .tile-corner,.game-shell .table-fixed .river .tile-caption{font-size:6px}.game-shell .table-fixed .river-top,.game-shell .table-fixed .river-bottom{flex-direction:row;align-items:center;gap:5px}.game-shell .table-fixed .river-top .river-tiles,.game-shell .table-fixed .river-bottom .river-tiles{flex-wrap:wrap;overflow:auto;align-content:center;height:100%}.game-shell .table-fixed .discard-tag{font-size:8px}.game-shell .table-fixed .discard-response{box-shadow:0 0 0 2px #f5c65b;background:#b59730;border-radius:4px}}@media(max-height:360px)and (orientation:landscape){.game-shell .table-fixed .mahjong-board{grid-template-columns:85px minmax(0,1fr) 85px;grid-template-rows:39px minmax(0,1fr) 36px}.game-shell .table-fixed .table-rivers{grid-template-columns:1fr 1fr;grid-template-rows:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"top right" "left bottom"}.game-shell .table-fixed .river{flex-direction:row;align-items:center;padding:1px 2px;gap:2px}.game-shell .table-fixed .river h3{max-width:40px;font-size:8px}.game-shell .table-fixed .river-inspect{font-size:8px;display:block}.game-shell .table-fixed .river .tile-small{--tw:21px;--th:29px}.game-shell .table-fixed .table-player .meld-group .tile-small{--tw:21px;--th:31px}.game-shell .table-fixed .player-top .flower-row{display:none}}@media(orientation:landscape){.game-shell .table-fixed .response-focus{border-color:#dec171;background:#243c2c}.game-shell .table-fixed .response-focus .tile-small{--tw:28px;--th:39px}.game-shell .table-fixed .reaction-label .tile-small{--tw:23px;--th:33px}.game-shell .table-fixed .table-player .meld-group .tile-small{--tw:clamp(18px,2.6vw,24px);--th:35px}.game-shell .table-fixed .table-player .flower-row .tile-small{--tw:17px;--th:25px}}.table-game .result-layout>.round-result{display:flex;align-items:center;gap:14px;padding:6px 10px;min-height:40px;border-radius:8px}.result-layout .round-result h2{font-size:16px;flex-shrink:0;margin:0}.result-layout .round-result p{font-size:12px;line-height:1.3;margin:0}.result-layout .winner-hands{padding:5px 10px}.result-layout .winner-hands h3{font-size:13px;line-height:1.2;margin:2px 0 5px}.result-layout .winner-tiles{min-height:44px}.result-layout .score-details>p{font-size:11px;line-height:1.3;margin:4px 0}.result-layout .score-details h3{font-size:15px;margin:5px 0}@media(max-width:600px)and (orientation:portrait){.result-layout>.round-result{flex-wrap:wrap;gap:3px}}.river-heading{display:flex;align-items:center;justify-content:space-between;gap:3px;flex-shrink:0;min-height:20px}.river-heading h3{margin:0;font-size:10px}.river-pages{display:flex;align-items:center;gap:2px}.river-pages button{min-height:20px;min-width:20px;padding:0 3px;font-size:15px;background:#315a45;color:#f2e6cb;border:1px solid #63816a;border-radius:4px}.river-pages span{font-size:8px;white-space:nowrap;color:#e9d7b4}.river-grid{display:grid;flex:1;min-height:0;gap:2px;align-content:start;overflow:hidden}.river-grid>span{position:relative;min-width:0;height:var(--th)}.river-grid .tile-small{--tw:inherit;--th:inherit}.river-grid .discard-tag{position:absolute;top:0;right:0;font-size:6px;background:#e5c67a;color:#1a382a}.room-actions{min-width:0}.room-actions p{font-size:12px;line-height:1.3;margin:0 0 5px}.room-actions>div{display:flex;gap:8px;flex-wrap:wrap}.room-actions button{min-height:44px;padding:7px 14px;font-size:13px}.overlay-footer{flex-shrink:0;background:#1d4438;border-top:1px solid #688778;padding:6px max(16px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));max-height:40dvh;overflow:auto}.overlay-footer .room-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}.overlay-footer .room-actions p{margin:0;max-width:42%;font-size:11px}.result-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-shrink:0}.result-toolbar .result-reopen{margin:0;min-height:44px;padding:6px 12px;font-size:12px}.result-toolbar .room-actions p{display:none}.result-toolbar .room-actions>div{gap:4px}.result-toolbar .room-actions button{padding:6px 10px;font-size:12px}@media(orientation:landscape){.game-shell .table-fixed .river,.game-shell .table-fixed .river-top,.game-shell .table-fixed .river-bottom{display:flex;flex-direction:column;align-items:stretch;padding:2px 4px;gap:2px}.game-shell .table-fixed .river h3{max-width:none;font-size:9px}.game-shell .table-fixed .river-inspect{display:flex;min-height:20px;font-size:9px}.game-shell .table-fixed .river-grid{width:100%;min-height:0}.game-shell .table-fixed .river-grid .tile-small{--tw:inherit;--th:inherit}.game-shell .table-fixed .river-grid .discard-tag{font-size:6px}.game-shell .table-fixed .result-toolbar{min-height:44px}}@media(max-height:360px)and (orientation:landscape){.game-shell .table-fixed .mahjong-board{grid-template-rows:30px minmax(0,1fr) 30px}.river-heading{min-height:16px}.river-pages button{min-height:16px;min-width:16px;font-size:12px}.game-shell .table-fixed .river-inspect{min-height:16px;font-size:8px}.game-shell .table-fixed .river-heading{gap:1px}.river-pages span{font-size:7px}.game-shell .table-fixed .river{padding:1px}.result-toolbar{gap:3px}.result-toolbar .result-reopen,.result-toolbar .room-actions button{padding:5px 8px;font-size:11px}}@media(orientation:portrait){.overlay-footer .room-actions{display:block}.overlay-footer .room-actions p{max-width:none;margin-bottom:4px}.result-toolbar{flex-wrap:wrap}.room-actions>div{gap:5px}}@media(max-height:500px)and (orientation:landscape){.game-shell .table-fixed .table-rivers{grid-template-columns:minmax(0,1fr) 42px minmax(0,1fr);grid-template-rows:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"top compass right" "left compass bottom"}}@media(max-height:360px)and (orientation:landscape){.game-shell .table-fixed .table-rivers{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"top right" "left bottom"}}@media(orientation:landscape){.game-shell .table-fixed .table-content{display:grid;position:relative;grid-template-columns:minmax(96px,13%) minmax(0,1fr) minmax(96px,13%);grid-template-rows:40px minmax(0,1fr) auto 26px 68px auto;grid-template-areas:"left top right" "left rivers right" "actions actions actions" "self self self" "hand hand hand" "results results results";gap:4px;padding:4px;border:2px solid #655235;border-radius:8px;background:radial-gradient(ellipse at center,#2a7259,#153e31);overflow:hidden}.game-shell .table-fixed .mahjong-board,.game-shell .table-fixed .player-dock{display:contents}.game-shell .table-fixed .table-rivers{grid-area:rivers;display:grid;min-width:0;min-height:0;grid-template-columns:minmax(0,1fr) 58px minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto minmax(0,1fr);grid-template-areas:"top top right" "left center right" "left bottom bottom";gap:3px}.game-shell .table-fixed .player-left{grid-area:left}.game-shell .table-fixed .player-right{grid-area:right}.game-shell .table-fixed .player-top{grid-area:top}.game-shell .table-fixed .player-bottom{grid-area:self}.game-shell .table-fixed .table-player{padding:3px;min-width:0;overflow:auto}.game-shell .table-fixed .player-left,.game-shell .table-fixed .player-right{align-self:stretch;height:auto;max-height:100%}.game-shell .table-fixed .player-top{grid-template-columns:minmax(105px,30%) minmax(0,1fr);grid-template-rows:auto auto}.game-shell .table-fixed .player-top .player-heading>div,.game-shell .table-fixed .player-bottom .player-heading>div{display:flex;align-items:center;gap:3px;overflow:hidden}.game-shell .table-fixed .player-top .player-relation,.game-shell .table-fixed .player-bottom .player-relation{white-space:nowrap}.game-shell .table-fixed .player-top .player-inspect,.game-shell .table-fixed .player-bottom .player-inspect{min-width:0;flex-shrink:1}.game-shell .table-fixed .player-top .player-inspect strong,.game-shell .table-fixed .player-bottom .player-inspect strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.game-shell .table-fixed .player-bottom{grid-template-columns:minmax(0,1fr) auto auto;grid-template-rows:1fr;align-items:center;padding:1px 3px}.game-shell .table-fixed .player-bottom .player-meta{grid-column:2;grid-row:1;white-space:nowrap;font-size:8px}.game-shell .table-fixed .player-bottom .player-extras{grid-column:3;grid-row:1}.game-shell .table-fixed .player-bottom .seat-wind{height:20px;font-size:15px}.game-shell .table-fixed .player-bottom .flower-row .tile-small{--tw:14px;--th:21px}.game-shell .table-fixed .river-left{grid-area:left}.game-shell .table-fixed .river-right{grid-area:right}.game-shell .table-fixed .river-top{grid-area:top}.game-shell .table-fixed .river-bottom{grid-area:bottom}.game-shell .table-fixed .river{padding:1px 2px;gap:1px;background:transparent;border:0;border-radius:0}.game-shell .table-fixed .river-heading,.game-shell .table-fixed .river-inspect{min-height:14px;font-size:8px}.game-shell .table-fixed .river-grid{gap:2px}.game-shell .table-fixed .river-top .river-grid{justify-content:end;align-content:end}.game-shell .table-fixed .river-right .river-grid{justify-content:start;align-content:end}.game-shell .table-fixed .river-bottom .river-grid{justify-content:start;align-content:start}.game-shell .table-fixed .river-left .river-grid{justify-content:end;align-content:start}.table-center{grid-area:center;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;padding:6px 11px;background:#172b2a;border:2px solid #b3a16c;border-radius:8px;box-shadow:0 2px 8px #0006}.console-wind{position:absolute;font-size:9px;font-weight:700;line-height:12px;color:#e6e7db;background:#172b2a;padding:0 2px}.console-wind-top{top:-3px;left:50%;transform:translate(-50%)}.console-wind-bottom{bottom:-3px;left:50%;transform:translate(-50%)}.console-wind-left{left:-3px;top:50%;transform:translateY(-50%)}.console-wind-right{right:-3px;top:50%;transform:translateY(-50%)}.console-dealer{color:#f7d47e}.game-shell .table-fixed .table-compass{display:flex;width:100%;min-height:36px;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}.game-shell .table-fixed .table-compass strong{font-size:19px}.game-shell .table-fixed .table-compass small,.game-shell .table-fixed .table-compass span{font-size:8px}.game-shell .table-fixed .table-compass .tile-small{--tw:18px;--th:26px}.game-shell .table-fixed .legal-actions.floating-actions{grid-area:actions;justify-self:end;display:flex;justify-content:flex-end;align-items:center;flex-wrap:wrap;gap:4px;width:fit-content;max-width:100%;min-width:0;margin:0;padding:3px 6px;background:#173a2ff2;border:1px solid #7c997e;border-radius:8px;box-shadow:0 2px 8px #0005;z-index:2}.game-shell .table-fixed .legal-actions:not(:has(button,.reaction-label)){display:none}.game-shell .table-fixed .legal-actions>p{display:none}.game-shell .table-fixed .floating-actions button{min-height:44px;padding:4px 6px;font-size:12px}.game-shell .table-fixed .floating-actions .reaction-label{flex-basis:auto;justify-content:center;gap:3px;font-size:9px}.game-shell .table-fixed .floating-actions .reaction-label .tile-small{--tw:18px;--th:26px}.game-shell .table-fixed .floating-actions .reaction-label:not(.reaction-answered)>span{display:none}.game-shell .table-fixed .hand{grid-area:hand;height:100%;padding:5px 3px 3px;align-items:flex-end;background:#113b30;border:1px solid #527c66;border-radius:7px}.game-shell .table-fixed .own-melds .tile-face{--tw:min(32px,calc((100cqw - 44px) / var(--hand-units)*.72));--th:45px}.game-shell .table-fixed .table-reminders{position:absolute;bottom:71px;left:15%;right:15%;z-index:3;pointer-events:none;text-align:center}.game-shell .table-fixed .table-reminders:has(p){background:#173a2fef;border-radius:5px;padding:2px}.game-shell .table-fixed .table-reminders p{font-size:9px}.game-shell .table-fixed .result-toolbar{grid-area:results;min-width:0;flex-wrap:wrap;gap:3px}.game-shell .table-fixed .result-toolbar .room-actions button{padding:4px 7px}.game-shell:has(>header[data-game-toolbar]) .table-fixed .table-topline{position:fixed;top:calc(env(safe-area-inset-top) + 3px);left:88px;right:132px;min-height:30px;z-index:1}}@media(max-width:759px)and (orientation:landscape){.game-shell .table-fixed .table-content{grid-template-columns:85px minmax(0,1fr) 85px;gap:3px;padding:3px}.game-shell .table-fixed .table-rivers{gap:2px;grid-template-columns:minmax(0,1fr) 48px minmax(0,1fr)}.game-shell .table-fixed .player-top .player-extras{gap:2px}.game-shell .table-fixed .player-top .flower-row{display:none}.game-shell .table-fixed .table-player .meld-group .tile-small{--tw:20px;--th:29px}.game-shell .table-fixed .floating-actions .option-preview .tile-small{--tw:14px;--th:22px}.game-shell .table-fixed .floating-actions button{padding:3px 4px}.game-shell .table-fixed .floating-actions:has(.ding-action:nth-of-type(5)) .ding-action{padding:2px 4px}.game-shell .table-fixed .player-bottom .player-relation{display:none}.game-shell .table-fixed .player-top{grid-template-columns:1fr auto}}.tile-face,.game-shell .table-fixed .tile-face{background:none;border:0;border-radius:0;box-shadow:none;padding:0;overflow:hidden}.tile-illustration{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;overflow:hidden}.option-preview>span,.meld-group>div>span{display:inline-flex;flex-shrink:0;position:relative}.claim-target{filter:drop-shadow(0 0 1px #ad4918)}.game-shell .table-fixed .discard-response{margin-top:0}@media(orientation:landscape){.game-shell .round-finished .table-content{grid-template-rows:40px minmax(0,1fr) auto 22px 44px auto}.game-shell .round-finished .hand{padding:3px;height:44px}.game-shell .round-finished .hand .hand-tile{min-height:38px;height:38px}.game-shell .round-finished .hand .tile-face{--th:38px}.game-shell .round-finished .own-melds .tile-face{--th:27px}.game-shell .round-finished .river-heading,.game-shell .round-finished .river-inspect{min-height:10px;font-size:7px}}@media(max-width:759px)and (orientation:landscape){.game-shell .table-fixed .floating-actions:has(.ding-action:nth-of-type(5)){gap:1px}.game-shell .table-fixed .floating-actions:has(.ding-action:nth-of-type(5)):before{flex-basis:auto;font-size:9px}.game-shell .table-fixed .floating-actions:has(.ding-action:nth-of-type(5)) .ding-action{padding:2px;gap:0}.game-shell .table-fixed .floating-actions:has(.ding-action:nth-of-type(5)) .tile-small{--tw:12px;--th:20px}}@media(orientation:landscape){.game-shell .table-fixed .table-content{gap:3px;padding:3px}.table-center:not(:has(.legal-actions button)){padding:4px 5px}.game-shell .table-fixed .table-compass span{white-space:nowrap}.game-shell .table-fixed .river-heading h3,.game-shell .table-fixed .river-inspect{line-height:1}}@media(orientation:landscape){.game-shell .table-fixed .table-compass strong{font-size:16px}.game-shell .table-fixed .table-compass small,.game-shell .table-fixed .table-compass span{font-size:7px}.game-shell .table-fixed .table-compass .console-balance{font-size:6px;color:#b7c7ba}}.game-shell .table-fixed .table-compass .turn-countdown,.turn-countdown{font-size:11px;font-weight:750;color:#ffe2a1;border:1px solid #c5a35a;border-radius:4px;padding:2px 4px;white-space:nowrap}.game-shell .table-fixed .table-compass:has(.turn-countdown) .console-balance{display:none}@media(orientation:landscape){.game-shell .table-fixed .table-content{grid-template-rows:54px minmax(0,1fr) 26px 68px auto;grid-template-areas:"left top right" "left rivers right" "self self self" "hand hand hand" "results results results"}.game-shell .round-finished .table-content{grid-template-rows:54px minmax(0,1fr) 22px 44px auto}.game-shell .table-fixed .legal-actions.floating-actions{position:absolute;grid-area:auto;right:4px;bottom:102px;max-width:72%;max-height:35%;overflow:auto}.game-shell .table-fixed .table-reminders{bottom:76px;left:16%;right:16%;max-height:28px;overflow:auto;font-size:9px}.game-shell .table-fixed .table-reminders p{margin:0;line-height:1.3}.game-shell .table-fixed .player-top{grid-template-rows:1fr;align-items:center;overflow:visible;min-height:0}.game-shell .table-fixed .player-top .player-extras{align-items:center;overflow:visible}.game-shell .table-fixed .player-top .meld-group .tile-small{--tw:22px;--th:32px}.game-shell .table-fixed .river .tile-face{--tw:inherit;--th:inherit}}.latest-meld{outline:2px solid #edca78;outline-offset:1px}.latest-meld .meld-caption:after{content:" · 最新";color:#ffe09a;font-weight:800}.winning-face{position:relative;transform:translateY(-7px);padding:2px;border:2px solid #d7a337;border-radius:6px;margin-left:6px;background:#80612240}.flower-reveal{position:absolute;left:50%;top:30%;transform:translate(-50%);z-index:5;display:flex;align-items:center;gap:10px;background:#193e35;border:2px solid #edca78;border-radius:10px;padding:8px;color:#ffe2a1;pointer-events:none}.flower-reveal span{font-size:12px}@media(max-height:360px)and (orientation:landscape){.game-shell .table-fixed .table-content{grid-template-rows:50px minmax(0,1fr) 22px 58px auto}.game-shell .round-finished .table-content{grid-template-rows:50px minmax(0,1fr) 22px 44px auto}.game-shell .table-fixed .legal-actions.floating-actions{bottom:87px}.game-shell .table-fixed .table-reminders{bottom:65px;max-height:22px}.game-shell .table-fixed .player-top .meld-group .tile-small{--tw:17px;--th:25px}.flower-reveal{padding:4px;gap:5px}}.game-shell .table-fixed .river-grid .discard-response{outline:2px solid #f5cd71;outline-offset:0;margin:0;box-shadow:none;z-index:1}.game-shell .table-fixed .river-grid .discard-tag{display:none}.winning-face{flex-direction:column;gap:2px;align-items:center}.winning-face small{line-height:1.1;white-space:nowrap}
