:root{
  --ink:#0b0705;--card:#1b1310;--card-2:#221812;
  --gold:#d9ac63;--gold-soft:#e8cd9a;--gold-dim:#8a6c3f;
  --red:#c0392b;--red-soft:#e05a45;--green-soft:#71c79b;
  --text:#e9e1d5;--muted:#9b8e7e;--faint:#6d6155;
  --line:rgba(217,172,99,.22);--line-2:rgba(217,172,99,.12);
  --serif:"Songti SC","STSong","Source Han Serif SC","Noto Serif SC",SimSun,serif;
  --sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  --tabh:calc(56px + env(safe-area-inset-bottom));
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{background:var(--ink);color:var(--text);font-family:var(--sans);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}
button,input,select{font-family:inherit;font-size:inherit;color:inherit}
button{background:none;border:none;cursor:pointer}
input{background:none;border:none;outline:none;width:100%}
[hidden]{display:none!important}
.wrap{max-width:600px;margin:0 auto;min-height:100vh}

.top{position:sticky;top:0;z-index:40;background:rgba(11,7,5,.92);backdrop-filter:blur(16px);
  border-bottom:1px solid var(--line-2);padding:calc(10px + env(safe-area-inset-top)) 16px 10px;
  display:flex;align-items:center;justify-content:space-between;gap:10px}
.top b{display:block;font-family:var(--serif);font-size:18px;color:var(--gold-soft);letter-spacing:.08em}
.top small{display:block;font-size:11px;color:var(--faint);margin-top:1px}
.chip-s{font-size:11px;color:var(--muted);border:1px solid var(--line-2);border-radius:999px;padding:4px 10px}
.chip-s i{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--faint);margin-right:5px;vertical-align:middle}
.chip-s i.ok{background:var(--green-soft)} .chip-s i.busy{background:var(--gold)} .chip-s i.err{background:var(--red-soft)}

.view{padding:14px 16px calc(var(--tabh) + 88px)}
.wrap.has-cart .view{padding-bottom:calc(var(--tabh) + 148px)}
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:50;max-width:600px;margin:0 auto;
  background:rgba(15,10,7,.94);backdrop-filter:blur(18px);border-top:1px solid var(--line);
  display:grid;grid-template-columns:repeat(3,1fr);padding-bottom:env(safe-area-inset-bottom)}
.tabs.four{grid-template-columns:repeat(4,1fr)}
.tabs.four button{font-size:12px;letter-spacing:.08em}
.tabs button{padding:8px 0 7px;color:var(--faint);display:flex;flex-direction:column;align-items:center;gap:3px;
  font-size:13px;letter-spacing:.14em;font-family:var(--serif)}
.tabs button span{font-size:10px;letter-spacing:.08em}
.tabs button.on{color:var(--gold)}

.invite{background:rgba(217,172,99,.1);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:12px;font-size:13px;color:var(--gold-soft);line-height:1.7}
.invite b.tag{display:inline-block;font-family:var(--serif);font-size:15px;letter-spacing:.08em;margin-right:4px}
.old{text-decoration:line-through;color:var(--faint);font-weight:400;font-size:13px;margin-right:6px}
.poster-img{width:100%;max-width:100%;display:block;margin:8px auto;border-radius:16px;-webkit-touch-callout:default}
.wxbox{text-align:center}
.wxbox .due{display:block;font-family:var(--serif);font-size:32px;color:var(--gold);margin:6px 0 8px}
.wxpay{width:min(300px,86vw);height:auto;display:block;margin:0 auto;background:#fff}
.overlay{position:fixed;inset:0;z-index:180;background:rgba(0,0,0,.72);display:flex;align-items:center;justify-content:center;padding:24px}
.overlay .card{max-width:340px;margin:0;text-align:center}
.p.ask{font-size:13px;color:var(--gold-dim);font-weight:500}
.cat{display:flex;gap:8px;overflow-x:auto;margin-bottom:12px;padding-bottom:2px;scrollbar-width:none}
.cat::-webkit-scrollbar{display:none}
.cat button{flex:0 0 auto;border:1px solid var(--line-2);border-radius:999px;padding:6px 14px;font-size:13px;color:var(--muted)}
.cat button.on{border-color:var(--gold-dim);color:var(--gold-soft);background:rgba(217,172,99,.12)}

.item{display:flex;align-items:center;gap:12px;padding:13px 0;border-top:1px solid var(--line-2)}
.item:first-child{border-top:none}
.item .n{flex:1;min-width:0}
.item .n b{display:block;font-size:15px;font-weight:500}
.item .n small{display:block;font-size:12px;color:var(--faint);margin-top:2px}
.item .th{flex:0 0 auto;width:60px;height:60px;padding:0;border-radius:10px;overflow:hidden;border:1px solid var(--line-2);background:var(--card-2)}
.row .mv{flex:0 0 auto;display:flex;flex-direction:column;gap:3px}
.row .mv button{width:26px;height:20px;border:1px solid var(--line-2);border-radius:6px;font-size:9px;line-height:1;color:var(--gold-soft);display:flex;align-items:center;justify-content:center}
.row .mv button:disabled{opacity:.25}
.row .mth{flex:0 0 auto;width:40px;height:40px;border-radius:8px;object-fit:cover;border:1px solid var(--line-2)}
.btn.sm{padding:9px 14px;font-size:13px;letter-spacing:.08em}
.imgrow{display:flex;align-items:center;gap:14px}
.imgprev{flex:0 0 auto;width:96px;height:96px;border-radius:12px;overflow:hidden;border:1px dashed var(--line);background:rgba(217,172,99,.06);display:flex;align-items:center;justify-content:center;padding:0;color:var(--faint);font-size:12px}
.imgprev img{display:block;width:100%;height:100%;object-fit:cover}
.imgbtns{display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.item .th.ph{border:none;background:none}
.item .th img{display:block;width:100%;height:100%;object-fit:cover}
.overlay.pic{z-index:190;padding:16px;flex-direction:column}
.overlay.pic figure{margin:0;max-width:min(560px,100%);text-align:center}
.overlay.pic img{display:block;max-width:100%;max-height:78vh;margin:0 auto;border-radius:12px;border:1px solid var(--line)}
.overlay.pic figcaption{margin-top:10px;font-family:var(--serif);color:var(--gold-soft);letter-spacing:.12em;font-size:16px}
.temps{display:inline-flex;gap:6px;margin-top:6px}
.temps button{border:1px solid var(--line-2);border-radius:999px;padding:2px 10px;font-size:12px;color:var(--muted)}
.temps button.on{border-color:var(--gold-dim);color:var(--gold-soft);background:rgba(217,172,99,.12)}
.item .p{font-family:var(--serif);color:var(--gold);font-size:18px;font-weight:700;flex:0 0 auto}
.qty{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.qty button{width:28px;height:28px;border-radius:8px;border:1px solid var(--line);color:var(--gold-soft);font-size:16px}
.qty em{font-style:normal;min-width:18px;text-align:center;font-variant-numeric:tabular-nums}

.bar{position:fixed;left:0;right:0;bottom:var(--tabh);z-index:45;max-width:600px;margin:0 auto;
  padding:10px 16px;display:flex;align-items:center;gap:12px;
  background:rgba(15,10,7,.94);border-top:1px solid var(--line)}
.bar .info{flex:1;text-align:left}
.bar .info b{font-family:var(--serif);font-size:20px;color:var(--gold)}
.bar .info small{display:block;font-size:11px;color:var(--muted)}
.btn{border-radius:12px;padding:13px 18px;font-family:var(--serif);font-weight:600;letter-spacing:.12em;
  background:linear-gradient(135deg,#c0392b,#8e2a1d);color:#fff;box-shadow:0 6px 18px rgba(192,57,43,.32)}
.btn:active{transform:scale(.97)}
.btn.full{width:100%;padding:15px;font-size:16px}
.btn.ghost{background:rgba(217,172,99,.08);color:var(--gold-soft);border:1px solid var(--line);box-shadow:none}
.btn:disabled{opacity:.4}

.card{background:var(--card);border:1px solid var(--line-2);border-radius:14px;padding:16px;margin-bottom:12px}
.card.lift{background:linear-gradient(160deg,var(--card-2),#150f0b);border-color:var(--line)}
.kv{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-top:1px dashed rgba(217,172,99,.13);font-size:13.5px}
.kv:first-child{border-top:none}
.kv span{color:var(--muted)}
.kv b{font-family:var(--serif);color:var(--gold-soft)}
.empty{text-align:center;color:var(--faint);padding:40px 16px;line-height:1.9;font-size:13px}
.empty b{display:block;font-family:var(--serif);color:var(--gold-dim);font-size:15px;letter-spacing:.12em;margin-bottom:6px}

.row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:13px 14px;border-top:1px solid rgba(217,172,99,.08)}
.row:first-child{border-top:none}
.rows{background:var(--card);border:1px solid var(--line-2);border-radius:13px;overflow:hidden;margin-bottom:12px}
.row .tx{flex:1;min-width:0}
.row .tx b{display:block;font-size:14.5px;font-weight:500}
.row .tx small{display:block;font-size:11.5px;color:var(--faint);margin-top:1px}
.row .amt{font-family:var(--serif);font-weight:700;flex:0 0 auto}
.pos{color:var(--green-soft)} .neg{color:var(--red-soft)} .gd{color:var(--gold)}
.badge{font-size:10px;letter-spacing:.06em;border:1px solid var(--line-2);border-radius:999px;padding:2px 8px;color:var(--gold-dim)}
.badge.on{color:var(--green-soft);border-color:rgba(113,199,155,.4)}
.badge.wait{color:var(--gold);border-color:var(--line)}

.fld{margin-bottom:14px}
.fld>label{display:block;font-size:11px;letter-spacing:.16em;color:var(--gold-dim);margin-bottom:7px}
.inp{background:rgba(217,172,99,.06);border:1px solid var(--line-2);border-radius:11px;padding:12px 13px}
.inp:focus-within{border-color:var(--line)}
.note{font-size:12px;color:var(--faint);line-height:1.8;margin-top:8px}

.mask{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.45);display:none;align-items:flex-start;justify-content:center;padding:7vh 14px 24px}
.mask.on{display:flex}
.sheet{width:100%;max-width:600px;max-height:78vh;overflow-y:auto;background:linear-gradient(175deg,#241a14,#130d0a 32%);
  border:1px solid var(--line);border-radius:20px;padding:8px 18px 18px}
.grab{width:38px;height:4px;border-radius:2px;background:rgba(217,172,99,.28);margin:0 auto 14px}
.sh-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.sh-h h3{font-family:var(--serif);font-size:18px;color:var(--gold-soft);letter-spacing:.08em}

.lock{position:fixed;inset:0;z-index:500;background:var(--ink);display:flex;align-items:center;justify-content:center;padding:24px}
.lock-in{width:100%;max-width:320px;text-align:center}
.lock-seal{font-family:var(--serif);font-size:12px;letter-spacing:.4em;color:var(--gold-dim)}
.lock-title{font-family:var(--serif);font-size:28px;color:var(--gold);letter-spacing:.2em;margin:10px 0 12px}
.lock-hint{font-size:13px;color:var(--muted);min-height:20px}
.dots{display:flex;gap:14px;justify-content:center;margin:24px 0 32px}
.dots i{width:11px;height:11px;border-radius:50%;border:1px solid var(--gold-dim)}
.dots i.on{background:var(--gold);border-color:var(--gold)}
.pad{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.pad button{height:68px;border-radius:50%;background:rgba(217,172,99,.07);border:1px solid var(--line-2);font-family:var(--serif);font-size:26px;color:var(--gold-soft);touch-action:manipulation;-webkit-user-select:none;user-select:none}
.pad button.ghost{background:none;border-color:transparent;font-size:14px;font-family:var(--sans);color:var(--muted)}

.toast{position:fixed;left:50%;bottom:calc(var(--tabh) + 90px);transform:translate(-50%,10px);z-index:600;
  background:rgba(0,0,0,.9);border:1px solid var(--line);color:#fff;padding:11px 22px;border-radius:11px;font-size:14px;
  opacity:0;pointer-events:none;transition:.24s}
.toast.on{opacity:1;transform:translate(-50%,0)}
#qrbox{width:200px;height:200px;margin:12px auto;padding:8px;background:#fff;border-radius:12px}
#qrbox img,#qrbox canvas{width:100%!important;height:100%!important}
.stats{display:grid;gap:1px;background:var(--line-2);border-radius:12px;overflow:hidden;margin-bottom:14px}
.stats.two{grid-template-columns:repeat(2,1fr)}
.stats.one{grid-template-columns:1fr}
.stats>div{background:var(--card-2);padding:14px 6px;text-align:center}
.stats small{display:block;font-size:10.5px;color:var(--muted);letter-spacing:.08em;margin-bottom:4px}
.stats b{font-family:var(--serif);font-size:20px;font-weight:700;word-break:break-all}
.balopen{width:100%;display:flex;align-items:center;justify-content:space-between;margin:0 0 14px;padding:16px;border-radius:12px;background:var(--card-2);border:1px solid var(--line-2);color:inherit;font-family:inherit;text-align:left}
.balopen span{font-size:13px;letter-spacing:.12em;color:var(--gold-dim)}
.balopen small{display:block;margin-top:4px;font-size:11px;letter-spacing:0;color:var(--faint)}
.balopen b{font-family:var(--serif);font-size:26px}

.idcard{margin-top:14px;padding:16px 14px 18px;border-radius:18px;background:#1c1512;border:1px solid #4a3a22}
.id-defs{position:absolute;width:0;height:0}
.id-kicker{font-size:12px;letter-spacing:.32em;color:#a0875a}
.id-head{display:flex;align-items:center;gap:10px;margin-top:14px}
.id-mark{width:72px;height:72px;flex:0 0 auto;color:var(--red)}
.id-mark svg{width:100%;height:100%;display:block}
.id-copy{flex:1;min-width:0}
.id-copy b{display:block;font-family:var(--serif);font-size:22px;line-height:1.15;color:#e8c27a;letter-spacing:.04em}
.id-copy small{display:block;margin-top:6px;font-size:13px;color:#a0875a;letter-spacing:.06em}
.id-up{flex:0 0 auto;border:1px solid #5a4a30;color:#e8c27a;border-radius:999px;
  padding:7px 12px;font-family:var(--serif);font-size:13px;letter-spacing:.12em}
.id-bar{margin-top:16px;height:7px;border-radius:999px;background:rgba(90,36,28,.55);overflow:hidden;
  box-shadow:inset 0 1px 2px rgba(0,0,0,.45)}
.id-bar i{display:block;position:relative;width:12%;height:100%;border-radius:inherit;overflow:hidden;
  background:linear-gradient(180deg,#f0a090 0%,var(--red) 46%,#6e241c 100%);
  box-shadow:0 0 8px rgba(224,90,69,.8),0 0 2px rgba(255,220,200,.7)}
.id-bar i::after{content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,transparent,rgba(255,236,220,.7),transparent);
  animation:wine 1.8s ease-in-out infinite}
.id-next{margin:10px 2px 14px;font-size:13px;line-height:1.4;color:#a0875a;letter-spacing:.04em}
.id-track{display:flex;align-items:flex-start;justify-content:space-between;gap:2px}
.id-token{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;padding:0;background:none;border:none;color:var(--red)}
.id-token .seal{width:100%;max-width:30px;height:34px;display:block}
.id-token.on .seal{filter:drop-shadow(0 0 5px rgba(192,57,43,.7))}
.id-token small{margin-top:5px;font-size:10px;line-height:1;letter-spacing:.08em;color:#e8c27a;font-family:var(--serif)}
.idcard.stir .id-token.hid .seal{animation:idshake .45s ease}
@keyframes wine{0%{transform:translateX(-70%)}100%{transform:translateX(160%)}}
@keyframes idshake{0%,100%{transform:translateX(0)}30%{transform:translateX(-1px)}70%{transform:translateX(1px)}}
.top-r{display:flex;align-items:stretch;gap:8px;flex:0 0 auto}
.top-r .chip-s{display:flex;align-items:center}
.home-link{
  display:flex;align-items:center;white-space:nowrap;text-decoration:none;
  font-size:11.5px;font-weight:700;letter-spacing:.06em;color:#fff;
  background:linear-gradient(180deg,#c9402e,#9e2a1d);
  border:1px solid rgba(224,90,69,.6);border-radius:999px;padding:4px 11px;
}
.home-link.quiet{background:transparent;color:var(--gold-dim);border-color:var(--line-2);font-weight:400}

.pad button.hit{background:rgba(217,172,99,.4);border-color:var(--gold-dim);color:#fff3d6}
.pad button.ghost.hit{background:rgba(217,172,99,.18);border-color:transparent;color:var(--gold-soft)}
