.app-shell.sc-theme{background:radial-gradient(circle at 82% 8%,rgba(240,190,96,.22),transparent 30%),radial-gradient(circle at 12% 90%,rgba(150,24,20,.4),transparent 34%),linear-gradient(140deg,#2a0b0a,#521512 46%,#240807)}.sc-theme .game-frame{border-color:#f0c06966;background:linear-gradient(135deg,rgba(255,244,221,.06),transparent 30%),radial-gradient(circle at center,#781814e6,#300a09fa 74%)}.sc-theme .top-bar{border-bottom-color:#f0c0693d}.sc-theme .mahjong-table{border-color:#f0c0694d;background:linear-gradient(90deg,transparent 49.9%,rgba(240,192,105,.05) 50%,transparent 50.1%),linear-gradient(transparent 49.9%,rgba(240,192,105,.05) 50%,transparent 50.1%),radial-gradient(circle at center,#96201aeb 0,#601410f5 55%,#3c0d0a);box-shadow:inset 0 0 70px #0006,inset 0 0 0 5px #28080766}.sc-theme .table-felt{border-color:#ffe0aa14;background:repeating-linear-gradient(35deg,rgba(255,255,255,.014) 0 1px,transparent 1px 5px),#3c0c0924}.sc-theme .human-area{border-color:#f0c06933;background:#28080780}.sc-theme .player-status{border-color:#f0c06933;background:#2e0a09b8}.sc-theme .table-seat .player-status{background:#2e0a09d1}.sc-theme .river-zone{border-color:#f0c0691f;background:#2808074d}.sc-theme .wall-counter{color:#ffe4ab;background:#00000047}.sc-theme .recent-action{border-color:#f0c0694d;color:#ffe0a1;background:#00000075}.sc-theme .tile-back{border-color:#f0c0693d;background:linear-gradient(135deg,rgba(255,255,255,.14),transparent 34%),repeating-linear-gradient(45deg,#8f1f19 0,#8f1f19 5px,#6d1712 5px,#6d1712 10px)}.sc-theme .meld-set{background:#fff4dd1a}.sc-theme .meld-label{color:#f0c069}.sc-theme .result-card{border-color:#f0c06970;background:radial-gradient(circle at 80% 0%,rgba(240,192,105,.14),transparent 40%),linear-gradient(160deg,#5a1512,#340b0a)}.tile-button--missing .tile-face{filter:grayscale(.5) brightness(.82)}.tile-button--missing .tile-face:after{content:"缺";position:absolute;top:2px;right:2px;z-index:2;padding:0 3px;border-radius:4px;color:#fff;font-size:.6rem;font-weight:800;background:#d8392c}.tile-back--meld{width:22px;height:30px}.sc-seat-won{opacity:.82}.sc-won-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;color:#3a1206;font-weight:800;font-size:.74rem;background:linear-gradient(180deg,#f4cd7d,#c68a2c)}.sc-miss{margin-left:5px;color:#f0c069;font-style:normal;font-weight:800}.sc-winners-chip{position:absolute;left:50%;top:calc(50% - 30px);z-index:2;padding:3px 12px;border-radius:20px;color:#3a1206;font-size:.74rem;font-weight:800;background:linear-gradient(180deg,#f4cd7d,#c68a2c);transform:translate(-50%,-50%);pointer-events:none;white-space:nowrap}.sc-kong-wrap{position:relative;display:inline-flex}.sc-kong-menu{position:absolute;bottom:calc(100% + 6px);left:0;z-index:20;display:flex;gap:6px;padding:8px;border:1px solid rgba(240,192,105,.4);border-radius:10px;background:#280807f5;box-shadow:0 12px 28px #0006}.sc-kong-item{display:grid;gap:3px;justify-items:center;padding:6px 8px;border:1px solid rgba(240,192,105,.24);border-radius:8px;color:#fff4dd;background:#fff4dd14;cursor:pointer}.sc-kong-item img{width:30px;height:42px;object-fit:contain}.sc-kong-item span{font-size:.72rem;font-weight:800;color:#f0c069}.sc-missing-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:16px}.sc-missing-option{display:grid;gap:6px;justify-items:center;padding:18px 10px;border:1px solid rgba(240,192,105,.4);border-radius:12px;color:#fff4dd;background:#fff4dd14;cursor:pointer;transition:transform .14s ease,border-color .14s ease,background-color .14s ease;font-family:inherit}.sc-missing-option:hover{transform:translateY(-3px);border-color:#ffd889e6;background:#f0c06929}.sc-missing-suit{font-size:2.2rem;font-weight:900;color:#f0c069}.sc-missing-option small{color:#fbeedeb3;font-size:.8rem}.sc-winner-list{display:grid;gap:8px;margin:12px 0}.sc-winner-row{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;padding:8px 12px;border-radius:8px;background:#f0c0691f}.sc-winner-row strong{color:#fff4dd;text-align:left}.sc-winner-title{color:#ffe0a1;font-size:.82rem}.sc-winner-fan{color:#f0c069;font-weight:900}.sc-settle-table{display:grid;gap:6px;margin:12px 0 4px}.sc-settle-row{display:flex;justify-content:space-between;align-items:center;padding:6px 12px;border-radius:8px;background:#0000003d;font-size:.86rem}.sc-settle-row strong{color:#fff4dd}.sc-settle-row strong.is-negative{color:#ff9b8f}.home-shell{position:relative;min-height:100svh;display:grid;place-items:center;padding:clamp(14px,3vw,30px);color:#f6efe1;font-family:Songti SC,"Noto Serif SC",PingFang SC,Microsoft YaHei,serif;background:radial-gradient(circle at 18% 12%,rgba(215,163,72,.18),transparent 28%),radial-gradient(circle at 84% 88%,rgba(150,24,20,.22),transparent 30%),linear-gradient(140deg,#0c1611,#162820 46%,#0b1110)}.home-frame{width:min(760px,100%);padding:clamp(16px,3vw,28px);border:1px solid rgba(215,163,72,.34);border-radius:8px;background:linear-gradient(135deg,rgba(255,247,227,.09),transparent 30%),repeating-linear-gradient(35deg,rgba(255,247,227,.018) 0 1px,transparent 1px 6px),radial-gradient(circle at 50% 42%,#14523ee6,#08231bf5 72%);box-shadow:0 28px 80px #0006,inset 0 0 0 5px #041f1647}.home-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:clamp(14px,2.4vw,22px);padding-bottom:clamp(14px,2.2vw,22px);border-bottom:1px solid rgba(255,247,227,.13);text-align:left}.home-header--split{position:relative}.home-eyebrow{margin:0 0 4px;color:#f6efe1a8;font-size:.78rem;letter-spacing:0}.home-header h1{margin:0;color:#fff4da;font-size:clamp(1.75rem,4.7vw,3.3rem);font-weight:900;letter-spacing:0;line-height:1.05;text-shadow:0 3px 12px rgba(0,0,0,.4)}.home-sub{margin:8px 0 0;color:#f6efe1b8;font-size:.9rem}.home-modes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(10px,2vw,16px)}.home-card{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto 1fr auto;gap:12px;align-items:start;min-height:clamp(210px,26vw,260px);padding:clamp(14px,2.4vw,20px);overflow:hidden;border:1px solid rgba(255,247,227,.14);border-radius:8px;color:inherit;text-align:left;cursor:pointer;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease;font-family:inherit}.home-card:before{content:"";position:absolute;right:-32px;bottom:-42px;width:144px;height:144px;border:1px solid rgba(215,163,72,.18);border-radius:999px;background:linear-gradient(90deg,transparent 48%,rgba(215,163,72,.16) 49%,rgba(215,163,72,.16) 51%,transparent 52%),linear-gradient(transparent 48%,rgba(215,163,72,.13) 49%,rgba(215,163,72,.13) 51%,transparent 52%);opacity:.8}.home-card--classic{background:linear-gradient(135deg,#14523e8c,#08231bb3)}.home-card--sichuan{background:linear-gradient(135deg,#96201a8c,#480e0cb8)}.home-card--locked{cursor:not-allowed;opacity:.72;background:linear-gradient(135deg,#46464175,#121612ad)}.home-card:not(:disabled):hover{transform:translateY(-3px);border-color:#ffd889b8;box-shadow:0 16px 34px #00000057}.home-card__icon{position:relative;z-index:1;display:grid;place-items:center;width:44px;height:44px;border-radius:8px;color:#20160c;background:linear-gradient(180deg,#ffd47c,#c9892e)}.home-card__body{position:relative;z-index:1;grid-column:1 / -1;align-self:end}.home-card__body h2{margin:0 0 6px;color:#fff4da;font-size:clamp(1.4rem,3vw,2rem);font-weight:900}.home-card__body p{margin:0;color:#f6efe1c7;font-size:.84rem;line-height:1.5}.home-card__go{position:relative;z-index:1;align-self:end;color:#ffd889cc}.home-card__badge{justify-self:end;padding:5px 9px;border:1px solid rgba(255,247,227,.18);border-radius:999px;color:#f6efe1ad;background:#fff7e314;font-size:.72rem;font-weight:800;white-space:nowrap}.home-back{position:absolute;top:0;left:0;display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 10px;border:1px solid rgba(255,247,227,.18);border-radius:8px;color:#fff4da;background:#fff7e314;cursor:pointer;font:inherit;font-size:.78rem;font-weight:800}.home-back:hover{border-color:#ffd889ad;background:#d7a34824}.home-footer{margin-top:20px;text-align:left;color:#f6efe185;font-size:.78rem}@media(max-width:640px){.home-header{display:block}.home-header--split{padding-top:38px}.home-modes{grid-template-columns:1fr}.home-card{min-height:176px}.home-card__go,.home-card__badge{grid-column:2;justify-self:start}}:root{color:#f5f0e7;background:#101713;font-family:Songti SC,"Noto Serif SC",PingFang SC,Microsoft YaHei,serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--table-green: #123d31;--table-green-deep: #09291f;--ink: #1d1712;--ivory: #fff7e3;--gold: #d7a348;--red: #c3362b;--green: #16845e;--blue: #2270a6}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;overflow-x:hidden}button{font:inherit}.app-shell{position:relative;min-height:100svh;padding:clamp(6px,1.2vw,14px);background:radial-gradient(circle at 18% 12%,rgba(215,163,72,.2),transparent 26%),linear-gradient(135deg,#0c1611,#162820 46%,#0b1110)}.rotate-device{display:none}.game-frame{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:clamp(6px,1vw,10px);width:min(1280px,100%);height:calc(100svh - clamp(12px,2.4vw,28px));min-height:650px;margin:0 auto;padding:clamp(8px,1.3vw,14px);border:1px solid rgba(215,163,72,.34);border-radius:8px;background:linear-gradient(135deg,rgba(255,247,227,.08),transparent 28%),radial-gradient(circle at center,#14523ef2,#08231bfa 72%);box-shadow:0 28px 80px #00000061}.top-bar{display:grid;grid-template-columns:minmax(150px,1fr) auto minmax(260px,1fr);gap:10px;align-items:center;padding:4px 8px 8px;border-bottom:1px solid rgba(255,247,227,.13)}.eyebrow{margin:0 0 2px;color:#f5f0e7a3;font-size:.74rem;letter-spacing:0}h1,h2{margin:0;letter-spacing:0}h1{color:#fff4da;font-size:clamp(1.16rem,2.3vw,1.78rem);font-weight:800}.table-chips,.score-chip,.rule-chip,.mode-button,.primary-command,.secondary-command,.icon-command{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:34px;border:1px solid rgba(255,247,227,.16);border-radius:8px;color:#fff7e3;background:#fff7e314;white-space:nowrap}.table-chips{gap:6px;min-height:0;border:0;background:transparent}.score-chip{min-height:34px;padding:0 13px;color:#fff7e3;border-color:#fff7e333;background:#04120d8a;font-size:.8rem;font-weight:800}.rule-chip{padding:0 14px;color:#ffd889;border-color:#d7a3486b;background:#d7a3481f}.mode-actions,.command-bar,.result-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.mode-button,.primary-command,.secondary-command,.icon-command{cursor:pointer;transition:transform .16s ease,background-color .16s ease,border-color .16s ease,opacity .16s ease}.mode-button{padding:0 10px}.mode-button--active,.primary-command{border-color:#d7a348b8;color:#20160c;background:linear-gradient(180deg,#ffd47c,#c9892e);font-weight:800}.secondary-command{padding:0 13px}.icon-command{width:34px;padding:0}.icon-command--active{border-color:#ffd889b8;color:#ffd889;background:#d7a3482e}.mode-button:hover:not(:disabled),.primary-command:hover:not(:disabled),.secondary-command:hover:not(:disabled),.icon-command:hover:not(:disabled){transform:translateY(-1px);border-color:#fff7e36b}button:disabled{cursor:not-allowed;opacity:.43}.table-layout{display:grid;grid-template-columns:minmax(82px,.22fr) minmax(460px,1fr) minmax(82px,.22fr);grid-template-rows:minmax(72px,auto) minmax(0,1fr);gap:clamp(6px,.9vw,10px);min-height:0}.opponent-panel{position:relative;display:grid;gap:5px;min-width:0;padding:7px;border:1px solid rgba(255,247,227,.12);border-radius:8px;background:#05140f54}.opponent-panel--top{grid-column:2;grid-row:1}.opponent-panel--left{grid-column:1;grid-row:1 / span 2}.opponent-panel--right{grid-column:3;grid-row:1 / span 2}.opponent-panel.is-active,.player-status.is-active{border-color:#ffd380b8;box-shadow:0 0 0 1px #d7a34824}.player-status{display:flex;align-items:center;justify-content:space-between;gap:7px;min-width:0;padding:6px 8px;border:1px solid rgba(255,247,227,.12);border-radius:8px;background:#fff7e312}.player-status strong,.player-status span,.player-status small{display:block}.player-status strong{color:#fff7e3;font-size:.82rem}.relation-badge{display:inline-block;margin-right:4px;color:#ffd889;font-size:.68rem;font-weight:900}.player-status span,.player-status small{color:#f5f0e7a8;font-size:.68rem}.concealed-hand{display:flex;gap:3px;justify-content:center;flex-wrap:wrap;min-height:30px;max-height:66px;overflow:hidden}.opponent-panel--left .concealed-hand,.opponent-panel--right .concealed-hand{align-content:flex-start}.tile-back{width:18px;height:27px;border-radius:5px;border:1px solid rgba(255,247,227,.18);background:linear-gradient(135deg,rgba(255,255,255,.14),transparent 34%),repeating-linear-gradient(45deg,#124536 0,#124536 5px,#0d3328 5px,#0d3328 10px);box-shadow:inset 0 -2px #00000047}.table-center{position:relative;grid-column:2;grid-row:2;display:grid;grid-template-rows:auto minmax(0,1fr);gap:7px;min-height:0;padding:clamp(8px,1.3vw,14px);border:1px solid rgba(215,163,72,.24);border-radius:8px;background:linear-gradient(rgba(255,247,227,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,247,227,.05) 1px,transparent 1px),#04161061;background-size:28px 28px}.wall-counter{display:inline-flex;align-items:center;justify-self:center;gap:7px;min-height:28px;padding:0 10px;border-radius:8px;color:#f8dfad;background:#0003}.river-board{position:relative;display:grid;grid-template-columns:minmax(80px,.8fr) minmax(160px,1.1fr) minmax(80px,.8fr);grid-template-rows:minmax(74px,1fr) 8px minmax(74px,1fr);gap:6px;min-height:0}.river-zone{display:grid;gap:3px;min-width:0;min-height:56px;padding:6px;border:1px solid rgba(255,247,227,.11);border-radius:8px;background:#06120e40}.river-zone--top{grid-column:2;grid-row:1}.river-zone--left{grid-column:1;grid-row:1 / span 3}.river-zone--right{grid-column:3;grid-row:1 / span 3}.river-zone--bottom{grid-column:2;grid-row:3}.river-zone__name{color:#f5f0e794;font-size:.72rem;line-height:1}.river-zone__tiles{display:flex;gap:2px;flex-wrap:wrap;align-content:flex-start;min-height:42px}.river-zone--top .river-zone__tiles{justify-content:center;transform:rotate(180deg)}.river-zone--left .river-zone__tiles{align-content:center;justify-content:center;transform:rotate(90deg);transform-origin:center;min-height:176px}.river-zone--right .river-zone__tiles{align-content:center;justify-content:center;transform:rotate(-90deg);transform-origin:center;min-height:176px}.river-zone--bottom .river-zone__tiles{justify-content:center}.river-zone__empty{display:grid;place-items:center;width:100%;color:#f5f0e75c;font-size:.72rem}.recent-action{position:absolute;left:50%;top:50%;z-index:2;display:flex;align-items:center;justify-content:center;width:min(260px,54%);min-height:26px;padding:4px 9px;border:1px solid rgba(215,163,72,.3);border-radius:8px;color:#ffe0a1;background:#0000006b;box-shadow:0 8px 18px #0000002e;transform:translate(-50%,-50%);text-align:center;font-size:.76rem;line-height:1.2;pointer-events:none}.meld-row{display:flex;gap:5px;min-height:24px;align-items:center;flex-wrap:wrap}.meld-row--empty{display:none;color:#f5f0e761;font-size:.72rem}.meld-row--compact{min-height:28px}.meld-set{display:inline-flex;align-items:center;gap:2px;padding:2px 4px;border-radius:8px;background:#fff7e314}.meld-label{color:#f5f0e7ad;font-size:.7rem;font-weight:800}.claim-options{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.claim-option{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:4px 8px;border:1px solid rgba(255,247,227,.2);border-radius:8px;color:#fff7e3;background:#fff7e317;cursor:pointer}.claim-option:hover,.claim-option:focus-visible{border-color:#ffd889b8;background:#d7a3482e;outline:none}.claim-option>span:first-child{font-size:.84rem;font-weight:800}.claim-option__tiles{display:inline-flex;gap:1px;align-items:center}.claim-option__tiles img{width:18px;height:25px;object-fit:contain;filter:drop-shadow(0 3px 3px rgba(0,0,0,.18))}.human-area{display:grid;gap:7px;padding:8px 10px;border:1px solid rgba(255,247,227,.14);border-radius:8px;background:#04120d73}.hand-row{display:flex;gap:clamp(3px,.6vw,8px);min-height:74px;overflow-x:auto;padding:3px 2px 9px;scrollbar-width:thin}.tile-button{flex:0 0 auto;padding:0;border:0;border-radius:8px;background:transparent}.tile-button--drawn{margin-left:clamp(12px,1.8vw,24px)}.tile-button--drawn .tile-face{transform:translateY(-2px);filter:drop-shadow(0 0 8px rgba(255,216,137,.35)) drop-shadow(0 8px 9px rgba(0,0,0,.2))}.tile-button:not(:disabled):hover .tile-face{transform:translateY(-8px);filter:drop-shadow(0 16px 18px rgba(0,0,0,.26))}.tile-face{position:relative;display:inline-block;width:clamp(41px,4.9vw,58px);height:clamp(58px,6.9vw,82px);color:var(--ink);filter:drop-shadow(0 8px 9px rgba(0,0,0,.2));transition:transform .16s ease,filter .16s ease,opacity .16s ease}.tile-face--compact{width:30px;height:42px}.tile-face.is-muted{opacity:.62}.tile-face.is-fresh{animation:tile-land .52s cubic-bezier(.2,.8,.2,1);filter:drop-shadow(0 0 8px rgba(255,216,137,.7)) drop-shadow(0 9px 10px rgba(0,0,0,.24))}.tile-face.is-highlighted{transform:translateY(-10px);filter:drop-shadow(0 0 10px rgba(255,216,137,.9)) drop-shadow(0 14px 16px rgba(0,0,0,.28))}.tile-face__image{display:block;width:100%;height:100%;object-fit:contain;-webkit-user-select:none;user-select:none}.tile--characters{color:var(--red)}.tile--dots{color:var(--blue)}.tile--bamboos,.tile--dragon-green{color:var(--green)}.tile--dragon-red{color:var(--red)}.tile--honor{color:#16120f}@keyframes tile-land{0%{opacity:0;transform:translateY(-18px) scale(1.16) rotate(-4deg)}65%{opacity:1;transform:translateY(2px) scale(.98) rotate(1deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(0)}}.result-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:16px;border-radius:8px;background:#020806b8;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:5}.result-card{width:min(520px,100%);max-height:calc(100% - 8px);overflow-y:auto;padding:clamp(18px,3vw,26px);border:1px solid rgba(215,163,72,.48);border-radius:8px;background:linear-gradient(145deg,rgba(255,247,227,.1),transparent 34%),#14241c;box-shadow:0 22px 70px #0000006b}.result-card h2{color:#fff7e3;font-size:clamp(1.6rem,5vw,2.8rem)}.result-title{margin-top:12px;color:#ffd889;font-size:1.08rem;font-weight:800}.result-score{margin-top:4px;color:#fff7e3;font-size:clamp(2.1rem,8vw,4rem);font-weight:900}.result-details{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.result-details span,.pattern-note{color:#f5f0e7b8;font-size:.82rem}.result-hand{display:flex;gap:5px;flex-wrap:wrap;margin:14px 0}.pattern-note{margin:0 0 18px}.pause-card h2,.settings-card h2{margin-bottom:12px}.settings-card{width:min(560px,100%)}.settings-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;margin:10px 0 12px;padding:4px;border:1px solid rgba(255,247,227,.12);border-radius:8px;background:#05120d57}.settings-tabs button{min-height:34px;border:0;border-radius:6px;background:transparent;color:#f5f0e7b3;font:inherit;font-size:.86rem;font-weight:800;cursor:pointer}.settings-tabs button.is-active{background:#ffd8892e;color:#ffd889}.settings-page{display:grid;gap:10px}.pause-scoreboard{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:14px 0}.pause-scoreboard div{display:grid;gap:2px;padding:9px 10px;border:1px solid rgba(255,247,227,.12);border-radius:8px;background:#fff7e312}.pause-scoreboard span{color:#f5f0e799;font-size:.72rem}.pause-scoreboard strong{color:#fff7e3;font-size:.95rem}.name-editor{display:grid;gap:8px;margin:0;padding:10px;border:1px solid rgba(215,163,72,.24);border-radius:8px;background:#05120d4d}.name-editor-row{display:grid;grid-template-columns:86px minmax(0,1fr);align-items:center;gap:8px}.name-editor-row span{color:#f5f0e79e;font-size:.72rem}.name-editor-row input{min-width:0;height:34px;padding:0 10px;border:1px solid rgba(255,247,227,.16);border-radius:8px;background:#fff7e314;color:#fff7e3;font:inherit;outline:none}.name-editor-row input:focus{border-color:#ffd889b8;box-shadow:0 0 0 2px #ffd8891f}.name-editor-actions{display:flex;gap:8px;flex-wrap:wrap}@media(max-width:860px)and (orientation:portrait){.app-shell{padding:0}.game-frame{grid-template-rows:auto minmax(0,1fr) auto;width:100%;height:100svh;min-height:0;padding:8px;border-radius:0}.top-bar{grid-template-columns:minmax(120px,1fr) auto;gap:7px;padding:3px 4px 6px}.rule-chip{justify-self:end}.mode-actions{grid-column:1 / -1;justify-content:flex-start;gap:6px}.table-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);gap:6px}.opponent-panel--top{grid-column:1 / -1;grid-row:1}.opponent-panel--left{grid-column:1;grid-row:2}.opponent-panel--right{grid-column:2;grid-row:2}.table-center{grid-column:1 / -1;grid-row:3;min-height:0;padding:8px}.river-board{grid-template-columns:1fr 1fr;grid-template-rows:auto auto auto;min-height:0}.river-zone--top,.river-zone--bottom,.river-zone--left,.river-zone--right{grid-column:auto;grid-row:auto}.river-zone--top,.river-zone--bottom{grid-column:1 / -1}.recent-action{width:min(240px,70%);min-height:24px;font-size:.72rem}.river-zone--top .river-zone__tiles,.river-zone--left .river-zone__tiles,.river-zone--right .river-zone__tiles{min-height:50px;transform:none}.opponent-panel{padding:6px}.concealed-hand{max-height:32px;overflow:hidden}.tile-back{width:15px;height:22px;border-radius:4px}}@media(max-width:860px)and (orientation:landscape){.app-shell{padding:0}.game-frame{grid-template-rows:30px minmax(0,1fr) 92px;height:100svh;min-height:0;gap:3px;padding:3px}.top-bar{grid-template-columns:minmax(120px,1fr) auto minmax(190px,1fr);gap:4px;padding:0 3px 2px}.eyebrow{display:none}h1{font-size:1rem}.rule-chip,.mode-button{min-height:24px;padding:0 6px;font-size:.68rem}.mode-actions{grid-column:auto;justify-content:flex-end;gap:4px}.icon-command{width:26px;min-height:26px}.table-layout{grid-template-columns:minmax(56px,.18fr) minmax(430px,1fr) minmax(56px,.18fr);grid-template-rows:40px minmax(0,1fr);gap:3px}.opponent-panel{gap:2px;padding:3px}.player-status{gap:4px;padding:3px 4px}.player-status strong{font-size:.68rem}.player-status span,.player-status small{font-size:.58rem}.relation-badge{margin-right:2px;font-size:.56rem}.concealed-hand{min-height:13px;max-height:15px;gap:2px}.tile-back{width:9px;height:14px;border-radius:3px}.table-center{padding:3px;gap:2px}.wall-counter{min-height:20px;padding:0 7px;font-size:.66rem}.river-board{grid-template-columns:minmax(56px,.7fr) minmax(142px,1.4fr) minmax(56px,.7fr);grid-template-rows:minmax(44px,1fr) 3px minmax(44px,1fr);gap:3px}.river-zone{min-height:38px;padding:3px}.river-zone__name{font-size:.6rem}.river-zone__tiles{min-height:28px;gap:1px}.river-zone--top .river-zone__tiles{transform:rotate(180deg)}.river-zone--left .river-zone__tiles{min-height:104px;transform:rotate(90deg)}.river-zone--right .river-zone__tiles{min-height:104px;transform:rotate(-90deg)}.recent-action{width:min(190px,58%);min-height:20px;padding:2px 6px;font-size:.62rem}.tile-face{width:30px;height:42px}.tile-face--compact{width:19px;height:27px}.human-area{gap:2px;padding:4px;overflow:hidden}.human-area>.player-status{display:none}.hand-row{min-height:44px;padding:0 1px 2px}.command-bar{justify-content:flex-start;gap:5px}.primary-command,.secondary-command{min-height:24px;padding:0 7px;font-size:.68rem}.claim-option{min-height:24px;padding:2px 5px}.claim-option__tiles img{width:15px;height:21px}}@media(max-width:860px)and (orientation:portrait){.game-frame{visibility:hidden}.rotate-device{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:24px;color:#fff7e3;background:radial-gradient(circle at 50% 20%,rgba(215,163,72,.18),transparent 30%),linear-gradient(145deg,#0a1711,#102b21 55%,#07100d);text-align:center}.rotate-device div{display:grid;gap:10px;max-width:280px;padding:20px;border:1px solid rgba(215,163,72,.36);border-radius:8px;background:#0000003d}.rotate-device strong{color:#ffd889;font-size:1.3rem}.rotate-device span{color:#f5f0e7bd;line-height:1.5}}@media(max-height:760px)and (min-width:861px){.game-frame{gap:6px;padding:8px;min-height:0}.top-bar{padding-bottom:5px}.eyebrow{display:none}h1{font-size:1.18rem}.table-layout{grid-template-columns:minmax(74px,.2fr) minmax(480px,1fr) minmax(74px,.2fr);grid-template-rows:minmax(54px,auto) minmax(0,1fr);gap:6px}.opponent-panel{gap:4px;padding:5px}.player-status{padding:5px 6px}.concealed-hand{min-height:24px;max-height:48px}.tile-back{width:15px;height:23px}.table-center{padding:8px}.river-board{grid-template-rows:minmax(64px,1fr) 6px minmax(64px,1fr);gap:5px}.river-zone{min-height:48px;padding:5px}.river-zone--left .river-zone__tiles,.river-zone--right .river-zone__tiles{min-height:150px}.recent-action{min-height:22px;padding:3px 8px;font-size:.86rem}.human-area{gap:5px;padding:6px 8px}.hand-row{min-height:66px;padding-bottom:5px}.tile-face{width:clamp(38px,4.3vw,52px);height:clamp(54px,6vw,74px)}.tile-face--compact{width:27px;height:38px}}:root{--hand-tile-width: clamp(42px, 4.2vw, 58px);--hand-tile-height: calc(var(--hand-tile-width) * 1.42);--river-tile-width: 28px;--river-tile-height: 39px;--back-width: 15px;--back-height: 23px;--frame-gap: clamp(4px, .7vh, 9px)}html,body,#root{width:100%;height:100%}body{min-width:0;min-height:0;overflow:hidden;overscroll-behavior:none}.app-shell{width:100%;height:100svh;min-height:0;overflow:hidden;padding:max(4px,env(safe-area-inset-top)) max(4px,env(safe-area-inset-right)) max(4px,env(safe-area-inset-bottom)) max(4px,env(safe-area-inset-left))}.game-frame{grid-template-rows:auto minmax(0,1fr);gap:var(--frame-gap);width:min(1440px,100%);height:100%;min-height:0;padding:clamp(4px,.8vw,12px);overflow:hidden}.top-bar{position:relative;z-index:10;min-height:38px;padding:2px 6px 5px}.mahjong-table{position:relative;min-width:0;min-height:0;overflow:hidden;isolation:isolate;border:1px solid rgba(215,163,72,.28);border-radius:9px;background:linear-gradient(90deg,transparent 49.88%,rgba(255,247,227,.035) 50%,transparent 50.12%),linear-gradient(transparent 49.8%,rgba(255,247,227,.035) 50%,transparent 50.2%),radial-gradient(circle at center,#1b6149e6 0,#0c3e2ef5 55%,#082d22);box-shadow:inset 0 0 70px #00000057,inset 0 0 0 5px #041f1657}.table-felt{position:absolute;inset:clamp(28px,5vh,52px) clamp(46px,7vw,92px) clamp(70px,13vh,132px);z-index:-1;border:1px solid rgba(255,236,195,.055);border-radius:46%;background:repeating-linear-gradient(35deg,rgba(255,255,255,.012) 0 1px,transparent 1px 5px),#021c141a}.table-seat{position:absolute;z-index:4;display:flex;align-items:center;gap:clamp(4px,.7vw,9px);pointer-events:none}.table-seat--top{top:clamp(3px,.8vh,8px);left:50%;flex-direction:row-reverse;transform:translate(-50%)}.table-seat--left{top:44%;left:clamp(3px,.5vw,8px);align-items:flex-start;flex-direction:column;transform:translateY(-50%)}.table-seat--right{top:44%;right:clamp(3px,.5vw,8px);align-items:flex-end;flex-direction:column;transform:translateY(-50%)}.table-seat .player-status{position:relative;flex:0 0 auto;min-width:clamp(118px,12vw,170px);padding:5px 8px;border-color:#fff7e32b;background:#031610d1;box-shadow:0 7px 18px #0000003d;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.table-seat--left .player-status,.table-seat--right .player-status{position:absolute;top:calc(100% + 5px);min-width:clamp(102px,10vw,142px)}.table-seat--left .player-status{left:0}.table-seat--right .player-status{right:0}.table-seat.is-active .player-status,.human-area.is-active .player-status{border-color:#ffd889e6;box-shadow:0 0 0 1px #d7a34833,0 0 18px #ffc6573d;animation:active-seat 1.8s ease-in-out infinite}.table-seat__rack{display:flex;align-items:center;gap:4px;min-width:0}.table-seat--left .table-seat__rack,.table-seat--right .table-seat__rack{flex-direction:column;gap:0}.concealed-hand{display:flex;flex-wrap:nowrap;justify-content:center;gap:2px;min-height:0;max-height:none;overflow:visible}.table-seat--left .concealed-hand,.table-seat--right .concealed-hand{flex-direction:column;align-items:center;gap:0}.tile-back{flex:0 0 auto;width:var(--back-width);height:var(--back-height);border-radius:3px}.table-seat--top .tile-back{transform:rotate(180deg)}.table-seat--left .tile-back{margin-block:calc((var(--back-width) - var(--back-height)) / 2);transform:rotate(90deg)}.table-seat--right .tile-back{margin-block:calc((var(--back-width) - var(--back-height)) / 2);transform:rotate(-90deg)}.table-seat .meld-row{flex-wrap:nowrap}.table-seat--left .meld-row,.table-seat--right .meld-row{flex-direction:column;max-width:none;justify-content:center;gap:0}.table-seat--left .meld-set,.table-seat--right .meld-set{position:relative;flex-direction:column;gap:0;padding:0;background:transparent}.table-seat--left .meld-label,.table-seat--right .meld-label{position:absolute;z-index:2;top:-5px;left:50%;min-width:14px;padding:1px 2px;border:1px solid rgba(255,216,137,.38);border-radius:3px;color:#ffd889;background:#031610d1;font-size:.52rem;line-height:1;text-align:center;transform:translate(-50%)}.table-seat--top .meld-row .tile-face{width:var(--back-width);height:var(--back-height);transform:rotate(180deg)}.table-seat--left .meld-row .tile-face{width:var(--back-width);height:var(--back-height);margin-block:calc((var(--back-width) - var(--back-height)) / 2);transform:rotate(90deg)}.table-seat--right .meld-row .tile-face{width:var(--back-width);height:var(--back-height);margin-block:calc((var(--back-width) - var(--back-height)) / 2);transform:rotate(-90deg)}.river-board{position:absolute;inset:clamp(64px,11vh,100px) clamp(145px,16vw,190px) calc(var(--hand-tile-height) + 64px);z-index:2;display:block;min-width:0;min-height:0}.river-board:before{content:"";position:absolute;top:22%;right:27%;bottom:22%;left:27%;border:1px solid rgba(231,196,128,.16);border-radius:7px;background:linear-gradient(135deg,rgba(255,247,227,.055),transparent 38%),#02181138;transform:rotate(45deg)}.river-zone{position:absolute;display:block;min-width:0;min-height:0;padding:3px;border:0;border-radius:4px;background:transparent}.river-zone--top,.river-zone--bottom{left:50%;width:46%;height:46%;transform:translate(-50%)}.river-zone--top{top:0}.river-zone--bottom{bottom:0}.river-zone--left,.river-zone--right{top:50%;width:27%;height:76%;transform:translateY(-50%)}.river-zone--left{left:0}.river-zone--right{right:0}.river-zone__name{position:absolute;z-index:1;padding:2px 5px;border-radius:3px;color:#f5f0e77a;background:#0217107a;font-size:clamp(.56rem,.85vw,.7rem);line-height:1;white-space:nowrap}.river-zone--top .river-zone__name{top:0;left:50%;transform:translate(-50%)}.river-zone--bottom .river-zone__name{right:0;bottom:0}.river-zone--left .river-zone__name{bottom:0;left:0}.river-zone--right .river-zone__name{right:0;bottom:0}.river-zone__tiles{display:grid;align-content:center;justify-content:center;gap:2px;width:100%;height:100%;min-height:0}.river-zone--top .river-zone__tiles,.river-zone--bottom .river-zone__tiles{grid-template-columns:repeat(6,var(--river-tile-width));grid-auto-rows:var(--river-tile-height)}.river-zone--left .river-zone__tiles,.river-zone--right .river-zone__tiles{grid-auto-flow:column;grid-template-rows:repeat(6,var(--river-tile-width));grid-auto-columns:var(--river-tile-height);min-height:0;transform:none}.river-zone .tile-face--compact{align-self:center;justify-self:center;width:var(--river-tile-width);height:var(--river-tile-height)}.river-zone--top .tile-face{transform:rotate(180deg)}.river-zone--top .tile-face.is-fresh{animation-name:tile-land-top}.river-zone--left .tile-face{transform:rotate(90deg)}.river-zone--left .tile-face.is-fresh{animation-name:tile-land-left}.river-zone--right .tile-face{transform:rotate(-90deg)}.river-zone--right .tile-face.is-fresh{animation-name:tile-land-right}@keyframes tile-land-top{0%{opacity:0;transform:translateY(-18px) scale(1.16) rotate(180deg)}65%{opacity:1;transform:translateY(2px) scale(.98) rotate(180deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(180deg)}}@keyframes tile-land-left{0%{opacity:0;transform:translateY(-18px) scale(1.16) rotate(90deg)}65%{opacity:1;transform:translateY(2px) scale(.98) rotate(90deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(90deg)}}@keyframes tile-land-right{0%{opacity:0;transform:translateY(-18px) scale(1.16) rotate(-90deg)}65%{opacity:1;transform:translateY(2px) scale(.98) rotate(-90deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(-90deg)}}.river-zone__empty{position:absolute;top:0;right:0;bottom:0;left:0;width:auto;font-size:clamp(.55rem,.8vw,.7rem)}.wall-counter{position:absolute;top:50%;left:50%;z-index:3;min-height:29px;transform:translate(-50%,-50%);border:1px solid rgba(215,163,72,.26);background:#02110cb8;box-shadow:0 5px 14px #00000040}.recent-action{top:calc(50% + 36px);width:min(330px,54%);min-height:25px}.human-area{position:absolute;right:clamp(14px,5vw,72px);bottom:clamp(2px,.6vh,8px);left:clamp(14px,5vw,72px);z-index:5;display:block;min-width:0;padding:0;border:0;background:transparent}.human-area.is-active{box-shadow:inset 0 -2px #ffd889d1,0 7px 14px -9px #ffc657e6}.human-area>.player-status{display:none}.hand-row{display:flex;align-items:flex-end;justify-content:center;gap:clamp(2px,.38vw,6px);min-height:var(--hand-tile-height);padding:0;overflow:visible}.tile-face{width:var(--hand-tile-width);height:var(--hand-tile-height)}.tile-face--compact{width:var(--river-tile-width);height:var(--river-tile-height)}.tile-button--drawn{margin-left:clamp(9px,1.5vw,22px)}.command-bar{position:absolute;right:50%;bottom:calc(var(--hand-tile-height) + clamp(11px,2vh,20px));z-index:8;width:max-content;max-width:calc(100% - 16px);justify-content:center;flex-wrap:nowrap;padding:4px;border:1px solid rgba(255,247,227,.12);border-radius:9px;background:#031610c7;box-shadow:0 9px 22px #00000042;transform:translate(50%);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.claim-options{flex-wrap:nowrap}.result-backdrop{position:absolute;z-index:20;top:0;right:0;bottom:0;left:0}@keyframes active-seat{0%,to{filter:brightness(1)}50%{filter:brightness(1.15)}}@media(orientation:landscape)and (max-height:430px){:root{--hand-tile-width: clamp(30px, 4.5vw, 43px);--river-tile-width: 19px;--river-tile-height: 27px;--back-width: 10px;--back-height: 15px}.app-shell{padding:max(2px,env(safe-area-inset-top)) max(2px,env(safe-area-inset-right)) max(2px,env(safe-area-inset-bottom)) max(2px,env(safe-area-inset-left))}.game-frame{gap:2px;padding:2px;border-radius:5px}.top-bar{grid-template-columns:minmax(100px,1fr) auto minmax(170px,1fr);min-height:27px;padding:0 3px 2px}.top-bar h1{font-size:.96rem}.top-bar .eyebrow{display:none}.rule-chip,.score-chip,.mode-button,.icon-command{min-height:23px;font-size:.66rem}.mode-button{padding:0 6px}.score-chip{padding:0 7px}.icon-command{width:25px}.mahjong-table{border-radius:5px}.table-felt{top:26px;right:44px;bottom:58px;left:44px}.table-seat{gap:3px}.table-seat .player-status{min-width:105px;padding:3px 5px}.table-seat--left .player-status,.table-seat--right .player-status{min-width:92px}.player-status strong{font-size:.66rem}.player-status span,.player-status small{font-size:.55rem}.relation-badge{font-size:.54rem}.river-board{inset:52px 145px calc(var(--hand-tile-height) + 40px)}.river-board:before{top:24%;right:31%;bottom:24%;left:31%}.river-zone__tiles{gap:1px}.river-zone--top .river-zone__tiles,.river-zone--bottom .river-zone__tiles{grid-template-columns:repeat(8,var(--river-tile-width))}.river-zone--left .river-zone__tiles,.river-zone--right .river-zone__tiles{grid-template-columns:repeat(4,var(--river-tile-height))}.wall-counter{min-height:21px;padding:0 7px;font-size:.62rem}.wall-counter svg{width:13px}.recent-action{top:calc(50% + 26px);width:min(250px,58%);min-height:19px;padding:2px 6px;font-size:.6rem}.human-area{right:16px;bottom:1px;left:16px}.human-area>.player-status{min-width:102px;padding:3px 5px}.command-bar{bottom:calc(var(--hand-tile-height) + 8px);gap:4px;padding:2px;border-radius:6px}.primary-command,.secondary-command,.claim-option{min-height:23px;padding:0 7px;border-radius:6px;font-size:.65rem}.primary-command svg,.secondary-command svg{width:14px;height:14px}.claim-option{gap:3px;padding:1px 4px}.claim-option>span:first-child{font-size:.67rem}.claim-option__tiles img{width:14px;height:20px}.meld-set{padding:1px 2px}.meld-label{font-size:.58rem}}@media(orientation:landscape)and (max-height:320px){:root{--hand-tile-width: clamp(27px, 4vw, 34px);--river-tile-width: 13px;--river-tile-height: 18px;--back-width: 8px;--back-height: 12px}.top-bar{grid-template-columns:minmax(90px,1fr) minmax(140px,auto);min-height:23px}.rule-chip,.mode-button[disabled]{display:none}.mode-actions{gap:3px}.mode-button,.icon-command{min-height:20px}.table-seat--top{top:1px}.table-seat--left,.table-seat--right{top:40%}.table-seat .player-status{min-width:96px;padding:2px 4px}.table-seat--left .player-status,.table-seat--right .player-status{min-width:84px}.table-seat--left .player-status>div>span,.table-seat--right .player-status>div>span{display:none}.concealed-hand{gap:1px}.river-board{inset:48px 145px calc(var(--hand-tile-height) + 40px)}.river-zone__name{display:none}.wall-counter{min-height:18px;padding:0 5px;font-size:.56rem}.recent-action{top:calc(50% + 21px);width:min(220px,54%);min-height:17px;font-size:.54rem}.human-area{right:10px;left:10px}.human-area>.player-status{display:none}.command-bar{bottom:calc(var(--hand-tile-height) + 7px)}.primary-command,.secondary-command,.claim-option{min-height:20px;padding:0 5px;font-size:.6rem}.claim-option>span:first-child{font-size:.6rem}.claim-option__tiles img{width:12px;height:17px}.result-backdrop{padding:4px}.result-card{width:min(500px,100%);max-height:calc(100% - 4px);padding:8px 12px}.result-card h2{font-size:1.22rem}.result-title{margin-top:4px;font-size:.82rem}.result-score{font-size:1.7rem}.result-details,.result-hand{margin:5px 0}.pause-card h2,.settings-card h2{margin-bottom:3px}.settings-tabs{margin:4px 0;padding:3px}.settings-tabs button{min-height:25px;font-size:.68rem}.settings-page{gap:5px}.pause-scoreboard{gap:4px;margin:4px 0}.pause-scoreboard div{padding:3px 6px}.pause-scoreboard span{font-size:.58rem}.pause-scoreboard strong{font-size:.72rem}.name-editor{gap:4px;padding:6px}.name-editor-row{grid-template-columns:70px minmax(0,1fr);gap:6px}.name-editor-row span{font-size:.58rem}.name-editor-row input{height:26px;padding:0 7px;font-size:.72rem}.name-editor-actions{gap:5px}.pattern-note{margin-bottom:5px;font-size:.62rem;line-height:1.25}.result-actions{gap:4px}}@media(orientation:portrait)and (max-width:1024px){.game-frame{display:none}.rotate-device{visibility:visible}}
