:root{--bg-0: #141518;--bg-1: #1d202e;--bg-2: #161a28;--bg-3: #1f2436;--gold: #ffc600;--gold-focus: #f9cb0e;--gold-soft: rgba(255, 198, 0, .16);--gold-hairline: rgba(255, 198, 0, .32);--fg-1: #ffffff;--fg-2: #d1d5db;--fg-3: #9ca3af;--fg-4: #6b7280;--line-1: #2a2f3e;--line-2: #374151;--good: #34d399;--good-soft: rgba(52, 211, 153, .14);--warn: #f59e0b;--warn-soft: rgba(245, 158, 11, .14);--bad: #f87171;--bad-soft: rgba(248, 113, 113, .14);--font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-num: ui-monospace, "SFMono-Regular", Menlo, Monaco, Consolas, monospace;--ease-out: cubic-bezier(.2, .8, .2, 1);--nav-h: 56px}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:#090a0d;color:var(--fg-2);font-family:var(--font-sans);letter-spacing:0}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--gold-focus);outline-offset:2px}.num{font-family:var(--font-num);font-variant-numeric:tabular-nums}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app-stage{min-height:100vh;display:grid;place-items:start center;padding:0;background:#090a0d}.phone{width:min(100vw,390px);min-height:100vh;background:var(--bg-0);color:var(--fg-2);overflow-x:hidden;position:relative}.topbar{position:sticky;top:0;z-index:4;height:56px;display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line-1);background:var(--bg-0)}.brand-mark{position:relative;width:28px;height:28px;border-radius:9px;background:linear-gradient(150deg,var(--gold-focus),var(--gold));flex:none}.brand-mark:after{content:"";position:absolute;inset:8px;border-radius:999px;border:2px solid rgba(20,21,24,.92)}.brand-name{color:var(--fg-1);font-size:16px;font-weight:800}.topbar-spacer{flex:1}.balance{display:grid;gap:2px;justify-items:end;line-height:1.05}.balance-label{color:var(--fg-4);font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.balance-value{color:var(--gold);font-size:14px;font-weight:800}.balance-queued{color:var(--warn);font-size:10px;font-weight:800}.lang-pill,.tab,.odd,.stake-button,.primary,.secondary,.text-action{min-height:44px}.lang-pill{border:1px solid var(--line-1);border-radius:999px;background:var(--bg-2);color:var(--fg-2);padding:0 10px;font-size:11px;font-weight:800;letter-spacing:.08em}.tabs{position:fixed;left:50%;bottom:0;transform:translate(-50%);width:min(100vw,390px);height:var(--nav-h);display:flex;border-top:1px solid var(--line-1);background:#141518f5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:4}.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:0;background:transparent;color:var(--fg-3);font-size:10px;font-weight:700;letter-spacing:.02em;padding:8px 4px}.tab-icon{color:inherit}.tab-active{color:var(--gold)}.body{min-height:calc(100vh - 56px - var(--nav-h));padding-bottom:calc(var(--nav-h) + 24px)}.section-title{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:14px 14px 6px;color:var(--fg-3);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.freshness{color:var(--fg-4);font-weight:600;letter-spacing:0;text-transform:none}.match-row,.bet-row,.settings-row,.empty-state{border:1px solid var(--line-1);background:var(--bg-2);border-radius:8px;margin:8px 12px}.match-row{padding:12px}.row-meta,.bet-meta{display:flex;justify-content:space-between;gap:8px;color:var(--fg-4);font-size:11px;font-weight:650}.teams{display:flex;align-items:center;gap:6px;margin-top:6px;color:var(--fg-1);font-size:15px;font-weight:800}.score{margin-left:auto;color:var(--fg-1);font-family:var(--font-num)}.odds-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}.odd{border:1px solid var(--line-2);border-radius:8px;background:var(--bg-1);color:var(--fg-2);display:grid;place-items:center;gap:2px;padding:6px 2px}.odd-label{color:var(--fg-4);font-size:10px;font-weight:800}.odd-value{color:var(--fg-1);font-size:14px;font-weight:850}.odd-selected{border-color:var(--gold);background:var(--gold-soft)}.odd-selected .odd-label,.odd-selected .odd-value{color:var(--gold)}.odd-disabled{opacity:.4}.closed-row{margin-top:10px;padding:10px;border:1px dashed var(--line-2);border-radius:8px;color:var(--fg-3);text-align:center;font-size:12px;font-weight:700}.pill{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:3px 8px;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.pill-accepted{background:var(--gold-soft);color:var(--gold)}.pill-live{background:var(--bg-3);color:var(--fg-2)}.pill-live .pulse-dot{background:var(--good)}.pill-pending,.pill-queued{background:var(--warn-soft);color:var(--warn)}.pill-won{background:var(--good-soft);color:var(--good)}.pill-bad,.pill-lost{background:var(--bad-soft);color:var(--bad)}.pill-void{background:var(--bg-3);color:var(--fg-3)}.bet-result{font-weight:800}.bet-result-won{color:var(--good)}.bet-result-lost{color:var(--bad)}.bet-result-void{color:var(--fg-2)}.pulse-dot{width:6px;height:6px;border-radius:999px;background:currentColor;animation:pulse 1.5s var(--ease-out) infinite}.skeleton{height:86px;border-radius:8px;margin:8px 12px;background:linear-gradient(90deg,var(--bg-2),var(--bg-3),var(--bg-2));background-size:200% 100%;animation:shimmer 1.2s linear infinite}.banner{display:flex;align-items:center;gap:10px;margin:10px 12px;padding:10px 12px;border-radius:8px;font-size:13px;font-weight:700}.banner-bad{border:1px solid rgba(248,113,113,.36);background:var(--bad-soft);color:var(--fg-1)}.banner-warn{border:1px solid rgba(245,158,11,.38);background:var(--warn-soft);color:var(--fg-1)}.banner-icon{flex:none}.banner-warn .banner-icon{color:var(--warn)}.banner-bad .banner-icon{color:var(--bad)}.cached-banner{align-items:flex-start}.settled-cache-note{margin:0 12px 12px;padding:9px 12px;border:1px solid rgba(245,158,11,.26);border-radius:8px;background:#f59e0b14;color:var(--fg-2);font-size:12px;font-weight:700;line-height:1.35}.banner-subtext{display:block;color:var(--fg-3);font-size:12px;font-weight:600;line-height:1.35;margin-top:2px}.retry{margin-left:auto;color:var(--gold)}.retry-button{flex:0 0 auto;border:0;background:transparent;font:inherit;cursor:pointer;padding:2px 0}.empty-state{padding:28px 18px;text-align:center}.empty-glyph{width:48px;height:48px;margin:0 auto 14px;display:grid;place-items:center;border-radius:999px;border:1px solid var(--line-2);background:var(--bg-1);color:var(--fg-3)}.empty-glyph-bad{border-color:#f8717166;background:var(--bad-soft);color:var(--bad)}.error-state{display:grid;justify-items:center}.error-retry{width:auto;min-width:160px;margin:18px auto 0;padding:0 24px;min-height:44px}.empty-title{color:var(--fg-1);font-size:16px;font-weight:800}.empty-body{color:var(--fg-3);font-size:13px;line-height:1.45;margin-top:6px}.text-action{margin-top:14px;border:0;background:transparent;color:var(--gold);font-weight:800}.sheet-scrim{position:fixed;left:50%;top:0;bottom:var(--nav-h);transform:translate(-50%);width:min(100vw,390px);background:#090a0d80;pointer-events:none;z-index:3;animation:fadeIn .2s var(--ease-out)}.sheet{position:fixed;left:50%;bottom:var(--nav-h);width:min(100vw,390px);transform:translate(-50%);border:1px solid var(--line-2);border-radius:16px 16px 0 0;background:var(--bg-2);box-shadow:0 14px 42px #00000080;padding:10px 14px 16px;animation:slideUp .24s var(--ease-out);z-index:6}.grab{width:40px;height:4px;margin:0 auto 12px;border-radius:999px;background:var(--line-2)}.sheet-head,.sheet-sub,.confirm-row,.cta-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.sheet-title,.confirm-title{color:var(--fg-1);font-size:16px;font-weight:850}.sheet-sub{color:var(--fg-3);font-size:13px;margin-top:2px}.odds-token{color:var(--fg-1);font-family:var(--font-num);font-weight:850}.stake-row{display:grid;grid-template-columns:62px minmax(0,1fr) 62px;gap:8px;margin-top:14px}.stake-button,.stake-value{border-radius:8px;border:1px solid var(--line-2);background:var(--bg-1);color:var(--fg-1);display:grid;place-items:center;font-weight:800}.stake-value{min-height:44px;font-family:var(--font-num)}.stake-input{display:flex;align-items:center;justify-content:center;gap:4px;padding:0 10px}.stake-currency{color:var(--fg-3);font-size:12px;font-weight:850}.stake-number{width:100%;min-width:0;border:0;background:transparent;color:var(--fg-1);font-weight:850;text-align:right}.stake-invalid{border-color:var(--bad);background:var(--bad-soft)}.inline-error{margin-top:8px;color:var(--bad);font-size:12px;font-weight:700}.payout-row{display:flex;justify-content:space-between;gap:10px;margin-top:10px;color:var(--fg-3);font-size:13px}.payout-row .value{color:var(--gold);font-family:var(--font-num);font-weight:850}.primary,.secondary{border-radius:8px;border:1px solid transparent;padding:0 14px;font-weight:850}.primary{width:100%;margin-top:14px;background:var(--gold);color:var(--bg-1)}.primary:disabled{opacity:.45}.secondary{background:transparent;border-color:var(--line-2);color:var(--fg-1)}.icon-button{display:grid;place-items:center;width:44px;height:44px;flex:none;border-radius:8px;border:1px solid var(--line-2);background:transparent;color:var(--fg-2)}.confirm{display:grid;gap:12px}.confirm-icon{width:38px;height:38px;border-radius:999px;display:grid;place-items:center;background:var(--gold-soft);color:var(--gold);font-weight:900}.confirm-icon-warn{background:var(--warn-soft);color:var(--warn)}.confirm-row{padding:8px 0;border-bottom:1px solid var(--line-1);color:var(--fg-3);font-size:13px}.confirm-row strong{color:var(--fg-1);font-weight:800}.confirm-id{color:var(--fg-4);font-size:11px}.cta-row{margin-top:2px}.cta-row .primary,.cta-row .secondary{flex:1;margin-top:0}.bet-row{padding:12px}.bet-head{display:flex;align-items:start;justify-content:space-between;gap:8px}.bet-match,.settings-label{color:var(--fg-1);font-size:14px;font-weight:800}.bet-outcome,.settings-sub{margin-top:3px;color:var(--fg-3);font-size:12px}.bet-nums{display:flex;justify-content:space-between;gap:10px;margin-top:10px;color:var(--fg-3);font-size:12px}.bet-nums strong{color:var(--gold)}.ledger-detail{margin-top:10px;border-top:1px solid var(--line-1);color:var(--fg-3);font-size:12px}.ledger-detail summary{min-height:34px;display:flex;align-items:center;justify-content:space-between;color:var(--gold);font-weight:800;cursor:pointer;list-style:none}.ledger-detail summary::-webkit-details-marker{display:none}.ledger-detail summary:after{content:"+";width:20px;height:20px;display:grid;place-items:center;border:1px solid var(--line-2);border-radius:999px;color:var(--fg-2);font-family:var(--font-num);font-weight:800}.ledger-detail[open] summary:after{content:"-"}.ledger-id{margin-bottom:8px;color:var(--fg-4);font-family:var(--font-num);font-size:11px;font-weight:800}.ledger-line{display:flex;justify-content:space-between;gap:10px;padding:6px 0}.ledger-line strong{color:var(--fg-1)}.ledger-empty{padding:6px 0 2px;color:var(--fg-4)}.settings-section{padding:18px 14px 4px;color:var(--fg-4);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.settings-row{width:calc(100% - 24px);min-height:56px;padding:12px;display:flex;justify-content:space-between;gap:12px;align-items:center;color:inherit;text-align:left}.settings-row-button{cursor:pointer}.settings-value{color:var(--fg-2);font-size:13px;font-weight:750;text-align:right}.settings-value.gold{color:var(--gold)}.readiness-panel{width:calc(100% - 24px);margin:8px 12px;padding:12px;border:1px solid var(--gold-hairline);border-radius:8px;background:var(--bg-2)}.readiness-title{margin:0;color:var(--fg-1);font-size:15px;font-weight:850}.readiness-intro{margin:4px 0 0;color:var(--fg-3);font-size:12px;line-height:1.4}.readiness-list{list-style:none;display:grid;gap:8px;margin:12px 0 0;padding:0}.readiness-list li{display:grid;grid-template-columns:10px minmax(0,1fr);gap:8px;align-items:start;color:var(--fg-2);font-size:12px;font-weight:650;line-height:1.38}.readiness-dot{width:6px;height:6px;margin-top:5px;border-radius:999px;background:var(--gold)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.38}}@keyframes shimmer{to{background-position:-200% 0}}@keyframes slideUp{0%{transform:translate(-50%) translateY(120%)}to{transform:translate(-50%) translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;transition-duration:1ms!important}}
