:root{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#eef5e8;background:#06221d;font-synthesis:none;--gold:#ead69b;--muted:#abc3b9}*{box-sizing:border-box}body{margin:0}button{font:inherit;cursor:pointer;border:0;touch-action:manipulation}button:focus-visible{outline:3px solid #e9bd53;outline-offset:3px}button:disabled{opacity:.4;cursor:default}#app{max-width:800px;margin:auto;padding:20px 22px max(20px,env(safe-area-inset-bottom))}header{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.eyebrow{font-size:12px;letter-spacing:3px;color:var(--gold)}h1{font-size:26px;margin:7px 0 0;letter-spacing:2px}h1 span{font-size:13px;font-weight:400;letter-spacing:0;margin-left:12px;color:var(--muted)}.icon{background:#153b31;border:1px solid #3c5849;color:var(--gold);border-radius:24px;padding:10px 16px}.table{height:370px;border-radius:100px 100px 55px 55px;background:radial-gradient(ellipse at center,#155944,#0c3e31 80%);border:1px solid #50735d;box-shadow:inset 0 0 0 7px #0b352b,inset 0 0 0 8px #49664d;position:relative}.seat{position:absolute;text-align:center;z-index:2;min-width:72px}.partner{top:19px;left:50%;transform:translateX(-50%)}.left{left:18px;top:132px}.right{right:18px;top:132px}.avatar{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;background:#18342d;border:2px solid #829180;margin:0 auto 6px;font-size:20px;color:var(--gold)}.seat.active .avatar{border-color:#f6d476;box-shadow:0 0 0 4px #f6d47624}.seat-name{font-size:14px}.seat-count{font-size:12px;color:#d0dacb;margin-top:5px}.seat-msg{font-size:12px;color:var(--gold);height:20px;max-width:95px;overflow:hidden;white-space:nowrap}.table-center{position:absolute;top:123px;left:100px;right:100px;text-align:center}.level{font-size:12px;color:#c7d6c5}.level b{font:700 22px Georgia;color:var(--gold);margin-left:6px}.level span{display:block;font-size:12px;margin-top:4px;color:#9dbca8}#turnText{font-size:16px;margin:15px 0 10px;font-weight:600;min-height:24px}.played{display:flex;justify-content:center;min-height:59px;flex-wrap:wrap;gap:3px}.mini{height:49px;width:31px;border-radius:5px;background:#f8f6ea;color:#162e27;box-shadow:0 2px 3px #00261a55;font:700 17px Georgia;padding-top:3px}.mini small{display:block;font-size:16px}.red{color:#b73538!important}#playLabel{font-size:12px;color:#dbd7bb;margin-top:8px;min-height:16px}.table-bottom{position:absolute;bottom:22px;left:30px;right:30px;display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:12px;color:#bdd0c0}.table-bottom button{background:transparent;color:var(--gold);padding:8px;font-size:14px}#history{max-width:80%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.hand-area{padding-top:20px}.hand-heading{display:flex;justify-content:space-between;align-items:center;font-size:16px}.hand-heading span{font-size:14px;margin-left:5px;color:var(--muted)}.hand-heading button{color:#bcd1c1;background:transparent;font-size:14px;padding:8px 0}#selectionText{color:var(--gold);font-size:13px;min-height:34px;padding:4px 0 11px}.hand{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:7px 5px;padding-top:7px}.card{height:76px;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#f6f5ed;color:#172d27;border-radius:7px;border:2px solid #f6f5ed;box-shadow:0 3px 0 #bac9b9;font:700 22px Georgia;transition:transform .12s,border-color .12s}.card .suit{font-size:20px}.card .tag{position:absolute;bottom:2px;right:2px;font:10px sans-serif;color:#71591f}.card.wild{background:#fbefc6;border-color:#ead69b}.card.selected{transform:translateY(-7px);border:2px solid #ffcd58;box-shadow:0 3px 0 #cda245;background:#fff3c7}.actions{display:grid;grid-template-columns:1fr 1fr 1.65fr;gap:10px;margin-top:20px}.actions button,dialog button{padding:14px;border-radius:12px;background:#214337;color:#f2f4df;font-weight:600;font-size:16px}.primary{background:var(--gold)!important;color:#21382b!important}.foot{display:flex;justify-content:space-between;align-items:center;margin-top:16px;font-size:12px;color:#9fb7a9}.foot button{background:transparent;color:#b9ccbc;padding:8px 0;font-size:13px}dialog{color:#eaf0e4;background:#102f25;border:1px solid #607258;border-radius:22px;padding:24px;max-width:480px;width:calc(100% - 32px);max-height:85dvh}dialog::backdrop{background:#00160bd9}dialog p{font-size:15px;line-height:1.8;color:#c3d3c2}.dialog-head{display:flex;justify-content:space-between;align-items:center}h2{font-size:23px;margin:0}dialog .close{padding:4px 12px;font-size:26px;background:transparent}.close-wide{width:100%}#result{text-align:center}#result h2{color:var(--gold);font-size:30px;margin:12px 0}#result button{margin:8px;width:90%}.result-rank{padding:12px;border-bottom:1px solid #375241;font-size:16px}.result-eyebrow{color:var(--gold);font-size:13px;letter-spacing:3px}@media(max-width:480px){#app{padding:14px 12px max(18px,env(safe-area-inset-bottom))}header{margin-bottom:13px}h1{font-size:24px}.table{height:310px;border-radius:72px 72px 35px 35px}.table-center{left:77px;right:77px;top:111px}.left{left:11px;top:117px}.right{right:11px;top:117px}.seat{min-width:55px}.avatar{width:38px;height:38px}.partner{top:16px}.table-bottom{bottom:13px;left:22px;right:22px}#turnText{font-size:14px;margin:10px 0}.mini{width:25px;height:43px;font-size:15px}.mini small{font-size:14px}.played{gap:2px;min-height:47px}.level span{font-size:12px}.hand-area{padding-top:12px}.card{height:63px;font-size:20px}.card .suit{font-size:17px}.hand{gap:7px 4px}.actions{margin-top:16px;gap:8px}.actions button{padding:13px 8px}.foot{font-size:12px}h1 span{font-size:12px}.eyebrow{font-size:12px;letter-spacing:2px}}@media(max-width:350px){.hand{grid-template-columns:repeat(8,minmax(0,1fr))}.table-center{left:69px;right:69px}.card{height:60px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}} 
[hidden]{display:none!important}.lobby,.room-panel{background:#103c30;border:1px solid #456954;border-radius:20px;padding:22px;margin:12px 0}.lobby{max-width:480px;margin:28px auto}.lobby p,.room-panel p{color:#bcd1c1;font-size:14px;line-height:1.6}.lobby label{display:block;margin:20px 0 8px}.lobby input{width:100%;font:inherit;font-size:16px;border:1px solid #567663;background:#092f26;color:#fff;border-radius:10px;padding:14px;min-width:0}.lobby>button{width:100%;margin:14px 0}.lobby button,.room-panel button{padding:13px 16px;border-radius:10px;background:#244c3e;color:#ecf0dc;font-size:16px}.lobby a{display:block;text-align:center;color:#ead69b;margin-top:24px}.join-row{display:flex;gap:10px}.room-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.room-heading b{font-size:20px;letter-spacing:1px}.roster{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:18px 0}.roster-seat{display:flex;flex-direction:column;gap:7px;padding:12px 6px;border:1px solid #41624f;border-radius:10px;min-width:0;text-align:center}.roster-seat b{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roster-seat span{font-size:12px;color:#b9cbbb}.roster-seat.self{border-color:#ead69b}.room-actions{display:flex;gap:10px}.room-actions button{flex:1}.room-panel{padding:16px}.room-panel p{margin-bottom:0}#networkStatus{font-size:14px;color:#ead69b;text-align:center;min-height:20px}.empty-play{align-self:center;color:#9bbb9f;font-size:14px}.seat-name{max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:480px){.room-heading b{font-size:18px}.room-heading button{padding:10px}.roster{gap:5px}.roster-seat{padding:10px 3px}.room-actions button{padding:12px 8px}.seat-name{max-width:75px}}
select{font:inherit;font-size:16px;border:1px solid #567663;background:#092f26;color:#fff;border-radius:10px;padding:13px;min-width:0}.lobby select{width:100%}.game-banner{display:flex;align-items:center;justify-content:space-between;margin:24px 0 12px}.game-banner h2{font-size:22px}.game-info{color:#c6d8c9;line-height:1.7;font-size:14px;white-space:normal!important;max-width:none!important}.public-cards{display:flex;align-items:center;gap:8px;color:#ead69b}.back{background:#244f40;color:#a2baac}.auction{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0;max-height:180px;overflow:auto}.auction>span{background:#103b2e;border:1px solid #42624e;border-radius:7px;padding:8px;font-size:12px;color:#b5cdbb}.auction b{display:block;color:#f0e1ad;margin-top:5px;font-size:16px}.bid-actions{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0}.bid-actions>.join-row,.bid-actions>.room-actions{width:100%}.bid-actions select{flex:1}.bid-actions button{background:#214337;color:#f2f4df;padding:14px;border-radius:10px;font-size:16px}.trick-surface{background:radial-gradient(ellipse at center,#155944,#0c3e31);border:1px solid #50735d;border-radius:24px;padding:16px;min-height:130px;text-align:center}.trick-surface p{font-size:14px;color:#ccd9c8;margin:0 0 12px}.trick-cards{display:flex;justify-content:center;gap:22px}.trick-cards>div{display:flex;align-items:center;flex-direction:column;gap:8px;min-width:40px}.trick-cards>div>span:last-child{font-size:12px;max-width:75px;overflow:hidden;text-overflow:ellipsis}.trick-cards .mini{display:block}.roster-seat.current{box-shadow:0 0 0 2px #ead69b}.back-lobby{display:inline-block;color:#ead69b;margin-top:14px;font-size:14px}#dummyArea{border:1px solid #6b7951;background:#1a3c2e;border-radius:16px;padding:14px;margin:18px 0}#dummyHand .card:disabled,#hand .card:disabled{opacity:1}#dummyNote{font-size:12px;color:#c8d9c9}#rules a{color:#ead69b}

.roster-seat .bot-seat-btn{padding:8px 3px;font-size:12px;line-height:1.4;border-radius:7px;background:#ead69b;color:#21382b;width:100%;margin-top:3px}
