/* ============ 弹层 ============ */
.mask{position:fixed;inset:0;background:rgba(8,7,12,.55);backdrop-filter:blur(4px);z-index:300;display:none;align-items:center;justify-content:center;padding:24px;}
.mask.on{display:flex;animation:up .24s var(--e);}
@media(max-width:520px){.mask{padding:10px;}}
.modal{background:var(--paper);border-radius:var(--r-lg);max-width:660px;width:100%;max-height:88vh;overflow:auto;position:relative;box-shadow:var(--sh-3);}
.modal.narrow{max-width:430px;}
.x{position:absolute;top:18px;right:18px;z-index:3;width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:var(--paper);font-size:13px;color:var(--ink-2);cursor:pointer;}
.x:hover{background:var(--line-2);}
.mb{padding:clamp(28px,4vw,44px);}
.mb h2{font-size:clamp(23px,3vw,32px);letter-spacing:-.045em;}
.mtop{display:flex;align-items:center;gap:14px;margin-bottom:18px;}
.meta{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0 22px;}
.meta span{font-size:12px;color:var(--ink-3);position:relative;padding-right:8px;}
.meta span:not(:last-child):after{content:'·';position:absolute;right:-2px;}
.olist{list-style:none;padding:0;margin:14px 0 0;}
.olist li{display:flex;gap:18px;padding:12px 0;border-bottom:1px solid var(--line-2);font-size:13.5px;color:var(--ink-2);}
.olist li b{font-family:var(--f-mono);color:var(--ink-4);font-weight:400;font-size:11px;flex:none;min-width:58px;padding-top:3px;letter-spacing:.06em;}
.trk{display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-bottom:1px solid var(--line-2);font-size:13.5px;}
.trk:last-child{border-bottom:none;}
.trk b{font-weight:700;letter-spacing:-.03em;color:var(--ink);}

/* ============ 登录 ============ */
.lm{display:flex;align-items:center;gap:13px;width:100%;border:1px solid var(--line);background:var(--paper);border-radius:var(--r-md);padding:15px 17px;font-size:14px;font-weight:530;margin-bottom:10px;transition:.24s var(--e);cursor:pointer;text-align:left;}
.lm:hover{border-color:var(--ink);transform:translateY(-1px);}
.lm .bg{margin-left:auto;font-family:var(--f-mono);font-size:9.5px;color:var(--ink-4);letter-spacing:.1em;text-transform:uppercase;}
.wl{text-align:center;font-size:12.5px;color:var(--ink-3);margin-top:18px;}
.wl a{color:var(--ink);font-weight:540;cursor:pointer;border-bottom:1px solid var(--ink-4);}
.otp{display:flex;gap:9px;justify-content:center;margin:20px 0;}
.otp input{width:44px;height:54px;text-align:center;font-size:20px;font-family:var(--f-mono);border:1px solid var(--line);border-radius:var(--r-sm);outline:none;color:var(--ink);background:var(--paper);}
.otp input:focus{border-color:var(--ink);}
.qr{border:1px solid var(--line);border-radius:var(--r-md);padding:20px;text-align:center;background:var(--paper-2);}
.qr img{width:100%;max-width:196px;margin:0 auto;border-radius:var(--r-sm);}
.pays{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:14px;}
.pays span{font-size:11px;color:var(--ink-3);}

/* spec §8.3 顾问码展示框 */
.advisor-box{display:flex;flex-direction:column;align-items:center;gap:6px;padding:18px 16px;border:1px dashed var(--line);border-radius:14px;background:var(--paper-2);margin-bottom:14px;}
.advisor-qr{width:140px;height:140px;background:#fff;border:1px solid var(--line-2);border-radius:10px;padding:6px;object-fit:contain;}

/* ============ Privy 登录面板（spec §6.4） ============ */
.privy-stand,.privy-sdk-entry,.privy-loading{
  display:flex;
  flex-direction:column;
  gap:6px;
}
.privy-stand code,.privy-sdk-entry code{
  font-family:var(--f-mono);
  font-size:11px;
  background:var(--paper-2);
  padding:1px 5px;
  border-radius:4px;
}
.privy-stand .lm,.privy-sdk-entry .lm{
  /* the .lm above already handles per-button layout; this is only for the
     small icon container + label row to align nicely */
  align-items:center;
}
.privy-sdk-entry .xs,.privy-stand .xs,.privy-loading .xs{
  /* matches .xs typography from tokens; allow <a>/<code>/<b> inside */
  font-size:12.5px;
  color:var(--ink-3);
  line-height:1.55;
}
.privy-sdk-entry .xs b,.privy-stand .xs b,.privy-loading .xs b{
  color:var(--ink);
}
.privy-loading{
  align-items:stretch;
}
