:root{color:#17231d;background:#edf4ef;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body{margin:0;min-width:320px;min-height:100vh;overflow-x:hidden}button{border:0;border-radius:8px;min-height:48px;padding:0 22px;color:#fff;background:#247a54;font-size:16px;font-weight:700;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}button.secondary{color:#1f3b2e;background:#fff;border:1px solid #c9dbd0}.page-shell{min-height:100vh;display:grid;place-items:center;padding:16px;background:linear-gradient(180deg,#fbfdfb,#edf4ef)}.hero-panel{width:min(100%,560px);padding:20px;border:1px solid #d3e2d8;border-radius:8px;background:#ffffffd1;box-shadow:0 18px 50px #274b3724}.layout-landscape .hero-panel{width:min(100%,920px)}.layout-landscape .room-panel{grid-template-columns:minmax(260px,340px) minmax(0,1fr);align-items:start}.layout-landscape .room-header,.layout-landscape .seat-list,.layout-landscape .share-box,.layout-landscape .rule-config,.layout-landscape .actions{grid-column:1}.layout-landscape .game-panel{grid-column:2;grid-row:1 / span 7}.eyebrow{margin:28px 0 8px;color:#547062;font-size:14px;font-weight:700}.release-ribbon{display:grid;gap:3px;margin-top:14px;padding:10px 12px;border:1px solid #b8d7c4;border-radius:8px;background:#eef8f2;color:#173c2b}.release-ribbon.calibration{border-color:#e2c57d;background:#fff8e7;color:#765719}.release-ribbon span{font-size:12px;font-weight:800}h1{margin:0;font-size:clamp(36px,9vw,56px);line-height:1.05;letter-spacing:0}.intro{margin:16px 0 24px;color:#5f746a;line-height:1.7}.version-line{margin:8px 0 0;color:#247a54;font-size:14px;font-weight:900}.actions{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:18px}.form-grid{display:grid;gap:14px}label{display:grid;gap:7px;color:#547062;font-size:13px;font-weight:700}input,select,textarea{width:100%;min-height:48px;border:1px solid #c9dbd0;border-radius:8px;padding:0 14px;background:#fff;color:#17231d;font:inherit;font-size:16px}input[type=checkbox]{width:20px;min-height:20px;accent-color:#247a54}.settings-panel{display:grid;gap:12px;padding:12px;border:1px solid #d5e5db;border-radius:8px;background:#f8fcf9}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.toggle-row{display:flex;align-items:center;gap:9px;color:#1f3b2e;font-size:14px;font-weight:800}.toggle-row label,.toggle-row.compact{cursor:pointer}.checkbox-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.room-panel{display:grid;gap:14px}.room-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px;border:1px solid #d5e5db;border-radius:8px;background:#f4faf6}.room-header span,.share-box span{display:block;margin-bottom:4px;color:#678074;font-size:12px}.room-header strong{font-size:28px;letter-spacing:0}.room-header em{display:block;margin-top:3px;color:#5f746a;font-size:13px;font-style:normal;font-weight:800}.room-status{flex:0 0 auto;border-radius:999px;padding:8px 10px;background:#eef3ef;color:#5b7167;font-size:13px;font-weight:800}.room-status.ready{background:#247a54;color:#fff}.room-status.playing{background:#173c2b;color:#fff}.room-status.resolvingAction{background:#8a5c13;color:#fff}.seat-list{display:grid;gap:10px}.seat-card{display:grid;gap:5px;min-height:78px;padding:12px;border:1px solid #d5e5db;border-radius:8px;background:#fff}.seat-card span{color:#678074;font-size:12px}.seat-card strong{font-size:18px}.seat-card em{color:#5f746a;font-size:13px;font-style:normal}.share-box{display:grid;gap:8px;padding:14px;border:1px solid #d5e5db;border-radius:8px;background:#f4faf6}.feedback-panel{display:grid;gap:10px;padding:12px 14px;border:1px solid #cfe0d6;border-radius:8px;background:#f8fcf9}.feedback-panel summary{min-height:32px;color:#1f3b2e;font-size:15px;font-weight:800;cursor:pointer}.feedback-panel em,.status-card em{color:#678074;font-size:12px;font-style:normal;font-weight:800}.admin-panel{width:min(100%,920px)}.admin-token-box{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end;margin:16px 0}.admin-nav{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.admin-nav a,.admin-item a{display:inline-grid;place-items:center;min-height:38px;padding:0 12px;border-radius:8px;background:#fff;color:#1f3b2e;border:1px solid #c9dbd0;font-weight:800;text-decoration:none}.admin-list{display:grid;gap:10px}.admin-item{display:grid;gap:7px;padding:12px;border:1px solid #d5e5db;border-radius:8px;background:#fff}.admin-item.warning{border-color:#e2c57d;background:#fff8e7}.admin-item span,.admin-item em{color:#678074;font-size:13px;font-style:normal}.admin-item p{margin:0;line-height:1.6}.admin-json{overflow:auto;max-height:520px;padding:12px;border:1px solid #d5e5db;border-radius:8px;background:#10271d;color:#dff1e6;font-size:12px;line-height:1.5}.rule-config{display:grid;gap:8px;padding:12px 14px;border:1px solid #d5e5db;border-radius:8px;background:#fff}.rule-config summary{min-height:32px;color:#1f3b2e;font-size:15px;font-weight:800;cursor:pointer}.rule-config div{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-top:1px solid #edf4ef}.rule-config span{color:#678074;font-size:13px}.rule-config strong{font-size:14px}.rules-backlog strong{text-align:right}.share-box strong{overflow-wrap:anywhere;font-size:13px}.game-panel{display:grid;gap:12px}.mobile-table{margin-inline:-6px}.table-status-bar{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:1fr .9fr .7fr 1fr 1.2fr;gap:6px;padding:8px;border:1px solid #bed6c8;border-radius:8px;background:#173c2b;color:#fff}.table-status-bar span{color:#bcd6c8;font-size:11px}.opponent-card{display:grid;gap:7px;min-width:0;padding:10px;border:1px solid #d5e5db;border-radius:8px;background:#fff}.opponent-card strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px}.opponent-card span,.meld-line{color:#5f746a;font-size:12px}.mini-discards{display:flex;flex-wrap:wrap;gap:4px;min-height:24px}.mini-discards span{display:inline-grid;place-items:center;min-height:24px;padding:0 6px;border-radius:5px;background:#edf4ef;color:#173c2b;font-size:12px;font-weight:800}.table-center{display:grid;gap:5px;min-height:92px;padding:14px;border:1px solid #cfe0d6;border-radius:8px;background:#f8fcf9;text-align:center}.table-center.my-turn{border-color:#247a54;background:#eef8f2}.table-center span{color:#678074;font-size:13px;font-weight:800}.table-center strong{color:#173c2b;font-size:22px}.table-center em{color:#5f746a;font-size:13px;font-style:normal}.table-action-panel{position:sticky;bottom:142px;z-index:6}.result-panel{display:grid;gap:10px;padding:14px;border:1px solid #b9d6c4;border-radius:8px;background:#f1fbf5}.result-panel>span{color:#5f746a;font-size:12px}.result-panel strong{color:#173c2b;font-size:18px}.score-delta-list{display:flex;flex-wrap:wrap;gap:8px}.score-delta-list em{display:inline-grid;place-items:center;min-height:30px;padding:0 10px;border-radius:6px;background:#fff;color:#1f3b2e;font-size:13px;font-style:normal;font-weight:800}.game-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.game-stats div{display:grid;gap:5px;padding:12px;border:1px solid #d5e5db;border-radius:8px;background:#fff}.game-stats span,.hand-panel span{color:#678074;font-size:12px}.game-stats strong{font-size:18px}.hand-panel{display:grid;gap:10px;padding:14px;border:1px solid #d5e5db;border-radius:8px;background:#f8fcf9}.self-area{position:sticky;bottom:0;z-index:7;margin-inline:-6px;padding-bottom:max(14px,env(safe-area-inset-bottom));box-shadow:0 -10px 24px #274b371f}.self-melds em{padding:4px 7px;border-radius:6px;background:#edf4ef;color:#173c2b;font-size:12px;font-style:normal;font-weight:800}.action-panel{display:grid;gap:10px;padding:14px;border:1px solid #e2c57d;border-radius:8px;background:#fff8e7}.action-panel.subtle{border-color:#d5e5db;background:#f4faf6}.action-panel>span{color:#765719;font-size:13px;font-weight:800}.discard-panel{display:grid;gap:10px;padding:14px;border:1px solid #d5e5db;border-radius:8px;background:#fff}.discard-panel>span{color:#678074;font-size:12px}.discard-grid{display:grid;gap:10px}.discard-row{display:grid;gap:6px}.discard-row strong{font-size:14px}.discard-tiles{display:flex;flex-wrap:wrap;gap:6px;min-height:28px}.discard-tiles em{color:#7f9389;font-size:13px;font-style:normal}.discard-tile{display:inline-grid;place-items:center;min-height:28px;padding:0 8px;border-radius:6px;background:#edf4ef;color:#173c2b;font-size:13px;font-weight:800}.tile-list{display:flex;flex-wrap:wrap;gap:7px;justify-content:center}.mahjong-tile{width:44px;min-height:60px;display:grid;place-items:center;border:1px solid #cfded5;border-radius:6px;background:#fff;color:#173c2b;box-shadow:0 4px #d8e6dd;font-size:14px;font-weight:800;padding:0}.self-discards>span{color:#678074;font-size:12px}.error-message{margin:0 0 14px;padding:10px 12px;border-radius:8px;background:#fff0f0;color:#b13f3f;font-weight:700}.connection-badge{display:inline-flex;align-items:center;gap:8px;min-height:34px;padding:0 12px;border-radius:999px;border:1px solid #d6e5dc;background:#fff;color:#506b5d;font-size:14px;font-weight:700}.connection-badge.connected .connection-dot{background:#24a35f;box-shadow:0 0 0 4px #24a35f24}.connection-badge.disconnected .connection-dot{background:#d64e4e;box-shadow:0 0 0 4px #d64e4e1f}.status-card{display:grid;gap:6px;padding:14px;border-radius:8px;background:#f4faf6;border:1px solid #d5e5db}.status-card span{color:#678074;font-size:13px}@media(max-width:430px){.page-shell{padding:8px;align-items:start}.hero-panel{width:100%;padding:14px}h1{font-size:34px}.intro{margin-bottom:16px;font-size:15px}.actions,.settings-grid,.checkbox-grid{grid-template-columns:1fr}.seat-list{gap:8px}.seat-card{min-height:64px;padding:10px}.room-header{align-items:flex-start;flex-direction:column}.table-status-bar{grid-template-columns:1fr .9fr .7fr 1fr 1fr}.table-status-bar strong{font-size:14px}.opponent-card{padding:9px}.action-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.action-buttons button{width:100%;padding-inline:10px}.mahjong-tile{width:39px;min-height:58px;font-size:13px}}@media(orientation:landscape)and (min-width:700px){.layout-auto .hero-panel{width:min(100%,920px)}.layout-auto .room-panel{grid-template-columns:minmax(260px,340px) minmax(0,1fr);align-items:start}.layout-auto .game-panel{grid-column:2;grid-row:1 / span 7}}@media(max-width:370px){.mahjong-tile{width:36px;min-height:56px;font-size:12px}.tile-list{gap:5px}}:root{--color-bg-deep: #073f38;--color-jade: #0f6b5a;--color-jade-light: #2d9a7b;--color-cream: #f7efd8;--color-paper: #fff8e8;--color-gold: #d8a43a;--color-gold-light: #f3d27a;--color-red: #b23a2e;--color-text-dark: #2f2a1f;--color-text-light: #fff8df;--shadow-card: 0 8px 24px rgba(0, 0, 0, .22);--radius-card: 18px;--radius-button: 16px;--table-felt: radial-gradient(circle at 50% 45%, #1b8a68 0%, #0f6b5a 48%, #073f38 100%);color:var(--color-text-dark);background:var(--color-bg-deep);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html{min-width:320px;background:var(--color-bg-deep)}body{margin:0;min-width:320px;min-height:100vh;overflow-x:hidden;background:radial-gradient(circle at 20% 0%,rgba(243,210,122,.16),transparent 28%),linear-gradient(180deg,#073f38,#0b5449 46%,#082f2b)}button,input,select,textarea{font-family:inherit}.game-card{border:1px solid rgba(216,164,58,.36);border-radius:var(--radius-card);box-shadow:var(--shadow-card)}.game-card-paper{background:linear-gradient(180deg,#fff8e8f7,#f7efd8f2)}.game-card-jade{background:linear-gradient(180deg,#0f6b5af7,#073f38f5);color:var(--color-text-light)}.game-card-gold{background:linear-gradient(180deg,#fff6d8,#f6df9d)}.game-card-table{background:var(--table-felt);color:var(--color-text-light)}.game-button{position:relative;min-height:48px;border:1px solid rgba(255,248,223,.38);border-radius:var(--radius-button);padding:0 20px;font-size:16px;font-weight:900;letter-spacing:0;box-shadow:0 5px #241e0938,inset 0 1px #ffffff47;cursor:pointer;touch-action:manipulation}.game-button-primary{background:linear-gradient(180deg,var(--color-jade-light),var(--color-jade));color:var(--color-text-light)}.game-button-secondary{background:linear-gradient(180deg,#fffdf4,var(--color-cream));border-color:#d8a43a7a;color:var(--color-jade)}.game-button-gold{background:linear-gradient(180deg,var(--color-gold-light),var(--color-gold));border-color:#fff8df8c;color:#412f0a}.game-button-danger{background:linear-gradient(180deg,#d95a4d,var(--color-red));color:var(--color-text-light)}.game-button-full{width:100%}.game-button:disabled{cursor:not-allowed;opacity:.52;box-shadow:none}.rule-chip{display:inline-grid;place-items:center;min-height:30px;border-radius:999px;padding:0 10px;font-size:12px;font-weight:900;white-space:nowrap}.rule-chip-active{border:1px solid rgba(216,164,58,.5);background:#f3d27a38;color:#6a4a0d}.rule-chip-muted{border:1px solid rgba(15,107,90,.18);background:#0f6b5a14;color:#5f746a}.page-shell{min-height:100vh;display:grid;align-items:start;justify-items:center;padding:max(12px,env(safe-area-inset-top)) 12px max(16px,env(safe-area-inset-bottom));background:linear-gradient(90deg,rgba(255,248,223,.03) 1px,transparent 1px),linear-gradient(180deg,rgba(255,248,223,.03) 1px,transparent 1px);background-size:26px 26px}.hero-panel{width:min(100%,430px);min-height:calc(100vh - 24px);border:1px solid rgba(216,164,58,.42);border-radius:24px;padding:16px;background:linear-gradient(180deg,#fff8e8f2,#f7efd8eb),var(--color-paper);box-shadow:0 18px 54px #00000057}.layout-landscape .hero-panel{width:min(100%,980px)}.connection-badge{display:inline-flex;align-items:center;gap:8px;min-height:34px;padding:0 12px;border-radius:999px;border:1px solid rgba(216,164,58,.42);background:#fff8e8db;color:var(--color-jade);font-size:13px;font-weight:900}.connection-dot{width:9px;height:9px;border-radius:50%;background:#aebdb4}.connection-badge.connected .connection-dot{background:#29b873;box-shadow:0 0 0 4px #29b8732e}.connection-badge.disconnected .connection-dot{background:var(--color-red);box-shadow:0 0 0 4px #b23a2e24}.release-ribbon{display:grid;gap:3px;margin-top:12px;padding:10px 12px;border:1px solid rgba(216,164,58,.48);border-radius:16px;background:linear-gradient(180deg,#f3d27a3d,#fff8e8e0);color:var(--color-jade)}.release-ribbon strong{font-size:15px}.release-ribbon span{font-size:12px;font-weight:900}.eyebrow{margin:18px 0 8px;color:var(--color-jade);font-size:14px;font-weight:900}h1{margin:0;color:var(--color-bg-deep);font-size:clamp(36px,10vw,52px);line-height:1.04;letter-spacing:0}.intro{margin:14px 0 18px;color:#6d5c3c;line-height:1.65}.version-line{margin:8px 0 0;color:var(--color-jade);font-size:14px;font-weight:900}.form-grid,.room-panel,.game-panel{display:grid;gap:12px}.home-card,.room-card,.feedback-panel,.rule-config,.status-card{border:1px solid rgba(216,164,58,.32);border-radius:var(--radius-card);background:#fff8e8e0;box-shadow:0 8px 22px #2f2a1f1a}label{display:grid;gap:7px;color:#6d5c3c;font-size:13px;font-weight:900}input,select,textarea{width:100%;min-height:48px;border:1px solid rgba(15,107,90,.25);border-radius:14px;padding:0 14px;background:#fffdf4;color:var(--color-text-dark);font:inherit;font-size:16px;box-shadow:inset 0 2px 4px #2f2a1f0f}textarea{min-height:96px;padding-block:12px;resize:vertical;line-height:1.5}input[type=checkbox]{width:20px;min-height:20px;accent-color:var(--color-jade)}.actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}.settings-panel{display:grid;gap:12px;padding:12px;border:1px solid rgba(216,164,58,.36);border-radius:var(--radius-card);background:#fffdf4b8}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.toggle-row{display:flex;align-items:center;gap:9px;color:var(--color-text-dark);font-size:14px;font-weight:900}.trustee-toggle em{margin-left:auto;color:#7b6a45;font-size:12px;font-style:normal}.checkbox-grid,.chip-grid{display:flex;flex-wrap:wrap;gap:8px}.room-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px;border-radius:var(--radius-card);background:linear-gradient(180deg,#0f6b5af5,#073f38f5);color:var(--color-text-light);box-shadow:var(--shadow-card)}.room-header span,.share-box span{display:block;margin-bottom:4px;color:#fff8dfbd;font-size:12px}.room-header strong{font-size:30px;letter-spacing:0}.room-header em{display:block;margin-top:3px;color:#fff8dfd1;font-size:13px;font-style:normal;font-weight:900}.room-status{flex:0 0 auto;border-radius:999px;padding:8px 10px;background:#fff8e829;color:var(--color-text-light);font-size:13px;font-weight:900}.room-status.ready,.room-status.playing{background:linear-gradient(180deg,var(--color-gold-light),var(--color-gold));color:#3d2b08}.room-status.resolvingAction{background:linear-gradient(180deg,#dd6a5d,var(--color-red))}.seat-list{display:grid;grid-template-columns:1fr;gap:10px}.player-seat,.seat-card{display:grid;gap:5px;min-height:78px;padding:12px;border:1px solid rgba(216,164,58,.28);border-radius:var(--radius-card);background:linear-gradient(180deg,#fffdf4,var(--color-paper));box-shadow:0 7px 18px #2f2a1f14}.player-seat-current{border-color:var(--color-gold);box-shadow:0 0 0 3px #d8a43a24}.player-seat span,.seat-card span{color:#806b42;font-size:12px;font-weight:900}.player-seat strong,.seat-card strong{overflow:hidden;color:var(--color-bg-deep);text-overflow:ellipsis;white-space:nowrap;font-size:18px}.player-seat em,.seat-card em{color:#6f745b;font-size:13px;font-style:normal}.share-box{display:grid;gap:8px;padding:14px;border:1px dashed rgba(216,164,58,.58);border-radius:var(--radius-card);background:#0f6b5a1a}.share-box span{color:var(--color-jade)}.share-box strong{overflow-wrap:anywhere;color:var(--color-text-dark);font-size:13px}.error-message{margin:0 0 14px;padding:11px 12px;border-radius:14px;background:#fff1e9;color:var(--color-red);font-weight:900}.status-card{display:grid;gap:6px;padding:14px}.status-card span,.status-card em{color:#806b42;font-size:12px;font-style:normal;font-weight:900}.status-card strong{overflow-wrap:anywhere}.mobile-table{position:relative;margin-inline:-6px;padding:10px;border:1px solid rgba(216,164,58,.42);border-radius:22px;background:linear-gradient(180deg,#fff8e814,#073f384d),var(--table-felt);box-shadow:var(--shadow-card)}.table-status-bar{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:1fr .8fr .7fr .9fr 1.1fr;gap:6px;padding:8px;border:1px solid rgba(243,210,122,.36);border-radius:16px;background:#073f38e0;color:var(--color-text-light);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.table-status-bar div{display:grid;gap:2px;min-width:0}.table-status-bar span{color:#fff8dfa8;font-size:11px}.table-status-bar strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px}.opponent-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.opponent-card{display:grid;gap:7px;min-width:0;padding:10px;border:1px solid rgba(243,210,122,.34);border-radius:var(--radius-card);background:#fff8e8e6;box-shadow:0 8px 18px #0000001f}.opponent-card strong{display:block;overflow:hidden;color:var(--color-bg-deep);text-overflow:ellipsis;white-space:nowrap;font-size:16px}.opponent-card span,.meld-line{color:#6f6545;font-size:12px}.mini-discards,.discard-tiles{display:flex;flex-wrap:wrap;gap:5px;min-height:26px}.mini-discards span,.discard-tile{display:inline-grid;place-items:center;min-height:26px;padding:0 7px;border:1px solid rgba(216,164,58,.22);border-radius:7px;background:#fffdf4;color:var(--color-bg-deep);font-size:12px;font-weight:900}.table-center{display:grid;gap:5px;min-height:118px;padding:16px;border:2px solid rgba(243,210,122,.56);border-radius:22px;background:radial-gradient(circle at center,#2d9a7beb,#0f6b5af0 52%,#073f38f2);color:var(--color-text-light);text-align:center;box-shadow:inset 0 0 26px #0000002e,0 10px 24px #0000002e}.table-center.my-turn{border-color:var(--color-gold-light);box-shadow:0 0 0 4px #f3d27a29,inset 0 0 26px #00000029}.table-center span{color:#fff8dfd1;font-size:13px;font-weight:900}.table-center strong{color:var(--color-text-light);font-size:24px}.table-center em{color:#fff8dfc7;font-size:13px;font-style:normal}.action-panel{display:grid;gap:10px;padding:12px;border:1px solid rgba(216,164,58,.58);border-radius:var(--radius-card);background:linear-gradient(180deg,#fff8df,#f4d787);box-shadow:0 10px 26px #2f2a1f29}.table-action-panel{position:sticky;bottom:148px;z-index:6}.action-panel.subtle{border-color:#0f6b5a2e;background:#fff8e8e6}.action-panel>span{color:#67460b;font-size:13px;font-weight:900}.action-buttons{display:flex;flex-wrap:wrap;gap:10px}.hand-panel{display:grid;gap:10px;padding:13px;border:1px solid rgba(216,164,58,.36);border-radius:var(--radius-card);background:linear-gradient(180deg,#fff8e8fa,#f7efd8f5)}.self-area{position:sticky;bottom:0;z-index:7;margin-inline:-4px;padding-bottom:max(14px,env(safe-area-inset-bottom));box-shadow:0 -12px 30px #0000002e}.hand-panel span{color:#6d5c3c;font-size:12px;font-weight:900}.self-melds{display:flex;flex-wrap:wrap;gap:6px}.self-melds em{padding:4px 7px;border:1px solid rgba(216,164,58,.28);border-radius:8px;background:#0f6b5a1a;color:var(--color-bg-deep);font-size:12px;font-style:normal;font-weight:900}.tile-list{display:flex;flex-wrap:wrap;gap:7px;justify-content:center;align-items:flex-end}.mahjong-tile{width:43px;min-height:62px;display:grid;place-items:center;gap:1px;border:1px solid #d6bc78;border-bottom:5px solid #b89956;border-radius:10px;padding:4px 2px;background:linear-gradient(180deg,#fffdf6,#fff8e8 68%,#ead8aa);color:var(--color-bg-deep);box-shadow:0 5px 9px #2f2a1f2e;font-size:14px;font-weight:950}.mahjong-tile span{color:inherit;font-size:inherit}.mahjong-tile em{display:inline-grid;place-items:center;min-width:18px;min-height:18px;border-radius:999px;background:var(--color-red);color:var(--color-text-light);font-size:10px;font-style:normal;line-height:1}.mahjong-tile-laizi{border-color:var(--color-red);box-shadow:0 0 0 3px #b23a2e1f,0 5px 9px #2f2a1f2e}.mahjong-tile:not(:disabled):active{transform:translateY(-4px)}.mahjong-tile:disabled{cursor:default;opacity:1}.self-discards{display:grid;gap:7px}.discard-tiles em{color:#806b42;font-size:13px;font-style:normal}.result-panel{display:grid;gap:10px;padding:14px;border:1px solid rgba(216,164,58,.52);border-radius:var(--radius-card);background:linear-gradient(135deg,#fff8df,#f3d27a 48%,#e9f5ed);box-shadow:0 10px 24px #2f2a1f29}.result-panel>span{color:#6a4a0d;font-size:12px;font-weight:900}.result-panel strong{color:var(--color-bg-deep);font-size:22px}.score-delta-list{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.score-delta-list em{display:grid;place-items:center;min-height:38px;padding:0 8px;border-radius:12px;background:#fffdf4e6;color:var(--color-text-dark);font-size:13px;font-style:normal;font-weight:900;text-align:center}.score-delta-list .score-up{color:var(--color-jade)}.score-delta-list .score-down{color:var(--color-red)}@media(max-width:430px){.page-shell{padding:8px}.hero-panel{width:100%;min-height:calc(100vh - 16px);padding:14px;border-radius:22px}h1{font-size:34px}.intro{margin-bottom:16px;font-size:15px}.actions,.settings-grid{grid-template-columns:1fr}.room-header{align-items:flex-start;flex-direction:column}.table-status-bar{grid-template-columns:1fr .78fr .62fr .85fr 1fr}.table-status-bar strong{font-size:14px}.opponent-card{padding:9px}.action-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.action-buttons .game-button{width:100%;padding-inline:10px}.mahjong-tile{width:39px;min-height:58px;font-size:13px}}@media(max-width:370px){.mahjong-tile{width:35px;min-height:55px;font-size:12px}.tile-list{gap:5px}}@media(orientation:landscape)and (min-width:700px){.layout-auto .hero-panel,.layout-landscape .hero-panel{width:min(100%,980px);min-height:auto;padding:12px 16px}.layout-auto .connection-badge,.layout-landscape .connection-badge{min-height:28px;font-size:12px}.layout-auto .release-ribbon,.layout-landscape .release-ribbon{display:inline-grid;margin-top:8px;padding:7px 10px}.layout-auto .eyebrow,.layout-landscape .eyebrow{margin:10px 0 3px;font-size:12px}.layout-auto h1,.layout-landscape h1{font-size:34px}.layout-auto .version-line,.layout-landscape .version-line{margin-top:3px;font-size:12px}.layout-auto .intro,.layout-landscape .intro{display:none}.layout-auto .room-panel,.layout-landscape .room-panel{grid-template-columns:minmax(250px,330px) minmax(0,1fr);align-items:start}.layout-auto .room-header,.layout-auto .seat-list,.layout-auto .share-box,.layout-auto .rule-config,.layout-auto .feedback-panel,.layout-auto .actions,.layout-landscape .room-header,.layout-landscape .seat-list,.layout-landscape .share-box,.layout-landscape .rule-config,.layout-landscape .feedback-panel,.layout-landscape .actions{grid-column:1}.layout-auto .game-panel,.layout-landscape .game-panel{grid-column:2;grid-row:1 / span 8}.layout-auto .mobile-table,.layout-landscape .mobile-table{min-height:360px;margin-inline:0}.layout-auto .table-center,.layout-landscape .table-center{min-height:94px}.layout-auto .hand-panel,.layout-landscape .hand-panel{grid-template-columns:minmax(0,1fr)}.layout-auto .mahjong-tile,.layout-landscape .mahjong-tile{width:36px;min-height:52px;font-size:12px}}@media(max-width:700px){.layout-landscape .room-panel,.layout-auto .room-panel{grid-template-columns:1fr}.layout-landscape .game-panel,.layout-auto .game-panel{grid-column:auto;grid-row:auto}}.page-shell{position:relative;isolation:isolate;background:radial-gradient(ellipse at 50% 18%,rgba(209,241,255,.96) 0 20%,rgba(91,176,207,.86) 50%,transparent 71%),linear-gradient(180deg,#66b5d3 0 30%,#438ca2 48%,#0b5d50 78%,#073f38)}.page-shell:before,.page-shell:after{position:fixed;z-index:-1;content:"";pointer-events:none}.page-shell:before{inset:0;background:radial-gradient(ellipse at 10% 66%,rgba(4,68,60,.6) 0 14%,transparent 15%),radial-gradient(ellipse at 88% 65%,rgba(10,82,66,.58) 0 16%,transparent 17%),linear-gradient(176deg,transparent 0 54%,rgba(255,255,255,.22) 55% 56%,transparent 57%),linear-gradient(184deg,transparent 0 61%,rgba(6,94,90,.38) 62% 66%,transparent 67%)}.page-shell:after{inset:auto 0 0;height:190px;background:radial-gradient(ellipse at 0 100%,#063f37 0 24%,transparent 25%),radial-gradient(ellipse at 100% 100%,#063f37 0 25%,transparent 26%),linear-gradient(180deg,transparent,rgba(4,53,46,.75))}.hero-panel{border:0;background:transparent;box-shadow:none}.top-tools{display:flex;align-items:center;justify-content:space-between}.rules-shortcut{display:grid;place-items:center;width:48px;height:48px;border:2px solid var(--color-gold-light);border-radius:50%;background:linear-gradient(180deg,#176b60,#073f38);color:var(--color-gold-light);box-shadow:0 4px #301e0566,inset 0 0 0 3px #fff8df1f;font-family:Georgia,STKaiti,serif;font-size:25px;font-weight:900}.rules-shortcut small{display:none}.brand-lockup{display:flex;align-items:center;justify-content:center;gap:8px;margin:12px 0 8px;text-align:center}.brand-seal{display:grid;place-items:center;width:30px;min-height:70px;border:2px solid #efb76a;border-radius:11px;padding:5px;background:linear-gradient(180deg,#bf3f2d,#8c271d);color:#fff1c4;box-shadow:0 4px 9px #36170659;font-family:STKaiti,KaiTi,serif;font-size:16px;font-weight:900;line-height:1.1}.brand-lockup .eyebrow{margin:0 0 2px;color:#fff4ce;text-shadow:0 2px 3px rgba(0,40,36,.75)}.brand-lockup h1{color:#ffe6a0;font-family:STKaiti,KaiTi,Georgia,serif;font-size:clamp(42px,12vw,66px);font-weight:900;text-shadow:0 2px 0 #9a6a1e,0 4px 0 #684411,0 8px 14px rgba(0,37,32,.55)}.release-ribbon{width:fit-content;margin:0 auto 10px;padding:6px 18px;border:2px solid var(--color-gold);border-radius:999px;background:linear-gradient(180deg,#197b6c,#075348);color:#fff1c4;text-align:center;box-shadow:0 4px #40270759}.release-ribbon span{display:none}.intro{margin:8px auto 14px;color:#fff8df;font-weight:800;text-align:center;text-shadow:0 2px 3px rgba(0,45,38,.7)}.connection-badge{border:1px solid rgba(243,210,122,.7);background:#073f38c7;color:#fff8df;box-shadow:0 3px #2c1f0847}.form-grid,.screen-room .room-panel{padding:14px;border:3px double rgba(216,164,58,.78);border-radius:24px;background:linear-gradient(180deg,#fffceffa,#f7efd8f5),var(--color-paper);box-shadow:0 14px 35px #002d2666,inset 0 0 0 5px #ffffff6b}.screen-home .form-grid:before{content:"房间设置";justify-self:center;min-width:190px;margin-top:-32px;border:2px solid var(--color-gold);border-radius:999px;padding:7px 24px;background:linear-gradient(180deg,#187565,#075348);color:#fff1c4;font-family:STKaiti,KaiTi,serif;font-size:21px;font-weight:900;text-align:center;box-shadow:0 4px #412b0859}input,select,textarea{border-color:#ab7f286b;background:#fffceff5}.settings-panel{border:1px solid rgba(176,132,44,.34);background:#fffcef85}.game-button{min-height:54px;border:2px solid rgba(255,231,157,.85);border-radius:24px;font-family:STKaiti,KaiTi,serif;font-size:20px;box-shadow:0 5px #35210766,inset 0 1px #ffffff80,inset 0 0 0 3px #ffffff14}.game-button-gold{background:linear-gradient(180deg,#ffc956,#dc8d13);color:#fff8df;text-shadow:0 2px 1px rgba(102,58,5,.7)}.game-button-primary{background:linear-gradient(180deg,#2ca890,#087063)}.game-button-secondary{background:linear-gradient(180deg,#37ae9d,#087064);color:#fff8df}.screen-room .room-header{border:2px solid var(--color-gold);border-radius:20px;background:linear-gradient(180deg,#fffdf3,#f4e7c4);color:var(--color-bg-deep);box-shadow:0 6px #4d330a33}.screen-room .room-header span,.screen-room .room-header em{color:#6e5a32}.screen-room .room-header strong{color:var(--color-jade);font-family:Georgia,serif;font-size:42px;letter-spacing:8px}.screen-room .seat-list{position:relative;min-height:410px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;align-items:end;gap:14px;border:10px solid #573a20;border-radius:42px;padding:18px 12px;background:radial-gradient(circle at center,rgba(243,210,122,.24),transparent 25%),radial-gradient(circle at center,#167767 0 32%,#075449 70%,#063f38);box-shadow:inset 0 0 0 4px #b7843c,0 12px 25px #00231e6b}.screen-room .player-seat:first-child{grid-column:1 / 3;justify-self:center;align-self:start}.screen-room .player-seat{position:relative;z-index:2;width:min(100%,170px);min-height:160px;justify-items:center;align-content:center;border:2px solid var(--color-gold);border-radius:20px;padding:12px;background:linear-gradient(180deg,#12685c,#074a42);color:#fff8df;text-align:center;box-shadow:0 8px #422b18,inset 0 0 0 3px #ffffff14}.screen-room .player-seat strong,.screen-room .player-seat span,.screen-room .player-seat em{color:#fff8df}.seat-avatar{display:grid;place-items:center;width:68px;height:68px;border:3px solid #f3d27a;border-radius:50%;background:linear-gradient(145deg,#8dd6c7,#0d6558);color:#fff8df;font-family:STKaiti,KaiTi,serif;font-size:32px;font-weight:900;box-shadow:inset 0 0 0 4px #ffffff2e}.seat-copy{display:grid;gap:4px}.self-badge{position:absolute;top:50px;right:28px;display:grid;place-items:center;width:28px;height:28px;border:2px solid #ffd784;border-radius:50%;background:#c44b27;color:#fff;font-style:normal;font-weight:900}.lobby-table-center{position:absolute;z-index:1;top:50%;left:50%;display:grid;place-items:center;width:116px;height:116px;border:2px solid var(--color-gold-light);border-radius:50%;background:radial-gradient(circle,#ffe18459,#08584bcc 65%);color:#fff1c4;transform:translate(-50%,-50%);box-shadow:0 0 28px #ffcd496b}.lobby-table-center strong{font-family:STKaiti,KaiTi,serif;font-size:25px}.lobby-table-center span,.lobby-table-center em{font-size:11px;font-style:normal}.screen-room .share-box,.rule-config,.feedback-panel,.status-card{border:2px solid rgba(216,164,58,.48);background:#fffaebf5;box-shadow:0 5px #3e2a091f}.rule-config summary,.feedback-panel summary{color:var(--color-jade);font-family:STKaiti,KaiTi,serif;font-size:18px}.screen-game{padding:0}.screen-game .hero-panel{width:100%;min-height:100vh;padding:max(8px,env(safe-area-inset-top)) 8px max(8px,env(safe-area-inset-bottom))}.screen-game .top-tools,.screen-game .brand-lockup,.screen-game .release-ribbon,.screen-game .intro,.screen-game .room-panel>.room-header,.screen-game .room-panel>.seat-list,.screen-game .room-panel>.share-box,.screen-game .room-panel>.rule-config,.screen-game .room-panel>.feedback-panel,.screen-game .status-card{display:none}.screen-game .room-panel{display:block}.screen-game .mobile-table{min-height:calc(100vh - 82px);display:grid;grid-template-areas:"status" "opponents" "center" "action" "hand";grid-template-rows:auto auto minmax(220px,1fr) auto auto;gap:8px;margin:0;border:11px solid #56391f;border-radius:32px;padding:8px;background:radial-gradient(circle at center,rgba(246,210,112,.08),transparent 28%),repeating-radial-gradient(circle at center,rgba(255,255,255,.025) 0 1px,transparent 2px 8px),radial-gradient(circle at center,#137363,#07564c 72%,#06453d);box-shadow:inset 0 0 0 4px #b7833b,inset 0 0 60px #0003}.screen-game .table-status-bar{grid-area:status}.screen-game .opponent-grid{grid-area:opponents}.screen-game .table-center{grid-area:center}.screen-game .table-action-panel{grid-area:action}.screen-game .self-area{grid-area:hand}.screen-game .actions{position:fixed;z-index:12;right:12px;bottom:max(12px,env(safe-area-inset-bottom));width:auto;margin:0}.screen-game .actions .game-button-secondary{min-height:38px;border-radius:999px;padding:0 13px;font-size:13px;opacity:.8}.screen-game .table-status-bar{border:2px solid var(--color-gold);background:linear-gradient(180deg,#fffceffa,#f4e7c4f5);color:var(--color-bg-deep);box-shadow:0 5px #432d0a40}.screen-game .table-status-bar span{color:#806631}.screen-game .opponent-card{position:relative;border:2px solid var(--color-gold);background:linear-gradient(180deg,#12695d,#074a42);color:#fff8df}.screen-game .opponent-card strong,.screen-game .opponent-card span,.screen-game .opponent-card .meld-line{color:#fff8df}.opponent-avatar{float:left;display:grid;place-items:center;width:42px;height:42px;margin-right:8px;border:2px solid #f3d27a;border-radius:50%;background:linear-gradient(145deg,#8dd6c7,#0d6558);color:#fff8df!important;font-size:20px!important;font-weight:900}.screen-game .table-center{position:relative;align-content:center;border:0;background:radial-gradient(circle at center,rgba(6,62,55,.12),transparent 42%),transparent;box-shadow:inset 0 0 0 2px #d8a43a26}.screen-game .table-center:before{position:absolute;inset:50% auto auto 50%;width:190px;height:190px;border:2px solid rgba(216,164,58,.13);border-radius:50%;content:"天 门 麻 将";display:grid;place-items:center;color:#f3d27a1f;font-family:STKaiti,KaiTi,serif;font-size:30px;transform:translate(-50%,-50%)}.screen-game .table-center>*{position:relative;z-index:1}.recent-discard{display:grid;justify-items:center;gap:3px;margin:6px 0}.recent-discard small{color:#fff1c4;font-weight:900}.screen-game .hand-panel{border:2px solid var(--color-gold);background:linear-gradient(180deg,#fffceffa,#f0e1befa)}.mahjong-tile{position:relative;width:44px;min-height:64px;grid-template-rows:1fr auto;border:1px solid #baa15d;border-bottom:7px solid #3f7a43;border-radius:7px;background:linear-gradient(180deg,#fffef7,#f7edd4 76%,#d7c49a);box-shadow:0 5px 6px #00231e59}.mahjong-tile .tile-rank{align-self:end;color:#173f36;font-family:STKaiti,KaiTi,serif;font-size:23px;font-weight:900;line-height:1}.mahjong-tile .tile-suit{align-self:start;color:var(--color-red);font-family:STKaiti,KaiTi,serif;font-size:14px}.mahjong-tile-tiao .tile-rank,.mahjong-tile-tiao .tile-suit{color:#1c6b3c}.mahjong-tile-tong .tile-rank{display:grid;place-items:center;width:25px;height:25px;align-self:center;border:4px double #15684e;border-radius:50%;color:var(--color-red);font-family:Georgia,serif;font-size:12px}.mahjong-tile-tong .tile-suit{color:#15684e}.mahjong-tile-laizi{border-color:#c4412f;box-shadow:0 0 0 3px #ffc43a7a,0 0 14px #ffc22bb3}.mahjong-tile-selected{transform:translateY(-10px);border-color:#f6b82a;box-shadow:0 0 0 3px #ffcb468c,0 8px 12px #00231e6b}.mahjong-tile-compact{width:54px;min-height:72px}.discard-confirm{display:flex;justify-content:center}.discard-confirm .game-button{width:min(100%,250px);min-height:58px;font-size:27px}.screen-result .result-panel{border:3px double var(--color-gold);background:linear-gradient(180deg,#fffdf4,#f3e2b7)}.screen-result .result-panel strong{font-family:STKaiti,KaiTi,serif;font-size:30px;text-align:center}@media(max-width:430px){.screen-home .hero-panel,.screen-room .hero-panel{padding-top:8px}.brand-lockup h1{font-size:44px}.screen-home .form-grid{margin-top:22px}.screen-room .seat-list{min-height:390px}.screen-room .player-seat{width:150px;min-height:150px}.seat-avatar{width:58px;height:58px}.screen-game .mobile-table{min-height:calc(100vh - 8px);border-width:7px;border-radius:22px;grid-template-rows:auto auto minmax(210px,1fr) auto auto}.screen-game .table-status-bar{position:static}.screen-game .opponent-card{min-height:94px}.screen-game .table-center{min-height:210px}.screen-game .self-area{position:static;margin:0}.screen-game .tile-list{flex-wrap:nowrap;justify-content:flex-start;gap:3px;overflow-x:auto;padding:5px 2px 9px;scrollbar-width:none}.screen-game .discard-confirm .game-button{min-height:52px;font-size:23px}.screen-game .tile-list::-webkit-scrollbar{display:none}.screen-game .mahjong-tile{flex:0 0 39px;width:39px;min-height:58px}.mahjong-tile .tile-rank{font-size:20px}}@media(orientation:landscape)and (min-width:700px){.screen-game .hero-panel{max-width:none}.screen-game .room-panel{display:block}.screen-game .mobile-table{min-height:100vh;grid-template-areas:"status status action" "opponents center action" "hand hand action";grid-template-columns:240px minmax(0,1fr) 190px;grid-template-rows:auto minmax(0,1fr) auto;border-radius:26px}.screen-game .opponent-grid{grid-template-columns:1fr}.screen-game .table-action-panel{position:static;align-self:center}.screen-game .action-buttons{display:grid;grid-template-columns:1fr}.screen-game .self-area{position:static;margin:0}.screen-game .tile-list{flex-wrap:nowrap}.screen-game .mahjong-tile{width:49px;min-height:66px}}
