:root{--bg: #12101a;--surface: #1c1830;--surface-2: #241f3c;--line: #322b4e;--text: #ece9f6;--text-soft: #a79fc4;--gold: #f5c451;--gold-2: #e0952c;--win: #ff5a5a;--radius: 16px}*{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%;background:radial-gradient(1200px 600px at 50% -10%,#241f3c 0%,var(--bg) 60%);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang TC,Microsoft JhengHei,sans-serif;-webkit-font-smoothing:antialiased;overscroll-behavior:none}#app{min-height:100dvh;display:flex;flex-direction:column;max-width:720px;margin:0 auto}.boot{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--text-soft);padding:40px 24px;text-align:center}.boot h2{color:var(--text);margin:4px 0}.boot p{margin:2px 0}.topbar{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line);background:#1c1830b3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);position:sticky;top:0;z-index:5}.brand{display:flex;align-items:center;gap:10px}.logo{font-size:26px}.brand-name{font-weight:700;letter-spacing:.5px}.brand-sub{font-size:11px;color:var(--text-soft)}.wallet{margin-left:auto;text-align:right}.wallet-label{font-size:11px;color:var(--text-soft)}.wallet-amount{font-weight:700;color:var(--gold);font-variant-numeric:tabular-nums}.btn-back{background:none;border:0;color:var(--text-soft);font-size:15px;cursor:pointer;padding:4px 6px}.game-title{display:flex;flex-direction:column;font-weight:600}.title-ref{font-size:11px;color:var(--text-soft);font-weight:400}.lobby{flex:1;padding:16px}.section-head{display:flex;align-items:baseline;gap:8px;margin:8px 2px 12px}.section-head h2{font-size:16px;margin:0}.count{font-size:12px;color:var(--text-soft)}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.game-card{position:relative;display:flex;flex-direction:column;gap:4px;text-align:left;padding:14px;border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(160deg,var(--surface-2),var(--surface));color:inherit;font:inherit;cursor:pointer;transition:transform .12s,border-color .12s}.game-card:hover{transform:translateY(-2px);border-color:var(--gold-2)}.game-card.is-wip{opacity:.62}.badge-wip{position:absolute;top:8px;left:8px;font-size:10px;padding:2px 6px;border-radius:999px;background:#f5c45129;color:var(--gold)}.card-emoji{font-size:34px;line-height:1.1}.card-name{font-weight:700}.card-sub{font-size:11px;color:var(--gold);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-desc{font-size:12px;color:var(--text-soft);line-height:1.5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.card-tags{display:flex;gap:4px;flex-wrap:nowrap;overflow:hidden}.tag{font-size:10px;padding:2px 6px;border-radius:6px;background:#ffffff0f;color:var(--text-soft);white-space:nowrap}.card-ref{font-size:10px;color:#7d76a0}.card-meta{margin-top:auto;padding-top:8px;display:flex;gap:10px;font-size:11px;color:var(--text-soft)}.empty{text-align:center;padding:48px 20px;color:var(--text-soft)}.empty-emoji{font-size:56px}.empty h2{color:var(--text);margin:12px 0 6px;font-size:18px}.empty p{margin:4px 0;font-size:13px;line-height:1.7}.empty-next{margin:22px auto 0;max-width:420px;text-align:left;border:1px dashed var(--line);border-radius:var(--radius);padding:14px 16px;background:#ffffff05}.next-title{font-size:11px;color:var(--gold);letter-spacing:1px}.next-name{font-weight:700;color:var(--text);margin:2px 0 4px}.next-desc{font-size:12px;line-height:1.6}.next-note{font-size:11px;color:#7d76a0;margin-top:6px}.dev-hint{font-size:11px;color:#7d76a0;margin-top:18px}.gamewrap{flex:1;display:flex;flex-direction:column;min-height:0;padding:10px 12px 0}.stage{flex:1;min-height:0;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line)}.stage canvas{display:block;width:100%;height:100%}.winline{text-align:center;padding:10px 0 4px;font-size:15px;color:var(--text-soft);min-height:22px}.winline.win{color:var(--win);font-weight:700}.controls{padding:8px 12px calc(12px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.controls .row{display:flex;align-items:center;gap:8px}.row-sub{justify-content:space-between}.bet{display:flex;flex-direction:column;align-items:center;min-width:84px;padding:4px 10px;border-radius:10px;background:var(--surface)}.bet small{font-size:10px;color:var(--text-soft)}.bet b{font-variant-numeric:tabular-nums}.btn-step{width:44px;height:44px;border-radius:12px;font-size:20px;border:1px solid var(--line);background:var(--surface);color:var(--text);cursor:pointer}.btn-spin{flex:1;height:52px;border:0;border-radius:14px;cursor:pointer;font-size:18px;font-weight:800;letter-spacing:2px;color:#3a2500;background:linear-gradient(180deg,var(--gold),var(--gold-2))}.btn-spin[disabled]{opacity:.55}.btn-ghost{border:1px solid var(--line);background:none;color:var(--text-soft);border-radius:10px;padding:6px 12px;font-size:13px;cursor:pointer}.btn-ghost[disabled]{opacity:.4}.skin-tag{font-size:11px;color:#7d76a0}.foot{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;padding:16px;font-size:11px;color:#6b648c}.toast{position:fixed;left:50%;bottom:84px;transform:translate(-50%,16px);background:#2b2544;border:1px solid var(--line);color:var(--text);padding:10px 16px;border-radius:12px;font-size:13px;opacity:0;transition:opacity .25s,transform .25s;z-index:50;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%)}.toast.warn{border-color:#6b3550;color:#ffb4b4}@media (max-height: 700px){.foot{display:none}.winline{padding:6px 0 2px}}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#080610b8;display:flex;align-items:center;justify-content:center;padding:24px}.modal-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;max-width:420px;width:100%;max-height:78dvh;overflow-y:auto}.modal-box h3{margin:0 0 10px;font-size:16px}.pt-note{font-size:11px;color:var(--text-soft);line-height:1.6;margin:8px 0}.pt-row{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.05);font-size:13px}.pt-name{color:var(--text)}.pt-pay{color:var(--gold);font-variant-numeric:tabular-nums;font-size:12px}
