:root{--bg:#f6f7fb;--card:#fff;--card2:#eef0f6;--ink:#0f172a;--ink2:#334155;--muted:#5b6475;--line:#e3e6ee;
  --pri:#3b5bdb;--pri-soft:#e7ecff;--ok:#0f8a5f;--ok-soft:#e3f6ee;--warn:#9a5b00;--warn-soft:#fff3dc;--track:#e6e9f2;color-scheme:light}
html[data-theme=dark]{--bg:#0b1020;--card:#151b2e;--card2:#1e2640;--ink:#eef1f8;--ink2:#cdd3e1;--muted:#9aa3b8;--line:#28314d;
  --pri:#8ea6ff;--pri-soft:#232c4f;--ok:#4cd39b;--ok-soft:#133328;--warn:#ffc061;--warn-soft:#3a2c12;--track:#262f4a;color-scheme:dark}
*{box-sizing:border-box;margin:0}
html,body{background:var(--bg);color:var(--ink);font:17px/1.45 -apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,system-ui,sans-serif;-webkit-text-size-adjust:100%}
button,input{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none}
a{color:inherit;text-decoration:none}
.top{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;max-width:520px;margin:0 auto;
  padding:calc(12px + env(safe-area-inset-top)) calc(18px + env(safe-area-inset-right)) 12px calc(18px + env(safe-area-inset-left));background:var(--bg)}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:20px}
.logo{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--pri);color:#fff;font-weight:900}
html[data-theme=dark] .logo{color:#0b1020}
.iconbtn{width:42px;height:42px;border-radius:12px;background:var(--card);border:1px solid var(--line);font-size:19px}
main{max-width:520px;margin:0 auto;padding:4px calc(18px + env(safe-area-inset-right)) calc(40px + env(safe-area-inset-bottom)) calc(18px + env(safe-area-inset-left))}
h1{font-size:28px;line-height:1.2;margin:6px 0 4px}
.sub{color:var(--muted);font-size:16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:18px;margin-top:14px}
.tag{display:inline-block;font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;padding:3px 8px;border-radius:999px;background:var(--warn-soft);color:var(--warn);vertical-align:middle}
.tag.live{background:var(--ok-soft);color:var(--ok)}
.price{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;color:var(--ink2);font-size:16px}
.price b{color:var(--ink);font-size:18px}
.kid{display:block}
.kidhead{display:flex;align-items:center;gap:14px}
.av{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;font-size:28px;flex:none}
.kname{font-size:22px;font-weight:800;line-height:1.2}
.wallet{font-size:14px;color:var(--muted)}
.chev{margin-left:auto;font-size:26px;color:var(--muted)}
.big{font-size:19px;margin:14px 0 8px}
.big b{font-size:26px}
.bar{height:16px;border-radius:999px;background:var(--track);overflow:hidden}
.bar i{display:block;height:100%;border-radius:999px;background:var(--pri)}
.bar.done i{background:var(--ok)}
.match{margin-top:12px;font-size:17px;color:var(--ink2)}
.match b{color:var(--ink)}
.usd{color:var(--muted);font-size:15px}
.done-pill{display:inline-block;margin-top:12px;padding:6px 12px;border-radius:999px;background:var(--ok-soft);color:var(--ok);font-weight:800;font-size:15px}
.fine{font-size:14px;color:var(--muted);margin-top:16px;line-height:1.5}
.back{display:inline-flex;align-items:center;gap:6px;font-weight:700;color:var(--pri);padding:6px 0;font-size:17px}
.ringwrap{display:flex;align-items:center;gap:18px}
.ring{position:relative;width:132px;height:132px;flex:none}
.ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.ring .num{position:absolute;inset:0;display:grid;place-items:center;text-align:center;line-height:1.1}
.ring .num b{font-size:30px;display:block}
.ring .num span{font-size:14px;color:var(--muted)}
.stat{font-size:17px;color:var(--ink2)} .stat b{display:block;font-size:24px;color:var(--ink)}
.stat + .stat{margin-top:10px}
.btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:16px;border-radius:16px;background:var(--pri);color:#fff;font-weight:800;font-size:18px;margin-top:14px}
html[data-theme=dark] .btn{color:#0b1020}
.btn.sec{background:var(--pri-soft);color:var(--pri)}
.btn.ok{background:var(--ok)} html[data-theme=dark] .btn.ok{color:#0b1020}
.btn:active{transform:scale(.99)}
h2{font-size:20px;margin-bottom:6px}
.hist{list-style:none;padding:0}
.hist li{display:flex;align-items:center;gap:10px;padding:12px 0;border-top:1px solid var(--line);font-size:17px}
.hist li:first-child{border-top:0}
.hist .amt{font-weight:800}
.hist .d{color:var(--muted);font-size:15px}
.hist .m{margin-left:auto;text-align:right;color:var(--ok);font-weight:700;font-size:15px}
.hist .x{width:34px;height:34px;border-radius:10px;color:var(--muted);font-size:16px;flex:none}
.empty{color:var(--muted)}
.qrbox{display:flex;flex-direction:column;align-items:center;text-align:center}
.qr{position:relative;width:200px;height:200px;padding:12px;background:#fff;border-radius:16px;border:1px solid var(--line);margin:8px 0 10px}
.qr svg{width:100%;height:100%;display:block;opacity:.9}
.qr .stamp{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(-14deg);background:#fff;color:#b42318;border:3px solid #b42318;border-radius:10px;padding:4px 10px;font-weight:900;font-size:17px;letter-spacing:.06em}
.addr{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:15px;background:var(--card2);padding:8px 12px;border-radius:10px;word-break:break-all}
.warnline{margin-top:10px;color:var(--warn);font-weight:700;font-size:15px}
.cash{display:flex;gap:12px;align-items:flex-start;font-size:17px;color:var(--ink2)} .cash .e{font-size:30px;line-height:1}
.cash b{color:var(--ink)}
.party{text-align:center;background:linear-gradient(160deg,var(--ok-soft),var(--card) 70%);border-color:var(--ok)}
.party .e{font-size:54px;line-height:1}
.party h2{font-size:26px;margin:8px 0 4px}
.party .mt{font-size:21px} .party .mt b{font-size:30px;color:var(--ok)}
.party .choice{margin-top:12px;font-weight:800;color:var(--ok)}
/* bottom sheet (simple vertical stack) */
.overlay{position:fixed;inset:0;z-index:20;background:rgba(5,8,18,.5);display:flex;align-items:flex-end;justify-content:center}
.sheet{width:100%;max-width:520px;max-height:calc(100dvh - env(safe-area-inset-top) - 16px);overflow-y:auto;background:var(--card);color:var(--ink);border-radius:22px 22px 0 0;
  padding:18px calc(18px + env(safe-area-inset-right)) calc(22px + env(safe-area-inset-bottom)) calc(18px + env(safe-area-inset-left))}
.shead{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.shead h2{margin:0}
label{display:block;font-weight:700;margin-top:14px;font-size:16px}
.inp{display:block;width:100%;margin-top:6px;padding:14px;border-radius:14px;border:1px solid var(--line);background:var(--card2);font-size:20px}
.inp:focus{outline:3px solid var(--pri-soft);border-color:var(--pri)}
.hint{font-size:15px;color:var(--muted);margin-top:8px;min-height:22px}
.hint.err{color:#c0362c} html[data-theme=dark] .hint.err{color:#ff8a80}
.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translateX(-50%) translateY(20px);opacity:0;pointer-events:none;
  background:var(--ink);color:var(--bg);padding:12px 18px;border-radius:14px;font-weight:700;font-size:16px;transition:.2s;max-width:90vw;text-align:center;z-index:30}
.toast.on{opacity:1;transform:translateX(-50%)}
/* weekly bonus */
.bonus{border-color:var(--pri)}
.bhead{display:flex;gap:12px;align-items:flex-start}
.bemoji{font-size:34px;line-height:1}
.bsub{margin-top:10px;color:var(--ink2)}
.bkids{list-style:none;padding:0;margin-top:8px}
.bkids li{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line)}
.bkids .av{width:42px;height:42px;font-size:22px}
.bk{flex:1;display:flex;flex-direction:column;line-height:1.25} .bk b{font-size:18px}
.bst{font-size:15px;color:var(--muted)} .bst.won{color:var(--ok);font-weight:700} .bst.lost{color:var(--warn)}
.bgo{background:var(--pri);color:#fff;font-weight:800;padding:10px 16px;border-radius:12px;font-size:16px}
html[data-theme=dark] .bgo{color:#0b1020}
.owed{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-top:10px;padding:12px;border-radius:14px;background:var(--card2);font-size:16px}
.owed b{font-size:17px;text-align:right}
.linkbtn{color:var(--pri);font-weight:700;font-size:15px;padding:8px 0}
.demo{display:flex;flex-wrap:wrap;gap:4px 16px;align-items:center;margin-top:4px}
.kicker{color:var(--muted);font-size:15px;font-weight:700;margin-top:6px}
.note{margin-top:12px;padding:12px 14px;border-radius:14px;background:var(--warn-soft);color:var(--warn);font-weight:700;font-size:16px}
.watch{display:flex;gap:14px;align-items:center}
.play{width:46px;height:46px;border-radius:50%;background:#e02424;color:#fff;display:grid;place-items:center;font-size:18px;flex:none}
.lesson p{font-size:18px;line-height:1.6;margin-top:12px;color:var(--ink)}
.lesson p:first-child{margin-top:0}
.lesson h3{font-size:20px;margin-top:22px}
.src summary{font-weight:800;cursor:pointer}
.src ul{margin-top:8px;padding-left:18px} .src li{margin-top:8px;font-size:15px} .src a{color:var(--pri);text-decoration:underline;word-break:break-word}
.qprog{display:flex;gap:6px;margin-top:10px} .qprog i{flex:1;height:8px;border-radius:9px;background:var(--track)} .qprog i.on{background:var(--pri)} .qprog i.cur{background:var(--pri);opacity:.5}
.qnum{margin-top:14px;color:var(--muted);font-weight:700}
.qtext{font-size:25px;margin:6px 0 10px}
.opts{display:flex;flex-direction:column;gap:10px}
.opt{text-align:left;padding:16px;border-radius:16px;border:2px solid var(--line);background:var(--card);font-size:18px;font-weight:600;line-height:1.35}
.opt.sel{border-color:var(--pri);background:var(--pri-soft)}
.btn[disabled]{opacity:.45;cursor:default}
.win .wintext{font-size:19px;font-weight:700;margin-top:10px}
.lostcard{text-align:center} .lostcard .e{font-size:50px;line-height:1}
.failmsg{font-size:21px;font-weight:700;line-height:1.45;margin:12px 0 6px}
.wronglist{margin:8px 0 0;padding-left:20px} .wronglist li{margin-top:8px;font-weight:600;color:var(--ink)}
.bonusline{color:var(--muted);font-size:15px;margin-bottom:6px}
.btag{display:inline-block;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding:2px 7px;border-radius:999px;background:var(--pri-soft);color:var(--pri);vertical-align:middle}
.hist + .hist{border-top:1px solid var(--line)}
/* receipt flow */
.rcpt{margin-top:14px;padding:12px 14px;border-radius:14px;background:var(--card2);color:var(--ink2);font-size:16px;font-weight:600}
.verified{color:var(--ok);font-size:14px;font-weight:700;margin-top:2px}
.verified .note2{color:var(--muted);font-weight:500}

/* shared-sync additions */
.dadbar{display:flex;align-items:center;gap:10px;margin:2px 0 8px;font-weight:700;color:var(--pri)}
.dadbar .linkbtn{margin-left:auto}
.sync{margin:4px 0 10px;font-size:14px;color:var(--muted)}
.sync.err{color:var(--warn,#c2410c)}
.seg{display:flex;gap:4px;margin-top:14px;padding:4px;border-radius:14px;background:var(--card2);border:1px solid var(--line)}
.segb{flex:1;padding:10px 0;border-radius:10px;font-weight:700;font-size:16px;color:var(--muted);background:transparent}
.segb.on{background:var(--pri);color:#fff}
.segb:disabled{opacity:.45}
.segnote{font-size:14px;color:var(--muted);margin:6px 0 0}
.conv{font-size:17px;font-weight:700;color:var(--pri);margin:8px 0 0;min-height:0}
.conv:empty{display:none}
.qr.real{width:232px;height:232px;padding:0;overflow:hidden}
.qr.real svg{opacity:1}
.mono{font-family:ui-monospace,Menlo,Consolas,monospace}
.addr.mono{font-size:15px;line-height:1.5;max-width:100%;user-select:all;-webkit-user-select:all}
.addr.grouped{display:flex;flex-wrap:wrap;gap:4px 8px;margin:8px 0;font-size:17px}
.addr.grouped .edge{font-weight:800;color:var(--pri)}
.btn.copy{margin-top:10px}
.noaddr{font-size:17px;font-weight:700;color:var(--muted);background:var(--card2);border-radius:14px;padding:18px 14px;margin:8px 0;width:100%}
textarea.inp{font-size:16px;resize:none;word-break:break-all}
.confirm p{font-weight:700;margin:12px 0 0}
.linkbtn.danger{color:#c0362c;display:block;margin:10px auto 0}
