@font-face{font-family:system;src:local("Microsoft YaHei")}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{font:14px system,Microsoft YaHei,sans-serif;color:#eee5d4;background:#0a101f}button,input,select{font:inherit}button{cursor:pointer;color:#ddc99c;border:1px solid #8570476b;background:linear-gradient(#28303ad9,#101622ec);border-radius:7px;min-height:44px;padding:8px 17px;transition:filter .15s,transform .15s}button:hover{filter:brightness(1.22)}button:active{transform:translateY(2px)}button:disabled{opacity:.45;cursor:wait}input,select{background:#0d1523;border:1px solid #726448;border-radius:6px;color:#f6e9cc;padding:12px;width:100%;min-height:44px}input:focus,select:focus,button:focus-visible{outline:2px solid #e0ba72;outline-offset:3px}#world{position:fixed;inset:0;width:100%;height:100%}#app{height:100%;position:relative;background:linear-gradient(180deg,#070b13bc,transparent 40%,#060b15d9)}.top{height:82px;display:flex;justify-content:space-between;align-items:center;padding:10px max(3vw,env(safe-area-inset-right));border-bottom:1px solid #b6995f42;background:#0a101bd9}.identity{display:flex;align-items:center;text-align:left;gap:12px;border:0;background:none;padding:0;min-width:210px}.avatar{display:grid;place-items:center;flex:none;background:linear-gradient(140deg,#34485b,#101b2a);border:1px solid #b29961;border-radius:50%;width:46px;height:46px;color:#d5b479;font:24px serif;box-shadow:0 4px 12px #0006}.identity small{display:block;font-size:10px;letter-spacing:2px;margin-top:6px;color:#9b9e9e}.brand{text-align:center;font:28px STKaiti,KaiTi,serif;letter-spacing:7px;color:#dbc18b;text-shadow:0 2px #000}.brand small{display:block;font:8px sans-serif;letter-spacing:4px;margin-top:5px}.top-right{display:flex;align-items:center;gap:12px;min-width:210px;justify-content:flex-end}.connection{font-size:11px;color:#cda383}.connection:before{content:"";display:inline-block;width:6px;height:6px;background:#9d6d53;border-radius:100%;margin-right:6px}.connection.online:before{background:#78b39b}.top-right button{background:none;border:0;padding:6px;font-size:16px}.lobby{height:calc(100% - 150px);display:flex;flex-direction:column;justify-content:center;padding:15px max(7vw,env(safe-area-inset-left));gap:20px}.welcome{text-align:center}.welcome>span{font-size:10px;letter-spacing:7px;color:#b59f76}.welcome h1{font:28px STKaiti,KaiTi,serif;letter-spacing:5px;margin:9px 0}.welcome p{font-size:10px;color:#959ca7;letter-spacing:3px;margin:7px 0}.game-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;max-width:1180px;width:100%;margin:0 auto;perspective:1200px}.game-card{position:relative;overflow:hidden;text-align:center;padding:15px 16px 20px;border:1px solid #bc985e9c;border-radius:15px;background:linear-gradient(150deg,#70323dce,#201824f5 65%);box-shadow:inset 0 0 0 5px #12172385,inset 0 0 30px #a76e351a,0 14px 30px #0008;transform:rotateX(3deg);isolation:isolate}.game-card:before{content:"";position:absolute;inset:9px;border:1px solid #e0b37333;border-radius:10px;z-index:-1}.game-card.zha{background:linear-gradient(145deg,#67417ac9,#211a32f2 65%)}.game-card.niu{background:linear-gradient(145deg,#2a735ec9,#122b2af5 65%)}.card-no{font-size:9px;color:#b5a589;letter-spacing:3px;display:block;text-align:left;margin:1px 8px}.game-art{height:140px;display:flex;align-items:center;justify-content:center;perspective:600px;padding-top:10px}.game-art i{font:40px serif;line-height:1;display:flex;align-items:center;flex-direction:column;justify-content:center;height:103px;width:67px;border-radius:7px;background:linear-gradient(135deg,#fff9df,#d0c7ae);color:#263f3b;border:1px solid #c0ad82;box-shadow:4px 5px #a89672,6px 9px 15px #0009,inset 1px 1px 2px #fff;font-style:normal;transform:rotate(-15deg) translateY(7px);text-shadow:0 1px #fff}.game-art i:nth-child(2){color:#9b3439;transform:rotate(0) translateY(-9px);z-index:2}.game-art i:last-child{transform:rotate(15deg) translateY(7px)}.game-art i span{font-size:28px;margin-top:6px}.game-card h2{font:26px STKaiti,KaiTi,serif;margin:10px 0 6px;letter-spacing:3px}.game-card p{font-size:10px;color:#c0b3a2;letter-spacing:2px}.card-buttons{display:flex;gap:9px;margin-top:18px}.card-buttons button{flex:1;padding:9px 4px;font-size:12px}.gold{color:#271d0f;background:linear-gradient(135deg,#e5ca8c,#b58c4b);border:1px solid #e5c787;box-shadow:inset 0 1px 1px #ffedb9,0 3px #665032,0 6px 12px #0005;font-weight:600}.lobby-note{text-align:center;color:#baa783;font-size:11px;letter-spacing:2px}.lobby-note span{display:block;font-size:9px;letter-spacing:1px;color:#84909c;margin-top:8px}.bottom{position:absolute;height:64px;bottom:0;left:0;right:0;display:flex;justify-content:center;gap:6vw;border-top:1px solid #d7b57540;background:#0a111de8;padding-bottom:env(safe-area-inset-bottom)}.bottom button{background:none;border:0;border-radius:0;color:#8e929a;font-size:11px;min-width:70px;height:60px}.bottom button span{font-size:22px;display:block;line-height:25px}.bottom button.active{color:#dfc18a;border-top:2px solid #dfc18a;background:linear-gradient(#d6af5c12,transparent)}dialog{border:1px solid #9c814f;background:linear-gradient(145deg,#202b3b,#111927);color:#e7dcc5;border-radius:14px;width:min(500px,90vw);max-height:88dvh;padding:22px;box-shadow:0 30px 90px #000a}dialog::backdrop{background:#02060dc9;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}dialog header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #b18d523f;margin-bottom:16px;padding-bottom:8px;gap:12px}dialog h2{font:22px serif;margin:0;color:#e2c895}dialog header button{border:0;background:none;font-size:25px;padding:0;min-width:44px}dialog label{display:block;font-size:12px;color:#c5b999;margin:12px 0}dialog input,dialog select{display:block;margin:7px 0}dialog small{display:block;color:#a1a5ac;font-size:11px;line-height:1.8}dialog form>.gold{width:100%;margin-top:18px}dialog p{font-size:12px;line-height:1.9}dialog pre{background:#0b111c;padding:12px;overflow:auto;max-height:230px;font-size:11px;color:#b9b8ae}.fields{display:flex;gap:12px}.fields>*{flex:1}.check{display:flex!important;align-items:center;gap:12px}.check input{width:20px;height:20px;min-height:20px}#toast{position:fixed;left:50%;bottom:85px;transform:translate(-50%,20px);opacity:0;transition:.2s;z-index:10;max-width:80%;border:1px solid #b39b67;border-radius:8px;background:#151e2ef2;padding:13px 22px;pointer-events:none;text-align:center}#toast.show{opacity:1;transform:translate(-50%)}.rotate{display:none}.room{position:relative;height:calc(100% - 146px)}.room-info{display:flex;align-items:center;gap:15px;padding:8px 3vw;background:#0b1322aa;color:#cbb68d;font-size:11px}.room-info button{font-size:11px;padding:4px 10px}.room-info>span:last-child{margin-left:auto}.seat-area{position:absolute;inset:65px 5% 75px;pointer-events:none}.seat{position:absolute;display:flex;align-items:center;gap:8px;min-width:128px;padding:8px 10px;border:1px solid #9b895b72;border-radius:10px;background:#0e1a29eb;box-shadow:0 5px 18px #0007;font-size:12px;pointer-events:auto}.seat .avatar{width:35px;height:35px;font-size:19px}.seat small,.seat span{display:block;font-size:9px;color:#b0b8b8;margin-top:3px}.seat span{color:#cbb584}.seat button{padding:0 4px;font-size:10px}.seat-0{bottom:10px;left:0}.seat-1{left:0;top:22%}.seat-2{top:0;left:50%;transform:translate(-50%)}.seat-3{right:0;top:22%}.seat-4{right:0;bottom:10px}.seat.turn{border-color:#e7c77e;box-shadow:0 0 0 2px #d2ab5a33,0 4px 20px #0008}.table-caption{position:absolute;top:32%;left:26%;width:48%;text-align:center;pointer-events:none}.table-caption>span{font:24px serif;color:#c9b27766;letter-spacing:8px}.table-caption h2{font-size:16px;font-weight:400;color:#e8ddc6;margin:13px 0 8px}.table-caption small{font-size:10px;color:#b4b6ad}.hand-area{position:absolute;bottom:10px;left:19%;right:15%;display:flex;flex-direction:column;align-items:center;gap:12px}.hand{display:flex;gap:4px;justify-content:center;max-width:100%;perspective:650px}.tile,.poker{flex:none;width:47px;height:66px;border-radius:5px;background:linear-gradient(120deg,#fff9e7,#ded8c5);color:#153d32;box-shadow:0 4px #9e957d,2px 7px 10px #0009,inset 0 1px #fff;border:1px solid #c2b89c;transform:rotateX(8deg);text-shadow:0 1px #fff,0 -1px #172c2c80}.tile{padding:4px;min-height:66px;transition:.15s}.tile strong{display:block;font:26px serif;line-height:30px}.tile span{font:700 18px serif;display:block}.red{color:#952934}.tile.selected{transform:translateY(-15px);outline:2px solid #d6b26c}.poker{height:80px;width:56px;text-align:left;padding:4px 6px;font-family:Georgia,serif;display:flex;flex-direction:column;justify-content:space-between}.poker b{font-size:22px;line-height:22px}.poker strong{font-size:30px;text-align:center}.poker.back{background:repeating-linear-gradient(45deg,#1a3945,#1a3945 3px,#254d57 4px 5px);color:#dfc68f;border:3px solid #bea575;justify-content:center;text-align:center;font:24px serif}.actions{display:flex;gap:9px;justify-content:center;min-height:44px}.actions button{min-width:65px;font-size:12px}.vote{position:absolute;right:20px;bottom:20px;font-size:10px;padding:5px 10px;background:#101a2b}.score{margin-bottom:14px;padding:10px;border:1px solid #c8ad6f36;border-radius:7px}.score>strong{float:right;color:#dfbe77;font-size:18px}.mini-hand{display:flex;gap:4px;flex-wrap:wrap;margin:10px 0}.mini-hand .tile{width:31px;height:45px;min-height:45px}.mini-hand .tile strong{font-size:18px;line-height:20px}.mini-hand .tile span{font-size:14px}.mini-hand .poker{width:38px;height:55px}.mini-hand .poker b{font-size:15px}.mini-hand .poker strong{font-size:22px}.history{border-bottom:1px solid #d7b57733;padding:12px 0}.history>span{display:block;font-size:10px;color:#a7a9ad;margin-top:7px}@media(max-height:600px){body{font-size:12px}.top{height:58px;padding:5px 3vw}.brand{font-size:22px}.brand small{font-size:6px}.identity .avatar{width:36px;height:36px;font-size:20px}.identity small{font-size:8px}.top-right{gap:8px}.lobby{height:calc(100% - 106px);padding:6px 7vw;gap:8px}.welcome h1{font-size:22px;margin:5px}.welcome>span{font-size:8px}.welcome p{font-size:8px;margin:3px}.game-grid{gap:15px}.game-card{padding:9px 12px 12px}.game-art{height:90px}.game-art i{height:70px;width:47px;font-size:28px;box-shadow:3px 4px #a89672,5px 7px 10px #0009}.game-art i span{font-size:20px}.game-card h2{font-size:22px;margin:6px 0}.game-card p{font-size:8px;margin:5px}.card-buttons{margin-top:10px;gap:6px}.card-buttons button{font-size:10px}.lobby-note{font-size:9px}.lobby-note span{font-size:8px;margin-top:4px}.bottom{height:48px}.bottom button{height:46px;font-size:9px;padding:2px 8px}.bottom button span{font-size:20px;line-height:23px}.room{height:calc(100% - 106px)}.room-info{gap:8px;padding:2px 3vw}.room-info button{min-height:36px;font-size:10px}.seat-area{inset:48px 3% 40px}.seat{min-width:105px;padding:5px 7px;gap:5px;font-size:10px}.seat .avatar{width:28px;height:28px;font-size:15px}.seat small,.seat span{font-size:8px}.seat-0{bottom:0}.seat-1,.seat-3{top:15%}.seat-2{top:-2px}.table-caption{top:28%;left:24%;width:52%}.table-caption>span{font-size:18px}.table-caption h2{font-size:12px;margin:7px 0}.table-caption small{font-size:8px}.hand-area{bottom:5px;left:17%;right:12%;gap:7px}.tile{width:36px;height:51px;min-height:51px;padding:1px}.tile strong{font-size:23px;line-height:27px}.tile span{font-size:16px}.hand{gap:3px}.poker{width:42px;height:60px}.poker b{font-size:17px;line-height:18px}.poker strong{font-size:24px}.actions{gap:6px}.actions button{min-width:54px;padding:6px 10px;font-size:10px}.vote{right:8px;bottom:4px;font-size:8px;padding:3px 5px;max-width:90px}.room-info>span:last-child{font-size:9px}dialog{max-height:94dvh;padding:15px}dialog h2{font-size:18px}}@media(max-height:410px){.welcome p{display:none}.welcome h1{font-size:19px}.welcome>span{font-size:7px}.game-art{height:70px}.game-art i{height:58px;width:40px;font-size:24px}.game-art i span{font-size:16px}.game-card h2{font-size:19px}.game-card p{display:none}.lobby{gap:6px}.lobby-note span{display:none}.seat-area{inset:43px 2% 35px}.table-caption{top:27%}.table-caption>span{display:none}.table-caption h2{margin:0 0 5px}.hand-area{left:19%;right:15%;gap:6px}.tile{width:32px;height:46px;min-height:46px}.tile strong{font-size:20px;line-height:24px}.tile span{font-size:15px}.hand{gap:2px}.poker{height:51px;width:37px}.actions button{padding:3px 7px}.seat{font-size:9px;min-width:95px}.seat .avatar{width:24px;height:24px}.seat-0{bottom:-5px}.room-info{gap:5px}.room-info>span:last-child{display:none}}@media(orientation:portrait)and (max-width:760px){.rotate{display:flex;position:fixed;inset:0;background:#101626f5;z-index:20;align-items:center;justify-content:center;flex-direction:column;font:21px serif;color:#d4b777;gap:20px}.rotate span{font:12px sans-serif;color:#adb2b9}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}.public-hand{display:flex;gap:2px;margin-top:5px}.public-hand .poker{width:23px;height:35px;padding:2px;box-shadow:0 2px #9e957d}.public-hand .poker b{font-size:11px;line-height:12px}.public-hand .poker strong{font-size:15px}.public-hand .tile{width:22px;height:30px;min-height:30px}.public-hand .tile strong{font-size:12px;line-height:14px}.public-hand .tile span{font-size:10px}@media(max-height:600px){.hand-area{left:15%;right:2%}.tile{width:44px;height:54px;min-height:54px}.hand{gap:2px}.table-caption{top:38%}.table-caption h2{margin:2px 0 6px}.table-caption>span{display:none}}@media(max-height:410px){.tile{width:44px;height:51px;min-height:51px}.tile strong{font-size:23px;line-height:27px}.tile span{font-size:16px}.table-caption{top:38%}}:root{--gold-light:#fff1ba;--gold:#dcac50;--gold-dark:#805018;--night:#090e1d;--ruby:#851b25;--amethyst:#54216b;--jade:#075c3d;--top-h:88px;--nav-h:82px;--safe-l:max(22px,env(safe-area-inset-left));--safe-r:max(22px,env(safe-area-inset-right))}body{background:#080d1b url(/art/guiyang-night.webp) center/cover no-repeat}#app{background:linear-gradient(180deg,#03081438,transparent 55%,#08091136)}body[data-scene=lobby] #world{opacity:0;pointer-events:none}.top{height:var(--top-h);padding:9px var(--safe-r) 9px var(--safe-l);background:linear-gradient(#080d1eeb,#10152780);border-bottom:1px solid #d6af5340;box-shadow:0 3px 18px #0004;position:relative;z-index:3}.identity{min-width:220px;gap:12px;color:#f6e3ac;letter-spacing:1px}.identity small{color:#d0c0a5;letter-spacing:1px}.avatar{position:relative;overflow:hidden;isolation:isolate;width:58px;height:58px;border:2px solid #ffe1a0;background:linear-gradient(135deg,#fde4a0,#8b5620 45%,#e2b15b);box-shadow:0 3px #684017,0 0 0 3px #b78c3c70,inset 0 0 8px #fff2c5,0 5px 13px #000a;font-size:0!important}.avatar:before{content:"";position:absolute;inset:2px;border-radius:50%;background-image:url(/art/avatar-atlas.webp);background-size:200% 200%;background-position:0 0;z-index:-1}.avatar[data-look="1"]:before{background-position:100% 0}.avatar[data-look="2"]:before{background-position:0 100%}.avatar[data-look="3"]:before{background-position:100% 100%}.avatar.empty{font:26px serif!important;color:#d3ba84;background:#1c292b}.avatar.empty:before{display:none}.brand{display:flex;align-items:center;justify-content:center;gap:9px;letter-spacing:5px;font:700 34px STKaiti,KaiTi,serif;color:#f2d58c;text-shadow:0 2px 0 #7f4d14,0 4px 4px #000b}.brand .metal-icon{width:59px;height:51px}.brand small{font:9px system,sans-serif;color:#d5c494;letter-spacing:3px;margin-top:6px;text-shadow:none}.top-right{min-width:220px;gap:16px}.top-right button{width:54px;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10px;color:#ebd3a2;padding:0}.top-right button .metal-icon{height:35px;width:35px;border-radius:50%;background:radial-gradient(#283138,#0d1420);box-shadow:0 0 0 1px #dfb66e,0 3px 4px #0008;padding:6px;overflow:visible}.connection{color:#d6c7ac;font-size:10px}.metal-icon{width:32px;height:32px;display:block;filter:drop-shadow(0 2px 1px #402000c9)}.lobby{height:calc(100% - var(--top-h) - var(--nav-h));padding:12px var(--safe-r) 24px 20.5vw;justify-content:flex-end;gap:12px}.welcome{text-align:left;padding-left:4px;margin-bottom:auto;padding-top:8px}.welcome>span{font-size:9px;letter-spacing:4px;color:#e0c48a}.welcome h1{font-size:25px;letter-spacing:4px;color:#f8ebc9;margin:7px 0;text-shadow:0 2px 4px #000}.welcome p{font-size:10px;color:#d1c7b2;letter-spacing:2px;margin:5px 0}.game-grid{height:clamp(300px,53vh,410px);gap:21px;max-width:1120px;margin:0;perspective:1400px;flex-shrink:1;min-height:0;align-items:stretch}.game-card{--accent:#a72831;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;padding:13px 15px 17px;overflow:visible;border-radius:24px;border:3px solid #edbd59;background:radial-gradient(ellipse at 45% 30%,#d63a3a66,transparent 65%),repeating-conic-gradient(from 24deg at 50% 0,#fff0 0deg 14deg,#fff1 16deg,#fff0 18deg),linear-gradient(130deg,#b41f2c,#400c19 55%,#8d1725);box-shadow:inset 0 0 0 3px #fff0b270,inset 0 0 0 8px #53120f,inset 0 0 0 10px #e8ad4455,4px 7px #774219,7px 12px #201315,0 18px 22px #000b;transform:rotateX(2deg);transition:transform .2s,filter .2s;isolation:isolate}.game-card:before{inset:7px;border:1px solid #ffdb8aa6;border-radius:15px;background:linear-gradient(135deg,#fff4c126,transparent 18% 80%,#ffc6572b);z-index:-1;pointer-events:none}.game-card:after{content:"◆";position:absolute;top:-10px;left:calc(50% - 9px);color:#fff1b4;font-size:19px;text-shadow:0 2px 3px #533106;pointer-events:none}.game-card.zha{--accent:#8841a2;background:radial-gradient(ellipse at 50% 35%,#ba59f166,transparent 70%),repeating-conic-gradient(from 26deg at 50% 0,#fff0 0deg 12deg,#fff1 14deg,#fff0 17deg),linear-gradient(130deg,#76218a,#290d43 56%,#5e1e75)}.game-card.niu{--accent:#319a66;background:radial-gradient(ellipse at 50% 35%,#53c98755,transparent 70%),repeating-conic-gradient(from 26deg at 50% 0,#fff0 0deg 12deg,#fff1 14deg,#fff0 17deg),linear-gradient(130deg,#057249,#073826 55%,#067347)}.card-no{order:0;text-align:center;letter-spacing:2px;font-size:8px;color:#f1dba9;opacity:.9;line-height:14px}.game-card h2{order:1;display:grid;place-items:center;margin:5px -9px 3px;padding:8px 1px;font:bold clamp(19px,2.25vw,31px) "STKaiti","KaiTi",serif;letter-spacing:1px;border:1px solid #edc16c;border-radius:15px;background:linear-gradient(180deg,#ffeba51a,#11131d80 65%,#0004);box-shadow:inset 0 2px #ffdb8377,0 3px #422718,0 6px 8px #0006;color:#fff0b9;text-shadow:0 2px 0 #5d380d,0 3px 2px #000}.game-art{order:2;height:auto;min-height:0;flex:1;position:relative;display:block;padding:0;margin:0 -9px;filter:drop-shadow(0 8px 5px #0005)}.art-illustration{position:absolute;inset:0;background-image:url(/art/game-atlas.webp);background-size:300% 100%;background-position:0 50%;background-repeat:no-repeat}.zha .art-illustration{background-position:50% 50%}.niu .art-illustration{background-position:100% 50%}.art-symbol{position:absolute;left:29%;top:44%;transform:translate(-50%,-50%) rotate(-8deg);font:bold clamp(50px,6vw,87px) "STKaiti","KaiTi",serif;color:#126247;text-shadow:0 2px 0 #e4ecd4,0 -2px 1px #003e2e,1px 0 #082e20;line-height:1}.niu .art-symbol{left:47%;top:42%;font-size:clamp(62px,7.8vw,112px);color:#f8d67b;text-shadow:0 3px 0 #926121,0 5px 4px #142611;transform:translate(-50%,-50%) rotate(-7deg)}.art-ace{position:absolute;top:18%;left:47%;font:700 29px Georgia;color:#a92338;transform:rotate(9deg);line-height:1.05;text-align:center}.game-card p{order:3;font-size:9px;color:#e2d1b6;letter-spacing:1px;margin:0 0 9px;line-height:15px}.card-buttons{order:4;gap:8px;margin:0;position:relative;z-index:2;flex:none}.card-buttons button{min-height:48px;border-radius:24px;font-size:12px;box-shadow:inset 0 1px #ffe7b8,0 3px #6d441c,0 6px 8px #0006;padding:8px 4px}.card-buttons button:not(.gold){color:#f2da9e;background:linear-gradient(#4a282bea,#211626f5);border:1px solid #bc8e46}.gold{background:linear-gradient(#fff2bd,#f2ce72 42%,#d8a84e 46%,#f4cc70 82%,#e4b555);border:1px solid #fff0bd;color:#39230c;text-shadow:0 1px #ffe7aa;box-shadow:inset 0 2px #fff6cf,inset 0 -2px #a36b22,0 3px #6a4119,0 6px 9px #0007}.lobby-note{font-size:9px;letter-spacing:1px;color:#ead6a3;line-height:1.5;text-shadow:0 1px 3px #000}.lobby-note span{display:none}.bottom{height:var(--nav-h);bottom:11px;left:max(7vw,env(safe-area-inset-left));right:max(7vw,env(safe-area-inset-right));padding:3px 3vw;gap:0;justify-content:space-around;border:2px solid #f3ca78;border-radius:48px;background:linear-gradient(175deg,#4b2739ef,#211b2bf7 50%,#341a2cf5);box-shadow:inset 0 0 0 3px #f9db8b42,inset 0 0 0 6px #6e4228,0 4px #744620,0 10px 16px #000b;z-index:4}.bottom button{width:18%;height:100%;min-height:44px;padding:2px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;color:#ecd29b;font-size:12px;border-radius:30px;border:0;letter-spacing:2px}.bottom button span{line-height:1;height:36px}.bottom .metal-icon{width:36px;height:36px}.bottom button.active{border:0;background:radial-gradient(ellipse at 50% 100%,#ffd96c80,transparent 72%);color:#fff0b7;box-shadow:inset 0 -2px #ffd66c88}@media(max-height:600px){:root{--top-h:60px;--nav-h:59px;--safe-l:max(16px,env(safe-area-inset-left));--safe-r:max(16px,env(safe-area-inset-right))}.top{padding-top:4px;padding-bottom:4px}.avatar{width:43px;height:43px}.identity{min-width:170px;gap:9px}.identity small{font-size:8px}.brand{font-size:26px;letter-spacing:3px;gap:5px}.brand .metal-icon{height:39px;width:42px}.brand small{font-size:7px;letter-spacing:2px;margin-top:3px}.top-right{min-width:170px;gap:10px}.top-right button{width:43px;min-height:44px;font-size:8px}.top-right button .metal-icon{width:29px;height:29px;padding:5px}.connection{font-size:8px}.lobby{padding:5px var(--safe-r) 12px 20.5vw;gap:6px}.welcome{padding-top:0}.welcome h1{font-size:18px;letter-spacing:2px;margin:3px 0}.welcome>span{font-size:7px;letter-spacing:2px}.welcome p{display:none}.game-grid{height:clamp(210px,57vh,300px);gap:14px}.game-card{border-width:2px;padding:6px 9px 10px;border-radius:17px;box-shadow:inset 0 0 0 3px #fff0b250,inset 0 0 0 6px #53120f,3px 5px #774219,0 10px 15px #0009}.game-card:before{inset:5px;border-radius:11px}.game-card h2{font-size:20px;padding:4px 0;margin:2px -4px;border-radius:10px;min-height:32px}.card-no{font-size:6px;line-height:10px;letter-spacing:1px}.game-card p{display:none}.game-art{margin:0 -4px}.card-buttons{gap:5px}.card-buttons button{font-size:10px;min-height:44px;padding:5px 2px}.lobby-note{font-size:7px}.art-symbol{font-size:56px}.niu .art-symbol{font-size:69px}.art-ace{font-size:19px}.bottom{bottom:6px;left:8vw;right:8vw;padding:2px 3vw}.bottom button{font-size:10px;letter-spacing:1px}.bottom button span{height:27px}.bottom .metal-icon{width:27px;height:27px}}@media(max-height:375px){:root{--top-h:54px;--nav-h:54px}.lobby{padding-bottom:9px}.welcome>span{display:none}.welcome h1{font-size:15px;margin:2px 0}.game-grid{height:202px}.game-card h2{font-size:18px;min-height:29px}.art-symbol{font-size:48px}.niu .art-symbol{font-size:60px}.lobby-note{font-size:6px;line-height:1}.brand{font-size:24px}.top-right button span{display:none}.bottom{bottom:4px}.bottom button span{height:25px}.bottom .metal-icon{height:25px;width:25px}}.game-art{display:flex;align-items:center;justify-content:center}.art-square{position:relative;height:100%;aspect-ratio:1;max-width:100%;flex:none}.art-illustration{position:absolute;inset:0}.art-symbol{font-size:clamp(45px,5.8vw,80px)}@media(max-height:600px){.card-no{display:none}.game-art{margin:4px -4px}.art-symbol{font-size:39px}.niu .art-symbol{font-size:51px}.art-ace{font-size:15px}}body[data-scene=table]{background-image:linear-gradient(#080c1ad6,#090e1ac4),url(/art/guiyang-night.webp)}body[data-scene=table] #app{background:radial-gradient(ellipse at 50% 55%,transparent 35%,#06091466)}body[data-scene=table] .top{height:var(--top-h);background:linear-gradient(#070c18ed,#0b1421cc)}body[data-scene=table] .room{height:calc(100dvh - var(--top-h));position:relative}.room-info{height:52px;padding:4px var(--safe-r) 4px var(--safe-l);font-size:12px;background:linear-gradient(#121a24cf,#0a1422aa);border-bottom:1px solid #ae93552b;gap:12px}.room-info button{min-height:40px;padding:6px 13px;color:#edd09a;border-color:#bb965855;border-radius:8px;background:linear-gradient(#32404ad6,#131c2a)}.room-info>span:last-child{font-size:11px;color:#d0c0a0}.seat-area{inset:80px 3% 105px}.seat{padding:9px 12px;border-radius:12px;min-width:158px;gap:11px;border:1px solid #bd975865;background:linear-gradient(135deg,#233239ed,#0d1928f2);box-shadow:inset 0 1px #d7ba6f35,0 5px #080e14a6,0 9px 18px #0009;font-size:13px}.seat .avatar{width:57px;height:57px;flex-shrink:0}.seat small{font-size:10px;color:#b8c5c6;margin-top:4px}.seat span{font-size:10px;color:#e1c38c;margin-top:5px}.seat.turn{border:1px solid #f3cb78;box-shadow:0 0 0 2px #d4ad5e55,inset 0 1px #fff0b470,0 5px 18px #000a}.seat.turn:after{content:"";position:absolute;inset:-5px;border:1px solid #ffd27650;border-radius:16px;pointer-events:none}.seat-0{left:0;bottom:18px}.seat-1{left:0;top:32%}.seat-2{top:-35px;left:50%}.seat-3{right:0;top:32%}.seat-4{right:0;bottom:18px}.table-caption{top:24%;left:29%;width:42%;z-index:1}.table-caption>span{font-size:20px;letter-spacing:6px;color:#d9c28b66}.table-caption h2{font-size:17px;margin:10px 0 5px;text-shadow:0 2px 5px #000}.table-caption small{font-size:10px;color:#bfcbbe}.hand-area{bottom:16px;left:17%;right:7%;gap:17px;z-index:3}.hand{gap:3px;perspective:900px;align-items:flex-end;min-height:89px}.tile{position:relative;width:56px;height:83px;min-height:83px;border-radius:7px 7px 5px 5px;border:1px solid #cbbd9a;padding:5px 3px 9px;background:linear-gradient(112deg,#fffdf4,#f6efdc 40%,#dfd6bd);box-shadow:inset 2px 2px 2px #fff,inset -2px -2px 3px #b9ad88,0 3px #c8b990,0 7px #145342,1px 10px 10px #000a;color:#145842;text-shadow:0 1px 0 #fff,0 -1px 0 #063c2b;transform:perspective(600px) rotateX(5deg)}.tile:before{content:"";position:absolute;inset:2px 3px 45%;background:linear-gradient(125deg,#ffffff80,transparent 60%);border-radius:5px;pointer-events:none}.tile strong{font:700 30px STKaiti,KaiTi,serif;line-height:35px;position:relative}.tile>span{font:700 24px STKaiti,KaiTi,serif;line-height:24px;position:relative}.tile.red{color:#9c282c;text-shadow:0 1px #fff,0 -1px #5b161b}.tile.suit-1{color:#193e65}.tile.selected{transform:translateY(-15px) rotateX(0);outline:2px solid #f1ca6d;box-shadow:inset 1px 1px #fff,0 6px #1b6b4d,0 13px 14px #0009}.tile .mj-symbols{position:absolute;inset:16px 6px 22px;display:grid;grid-template-columns:repeat(3,1fr);gap:3px;align-content:center;justify-items:center;pointer-events:none}.mj-symbols i{display:block;width:10px;height:10px;border:2px solid #195190;border-radius:50%;background:radial-gradient(#f3e9ce 25%,#b9363c 32% 45%,#f1e4cb 50%);box-shadow:0 1px #fff,0 -1px #17345c}.suit-2 .mj-symbols i{width:5px;height:13px;border:1px solid #0a4c35;border-radius:2px;background:linear-gradient(90deg,#0b5e40,#54a679,#0e6845);box-shadow:0 1px #fff}.tile.suit-1 strong,.tile.suit-2 strong{position:absolute;top:3px;left:4px;font-size:10px;line-height:12px}.tile.suit-1>span:not(.mj-symbols),.tile.suit-2>span:not(.mj-symbols){position:absolute;bottom:4px;left:0;right:0;font-size:16px;line-height:18px}.actions{gap:12px;min-height:48px}.actions button{min-width:89px;min-height:48px;border-radius:25px;padding:8px 20px;font-size:15px;border:1px solid #d8af68;background:linear-gradient(#2d4448,#14232e);color:#f0d7a7;box-shadow:inset 0 2px #e0cb9444,0 4px #07121c,0 6px 9px #0006}.actions button.gold{background:linear-gradient(#fff1b9,#efc365 43%,#c48d36 47%,#e8bb61);color:#3f280d}.actions [data-kind=hu]{background:linear-gradient(#c64b46,#821c30);font-size:23px;color:#ffedb4;min-width:86px}.actions [data-kind=peng],.actions [data-kind=gang]{background:linear-gradient(#2c8c67,#124e40);font-size:22px;color:#f9e6ab;min-width:86px}.actions [data-kind=pass]{background:linear-gradient(#485260,#222a3a)}.vote{right:var(--safe-r);bottom:17px;min-height:44px;max-width:120px;padding:6px 11px;font-size:10px;z-index:4;border:1px solid #ac8c5655;background:linear-gradient(#283341dd,#111c29eb);border-radius:9px}.table-tools{position:absolute;left:var(--safe-l);top:calc(var(--top-h) + 64px);z-index:3}.table-tools button{height:44px;width:44px;padding:7px;min-height:44px;border-radius:50%;background:linear-gradient(#273b45,#101b29);border-color:#c6a06188}.table-tools .metal-icon{height:26px;width:26px}@keyframes deal-card{0%{opacity:0;transform:translate(-150px,-100px) rotate(-16deg) rotateY(80deg)}to{opacity:1;transform:translate(0) rotate(0) rotateY(0)}}@keyframes draw-card{0%{opacity:0;transform:translate(80px,-45px) rotate(12deg)}to{opacity:1;transform:translate(0)}}.deal-in>.tile,.deal-in>.poker{animation:deal-card .45s both cubic-bezier(.2,.75,.2,1)}.draw-in>.tile:last-child,.draw-in>.poker:last-child{animation:draw-card .35s both ease-out}@media(max-height:600px){.room-info{height:44px;gap:7px;padding:0 var(--safe-r) 0 var(--safe-l);font-size:10px}.room-info button{min-height:40px;padding:4px 8px;font-size:10px}.room-info>span:last-child{font-size:9px}.seat-area{inset:63px 2% 79px}.seat{min-width:111px;padding:5px 7px;gap:7px;font-size:10px}.seat .avatar{height:37px;width:37px}.seat small,.seat span{font-size:8px;line-height:11px;margin-top:2px}.seat-0{bottom:-8px}.seat-1,.seat-3{top:32%}.seat-2{top:-21px}.table-caption{top:25%;left:28%;width:44%}.table-caption h2{font-size:12px;margin:4px 0}.table-caption small{font-size:8px}.hand-area{left:15%;right:2%;bottom:10px;gap:12px}.hand{min-height:62px;gap:2px}.tile{width:44px;height:61px;min-height:61px;padding:2px 1px 6px}.tile strong{font-size:24px;line-height:30px}.tile>span{font-size:19px;line-height:20px}.tile .mj-symbols{inset:12px 5px 19px;gap:2px}.mj-symbols i{width:8px;height:8px}.suit-2 .mj-symbols i{width:4px;height:9px}.tile.suit-1>span:not(.mj-symbols),.tile.suit-2>span:not(.mj-symbols){font-size:13px;line-height:15px;bottom:3px}.tile.suit-1 strong,.tile.suit-2 strong{font-size:8px;line-height:9px;top:2px}.actions{min-height:44px;gap:7px}.actions button{min-height:44px;min-width:70px;padding:5px 13px;font-size:12px}.actions [data-kind=hu],.actions [data-kind=peng],.actions [data-kind=gang]{font-size:20px;min-width:70px}.vote{bottom:10px;max-width:100px;font-size:8px;right:8px;padding:5px 7px}.table-tools{left:var(--safe-l);top:calc(var(--top-h) + 49px)}.table-tools button{height:38px;width:38px;padding:6px}.table-tools .metal-icon{width:24px;height:24px}}@media(max-height:375px){.seat-area{inset:59px 2% 76px}.seat .avatar{width:33px;height:33px}.seat{min-width:102px;padding:4px 6px;gap:6px}.seat-2{top:-17px}.table-caption{top:26%}.table-caption small{font-size:7px}.hand-area{bottom:8px;gap:10px}.tile{height:57px;min-height:57px}.tile strong{font-size:23px;line-height:28px}.tile>span{font-size:17px}.hand{min-height:58px}.room-info>span:last-child{display:none}}@media(prefers-reduced-motion:reduce){.deal-in>*,.draw-in>*{animation:none!important}}.art-square{container-type:size}.art-symbol{font-size:31cqh}.niu .art-symbol{font-size:45cqh}.art-ace{font-size:14cqh}@media(max-height:600px){.welcome>span{display:none}.welcome h1{font-size:16px}.art-square{height:115%}.table-caption{top:35%}}.poker{position:relative;isolation:isolate;border-radius:8px;background:linear-gradient(125deg,#fffff8,#f4f0e3 53%,#dfd7c3);border:1px solid #c6bc9f;box-shadow:inset 1px 1px #fff,inset -1px -1px 2px #d4cbb8,1px 3px #c3b89c,2px 5px #7c735f,3px 10px 13px #0008;color:#192837;text-shadow:0 1px #fff;overflow:hidden}.hand .poker{width:78px;height:110px;padding:6px 8px;transform:rotateX(4deg);border-radius:7px}.hand .poker b{font:700 24px Georgia;line-height:25px;position:absolute;left:7px;top:5px}.hand .poker>strong{font:23px Georgia;position:absolute;top:29px;left:8px;line-height:24px}.poker.red{color:#a32537}.poker:not(.back):after{content:attr(data-rank) "\a" attr(data-suit);white-space:pre;position:absolute;bottom:5px;right:6px;transform:rotate(180deg);font:700 16px/16px Georgia;text-align:center}.poker-pips{position:absolute;inset:13px 16px;display:grid;grid-template-columns:repeat(2,1fr);align-items:center;justify-items:center;pointer-events:none}.poker-pips i{font:20px/1 Georgia;font-style:normal}.poker-pips.pips-1,.poker-pips.pips-2,.poker-pips.pips-3{display:flex;flex-direction:column;justify-content:space-around}.pips-1 i{font-size:43px}.pips-5 i:last-child,.pips-7 i:last-child,.pips-9 i:last-child{grid-column:1/-1}.pips-8 i,.pips-9 i,.pips-10 i{font-size:16px}.poker.royal:before{content:attr(data-rank);position:absolute;inset:17px;border:1px solid #b59759;border-radius:45% 45% 35% 35%;display:grid;place-items:center;font:700 34px Georgia;color:#a58545;background:repeating-linear-gradient(45deg,#b8a16c10 0 2px,transparent 2px 6px),radial-gradient(#f6e9be,#e8d5a5);box-shadow:inset 0 0 0 3px #f8efdc,inset 0 0 0 4px #c6ac73}.hand .poker.royal>strong{top:auto;bottom:21px;left:calc(50% - 8px);font-size:19px}.poker.back{border:3px solid #e4c580;background:repeating-linear-gradient(45deg,#ae8b4c33 0 1px,transparent 1px 7px),repeating-linear-gradient(-45deg,#ae8b4c33 0 1px,transparent 1px 7px),linear-gradient(135deg,#542763,#211832);box-shadow:inset 0 0 0 3px #1f2139,inset 0 0 0 4px #b18d55,0 4px #826638,0 9px 16px #0009;color:#ddc17f;font:700 32px serif;text-shadow:0 2px #653d21}.room.niu .hand{gap:12px;transform:perspective(900px) rotateX(2deg)}.room.niu .table-caption{top:26%}.room.niu .seat.banker:before{content:"庄";position:absolute;left:-9px;top:-10px;width:25px;height:25px;background:linear-gradient(#fff0ab,#c9902c);border:1px solid #fff1b2;border-radius:50%;color:#624017;display:grid;place-items:center;font:700 13px serif;z-index:2}.mini-hand .poker-pips,.public-hand .poker-pips{display:none}.mini-hand .poker:after,.public-hand .poker:after{font-size:8px;line-height:8px;bottom:2px;right:2px}.mini-hand .poker.royal:before,.public-hand .poker.royal:before{display:none}.mini-hand .poker strong,.public-hand .poker strong{position:static}@media(max-height:600px){.hand .poker{width:58px;height:79px;padding:4px 5px}.hand .poker b{font-size:18px;line-height:19px;left:4px;top:3px}.hand .poker>strong{font-size:17px;line-height:17px;top:23px;left:5px}.poker-pips{inset:11px 12px}.poker-pips i{font-size:14px}.pips-1 i{font-size:31px}.pips-8 i,.pips-9 i,.pips-10 i{font-size:12px}.poker:not(.back):after{font-size:11px;line-height:11px;bottom:3px;right:3px}.poker.royal:before{inset:12px;font-size:25px}.hand .poker.royal>strong{bottom:15px;font-size:14px;left:calc(50% - 6px)}.room.niu .hand{gap:9px}.room.niu .table-caption{top:35%}.room.niu .seat.banker:before{width:20px;height:20px;font-size:11px;left:-6px;top:-7px}}.room.zha .hand{gap:13px}.room.zha .hand .poker{width:85px;height:118px}.room.zha .hand .poker.back{background-color:#3b224b}.room.zha .actions [data-kind=look],.room.zha .actions [data-kind=compare]{background:linear-gradient(#794396,#3c244f);border-color:#dfb870;color:#f1dfb3}.room.zha .actions [data-kind=follow]{background:linear-gradient(#fce7a6,#d2a450);color:#35230f}.room.zha .actions [data-kind=fold]{background:linear-gradient(#485461,#212a39);color:#d7d9dd}.room.zha .table-caption{top:26%}@media(max-height:600px){.room.zha .hand .poker{width:60px;height:83px}.room.zha .hand{gap:9px}.room.zha .table-caption{top:35%}.room.zha .actions{gap:7px}.room.zha .actions button{min-width:68px;padding:5px 12px}}.seat.folded{opacity:.58;filter:saturate(.35)}.seats-2 .seat-1{top:-35px;left:50%;right:auto;transform:translate(-50%)}.seats-3 .seat-2{top:32%;right:0;left:auto;transform:none}.seats-5 .seat-2{top:-35px;left:30%}.seats-5 .seat-3{top:-35px;right:30%;transform:translate(50%)}.seats-5 .seat-4{top:32%;bottom:auto}@media(max-height:600px){.seats-2 .seat-1,.seats-5 .seat-2,.seats-5 .seat-3{top:-21px}}@media(max-height:375px){.seats-2 .seat-1,.seats-5 .seat-2,.seats-5 .seat-3{top:-17px}}@keyframes deal-guard{0%{pointer-events:none}to{pointer-events:auto}}.deal-in{animation:deal-guard .85s step-end}.deal-in>:nth-child(1){animation-delay:0ms}.deal-in>:nth-child(2){animation-delay:25ms}.deal-in>:nth-child(3){animation-delay:50ms}.deal-in>:nth-child(4){animation-delay:75ms}.deal-in>:nth-child(5){animation-delay:.1s}.deal-in>:nth-child(6){animation-delay:125ms}.deal-in>:nth-child(7){animation-delay:.15s}.deal-in>:nth-child(8){animation-delay:175ms}.deal-in>:nth-child(9){animation-delay:.2s}.deal-in>:nth-child(10){animation-delay:225ms}.deal-in>:nth-child(11){animation-delay:.25s}.deal-in>:nth-child(12){animation-delay:275ms}.deal-in>:nth-child(13){animation-delay:.3s}.deal-in>:nth-child(14){animation-delay:325ms}@media(prefers-reduced-motion:reduce){.deal-in{animation:none!important}}.tile .mj-symbols{grid-template-rows:repeat(3,1fr);align-items:center}.mj-symbols .r1{grid-row:1}.mj-symbols .r2{grid-row:2}.mj-symbols .r3{grid-row:3}.mj-symbols .c1{grid-column:1}.mj-symbols .c2{grid-column:2}.mj-symbols .c3{grid-column:3}body{background-position:left center}.mahjong .art-symbol{left:36%;top:49%;transform:translate(-50%,-50%) rotate(-10deg);font-size:29cqh}.account-links{display:flex;gap:10px;margin:12px 0}.account-links button{flex:1}.account-settings{border-top:1px solid #bc965844;margin-top:14px;padding-top:8px}.motion-notice{min-height:1.4em;margin:4px 0;color:#ffe4a2;font-size:12px;line-height:1.4;text-shadow:0 2px 4px #000}@keyframes confirmed-seat{0%{box-shadow:0 0 0 2px #ffe3a9,0 0 24px #eac16caa}to{box-shadow:0 0 0 0 transparent}}@keyframes confirmed-hand{0%{opacity:.65;filter:brightness(1.4);translate:0 8px}to{opacity:1;filter:brightness(1);translate:0 0}}@keyframes confirmed-result{0%{filter:brightness(1.7);scale:.97}to{filter:brightness(1);scale:1}}.seat[data-motion]:not([data-motion=""]){animation:confirmed-seat .65s ease-out}.motion-draw,.motion-reveal{animation:confirmed-hand .3s ease-out}.motion-settlement{animation:confirmed-result .45s ease-out}body[data-low-motion=true] .deal-in,body[data-low-motion=true] .deal-in>*,body[data-low-motion=true] .motion-draw,body[data-low-motion=true] .motion-reveal,body[data-low-motion=true] .motion-settlement,body[data-low-motion=true] .seat[data-motion]{animation:none!important}@media(prefers-reduced-motion:reduce){.motion-draw,.motion-reveal,.motion-settlement,.seat[data-motion]{animation:none!important}}@media(max-height:600px){.motion-notice{font-size:10px;margin:2px 0}}
