@import"https://fonts.googleapis.com/css2?family=Fraunces:wght@400;500;600;650;700&family=DM+Sans:wght@400;450;500;550;600;650;700&family=Noto+Serif+SC:wght@500;600&display=swap";:root{font-family:DM Sans,sans-serif;color:#29342d;background:#fff8e7;font-synthesis:none;font-weight:400;--paper: #fff8e7;--cherry: #a93632;--green: #173d2e;--line: #e6d9bd;--muted: #787a70;--gold: #bda777;--serif: "Fraunces", Georgia, "Times New Roman", serif}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #b69b58;outline-offset:4px}button{transition:background .16s,color .16s,transform .16s,opacity .16s}a{color:inherit}button:disabled{opacity:.48}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400}.app{display:grid;grid-template-columns:88px minmax(0,1fr) 290px;grid-template-rows:76px minmax(0,1fr) 48px;min-height:100dvh}.nav-rail{grid-column:1;grid-row:1/4;border-right:1px solid var(--line);display:flex;align-items:center;flex-direction:column;margin:7px 0 7px 7px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);border-left:1px solid var(--line)}.brand{text-decoration:none;display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:27px;font:18px var(--serif);letter-spacing:2px;color:var(--green)}.brand-tile{font-family:"Noto Serif SC",Songti SC,serif;display:flex;flex-direction:column;justify-content:center;align-items:center;width:40px;height:60px;background:linear-gradient(110deg,#fff7df,#eee1c3);border:1px solid #c3b897;border-radius:8px;box-shadow:2px 4px #b6a783,3px 7px 7px #4443;font-size:23px;line-height:1.1;letter-spacing:0}.brand-tile em{font-style:normal;color:#a33e2c}.nav-rail nav{display:flex;flex-direction:column;align-items:center;gap:35px;margin-top:66px}.nav-item{border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:12px;font:14px var(--serif);padding:8px}.nav-item.active>span{display:grid;place-items:center;border-radius:50%;width:38px;height:38px;background:var(--green);color:#fff}.nav-item:not(.active):hover{color:#9a7137}.rail-bottom{margin-top:auto;margin-bottom:26px;font:14px "Noto Serif SC",serif;writing-mode:vertical-rl;letter-spacing:8px;color:#969589}.app-header{grid-column:2/4;display:flex;align-items:center;gap:26px;padding:0 30px;border-bottom:1px solid var(--line)}.club-brand{display:flex;gap:9px;white-space:nowrap;font-size:11px;letter-spacing:.25px}.club-brand b{color:var(--green);font-size:13px;letter-spacing:1.1px}.club-brand>span{color:#a4a193}.app-header h1{font-size:clamp(25px,2.35vw,38px);letter-spacing:-1.2px;text-align:center;flex:1;white-space:nowrap}.text-button{background:none;border:0;padding:4px 0;font-size:12px;display:inline-flex;align-items:center;gap:9px}.text-button:hover{text-decoration:underline}.how-to{white-space:nowrap}.avatar{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#a49c8b;color:#fff;font:24px var(--serif);flex-shrink:0}.avatar.human{background:var(--green)}.avatar.guest{width:34px;height:34px;font-size:20px;border:1px solid #d0c6b2;background:transparent;color:#363c31}.main-content{grid-column:2;padding:0 26px 12px;min-width:0}.table-heading{display:flex;align-items:center;justify-content:space-between;height:58px}.table-heading>div:first-child{display:flex;align-items:center;gap:25px}.table-heading h2{font-size:23px;letter-spacing:-.3px}.playing-status{font-size:12px;display:flex;gap:9px;align-items:center;color:#62695f}.playing-status i,.connection-dot{width:6px;height:6px;background:#3d714a;border-radius:50%;display:inline-block}.table-tools{display:flex;gap:15px}.icon-button{display:grid;place-items:center;background:transparent;border:0;padding:6px;border-radius:4px}.icon-button:hover{background:#e7e4da}.table-wrap{min-width:0}.mahjong-table{height:calc(100dvh - 268px);min-height:440px;max-height:840px;container-type:inline-size;position:relative;border-radius:15px;background:#123827 url(/assets/felt.png) center/680px;box-shadow:inset 0 0 60px #051408a6,inset 0 0 0 1px #152317,0 2px 4px #22332414;isolation:isolate;overflow:hidden}.felt-border{position:absolute;top:18px;right:18px;bottom:18px;left:18px;border:1px solid #ab985b99;border-radius:30px;pointer-events:none}.felt-border:after{content:"";position:absolute;top:4px;right:4px;bottom:4px;left:4px;border:1px solid #9d854c88;border-radius:27px}.tile{position:relative;display:inline-flex;width:4.8cqw;height:6.7cqw;min-width:0;flex-shrink:0;justify-content:center;align-items:center;padding:1px 1px 3px;background:linear-gradient(115deg,#fff7e2 8%,#eee6cf 90%);border:1px solid #e9dbc0;border-radius:5px;color:var(--green);box-shadow:0 3px #c7b995,0 5px #a99870,1px 7px 5px #0006;vertical-align:middle;-webkit-user-select:none;user-select:none}.tile svg{width:90%;height:90%;font-family:"Noto Serif SC",Songti SC,serif;pointer-events:none}.tile-corner{position:absolute;top:3px;left:4px;font-size:8px;font-family:var(--serif);line-height:1;z-index:1}.tile-small{width:2.5cqw;height:3.5cqw;border-radius:3px;box-shadow:0 2px #c2b38f,0 3px #968360,1px 5px 3px #0004;padding:1px}.tile-small .tile-corner{display:none}.tile-back{background:linear-gradient(120deg,#fcf2d8,#e8dcbb)}.back-inset{position:absolute;top:3px;right:3px;bottom:3px;left:3px;border:1px solid #fff6;border-radius:2px}.tile.selected{transform:translateY(-12px);box-shadow:0 3px #cfb468,0 5px #ad8e44,0 0 0 2px #d3b76e,0 12px 12px #0004}.player-hand button.tile:disabled{opacity:1}.player-hand button.tile:not(:disabled):hover{transform:translateY(-8px);background:#fffaea}.player-hand button.tile.selected:hover{transform:translateY(-12px)}.nameplate{display:flex;justify-content:center;align-items:center;gap:9px;border:1px solid #a38b527a;border-radius:7px;padding:5px 10px;color:#f8edd1;background:#10241dd9;width:max-content;min-height:32px;font:14px var(--serif);position:relative;box-shadow:0 2px 5px #0002;white-space:nowrap}.nameplate b{font:11px DM Sans,sans-serif;margin-left:8px}.wind-badge{border:1px solid #c9af6780;border-radius:50%;width:24px;height:24px;display:grid;place-items:center;font:19px "Noto Serif SC",serif;color:#eddeb7}.nameplate.active{border-color:#c6ac6c;box-shadow:0 0 0 2px #c6ac6c15}.nameplate.active .wind-badge{background:#c1a771;color:#173428}.nameplate i{position:absolute;top:-15px;color:#edc98f;font:8px DM Sans,sans-serif;letter-spacing:2px}.opponent{position:absolute;display:flex;flex-direction:column;align-items:center;gap:9px;z-index:2}.opponent-north{top:14px;left:50%;transform:translate(-50%)}.opponent-hand{display:flex;gap:2px}.opponent-hand .tile{width:3.1cqw;height:4.25cqw}.opponent-west{left:7%;top:50%;transform:translate(-50%,-50%) rotate(90deg)}.opponent-east{right:7%;top:50%;transform:translate(50%,-50%) rotate(-90deg)}.opponent-west .nameplate,.opponent-east .nameplate{font-size:12px;min-height:30px}.opponent-west .opponent-hand .tile,.opponent-east .opponent-hand .tile{width:2.9cqw;height:3.9cqw}.round-marker{position:absolute;top:48%;left:50%;transform:translate(-50%,-50%);width:14cqw;height:15cqw;max-height:158px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:7px;border-radius:14px;background:#13291ef2;color:#eddfb8;border:1.5px solid #c2a668;box-shadow:inset 0 0 0 3px #203829,0 3px #756337,0 7px 10px #0006}.round-wind{font:35px "Noto Serif SC",serif;color:#dec184}.round-name{text-transform:uppercase;font:15px var(--serif);letter-spacing:.5px}.tiles-left{font-size:10px;color:#e8e0c9}.round-sticks{font-size:9px;color:#b69c66;display:flex;gap:18px}.river{position:absolute;display:grid;grid-template-columns:repeat(6,1fr);width:max-content;gap:3px;z-index:1}.river .tile{width:2.3cqw;height:3.2cqw}.river-south{top:60%;left:50%;transform:translate(-50%)}.river-north{bottom:65%;left:50%;transform:translate(-50%) rotate(180deg)}.river-east{top:46%;left:65%;transform:translate(-50%,-50%) rotate(-90deg)}.river-west{top:46%;right:65%;transform:translate(50%,-50%) rotate(90deg)}.discard.latest .tile{outline:1px solid #e0c786;outline-offset:2px}.discard.claimed{opacity:.25}.discard.riichi-discard .tile{transform:rotate(90deg) scale(.8)}.player-area{position:absolute;bottom:12px;left:50%;width:90%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:17px;z-index:3}.player-hand{display:flex;align-items:center;justify-content:center;gap:3px;min-height:6.7cqw}.drawn-tile{margin-left:12px}.player-area>.nameplate{min-height:29px;padding:3px 10px;font-size:12px}.player-area .wind-badge{width:23px;height:23px;font-size:17px}.player-exposed{position:absolute;bottom:calc(100% + 8px);right:0;display:flex;gap:8px;align-items:center}.melds,.meld,.flowers{display:flex;gap:2px}.melds{gap:8px}.meld .tile,.flowers .tile{width:2.2cqw;height:3cqw}.opponent .melds:empty,.opponent .flowers:empty,.player-exposed:has(.melds:empty):has(.flowers:empty){display:none}.dora{position:absolute;left:18%;top:19%;display:flex;gap:6px;align-items:center;flex-direction:column}.dora>span{font-size:7px;letter-spacing:1.2px;color:#c7c4a9}.dora>div{display:flex;gap:3px}.dora .tile{width:2.1cqw;height:2.9cqw}.action-bar{margin-top:13px;padding:10px 17px;min-height:64px;border:1px solid var(--line);border-radius:6px;display:flex;align-items:center;justify-content:space-between;gap:12px}.turn-message{display:flex;gap:10px;align-items:center}.turn-dot{width:6px;height:6px;border-radius:50%;background:#b4b2a4}.turn-dot.is-you{background:#3e764f}.turn-message h2{font-size:21px;color:var(--green)}.turn-message p{font-size:11px;color:var(--muted);margin-top:4px}.actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}.button{border:1px solid transparent;background:transparent;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:11px 16px;font-size:12px;font-weight:500;min-height:40px}.button.primary{background:var(--green);color:#fffaf0}.button.primary:hover:not(:disabled){background:#26543f}.button.outline{border-color:#928773}.button.outline:hover{background:#ece8dd}.button.subtle{background:#e9e5d9;font-size:11px}.button.riichi-button{background:#9d3e31;color:#fff}.button.full{width:100%}.discard-button{min-width:154px}.discard-button span{margin-left:10px;opacity:.5}.mini-meld{display:flex;gap:1px}.mini-meld .tile{width:17px;height:23px}.table-tip{font-size:10px;color:#88887d;margin-top:10px;text-align:center}.table-sidebar{grid-column:3;grid-row:2;padding:23px 25px 10px;border-left:1px solid var(--line);display:flex;flex-direction:column;min-width:0}.sidebar-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:25px}.sidebar-title h2{font-size:24px}.segmented{display:flex;border:1px solid #cfc4ae;border-radius:5px;overflow:hidden}.segmented button{flex:1;border:0;background:transparent;font-size:12px;padding:10px 7px}.segmented button.chosen{background:var(--green);color:#fff}.segmented button:hover:not(.chosen){background:#eae6db}.table-subtitle{font-size:12px;margin:19px 0;color:#686d62;display:flex;gap:8px}.seat-list{border-top:1px solid var(--line)}.seat-row{display:flex;align-items:center;gap:11px;min-height:75px;border-bottom:1px solid var(--line)}.seat-info{flex:1;min-width:0}.seat-name{font:19px var(--serif);display:flex;align-items:center;gap:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.seat-name small{font:8px DM Sans,sans-serif;background:#dfe4d8;padding:3px 4px;border-radius:2px;color:#3d5140}.seat-wind{font-family:"Noto Serif SC",serif;font-size:15px;display:flex;gap:5px;align-items:center;margin-top:4px}.seat-wind>span{font:9px DM Sans,sans-serif;color:#85877b}.seat-wind b{font:8px sans-serif;color:#993d33;margin-left:3px}.seat-score{font-size:12px;font-variant-numeric:tabular-nums}.invite-button{margin-top:22px}.join-link{font-size:10px;justify-content:center;margin-top:12px;color:#818376}.activity{margin-top:23px;padding-top:17px;border-top:1px solid var(--line);min-height:150px}.activity h3{font-size:17px;margin-bottom:15px}.activity ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px}.activity li{display:flex;gap:12px;align-items:center;font-size:10px;line-height:1.5;color:#646b60;min-height:15px}.activity time{font-size:9px;color:#8d8c7f;flex-shrink:0}.activity li>span{display:flex;gap:5px;align-items:center}.activity .tile{width:15px;height:20px;box-shadow:0 1px #c7b995;border-radius:2px}.sidebar-bottom{display:flex;align-items:center;gap:6px;font-size:9px;color:#909285;margin-top:auto;padding-top:20px}.sidebar-bottom>span:last-child:not(.connection-dot){margin-left:auto}.app-footer{grid-column:2/4;grid-row:3;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 30px;font-size:11px;color:#7e8074}.app-footer .text-button{font-size:10px}.app-footer .text-button span{color:#b5b1a3}.dialog{padding:0;border:1px solid #ded7c6;border-radius:14px;background:var(--paper);color:#29342d;width:min(460px,calc(100vw - 28px));max-height:90dvh;box-shadow:0 24px 100px #0a1c2366}.dialog::backdrop{background:#0c211bbb;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.dialog-wide{width:min(650px,calc(100vw - 28px))}.dialog-body{padding:29px}.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:22px}.dialog-heading h2{font-size:29px;letter-spacing:-.6px}.intro{font:16px/1.55 var(--serif);color:#77796c;margin-bottom:24px}.field-label{display:block;font-size:11px;font-weight:600;margin:19px 0 9px}.field-label input,.field-label select{display:block;width:100%;margin-top:9px;border:1px solid #cfc7b5;border-radius:5px;background:#fbfaf6;padding:12px;color:#354234;font-size:13px}.mode-options{display:flex;gap:10px}.mode{background:none;border:1px solid #d8d1c2;border-radius:6px;padding:18px 12px;flex:1;display:flex;flex-direction:column;gap:9px;text-align:left}.mode.chosen{background:#e8ede4;border-color:#59745a}.mode strong{font-size:13px}.mode small{font-size:10px;color:#7b8072}.fine-print{font-size:11px;color:#808374;line-height:1.7;margin:17px 0}.form-error{font-size:12px;color:#a13c2f;line-height:1.5;margin:15px 0}.rules-content{font-size:13px;line-height:1.7}.rules-content .intro{margin-top:20px}.rules-content h3{font-size:20px;margin-top:25px;margin-bottom:8px}.rules-content p{margin-bottom:12px}.rules-content table{width:100%;border-collapse:collapse;margin:17px 0}.rules-content td{padding:9px 0;border-bottom:1px solid var(--line);font-size:11px}.rules-content td:last-child{white-space:nowrap;text-align:right;padding-left:15px}.example-hand{display:flex;gap:4px;margin:23px 0}.example-hand .tile{width:37px;height:52px}.example-hand .tile:nth-child(4),.example-hand .tile:nth-child(7){margin-left:10px}.setting-row{display:flex;align-items:center;justify-content:space-between;padding:20px 0;border-bottom:1px solid var(--line)}.setting-row strong{display:block;font-size:13px}.setting-row small{display:block;color:#838575;font-size:11px;margin-top:5px}.setting-row input{accent-color:var(--green);width:19px;height:19px}.loading-screen,.lobby{min-height:530px;height:calc(100dvh - 191px);display:flex;flex-direction:column;justify-content:center;align-items:center;gap:22px;text-align:center}.loading-screen{border:1px solid var(--line);border-radius:12px}.loading-screen h2{font-size:26px}.loading-screen p{font-size:13px;color:var(--muted)}.lobby{background:#153c2c url(/assets/felt.png) center/700px;border-radius:14px;color:#eee9d9;padding:30px}.lobby h2{font-size:45px;line-height:1.2}.lobby p{font-size:12px;line-height:1.8;color:#c0c9b9}.lobby-glyph{font:38px "Noto Serif SC",serif;color:#d0b67c}.lobby .outline{color:#eee3c8;border-color:#bba46d}.lobby .primary{background:#e8dfc5;color:#1b402e}.lobby-seats{display:flex;gap:30px;margin:10px 0}.lobby-seats>div{display:flex;flex-direction:column;align-items:center;gap:9px}.lobby-seats strong{font-size:12px;font-weight:400}.lobby-seats small{font-size:9px;color:#b1c1a9}.lobby-seats .avatar{border:1px solid #c8b274;background:#204938;color:#dfd2ad}.room-code{font-size:13px;letter-spacing:4px;color:#cfc09c}.invite-code{display:block;padding:25px;text-align:center;letter-spacing:5px;background:#e8e5d9;margin-bottom:20px}.error-banner{display:flex;gap:15px;padding:12px;margin-bottom:12px;border:1px solid #c6a17b;background:#f2e7d7;font-size:12px;align-items:center;border-radius:4px}.error-banner>span{flex:1}.result-summary{text-align:center}.result-flower{font:44px "Noto Serif SC",serif;color:#a58d4f}.result-summary h3{font-size:32px;margin:10px}.result-summary>p{font-size:13px;color:var(--muted)}.result-summary>p span{margin:0 6px}.result-hand{display:flex;justify-content:center;gap:3px;margin:30px 0}.result-hand .tile{width:clamp(17px,3.3vw,35px);height:clamp(25px,4.6vw,49px)}.pattern-list{display:grid;grid-template-columns:1fr 1fr;gap:8px 22px;margin:25px 0}.pattern-list>span{font-size:11px;display:flex;justify-content:space-between;gap:8px;text-align:left;color:#6c7667}.pattern-list b{font-weight:400;color:#333f30;white-space:nowrap}.result-scores{display:flex;justify-content:space-between;margin:25px 0;padding:20px 0;border-block:1px solid var(--line);gap:15px}.result-scores>div{display:flex;flex-direction:column;gap:8px;font-size:12px}.result-scores b{font-size:18px;font-weight:400}.positive{color:#39714a}.table-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:20px;background:#123426;color:#ded4b6}.focus-mode{grid-template-columns:88px minmax(0,1fr)}.focus-mode .table-sidebar{display:none}.focus-mode .app-header,.focus-mode .app-footer{grid-column:2}.focus-mode .mahjong-table,.focus-mode .table-wrap{max-width:1200px;margin-inline:auto}@media(min-width:1600px){.app{grid-template-columns:100px minmax(0,1fr) 320px}.main-content,.table-sidebar{padding-inline:30px}.seat-row{min-height:84px}.activity li{font-size:11px}.table-heading{height:68px}.club-brand{font-size:12px}}@media(max-width:1200px){.app{grid-template-columns:72px minmax(0,1fr) 240px}.app-header{gap:18px;padding-inline:22px}.club-brand{font-size:9px}.app-header h1{font-size:27px;letter-spacing:-.8px}.how-to{display:none}.main-content{padding-inline:18px}.table-sidebar{padding:24px 18px 12px}.seat-row{gap:8px}.seat-row .avatar{width:34px;height:34px;font-size:21px}.seat-name{font-size:16px}.seat-name small{font-size:7px}.seat-score{font-size:11px}.table-heading h2{font-size:21px}.playing-status{font-size:10px}.table-heading>div:first-child{gap:15px}.nameplate{font-size:12px;padding:4px 8px;gap:5px}.nameplate b{font-size:9px}.wind-badge{width:22px;height:22px;font-size:17px}.round-marker{width:16cqw;height:18cqw}.round-wind{font-size:30px}.round-name{font-size:13px}.tile-corner{font-size:7px;top:2px;left:3px}.action-bar{padding:12px}.turn-message h2{font-size:19px}.turn-message p{font-size:10px}.discard-button{min-width:125px}.table-tip{font-size:9px}.mahjong-table{min-height:440px}}@media(max-width:980px){.app{grid-template-columns:64px minmax(0,1fr);grid-template-rows:76px auto auto 48px}.app-header{grid-column:2}.app-header h1{font-size:26px}.club-brand{display:none}.table-sidebar{grid-column:2;grid-row:3;border-left:0;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:12px 24px;padding:22px}.sidebar-title,.table-subtitle{margin:0}.seat-list{grid-column:1;grid-row:3/7}.activity{grid-column:2;grid-row:3/8;margin-top:0}.invite-button,.join-link{margin:0;grid-column:1}.sidebar-bottom{grid-column:1/3;padding:0}.app-footer{grid-row:4;grid-column:2}.nav-rail{grid-row:1/5}.mahjong-table{height:calc(100dvh - 235px);min-height:530px;max-height:730px}.table-heading{height:58px}.focus-mode .app-footer{grid-row:3}.focus-mode .main-content{padding-bottom:10px}.focus-mode{grid-template-columns:64px minmax(0,1fr)}.nav-rail .brand{font-size:14px}.brand-tile{width:33px;height:50px;font-size:21px}.nav-item{font-size:12px}.nav-item svg{width:23px}.nav-rail nav{gap:25px}}@media(max-width:600px){.app,.focus-mode{display:flex;flex-direction:column;min-height:100dvh}.nav-rail{display:none}.app-header{height:72px;flex-shrink:0;padding:0 15px;gap:12px}.app-header h1{font-size:25px;letter-spacing:-.75px;text-align:left}.app-header .guest{width:30px;height:30px;font-size:17px}.main-content{padding:0 10px 15px}.table-heading{height:54px}.table-heading h2{font-size:20px}.playing-status{font-size:9px;gap:5px}.table-heading>div:first-child{gap:10px}.table-tools{gap:5px}.icon-button svg{width:18px}.mahjong-table{height:490px;min-height:0;max-height:none;border-radius:10px;background-size:500px}.felt-border{top:10px;right:10px;bottom:10px;left:10px;border-radius:21px}.felt-border:after{top:3px;right:3px;bottom:3px;left:3px;border-radius:18px}.opponent-north{top:12px;gap:9px}.opponent-hand .tile{width:4cqw;height:5.6cqw}.opponent-west{left:8%;top:45%}.opponent-east{right:8%;top:45%}.opponent-west .opponent-hand .tile,.opponent-east .opponent-hand .tile{width:4cqw;height:5.6cqw}.opponent-west .nameplate,.opponent-east .nameplate{font-size:10px}.nameplate{min-height:26px;font-size:11px;gap:6px;padding:3px 7px}.nameplate b{font-size:9px;margin-left:3px}.wind-badge{width:19px;height:19px;font-size:15px}.player-area{bottom:12px;gap:14px;width:97%}.player-hand{gap:2px;flex-wrap:wrap;width:100%;padding:0 3px}.player-hand .tile{width:5.8cqw;height:8.7cqw;border-radius:3px;box-shadow:0 2px #c7b995,0 4px #a99870,1px 5px 4px #0006}.player-hand .drawn-tile{margin-left:5px}.tile-corner{font-size:6px;top:2px;left:2px}.player-area>.nameplate{font-size:11px}.round-marker{top:44%;width:22cqw;height:28cqw;gap:5px;border-radius:10px}.round-wind{font-size:29px}.round-name{font-size:12px}.tiles-left{font-size:9px}.round-sticks{font-size:8px;gap:12px}.river .tile{width:3.8cqw;height:5.4cqw}.river{gap:2px}.river-north{bottom:70%}.river-south{top:59%}.river-east{left:70%;top:44%}.river-west{right:70%;top:44%}.dora{left:20%;top:19%}.dora>span{font-size:5px;letter-spacing:.5px}.dora .tile{width:3.8cqw;height:5.3cqw}.meld .tile,.flowers .tile{width:3.5cqw;height:5cqw}.player-exposed{bottom:calc(100% + 12px)}.action-bar{padding:13px 11px;margin-top:10px;align-items:center;gap:8px;min-height:70px}.turn-message{gap:6px}.turn-message h2{font-size:18px}.turn-message p{font-size:9px;max-width:170px;line-height:1.5}.button{padding:10px 12px;font-size:11px;gap:7px}.discard-button{min-width:115px}.table-tip{font-size:9px;line-height:1.5;padding:0 10px}.table-sidebar{padding:20px;gap:15px;grid-template-columns:1fr}.sidebar-title{grid-column:1;grid-row:auto}.table-sidebar>.segmented{grid-row:2}.table-subtitle{grid-row:3}.seat-list{grid-column:1;grid-row:4}.seat-row{min-height:66px}.seat-row .avatar{width:38px;height:38px}.seat-name{font-size:18px}.seat-name small{font-size:8px}.seat-score{font-size:13px}.invite-button{grid-row:5}.join-link{grid-row:6}.activity{grid-column:1;grid-row:7}.sidebar-bottom{grid-column:1;grid-row:8}.app-footer{flex-direction:column;gap:10px;justify-content:center;min-height:72px;padding:14px;font-size:10px}.dialog-body{padding:23px}.dialog-heading h2{font-size:25px}.dialog{max-height:92dvh}.lobby{height:620px;min-height:0;padding:20px}.lobby h2{font-size:35px}.lobby-seats{gap:17px}.lobby-seats strong{font-size:10px}.lobby-seats .avatar{width:36px;height:36px;font-size:20px}.lobby-seats small{font-size:8px}.error-banner{font-size:10px;flex-wrap:wrap}.pattern-list{grid-template-columns:1fr}.example-hand .tile{width:30px;height:42px}.result-scores{gap:8px}.result-scores>div{font-size:10px}.result-scores b{font-size:15px}.loading-screen{min-height:500px;height:60vh}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}.opponent-east .melds,.opponent-west .melds{position:absolute;bottom:calc(100% + 7px)}.opponent-east .flowers,.opponent-west .flowers{position:absolute;bottom:calc(100% + 7px);right:0}.opponent-east:has(.melds:not(:empty)) .flowers,.opponent-west:has(.melds:not(:empty)) .flowers{bottom:calc(100% + 38px)}.player-hand .tile{width:5.45cqw;height:7.65cqw}.seat-score,.table-subtitle{font-size:13px}.activity li{font-size:11px}.activity time{font-size:10px}.table-sidebar .button,.table-sidebar .segmented button{font-size:13px}.result-melds{display:flex;justify-content:center;gap:12px;margin:16px 0}.result-melds>div{display:flex;gap:2px}.result-melds .tile{width:30px;height:42px}@media(max-width:600px){.player-hand .tile{width:5.8cqw;height:8.7cqw}}@media(max-width:600px){.opponent-west{left:13%}.opponent-east{right:13%}}.river.long-river .tile{width:1.7cqw;height:2.35cqw}@media(max-width:600px){.river .tile{width:3.6cqw;height:5cqw}.river-north{bottom:68%}.river-east{left:73%}.river-west{right:73%}.river.long-river .tile{width:2.5cqw;height:3.5cqw}}@media(min-width:981px){.mahjong-table{height:calc(100dvh - 276px)}.table-sidebar{min-height:0;max-height:calc(100dvh - 124px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:#c9c7b9 transparent}.table-sidebar>*{flex-shrink:0}.table-sidebar .activity{flex:1;min-height:100px;overflow-y:auto;scrollbar-width:thin}.sidebar-bottom{flex-shrink:0}}.account-panel,.account-panel form{display:grid;gap:18px}.account-panel p{margin:0}.account-identity{display:flex;align-items:center;gap:14px;padding:16px;background:#f0eee7;border-radius:12px}.account-identity small{display:block;margin-top:5px;overflow-wrap:anywhere;color:#6c756e}.account-actions{display:flex;justify-content:space-between;gap:12px}.account-message{padding:12px 16px;background:#edf2e9;color:#315c44;border-radius:8px;font-size:14px}.saved-tables{border-top:1px solid var(--line, #dddacf);padding-top:14px}.saved-tables h3{margin:0 0 12px;font-size:18px}.saved-table{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left;background:#f1efe8;border:1px solid #dfddd3;border-radius:10px;padding:14px;color:#294f3b;margin-bottom:8px;cursor:pointer}.saved-table strong{display:block;font-size:14px}.saved-table small{display:block;margin-top:5px;color:#6b746b;font-size:11px}.saved-table:hover{background:#e7eddf}.format-note{margin:-12px 0 20px;color:#687568;font-size:11px}.hands-2 .river{grid-template-columns:repeat(8,auto);top:50%;bottom:auto}.hands-2 .river-south{left:26%;transform:translate(-50%,-50%)}.hands-2 .river-north{left:74%;transform:translate(-50%,-50%) rotate(180deg)}.brand{color:var(--cherry);gap:12px;letter-spacing:-1px}.brand-mark{width:54px;height:65px;transform:rotate(-5deg)}.brand-wordmark{font:650 34px/.87 var(--serif);text-align:center}.brand-wordmark small{display:block;font:600 8px/1.5 DM Sans,sans-serif;letter-spacing:2px;margin-top:10px}.club-brand{display:none}.app-header h1{color:var(--cherry);font-weight:650;font-size:clamp(28px,3vw,48px)}.nav-rail{border-radius:14px}.nav-rail nav{margin-top:48px;gap:25px}.nav-item{font-family:DM Sans,sans-serif}.nav-item.active{color:var(--cherry)}.nav-item.active>span,.button.primary,.segmented .chosen{background:var(--cherry);color:#fff8e7}.button.primary:hover{background:#8b2927}.invite-button{border-color:var(--cherry);color:var(--cherry);border-radius:8px}.rail-bottom{writing-mode:horizontal-tb;letter-spacing:0;font:11px DM Sans,sans-serif;color:var(--cherry);border:0;background:none;padding:8px}.app-footer{background-image:repeating-linear-gradient(0deg,#a9363208 0 8px,transparent 8px 16px),repeating-linear-gradient(90deg,#a9363208 0 8px,transparent 8px 16px)}.app-footer .brand-footer{color:#4f5748;font-family:var(--serif);font-size:14px}.table-heading h2,.sidebar-title h2,.dialog h2{font-weight:550}.brand-story{display:grid;gap:18px}.brand-story>img{width:68px;height:82px;margin:0 auto;transform:rotate(-7deg)}.brand-story p:not(.intro){font-size:14px;line-height:1.75;color:#555d50}@media(min-width:1201px){.app{grid-template-columns:128px minmax(0,1fr) 290px;grid-template-rows:96px minmax(0,1fr) 48px}.focus-mode{grid-template-columns:128px minmax(0,1fr)}.brand{margin-top:30px;gap:20px}.brand-mark{width:64px;height:77px}.brand-wordmark{font-size:44px}.brand-wordmark small{font-size:10px}.mahjong-table{height:calc(100dvh - 296px)}}@media(max-width:980px){.brand-wordmark{font-size:25px}.brand-wordmark small{font-size:6px;letter-spacing:1px}.brand-mark{width:42px;height:51px}}@media(max-width:640px){.brand-wordmark{display:none}.brand-mark{width:33px;height:40px}.club-brand{display:flex}.club-brand b{font:600 22px/.85 var(--serif);color:var(--cherry);letter-spacing:-1px}.club-brand small{display:block;font:600 7px/1 DM Sans,sans-serif;letter-spacing:2px;margin-top:7px}.app-header h1{display:none}.app-header .club-brand{flex:1}.app-footer .brand-footer{font-size:11px}.rail-bottom{font-size:10px}}.brand-footer{border:0;background:none;padding:0;text-align:left}.brand-footer:hover{text-decoration:underline}.club-brand img{width:32px;height:39px}.button.primary:hover:not(:disabled){background:#8b2927}.segmented button.chosen{background:var(--cherry)}.seat-row:nth-child(2) .avatar{background:#a84a50}.seat-row:nth-child(3) .avatar{background:#796080}.seat-row:nth-child(4) .avatar{background:#93641f}.button.outline.invite-button{border-color:var(--cherry)}.brand-story .intro{margin-bottom:0}
