*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
body{min-height:100vh;background:radial-gradient(900px 600px at 20% 10%,#25314C,#101728 60%,#0B1120);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;display:flex;align-items:center;justify-content:center;gap:52px;padding:26px;color:#1B2333}
button,input{font-family:inherit;outline:none}
.phone{width:390px;height:844px;flex:0 0 390px;background:#F5F6F8;border-radius:44px;box-shadow:0 30px 90px rgba(0,0,0,.55),0 0 0 9px #1B2333,0 0 0 10px #38445E;overflow:hidden;position:relative;display:flex;flex-direction:column}
.statusbar{height:44px;flex:0 0 44px;display:flex;align-items:center;justify-content:space-between;padding:0 26px;font-size:12px;font-weight:650;color:#1B2333;background:#F5F6F8;position:relative;z-index:3}
.sb-mid{position:absolute;left:50%;transform:translateX(-50%);font-size:13px;font-weight:600}
.sb-right{letter-spacing:-1px;font-size:11px}
.navbar{height:46px;flex:0 0 46px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;background:#F5F6F8;border-bottom:1px solid #E9EBF0;position:relative;z-index:3}
.navbar span{font-size:15px;font-weight:600}
.nb-back{font-size:28px!important;line-height:1;font-weight:400!important;color:#333}
.nb-more{letter-spacing:2px;font-size:17px!important}
.screen{flex:1;position:relative;overflow:hidden;background:#F5F6F8}
.pane{position:absolute;inset:0;display:none;overflow-y:auto;padding:20px 18px 24px}
.pane.on{display:block;animation:slide .3s ease}
.pane::-webkit-scrollbar{width:0}
@keyframes slide{from{opacity:0;transform:translateX(12px)}}
/* ---------- auth ---------- */
.auth{background:#fff;border-radius:16px;padding:28px 22px 22px;text-align:center;box-shadow:0 6px 24px rgba(27,35,51,.06)}
.wx-logo{width:58px;height:58px;border-radius:15px;background:linear-gradient(135deg,#4AC763,#2BAE4A);display:grid;place-items:center;color:#fff;font-size:28px;font-weight:700;margin:0 auto 18px;box-shadow:0 8px 20px rgba(43,174,74,.28)}
.auth h2{font-size:19px;margin-bottom:22px}
.auth-app{font-size:14px;color:#5E677B;margin-bottom:16px}
.auth-app b{color:#1B2333}
.auth-perm{display:flex;align-items:center;gap:12px;text-align:left;border-top:1px solid #EEF0F5;border-bottom:1px solid #EEF0F5;padding:16px 4px;margin-bottom:16px}
.perm-av{width:44px;height:44px;border-radius:50%;background:#E9EDF5;background-size:cover;background-position:center;flex:0 0 44px}
.auth-perm b{display:block;font-size:14px;margin-bottom:3px}
.auth-perm span{font-size:11.5px;color:#9AA2B3}
.auth-perm i{margin-left:auto;color:#2BAE4A;font-style:normal;font-size:17px}
.auth-tip{font-size:11.5px;color:#9AA2B3;line-height:1.8;text-align:left;margin-bottom:16px}
.auth-tip code{background:#F2F4F8;padding:1px 4px;border-radius:3px;font-size:10.5px}
.nick-edit{display:block;text-align:left;margin-bottom:18px}
.nick-edit span{display:block;font-size:11.5px;color:#9AA2B3;margin-bottom:6px}
.nick-edit input{width:100%;height:40px;border:1px solid #E4E7EE;border-radius:9px;padding:0 12px;font-size:14px;background:#FAFBFC}
.nick-edit input:focus{border-color:#2BAE4A;background:#fff}
.btn-green{width:100%;height:45px;border:0;border-radius:9px;background:#2BAE4A;color:#fff;font-size:15px;font-weight:650;cursor:pointer;box-shadow:0 6px 16px rgba(43,174,74,.25)}
.btn-green:active{transform:scale(.98)}
.btn-text{width:100%;background:none;border:0;color:#9AA2B3;font-size:12px;margin-top:14px;cursor:pointer}
/* ---------- lobby ---------- */
.hero-card{background:linear-gradient(135deg,#C9962F,#E8B34F);border-radius:16px;padding:18px;color:#fff;box-shadow:0 10px 26px rgba(200,150,47,.28)}
.hero-tag{font-size:11px;opacity:.9;letter-spacing:1px;margin-bottom:14px}
.me{display:flex;align-items:center;gap:12px}
.me img{width:48px;height:48px;border-radius:50%;border:2px solid rgba(255,255,255,.9);object-fit:cover;background:#fff}
.me b{display:block;font-size:16px;margin-bottom:3px}
.me span{font-size:11.5px;opacity:.9}
.me-ok{margin-left:auto;width:26px;height:26px;border-radius:50%;background:rgba(255,255,255,.25);display:grid;place-items:center;font-size:14px}
.wait{text-align:center;padding:34px 0 26px}
.wait-ring{width:92px;height:92px;margin:0 auto 18px;border-radius:50%;background:conic-gradient(#E8B34F 0deg,#EDEFF4 0deg);display:grid;place-items:center;animation:spin 5s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.wr-inner{width:76px;height:76px;border-radius:50%;background:#F5F6F8;display:grid;place-items:center;font-size:30px;animation:spin 5s linear infinite reverse}
.wait h3{font-size:18px;margin-bottom:9px}
.wait p{font-size:12.5px;color:#9AA2B3;line-height:1.8}
.lobby-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-bottom:20px}
.lobby-meta div{background:#fff;border-radius:12px;padding:14px 6px;text-align:center;box-shadow:0 3px 12px rgba(27,35,51,.04)}
.lobby-meta b{display:block;font-size:22px;font-weight:750;color:#C9962F;font-variant-numeric:tabular-nums}
.lobby-meta span{font-size:10.5px;color:#9AA2B3}
.others{background:#fff;border-radius:14px;padding:15px}
.others-hd{font-size:12px;font-weight:650;margin-bottom:12px}
.others-av{display:flex;flex-wrap:wrap;gap:8px}
.others-av img{width:34px;height:34px;border-radius:50%;object-fit:cover}
.others-av .more{width:34px;height:34px;border-radius:50%;background:#F0F2F6;display:grid;place-items:center;font-size:10px;color:#9AA2B3}
.pane-foot{text-align:center;font-size:11px;color:#B0B7C5;margin-top:18px}
/* ---------- game ---------- */
#paneGame{background:linear-gradient(180deg,#FFF6E3 0%,#F5F6F8 42%);padding:16px 16px 20px}
.game-top{display:flex;background:#fff;border-radius:12px;padding:12px 6px;box-shadow:0 4px 14px rgba(27,35,51,.05)}
.gt-item{flex:1;text-align:center}
.gt-item.mid{border-left:1px solid #EEF0F5;border-right:1px solid #EEF0F5}
.gt-item span{display:block;font-size:10.5px;color:#9AA2B3;margin-bottom:4px}
.gt-item b{font-size:19px;font-weight:750;font-variant-numeric:tabular-nums}
.gt-item.mid b{color:#C9962F}
.score-big{text-align:center;padding:16px 0 6px}
.score-big span{display:block;font-size:11.5px;color:#9AA2B3;letter-spacing:1px}
.score-big b{font-size:58px;font-weight:800;color:#C9962F;line-height:1.1;font-variant-numeric:tabular-nums;text-shadow:0 4px 14px rgba(200,150,47,.2)}
.score-big small{font-size:14px;color:#9AA2B3;margin-left:3px}
.tap-zone{position:relative;height:290px;display:flex;flex-direction:column;align-items:center;justify-content:center;user-select:none}
.bill{width:250px;height:140px;border-radius:12px;background:linear-gradient(135deg,#DCEFD9,#A9D2AE 60%,#8FC39A);border:2px solid #7FB98C;box-shadow:0 14px 30px rgba(60,120,70,.28),inset 0 0 0 4px rgba(255,255,255,.35);position:relative;cursor:pointer;overflow:hidden;transition:transform .08s;touch-action:manipulation}
.bill:active{transform:scale(.95) rotate(-1deg)}
.bill::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(45deg,rgba(255,255,255,.10) 0 2px,transparent 2px 7px)}
.bill-top{display:flex;justify-content:space-between;padding:11px 13px 0;font-size:10px;color:#3C6B48;font-weight:600;position:relative;z-index:1}
.bill-top span:last-child{font-size:14px;font-weight:800}
.bill-portrait{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:60px;height:60px;border-radius:50%;border:2px solid rgba(60,107,72,.4);display:grid;place-items:center;font-size:34px;color:#3C6B48;font-weight:800;background:rgba(255,255,255,.28)}
.bill-bottom{position:absolute;bottom:10px;left:0;right:0;text-align:center;font-size:10px;color:#3C6B48;letter-spacing:1px}
.tap-hint{margin-top:22px;font-size:13px;color:#9AA2B3;animation:bob 1.4s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-5px)}}
.floats{position:absolute;inset:0;pointer-events:none}
.plus{position:absolute;font-size:24px;font-weight:800;color:#E8A93A;text-shadow:0 2px 8px rgba(255,255,255,.9);animation:floatUp .8s ease-out forwards}
@keyframes floatUp{to{transform:translateY(-90px) scale(1.4);opacity:0}}
.combo{text-align:center;font-size:12px;color:#D9483B;font-weight:700;height:20px;opacity:0;transition:.2s}
.combo.on{opacity:1}
.mini-rank{background:#fff;border-radius:12px;padding:13px 14px;margin-top:6px}
.mr-hd{font-size:11.5px;font-weight:650;margin-bottom:9px;color:#5E677B}
.mr-row{display:flex;align-items:center;gap:9px;height:30px;font-size:12px;border-bottom:1px dashed #F0F2F6}
.mr-row:last-child{border:0}
.mr-row .r{width:18px;color:#C9962F;font-weight:700}
.mr-row img{width:22px;height:22px;border-radius:50%;object-fit:cover}
.mr-row .n{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mr-row .s{font-weight:700;font-variant-numeric:tabular-nums}
/* ---------- rank ---------- */
#paneRank{background:linear-gradient(180deg,#FFF6E3,#F5F6F8 40%)}
.result-hd{text-align:center;padding:12px 0 20px}
.res-confetti{font-size:38px}
.result-hd h2{font-size:22px;margin:6px 0}
.result-hd p{font-size:12px;color:#9AA2B3}
.my-result{background:#fff;border-radius:15px;padding:16px;display:flex;align-items:center;gap:11px;box-shadow:0 6px 20px rgba(27,35,51,.06);position:relative;flex-wrap:wrap}
.my-result img{width:46px;height:46px;border-radius:50%;object-fit:cover}
.my-result>div:nth-child(2){flex:1;min-width:80px}
.my-result span{font-size:10.5px;color:#9AA2B3;display:block}
.my-result b{font-size:15px}
.my-rank{display:flex;align-items:baseline;gap:2px;margin-right:12px}
.my-rank b{font-size:30px;color:#C9962F;font-weight:800}
.my-score{text-align:right;width:100%;border-top:1px dashed #EEF0F5;padding-top:10px;margin-top:12px}
.my-score b{font-size:28px;color:#C9962F;font-weight:800;font-variant-numeric:tabular-nums}
.my-score span{display:inline;font-size:12px;margin-left:3px}
.win-card{display:flex;align-items:center;gap:12px;margin-top:14px;background:linear-gradient(135deg,#E8503A,#C0322A);border-radius:14px;padding:15px;color:#fff;box-shadow:0 10px 24px rgba(200,50,42,.25)}
.win-card.hide,.lose-card.hide{display:none}
.win-ic{font-size:30px}
.win-txt{flex:1}.win-txt b{display:block;font-size:15px;margin-bottom:4px}.win-txt span{font-size:11px;opacity:.9}
.btn-red{border:0;background:#fff;color:#C0322A;font-size:12.5px;font-weight:700;padding:9px 15px;border-radius:20px;cursor:pointer}
.lose-card{margin-top:14px;background:#fff;border-radius:12px;padding:16px;text-align:center;font-size:12.5px;color:#9AA2B3}
.final-list{margin-top:16px;background:#fff;border-radius:14px;padding:15px}
.fl-hd{font-size:12px;font-weight:650;margin-bottom:10px}
.fr-row{display:flex;align-items:center;gap:10px;height:38px;border-bottom:1px dashed #F0F2F6;font-size:12.5px}
.fr-row:last-child{border:0}
.fr-row .r{width:20px;color:#C9962F;font-weight:700}
.fr-row img{width:26px;height:26px;border-radius:50%;object-fit:cover}
.fr-row .n{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fr-row .s{font-weight:700;font-variant-numeric:tabular-nums}
.fr-row.me{background:#FFFAEE;margin:0 -8px;padding:0 8px;border-radius:7px}
/* ---------- red packet ---------- */
.red-mask{position:absolute;inset:0;z-index:20;background:rgba(20,15,10,.72);display:none;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
.red-mask.on{display:flex}
.red-panel{width:290px;text-align:center;position:relative}
.red-close{position:absolute;right:-4px;top:-52px;width:32px;height:32px;border-radius:50%;border:1px solid rgba(255,255,255,.4);background:transparent;color:#fff;font-size:21px;cursor:pointer}
.red-envelope{background:linear-gradient(160deg,#F0574A,#C9302A);border-radius:16px;padding:22px 18px 26px;box-shadow:0 20px 60px rgba(0,0,0,.4);position:relative;overflow:hidden}
.re-flap{position:absolute;left:0;right:0;top:0;height:86px;background:linear-gradient(180deg,#F4705E,#E24B3E);border-radius:0 0 50% 50%/0 0 34% 34%;box-shadow:0 6px 14px rgba(0,0,0,.12)}
.re-logo{position:relative;width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,#FBE0A0,#E8B34F);margin:6px auto 14px;display:grid;place-items:center;font-size:28px;color:#A4761F;font-weight:800;box-shadow:0 4px 14px rgba(0,0,0,.18)}
.re-title{position:relative;font-size:14px;color:#FFE6BE;margin-bottom:10px}
.re-amount{font-size:44px;font-weight:800;color:#FFE9B0;line-height:1.1;margin-bottom:6px;font-variant-numeric:tabular-nums}
.re-sub{font-size:11.5px;color:rgba(255,255,255,.75);margin-bottom:22px}
.re-open{width:64px;height:64px;border-radius:50%;background:linear-gradient(135deg,#FBE0A0,#E8B34F);color:#A4761F;font-size:23px;font-weight:800;display:grid;place-items:center;margin:0 auto;cursor:pointer;box-shadow:0 8px 22px rgba(0,0,0,.25);animation:pulseRed 1.6s infinite}
@keyframes pulseRed{50%{transform:scale(1.08)}}
.re-open:active{transform:scale(.94)}
.red-done{display:none;background:#fff;border-radius:16px;padding:28px 20px}
.red-panel.done .red-envelope{display:none}
.red-panel.done .red-done{display:block}
.rd-ic{width:54px;height:54px;border-radius:50%;background:#EAF8F1;color:#1E9E6A;display:grid;place-items:center;font-size:28px;margin:0 auto 14px}
.red-done h3{font-size:17px;margin-bottom:9px}
.red-done p{font-size:11.5px;color:#9AA2B3;line-height:1.8;margin-bottom:18px}
.red-done code{background:#F2F4F8;padding:1px 4px;border-radius:3px;font-size:10.5px}
.homebar{height:22px;flex:0 0 22px;display:flex;align-items:center;justify-content:center;background:#F5F6F8}
.homebar::after{content:"";width:126px;height:5px;border-radius:3px;background:#1B2333;opacity:.8}
/* ---------- desktop tip ---------- */
.desk-tip{width:270px;color:#C7CEDD;font-size:12.5px;line-height:1.8}
.desk-tip b{display:block;font-size:16px;color:#fff;margin-bottom:10px}
.desk-tip p{color:#8D98AE;margin-bottom:18px}
.desk-links{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}
.desk-links a{border:1px solid rgba(255,255,255,.16);padding:7px 11px;border-radius:8px;color:#DDE3EF;text-decoration:none;font-size:11.5px}
.desk-links a:hover{border-color:#E8B34F;color:#F5C563}
#btnSwitch{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);color:#DDE3EF;padding:9px 14px;border-radius:8px;cursor:pointer;font-size:11.5px}
#btnSwitch:hover{background:rgba(255,255,255,.14)}
@media(max-width:820px){
  body{padding:0;display:block;background:#F5F6F8}
  .phone{width:100vw;height:100vh;flex:none;border-radius:0;box-shadow:none}
  .desk-tip{display:none}
}
