:root{--felt: #0b3d2e;--felt-2: #0f4d3a;--gold: #e8c26a;--ink: #0d1512;--text: #eaf5ef;--muted: #9fc0b0;--danger: #ff7b72;--ok: #4ade80;--line: rgba(232, 194, 106, .22);--radius: 14px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;min-height:100%;background:radial-gradient(circle at 50% 0%,#14523d 0%,var(--felt) 55%,#061f17 100%);color:var(--text);font-family:PingFang SC,Microsoft YaHei,system-ui,-apple-system,sans-serif}#app{min-height:100dvh;display:flex;justify-content:center}.screen{width:100%;max-width:520px;padding:18px 16px 40px;display:flex;flex-direction:column;gap:14px}.login{justify-content:center;gap:18px;min-height:100dvh}.brand{text-align:center;margin-bottom:8px}.brand-mark{font-size:34px;font-weight:800;letter-spacing:6px;color:var(--gold);text-shadow:0 2px 16px rgba(232,194,106,.25)}.brand-sub{margin:6px 0 0;color:var(--muted);font-size:13px;letter-spacing:2px}.field{display:flex;flex-direction:column;gap:8px;font-size:13px;color:var(--muted)}input,select{width:100%;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:#00000047;color:var(--text);font-size:16px;outline:none}input:focus,select:focus{border-color:var(--gold)}.btn{border:1px solid var(--line);background:#ffffff0f;color:var(--text);padding:11px 18px;border-radius:12px;font-size:15px;font-weight:600;cursor:pointer;transition:transform .06s ease,filter .15s ease}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:linear-gradient(180deg,#f0d089,var(--gold));border-color:transparent;color:#2a1d05}.btn.ghost{background:transparent}.btn.wechat{background:linear-gradient(180deg,#34c05f,#1f9d4a);border-color:transparent;color:#fff;font-weight:700;letter-spacing:1px}.divider{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:12px}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--line)}.switch-line{margin:0;text-align:center;font-size:13px;color:var(--muted)}.switch-line a,.hint a{color:var(--gold);cursor:pointer;text-decoration:none;border-bottom:1px dashed rgba(232,194,106,.5)}.btn.tiny{padding:6px 12px;font-size:13px;border-radius:9px;font-weight:500}.btn.block{width:100%;padding:14px;font-size:16px}.hint{font-size:12px;color:var(--muted);line-height:1.6;text-align:center;margin:0}.error{margin:0;padding:10px 12px;border-radius:10px;background:#ff7b721f;border:1px solid rgba(255,123,114,.35);color:var(--danger);font-size:13px}.empty{color:var(--muted);font-size:13px;text-align:center;padding:18px 0;margin:0}.topbar,.table-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.who{display:flex;align-items:center;gap:10px}.avatar{width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,#1c6b50,#0d3b2c);border:1px solid var(--line);display:grid;place-items:center;font-weight:700;color:var(--gold)}.name{font-weight:700;font-size:15px}.meta{font-size:12px;color:var(--muted)}.wallet{display:grid;grid-template-columns:1fr 1fr;gap:10px}.wallet-item{background:#00000040;border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;display:flex;flex-direction:column;gap:4px}.wallet-item span{font-size:12px;color:var(--muted)}.wallet-item strong{font-size:20px;color:var(--gold);font-variant-numeric:tabular-nums}.card{background:#00000038;border:1px solid var(--line);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:12px}.card h2{margin:0;font-size:14px;font-weight:600;color:var(--muted);display:flex;align-items:center;justify-content:space-between}.row{display:flex;gap:10px}.row input,.row select{flex:1}.room-list{display:flex;flex-direction:column;gap:8px}.room-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:10px;background:#ffffff0a}.room-item-no{font-size:17px;font-weight:700;letter-spacing:3px;color:var(--gold);font-variant-numeric:tabular-nums}.room-item-meta{font-size:12px;color:var(--muted)}.room-no{font-size:16px;font-weight:700}.head-right{display:flex;align-items:center;gap:8px}.badge{font-size:11px;padding:4px 8px;border-radius:999px;border:1px solid var(--line);color:var(--muted)}.badge.open{color:var(--ok);border-color:#4ade8066}.badge.closed{color:var(--danger);border-color:#ff7b7266}.phase-bar{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:var(--radius);background:#00000040;border:1px solid var(--line)}.phase{font-weight:700;font-size:14px}.phase.BETTING{color:var(--gold)}.countdown{font-size:18px;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums}.dealer-tag{margin-left:auto;font-size:12px;color:#2a1d05;background:var(--gold);border-radius:999px;padding:3px 10px;font-weight:700}.members ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.members li{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:10px;background:#ffffff0a;font-size:13px}.seat{width:22px;height:22px;border-radius:50%;background:#e8c26a26;color:var(--gold);display:grid;place-items:center;font-size:11px;font-weight:700}.mname{flex:1}.tags{font-size:11px;color:var(--muted)}.members li.ready .mname:after{content:" ✓";color:var(--ok)}.board{display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px 0}.dice{display:flex;gap:10px}.die{width:52px;height:52px;border-radius:12px;background:linear-gradient(180deg,#fff8e6,#e9d9b4);color:#4a2f0a;display:grid;place-items:center;font-size:20px;font-weight:800;box-shadow:0 4px 14px #00000059}.die.empty{background:#ffffff14;color:var(--muted);box-shadow:none}.settle{font-size:14px;padding:6px 14px;border-radius:999px;background:#0000004d}.settle.win strong{color:var(--ok)}.settle.lose strong{color:var(--danger)}.cap{margin-left:8px;font-size:11px;color:var(--gold)}.confirmbar{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;border:1px solid var(--gold);background:#e8c26a1a}.confirm-text{flex:1;font-size:14px}.confirm-text strong{color:var(--gold);font-size:16px}.area.pending{border-color:var(--gold);box-shadow:0 0 0 2px #e8c26a8c inset}.areas{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.area{position:relative;aspect-ratio:1 / .82;border-radius:14px;border:1px solid var(--line);background:linear-gradient(180deg,#ffffff12,#00000026);color:var(--text);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;transition:transform .06s ease,border-color .15s ease}.area:active:not(:disabled){transform:scale(.96)}.area:disabled{opacity:.45;cursor:not-allowed}.area.on{border-color:var(--gold);box-shadow:0 0 0 1px #e8c26a59 inset}.area-name{font-size:20px;font-weight:800;color:var(--gold)}.area-stake{font-size:13px;color:var(--text);font-variant-numeric:tabular-nums;min-height:18px}.betbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.betbar .label{font-size:12px;color:var(--muted)}.chip{padding:7px 14px;border-radius:999px;border:1px solid var(--line);background:#00000040;color:var(--text);font-size:13px;font-weight:700;cursor:pointer}.chip.on{background:var(--gold);color:#2a1d05;border-color:transparent}.actions{display:flex;gap:10px}.actions .btn{flex:1}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:grid;place-items:center;padding:24px;z-index:10}.overlay-card{width:100%;max-width:320px;background:#0e2a21;border:1px solid var(--line);border-radius:18px;padding:22px;text-align:center;display:flex;flex-direction:column;gap:10px}.overlay-card h2{margin:0;font-size:17px}.overlay-card p{margin:0;color:var(--muted);font-size:13px}.home{gap:14px;padding-top:16px}.home-top{display:flex;align-items:center;gap:12px}.avatar-lg{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#1c6b50,#0d3b2c);border:1px solid var(--line);display:grid;place-items:center;font-size:22px;font-weight:700;color:var(--gold)}.who-block{flex:1;min-width:0}.id-line{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);margin-top:4px}.copy-id{font-size:11px;padding:2px 8px;border-radius:6px;border:1px solid var(--line);background:#0000004d;color:var(--gold);cursor:pointer}.home-wallet{margin-top:2px}.banner{text-align:center;font-size:13px;letter-spacing:2px;color:var(--gold);padding:8px 0;background:linear-gradient(90deg,transparent,rgba(232,194,106,.12),transparent)}.entry-grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:12px;flex:1;min-height:340px}.entry{border:none;border-radius:18px;padding:16px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:4px;cursor:pointer;color:#fff;text-align:left;box-shadow:0 10px 24px #00000059;transition:transform .08s ease}.entry:active{transform:scale(.98)}.entry.gold{grid-row:span 2;background:linear-gradient(160deg,#f7cb63,#dd8c2b);color:#3a2205}.entry.purple{background:linear-gradient(160deg,#a474ff,#6d3fd6)}.entry.blue{background:linear-gradient(160deg,#59b7ff,#2b6fdc)}.entry-icon{font-size:30px;line-height:1}.entry-title{font-size:22px;font-weight:800;letter-spacing:1px}.entry-sub{font-size:12px;opacity:.85}.bottom-nav{display:flex;justify-content:space-around;padding:12px 0 4px;border-top:1px solid var(--line);color:var(--muted);font-size:12px}.page-head{display:flex;align-items:center;justify-content:space-between}.page-head h2{margin:0;font-size:16px}.circle-list{display:flex;flex-direction:column;gap:10px}.circle-card{display:flex;align-items:center;justify-content:space-between;padding:14px;border-radius:14px;border:1px solid var(--line);background:#00000040;color:var(--text);text-align:left;cursor:default}.circle-actions{display:flex;align-items:center;gap:8px}.tables-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.table-card{aspect-ratio:1 / .92;border-radius:14px;border:1px solid var(--line);background:linear-gradient(180deg,#ffffff12,#0003);color:var(--text);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer;padding:6px}.table-no{font-size:16px;font-weight:800;color:var(--gold)}.table-meta{font-size:11px;color:var(--muted)}.table-status{font-size:11px;color:var(--ok)}.table-card.add{border-style:dashed}.table-card.add .table-no{font-size:24px}.request-row{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.06);font-size:13px}.bean-val{color:var(--gold);font-weight:700;min-width:48px;text-align:right;font-variant-numeric:tabular-nums}.req-actions{display:flex;gap:6px}.notice{margin:0;padding:10px 12px;border-radius:10px;background:#4ade801f;border:1px solid rgba(74,222,128,.35);color:var(--ok);font-size:13px}.log-list{display:flex;flex-direction:column;gap:8px}.log-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:#00000038;font-size:13px}.log-main{display:flex;flex-direction:column;gap:2px}.log-name{font-weight:600}.log-reason{color:var(--muted);font-size:11px}.log-right{display:flex;flex-direction:column;align-items:flex-end;gap:2px;font-variant-numeric:tabular-nums}.gain{color:var(--ok);font-weight:700}.loss{color:var(--danger);font-weight:700}.log-bal,.log-time{color:var(--muted);font-size:11px}.filter-select{width:100%;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:#00000047;color:var(--text);font-size:14px}.filter-row{display:flex;gap:8px}.filter-row .filter-select{flex:1}.prepare-mask{position:fixed;left:12px;right:12px;bottom:96px;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:50}.prepare-mask[hidden]{display:none}.prepare-text{padding:18px 22px;border-radius:16px;background:#14281eeb;border:1px solid var(--gold);color:var(--text);text-align:center;font-size:15px;line-height:1.6}.prepare-count{color:var(--gold);font-weight:800;font-size:20px}.dice-mask{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:#0000009e;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:60}.dice-row{display:flex;gap:14px}.die.rolling{width:64px;height:64px;border-radius:12px;background:#f3e7c8;color:#8a6b2f;font-size:30px;font-weight:800;display:flex;align-items:center;justify-content:center;animation:shake .35s infinite}.dice-hint{color:var(--gold);font-size:16px;letter-spacing:2px}@keyframes shake{0%{transform:translateY(0) rotate(0)}25%{transform:translateY(-8px) rotate(-8deg)}50%{transform:translateY(0) rotate(0)}75%{transform:translateY(8px) rotate(8deg)}to{transform:translateY(0) rotate(0)}}.phase-banner{position:fixed;left:50%;top:42%;transform:translate(-50%,-50%);padding:16px 28px;border-radius:16px;background:#0f2319eb;border:2px solid var(--gold);color:var(--gold);font-size:20px;font-weight:800;letter-spacing:2px;z-index:55;animation:bannerPop .35s ease-out}@keyframes bannerPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.8)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.die.face{width:64px;height:64px;border-radius:12px;background:#f3e7c8;color:#5a3d14;font-size:26px;font-weight:800;display:flex;align-items:center;justify-content:center;animation:bannerPop .3s ease-out}.stats-panel{margin:12px 0;padding:14px 16px;border-radius:14px;border:1px solid var(--gold);background:#0f2319e6}.stats-panel h3{margin:0 0 10px;font-size:15px;color:var(--gold)}.stats-row{display:flex;justify-content:space-between;padding:4px 0;font-size:14px}
