.playful-game.mahjong-app{--play-accent:#1c7a52;--play-shadow:#b89a62;--play-soft:#f4ecd8;--play-paper:#fffaf0;--play-ink:#2b2016;--mj-gold:#e2b24a;--mj-red:#b8262f;--mj-muted:#6e5a42;background:#24170f;touch-action:none;-moz-user-select:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;overflow:hidden;overflow:clip;height:100dvh}.mahjong-app .mj-scene{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}.mahjong-app .pp-lobby{--pp-accent:#e2b24a;--pp-bg:rgba(22,42,32,0.95)}.mahjong-app:is([data-phase=menu],[data-phase=loading],[data-phase=results]) :is(.mj-top,.mj-bottom,.mj-status,.mj-seats,.mj-handover,.mj-wall-count){visibility:hidden}.mahjong-app[data-phase=lobby] :is(.mj-bottom,.mj-status,.mj-seats,.mj-handover,.mj-score,.mj-wall-count){visibility:hidden}.mahjong-app:not([data-play=online]) .mj-online-only,.mahjong-app[data-play=online] .mj-local-only{display:none}.mahjong-app .mj-top{position:absolute;z-index:6;top:max(8px,env(safe-area-inset-top,0px));left:max(10px,env(safe-area-inset-left,0px));right:max(10px,env(safe-area-inset-right,0px));display:flex;justify-content:space-between;align-items:flex-start;gap:8px;pointer-events:none}.mahjong-app .mj-score{display:flex;align-items:center;gap:8px;min-width:0;padding:6px 12px;border:3px solid #fff3d6;border-radius:16px;background:rgba(255,250,240,.94);box-shadow:0 3px 0 var(--play-shadow)}.mahjong-app .mj-hand-no{font-size:13px;font-weight:800;color:var(--mj-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mahjong-app .mj-points{font-size:20px;color:var(--play-accent);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;min-width:2ch;text-align:right}.mahjong-app .mj-top-btns{display:flex;gap:6px;pointer-events:auto;flex:0 0 auto}.mahjong-app .mj-icon-btn{width:44px;height:44px;display:grid;place-items:center;padding:0;cursor:pointer;font-size:18px;border:3px solid #fff3d6;border-radius:14px;background:var(--play-paper);color:var(--play-ink);box-shadow:0 3px 0 var(--play-shadow)}.mahjong-app #mj-mute[aria-pressed=true] .on,.mahjong-app .mj-icon-btn .off{display:none}.mahjong-app #mj-mute[aria-pressed=true] .off{display:inline}.mahjong-app #mj-help[aria-pressed=false]{filter:grayscale(1);opacity:.7}.mahjong-app .mj-status{position:absolute;z-index:5;left:50%;bottom:calc(var(--hand-h, 150px) + max(10px, env(safe-area-inset-bottom, 0px)));transform:translateX(-50%);padding:5px 16px;border-radius:999px;border:2px solid var(--c,#fff);background:rgba(20,34,26,.84);color:#fff3d6;font-size:15px;font-weight:800;white-space:nowrap;pointer-events:none;max-width:calc(100vw - 24px);overflow:hidden;text-overflow:ellipsis}.mahjong-app .mj-status.mine{background:var(--mj-gold);color:#2b2016;border-color:#fff3d6;box-shadow:0 0 18px rgba(226,178,74,.7)}.mahjong-app .mj-status.pop{animation:mj-banner-in .3s ease-out}.mahjong-app .mj-status[hidden]{display:none}.mahjong-app .mj-wall-count{position:absolute;z-index:4;left:max(10px,env(safe-area-inset-left,0px));top:calc(max(8px, env(safe-area-inset-top, 0px)) + 54px);pointer-events:none;padding:3px 10px;border-radius:999px;background:rgba(20,34,26,.78);color:#fff3d6;font-weight:800;font-size:13px}.mahjong-app .mj-wall-count:empty{display:none}.mahjong-app .mj-seats{position:absolute;inset:0;z-index:4;pointer-events:none}.mahjong-app .mj-seat{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;gap:6px;padding:4px 10px 4px 4px;border:2px solid #fff3d6;border-radius:999px;background:rgba(255,250,240,.93);box-shadow:0 3px 0 rgba(0,0,0,.25);transition:transform .2s,opacity .2s,box-shadow .2s;max-width:46vw}.mahjong-app .mj-seat.me{left:max(10px,env(safe-area-inset-left,0px))!important;top:auto!important;bottom:calc(var(--hand-h, 150px) + max(6px, env(safe-area-inset-bottom, 0px)));transform:none}.mahjong-app .mj-seat.turn{box-shadow:0 0 0 3px var(--c),0 0 22px var(--c);transform:translate(-50%,-50%) scale(1.06)}.mahjong-app .mj-seat.me.turn{transform:scale(1.04)}.mahjong-app .mj-seat.passed{opacity:.6}.mahjong-app .mj-ava{position:relative;display:grid;place-items:center;width:40px;height:40px;flex:0 0 auto;border-radius:50%;background:#fff;box-shadow:inset 0 0 0 3px var(--c)}.mahjong-app .mj-ava i{font-style:normal;font-size:22px;line-height:1}.mahjong-app .mj-wind{position:absolute;right:-6px;bottom:-4px;min-width:18px;height:18px;padding:0 3px;border-radius:6px;background:#2b2016;color:#fff3d6;font-size:11px;line-height:18px;text-align:center}.mahjong-app .mj-seat.dealer .mj-wind{background:var(--mj-red);box-shadow:0 0 0 2px var(--mj-gold)}.mahjong-app .mj-ring{position:absolute;inset:-4px;width:48px;height:48px;transform:rotate(-90deg);pointer-events:none}.mahjong-app .mj-ring circle{fill:none;stroke:var(--c);stroke-width:4;stroke-linecap:round;transition:stroke-dashoffset .12s linear}.mahjong-app .mj-seat.urgent .mj-ring circle{stroke:#e0342a}.mahjong-app .mj-seat-main{display:flex;flex-direction:column;min-width:0}.mahjong-app .mj-seat-name{font-size:13px;color:var(--play-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:110px}.mahjong-app .mj-seat-meta{display:flex;gap:6px;align-items:center;font-size:12px;font-weight:800;color:var(--mj-muted)}.mahjong-app .mj-count{display:inline-flex;align-items:center;gap:3px;padding:0 6px;border-radius:8px;background:var(--play-soft)}.mahjong-app .mj-mini{display:inline-block;width:8px;height:11px;border-radius:2px;background:linear-gradient(180deg,#f1e7cc 55%,#1d8a5c 0);box-shadow:inset 0 0 0 1px #b89a62}.mahjong-app .mj-pts{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.mahjong-app .mj-tag{position:absolute;top:-12px;right:-6px;padding:1px 8px;border-radius:999px;background:var(--mj-gold);color:#2b2016;font-size:11.5px;font-weight:800}.mahjong-app .mj-bottom{position:absolute;left:0;right:0;bottom:max(4px,env(safe-area-inset-bottom,0px));z-index:5;display:flex;flex-direction:column;align-items:center;pointer-events:none}.mahjong-app[data-spectator=true] :is(.mj-actions,.mj-rack,.mj-reacts,.mj-keys,.mj-claim,.mj-ready){display:none}.mahjong-app .mj-claim{position:relative;display:flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:8px;margin:0 8px 8px;padding:8px 12px 12px;border:3px solid #fff3d6;border-radius:20px;background:rgba(255,250,240,.97);box-shadow:0 5px 0 var(--play-shadow),0 0 28px rgba(226,178,74,.5);pointer-events:auto;animation:mj-claim-in .22s ease-out;max-width:calc(100vw - 16px);overflow:hidden}.mahjong-app .mj-claim[hidden]{display:none}.mahjong-app .mj-claim-tile canvas{display:block}.mahjong-app .mj-claim-text{font-weight:800;font-size:15px;color:var(--play-ink)}.mahjong-app .mj-claim-btns{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}.mahjong-app .mj-cb{min-height:46px;min-width:64px;padding:6px 14px;border:3px solid #fff3d6;border-radius:14px;cursor:pointer;font:800 16px/1 Playful,Avenir Next,sans-serif;color:#fff;box-shadow:0 4px 0 rgba(0,0,0,.28)}.mahjong-app .mj-cb small{display:block;font-size:11px;opacity:.9;margin-top:2px}.mahjong-app .mj-cb:active{transform:translateY(2px)}.mahjong-app .mj-cb-win{background:var(--mj-red);font-size:18px;animation:mj-pulse .6s ease-in-out infinite alternate}.mahjong-app .mj-cb-kong{background:#c2541f}.mahjong-app .mj-cb-pung{background:#1c7a52}.mahjong-app .mj-cb-chow{background:#2c6fbf}.mahjong-app .mj-cb-pass{background:#5a4a3a}.mahjong-app .mj-claim-bar{position:absolute;left:10px;right:10px;bottom:4px;height:4px;border-radius:2px;background:var(--mj-gold);transform-origin:left center}.mahjong-app .mj-ready{margin:0 8px 6px;padding:4px 12px;border-radius:999px;background:rgba(20,34,26,.84);color:#c9f2d8;font-size:13px;font-weight:800;max-width:calc(100vw - 24px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mahjong-app .mj-ready[hidden]{display:none}.mahjong-app .mj-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;pointer-events:auto;padding:0 10px 6px;visibility:hidden}.mahjong-app.mj-acting .mj-actions{visibility:visible}.mahjong-app .mj-act{min-height:46px;min-width:64px;padding:6px 16px;border:3px solid #fff3d6;border-radius:16px;cursor:pointer;font:800 16px/1 Playful,Avenir Next,sans-serif;box-shadow:0 4px 0 rgba(0,0,0,.3);transition:transform .12s,opacity .15s}.mahjong-app .mj-act[hidden]{display:none}.mahjong-app .mj-act:disabled{opacity:.45;cursor:default}.mahjong-app .mj-act:not(:disabled):active{transform:translateY(2px)}.mahjong-app .mj-act-play{background:#1c7a52;color:#fff;min-width:110px}.mahjong-app .mj-act-play.ready{background:#ffb52e;color:#2b2016}.mahjong-app .mj-act-win{background:var(--mj-red);color:#fff;animation:mj-pulse .6s ease-in-out infinite alternate}.mahjong-app .mj-act-kong{background:#c2541f;color:#fff}.mahjong-app .mj-rack{position:relative;width:100%;height:110px;pointer-events:auto;touch-action:none}.mahjong-app .mj-tile{position:absolute;bottom:8px;padding:0;border:0;background:transparent;cursor:pointer;border-radius:12%;transform:translateY(var(--lift,0));transition:transform .14s ease-out,filter .15s,box-shadow .15s;touch-action:none;filter:drop-shadow(0 2px 2px rgba(0,0,0,.35))}.mahjong-app .mj-tile canvas{display:block;pointer-events:none}.mahjong-app .mj-tile.sel{filter:drop-shadow(0 0 0 #fff) drop-shadow(0 0 6px var(--mj-gold)) drop-shadow(0 8px 10px rgba(0,0,0,.4))}.mahjong-app .mj-rack:not(.active) .mj-tile{filter:drop-shadow(0 2px 2px rgba(0,0,0,.35)) brightness(.93)}.mahjong-app .mj-tile.fresh:before{content:"";position:absolute;left:15%;right:15%;top:-7px;height:4px;border-radius:2px;background:#4fc3f7}.mahjong-app .mj-tile.ready:after{content:"";position:absolute;left:50%;bottom:-7px;width:7px;height:7px;margin-left:-3.5px;border-radius:50%;background:#39d07a;box-shadow:0 0 6px #39d07a}.mahjong-app .mj-tile.hint{outline:2px dashed rgba(255,213,102,.9);outline-offset:1px}.mahjong-app .mj-tile:focus-visible{outline:3px solid #4fc3f7;outline-offset:2px}.mahjong-app .mj-rack.arming .mj-tile.sel{filter:drop-shadow(0 0 10px #ffb52e) drop-shadow(0 0 4px #ffb52e)}.mahjong-app .mj-rack.sent .mj-tile.sel{opacity:.5}.mahjong-app .mj-rack.dealing .mj-tile{animation:mj-deal .45s ease-out backwards}.mahjong-app .mj-keys{margin:0;font-size:11.5px;font-weight:700;color:rgba(255,243,214,.75);pointer-events:none;text-align:center;padding:0 8px}@media (hover:none),(pointer:coarse){.mahjong-app .mj-keys{display:none}}.mahjong-app .mj-reacts{position:absolute;z-index:5;right:max(8px,env(safe-area-inset-right,0px));bottom:calc(var(--hand-h, 150px) + 4px);display:flex;flex-direction:column;gap:4px;pointer-events:auto}.mahjong-app:is([data-phase=menu],[data-phase=loading],[data-phase=results],[data-phase=lobby]) .mj-reacts{visibility:hidden}.mahjong-app .mj-reacts button{width:44px;height:44px;border:2px solid #fff3d6;border-radius:14px;background:rgba(255,250,240,.9);font-size:20px;cursor:pointer;padding:0}.mahjong-app .mj-reacts button:active{transform:scale(.9)}.mahjong-app .mj-flash{position:absolute;inset:0;z-index:7;pointer-events:none;background:radial-gradient(circle at 50% 45%,rgba(255,250,220,.8),rgba(255,230,140,.3) 45%,transparent 75%);opacity:0}.mahjong-app .mj-flash.on{animation:mj-flash .6s ease-out}.mahjong-app .mj-banner{position:absolute;z-index:8;left:50%;top:38%;transform:translate(-50%,-50%) scale(.6);opacity:0;pointer-events:none;white-space:nowrap;font:800 clamp(40px,11vw,104px)/1 Playful,Avenir Next,sans-serif;color:#ffd34d;-webkit-text-stroke:6px #0f4a30;paint-order:stroke fill;text-shadow:0 7px 0 #0f4a30,0 0 30px rgba(255,210,90,.75)}.mahjong-app .mj-banner.show{animation:mj-callout 1.4s cubic-bezier(.2,1.4,.4,1) forwards}.mahjong-app .mj-banner[data-kind=win]{font-size:clamp(30px,8vw,72px);color:#fffaf0;-webkit-text-stroke-color:#8a1c1c;text-shadow:0 5px 0 #8a1c1c,0 0 34px rgba(255,120,60,.8);white-space:normal;text-align:center;width:max-content;max-width:calc(100vw - 24px)}.mahjong-app .mj-banner[data-kind=draw]{font-size:clamp(26px,6vw,56px);color:#fff3d6;-webkit-text-stroke-color:#3a2a1a;text-shadow:0 5px 0 #3a2a1a}.mahjong-app .mj-countdown{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);z-index:6;pointer-events:none;font:800 clamp(64px,16vw,130px)/1 Playful,Avenir Next,sans-serif;color:#fffaf0;-webkit-text-stroke:3px var(--play-accent);paint-order:stroke fill;text-shadow:0 7px 0 var(--play-accent)}.mahjong-app .mj-countdown.tick{animation:mj-count .6s ease-out}.mahjong-app .mj-toast{position:absolute;left:50%;top:calc(max(8px, env(safe-area-inset-top, 0px)) + 92px);z-index:7;pointer-events:none;transform:translate(-50%,-10px);opacity:0;padding:7px 16px;border:3px solid #fff3d6;border-radius:999px;white-space:nowrap;max-width:calc(100vw - 24px);overflow:hidden;text-overflow:ellipsis;background:var(--play-paper);color:var(--play-ink);font-size:15px;font-weight:800;box-shadow:0 4px 0 var(--play-shadow);transition:opacity .18s,transform .18s}.mahjong-app .mj-toast.show{opacity:1;transform:translate(-50%)}.mahjong-app .mj-toast[data-tone=bad]{background:#ffe1dc;color:#a3241b}.mahjong-app .mj-toast[data-tone=warn]{background:#fff1b8;color:#7a4b00}.mahjong-app .mj-fx{position:absolute;inset:0;z-index:6;pointer-events:none;overflow:hidden}.mahjong-app .mj-pop{position:absolute;transform:translate(-50%,-100%);white-space:nowrap;font:800 22px/1 Playful,Avenir Next,sans-serif;color:#fffaf0;-webkit-text-stroke:5px #2b2016;paint-order:stroke fill;animation:mj-pop 1.6s ease-out forwards}.mahjong-app .mj-pop-flower{color:#ffb3c8}.mahjong-app .mj-pop-info{color:#f3e0c0;font-size:18px}.mahjong-app .mj-pop-react{font-size:28px}.mahjong-app .mj-handover{position:absolute;z-index:6;right:max(12px,env(safe-area-inset-right,0px));top:calc(max(8px, env(safe-area-inset-top, 0px)) + 56px);width:min(360px,calc(100vw - 24px));max-height:calc(100dvh - var(--hand-h, 150px) - 90px);overflow:auto;padding:12px 14px;border:3px solid #fff3d6;border-radius:22px;background:rgba(255,250,240,.97);box-shadow:0 6px 0 var(--play-shadow);animation:mj-sheet-in .35s ease-out}.mahjong-app .mj-handover[hidden]{display:none}.mahjong-app .mj-ho-title{margin:0 0 8px;font-size:17px;color:var(--play-accent);line-height:1.25}.mahjong-app .mj-ho-faan{list-style:none;margin:0 0 8px;padding:6px 10px;border-radius:14px;background:#fff1c8;display:grid;grid-gap:2px;gap:2px}.mahjong-app .mj-ho-faan[hidden]{display:none}.mahjong-app .mj-ho-faan li{display:flex;justify-content:space-between;font-size:13.5px;font-weight:700;color:var(--play-ink)}.mahjong-app .mj-ho-faan li.total{border-top:2px dashed #e2c98a;margin-top:3px;padding-top:3px;font-weight:800;color:var(--mj-red)}.mahjong-app :is(.mj-ho-list,.mj-r-list){list-style:none;margin:0;padding:0;display:grid;grid-gap:5px;gap:5px}.mahjong-app :is(.mj-ho-list,.mj-r-list) li{display:flex;align-items:center;gap:8px;padding:5px 10px 5px 6px;border-radius:14px;background:var(--play-soft);box-shadow:inset 4px 0 0 var(--c)}.mahjong-app :is(.mj-ho-list,.mj-r-list) li.win{background:#fff1b8}.mahjong-app :is(.mj-ho-list,.mj-r-list) li.me{outline:2px solid var(--mj-gold)}.mahjong-app .mj-ho-place{width:22px;text-align:center;font-weight:800;color:var(--mj-muted)}.mahjong-app .mj-ho-ava{font-size:20px}.mahjong-app .mj-ho-name{flex:1 1;min-width:0;display:flex;flex-direction:column;font-weight:800;font-size:14px;text-align:left}.mahjong-app .mj-ho-name small{font-size:11px;font-weight:700;color:var(--mj-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mahjong-app :is(.mj-ho-list,.mj-r-list) b{font-size:18px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.mahjong-app .mj-ho-list b.up{color:#1c7a52}.mahjong-app .mj-ho-list b.down{color:var(--mj-red)}.mahjong-app .mj-ho-next{margin:8px 0 0;font-size:13px;font-weight:800;color:var(--mj-muted);text-align:center}.playful-game.mahjong-app .mj-menu{background:linear-gradient(90deg,transparent 40%,rgba(16,28,20,.55));-webkit-backdrop-filter:none;backdrop-filter:none;align-items:flex-end;padding-right:max(24px,4vw)}.mahjong-app .mj-panel{width:min(470px,100%);text-align:center;padding:18px 18px 14px;max-height:calc(100dvh - 24px);overflow:auto}.mahjong-app .mj-kicker{display:block;color:var(--play-accent);font-size:12px;font-weight:800;letter-spacing:.12em}.mahjong-app .mj-logo{margin:4px 0 6px;font:800 clamp(38px,6.5vw,54px)/1 Playful,Avenir Next,sans-serif;color:#ffd34d;-webkit-text-stroke:2px #0f4a30;paint-order:stroke fill;text-shadow:0 5px 0 #0f4a30;transform:rotate(-2deg)}.mahjong-app .mj-logo small{display:block;font-size:.45em;color:#fffaf0;margin-top:2px}.mahjong-app .mj-sub{margin:0 0 6px;font-size:14px;line-height:1.4}.mahjong-app .mj-panel h2.mj-label{margin:9px 0 5px;font-size:12.5px;font-weight:800;color:var(--mj-muted);text-transform:uppercase;letter-spacing:.06em;text-align:left}.mahjong-app .mj-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.mahjong-app .mj-chips{display:grid;grid-template-columns:repeat(var(--cols),1fr);grid-gap:4px;gap:4px;padding:4px;border-radius:14px;background:var(--play-soft)}.mahjong-app .mj-opt{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-height:44px;min-width:0;padding:5px 2px;border:0;border-radius:10px;background:transparent;color:var(--play-ink);cursor:pointer}.mahjong-app .mj-opt b{font-size:14px;line-height:1.1;font-weight:800;white-space:nowrap}.mahjong-app .mj-opt-icon{font-size:19px;line-height:1}.mahjong-app .mj-opt[aria-checked=true]{background:#fff;color:var(--play-accent);box-shadow:0 3px 0 var(--play-shadow)}.mahjong-app .mj-switch{width:100%;min-height:52px;padding:6px 10px 6px 46px;border:2px solid #ecd9b8;border-radius:14px;background:#fff;color:var(--play-ink);cursor:pointer;position:relative;text-align:left;font-size:14px}.mahjong-app .mj-switch:before{content:"";position:absolute;left:10px;top:50%;width:26px;height:15px;margin-top:-7.5px;border-radius:8px;background:#d8c7a8;transition:background .15s}.mahjong-app .mj-switch:after{content:"";position:absolute;left:12px;top:50%;width:11px;height:11px;margin-top:-5.5px;border-radius:50%;background:#fff;transition:left .15s}.mahjong-app .mj-switch[aria-checked=true]:before{background:#1c7a52}.mahjong-app .mj-switch[aria-checked=true]:after{left:24px}.mahjong-app:not([data-mode=bots]) .mj-bots-only,.mahjong-app:not([data-mode=online]) .mj-online-menu{display:none}.mahjong-app[data-rules=beginner] .mj-hk-only{visibility:hidden}.mahjong-app .mj-howto{margin-top:10px;text-align:left;border-radius:14px;background:var(--play-soft);padding:4px 10px}.mahjong-app .mj-howto summary{min-height:40px;display:flex;align-items:center;font-weight:800;cursor:pointer;color:var(--play-ink)}.mahjong-app .mj-howto ul{margin:0 0 8px;padding-left:18px;font-size:13px;line-height:1.45}.mahjong-app .mj-faan-table{list-style:none;padding-left:0!important;display:grid;grid-gap:2px;gap:2px}.mahjong-app .mj-faan-table li{display:flex;justify-content:space-between;gap:10px;padding:2px 4px;border-bottom:1px dashed #e2d2ae}.mahjong-app .mj-faan-table b{color:var(--mj-red)}.mahjong-app .mj-note{margin:0 0 8px;font-size:12px;line-height:1.4;color:var(--mj-muted)}.mahjong-app .mj-avatars{display:grid;grid-template-columns:repeat(8,1fr);grid-gap:4px;gap:4px}.mahjong-app .mj-avatars button{height:44px;border:2px solid #ecd9b8;border-radius:12px;background:#fff;font-size:22px;cursor:pointer;padding:0}.mahjong-app .mj-avatars button[aria-checked=true]{border-color:var(--play-accent);background:var(--play-soft);box-shadow:0 3px 0 var(--play-shadow);transform:translateY(-2px)}.mahjong-app .mj-best-line{margin:10px 0 4px;font-size:14px;font-weight:700;color:var(--mj-muted)}.mahjong-app .mj-best-line b{color:var(--play-accent);font-size:18px}.mahjong-app .mj-start{margin-top:8px}.mahjong-app .mj-settings{display:flex;gap:6px;margin-top:10px}.mahjong-app .mj-setting{flex:1 1;min-height:44px;padding:6px;border:2px solid #ecd9b8;border-radius:12px;background:#fff;color:var(--play-ink);font-size:13px;font-weight:700;cursor:pointer}.mahjong-app .mj-setting[aria-pressed=false]{color:#a08a70}.mahjong-app .mj-lobby-fill{margin:4px 0 10px}.mahjong-app .mj-lobby-fill button{width:100%;min-height:44px}.mahjong-app .mj-lobby-fill button:disabled{opacity:.75;cursor:default}.playful-game.mahjong-app :is(.mj-paused,.mj-results){background:rgba(16,28,20,.5);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.mahjong-app .mj-card-panel{width:min(440px,100%);text-align:center;max-height:calc(100dvh - 24px);overflow:auto}.mahjong-app .mj-title{margin:0 0 16px;color:var(--play-accent);font-size:30px}.mahjong-app .mj-results[data-tone=win] #mj-r-kicker{color:var(--mj-red);font-size:15px}.mahjong-app .mj-r-title{margin:4px 0 10px;font:800 34px/1.1 Playful,Avenir Next,sans-serif;color:var(--play-accent)}.mahjong-app .mj-r-list{margin-bottom:10px}.mahjong-app .mj-r-note{margin:0 0 10px;font-size:12.5px;line-height:1.35;color:var(--mj-muted)}.mahjong-app .mj-r-note[hidden]{display:none}.mahjong-app .mj-r-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.mahjong-app .mj-r-row>*{margin-top:12px;width:100%;font-size:15px;min-height:44px}@media (max-width:899px){.playful-game.mahjong-app .mj-menu{align-items:center;justify-content:flex-start;padding:0 10px max(14px,env(safe-area-inset-bottom,0px));background:linear-gradient(180deg,transparent 30%,rgba(16,28,20,.55) 55%);overflow:auto}.mahjong-app .mj-menu:before{content:"";display:block;flex:0 0 auto;height:max(160px,28dvh)}.mahjong-app .mj-panel{padding:14px 12px 12px;border-radius:24px;max-height:none;overflow:visible}}@media (max-width:899px) and (min-aspect-ratio:5/4) and (max-height:520px){.playful-game.mahjong-app .mj-menu{align-items:flex-end;padding:8px 12px;background:linear-gradient(90deg,transparent 35%,rgba(16,28,20,.55))}.mahjong-app .mj-menu:before{display:none}.mahjong-app .mj-panel{width:min(440px,56vw);max-height:calc(100dvh - 16px);overflow:auto}.mahjong-app .mj-sub{display:none}}@media (max-width:520px){.mahjong-app .mj-seat{padding:3px 8px 3px 3px;gap:4px}.mahjong-app .mj-ava{width:32px;height:32px}.mahjong-app .mj-ava i{font-size:18px}.mahjong-app .mj-ring{width:40px;height:40px}.mahjong-app .mj-seat-name{font-size:12px;max-width:70px}.mahjong-app .mj-act,.mahjong-app .mj-cb{min-width:54px;padding:6px 10px;font-size:14px}.mahjong-app .mj-hand-no{font-size:11.5px;max-width:48vw}.mahjong-app .mj-status{font-size:13.5px;bottom:auto;top:calc(max(8px, env(safe-area-inset-top, 0px)) + 58px)}.mahjong-app .mj-wall-count{top:calc(max(8px, env(safe-area-inset-top, 0px)) + 92px)}.mahjong-app .mj-handover{top:auto;bottom:calc(var(--hand-h, 150px) + 56px);right:12px;max-height:52dvh}.mahjong-app .mj-reacts{flex-direction:row;bottom:calc(var(--hand-h, 150px) + 10px);right:8px}.mahjong-app .mj-reacts button{width:40px;height:40px;font-size:18px}.mahjong-app .mj-row{gap:6px}.mahjong-app .mj-opt b{font-size:13px}}@media (max-height:500px){.mahjong-app .mj-status{bottom:auto;left:max(10px,env(safe-area-inset-left,0px));transform:none;top:calc(max(8px, env(safe-area-inset-top, 0px)) + 54px);font-size:13px;padding:4px 12px;max-width:34vw}.mahjong-app .mj-status.pop{animation:none}.mahjong-app .mj-wall-count{top:calc(max(8px, env(safe-area-inset-top, 0px)) + 88px)}.mahjong-app .mj-toast{top:calc(max(8px, env(safe-area-inset-top, 0px)) + 40px)}.mahjong-app .mj-actions{position:absolute;right:max(60px,env(safe-area-inset-right,0px));bottom:calc(var(--hand-h, 100px) - 2px);padding:0}.mahjong-app .mj-act{min-height:44px;font-size:13px;padding:4px 10px;min-width:50px}.mahjong-app .mj-claim{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(var(--hand-h, 100px) - 2px);margin:0;padding:4px 8px 9px;gap:6px;flex-wrap:nowrap;max-width:calc(100vw - 120px);animation:none}.mahjong-app .mj-claim-btns{flex-wrap:nowrap;gap:4px}.mahjong-app .mj-claim-text{white-space:nowrap;font-size:13px}.mahjong-app .mj-claim-tile canvas{width:30px!important;height:auto!important}.mahjong-app .mj-cb{min-height:44px;min-width:52px;padding:4px 9px;font-size:14px}.mahjong-app .mj-cb small{font-size:10px}.mahjong-app .mj-ready{position:absolute;left:max(10px,env(safe-area-inset-left,0px));bottom:calc(var(--hand-h, 100px) + 50px);margin:0;font-size:12px;max-width:40vw}.mahjong-app .mj-reacts{flex-direction:row;bottom:auto;top:calc(max(8px, env(safe-area-inset-top, 0px)) + 52px)}.mahjong-app .mj-seat.me{top:calc(max(8px, env(safe-area-inset-top, 0px)) + 120px)!important;bottom:auto}.mahjong-app .mj-reacts button{width:40px;height:40px;font-size:17px}.mahjong-app .mj-handover{top:calc(max(8px, env(safe-area-inset-top, 0px)) + 44px);bottom:auto;max-height:64dvh}}@keyframes mj-pop{0%{opacity:0;transform:translate(-50%,-60%) scale(.6)}15%{opacity:1;transform:translate(-50%,-110%) scale(1.12)}to{opacity:0;transform:translate(-50%,-230%) scale(1)}}@keyframes mj-count{0%{transform:translate(-50%,-50%) scale(1.6);opacity:0}30%{transform:translate(-50%,-50%) scale(.95);opacity:1}to{transform:translate(-50%,-50%) scale(1)}}@keyframes mj-pulse{0%{filter:brightness(1)}to{filter:brightness(1.2)}}@keyframes mj-banner-in{0%{opacity:.3;transform:translateX(-50%) scale(.88)}to{opacity:1;transform:translateX(-50%) scale(1)}}@keyframes mj-sheet-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}@keyframes mj-claim-in{0%{opacity:0;transform:translateY(10px) scale(.95)}to{opacity:1;transform:none}}@keyframes mj-callout{0%{opacity:0;transform:translate(-50%,-50%) scale(2.2) rotate(-6deg)}18%{opacity:1;transform:translate(-50%,-50%) scale(.94) rotate(-3deg)}30%{transform:translate(-50%,-50%) scale(1.04) rotate(-4deg)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-60%) scale(1) rotate(-4deg)}}@keyframes mj-flash{0%{opacity:0}12%{opacity:1}to{opacity:0}}@keyframes mj-deal{0%{opacity:0;transform:translateY(-40vh) scale(.6)}to{opacity:1}}