:root{color:#25251f;font-synthesis:none;--ink:#25251f;--muted:#777469;--paper:#f7f3ec;--paper-deep:#ece4d8;--line:#2d2b2421;--accent:#b94c3d;--accent-dark:#963b30;--green:#385f4c;--dark:#20251f;--serif:"Songti SC", "STSong", serif;background:#f3eee5;font-family:PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--paper);min-width:320px}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit}button,a,input,select{touch-action:manipulation}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible{outline-offset:2px;outline:3px solid #b94c3d3b}.eyebrow{color:var(--accent);letter-spacing:.17em;text-transform:uppercase;font-size:11px;font-weight:700;display:block}.brand{color:var(--ink);letter-spacing:-.045em;align-items:center;gap:11px;font-family:Georgia,serif;font-size:29px;display:inline-flex}.brand-mark{place-items:center;width:38px;height:38px;display:grid}.brand-mark svg{filter:drop-shadow(0 5px 7px #1e191229);width:100%;height:100%;display:block}.brand-table{fill:currentColor}.brand-seat{fill:currentColor;opacity:.48}.brand-lines{fill:none;stroke:var(--paper);stroke-width:1.4px;opacity:.38}.brand-center{fill:var(--accent);stroke:var(--paper);stroke-width:1.5px}.brand-wordmark{align-items:baseline;gap:5px;display:inline-flex}.brand-wordmark b{font-weight:700}.brand-wordmark i{color:var(--accent);letter-spacing:-.03em;font-size:.82em;font-style:italic;font-weight:400}.brand-compact{gap:8px;font-size:22px}.brand-compact .brand-mark{width:31px;height:31px}.primary-button,.secondary-button,.text-button,.demo-entry{cursor:pointer;border:0}.primary-button{background:var(--accent);color:#fff;border-radius:4px;justify-content:center;align-items:center;gap:10px;min-height:52px;padding:0 22px;font-weight:700;transition:transform .18s,background .18s,box-shadow .18s;display:inline-flex;box-shadow:0 9px 22px #89312733}.primary-button:hover{background:var(--accent-dark);transform:translateY(-2px);box-shadow:0 13px 28px #8931273d}.primary-button:disabled{cursor:wait;opacity:.6}.primary-button.compact{min-height:44px}.secondary-button{border:1px solid var(--line);background:0 0;border-radius:4px;align-items:center;gap:8px;min-height:40px;padding:0 15px;font-weight:600;transition:background .18s,border-color .18s;display:inline-flex}.secondary-button:hover{background:#fff;border-color:#2d2b244d}.text-button{color:var(--muted);background:0 0;justify-content:center;align-items:center;gap:7px;padding:8px;font-size:13px;font-weight:600;display:inline-flex}.text-button:hover{color:var(--accent)}.text-button:disabled{cursor:not-allowed;opacity:.35}.page-enter{animation:.52s cubic-bezier(.22,.7,.23,1) both page-enter}@keyframes page-enter{0%{opacity:0}to{opacity:1}}.auth-page{background:var(--paper);grid-template-columns:minmax(0,1.18fr) minmax(420px,.82fr);min-height:100svh;display:grid}.auth-scene{color:#f6ead2;background:#543722;min-height:700px;padding:50px 5vw;position:relative;overflow:hidden}.auth-scene:before{content:"";z-index:0;background:#174f3b;border:12px solid #6a4529;border-radius:32px 0 0 32px;position:absolute;inset:18px 0 18px 18px;box-shadow:inset 0 0 0 2px #f4d2962e,inset 0 0 70px #00000070,0 30px 80px #1e140c47}.auth-scene:after{content:"";z-index:0;pointer-events:none;background-image:radial-gradient(circle at 50% 30%,#ffffff14,#0000 38%),repeating-linear-gradient(112deg,#ffffff05 0 1px,#0000 1px 5px);border-radius:22px 0 0 22px;position:absolute;inset:30px 12px 30px 30px}.auth-table{z-index:1;border-radius:22px 0 0 22px;animation:.85s cubic-bezier(.2,.76,.2,1) both table-arrive;position:absolute;inset:30px 12px 30px 30px;overflow:hidden}@keyframes table-arrive{0%{opacity:0;transform:scale(1.025)}to{opacity:1;transform:none}}.table-stitch{border:1px solid #e8cb993d;border-radius:32px;position:absolute}.table-stitch-outer{inset:35px -36px 35px 35px}.table-stitch-inner{opacity:.7;border-style:dashed;inset:43px -28px 43px 43px}.auth-brand{z-index:4;position:relative}.auth-brand .brand{color:#fff4dd}.auth-brand .brand-lines{stroke:#174f3b}.auth-brand .brand-center{stroke:#fff4dd}.auth-brand .brand-wordmark i{color:#e7b965}.playing-cards{width:180px;height:205px;position:absolute;top:15%;right:11%;transform:rotate(7deg)}.playing-cards i{color:#20231f;background:#fffaf0;border:5px solid #f5eddd;border-radius:9px;grid-template-rows:auto 1fr;width:116px;height:168px;padding:11px;font-family:Georgia,serif;font-style:normal;display:grid;position:absolute;box-shadow:0 18px 34px #0000004d}.playing-cards i:first-child{transform:translate(-34px,20px)rotate(-18deg)}.playing-cards i:nth-child(2){transform:translate(7px,8px)rotate(-4deg)}.playing-cards i:nth-child(3){transform:translate(43px,16px)rotate(13deg)}.playing-cards .card-back{background-color:#9d3e32;background-image:repeating-linear-gradient(45deg,#ffffff26 0 2px,#0000 2px 7px)}.card-face b{font-size:24px;line-height:1}.card-face span{place-self:center;font-size:54px}.playing-cards .card-red{color:#b33f34}.chess-pieces{color:#191c19;text-shadow:0 13px 13px #00000061;align-items:flex-end;gap:12px;display:flex;position:absolute;bottom:9%;right:12%;transform:rotate(-5deg)}.chess-pieces i{font-family:Georgia,serif;font-size:clamp(92px,10vw,146px);font-style:normal;line-height:.8}.chess-pieces i:last-child{color:#eee2c9;font-size:clamp(78px,8.2vw,124px)}.mahjong-tiles{gap:8px;display:flex;position:absolute;bottom:16%;left:12%;transform:rotate(6deg)}.mahjong-tiles i{aspect-ratio:.72;color:#b53e35;width:clamp(49px,5vw,68px);font-family:var(--serif);background:#fff9e9;border:5px solid #e5dbc3;border-bottom-width:10px;border-radius:7px;place-items:center;font-size:clamp(23px,2.5vw,35px);font-style:normal;font-weight:700;display:grid;box-shadow:0 14px 22px #00000047}.mahjong-tiles i:nth-child(2){color:#28704c;transform:translateY(-8px)}.mahjong-tiles i:nth-child(3){color:#1f4e80}.table-stones i{aspect-ratio:1;border-radius:50%;width:clamp(35px,4vw,55px);position:absolute;box-shadow:inset 8px 8px 14px #ffffff24,inset -7px -8px 12px #00000061,0 12px 17px #00000042}.table-stones i:first-child{background:#171918;top:43%;left:28%}.table-stones i:nth-child(2){background:#eee7d9;top:49%;left:35%}.table-stones i:nth-child(3){background:#181a19;top:38%;left:41%}.table-stones i:nth-child(4){background:#eee7d9;top:48%;left:48%}.table-center-dot{background:#ebca909e;border-radius:50%;width:7px;height:7px;position:absolute;top:50%;left:50%;box-shadow:0 0 0 8px #ebca900f}.scene-note{z-index:3;color:#fff4ddb8;justify-items:end;gap:6px;display:grid;position:absolute;bottom:58px;right:5vw}.scene-note span{letter-spacing:.2em;font-family:Georgia,serif;font-size:11px}.scene-note small{color:#fff4dd7a;letter-spacing:.12em;font-size:11px}.auth-panel{place-items:center;min-height:700px;padding:70px clamp(38px,6vw,90px) 50px;display:grid;position:relative}.auth-form-wrap{width:min(100%,420px);animation:.68s cubic-bezier(.18,.75,.24,1) .12s both form-rise}@keyframes form-rise{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}.auth-heading h1{font-family:var(--serif);letter-spacing:-.05em;margin:9px 0 7px;font-size:38px}.auth-heading p{color:var(--muted);margin:0;font-size:14px}.segmented{border-bottom:1px solid var(--line);gap:26px;margin:37px 0 24px;display:flex}.segmented button{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0 2px 12px;font-weight:600;position:relative}.segmented button.active{color:var(--ink)}.segmented button.active:after{content:"";background:var(--accent);height:2px;position:absolute;bottom:-1px;left:0;right:0}.auth-form{gap:17px;display:grid}.auth-form label,.settings-section label,.admin-login label{color:#4e4d45;gap:8px;font-size:13px;font-weight:600;display:grid}.input-wrap{border:1px solid var(--line);color:#9a968d;background:#ffffff94;border-radius:4px;align-items:center;gap:10px;min-height:49px;padding:0 14px;transition:border .18s,background .18s;display:flex}.input-wrap:focus-within{background:#fff;border-color:#b94c3d80}.input-wrap input{width:100%;min-height:44px;color:var(--ink);background:0 0;border:0;outline:0}.form-error{color:var(--accent);margin:-4px 0 0;font-size:13px}.demo-entry{width:100%;min-height:44px;color:var(--muted);background:0 0;justify-content:center;align-items:center;gap:7px;margin-top:15px;padding:10px;font-size:13px;display:flex}.demo-entry:hover{color:var(--accent)}.auth-footnote{color:#aaa69d;letter-spacing:.08em;margin:0;font-size:11px;position:absolute;bottom:18px}.app-shell{background:var(--paper);grid-template-columns:238px 1fr;min-height:100svh;display:grid}.side-nav{border-right:1px solid var(--line);background:#ede6dc;flex-direction:column;height:100svh;padding:30px 22px 22px;display:flex;position:sticky;top:0}.side-nav nav{gap:7px;margin-top:54px;display:grid}.side-nav nav a{color:#706c63;border-radius:4px;align-items:center;gap:12px;padding:12px 13px;font-size:14px;font-weight:600;display:flex}.side-nav nav a:hover,.side-nav nav a.active{color:var(--ink);background:#ffffff94}.side-nav nav a.active{box-shadow:inset 3px 0 var(--accent)}.side-user{border-top:1px solid var(--line);grid-template-columns:37px 1fr 30px;align-items:center;gap:10px;margin-top:auto;padding-top:20px;display:grid}.avatar{background:var(--dark);color:#fff;width:37px;height:37px;font-family:var(--serif);border-radius:50%;place-items:center;display:grid}.side-user div:nth-child(2){min-width:0;display:grid}.side-user strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.side-user span{color:var(--muted);font-family:monospace;font-size:10px}.side-user button{color:#8a867e;cursor:pointer;background:0 0;border:0;place-items:center;width:30px;height:30px;display:grid}.app-main{min-width:0}.lobby-page,.profile-page{width:min(1180px,100% - 8vw);margin:0 auto;padding:58px 0 80px}.page-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-end;gap:30px;padding-bottom:43px;display:flex}.page-header h1{font-family:var(--serif);letter-spacing:-.05em;margin:8px 0 5px;font-size:clamp(34px,4vw,52px)}.page-header p{color:var(--muted);margin:0}.wallet{border-left:1px solid var(--line);grid-template-columns:1fr auto;align-items:center;min-width:198px;padding:0 0 8px 22px;display:grid}.wallet span{color:var(--muted);align-items:center;gap:7px;font-size:12px;display:flex}.wallet strong{grid-row:span 2;font-family:Georgia,serif;font-size:45px}.wallet small{color:#a29d93;margin-top:5px;font-size:10px}.resume-game-banner{color:#f5ead4;background:linear-gradient(120deg,#284436fa,#193127fa);border:1px solid #8b5f2640;border-radius:10px;grid-template-columns:56px 1fr auto;align-items:center;gap:20px;margin-top:30px;padding:20px 22px;display:grid;box-shadow:0 16px 34px #1f2c2429}.resume-game-banner .eyebrow{color:#cda968}.resume-game-banner h2{font-family:var(--serif);margin:4px 0 2px;font-size:22px}.resume-game-banner p{color:#f5ead4a8;margin:0;font-size:12px}.resume-game-mark{color:#e7c77e;width:52px;height:52px;font-family:var(--serif);background:#081b148c;border:1px solid #e9c2768c;border-radius:50%;place-items:center;font-size:23px;display:grid;box-shadow:inset 0 0 0 4px #d5af6314}.resume-game-banner .primary-button{color:#fff5df;background:linear-gradient(#a9803f,#7f5b28);border:1px solid #ffe2a46b;min-width:138px;box-shadow:0 8px 18px #08140e47}.quick-room{border-bottom:1px solid var(--line);grid-template-columns:1fr minmax(360px,1fr);align-items:end;gap:40px;padding:42px 0;display:grid;position:relative}.quick-room h2,.section-title h2{font-family:var(--serif);margin:7px 0 0;font-size:25px}.join-control{border-bottom:1px solid #777368;height:48px;display:flex}.join-control input{letter-spacing:.16em;background:0 0;border:0;outline:0;flex:1;font-family:monospace;font-size:19px}.join-control button{color:var(--accent);cursor:pointer;background:0 0;border:0;align-items:center;gap:7px;font-weight:700;display:flex}.inline-error{color:var(--accent);font-size:11px;position:absolute;bottom:17px;right:0}.game-library{padding-top:45px}.section-title,.admin-section-title{justify-content:space-between;align-items:flex-end;gap:20px;display:flex}.section-title>span{color:var(--muted);font-size:12px}.game-list{border-top:1px solid var(--line);margin-top:25px}.game-row{--delay:0s;border:0;border-bottom:1px solid var(--line);text-align:left;opacity:0;width:100%;animation:row-reveal .4s var(--delay) forwards;background:0 0;grid-template-columns:58px minmax(180px,1fr) 100px 90px 24px;align-items:center;gap:18px;padding:16px 8px 16px 0;transition:padding .2s,background .2s;display:grid}@keyframes row-reveal{to{opacity:1}}.game-row.available{cursor:pointer}.game-row.available:hover{background:#ffffffa8;padding-left:10px}.game-row:disabled{color:inherit}.game-mark{color:#5f4b35;width:44px;height:44px;font-family:var(--serif);background:#d9c8ac;border-radius:50%;place-items:center;font-size:19px;display:grid;box-shadow:inset 3px 3px 7px #ffffff73}.game-row.available .game-mark{background:var(--dark);color:#f3e8d7}.game-name{gap:3px;display:grid}.game-name strong{font-size:15px}.game-name small,.game-players{color:var(--muted);font-size:11px}.game-players{align-items:center;gap:5px;display:flex}.status-live,.status-soon{border-radius:99px;width:fit-content;padding:4px 8px;font-size:10px;font-weight:700}.status-live{color:var(--green);background:#385f4c1c}.status-soon{color:#aaa59b}.row-arrow{color:#aaa59b;transition:transform .2s}.game-row:hover .row-arrow{color:var(--accent);transform:translate(3px)}.dialog-backdrop{z-index:20;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#1d1c1885;place-items:center;padding:20px;animation:.18s both fade-in;display:grid;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}}.create-dialog{background:var(--paper);border-radius:7px;width:min(520px,100%);max-height:calc(100svh - 40px);padding:37px 40px 34px;animation:.28s cubic-bezier(.2,.8,.2,1) both dialog-pop;position:relative;overflow-y:auto;box-shadow:0 30px 90px #14120e47}@keyframes dialog-pop{0%{opacity:0;transform:translateY(15px)scale(.98)}}.dialog-close{color:#8f8b82;cursor:pointer;background:0 0;border:0;font-size:27px;position:absolute;top:13px;right:15px}.dialog-heading{border-bottom:1px solid var(--line);align-items:center;gap:18px;padding-bottom:28px;display:flex}.game-mark.large{background:var(--dark);color:#f3e8d7;width:59px;height:59px;font-size:25px}.dialog-heading h2{font-family:var(--serif);margin:5px 0 2px;font-size:27px}.dialog-heading p{color:var(--muted);margin:0;font-size:12px}.rule-lines>div{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:25px;padding:21px 0;display:flex}.rule-lines span{gap:4px;display:grid}.rule-lines small{color:var(--muted);font-size:11px}.switch{cursor:pointer;background:#cbc6bd;border:0;border-radius:99px;width:44px;height:24px;padding:3px}.switch i{background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .2s;display:block}.switch.on{background:var(--accent)}.switch.on i{transform:translate(20px)}.time-setting{align-items:flex-start!important}.time-setting>div{flex-wrap:wrap;justify-content:flex-end;gap:5px;display:flex}.time-setting button{border:1px solid var(--line);cursor:pointer;color:var(--muted);background:0 0;border-radius:3px;padding:5px 7px;font-size:10px}.time-setting button.active{border-color:var(--accent);color:var(--accent);background:#b94c3d14}.room-cost{color:#615d54;background:#ece5d9;align-items:center;gap:8px;margin:22px 0;padding:13px;font-size:12px;display:flex}.room-cost strong{color:var(--ink);margin-left:auto}.create-dialog>.primary-button{width:100%}.foundation-note{color:var(--green);background:#235b440f;border:1px solid #235b442e;border-radius:5px;align-items:flex-start;gap:13px;margin:25px 0;padding:18px;display:flex}.foundation-note div{gap:5px;display:grid}.foundation-note strong{font-size:13px}.foundation-note small{color:var(--muted);font-size:11px;line-height:1.65}.mahjong-score-tier{border:0;min-width:0;margin:-5px 0 22px;padding:0}.mahjong-score-tier legend{color:var(--ink);font-family:var(--serif);padding:0;font-size:15px;font-weight:700}.mahjong-score-tier>p{color:var(--muted);margin:7px 0 12px;font-size:11px;line-height:1.55}.mahjong-score-tier>div{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.mahjong-score-tier label{cursor:pointer;border:1px solid var(--line);background:#f4efe7;border-radius:7px;align-content:center;place-items:center;gap:3px;min-height:62px;transition:border-color .18s,background .18s,box-shadow .18s,transform .18s;display:grid;position:relative}.mahjong-score-tier label:hover{border-color:#235b4459;transform:translateY(-1px)}.mahjong-score-tier label.selected{border-color:var(--green);background:#235b4414;box-shadow:inset 0 0 0 1px #235b441f}.mahjong-score-tier input{z-index:1;cursor:pointer;opacity:0;width:100%;height:100%;position:absolute;inset:0}.mahjong-score-tier label:has(input:focus-visible){outline:2px solid var(--green);outline-offset:2px}.mahjong-score-tier strong{color:var(--ink);letter-spacing:.06em;font-size:16px}.mahjong-score-tier small{color:var(--muted);font-size:10px}.mahjong-appearance{border:0;min-width:0;margin:-5px 0 18px;padding:0}.mahjong-appearance legend{color:var(--ink);font-family:var(--serif);margin-bottom:9px;font-size:15px;font-weight:700}.mahjong-appearance>div{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.mahjong-appearance label{border:1px solid var(--line);min-height:50px;color:var(--muted);cursor:pointer;background:#f4efe7;border-radius:7px;justify-content:center;align-items:center;gap:8px;font-size:11px;display:flex;position:relative}.mahjong-appearance label.selected{border-color:var(--green);color:var(--ink);background:#235b4414;font-weight:750;box-shadow:inset 0 0 0 1px #235b441f}.mahjong-appearance input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.mahjong-appearance label:has(input:focus-visible){outline:2px solid var(--green);outline-offset:2px}.table-swatch{border:2px solid #d9d1c4;border-radius:4px;width:28px;height:20px;box-shadow:inset 0 0 7px #ffffff26}.table-swatch.green{background:#155c42}.table-swatch.red{background:#6b252c}.table-swatch.blue{background:#194c70}.back-swatch{border:2px solid #eee7d9;border-radius:3px;width:20px;height:29px;box-shadow:inset 0 0 0 2px #ffffff1f,0 2px 4px #0000002e}.back-swatch.jade{background:#17613f}.back-swatch.ruby{background:#8c3036}.back-swatch.sapphire{background:#235d91}.room-page{background:#e9dfd0;min-height:100svh;padding:0 3vw 3vw}.room-topbar{border-bottom:1px solid #2d2b2426;grid-template-columns:1fr auto 1fr;align-items:center;height:78px;display:grid}.back-to-lobby{color:#6e6a60;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;width:fit-content;display:flex}.room-countdown{color:#777267;justify-self:end;align-items:center;gap:7px;font-size:11px;display:flex}.room-countdown strong{color:var(--ink);letter-spacing:.05em;margin-left:3px;font-family:monospace;font-size:14px}.mobile-room-title{display:none}.room-layout{grid-template-columns:minmax(260px,320px) minmax(500px,1fr);gap:4vw;max-width:1350px;margin:0 auto;padding-top:4vh;display:grid}.room-context{flex-direction:column;padding:12px 0;display:flex}.room-context h1{font-family:var(--serif);margin:8px 0 3px;font-size:32px}.copy-code{color:var(--muted);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:6px 0;font-size:11px;display:flex}.connection-state{color:var(--muted);align-items:center;gap:6px;margin-top:10px;font-size:10px;display:inline-flex}.connection-state.connected{color:var(--green)}.connection-state.reconnecting svg,.connection-state.offline svg{animation:1.1s ease-in-out infinite connection-pulse}@keyframes connection-pulse{50%{opacity:.32}}.seat-list{gap:8px;margin-top:38px;display:grid}.seat{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:12px 0;display:flex}.seat>span{width:39px;height:39px;font-family:var(--serif);border-radius:50%;place-items:center;font-size:13px;display:grid}.black-seat{background:var(--dark);color:#fff}.white-seat{background:#faf8f3;border:1px solid #cdc5ba}.seat div{gap:3px;display:grid}.seat strong{font-size:13px}.seat small{color:var(--muted);font-size:10px}.seat.bot-seat>span{color:#e8cc87;background:#183f32}.seat-bot-add,.seat-bot-remove{color:#8a6727;cursor:pointer;white-space:nowrap;background:#d2b1601a;border:1px solid #a780334d;border-radius:999px;justify-content:center;align-items:center;gap:4px;min-height:30px;margin-left:auto;padding:0 8px;font-size:9px;display:inline-flex}.seat-bot-remove{color:#8b6952;width:30px;padding:0}.seat.empty{opacity:.62}.compact-seats{gap:3px;margin-top:28px}.compact-seats .seat{padding:9px 0}.table-seat-mark{color:#fff;background:#35634f}.seat-mark-south{background:#8f4a3e}.seat-mark-west{background:#876f3f}.seat-mark-north{background:#3f566f}.foundation-layout{grid-template-columns:minmax(260px,320px) minmax(560px,1fr)}.table-foundation{background:#7b4d2d;border-radius:16px;place-self:start center;width:min(76vh,780px);min-width:0;max-width:100%;padding:18px;position:relative;box-shadow:0 28px 70px #3322153d,inset 0 0 0 2px #ffffff14,inset 0 0 0 12px #361e102e}.table-foundation.has-game{width:min(76vw,920px)}.table-foundation.has-game .felt-table{aspect-ratio:2.25}.table-foundation:fullscreen{border-radius:0;place-content:center;width:100vw;max-width:none;height:100vh;display:grid}.table-foundation:fullscreen .felt-table{width:min(82vh,82vw)}.felt-table{aspect-ratio:1;background:radial-gradient(circle,#ffffff0e,#0000 46%),#174d3b;border-radius:12px;width:100%;position:relative;overflow:hidden;box-shadow:inset 0 0 55px #00000047}.felt-line{border:1px dashed #ebdeba38;border-radius:50%;position:absolute;inset:7%}.table-center-status{color:#f5ead5;text-align:center;border:1px solid #ffffff1f;border-radius:50%;place-content:center;gap:5px;width:210px;min-height:112px;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.table-center-status span{color:#cfb26b;letter-spacing:.22em;font-size:8px;font-weight:800}.table-center-status strong{font-family:var(--serif);font-size:20px}.table-center-status small{color:#ffffff80;font-size:9px}.felt-seat{color:#f8f0e2;background:#071d16a6;border:1px solid #ffffff1a;border-radius:7px;align-items:center;gap:9px;min-width:150px;padding:9px 12px;display:flex;position:absolute;box-shadow:0 8px 20px #00000029}.felt-seat>span{color:#193c30;width:28px;height:28px;font-family:var(--serif);background:#d7bd75;border-radius:50%;flex:none;place-items:center;font-size:12px;display:grid}.felt-seat div{gap:2px;display:grid}.felt-seat strong{text-overflow:ellipsis;white-space:nowrap;max-width:115px;font-size:11px;overflow:hidden}.felt-seat small{color:#ffffff80;font-size:8px}.felt-seat-score{color:#dfc889;font-variant-numeric:tabular-nums;background:#ffffff0f;border-radius:999px;justify-content:center;align-items:baseline;gap:2px;min-width:45px;height:28px;margin-left:auto;padding:5px 8px;font-size:13px;line-height:1;display:inline-flex}.felt-seat-score small{color:inherit;font-size:8px}.felt-seat-score.positive{color:#f3d376;background:#d7ae4a29}.felt-seat-score.negative{color:#bdb29d}.felt-seat.empty{opacity:.52}.felt-seat.active-turn{border-color:#ecc769cc;box-shadow:0 0 0 3px #ecc76921,0 8px 20px #0003}.felt-seat.bot-seat{border-color:#e4c16852}.felt-seat-bot-action{color:#ead18e;cursor:pointer;white-space:nowrap;background:#e5c5711a;border:1px solid #e5c57161;border-radius:999px;align-items:center;gap:4px;min-height:27px;margin-left:auto;padding:0 8px;font-size:8px;display:inline-flex}.felt-seat-bot-action.remove{color:#ffffff9e}.felt-seat-east{top:50%;right:4%;transform:translateY(-50%)}.felt-seat-south{bottom:4%;left:50%;transform:translate(-50%)}.felt-seat-west{top:50%;left:4%;transform:translateY(-50%)}.felt-seat-north{top:4%;left:50%;transform:translate(-50%)}.round-sidebar-status{background:#c5a35c17;border-left:3px solid #c5a35c;gap:7px;margin-top:22px;padding:16px 17px;display:grid}.round-sidebar-status strong{font-family:var(--serif);font-size:17px}.round-sidebar-status small{color:var(--muted);font-size:10px}.guandan-trick{z-index:2;color:#f5ead5;text-align:center;place-content:center;justify-items:center;gap:7px;min-width:210px;min-height:112px;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.guandan-trick>span{color:#d8bc74;letter-spacing:.16em;font-size:8px;font-weight:800}.guandan-trick>strong{font-family:var(--serif);font-size:17px}.guandan-trick>small{color:#ffffff80;font-size:9px}.guandan-trick.tribute-stage{background:#08271e94;border:1px solid #d9bb693d;border-radius:9px;min-width:270px;padding:15px 18px}.tribute-progress{flex-wrap:wrap;justify-content:center;gap:5px;display:flex}.tribute-progress span{color:#ffffffa8;background:#ffffff12;border-radius:3px;padding:4px 7px;font-size:8px}.trick-cards{justify-content:center;display:flex}.trick-cards .card-face+.card-face{margin-left:-8px}.guandan-hand-area{background:linear-gradient(#123e31,#0d3429);border:1px solid #e3cd8f1f;border-radius:9px;margin-top:12px;padding:10px 13px 12px;position:relative;box-shadow:inset 0 0 30px #00000038}.hand-meta{color:#ffffffa6;justify-content:space-between;align-items:center;min-height:34px;margin-bottom:2px;padding-right:215px;font-size:9px;display:flex}.hand-meta strong{color:#dfc779;font-size:9px}.guandan-hand{grid-template-columns:repeat(14,minmax(0,1fr));align-items:end;gap:10px 3px;width:100%;min-width:0;padding:9px 3px 4px;display:grid;overflow:visible}.playing-card{aspect-ratio:43/62;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;will-change:transform;background:0 0;border:0;border-radius:5px;justify-self:center;width:min(100%,46px);max-width:46px;padding:0;transition:transform .11s cubic-bezier(.2,.8,.2,1),filter .11s}.playing-card:hover:not(:disabled){transform:translateY(-3px)}.playing-card.selected{z-index:2;filter:drop-shadow(0 5px 5px #0000004d);transform:translateY(-7px)}.playing-card.selected .card-face{border-color:#f0c75e;box-shadow:0 0 0 2px #f0c75e5c,0 5px 11px #00000057}.playing-card.tribute-eligible:not(.selected){filter:drop-shadow(0 0 5px #e1bf5da6);transform:translateY(-3px)}.playing-card.tribute-ineligible{filter:saturate(.35);opacity:.42}.playing-card:disabled{cursor:default}.playing-card:focus-visible,.mahjong-tile-button:focus-visible{outline-offset:2px;outline:3px solid #efd277}.card-face{pointer-events:none;background:#fffdf7;border:2px solid #f1eadc;border-radius:5px;width:100%;height:100%;padding:0;font-family:Georgia,serif;line-height:1;display:block;position:relative;overflow:hidden;box-shadow:0 3px 8px #0000003d}.card-face.red{color:#b53f35}.card-face.black{color:#20251f}.card-corner{z-index:2;justify-items:center;gap:2px;display:grid;position:absolute;top:7%;left:11%}.card-corner b{font-size:14px;font-weight:700}.card-corner svg{width:13px;height:13px}.card-center-mark{opacity:0;width:34px;height:34px;margin:0;transition:opacity .13s;position:absolute;top:54%;left:54%;transform:translate(-50%,-50%)}.card-pip-grid{grid-template:repeat(5,1fr)/repeat(3,1fr);place-items:center;display:grid;position:absolute;inset:17% 8% 8% 14%}.card-pip{width:56%;min-width:7px;height:56%;min-height:7px}.card-pip.inverted{transform:rotate(180deg)}.card-pip-grid.ace .card-pip{width:92%;height:92%}.pip-0{grid-area:1/1}.pip-1{grid-area:1/2}.pip-2{grid-area:1/3}.pip-3{grid-area:2/1}.pip-4{grid-area:2/2}.pip-5{grid-area:2/3}.pip-6{grid-area:3/1}.pip-7{grid-area:3/2}.pip-8{grid-area:3/3}.pip-9{grid-area:4/1}.pip-10{grid-area:4/2}.pip-11{grid-area:4/3}.pip-12{grid-area:5/1}.pip-13{grid-area:5/2}.pip-14{grid-area:5/3}.card-court-art{object-fit:contain;mix-blend-mode:multiply;-webkit-user-select:none;user-select:none;width:84%;height:77%;position:absolute;inset:17% 4% 6% 12%}.court-suit-mark{width:17%;height:auto;position:absolute;bottom:5%;right:7%;transform:rotate(180deg)}.joker-corner{z-index:3;justify-items:center;gap:3px;display:grid;position:absolute;top:7%;left:9%}.joker-corner b{letter-spacing:.08em;writing-mode:vertical-rl;font-size:7px}.joker-corner i{font-family:var(--serif);font-size:8px;font-style:normal;font-weight:700}.joker-art{object-fit:contain;-webkit-user-select:none;user-select:none;width:86%;height:87%;position:absolute;inset:7% 2% 6% 12%}.card-face.joker>small{z-index:2;letter-spacing:.08em;writing-mode:vertical-rl;font-size:5px;font-weight:800;position:absolute;bottom:4%;right:4%}.card-face.compact{width:34px;height:48px}.card-face.compact .card-corner{gap:0;top:7%;left:10%}.card-face.compact .card-corner b{font-size:10px}.card-face.compact .card-corner svg{width:8px;height:8px}.card-face.compact .card-center-mark{opacity:1;width:19px;height:19px}.card-face.compact .joker-corner b{font-size:5px}.card-face.compact .joker-corner i,.card-face.compact.joker>small{display:none}.guandan-actions{justify-content:flex-end;gap:8px;margin:0;display:flex;position:absolute;top:8px;right:10px}.guandan-actions button{min-height:36px;padding-inline:17px}.guandan-actions button:disabled{cursor:not-allowed;opacity:.38;box-shadow:none;transform:none}.guandan-actions .secondary-button{color:#ffffffd1;border-color:#ffffff3d}.guandan-actions .secondary-button:hover{background:#ffffff14}.mahjong-table-center{z-index:2;color:#f6ecd7;position:absolute;inset:11% 8% 28%}.mahjong-table-center.is-finished{z-index:140}.mahjong-table-center.is-finished .mahjong-result-banner{position:fixed}.mahjong-wall-ring,.mahjong-river-grid{position:absolute;inset:0}.mahjong-wall{filter:drop-shadow(0 5px 4px #0000004d);align-items:flex-end;display:flex;position:absolute}.mahjong-wall-stack{width:21px;height:38px;margin-left:-5px;display:block;position:relative}.mahjong-wall-stack:first-child{margin-left:0}.mahjong-wall img{pointer-events:none;width:29px;height:auto;margin:0;position:absolute;bottom:0;left:0}.mahjong-wall .wall-layer-top{filter:brightness(1.06);transform:translateY(-5px)}.wall-north{top:0;left:50%;transform:translate(-50%)}.wall-south{bottom:0;left:50%;transform:translate(-50%)rotate(180deg)}.wall-east{top:50%;right:-14px;transform:translateY(-50%)rotate(90deg)}.wall-west{top:50%;left:-14px;transform:translateY(-50%)rotate(-90deg)}.mahjong-opening-dice{z-index:4;color:#e7ca83;letter-spacing:.08em;text-shadow:0 2px 4px #000000b3;justify-items:center;gap:6px;font-size:9px;font-weight:800;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.mahjong-opening-dice img{filter:drop-shadow(0 7px 6px #00000061);width:72px;animation:.48s cubic-bezier(.2,.8,.2,1.1) both mahjong-dice-settle}@keyframes mahjong-dice-settle{0%{opacity:0;transform:rotate(-35deg)translate(-18px,-12px)scale(.68)}}.mahjong-action-callout{z-index:11;color:#f6dda0;pointer-events:none;justify-items:center;gap:3px;animation:1.55s cubic-bezier(.16,.84,.22,1) both mahjong-callout;display:grid;position:absolute;transform:translate(-50%,-50%)}.mahjong-action-callout strong{color:#fff1c6;width:50px;height:50px;font-family:var(--serif);text-shadow:0 2px 3px #490b08a6;background:radial-gradient(circle at 38% 32%,#bd5547,#8f2f28 72%);border:2px solid #efcd77;border-radius:50%;place-items:center;font-size:27px;line-height:1;display:grid;box-shadow:0 0 0 6px #efcd7717,0 8px 20px #00000073,0 0 24px #efbd514d}.mahjong-action-callout span{color:#e7cf98;text-overflow:ellipsis;white-space:nowrap;background:#041d16db;border-radius:999px;max-width:92px;padding:2px 7px;font-size:8px;font-weight:800;overflow:hidden}.mahjong-action-callout.has-target{grid-template-columns:auto auto;place-items:center start;column-gap:8px}.mahjong-action-callout.has-target>strong{grid-row:1/span 2}.mahjong-callout-target{background:#041d16f0;border:1px solid #efcd7770;border-radius:9px;align-items:center;gap:6px;padding:5px 8px 5px 5px;display:flex;box-shadow:0 8px 20px #00000061}.mahjong-callout-target>span{text-overflow:clip;background:0 0;border-radius:0;gap:2px;max-width:118px;padding:0;display:grid;overflow:visible}.mahjong-callout-target b{color:#f1d386;font-family:var(--serif);white-space:nowrap;font-size:12px}.mahjong-callout-target small{color:#ecdab29e;white-space:nowrap;font-size:8px}.mahjong-callout-target .mahjong-tile-face.compact{flex:none;width:28px;height:38px}.mahjong-action-callout.callout-north{top:12%;left:50%}.mahjong-action-callout.callout-east{top:50%;right:4%;transform:translate(50%,-50%)}.mahjong-action-callout.callout-south{bottom:7%;left:50%;transform:translate(-50%,50%)}.mahjong-action-callout.callout-west{top:50%;left:4%}@keyframes mahjong-callout{0%{opacity:0;filter:blur(1px);scale:.66}18%,72%{opacity:1;filter:none;scale:1}to{opacity:0;scale:1.08}}.mahjong-focus-discard{--settle-x:0px;--settle-y:0px;z-index:9;transform-origin:50%;color:#efd282;letter-spacing:.04em;opacity:1;text-shadow:0 2px 4px #000000b8;pointer-events:none;justify-items:center;gap:6px;font-size:9px;font-weight:800;transition:opacity .35s,transform .35s cubic-bezier(.4,0,.6,1),filter .35s;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)translate(0)scale(1)}.mahjong-focus-discard.toward-east{--settle-x:clamp(95px,24vw,220px)}.mahjong-focus-discard.toward-south{--settle-y:clamp(72px,15vh,132px)}.mahjong-focus-discard.toward-west{--settle-x:clamp(-220px,-24vw,-95px)}.mahjong-focus-discard.toward-north{--settle-y:clamp(-132px,-15vh,-72px)}.mahjong-focus-discard.is-settling{transform:translate(-50%,-50%) translate(var(--settle-x),var(--settle-y)) scale(.46);filter:blur(.35px);opacity:0}.mahjong-focus-discard .mahjong-tile-face{filter:drop-shadow(0 0 8px #f4c652e0)drop-shadow(0 10px 8px #0006);width:46px;height:64px;animation:.34s cubic-bezier(.2,.85,.2,1.12) both mahjong-focus-land}@keyframes mahjong-focus-land{0%{opacity:0;transform:translateY(-18px)scale(1.16)}}.mahjong-response-progress{z-index:8;color:#f1deb4b8;text-align:left;text-shadow:0 2px 4px #000000b8;background:#041f18eb;border:1px solid #d7b1556b;border-radius:12px;justify-content:center;align-items:center;gap:8px;min-width:210px;padding:5px 11px 6px;display:flex;position:absolute;top:calc(50% + 72px);left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 2px #e4bf680d,0 5px 12px #00000047}.mahjong-response-progress>span{gap:1px;display:grid}.mahjong-response-progress strong{color:#efd282;font-size:10px}.mahjong-response-progress small{max-width:220px;font-size:8px;line-height:1.3}.mahjong-response-target{color:#f2d486;font-family:var(--serif);align-items:center;gap:4px;font-size:10px;display:flex}.mahjong-response-target .mahjong-tile-face.compact{width:25px;height:34px}.mahjong-result-banner{z-index:12;color:#f5e4b6;text-align:center;scrollbar-width:thin;background:#041f18f7;border:1px solid #deb557d1;border-radius:20px;justify-items:center;gap:6px;width:min(720px,92vw);min-width:250px;max-height:min(88vh,680px);padding:18px 22px 14px;animation:.28s cubic-bezier(.2,.86,.2,1.12) both mahjong-result-in;display:grid;position:absolute;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%);box-shadow:inset 0 0 0 3px #e4bf681a,0 18px 44px #00000094,0 0 42px #daa53d1f}.mahjong-result-banner.is-win:before{content:"胡";color:#fff0bf;width:58px;height:58px;font-family:var(--serif);background:#a43b31;border:2px solid #efcf77;border-radius:50%;place-items:center;margin-top:-50px;font-size:35px;font-weight:800;display:grid;box-shadow:0 0 0 5px #efcf771f,0 8px 24px #0000006b,0 0 28px #efc45c57}@keyframes mahjong-result-in{0%{opacity:0;transform:translate(-50%,-46%)scale(.9)}}.mahjong-result-banner>span{color:#eedcb5ad;letter-spacing:.16em;font-size:9px;font-weight:800}.mahjong-result-banner>strong{font-family:var(--serif);font-size:20px}.mahjong-result-banner>small{color:#eedcb5ad;font-size:9px}.mahjong-result-banner>em{color:#eedcb5b8;font-size:9px;font-style:normal}.mahjong-result-banner .mahjong-next-round-button{justify-content:center;align-items:center;gap:7px;min-width:152px;min-height:44px;margin-top:5px;display:inline-flex}.mahjong-revealed-players{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 8px;width:100%;display:grid}.mahjong-revealed-player{text-align:left;background:#ffffff06;border:1px solid #deb55724;border-radius:9px;min-width:0;padding:5px 7px 6px}.mahjong-revealed-player.winner{background:linear-gradient(105deg,#a43b312e,#d3a44014);border-color:#efc45c8f;box-shadow:inset 3px 0 #b74436}.mahjong-revealed-player header{justify-content:space-between;align-items:center;gap:8px;min-width:0;margin-bottom:4px;display:flex}.mahjong-revealed-player header b{color:#ead8ae;text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.mahjong-revealed-player header span{color:#eedcb585;flex:none;font-size:8px}.mahjong-revealed-player.winner header b,.mahjong-revealed-player.winner header span{color:#f3d47e}.mahjong-revealed-tile-line{align-items:flex-end;gap:4px;min-width:0;display:flex;overflow:hidden}.mahjong-revealed-hand,.mahjong-revealed-meld,.mahjong-revealed-flowers{align-items:flex-end;min-width:0;display:flex}.mahjong-revealed-meld,.mahjong-revealed-flowers{border-left:1px solid #deb55738;padding-left:4px;position:relative}.mahjong-revealed-tile-line .mahjong-tile-face.compact{border-radius:2px;flex:0 0 19px;width:19px;height:26px;padding-bottom:2px;box-shadow:inset 0 -2px #b9a981,0 1px 2px #00000047}.mahjong-revealed-tile-line .mahjong-tile-face.compact+.mahjong-tile-face.compact{margin-left:-4px}.mahjong-score-sheet{background:#00000029;border:1px solid #deb5573d;border-radius:11px;gap:7px;width:min(520px,82vw);padding:8px;display:grid}.mahjong-winner-score{gap:2px;display:grid}.mahjong-winner-score b{color:#f2d68d;font-family:var(--serif);font-size:13px}.mahjong-winner-score span{color:#f8e7bed6;font-size:9px}.mahjong-winner-score small{color:#eedcb58f;font-size:8px}.mahjong-score-deltas{border-top:1px solid #deb5572e;grid-template-columns:repeat(4,1fr);gap:4px;padding-top:6px;display:grid}.mahjong-score-deltas span{color:#eedcb59e;background:#ffffff0a;border-radius:6px;gap:1px;padding:4px 2px;font-size:9px;font-weight:800;display:grid}.mahjong-score-deltas span b{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mahjong-score-deltas span small{color:#eedcb575;font-size:8px;font-weight:650}.mahjong-score-deltas .positive{color:#f1cf77;background:#d3a44024}.mahjong-score-deltas .negative{color:#c7bca3}.mahjong-river{z-index:3;color:#eedcb56b;justify-items:center;gap:3px;min-width:112px;font-size:7px;display:grid;position:absolute}.mahjong-discard-grid{grid-template-columns:repeat(6,22px);justify-content:center;gap:2px;display:grid}.mahjong-river>span{letter-spacing:.08em;font-size:6px}.mahjong-flower-tray{justify-content:center;align-items:center;gap:1px;display:flex}.mahjong-flower-tray small{color:#d8bc74;margin-left:3px;font-size:7px}.river-east{top:50%;right:9%;transform:translateY(-50%)rotate(90deg)}.river-south{bottom:12%;left:50%;transform:translate(-50%)}.river-west{top:50%;left:9%;transform:translateY(-50%)rotate(-90deg)}.river-north{top:12%;left:50%;transform:translate(-50%)rotate(180deg)}.mahjong-tile-face{background:#d8cba9;border:1px solid #e8dfca;border-radius:5px 5px 4px 4px;width:42px;height:58px;padding:1px 1px 6px;line-height:1;display:block;position:relative;overflow:visible;box-shadow:inset 0 -5px #b9a981,0 4px 8px #00000047}.mahjong-tile-art{object-fit:fill;pointer-events:none;width:100%;height:calc(100% - 3px);display:block}.mahjong-tile-face.compact{border-width:1px;border-radius:3px;width:22px;height:29px;padding:0 0 3px;box-shadow:inset 0 -3px #b9a981,0 2px 4px #00000040}.mahjong-tile-face.latest-discard{z-index:2;filter:drop-shadow(0 0 5px #f4c652e6);animation:.3s cubic-bezier(.2,.8,.2,1.15) both mahjong-discard-land}.mahjong-tile-face.latest-discard:after{content:"";background:#f0be52;border-radius:50%;width:5px;height:5px;position:absolute;top:-5px;left:50%;transform:translate(-50%);box-shadow:0 0 7px #f0be52}@keyframes mahjong-discard-land{0%{opacity:0;translate:0 -15px;scale:1.18}}.mahjong-hand-area{padding-top:51px}.mahjong-hand{grid-template-columns:repeat(14,minmax(0,1fr));align-items:end;gap:10px 4px;width:100%;padding:9px 3px 5px;display:grid;overflow:visible}.mahjong-tile-button{aspect-ratio:42/58;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;will-change:transform;background:0 0;border:0;justify-content:center;justify-self:center;align-items:flex-end;width:min(100%,46px);max-width:46px;min-height:44px;padding:0;transition:transform .11s cubic-bezier(.2,.8,.2,1),filter .11s;display:flex}.mahjong-tile-button.selected{z-index:2;filter:drop-shadow(0 5px 5px #00000052);transform:translateY(-7px)}.mahjong-tile-button.selected .mahjong-tile-face{border-color:#f0c75e;box-shadow:0 0 0 2px #f0c75e5c,0 5px 11px #00000057}.mahjong-tile-button:disabled{cursor:default}.mahjong-tile-button .mahjong-tile-face{aspect-ratio:42/58;pointer-events:none;width:100%;height:auto}.mahjong-actions{justify-content:flex-end;gap:6px;display:flex;position:absolute;top:8px;left:10px;right:10px}.mahjong-actions button{min-height:34px;padding-inline:13px}.mahjong-actions button:disabled{cursor:not-allowed;opacity:.38}.mahjong-actions .secondary-button{color:#ffffffd1;border-color:#ffffff3d}.mahjong-claim-target{z-index:128;color:#eed38b;background:#041f18f5;border:1px solid #e1b95c8f;border-radius:11px;justify-content:center;align-items:center;gap:7px;min-width:132px;padding:6px 10px 6px 7px;display:flex;position:absolute;top:-126px;left:50%;transform:translate(-50%);box-shadow:0 10px 24px #0000005c,inset 0 0 0 2px #e4bf680f}.mahjong-claim-target>span{gap:1px;display:grid}.mahjong-claim-target b{font-family:var(--serif);white-space:nowrap;font-size:12px}.mahjong-claim-target small{color:#eedcb594;font-size:8px}.mahjong-claim-target .mahjong-tile-face.compact{width:29px;height:39px}.mahjong-hu-confirm{z-index:180;position:absolute;bottom:calc(100% + 44px);left:50%;transform:translate(-50%)}.mahjong-hand-area.has-hu .hand-meta,.mahjong-hand-area.has-hu .mahjong-actions{display:none}.mahjong-hu-confirm button{color:#fff2c9;cursor:pointer;touch-action:manipulation;background:radial-gradient(circle at 37% 29%,#c45b4d 0,#9f342c 56%,#651c19 100%);border:3px solid #f0cd73;border-radius:50%;place-content:center;justify-items:center;gap:1px;width:116px;height:116px;padding:8px;animation:.82s ease-in-out infinite alternate mahjong-hu-ready;display:grid;box-shadow:0 0 0 7px #f0cd731f,0 16px 35px #00000085,0 0 32px #efba4961,inset 0 0 0 2px #fff1c21f}.mahjong-hu-confirm button:active{transform:scale(.94)}.mahjong-hu-confirm strong{font-family:var(--serif);text-shadow:0 3px 5px #4b0806a6;font-size:56px;line-height:.88}.mahjong-hu-confirm span{color:#ffe6a7;letter-spacing:.04em;font-size:10px;font-weight:900}.mahjong-hu-confirm small{color:#ffeec1a3;font-size:8px;font-weight:800}@keyframes mahjong-hu-ready{to{box-shadow:0 0 0 10px #f0cd7312,0 18px 38px #0000008c,0 0 45px #efba4994,inset 0 0 0 2px #fff1c22e}}.mahjong-ting-panel{z-index:126;color:#eed58e;white-space:nowrap;background:#041f18f0;border:1px solid #deb5577a;border-radius:999px;justify-content:center;align-items:center;gap:7px;max-width:min(440px,82vw);min-height:35px;padding:5px 10px;display:flex;position:absolute;bottom:calc(100% + 66px);left:50%;transform:translate(-50%);box-shadow:0 8px 18px #0000004d,inset 0 0 0 2px #e4bf680d}.mahjong-ting-panel b{font-family:var(--serif);font-size:12px}.mahjong-ting-panel small{color:#eedcb5a3;font-size:9px}.mahjong-ting-waits{color:#eedcb5b3;align-items:center;gap:2px;font-size:9px;display:flex}.mahjong-ting-waits .mahjong-tile-face.compact{width:23px;height:31px}.mahjong-tile-button.ting-discard{position:relative}.mahjong-tile-button.ting-discard .mahjong-tile-face{border-color:#ecc55bb8;box-shadow:0 0 0 1px #ecc55b3d,0 4px 8px #0000004d}.mahjong-ting-mark{z-index:4;color:#fff0bd;width:21px;height:21px;font-family:var(--serif);pointer-events:none;background:#a23a30;border:1px solid #f1d27e;border-radius:50%;place-items:center;font-size:11px;font-weight:900;display:grid;position:absolute;top:-5px;right:-4px;box-shadow:0 3px 7px #00000061,0 0 8px #eec14a47}.mahjong-chi-preview{z-index:150;color:#ecd38f;background:#041f18f7;border:1px solid #deb557ad;border-radius:17px;gap:9px;width:min(470px,100vw - 24px);padding:11px;animation:.16s ease-out both mahjong-choice-in;display:grid;position:absolute;bottom:calc(100% + 72px);left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 3px #e4bf6812,0 16px 36px #0000007a}@keyframes mahjong-choice-in{0%{transform:translate(-50%)translateY(8px)scale(.98)}}.mahjong-chi-preview header{justify-content:space-between;align-items:center;padding:0 2px;display:flex}.mahjong-chi-preview header span{font-family:var(--serif);font-size:14px;font-weight:800}.mahjong-chi-preview header strong{color:#eedcb59e;font-size:9px}.mahjong-chi-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;display:grid}.mahjong-chi-options>button{cursor:pointer;background:#ffffff09;border:1px solid #deb55738;border-radius:11px;place-items:center;min-width:0;min-height:70px;padding:7px 4px;display:grid;position:relative}.mahjong-chi-options>button.selected{background:#cc993721;border-color:#e5bb5e;box-shadow:inset 0 0 0 2px #e5bb5e1f}.mahjong-gang-options{grid-template-columns:repeat(2,minmax(0,1fr))}.mahjong-gang-options .chi-option-tiles{gap:1px}.chi-option-number{color:#eedcb5b3;background:#00000038;border-radius:50%;place-items:center;width:15px;height:15px;font-size:8px;display:grid;position:absolute;top:4px;left:5px}.chi-option-tiles{justify-content:center;align-items:flex-end;gap:2px;display:flex}.chi-option-tiles>span{display:block;position:relative}.chi-option-tiles .claimed-tile{filter:drop-shadow(0 0 5px #f0be48b8);transform:translateY(-5px)}.chi-option-tiles .claimed-tile:after{content:"来牌";color:#e6bc61;white-space:nowrap;font-size:7px;position:absolute;bottom:-9px;right:50%;translate:50%}.mahjong-chi-preview footer{justify-content:flex-end;gap:7px;display:flex}.mahjong-chi-preview footer button{justify-content:center;min-width:88px;min-height:44px}.mahjong-meld-row{gap:8px;min-height:0;display:flex}.mahjong-meld{align-items:flex-end;display:flex}.mahjong-meld small{color:#d8bc74;margin-right:3px;font-size:7px}.mahjong-meld-back{background:#1f5c47;border:1px solid #7d9f86;border-radius:3px;width:22px;height:29px;padding-bottom:3px;display:block;overflow:hidden;box-shadow:inset 0 -3px #174535,0 2px 4px #00000047}.mahjong-meld-back img{object-fit:cover;width:100%;height:100%;display:block}.fullscreen-table{color:#ffffffa8;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;margin:12px auto -7px;font-size:10px;display:flex}.fullscreen-table kbd{background:#ffffff1f;border-radius:2px;padding:1px 4px}.presence-dot{background:#aaa49a;border-radius:50%;width:7px;height:7px;margin-left:auto;box-shadow:0 0 0 4px #645f5412}.presence-dot.online{background:#4d8a69;box-shadow:0 0 0 4px #4d8a691f}.room-primary-action{gap:8px;margin-top:20px;display:grid}.room-primary-action .primary-button,.room-primary-action .secondary-button{width:100%}.room-primary-action small{color:var(--muted);text-align:center;font-size:10px}.bot-room-toggle{border:1px solid var(--line);cursor:pointer;background:#ffffff6b;border-radius:7px;justify-content:space-between;align-items:center;gap:10px;min-height:54px;padding:9px 11px;display:flex}.bot-room-toggle>span{grid-template-columns:22px 1fr;align-items:center;column-gap:4px;display:grid}.bot-room-toggle>span svg{color:#867454;grid-row:1/3}.bot-room-toggle b{font-size:11px}.bot-room-toggle small{text-align:left;font-size:8px}.bot-room-toggle input{opacity:0;pointer-events:none;position:absolute}.bot-room-toggle>i{background:#cfc7bb;border-radius:999px;flex:none;width:34px;height:20px;transition:background .2s;position:relative}.bot-room-toggle>i:after{content:"";background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0000002e}.bot-room-toggle.enabled>i{background:#a88037}.bot-room-toggle.enabled>i:after{transform:translate(14px)}.bot-room-toggle:has(input:disabled){cursor:default;opacity:.7}.undo-prompt{border-left:3px solid var(--accent);background:#ffffff7a;grid-template-columns:22px 1fr auto auto;align-items:center;gap:8px;margin-top:18px;padding:12px;display:grid}.undo-prompt>div{gap:2px;display:grid}.undo-prompt strong{font-size:11px}.undo-prompt small{color:var(--muted);font-size:9px}.undo-prompt button{cursor:pointer;color:var(--muted);background:0 0;border:0;align-items:center;gap:3px;padding:5px 6px;font-size:9px;display:flex}.undo-prompt button.accept{color:var(--green)}.room-message{color:var(--accent);margin:13px 0 0;font-size:10px;line-height:1.5}.room-exit-button{color:var(--muted);cursor:pointer;text-underline-offset:3px;background:0 0;border:0;margin-top:13px;padding:7px 0;font-size:10px;text-decoration:underline}.room-exit-button:hover{color:var(--accent)}.room-exit-dialog{background:var(--paper);border-radius:7px;width:min(420px,100%);padding:34px;box-shadow:0 28px 80px #14120e47}.room-exit-dialog h2{font-family:var(--serif);margin:8px 0;font-size:25px}.room-exit-dialog p{color:var(--muted);margin:0;font-size:12px;line-height:1.8}.room-exit-dialog>div{justify-content:flex-end;gap:9px;margin-top:25px;display:flex}.rules-summary{margin-top:auto;padding-top:35px}.rules-summary p{color:#615e56;font-size:12px;line-height:1.7}.rules-summary dl{margin:19px 0 0}.rules-summary dl div{border-top:1px solid var(--line);justify-content:space-between;padding:9px 0;font-size:11px;display:flex}.rules-summary dt{color:var(--muted)}.rules-summary dd{margin:0;font-weight:600}.board-workspace{background:#d8ab69;border-radius:9px;align-content:start;justify-self:center;max-width:min(76vh,790px);padding:14px 18px 10px;display:grid;box-shadow:0 24px 60px #422e1933,inset 0 0 0 1px #4d33192b}.board-workspace:fullscreen{background:#2b2a25;border-radius:0;place-content:center;width:100vw;max-width:none;height:100vh}.board-workspace:fullscreen .gomoku-board{width:min(82vh,82vw)}.board-status{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#f9f0e0c9;border-radius:4px;grid-template-columns:32px 1fr auto;align-items:center;gap:9px;margin:0 7px 8px;padding:7px 9px;display:grid}.turn-stone{border-radius:50%;width:24px;height:24px;box-shadow:inset 3px 3px 5px #ffffff2e,0 3px 7px #2b1f1240}.turn-stone.black{background:#191a18}.turn-stone.white{background:#f9f6ef;border:1px solid #c9c0b3}.board-status>div:nth-child(2){gap:1px;display:grid}.board-status .eyebrow{font-size:7px}.board-status strong{font-size:11px}.turn-timer{text-align:right;display:grid}.turn-timer span{color:var(--muted);font-size:8px}.turn-timer strong{font-family:monospace;font-size:12px}.gomoku-board{aspect-ratio:1;cursor:crosshair;touch-action:manipulation;width:min(70vh,720px);max-width:100%;display:block}.gomoku-board.locked{cursor:default}.board-actions{justify-content:space-between;padding-top:5px;display:flex}.board-actions .text-button{color:#322416b8}.board-actions kbd{background:#ffffff5c;border-radius:2px;padding:1px 4px;font-size:9px}.profile-page{max-width:900px}.identity-strip{border-bottom:1px solid var(--line);align-items:center;gap:19px;padding:34px 0;display:flex}.profile-avatar{background:var(--dark);color:#fff;width:64px;height:64px;font-family:var(--serif);border-radius:50%;place-items:center;font-size:24px;display:grid}.identity-strip>div:last-child{gap:4px;display:grid}.identity-strip span,.identity-strip small{color:var(--muted);font-size:11px}.identity-strip strong{letter-spacing:.07em;font-family:monospace;font-size:18px}.settings-section{border-bottom:1px solid var(--line);padding:34px 0}.settings-section h2{font-family:var(--serif);margin:0 0 22px;font-size:21px}.settings-section label{max-width:420px}.settings-section input,.admin-login input{border:1px solid var(--line);background:#ffffff9e;border-radius:4px;min-height:45px;padding:0 12px}.settings-section .primary-button{margin-top:15px}.save-message{color:var(--green);margin-left:14px;font-size:12px}.security-row{justify-content:space-between;align-items:center;gap:30px;display:flex}.security-row p{color:var(--muted);margin:5px 0 0;font-size:12px}.settings-note{color:var(--muted);margin:-12px 0 20px;font-size:12px}.password-grid{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.password-save{margin-top:17px}.history-page{width:min(1080px,100% - 8vw);margin:0 auto;padding:58px 0 90px}.empty-state{color:var(--muted);text-align:center;padding:55px 0;font-size:13px}.history-list{border-top:1px solid var(--line);margin-top:35px}.history-head,.history-row{border-bottom:1px solid var(--line);grid-template-columns:62px minmax(300px,1.5fr) .6fr .45fr .7fr 24px;align-items:center;gap:16px;padding:14px 4px;display:grid}.history-head{color:var(--muted);font-size:10px}.history-row{min-height:68px;transition:padding .18s,background .18s}.history-row:hover{background:#ffffff8c;padding-left:12px}.history-result{width:35px;height:35px;font-family:var(--serif);border-radius:50%;place-items:center;font-size:14px;display:grid}.result-胜{background:var(--dark);color:#fff}.result-负{color:var(--muted);border:1px solid #c9c1b7}.result-和棋,.result-未完成,.result-进行中{color:#716a60;background:#e4dbce;font-size:10px}.history-row>span:nth-child(2){gap:5px;display:grid}.history-match small{text-overflow:ellipsis;white-space:nowrap;max-width:520px;overflow:hidden}.history-row b{font-size:13px}.history-row small{color:var(--muted);font-size:9px}.history-row em{color:#aaa49a;text-align:center;font-size:10px;font-style:normal}.history-row code,.history-row>span,.history-row time{color:var(--muted);font-size:11px}.history-row svg{color:#aaa49a}.replay-page{background:#e9dfd0;min-height:100svh;padding:0 3vw 3vw}.replay-topbar{border-bottom:1px solid var(--line);grid-template-columns:1fr auto 1fr;align-items:center;min-height:78px;display:grid}.replay-topbar>button{cursor:pointer;width:fit-content;color:var(--muted);background:0 0;border:0;align-items:center;gap:7px;display:flex}.replay-topbar>div{text-align:center;gap:3px;display:grid}.replay-topbar>div strong{font-family:var(--serif);font-size:16px}.replay-topbar>div i{color:var(--muted);padding:0 8px;font-style:normal;font-weight:400}.replay-topbar>span{color:var(--muted);justify-self:end;align-items:center;gap:6px;font-size:11px;display:flex}.replay-layout{grid-template-columns:minmax(230px,300px) minmax(500px,1fr);gap:4vw;max-width:1250px;margin:0 auto;padding-top:4vh;display:grid}.replay-context{padding-top:25px}.replay-context h1{font-family:var(--serif);margin:17px 0 4px;font-size:31px}.replay-context p{color:var(--muted);margin:0;font-size:12px}.replay-context dl{margin-top:35px}.replay-context dl div{border-bottom:1px solid var(--line);justify-content:space-between;padding:11px 0;font-size:11px;display:flex}.replay-context dt{color:var(--muted)}.replay-context dd{margin:0;font-weight:600}.replay-board{justify-self:center;width:fit-content}.replay-controls{background:#ffffff87;border-radius:4px;grid-template-columns:38px minmax(220px,1fr) 70px 38px;align-items:center;gap:8px;margin-top:12px;padding:8px;display:grid}.replay-controls button{cursor:pointer;background:0 0;border:0;place-items:center;width:34px;height:34px;display:grid}.replay-controls button:disabled{opacity:.3}.replay-controls input{accent-color:var(--accent)}.replay-controls strong{text-align:center;font-family:monospace;font-size:11px}.history-detail-layout{grid-template-columns:minmax(230px,300px) minmax(480px,760px)}.event-replay{background:#ffffff7a;border-radius:5px;min-width:0;padding:26px;box-shadow:0 18px 50px #322b200f}.event-replay>header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:end;gap:20px;padding-bottom:20px;display:flex}.event-replay h2{font-family:var(--serif);margin:5px 0 0;font-size:24px}.event-replay>header>strong{color:var(--muted);font-family:monospace;font-size:11px}.event-list{height:min(58vh,540px);overflow-y:auto}.event-row{border-bottom:1px solid var(--line);grid-template-columns:45px 1fr auto;align-items:center;gap:14px;min-height:54px;display:grid}.event-row code,.event-row time{color:var(--muted);font-size:10px}.event-row span{gap:3px;display:grid}.event-row b{font-size:12px}.event-row small{color:var(--muted);font-size:10px}.admin-login{background:#e9e1d5;flex-direction:column;justify-content:center;align-items:center;min-height:100svh;padding:30px;display:flex}.admin-login>a:first-child{margin-bottom:35px}.admin-login form{border-top:4px solid var(--accent);background:var(--paper);gap:16px;width:min(430px,100%);padding:42px;display:grid;box-shadow:0 24px 70px #2621191f}.admin-login h1{font-family:var(--serif);margin:5px 0 -6px;font-size:32px}.admin-login p{color:var(--muted);margin:0 0 14px;font-size:13px;line-height:1.7}.admin-login .back-link{color:var(--muted);margin-top:22px;font-size:12px}.admin-shell{background:#f3efe8;grid-template-columns:230px 1fr;min-height:100svh;display:grid}.admin-nav{background:var(--dark);color:#f1ebdf;flex-direction:column;height:100svh;padding:28px 19px;display:flex;position:sticky;top:0}.admin-badge{color:#ffffff8f;border:1px solid #ffffff21;border-radius:99px;align-items:center;gap:5px;width:fit-content;margin-top:18px;padding:5px 8px;font-size:9px;display:flex}.admin-nav nav{gap:5px;margin-top:47px;display:grid}.admin-nav nav a{color:#ffffff91;cursor:pointer;border-radius:3px;align-items:center;gap:11px;padding:11px;font-size:13px;display:flex}.admin-nav nav a:hover,.admin-nav nav a.active{color:#fff;background:#ffffff12}.admin-nav>a:last-child{color:#ffffff78;margin-top:auto;font-size:11px}.admin-logout{color:#ffffff7a;cursor:pointer;background:0 0;border:0;align-items:center;gap:7px;margin-top:auto;padding:8px 10px;font-size:11px;display:flex}.admin-logout:hover{color:#fff}.admin-main{width:min(1180px,100% - 7vw);margin:0 auto;padding:49px 0 80px}.admin-main>header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-end;padding-bottom:31px;display:flex}.admin-main h1{font-family:var(--serif);margin:6px 0 0;font-size:34px}.system-healthy{color:var(--green);align-items:center;gap:7px;font-size:11px;display:flex}.system-healthy i{background:#4d8a69;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #4d8a691f}.admin-message{color:var(--accent);margin:15px 0 0;font-size:11px}.metric-line{border-bottom:1px solid var(--line);grid-template-columns:repeat(4,1fr);display:grid}.metric-line>div{border-left:1px solid var(--line);gap:2px;padding:28px 5px 26px 20px;display:grid}.metric-line>div:first-child{border-left:0;padding-left:0}.metric-line span,.metric-line small{color:var(--muted);font-size:10px}.metric-line strong{font-family:Georgia,serif;font-size:32px}.admin-section{border-bottom:1px solid var(--line);padding:38px 0 10px}.admin-section-title h2{font-family:var(--serif);margin:6px 0 0;font-size:22px}.admin-section-title>div>small{color:var(--muted);margin-top:5px;font-size:10px;display:block}.admin-title-actions{justify-content:flex-end;align-items:center;gap:10px;display:flex}.admin-title-actions>span{color:var(--muted);font-size:10px}.danger-button{color:#fff;cursor:pointer;min-height:39px;font:inherit;background:#b94c3d;border:1px solid #b94c3d;border-radius:4px;justify-content:center;align-items:center;gap:7px;padding:0 15px;font-size:11px;display:inline-flex}.danger-button.subtle{color:var(--accent);background:#b94c3d0f}.danger-button:disabled{border-color:var(--line);color:#aaa59b;cursor:not-allowed;opacity:.7;background:0 0}.invite-list{border-top:1px solid var(--line);margin-top:22px}.invite-list>div{border-bottom:1px solid var(--line);grid-template-columns:minmax(180px,1fr) 1fr 70px 50px;align-items:center;gap:14px;padding:13px 0;display:grid}.invite-list code,.user-table code{color:#4d4b45;letter-spacing:.05em;font-size:12px}.invite-list span{color:var(--green);gap:2px;font-size:11px;display:grid}.invite-list span strong{font-size:11px}.invite-list span small{color:var(--muted);font-size:9px;font-weight:400}.invite-list span.consumed{color:#976e27}.invite-list span.revoked{color:var(--muted)}.invite-list button{cursor:pointer;color:var(--muted);background:0 0;border:0;align-items:center;gap:5px;font-size:10px;display:flex}.invite-list .danger-link{color:var(--accent)}.user-table{margin-top:22px}.table-head,.table-row{border-bottom:1px solid var(--line);grid-template-columns:1.2fr 1.1fr .5fr .6fr .5fr;align-items:center;gap:15px;padding:11px 0;display:grid}.table-head{color:var(--muted);font-size:10px}.table-row{min-height:55px;font-size:12px}.user-cell{align-items:center;gap:9px;display:flex}.user-cell i{width:29px;height:29px;font-family:var(--serif);background:#ded5c8;border-radius:50%;place-items:center;font-style:normal;display:grid}.status-disabled{width:fit-content;color:var(--accent);background:#b94c3d1a;border-radius:99px;padding:4px 8px;font-size:10px;font-weight:700}.admin-empty{color:var(--muted);padding:18px 0;font-size:11px}.room-admin-list{border-top:1px solid var(--line);margin-top:22px}.room-admin-list>div{border-bottom:1px solid var(--line);grid-template-columns:.7fr 1fr .7fr 1.2fr .7fr;align-items:center;gap:15px;min-height:56px;font-size:11px;display:grid}.room-admin-list code{letter-spacing:.08em}.room-admin-list span{gap:2px;display:grid}.room-admin-list small,.room-admin-list time{color:var(--muted);font-size:9px}.room-admin-list .danger-link{color:var(--accent);cursor:pointer;background:0 0;border:0;font-size:10px}.user-manager{background:var(--paper);border-radius:7px;width:min(620px,100%);max-height:calc(100svh - 35px);padding:35px 40px;position:relative;overflow-y:auto;box-shadow:0 30px 90px #14120e4d}.user-manager h2{font-family:var(--serif);margin:7px 0 3px;font-size:28px}.user-manager>code{color:var(--muted);font-size:11px}.manager-block{border-top:1px solid var(--line);margin-top:27px;padding-top:22px}.manager-block h3{font-family:var(--serif);margin:0 0 15px;font-size:16px}.manager-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.manager-block label{color:var(--muted);gap:6px;font-size:10px;display:grid}.manager-block input,.manager-block select{border:1px solid var(--line);background:#fff;border-radius:3px;min-height:41px;padding:0 10px}.manager-block>.secondary-button{margin-top:12px}.danger-zone{border-color:#b94c3d47;margin-bottom:5px}.danger-zone p{color:var(--muted);margin:-5px 0 14px;font-size:10px;line-height:1.6}.loading-screen{text-align:center;background:var(--paper);place-content:center;gap:16px;min-height:100svh;display:grid}.loading-screen span{color:var(--muted);font-size:12px}.room-recovery-screen{background:radial-gradient(circle at 50% 42%,#1d60481a,transparent 38%),var(--paper);text-align:center;place-content:center;justify-items:center;gap:26px;min-height:100svh;padding:24px;display:grid}.room-recovery-card{border:1px solid var(--line);background:#ffffffc7;border-radius:12px;justify-items:center;gap:10px;width:min(460px,100vw - 32px);padding:38px 34px 32px;display:grid;box-shadow:0 20px 55px #1e18111a}.room-recovery-mark{color:#e7ca83;width:64px;height:64px;font-family:var(--serif);background:#173c30;border:1px solid #aa8b4d;border-radius:50%;place-items:center;margin:7px 0 2px;font-size:25px;font-weight:800;display:grid;box-shadow:inset 0 0 0 4px #e8cc8914,0 9px 24px #1430262e}.room-recovery-card h1{font-family:var(--serif);margin:0;font-size:clamp(27px,5vw,38px)}.room-recovery-card p{max-width:340px;color:var(--muted);margin:0;font-size:13px;line-height:1.7}.room-recovery-actions{justify-content:center;gap:10px;width:100%;margin-top:13px;display:flex}.room-recovery-actions button{justify-content:center;min-width:150px;min-height:46px}@media (width<=520px){.room-recovery-card{padding:32px 20px 24px}.room-recovery-actions{flex-direction:column-reverse}.room-recovery-actions button{width:100%}}@media (width<=980px){.auth-page{grid-template-columns:1fr}.auth-scene{min-height:44svh;padding:38px 44px}.auth-scene:before{border-radius:28px;right:18px}.auth-scene:after,.auth-table{border-radius:18px;right:30px}.playing-cards{transform-origin:100% 0;top:9%;right:10%;transform:rotate(7deg)scale(.75)}.chess-pieces{bottom:13%;right:11%}.mahjong-tiles{bottom:13%;left:12%}.scene-note{bottom:42px;right:54px}.auth-panel{min-height:620px}.app-shell{grid-template-columns:76px 1fr}.side-nav{align-items:center;padding-inline:12px}.side-nav .brand span:last-child,.side-nav nav a span,.side-user>div:nth-child(2),.side-user button{display:none}.side-nav nav a{justify-content:center;padding:13px}.side-user{display:block}.room-layout,.foundation-layout,.replay-layout{grid-template-columns:1fr}.replay-context{display:none}.room-context{grid-template-columns:1fr 1fr;gap:20px;display:grid}.seat-list{margin-top:0}.rules-summary{grid-column:1/-1;margin-top:0}.board-workspace{grid-row:1}.table-foundation{grid-row:1;width:min(72vh,720px)}.admin-shell{grid-template-columns:76px 1fr}.admin-nav{align-items:center;padding-inline:10px}.admin-nav .brand span:last-child,.admin-badge,.admin-nav nav a:not(.active){font-size:0}.admin-nav nav a{justify-content:center}}@media (width<=680px){.seat-bot-add,.seat-bot-remove,.felt-seat-bot-action{min-width:44px;min-height:44px}.felt-seat-bot-action{white-space:normal;justify-content:center;max-width:76px;padding-inline:6px;line-height:1.15}.auth-scene{min-height:292px;padding:30px}.auth-scene:before{border-width:8px;border-radius:23px;inset:12px}.auth-scene:after,.auth-table{border-radius:15px;inset:22px}.auth-brand .brand{font-size:23px}.auth-brand .brand-mark{width:32px;height:32px}.playing-cards{top:10%;right:4%;transform:rotate(8deg)scale(.53)}.chess-pieces{bottom:13%;right:8%}.chess-pieces i{font-size:69px}.chess-pieces i:last-child{font-size:58px}.mahjong-tiles{gap:4px;bottom:13%;left:8%}.mahjong-tiles i{border-width:3px 3px 7px;width:38px;font-size:19px}.table-stones i{width:29px}.table-stones i:first-child{top:43%;left:27%}.table-stones i:nth-child(2){top:47%;left:38%}.table-stones i:nth-child(3){display:none}.table-stones i:nth-child(4){top:42%;left:49%}.scene-note{bottom:31px;right:37px}.scene-note span{display:none}.auth-panel{min-height:552px;padding:40px 24px calc(36px + env(safe-area-inset-bottom))}.auth-heading h1{font-size:34px}.segmented{margin-top:28px}.segmented button{min-width:52px;min-height:44px;padding-bottom:8px}.auth-form input,.settings-section input,.admin-login input,.manager-block input,.manager-block select{font-size:16px}.app-shell{display:block}.side-nav{z-index:10;width:100%;height:calc(63px + env(safe-area-inset-bottom));padding:7px 16px calc(7px + env(safe-area-inset-bottom));border-top:1px solid var(--line);border-right:0;flex-direction:row;justify-content:center;position:fixed;inset:auto 0 0}.side-nav>.brand,.side-user{display:none}.side-nav nav{justify-content:space-around;width:100%;margin:0;display:flex}.side-nav nav a{flex-direction:column;flex:1;gap:3px;padding:5px;font-size:10px}.side-nav nav a span{display:block}.side-nav nav a.active{box-shadow:inset 0 -2px var(--accent)}.lobby-page,.profile-page{width:calc(100% - 36px);padding:31px 0 calc(92px + env(safe-area-inset-bottom))}.page-header{flex-direction:column;align-items:flex-start;padding-bottom:28px}.page-header h1{font-size:34px}.wallet{border-left:0;width:100%;padding-left:0}.resume-game-banner{grid-template-columns:46px 1fr;gap:13px;margin-top:22px;padding:16px}.resume-game-mark{width:44px;height:44px;font-size:20px}.resume-game-banner h2{font-size:18px}.resume-game-banner p{font-size:11px}.resume-game-banner .primary-button{grid-column:1/-1;justify-content:center;width:100%;min-height:48px}.quick-room{grid-template-columns:1fr;gap:22px}.join-control{height:52px}.join-control button{justify-content:flex-end;min-width:98px}.game-row{grid-template-columns:48px 1fr 70px 18px;gap:9px}.game-players{display:none}.status-live,.status-soon{justify-self:end}.dialog-backdrop{padding:12px 12px max(12px, env(safe-area-inset-bottom));place-items:end center}:is(body:has(.dialog-backdrop) .side-nav,body:has(.dialog-backdrop) .admin-nav){pointer-events:none;transform:translateY(110%)}.create-dialog,.room-exit-dialog,.user-manager{width:100%;max-height:min(88svh,760px);padding:30px 24px calc(24px + env(safe-area-inset-bottom));border-radius:14px 14px 8px 8px;animation-name:mobile-sheet-rise}@keyframes mobile-sheet-rise{0%{opacity:0;transform:translateY(28px)}}.dialog-close{place-items:center;width:44px;height:44px;display:grid;top:5px;right:7px}.room-exit-dialog>div{grid-template-columns:1fr 1fr;display:grid}.room-exit-dialog button{justify-content:center;min-height:48px}.time-setting{flex-direction:column}.time-setting>div{justify-content:flex-start}.room-page{padding:0 13px calc(26px + env(safe-area-inset-bottom))}.room-topbar{grid-template-columns:1fr auto 1fr;height:62px}.room-topbar .brand{display:none}.back-to-lobby{min-height:44px;font-size:12px}.mobile-room-title{justify-items:center;gap:2px;display:grid}.mobile-room-title strong{font-family:var(--serif);font-size:13px}.mobile-room-title code{color:var(--muted);letter-spacing:.12em;font-size:10px}.room-countdown{gap:4px;min-height:44px}.room-countdown span{display:none}.room-countdown strong{font-size:12px}.room-layout{padding-top:16px}.room-context{grid-template-columns:1fr}.room-context>div:first-child,.room-context.has-game .compact-seats{display:none}.room-context.has-game{padding-top:0}.room-context.has-game .round-sidebar-status{margin-top:2px;padding:13px 14px}.rules-summary{display:none}.board-workspace{width:100%;padding:8px}.gomoku-board{width:100%}.table-foundation{border-radius:10px;width:100%;padding:12px;box-shadow:0 16px 38px #33221533,inset 0 0 0 2px #ffffff14,inset 0 0 0 9px #361e1024}.table-foundation.has-game{width:100%}.felt-table{aspect-ratio:1/.92}.table-foundation.has-game .felt-table{aspect-ratio:1.45}.felt-seat{gap:4px;min-width:78px;padding:4px 5px}.felt-seat>span{width:22px;height:22px;font-size:10px}.felt-seat strong{max-width:50px;font-size:9px}.felt-seat small{display:none}.felt-seat-east{right:2%}.felt-seat-west{left:2%}.felt-seat-north{top:2%}.felt-seat-south{bottom:2%}.table-center-status{width:160px;min-height:90px}.table-center-status strong{font-size:16px}.guandan-trick{gap:4px;min-width:92px;max-width:108px}.guandan-trick.tribute-stage{min-width:142px;max-width:150px;padding:8px}.tribute-progress span{padding:2px 4px;font-size:7px}.guandan-trick>span{letter-spacing:.08em;font-size:7px}.guandan-trick>strong{font-size:12px;line-height:1.35}.guandan-trick>small{display:none}.guandan-trick .card-face.compact{width:28px;height:40px}.guandan-hand-area{margin-top:9px;padding:57px 8px 10px}.hand-meta{min-height:24px;padding:0 3px}.guandan-hand{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px 1px;padding-top:8px}.playing-card{width:min(100%,44px);max-width:44px}.card-face{border-width:1px;padding:4px 3px}.card-face b{font-size:11px}.card-face i{font-size:15px}.guandan-actions{justify-content:stretch;top:8px;left:8px;right:8px}.guandan-actions button{flex:1;justify-content:center;min-height:44px}.mahjong-table-center{inset:18% 14%}.mahjong-wall-status{min-width:86px}.mahjong-wall-status strong{font-size:10px}.mahjong-focus-tile{left:calc(50% + 56px)}.mahjong-focus-tile .mahjong-tile-face{width:30px;height:42px}.mahjong-river{min-width:58px}.mahjong-river>div{max-width:72px}.mahjong-river .mahjong-tile-face.compact{width:16px;height:23px}.mahjong-hand-area{padding-top:104px}.mahjong-actions{flex-wrap:wrap;justify-content:center}.mahjong-actions button{flex:1 0 20%;justify-content:center;min-height:44px;padding-inline:8px}.mahjong-hand{grid-template-columns:repeat(7,minmax(0,1fr));gap:9px 1px}.mahjong-tile-button{width:min(100%,44px);max-width:44px}.mahjong-tile-face{width:42px;height:56px}.mahjong-tile-face b{font-size:17px}.fullscreen-table{min-height:44px;margin-block:4px -9px;padding-inline:14px}.fullscreen-table kbd{display:none}.metric-line{grid-template-columns:repeat(2,1fr)}.password-grid{grid-template-columns:1fr}.history-page{width:calc(100% - 36px);padding:31px 0 calc(90px + env(safe-area-inset-bottom))}.history-head{display:none}.history-row{grid-template-columns:44px 1fr auto 20px}.history-row>code,.history-row>span:nth-child(4){display:none}.replay-page{padding-inline:12px}.replay-topbar{grid-template-columns:1fr auto}.replay-topbar>div{display:none}.replay-layout{padding-top:16px}.replay-board{width:100%}.replay-controls{grid-template-columns:38px 1fr 58px 38px}.event-replay{padding:18px 14px}.event-list{height:60vh}.admin-shell{padding-bottom:calc(66px + env(safe-area-inset-bottom));display:block}.admin-nav{z-index:30;width:100%;height:calc(64px + env(safe-area-inset-bottom));padding:7px 8px calc(7px + env(safe-area-inset-bottom));flex-direction:row;align-items:center;position:fixed;inset:auto 0 0}.admin-nav>.brand,.admin-badge{display:none}.admin-nav nav{flex:1;justify-content:space-around;gap:2px;margin:0;display:flex}.admin-nav nav a{justify-content:center;width:46px;min-height:46px;padding:0;font-size:0}.admin-nav nav a:last-child{display:none}.admin-nav nav a svg{width:20px;height:20px}.admin-logout{justify-content:center;width:46px;min-height:46px;margin:0;padding:0;font-size:0}.admin-logout svg{width:20px;height:20px}.admin-main{width:calc(100% - 36px);padding:31px 0 46px}.admin-main>header{flex-direction:column;align-items:flex-start;gap:13px}.admin-main h1{font-size:29px}.metric-line>div{padding:20px 8px 18px 12px}.metric-line strong{font-size:27px}.admin-section-title{align-items:center}.admin-section-title>span{font-size:10px}.admin-section-title{flex-direction:column;align-items:flex-start}.admin-title-actions{justify-content:space-between;width:100%}.admin-title-actions .danger-button,.admin-title-actions .secondary-button{min-height:44px}.admin-section-title .secondary-button{min-width:44px;min-height:44px}.invite-list>div{grid-template-columns:minmax(0,1fr) auto auto;gap:7px 8px;padding:12px 0}.invite-list span{grid-area:2/1}.invite-list>div>button:first-of-type{grid-area:1/2/3}.invite-list>div>.danger-link{grid-area:1/3/3}.invite-list button{justify-content:center;min-width:44px;min-height:44px}.user-table{overflow:visible}.table-head{display:none}.table-row{grid-template-columns:minmax(0,1fr) auto auto;gap:5px 9px;min-width:0;padding:14px 0}.table-row .user-cell{grid-area:1/1}.table-row>code{grid-area:2/1}.table-row>strong{grid-area:1/2;align-self:center}.table-row>strong:after{content:" 张";color:var(--muted);font-size:9px;font-weight:400}.table-row>.status-live,.table-row>.status-disabled{grid-area:1/3;align-self:center}.table-row>.text-button{grid-area:2/2/auto/4;justify-self:end;min-width:44px;min-height:44px}.room-admin-list{overflow:visible}.room-admin-list>div{grid-template-columns:1fr auto;gap:8px 12px;min-width:0;padding:13px 0}.room-admin-list>div>code{grid-area:1/1}.room-admin-list>div>span:first-of-type{grid-area:2/1}.room-admin-list>div>span:nth-of-type(2){grid-area:1/2}.room-admin-list>div>time{grid-area:3/1}.room-admin-list>div>.danger-link{grid-area:2/2/4;min-height:44px}.manager-grid{grid-template-columns:1fr}.manager-block input,.manager-block select{min-height:48px}.manager-block>.secondary-button{justify-content:center;width:100%;min-height:48px}.danger-zone .danger-button{width:100%;min-height:48px}.user-manager{max-height:90svh}.user-manager h2{font-size:25px}.settings-section .primary-button,.password-save{min-height:48px}.save-message{margin:12px 0 0;display:block}}@media (orientation:landscape){.game-active .mahjong-response-progress{top:50%;left:calc(50% + clamp(118px,13vw,190px));transform:translate(-50%,-50%)}.game-active .mahjong-claim-target{display:none}.game-active .mahjong-action-callout.callout-south{bottom:55%}.game-active .river-north{left:28%}.game-active .river-south{left:72%}}@media (orientation:landscape) and (height<=500px){.room-page{height:100svh;padding:0 10px 8px;overflow:hidden}.room-topbar{height:50px}.room-layout{padding-top:8px}.room-context.has-game{display:none}.table-foundation.has-game{border-radius:8px;grid-template-columns:minmax(280px,.9fr) minmax(390px,1.25fr);align-items:stretch;gap:8px;width:min(824px,100vw - 20px);height:calc(100svh - 66px);padding:7px 9px;display:grid}.table-foundation.has-game .felt-table{aspect-ratio:auto;border-radius:7px;height:auto;min-height:0}.table-foundation.has-game .guandan-hand-area{min-width:0;height:100%;margin-top:0;padding:47px 7px 5px}.table-foundation.has-game .mahjong-hand-area{padding-top:50px}.table-foundation.has-game .hand-meta{display:none}.table-foundation.has-game .guandan-hand{grid-template-columns:repeat(9,minmax(0,1fr));gap:7px 2px;padding-block:5px 2px}.table-foundation.has-game .playing-card{width:min(100%,37px);max-width:37px}.table-foundation.has-game .mahjong-hand{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px 3px}.table-foundation.has-game .mahjong-tile-button{width:min(100%,42px);max-width:42px}.table-foundation.has-game .guandan-actions button,.table-foundation.has-game .mahjong-actions button{min-height:44px}.table-foundation.has-game .fullscreen-table{display:none}.table-foundation.has-game .felt-seat{gap:5px;min-width:94px;padding:4px 6px}.table-foundation.has-game .felt-seat>span{width:23px;height:23px;font-size:10px}.table-foundation.has-game .felt-seat strong{max-width:57px;font-size:9px}.table-foundation.has-game .felt-seat small{display:none}.table-foundation.has-game .felt-seat-east{right:2%}.table-foundation.has-game .felt-seat-west{left:2%}.table-foundation.has-game .guandan-trick{gap:3px;min-width:112px;max-width:126px}.table-foundation.has-game .guandan-trick>strong{font-size:12px;line-height:1.35}.table-foundation.has-game .guandan-trick>small{display:none}.table-foundation.has-game .mahjong-table-center{inset:19% 24%}.table-foundation.has-game .mahjong-wall-status{min-width:94px}}@media (width<=370px) and (orientation:portrait){.guandan-hand,.mahjong-hand{grid-template-columns:repeat(6,minmax(0,1fr))}}.room-utility-left{align-items:center;gap:12px;display:flex}.sound-toggle{width:44px;height:44px;color:inherit;cursor:pointer;background:0 0;border:0;place-items:center;display:grid}.in-game-room-code{color:#edd6a2b8;letter-spacing:.04em;font-size:13px}.in-game-room-code strong{color:#e2c37a;letter-spacing:.08em;margin-left:5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:15px}.game-active{z-index:40;color:#f3e8d2;background:#071b14 url(/assets/private-card-table.webp) 50%/cover no-repeat;width:100vw;height:100svh;min-height:0;padding:0;position:fixed;inset:0;overflow:hidden}.game-active,.game-active *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.game-active img,.game-active svg{-webkit-user-drag:none}.game-active .room-topbar{z-index:50;color:#d9bd77;border:0;align-items:center;height:74px;padding:0 clamp(24px,3vw,54px);display:flex;position:absolute;top:0;left:0;right:0}.game-active .room-topbar>.brand,.game-active .mobile-room-title{display:none}.game-active .back-to-lobby{color:#e6d4ad;min-width:44px;min-height:44px}.game-active .back-to-lobby:hover,.game-active .sound-toggle:hover{color:#f4d88e}.game-active .room-countdown{color:#e7d2a2ad;border-left:1px solid #dabe7e4d;justify-self:auto;margin-left:clamp(14px,2vw,34px);padding-left:clamp(14px,2vw,34px);font-size:13px}.game-active .room-countdown strong{color:#e6c77e;font-variant-numeric:tabular-nums;font-size:15px}.game-active .room-layout{max-width:none;padding:0;display:block;position:absolute;inset:0}.game-active .room-context{display:none}.game-active .table-foundation.has-game{width:100%;max-width:none;height:100%;box-shadow:none;background:0 0;border-radius:0;padding:0;display:block;position:absolute;inset:0}.game-active .table-foundation.has-game .felt-table{aspect-ratio:auto;width:100%;height:100%;box-shadow:none;background:0 0;border-radius:0;position:absolute;inset:0;overflow:visible}.game-active .felt-line,.game-active .fullscreen-table{display:none}.game-active .game-round-hud{z-index:4;color:#ebd9b294;letter-spacing:.06em;gap:3px;font-size:9px;display:grid;position:absolute;top:13%;left:4.8%}.game-active .game-round-hud>span{color:#c9a961;letter-spacing:.16em;font-size:8px;font-weight:800}.game-active .game-round-hud>strong{color:#ead9b3;font-family:var(--serif);font-size:15px}.game-active .game-round-hud>small{font-size:9px}.game-active .felt-seat{z-index:18;color:#f2dfb7;background:#061e17eb;border:1px solid #9b783c;border-radius:999px;gap:9px;min-width:clamp(146px,12vw,210px);padding:8px 13px 8px 9px;box-shadow:inset 0 0 0 2px #e0be6c17,0 7px 15px #0000006b}.game-active .felt-seat>span{color:#18342a;background:#c5a561;border:1px solid #80602e;width:34px;height:34px;font-size:14px;box-shadow:inset 0 1px #ffffff40}.game-active .felt-seat strong{color:#ead8b1;max-width:clamp(82px,8vw,145px);font-size:13px;font-weight:650}.game-active .felt-seat small{color:#ebd8b180;font-size:8px}.game-active .felt-seat:after{content:"";background:#947848;border-radius:50%;flex:none;width:8px;height:8px;margin-left:auto;box-shadow:0 0 0 3px #c8a65b14}.game-active .felt-seat.active-turn{border-color:#e1ba63;animation:1.7s ease-in-out infinite active-seat-breathe;box-shadow:inset 0 0 0 2px #f8d37a29,0 0 0 3px #d9af521f,0 0 24px #daa841a6,0 7px 15px #00000073}.game-active .felt-seat.active-turn:after{background:#e1b85f;box-shadow:0 0 0 5px #e0b85f21}.game-active .felt-seat-north{top:5.2%}.game-active .felt-seat-east{top:38.5%;right:4.5%}.game-active .felt-seat-west{top:38.5%;left:4.5%}.game-active .felt-seat-south{z-index:125;bottom:1.1%}.game-active .felt-table:has(.mahjong-table-center) .felt-seat-south{bottom:18%}@keyframes active-seat-breathe{50%{filter:brightness(1.1);box-shadow:inset 0 0 0 2px #f8d37a33,0 0 0 5px #d9af5217,0 0 33px #daa841b8,0 7px 15px #00000073}}.game-active .guandan-trick{gap:8px;min-width:220px;min-height:145px;animation:.35s ease-out table-focus-in;top:42%}.game-active .guandan-trick>span{color:#c5a45d;font-size:9px}.game-active .guandan-trick>strong{color:#f0dfb8;font-size:18px}.game-active .guandan-trick>small{color:#ecdbb57a}.game-active .trick-cards{align-items:center;min-height:92px}.game-active .trick-cards .card-face{width:clamp(48px,4vw,68px);height:clamp(72px,6vw,98px);animation:.32s cubic-bezier(.18,.78,.25,1.15) both card-land}.game-active .trick-cards .card-face:nth-child(2n){transform:translateY(-4px)rotate(2deg)}.game-active .trick-cards .card-face:nth-child(3n){transform:translateY(3px)rotate(-3deg)}.game-active .guandan-trick.tribute-stage{background:#052219c7;border-color:#dab4586b;min-width:min(360px,70vw);box-shadow:0 18px 42px #0000003d}@keyframes card-land{0%{translate:0 -22px;scale:.88}}@keyframes table-focus-in{0%{opacity:0;scale:.96}}.game-active .guandan-hand-area{z-index:22;height:34%;box-shadow:none;background:0 0;border:0;border-radius:0;margin:0;padding:0;position:absolute;bottom:3%;left:4.5%;right:4.5%}.game-active .hand-meta{z-index:5;color:#eedcb580;pointer-events:none;background:#051d168a;border-radius:999px;justify-content:center;gap:12px;width:max-content;min-height:0;margin:0;padding:4px 10px;font-size:9px;display:flex;position:absolute;top:-91px;left:50%;transform:translate(-50%)}.game-active .hand-meta strong{color:#dabc71}.game-active .guandan-hand{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:calc(100% - 3px);padding:0;display:block;position:absolute;bottom:0;left:0;right:0;overflow:visible}.game-active .playing-card{left:var(--fan-left,50%);aspect-ratio:36/62;touch-action:none;width:clamp(60px,6.4vw,108px);max-width:none;transform:translateX(-50%) translateX(var(--fan-edge-shift,0%)) translateY(var(--fan-y,0)) rotate(var(--fan-angle,0deg));transform-origin:50% 100%;transition:transform .14s cubic-bezier(.2,.9,.25,1.18),filter .14s,z-index;position:absolute;bottom:0}.game-active .playing-card:hover:not(:disabled){transform:translateX(-50%) translateX(var(--fan-edge-shift,0%)) translateY(calc(var(--fan-y,0px) - 7px)) rotate(var(--fan-angle,0deg))}.game-active .playing-card.selected{transform:translateX(-50%) translateX(var(--fan-edge-shift,0%)) translateY(calc(var(--fan-y,0px) - 31px)) rotate(var(--fan-angle,0deg)) scale(1.07);filter:drop-shadow(0 0 7px #ebb948c2)drop-shadow(0 10px 8px #0000006b)}.game-active .playing-card.selected .card-face{border-color:#f1c56c;box-shadow:0 0 0 2px #f6c660bf,0 0 18px #efb4379e,0 12px 20px #00000047}.game-active .playing-card.selected .card-center-mark{opacity:1}.game-active .playing-card.gesture-hit .card-face{animation:.15s cubic-bezier(.2,.9,.25,1.2) card-brush-pulse}.game-active .playing-card.level-wild-card:not(.selected) .card-face{box-shadow:inset 0 0 0 1px #bd342b4d,0 5px 12px #00000052}.game-active .level-card-badge{z-index:4;color:#aa2e25;width:18px;height:18px;font-family:var(--serif);pointer-events:none;background:#fff8e7e6;border:1px solid #ab2f257a;border-radius:50%;place-items:center;font-size:10px;font-weight:800;line-height:1;display:grid;position:absolute;bottom:5px;right:5px}@keyframes card-brush-pulse{50%{filter:brightness(1.07);translate:0 -3px;scale:1.035}}.game-active .card-face{background:#fbf8f0;border-color:#eee7d9;border-radius:clamp(5px,.5vw,8px);box-shadow:0 5px 12px #00000052}.game-active .card-corner b{font-size:clamp(16px,1.55vw,25px)}.game-active .card-corner svg{width:clamp(14px,1.35vw,22px);height:clamp(14px,1.35vw,22px)}.game-active .card-center-mark{width:clamp(34px,4.2vw,64px);height:clamp(34px,4.2vw,64px)}.game-active .joker-corner b{font-size:clamp(7px,.64vw,11px)}.game-active .joker-corner i{font-size:clamp(7px,.62vw,10px)}.game-active .guandan-actions{z-index:120;justify-content:center;gap:clamp(10px,2vw,24px);min-width:min(480px,76vw);display:flex;position:absolute;top:-62px;left:50%;right:auto;transform:translate(-50%)}.game-active .guandan-actions button,.game-active .mahjong-actions button{color:#e5c879;min-width:clamp(112px,11vw,180px);min-height:50px;font-family:var(--serif);letter-spacing:.08em;background:#05231ae0;border:1px solid #9c7839;border-radius:999px;justify-content:center;padding:0 24px;font-size:16px;font-weight:700;box-shadow:inset 0 0 0 2px #e5c26d14,0 7px 14px #0000004d}.game-active .guandan-actions button:hover:not(:disabled),.game-active .mahjong-actions button:hover:not(:disabled){color:#f3dc9b;border-color:#d4aa54;transform:translateY(-2px)}.game-active .guandan-actions .primary-button,.game-active .mahjong-actions .primary-button{color:#f8e6b9;background:#92723b;border-color:#d1aa5c;box-shadow:inset 0 0 0 2px #ffe5a621,0 7px 16px #00000057}.game-active .guandan-actions button:active:not(:disabled),.game-active .mahjong-actions button:active:not(:disabled){transform:translateY(1px)scale(.98)}.game-active .guandan-actions button:disabled,.game-active .mahjong-actions button:disabled{opacity:.32}.game-active .active-game-message{z-index:130;color:#efcf82;text-align:center;text-shadow:0 2px 5px #071b14;margin:0;font-size:11px;position:absolute;bottom:34%;left:0;right:0}.game-active .mahjong-table-center{inset:11% 8% 26%}.game-active .mahjong-table-center.has-deep-river{inset:8% 6% 34%}.game-active .mahjong-hand-area{height:25%}.game-active .mahjong-hand-area.deep-river-hand .hand-meta{display:none}.game-active .mahjong-hand{touch-action:none;grid-template-columns:repeat(14,minmax(0,1fr));align-items:end;gap:2px;padding:0;display:grid;position:absolute;bottom:0;left:2%;right:2%}.game-active .mahjong-tile-button{--mahjong-lift:0px;--mahjong-scale:1;z-index:var(--mahjong-hand-index,1);aspect-ratio:42/58;width:clamp(48px,5.15vw,78px);max-width:none;transform:translateY(var(--mahjong-lift)) scale(var(--mahjong-scale));transform-origin:var(--mahjong-dock-origin,50%) 100%;will-change:transform;transition:transform .18s cubic-bezier(.18,.82,.22,1),filter .18s}.game-active .mahjong-tile-button.drawn-tile{transform:translateX(6px) translateY(var(--mahjong-lift)) scale(var(--mahjong-scale))}.game-active .mahjong-tile-button.selected{--mahjong-lift:-22px;--mahjong-scale:1.045;filter:drop-shadow(0 0 8px #ebb948b8)drop-shadow(0 10px 8px #0000006b);z-index:100!important}.game-active .mahjong-hand.dock-active .mahjong-tile-button.selected:not(.dock-focus):not(.dock-near):not(.dock-far),.game-active .mahjong-hand .mahjong-tile-button.dock-returning:not(.dock-focus):not(.dock-near):not(.dock-far){--mahjong-lift:0px;--mahjong-scale:1;filter:none;transition-duration:.14s;transition-timing-function:cubic-bezier(.2,.7,.2,1);z-index:0!important}.game-active .mahjong-tile-button.dock-far{--mahjong-lift:-2px;--mahjong-scale:1;z-index:102!important}.game-active .mahjong-tile-button.dock-near{--mahjong-lift:-6px;--mahjong-scale:1;z-index:104!important}.game-active .mahjong-tile-button.dock-focus{--mahjong-lift:-30px;--mahjong-scale:1.07;filter:drop-shadow(0 0 8px #ebb948ad)drop-shadow(0 10px 9px #0006);z-index:108!important}.game-active .mahjong-tile-face{border-color:#e9e0cc;box-shadow:inset 0 -5px #b9a981,0 5px 12px #00000052}.game-active .mahjong-tile-button.selected .mahjong-tile-face{border-color:#f2c45d;box-shadow:inset 0 -5px #b9a981,0 0 0 2px #f2c45d94,0 7px 14px #00000059}.game-active .mahjong-actions{z-index:120;justify-content:center;gap:10px;display:flex;position:absolute;top:-68px;left:0;right:0}.game-active .mahjong-actions button{min-width:84px}.game-active .mahjong-meld-row{position:absolute;bottom:calc(100% + 7px);left:4%}@media (hover:hover) and (pointer:fine){.mahjong-tile-button:hover:not(:disabled){transform:translateY(-3px)}.game-active .mahjong-tile-button:hover:not(:disabled){--mahjong-lift:-5px}}@media (width<=680px) and (orientation:portrait){.game-active{--portrait-table-top:clamp(112px,16svh,132px);--portrait-table-bottom:clamp(230px,32svh,270px);background-position:50%;padding:0;overflow:hidden}.game-active .room-topbar{top:max(7px,env(safe-area-inset-top));height:51px;padding:0 10px}.game-active .back-to-lobby span,.game-active .room-countdown span{display:none}.game-active .room-utility-left{gap:1px}.game-active .in-game-room-code{font-size:9px}.game-active .in-game-room-code strong{margin:0;font-size:11px;display:block}.game-active .room-countdown strong{font-size:11px}.game-active .room-countdown{margin-left:auto;padding-left:7px}.game-active .game-round-hud{top:max(69px,calc(env(safe-area-inset-top) + 59px));left:5%}.game-active .game-round-hud>strong{font-size:12px}.game-active .felt-seat{gap:4px;min-width:116px;padding:4px 6px 4px 4px}.game-active .felt-seat-score{min-width:34px;height:23px;padding:4px 5px;font-size:10px}.game-active .felt-seat>span{width:25px;height:25px;font-size:10px}.game-active .felt-seat strong{max-width:50px;font-size:9px}.game-active .felt-seat small{display:none}.game-active .felt-seat-score small{font-size:7px;display:inline}.game-active .felt-seat:after{width:5px;height:5px}.game-active .felt-seat-north{top:clamp(58px,8svh,68px)}.game-active .felt-seat-east{top:25%;right:2%}.game-active .felt-seat-west{top:25%;left:2%}.game-active .felt-table:has(.mahjong-table-center) .felt-seat-south{top:auto;bottom:calc(var(--portrait-table-bottom) - 44px)}.game-active .table-foundation.has-mahjong-hu .felt-seat-south{left:2%;right:auto;transform:none}.game-active .guandan-trick{min-width:110px;min-height:95px;top:34%}.game-active .guandan-trick>span{font-size:7px}.game-active .guandan-trick>strong{font-size:12px}.game-active .guandan-trick>small{display:none}.game-active .trick-cards{min-height:72px}.game-active .trick-cards .card-face{width:43px;height:64px}.game-active .game-round-hud>small{display:none}.game-active .guandan-hand-area{right:3%;bottom:max(10px,env(safe-area-inset-bottom));height:31%;padding:0;left:3%}.game-active .hand-meta{display:none}.game-active .guandan-hand{width:100%;height:auto;padding:0 3px;display:block;position:absolute;inset:53px 0 0}.game-active .playing-card{aspect-ratio:36/62;width:clamp(64px,18.5vw,72px);max-width:none;transform:translateX(-50%) translateX(var(--fan-edge-shift,0%)) translateY(var(--portrait-fan-y,0)) rotate(var(--portrait-fan-angle,0deg))}.game-active .playing-card:hover:not(:disabled){transform:translateX(-50%) translateX(var(--fan-edge-shift,0%)) translateY(calc(var(--portrait-fan-y,0px) - 6px)) rotate(var(--portrait-fan-angle,0deg))}.game-active .playing-card.selected{transform:translateX(-50%) translateX(var(--fan-edge-shift,0%)) translateY(calc(var(--portrait-fan-y,0px) - 29px)) rotate(var(--portrait-fan-angle,0deg)) scale(1.065)}.game-active .card-corner{gap:0;top:4%;left:5%}.game-active .card-corner b{letter-spacing:-.05em;font-size:12px}.game-active .card-corner svg{width:10px;height:10px}.game-active .card-center-mark{width:34px;height:34px}.game-active .card-pip-grid{inset:17% 8% 8% 12%}.game-active .card-court-art{width:87%;height:79%;inset:16% 3% 5% 10%}.game-active .joker-corner b,.game-active .joker-corner i{font-size:7px}.game-active .level-card-badge{width:15px;height:15px;font-size:8px;bottom:4px;right:3px}.game-active .guandan-actions{gap:7px;min-width:0;top:-54px;left:0;right:0;transform:none}.game-active .guandan-actions button{flex:1;min-width:0;min-height:46px;padding:0 8px;font-size:13px}.game-active .active-game-message{font-size:10px;bottom:33%}.game-active .mahjong-table-center,.game-active .mahjong-table-center.has-deep-river{top:var(--portrait-table-top);right:4%;bottom:var(--portrait-table-bottom);left:4%}.game-active .mahjong-table-center.has-deep-river .mahjong-discard-grid{grid-template-columns:repeat(9,13px)}.game-active .mahjong-table-center.has-deep-river .mahjong-river .mahjong-tile-face.compact{width:13px;height:18px;padding-bottom:1px}.game-active .mahjong-wall img{width:21px;margin-left:-7px}.game-active .mahjong-wall-stack{width:14px;height:29px;margin-left:-4px}.game-active .mahjong-wall img{margin-left:0}.game-active .mahjong-wall .wall-layer-top{transform:translateY(-4px)}.game-active .wall-east{right:0}.game-active .wall-west{left:0}.game-active .mahjong-opening-dice img{width:58px}.game-active .mahjong-action-callout strong{width:42px;height:42px;font-size:23px}.game-active .mahjong-action-callout.callout-north{top:8%}.game-active .mahjong-action-callout.callout-east{right:2%}.game-active .mahjong-action-callout.callout-west{left:2%}.game-active .mahjong-action-callout.callout-south{bottom:4%}.game-active .mahjong-focus-discard{gap:4px;font-size:8px;left:50%}.game-active .mahjong-focus-discard .mahjong-tile-face{width:42px;height:58px}.game-active .mahjong-response-progress{min-width:182px;top:calc(50% + 42px)}.game-active .mahjong-response-progress strong{font-size:11px}.game-active .mahjong-response-progress span{max-width:184px;font-size:10px}.game-active .mahjong-result-banner{gap:4px;width:calc(100vw - 20px);min-width:0;max-height:86vh;padding:13px 10px 10px}.game-active .mahjong-result-banner>strong{font-size:17px}.game-active .mahjong-revealed-players{grid-template-columns:1fr;gap:3px}.game-active .mahjong-revealed-player{padding:3px 5px 4px}.game-active .mahjong-revealed-player header{margin-bottom:2px}.game-active .mahjong-revealed-tile-line{gap:3px}.game-active .mahjong-revealed-tile-line .mahjong-tile-face.compact{flex-basis:18px;width:18px;height:25px}.game-active .mahjong-revealed-tile-line .mahjong-tile-face.compact+.mahjong-tile-face.compact{margin-left:-4px}.game-active .mahjong-score-sheet{gap:5px;width:100%;padding:6px}.game-active .mahjong-winner-score b{font-size:12px}.game-active .mahjong-hu-confirm{bottom:calc(100% + 38px)}.game-active .mahjong-hu-confirm button{width:100px;height:100px}.game-active .mahjong-hu-confirm strong{font-size:48px}.game-active .mahjong-ting-panel{max-width:calc(100vw - 22px);bottom:calc(100% + 28svh)}.game-active .mahjong-chi-preview{gap:7px;padding:9px;bottom:calc(100% + 60px)}.game-active .mahjong-chi-options{gap:5px}.game-active .mahjong-chi-options>button{min-height:62px;padding-inline:2px}.game-active .mahjong-chi-options .mahjong-tile-face.compact{width:20px;height:27px}.game-active .mahjong-river{min-width:88px}.game-active .mahjong-discard-grid{grid-template-columns:repeat(6,16px);gap:1px}.game-active .mahjong-river .mahjong-tile-face.compact{width:16px;height:22px;padding-bottom:2px;box-shadow:inset 0 -2px #b9a981,0 1px 2px #0000003d}.game-active .river-north{top:12%}.game-active .river-south,.game-active .mahjong-table-center:not(.has-deep-river) .river-south{bottom:8%}.game-active .river-east{right:8%}.game-active .river-west{left:8%}.game-active .mahjong-river>span,.game-active .mahjong-flower-tray small{display:none}.game-active .mahjong-hand-area{z-index:130;right:1%;bottom:max(3px,env(safe-area-inset-bottom));height:16%;padding:0;left:1%}.game-active .mahjong-hand{width:auto;height:78px;padding:0;display:block;position:absolute;bottom:0;left:7px;right:7px;overflow:visible}.game-active .mahjong-tile-button{z-index:var(--mahjong-hand-index,1);bottom:0;left:var(--mahjong-hand-left,50%);aspect-ratio:auto;pointer-events:none;width:56px;max-width:none;height:76px;min-height:76px;transform:translateX(-50%) translateX(var(--mahjong-hand-edge-shift,0%)) translateY(var(--mahjong-lift)) scale(var(--mahjong-scale));transform-origin:var(--mahjong-dock-origin,50%) 100%;margin:0;padding:0;transition-duration:.18s;display:block;position:absolute;overflow:visible}.game-active .mahjong-tile-button.drawn-tile{transform:translateX(-50%) translateX(var(--mahjong-hand-edge-shift,0%)) translateY(var(--mahjong-lift)) scale(var(--mahjong-scale))}.game-active .mahjong-tile-button.selected{--mahjong-lift:-27px;--mahjong-scale:1.05;filter:drop-shadow(0 0 10px #ebb948d1)drop-shadow(0 12px 9px #00000075);z-index:100!important}.game-active .mahjong-tile-button.dock-focus{--mahjong-lift:-31px;--mahjong-scale:1.075}.game-active .mahjong-tile-button .mahjong-tile-face{background:#f9f5e9;border:0;border-radius:7px 7px 5px 5px;width:56px;height:76px;margin:0;padding:0;position:absolute;inset:0;overflow:hidden;box-shadow:0 6px #aa9a70,0 7px 12px #0000006b}.game-active .mahjong-tile-button .mahjong-tile-art{object-fit:fill;width:100%;height:100%}.game-active .mahjong-tile-hit{z-index:7;pointer-events:auto;cursor:pointer;touch-action:none;width:clamp(24px,6.7vw,27px);display:block;position:absolute;top:0;bottom:0;left:0}.game-active .mahjong-tile-button:last-child .mahjong-tile-hit,.game-active .mahjong-tile-button.selected .mahjong-tile-hit{width:56px}.game-active .mahjong-tile-button.drawn-tile:after{content:"摸";z-index:9;color:#fff0bd;width:21px;height:21px;font-family:var(--serif);pointer-events:none;background:#9b372e;border:1px solid #f1d27e;border-radius:50%;place-items:center;font-size:10px;font-weight:900;display:grid;position:absolute;top:-8px;right:-5px;box-shadow:0 3px 7px #00000061}.game-active .mahjong-actions{flex-wrap:wrap;gap:6px;top:-54px}.game-active .mahjong-actions button{flex:1 0 20%;min-width:0;min-height:44px;padding-inline:8px;font-size:12px}.game-active .mahjong-claim-target{min-width:116px;top:-118px;left:auto;right:7px;transform:none}.game-active .mahjong-meld-row{bottom:calc(100% + 5px);left:0;right:0;overflow:hidden}}@media (orientation:landscape) and (height<=500px){.room-page.game-active{height:100svh;padding:0}.game-active .room-topbar{height:52px;padding:0 18px}.game-active .back-to-lobby span{display:none}.game-active .room-layout{padding:0;inset:0}.game-active .table-foundation.has-game{width:100%;height:100%;padding:0;display:block}.game-active .table-foundation.has-game .felt-table{width:100%;height:100%}.game-active .game-round-hud{top:14%;left:5%}.game-active .felt-seat-score{min-width:38px;height:24px;padding:4px 6px;font-size:11px}.game-active .felt-seat{gap:5px;min-width:138px;padding:5px 8px 5px 5px}.game-active .felt-seat>span{width:27px;height:27px}.game-active .felt-seat strong{max-width:72px;font-size:10px}.game-active .felt-seat small{display:none}.game-active .felt-seat-score small{display:inline}.game-active .felt-seat-north{top:8%}.game-active .felt-seat-east{top:38%;right:3%}.game-active .felt-seat-west{top:38%;left:3%}.game-active .felt-table:has(.mahjong-table-center) .felt-seat-south{bottom:1%}.game-active .guandan-trick{min-width:126px;max-width:none;min-height:88px;top:34%}.game-active .guandan-trick>strong{font-size:12px}.game-active .guandan-trick>small{display:none}.game-active .trick-cards{min-height:58px}.game-active .trick-cards .card-face{width:35px;height:52px}.game-active .guandan-hand-area{width:auto;height:32%;margin:0;padding:0;bottom:7%;left:4.5%;right:4.5%}.game-active .table-foundation.has-game .guandan-hand-area{height:32%;margin:0;padding:0}.game-active .table-foundation.has-game .hand-meta{display:none}.game-active .table-foundation.has-game .guandan-hand{height:100%;padding:0;display:block;position:absolute}.game-active .table-foundation.has-game .playing-card{aspect-ratio:36/62;width:clamp(58px,6.8vw,74px);max-width:none}.game-active .table-foundation.has-game .guandan-actions{top:-76px}.game-active .table-foundation.has-game .guandan-actions button{min-width:104px;min-height:44px;padding-inline:18px;font-size:14px}.game-active .mahjong-table-center{inset:14% 9% 31%}.game-active .mahjong-table-center.has-deep-river{inset:10% 7% 34%}.game-active .mahjong-table-center.has-deep-river .mahjong-discard-grid{grid-template-columns:repeat(9,13px)}.game-active .mahjong-table-center.has-deep-river .mahjong-river .mahjong-tile-face.compact{width:13px;height:18px;padding-bottom:1px}.game-active .mahjong-wall img{width:24px;margin-left:-7px}.game-active .mahjong-wall-stack{width:17px;height:32px;margin-left:-5px}.game-active .mahjong-wall img{margin-left:0}.game-active .mahjong-wall .wall-layer-top{transform:translateY(-4px)}.game-active .mahjong-opening-dice img{width:54px}.game-active .mahjong-action-callout strong{width:40px;height:40px;font-size:22px}.game-active .mahjong-action-callout>span{display:none}.game-active .mahjong-action-callout.has-target{grid-template-columns:auto auto}.game-active .mahjong-callout-target>span{display:grid}.game-active .mahjong-action-callout.callout-north{top:7%}.game-active .mahjong-action-callout.callout-east{right:2%}.game-active .mahjong-action-callout.callout-west{left:2%}.game-active .mahjong-focus-discard{gap:3px;font-size:8px;left:50%}.game-active .mahjong-focus-discard .mahjong-tile-face{width:40px;height:55px}.game-active .mahjong-response-progress{min-width:174px;max-width:220px;padding-block:4px;top:50%;left:calc(50% + 132px);transform:translate(-50%,-50%)}.game-active .mahjong-result-banner{gap:3px;width:min(760px,92vw);min-width:0;max-height:90vh;padding:8px 12px}.game-active .mahjong-revealed-players{grid-template-columns:repeat(2,minmax(0,1fr));gap:3px 6px}.game-active .mahjong-revealed-player{padding:2px 5px 3px}.game-active .mahjong-revealed-player header{margin-bottom:1px}.game-active .mahjong-revealed-tile-line{gap:3px}.game-active .mahjong-revealed-tile-line .mahjong-tile-face.compact{flex-basis:17px;width:17px;height:23px;padding-bottom:2px}.game-active .mahjong-revealed-tile-line .mahjong-tile-face.compact+.mahjong-tile-face.compact{margin-left:-4px}.game-active .mahjong-score-sheet{grid-template-columns:1fr;gap:3px;width:min(580px,74vw);padding:4px 7px}.game-active .mahjong-winner-score{grid-template-columns:auto 1fr;align-items:center;gap:2px 8px}.game-active .mahjong-winner-score b{font-size:11px}.game-active .mahjong-winner-score span{font-size:8px}.game-active .mahjong-winner-score small{grid-column:1/-1;font-size:7px}.game-active .mahjong-score-deltas{padding-top:3px}.game-active .mahjong-result-banner .mahjong-next-round-button{min-height:44px;margin-top:1px}.game-active .mahjong-discard-grid{grid-template-columns:repeat(6,18px);gap:1px}.game-active .mahjong-river .mahjong-tile-face.compact{width:18px;height:24px;padding-bottom:2px;box-shadow:inset 0 -2px #b9a981,0 1px 2px #0000003d}.game-active .mahjong-river>span{display:none}.game-active .river-north{top:2%;left:28%}.game-active .river-south{bottom:2%;left:72%}.game-active .river-east{right:8%}.game-active .river-west{left:8%}.game-active .table-foundation.has-game .mahjong-hand-area{height:18%;padding:0;bottom:12%;left:4%;right:4%}.game-active .table-foundation.has-game .mahjong-hand{grid-template-columns:repeat(14,minmax(0,1fr));gap:2px;padding:0;position:absolute}.game-active .table-foundation.has-game .mahjong-tile-button{width:clamp(44px,5vw,58px);max-width:none}.game-active .mahjong-actions{flex-wrap:nowrap;top:-39px}.game-active .mahjong-actions:has(>button:only-child){box-sizing:border-box;justify-content:flex-end;padding-right:18%}.game-active .mahjong-hu-confirm{bottom:calc(100% + 32px)}.game-active .mahjong-hu-confirm button{width:94px;height:94px}.game-active .mahjong-hu-confirm strong{font-size:44px}.game-active .mahjong-ting-panel{max-width:58vw;bottom:calc(100% + 56px)}.game-active .mahjong-chi-preview{grid-template-columns:minmax(0,1fr);align-items:stretch;gap:8px;width:min(430px,58vw);padding:8px 10px;bottom:calc(100% + 54px)}.game-active .mahjong-chi-preview header{justify-content:space-between;display:flex}.game-active .mahjong-chi-options{gap:5px}.game-active .mahjong-chi-options>button{min-height:57px}.game-active .mahjong-chi-preview footer{justify-content:center}.game-active .mahjong-chi-preview footer button{min-width:104px;padding-inline:12px}.game-active .mahjong-hand-area.deep-river-hand .mahjong-actions{top:-44px}.game-active .mahjong-actions button{min-width:70px;min-height:44px;padding-inline:12px;font-size:12px}.game-active .mahjong-claim-target{display:none}.game-active .mahjong-action-callout.callout-south{bottom:55%}}.game-active.mahjong-table-theme-green{--mahjong-felt:#15553d;--mahjong-felt-deep:#0b3629;--mahjong-felt-light:#267152;background-color:var(--mahjong-felt-deep);background-image:radial-gradient(circle at 50% 42%,#5c9d7538,transparent 42%),linear-gradient(145deg,var(--mahjong-felt-light),var(--mahjong-felt) 38%,var(--mahjong-felt-deep))}.game-active.mahjong-table-theme-red{--mahjong-felt:#682c32;--mahjong-felt-deep:#36171d;--mahjong-felt-light:#874047;background-color:var(--mahjong-felt-deep);background-image:radial-gradient(circle at 50% 42%,#b7655b33,transparent 42%),linear-gradient(145deg,var(--mahjong-felt-light),var(--mahjong-felt) 38%,var(--mahjong-felt-deep))}.game-active.mahjong-table-theme-blue{--mahjong-felt:#194d6c;--mahjong-felt-deep:#0c2b40;--mahjong-felt-light:#286b8e;background-color:var(--mahjong-felt-deep);background-image:radial-gradient(circle at 50% 42%,#5b9cbe38,transparent 42%),linear-gradient(145deg,var(--mahjong-felt-light),var(--mahjong-felt) 38%,var(--mahjong-felt-deep))}.game-active[class*=mahjong-table-theme-]:after{content:"";pointer-events:none;mix-blend-mode:screen;opacity:.5;background-image:repeating-linear-gradient(35deg,#ffffff03 0 1px,#0000 1px 4px);position:absolute;inset:0}.game-active[class*=mahjong-table-theme-] .room-topbar{background:linear-gradient(#031612c7,#0316125c);border-bottom:1px solid #e8cd8b2e}.game-active[class*=mahjong-table-theme-] .table-foundation.has-game .felt-table{background:0 0}.game-active.mahjong-tile-back-jade{--mahjong-back-filter:none;--mahjong-back-color:#185d3d;--mahjong-back-edge:#0f432e}.game-active.mahjong-tile-back-ruby{--mahjong-back-filter:hue-rotate(235deg) saturate(1.35) brightness(.96);--mahjong-back-color:#8c3036;--mahjong-back-edge:#632127}.game-active.mahjong-tile-back-sapphire{--mahjong-back-filter:hue-rotate(103deg) saturate(1.25) brightness(1.05);--mahjong-back-color:#235d91;--mahjong-back-edge:#17446e}.game-active[class*=mahjong-tile-back-] .mahjong-opponent-hand img,.game-active[class*=mahjong-tile-back-] .mahjong-zone-hand img,.game-active[class*=mahjong-tile-back-] .mahjong-meld-back img{filter:var(--mahjong-back-filter)}.game-active[class*=mahjong-tile-back-] .mahjong-meld-back{border-color:color-mix(in srgb,var(--mahjong-back-color) 70%,white);background:var(--mahjong-back-color);box-shadow:inset 0 -3px 0 var(--mahjong-back-edge),0 2px 5px #00000052}.game-active .mahjong-wall-ring{display:none}.game-active .mahjong-opponent-hands,.game-active .mahjong-public-meld-zones{pointer-events:none;position:absolute;inset:0}.game-active .mahjong-opponent-hand{z-index:5;filter:drop-shadow(0 5px 4px #00000057);display:flex;position:absolute}.game-active .mahjong-opponent-hand img{object-fit:fill;width:28px;height:42px;display:block}.game-active .opponent-hand-north{top:-12px;left:50%;transform:translate(-50%)}.game-active .opponent-hand-north img+img{margin-left:-16px}.game-active .opponent-hand-east{flex-direction:column;top:50%;right:-9px;transform:translateY(-50%)}.game-active .opponent-hand-west{flex-direction:column;top:50%;left:-9px;transform:translateY(-50%)}.game-active .opponent-hand-east img+img,.game-active .opponent-hand-west img+img{margin-top:-27px}.game-active .mahjong-public-melds{z-index:6;align-items:flex-end;gap:5px;display:flex;position:absolute}.game-active .public-melds-north{top:42px;left:50%;transform:translate(-50%)}.game-active .public-melds-west{flex-direction:column;align-items:flex-start;top:9%;left:32px}.game-active .public-melds-east{flex-direction:column;align-items:flex-end;top:9%;right:32px}.game-active .mahjong-public-melds .mahjong-meld{gap:1px}.game-active .mahjong-public-melds .mahjong-tile-face.compact,.game-active .mahjong-public-melds .mahjong-meld-back{flex:0 0 29px;width:29px;height:40px}.game-active .mahjong-public-melds .mahjong-tile-face.compact{border-radius:4px;padding-bottom:3px;box-shadow:inset 0 -3px #b9a981,0 3px 6px #0000004d}.game-active .river-north,.game-active .river-south{transform:translate(-50%)}.game-active .river-east,.game-active .river-west{transform:translateY(-50%)}.game-active .mahjong-discard-grid{grid-template-columns:repeat(6,24px);gap:2px}.game-active .mahjong-river .mahjong-tile-face.compact{border-radius:4px;width:24px;height:33px;padding-bottom:3px;box-shadow:inset 0 -3px #b9a981,0 2px 4px #0000004d}.game-active .mahjong-table-center.has-deep-river .mahjong-discard-grid{grid-template-columns:repeat(7,23px);gap:2px}.game-active .mahjong-table-center.has-deep-river .mahjong-river .mahjong-tile-face.compact{width:23px;height:31px;padding-bottom:3px}.game-active .mahjong-focus-discard .mahjong-tile-face{width:52px;height:72px}.game-active .mahjong-response-target .mahjong-tile-face.compact{width:31px;height:43px}.game-active .mahjong-meld-row .mahjong-tile-face.compact,.game-active .mahjong-meld-row .mahjong-meld-back{flex:0 0 29px;width:29px;height:40px}@media (width>=681px) and (height>=501px){.game-active[class*=mahjong-table-theme-] .felt-seat-north{top:5.2%}.game-active[class*=mahjong-table-theme-] .felt-seat-east,.game-active[class*=mahjong-table-theme-] .felt-seat-west{top:18%}.game-active .mahjong-opponent-hand img{width:34px;height:50px}.game-active .opponent-hand-north{top:25px}.game-active .opponent-hand-north img+img{margin-left:-19px}.game-active .opponent-hand-east img+img,.game-active .opponent-hand-west img+img{margin-top:-32px}.game-active .public-melds-north{top:82px}.game-active .public-melds-west{top:25%;left:42px}.game-active .public-melds-east{top:25%;right:42px}.game-active .mahjong-public-melds .mahjong-tile-face.compact,.game-active .mahjong-public-melds .mahjong-meld-back{flex-basis:34px;width:34px;height:47px}.game-active .mahjong-discard-grid{grid-template-columns:repeat(6,30px);gap:3px}.game-active .mahjong-river .mahjong-tile-face.compact{width:30px;height:41px;padding-bottom:4px}.game-active .mahjong-table-center.has-deep-river .mahjong-discard-grid{grid-template-columns:repeat(8,29px);gap:3px}.game-active .mahjong-table-center.has-deep-river .mahjong-river .mahjong-tile-face.compact{width:29px;height:40px;padding-bottom:4px}.game-active .mahjong-focus-discard .mahjong-tile-face{width:64px;height:88px}.game-active .mahjong-response-target .mahjong-tile-face.compact{width:44px;height:61px}.game-active .mahjong-meld-row .mahjong-tile-face.compact,.game-active .mahjong-meld-row .mahjong-meld-back{flex-basis:34px;width:34px;height:47px}}@media (width<=680px) and (orientation:portrait){.room-page:not(.game-active) .compact-seats{display:none}.room-page:not(.game-active) .room-context{gap:10px;padding-top:2px}.room-page:not(.game-active) .room-primary-action{margin-top:0}.room-page:not(.game-active) .table-center-status{display:none}.game-active[class*=mahjong-table-theme-]{--portrait-table-top:clamp(144px,18svh,156px);--portrait-table-bottom:clamp(220px,31svh,270px)}.game-active[class*=mahjong-table-theme-] .room-topbar{top:max(0px,env(safe-area-inset-top));height:50px;padding-inline:8px}.game-active[class*=mahjong-table-theme-] .room-utility-left{gap:0}.game-active[class*=mahjong-table-theme-] .back-to-lobby,.game-active[class*=mahjong-table-theme-] .sound-toggle{width:44px;min-width:44px;height:44px;min-height:44px}.game-active[class*=mahjong-table-theme-] .in-game-room-code{font-size:10px}.game-active[class*=mahjong-table-theme-] .in-game-room-code strong{font-size:12px}.game-active[class*=mahjong-table-theme-] .room-countdown{min-height:44px;font-size:10px}.game-active[class*=mahjong-table-theme-] .room-countdown strong{font-size:12px}.game-active[class*=mahjong-table-theme-] .game-round-hud{z-index:7;top:max(54px,calc(env(safe-area-inset-top) + 51px));color:#f4e2b9ad;white-space:nowrap;background:#031c156b;border-radius:7px;align-items:center;gap:7px;min-height:28px;padding:4px 8px;font-size:9px;display:flex;left:10px;right:10px}.game-active[class*=mahjong-table-theme-] .game-round-hud>strong{font-size:12px}.game-active[class*=mahjong-table-theme-] .game-round-hud>small{color:#f4e2b98c;text-overflow:ellipsis;font-size:8px;display:block;overflow:hidden}.game-active[class*=mahjong-table-theme-] .felt-seat{min-width:124px;padding:5px 7px 5px 5px}.game-active[class*=mahjong-table-theme-] .felt-seat>span{width:27px;height:27px;font-size:11px}.game-active[class*=mahjong-table-theme-] .felt-seat strong{max-width:56px;font-size:10px}.game-active[class*=mahjong-table-theme-] .felt-seat-score{min-width:35px;height:25px;font-size:11px}.game-active[class*=mahjong-table-theme-] .felt-seat-north{top:87px}.game-active[class*=mahjong-table-theme-] .felt-seat-east,.game-active[class*=mahjong-table-theme-] .felt-seat-west{top:27%}.game-active[class*=mahjong-table-theme-] .mahjong-table-center,.game-active[class*=mahjong-table-theme-] .mahjong-table-center.has-deep-river{left:3%;right:3%}.game-active .mahjong-opponent-hand img{width:27px;height:41px}.game-active .opponent-hand-north{top:-18px}.game-active .opponent-hand-north img+img{margin-left:-15px}.game-active .opponent-hand-east{right:-5px}.game-active .opponent-hand-west{left:-5px}.game-active .opponent-hand-east img+img,.game-active .opponent-hand-west img+img{margin-top:-26px}.game-active .public-melds-north{top:31px}.game-active .public-melds-west{top:20%;left:27px}.game-active .public-melds-east{top:20%;right:27px}.game-active .mahjong-public-melds .mahjong-tile-face.compact,.game-active .mahjong-public-melds .mahjong-meld-back{flex-basis:27px;width:27px;height:37px}.game-active .mahjong-river{min-width:0}.game-active .river-north{top:23%;left:50%}.game-active .river-south,.game-active .mahjong-table-center:not(.has-deep-river) .river-south{bottom:0;left:50%}.game-active .river-west{top:50%;left:10%}.game-active .river-east{top:50%;right:10%}.game-active .mahjong-discard-grid{grid-template-columns:repeat(6,22px);gap:2px}.game-active .mahjong-river .mahjong-tile-face.compact{width:22px;height:30px;padding-bottom:3px}.game-active .mahjong-table-center.has-deep-river .mahjong-discard-grid{grid-template-columns:repeat(7,21px);gap:2px}.game-active .mahjong-table-center.has-deep-river .river-west,.game-active .mahjong-table-center.has-deep-river .river-east{width:max-content;min-width:0}.game-active .mahjong-table-center.has-deep-river .river-west .mahjong-discard-grid,.game-active .mahjong-table-center.has-deep-river .river-east .mahjong-discard-grid{grid-template-columns:repeat(4,21px)}.game-active .mahjong-table-center.has-deep-river .mahjong-river .mahjong-tile-face.compact{width:21px;height:29px;padding-bottom:3px}.game-active .mahjong-focus-discard .mahjong-tile-face{width:52px;height:72px}.game-active .mahjong-response-progress{top:calc(50% + 48px)}.game-active .mahjong-meld-row{justify-content:center;gap:5px;overflow:visible}.game-active .mahjong-meld-row .mahjong-tile-face.compact,.game-active .mahjong-meld-row .mahjong-meld-back{flex-basis:28px;width:28px;height:39px}}@media (width<=680px) and (height<=760px) and (orientation:portrait){.game-active[class*=mahjong-table-theme-] .felt-seat-east,.game-active[class*=mahjong-table-theme-] .felt-seat-west{top:24.5%}}@media (orientation:landscape) and (height<=500px){.room-page:not(.game-active) .foundation-layout{grid-template-columns:minmax(270px,310px) minmax(0,1fr);gap:10px;height:calc(100svh - 58px);padding-top:4px;display:grid}.room-page:not(.game-active) .room-context{grid-template-columns:1fr;align-content:start;gap:3px;min-height:0;padding:0;display:grid;overflow:hidden}.room-page:not(.game-active) .room-context>div:first-child,.room-page:not(.game-active) .rules-summary{display:none}.room-page:not(.game-active) .compact-seats{gap:0;margin:0}.room-page:not(.game-active) .compact-seats .seat{min-height:42px;padding:3px 0}.room-page:not(.game-active) .compact-seats .seat>span{width:30px;height:30px}.room-page:not(.game-active) .seat-bot-add,.room-page:not(.game-active) .seat-bot-remove{min-height:36px}.room-page:not(.game-active) .room-primary-action{gap:5px;margin-top:2px}.room-page:not(.game-active) .bot-room-toggle{min-height:43px;padding-block:4px}.room-page:not(.game-active) .room-primary-action>button{min-height:42px}.room-page:not(.game-active) .table-foundation{width:100%;height:100%;min-height:0;padding:8px}.room-page:not(.game-active) .felt-table{aspect-ratio:auto;width:100%;height:100%}.room-page:not(.game-active) .felt-seat{gap:5px;min-width:96px;padding:5px 7px}.room-page:not(.game-active) .felt-seat>span{width:25px;height:25px}.room-page:not(.game-active) .felt-seat strong{max-width:62px;font-size:9px}.room-page:not(.game-active) .felt-seat small{display:none}.room-page:not(.game-active) .table-center-status{gap:2px;width:92px;min-height:56px;padding:5px}.room-page:not(.game-active) .table-center-status strong{font-size:12px}.room-page:not(.game-active) .table-center-status small,.room-page:not(.game-active) .felt-seat-bot-action,.room-page:not(.game-active) .fullscreen-table{display:none}.game-active[class*=mahjong-table-theme-] .room-topbar{background:linear-gradient(#031612cc,#0316122e)}.game-active[class*=mahjong-table-theme-] .felt-seat-north{top:54px}.game-active[class*=mahjong-table-theme-] .felt-seat-east,.game-active[class*=mahjong-table-theme-] .felt-seat-west{top:62%}.game-active .mahjong-opponent-hand img{width:25px;height:38px}.game-active .opponent-hand-north{top:44px}.game-active .opponent-hand-east{right:-5px}.game-active .opponent-hand-west{left:-5px}.game-active .mahjong-public-melds .mahjong-tile-face.compact,.game-active .mahjong-public-melds .mahjong-meld-back{flex-basis:25px;width:25px;height:34px}.game-active .public-melds-north{top:44px;left:calc(50% + 90px);transform:none}.game-active .public-melds-west{top:8%;left:25px}.game-active .public-melds-east{top:8%;right:25px}.game-active .mahjong-response-progress{left:50%}.game-active .river-north{top:27%;left:50%}.game-active .river-south{bottom:-8%;left:69%}.game-active .river-west{top:56%;left:18%}.game-active .river-east{top:56%;right:18%}.game-active .mahjong-discard-grid{grid-template-columns:repeat(7,21px);gap:2px}.game-active .river-north .mahjong-discard-grid,.game-active .river-south .mahjong-discard-grid{grid-template-columns:repeat(9,21px)}.game-active .river-west,.game-active .river-east{width:max-content;min-width:0}.game-active .river-west .mahjong-discard-grid,.game-active .river-east .mahjong-discard-grid{grid-template-columns:repeat(4,21px)}.game-active .mahjong-river .mahjong-tile-face.compact,.game-active .mahjong-table-center.has-deep-river .mahjong-river .mahjong-tile-face.compact{width:21px;height:29px;padding-bottom:3px}.game-active .mahjong-response-target .mahjong-tile-face.compact{width:42px;height:58px}.game-active .mahjong-actions:has(>button:only-child){justify-content:flex-start;padding-left:18%;padding-right:0}.game-active .table-foundation:has(.mahjong-response-progress) .mahjong-actions{justify-content:flex-start;padding-left:4%}}.game-active .mahjong-player-zones{z-index:5;pointer-events:none;position:absolute;inset:0}.game-active .mahjong-player-zone{pointer-events:none;justify-content:flex-start;align-items:center;gap:7px;display:flex;position:absolute}.game-active .zone-north{flex-direction:column;width:min(430px,58vw);top:-2%;left:50%;transform:translate(-50%)}.game-active .zone-south{flex-direction:column-reverse;width:min(430px,58vw);bottom:-1%;left:50%;transform:translate(-50%)}.game-active .zone-west,.game-active .zone-east{width:min(390px,31vw);min-height:250px;top:50%;transform:translateY(-50%)}.game-active .zone-west{grid-template-columns:34px minmax(84px,1fr) minmax(112px,1.1fr);grid-template-areas:"hand exposed river";display:grid;left:-1%}.game-active .zone-east{grid-template-columns:minmax(112px,1.1fr) minmax(84px,1fr) 34px;grid-template-areas:"river exposed hand";display:grid;right:-1%}.game-active .mahjong-zone-hand{filter:drop-shadow(0 5px 4px #00000057);grid-area:hand;align-items:center;display:flex}.game-active .zone-north .mahjong-zone-hand{flex-direction:row}.game-active .zone-west .mahjong-zone-hand,.game-active .zone-east .mahjong-zone-hand{flex-direction:column;align-self:center}.game-active .mahjong-zone-hand img{object-fit:fill;width:31px;height:46px;display:block}.game-active .zone-north .mahjong-zone-hand img+img{margin-left:-17px}.game-active .zone-west .mahjong-zone-hand img+img,.game-active .zone-east .mahjong-zone-hand img+img{margin-top:-29px}.game-active .mahjong-zone-exposed{grid-area:exposed;justify-content:center;align-items:flex-end;gap:7px;min-width:0;display:flex}.game-active .mahjong-zone-exposed:empty{display:none}.game-active .zone-west .mahjong-zone-exposed,.game-active .zone-east .mahjong-zone-exposed{flex-direction:column;align-self:start;align-items:center;padding-top:8px}.game-active .mahjong-zone-exposed .mahjong-meld,.game-active .mahjong-zone-flowers{justify-content:center;align-items:flex-end;display:flex;position:relative}.game-active .mahjong-zone-exposed .mahjong-meld small,.game-active .mahjong-zone-flowers small{z-index:2;color:#e5c577;background:#031e17d1;border-radius:999px;margin:0;padding:1px 4px;font-size:7px;font-weight:800;line-height:1.2;position:absolute;top:-8px;left:2px}.game-active .mahjong-zone-exposed .mahjong-tile-face.compact,.game-active .mahjong-zone-exposed .mahjong-meld-back{flex:0 0 26px;width:26px;height:36px}.game-active .mahjong-zone-exposed .mahjong-tile-face.compact+.mahjong-tile-face.compact,.game-active .mahjong-zone-exposed .mahjong-meld-back+.mahjong-tile-face.compact,.game-active .mahjong-zone-exposed .mahjong-tile-face.compact+.mahjong-meld-back{margin-left:-4px}.game-active .mahjong-zone-flowers{flex-wrap:wrap;max-width:104px}.game-active .mahjong-player-zone .mahjong-river{grid-area:river;place-self:center;gap:3px;min-width:0;position:relative;inset:auto;transform:none}.game-active .mahjong-player-zone.zone-north .mahjong-river,.game-active .mahjong-player-zone.zone-east .mahjong-river,.game-active .mahjong-player-zone.zone-south .mahjong-river,.game-active .mahjong-player-zone.zone-west .mahjong-river{inset:auto}.game-active .mahjong-player-zone .mahjong-river>span{color:#f1deb475;letter-spacing:.08em;font-size:7px;font-weight:750;display:block}.game-active .mahjong-player-zone .mahjong-discard-grid{grid-template-columns:repeat(6,25px);gap:2px}.game-active .zone-west .mahjong-discard-grid,.game-active .zone-east .mahjong-discard-grid{grid-template-columns:repeat(4,25px)}.game-active .mahjong-player-zone .mahjong-river .mahjong-tile-face.compact,.game-active .mahjong-table-center.has-deep-river .mahjong-player-zone .mahjong-river .mahjong-tile-face.compact{width:25px;height:34px;padding:0}.game-active .mahjong-player-zone .latest-discard{filter:drop-shadow(0 0 7px #ffc943fa)drop-shadow(0 3px 3px #00000059)}.game-active .mahjong-tile-face{background:linear-gradient(155deg,#fffdf6 0%,#f5efdd 72%,#e1d5b7 100%);overflow:hidden}.game-active .mahjong-tile-face .mahjong-tile-art{object-fit:fill;width:100%;height:calc(100% - 2px)}.game-active .mahjong-tile-button .mahjong-tile-face .mahjong-tile-art{height:100%}@media (width<=680px) and (orientation:portrait){.game-active .zone-north{gap:5px;width:280px;top:-18px}.game-active .zone-south{gap:5px;width:280px;bottom:0}.game-active .zone-west,.game-active .zone-east{width:182px;min-height:210px;top:53%}.game-active .zone-west{grid-template-columns:27px 83px 72px;left:5px}.game-active .zone-east{grid-template-columns:72px 83px 27px;right:5px}.game-active .mahjong-zone-hand img{width:27px;height:41px}.game-active .zone-north .mahjong-zone-hand img+img{margin-left:-15px}.game-active .zone-west .mahjong-zone-hand img+img,.game-active .zone-east .mahjong-zone-hand img+img{margin-top:-26px}.game-active .mahjong-zone-exposed{gap:5px}.game-active .zone-west .mahjong-zone-exposed,.game-active .zone-east .mahjong-zone-exposed{gap:9px;padding-top:7px}.game-active .mahjong-zone-exposed .mahjong-tile-face.compact,.game-active .mahjong-zone-exposed .mahjong-meld-back{flex-basis:25px;width:25px;height:35px}.game-active .mahjong-zone-exposed .mahjong-tile-face.compact+.mahjong-tile-face.compact,.game-active .mahjong-zone-exposed .mahjong-meld-back+.mahjong-tile-face.compact,.game-active .mahjong-zone-exposed .mahjong-tile-face.compact+.mahjong-meld-back{margin-left:-3px}.game-active .mahjong-zone-flowers{max-width:80px}.game-active .mahjong-player-zone .mahjong-discard-grid{grid-template-columns:repeat(6,24px);gap:2px}.game-active .zone-west .mahjong-discard-grid,.game-active .zone-east .mahjong-discard-grid{grid-template-columns:repeat(3,22px);gap:2px}.game-active .mahjong-player-zone .mahjong-river .mahjong-tile-face.compact,.game-active .mahjong-table-center.has-deep-river .mahjong-player-zone .mahjong-river .mahjong-tile-face.compact{width:24px;height:33px}.game-active .zone-west .mahjong-river .mahjong-tile-face.compact,.game-active .zone-east .mahjong-river .mahjong-tile-face.compact,.game-active .mahjong-table-center.has-deep-river .zone-west .mahjong-river .mahjong-tile-face.compact,.game-active .mahjong-table-center.has-deep-river .zone-east .mahjong-river .mahjong-tile-face.compact{width:22px;height:30px}.game-active .zone-west .mahjong-river{transform:translate(-8px)}.game-active .zone-east .mahjong-river{transform:translate(8px)}.game-active .mahjong-table-center.has-deep-river .zone-north .mahjong-discard-grid,.game-active .mahjong-table-center.has-deep-river .zone-south .mahjong-discard-grid{grid-template-columns:repeat(5,24px);gap:2px}.game-active .mahjong-table-center.has-deep-river .zone-west .mahjong-discard-grid,.game-active .mahjong-table-center.has-deep-river .zone-east .mahjong-discard-grid{grid-template-columns:repeat(3,22px);gap:2px}.game-active .mahjong-table-center.has-deep-river .zone-west .mahjong-river{transform:translate(-76px)}.game-active .mahjong-table-center.has-deep-river .zone-east .mahjong-river{transform:translate(76px)}.game-active .mahjong-table-center.has-deep-river .mahjong-response-progress{min-width:160px;max-width:160px;top:50%}}@media (orientation:landscape) and (height<=500px){.game-active .zone-north{grid-template-columns:auto auto;grid-template-areas:"hand exposed""river river";justify-content:center;gap:3px 8px;width:360px;display:grid;top:17px}.game-active .zone-north .mahjong-zone-hand{justify-self:end}.game-active .zone-north .mahjong-zone-exposed{justify-self:start}.game-active .zone-south{gap:3px;width:300px;bottom:48px;left:67%}.game-active .zone-west,.game-active .zone-east{width:183px;min-height:190px;top:51%}.game-active .zone-west{grid-template-columns:25px 86px 72px;left:-18px}.game-active .zone-east{grid-template-columns:72px 86px 25px;right:-18px}.game-active .mahjong-zone-hand img{width:25px;height:38px}.game-active .zone-north .mahjong-zone-hand img+img{margin-left:-14px}.game-active .zone-west .mahjong-zone-hand img+img,.game-active .zone-east .mahjong-zone-hand img+img{margin-top:-24px}.game-active .mahjong-zone-exposed .mahjong-tile-face.compact,.game-active .mahjong-zone-exposed .mahjong-meld-back{flex-basis:25px;width:25px;height:35px}.game-active .mahjong-player-zone .mahjong-discard-grid{grid-template-columns:repeat(5,21px);gap:2px}.game-active .zone-west .mahjong-discard-grid,.game-active .zone-east .mahjong-discard-grid{grid-template-columns:repeat(3,21px)}.game-active .mahjong-table-center.has-deep-river .zone-north .mahjong-discard-grid,.game-active .mahjong-table-center.has-deep-river .zone-south .mahjong-discard-grid{grid-template-columns:repeat(6,21px)}.game-active .zone-west .mahjong-river{transform:translate(-16px)}.game-active .zone-south .mahjong-river{transform:translate(-75px)}.game-active .mahjong-player-zone .mahjong-river .mahjong-tile-face.compact,.game-active .mahjong-table-center.has-deep-river .mahjong-player-zone .mahjong-river .mahjong-tile-face.compact{width:21px;height:29px}.game-active .mahjong-table-center.has-deep-river .mahjong-player-zone .mahjong-river{min-width:0;position:fixed;bottom:auto;right:auto;transform:none}.game-active .mahjong-table-center.has-deep-river .mahjong-player-zone .mahjong-river .mahjong-tile-face.compact{width:20px;height:28px}.game-active .mahjong-table-center.has-deep-river .zone-north .mahjong-river{top:81px;left:50%;transform:translate(-50%)}.game-active .mahjong-table-center.has-deep-river .zone-south .mahjong-river{top:211px;left:50%;transform:translate(-50%)}.game-active .mahjong-table-center.has-deep-river .zone-west .mahjong-river{top:130px;left:12%;transform:none}.game-active .mahjong-table-center.has-deep-river .zone-east .mahjong-river{top:130px;left:auto;right:12%;transform:none}.game-active .mahjong-table-center.has-deep-river .zone-north .mahjong-discard-grid,.game-active .mahjong-table-center.has-deep-river .zone-south .mahjong-discard-grid{grid-template-columns:repeat(9,20px);gap:2px}.game-active .mahjong-table-center.has-deep-river .zone-west .mahjong-discard-grid,.game-active .mahjong-table-center.has-deep-river .zone-east .mahjong-discard-grid{grid-template-columns:repeat(6,20px);gap:2px}}.game-active .mahjong-river-layer{z-index:5;pointer-events:none;position:absolute;inset:0}.game-active .mahjong-table-center .mahjong-river-layer .mahjong-river{width:max-content;min-width:0;display:block;position:absolute;transform:none}.game-active .mahjong-table-center .mahjong-river-layer .mahjong-river>span{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.game-active .mahjong-table-center .mahjong-river-layer .mahjong-discard-grid{justify-content:stretch;gap:2px;width:100%;max-width:none;display:grid}.game-active .mahjong-table-center .mahjong-river-layer .river-north .mahjong-discard-grid,.game-active .mahjong-table-center .mahjong-river-layer .river-south .mahjong-discard-grid{grid-template-columns:repeat(6,25px);grid-template-rows:repeat(var(--river-depth),34px)}.game-active .mahjong-table-center .mahjong-river-layer .river-north,.game-active .mahjong-table-center .mahjong-river-layer .river-south{width:160px}.game-active .mahjong-table-center .mahjong-river-layer .river-west .mahjong-discard-grid,.game-active .mahjong-table-center .mahjong-river-layer .river-east .mahjong-discard-grid{grid-template-columns:repeat(var(--river-depth),34px);grid-template-rows:repeat(6,25px)}.game-active .mahjong-discard-slot{place-items:center;min-width:0;min-height:0;display:grid}.game-active .mahjong-table-center .mahjong-river-layer .mahjong-river .mahjong-tile-face.compact,.game-active .mahjong-table-center.has-deep-river .mahjong-river-layer .mahjong-river .mahjong-tile-face.compact{width:25px;height:34px;padding:0}.game-active .mahjong-table-center .mahjong-river-layer .mahjong-tile-face.compact{transform-origin:50%}.game-active .mahjong-table-center .mahjong-river-layer .river-north .mahjong-tile-face.compact{transform:rotate(180deg)}.game-active .mahjong-table-center .mahjong-river-layer .river-west .mahjong-tile-face.compact{transform:rotate(90deg)}.game-active .mahjong-table-center .mahjong-river-layer .river-east .mahjong-tile-face.compact{transform:rotate(-90deg)}.game-active .mahjong-table-center .mahjong-river-layer .river-north{inset:auto auto calc(50% + 58px) 50%;transform:translate(-50%)}.game-active .mahjong-table-center .mahjong-river-layer .river-south{inset:calc(50% + 58px) auto auto 50%;transform:translate(-50%)}.game-active .mahjong-table-center .mahjong-river-layer .river-west{inset:55% calc(50% + 82px) auto auto;transform:translateY(-50%)}.game-active .mahjong-table-center .mahjong-river-layer .river-east{inset:55% auto auto calc(50% + 82px);transform:translateY(-50%)}@media (width<=680px) and (orientation:portrait){.game-active .mahjong-table-center .mahjong-river-layer .river-north .mahjong-discard-grid,.game-active .mahjong-table-center .mahjong-river-layer .river-south .mahjong-discard-grid{grid-template-columns:repeat(6,24px);grid-template-rows:repeat(var(--river-depth),33px)}.game-active .mahjong-table-center .mahjong-river-layer .river-north,.game-active .mahjong-table-center .mahjong-river-layer .river-south{width:154px}.game-active .mahjong-table-center .mahjong-river-layer .river-west .mahjong-discard-grid,.game-active .mahjong-table-center .mahjong-river-layer .river-east .mahjong-discard-grid{grid-template-columns:repeat(var(--river-depth),30px);grid-template-rows:repeat(6,22px)}.game-active .mahjong-table-center .mahjong-river-layer .river-north{bottom:calc(50% + 47px)}.game-active .mahjong-table-center .mahjong-river-layer .river-south{top:calc(50% + 55px)}.game-active .mahjong-table-center .mahjong-river-layer .river-west{right:calc(50% + 82px)}.game-active .mahjong-table-center .mahjong-river-layer .river-east{left:calc(50% + 82px)}.game-active .mahjong-table-center .mahjong-river-layer .river-west,.game-active .mahjong-table-center .mahjong-river-layer .river-east{top:60%}.game-active .mahjong-table-center .mahjong-river-layer .river-north .mahjong-tile-face.compact,.game-active .mahjong-table-center .mahjong-river-layer .river-south .mahjong-tile-face.compact,.game-active .mahjong-table-center.has-deep-river .mahjong-river-layer .river-north .mahjong-tile-face.compact,.game-active .mahjong-table-center.has-deep-river .mahjong-river-layer .river-south .mahjong-tile-face.compact{width:24px;height:33px}.game-active .mahjong-table-center .mahjong-river-layer .river-west .mahjong-tile-face.compact,.game-active .mahjong-table-center .mahjong-river-layer .river-east .mahjong-tile-face.compact,.game-active .mahjong-table-center.has-deep-river .mahjong-river-layer .river-west .mahjong-tile-face.compact,.game-active .mahjong-table-center.has-deep-river .mahjong-river-layer .river-east .mahjong-tile-face.compact{width:22px;height:30px}.game-active .mahjong-table-center.has-deep-river .mahjong-river-layer .river-north .mahjong-discard-grid,.game-active .mahjong-table-center.has-deep-river .mahjong-river-layer .river-south .mahjong-discard-grid{grid-template-columns:repeat(6,20px);grid-template-rows:repeat(var(--river-depth),28px)}.game-active .mahjong-table-center.has-deep-river .mahjong-river-layer .river-north,.game-active .mahjong-table-center.has-deep-river .mahjong-river-layer .river-south{width:130px}.game-active .mahjong-table-center.has-deep-river .mahjong-river-layer .river-north .mahjong-tile-face.compact,.game-active .mahjong-table-center.has-deep-river .mahjong-river-layer .river-south .mahjong-tile-face.compact{width:20px;height:28px}.game-active .zone-west .mahjong-zone-exposed,.game-active .zone-east .mahjong-zone-exposed{transform:translateY(-8px)}.game-active .zone-east .mahjong-zone-exposed{transform:translate(-6px,-8px)}.game-active .mahjong-table-center.has-deep-river .zone-west .mahjong-zone-exposed{transform:translate(-17px,-14px)}.game-active .mahjong-table-center.has-deep-river .zone-east .mahjong-zone-exposed{transform:translate(-6px,-14px)}.game-active .mahjong-table-center.has-deep-river .mahjong-response-progress{top:50%}}@media (orientation:landscape) and (height<=500px){.game-active .mahjong-table-center .mahjong-river-layer{position:fixed;inset:0}.game-active .mahjong-table-center .mahjong-river-layer .river-north .mahjong-discard-grid,.game-active .mahjong-table-center .mahjong-river-layer .river-south .mahjong-discard-grid{grid-template-columns:repeat(6,20px);grid-template-rows:repeat(var(--river-depth),28px);gap:2px}.game-active .mahjong-table-center .mahjong-river-layer .river-north,.game-active .mahjong-table-center .mahjong-river-layer .river-south{width:130px}.game-active .mahjong-table-center .mahjong-river-layer .river-west .mahjong-discard-grid,.game-active .mahjong-table-center .mahjong-river-layer .river-east .mahjong-discard-grid{grid-template-columns:repeat(var(--river-depth),28px);grid-template-rows:repeat(6,20px);gap:2px}.game-active .mahjong-table-center .mahjong-river-layer .mahjong-river .mahjong-tile-face.compact,.game-active .mahjong-table-center.has-deep-river .mahjong-river-layer .mahjong-river .mahjong-tile-face.compact{width:20px;height:28px}.game-active .mahjong-table-center .mahjong-river-layer .river-north{inset:auto auto calc(54% - 39px) 50%;transform:translate(-50%)}.game-active .mahjong-table-center .mahjong-river-layer .river-south{inset:calc(46% - 38px) auto auto 50%;transform:translate(-50%)}.game-active .mahjong-table-center .mahjong-river-layer .river-west{inset:46% calc(50% + 62px) auto auto;transform:translateY(-50%)}.game-active .mahjong-table-center .mahjong-river-layer .river-east{inset:46% auto auto calc(50% + 62px);transform:translateY(-50%)}.game-active .mahjong-table-center:not(.has-deep-river) .zone-west .mahjong-zone-exposed{transform:translate(-30px)}.game-active .mahjong-table-center:not(.has-deep-river) .zone-east .mahjong-zone-exposed{transform:translate(30px)}.game-active .mahjong-table-center.has-deep-river .mahjong-river-layer .river-north{bottom:calc(54% - 4px)}.game-active .mahjong-table-center.has-deep-river .mahjong-river-layer .river-south{top:calc(46% + 8px)}.game-active .mahjong-table-center.has-deep-river .mahjong-river-layer .river-west{right:calc(50% + 68px)}.game-active .mahjong-table-center.has-deep-river .mahjong-river-layer .river-east{left:calc(50% + 68px)}.game-active .mahjong-table-center.has-deep-river .zone-south .mahjong-zone-exposed{transform:translateY(56px)}.game-active .mahjong-table-center.has-deep-river .zone-west .mahjong-zone-exposed{transform:translate(-20px,-6px)}.game-active .mahjong-table-center.has-deep-river .zone-east .mahjong-zone-exposed{transform:translate(20px,-6px)}.game-active:has(.mahjong-table-center.has-deep-river) .felt-seat-north{left:73.5%}.game-active .mahjong-table-center.has-deep-river .zone-west .mahjong-zone-hand img+img,.game-active .mahjong-table-center.has-deep-river .zone-east .mahjong-zone-hand img+img{margin-top:-30px}.game-active .mahjong-table-center.has-deep-river .mahjong-response-progress{min-width:150px;max-width:150px;left:29%}}@media (width<=680px) and (height<=760px) and (orientation:portrait){.game-active .mahjong-table-center .mahjong-river-layer .river-north{bottom:calc(50% + 7px)}.game-active .mahjong-table-center:not(.has-deep-river) .mahjong-river-layer .river-south{top:calc(50% + 19px)}}@media (width<=370px) and (orientation:portrait){.game-active .mahjong-table-center .mahjong-river-layer .river-north{bottom:calc(50% + 35px)}.game-active[class*=mahjong-table-theme-] .felt-seat-east,.game-active[class*=mahjong-table-theme-] .felt-seat-west{top:25.5%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
