/* ============================================================
   pages.css —— 内页组件：步骤 / 下载卡 / 规则 / FAQ / 账号
   ============================================================ */

/* ────────── 平台切换 ────────── */
.tabs{
  display:inline-flex;gap:4px;padding:5px;margin-bottom:28px;
  background:rgba(255,255,255,.035);
  border:1px solid var(--line);border-radius:13px;
}
.tab{
  border:0;background:transparent;cursor:pointer;
  padding:9px 18px;border-radius:9px;
  font:inherit;font-size:13.5px;font-weight:600;color:var(--mut);
  transition:.16s;
}
.tab:hover{color:var(--txt)}
.tab.on{
  background:var(--panel2);color:var(--txt);
  box-shadow:0 1px 0 rgba(255,255,255,.06) inset,0 6px 16px -12px #000;
}
.panel{display:none}
.panel.on{display:block;animation:fade .25s var(--ease)}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ────────── 步骤 ────────── */
.steps{
  list-style:none;counter-reset:s;
  display:grid;gap:16px;max-width:820px;
}
.steps li{
  counter-increment:s;position:relative;
  padding:24px 26px 24px 74px;
  border:1px solid var(--line);border-radius:var(--r-lg);
  background:linear-gradient(170deg,rgba(255,255,255,.03),transparent 40%),var(--panel);
}
.steps li::before{
  content:counter(s,decimal-leading-zero);
  position:absolute;left:24px;top:24px;
  width:32px;height:32px;border-radius:10px;
  display:grid;place-items:center;
  font-family:ui-monospace,Menlo,Consolas,monospace;
  font-size:12.5px;font-weight:800;
  color:var(--grn);
  background:rgba(74,222,128,.1);
  border:1px solid rgba(74,222,128,.28);
}
.steps h3{margin:0 0 7px;font-size:16px;font-weight:700}
.steps p{margin:0 0 7px;font-size:14.5px;color:var(--mut);line-height:1.72}
.steps p:last-child{margin-bottom:0}
.steps a{color:var(--grn);border-bottom:1px solid rgba(74,222,128,.3)}
.steps strong{color:var(--txt)}

.tip{
  margin-top:12px !important;
  padding-left:13px;
  border-left:2px solid var(--line2);
  font-size:13px !important;color:var(--dim) !important;
}
.tip.warn{border-left-color:var(--gold);color:#d8b578 !important}
.tip.warn strong{color:#f0cf92}

.copybox{
  display:flex;align-items:center;gap:10px;
  margin-top:12px;padding:10px 10px 10px 15px;
  background:var(--ink);
  border:1px solid var(--line);border-radius:12px;
}
.copybox code{
  background:none;border:0;padding:0;
  flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;
  color:var(--mint);font-size:14.5px;
}

.inline-note{
  display:flex;gap:10px;flex-wrap:wrap;align-items:baseline;
  max-width:820px;margin-top:26px;padding:16px 20px;
  border:1px solid var(--line);border-radius:var(--r);
  background:rgba(56,189,248,.05);
  font-size:13.5px;color:var(--mut);
}
.inline-note b{color:var(--txt)}
.inline-note a{color:var(--grn);border-bottom:1px solid rgba(74,222,128,.35)}

/* ────────── 下载卡 ────────── */
.dl-single{
  display:grid;grid-template-columns:1.15fr .85fr;gap:18px;
  /* 两张卡内容长度不一样（安卓版说明更多），按各自内容高度排，否则短卡被拉长、长卡内容被裁 */
  align-items:start;
}
.dl{
  display:flex;flex-direction:column;gap:10px;
  transition:border-color .25s,transform .25s var(--ease);
}
.dl:hover{border-color:var(--line2);transform:translateY(-2px)}
.dl-main{
  border-color:rgba(74,222,128,.3);
  background:
    radial-gradient(120% 100% at 0% 0%,rgba(74,222,128,.1),transparent 62%),
    var(--panel);
}
.dl-head{display:flex;align-items:center;gap:10px}
.dl-ico{color:var(--grn);line-height:1}
.dl-badge{
  font-size:11px;font-weight:700;letter-spacing:.05em;
  padding:3px 9px;border-radius:999px;border:1px solid;
}
.b-on{color:#06210f;background:var(--grn);border-color:var(--grn)}
.b-os{color:var(--grn);border-color:rgba(74,222,128,.38);background:rgba(74,222,128,.1)}
.dl h3{font-size:18px;font-weight:800;letter-spacing:-.015em}
.dl p{font-size:14px;color:var(--mut);line-height:1.72}
.dl b{color:var(--txt)}
.dl-btn{margin-top:8px;align-self:flex-start}
.dl-meta{font-size:12px;font-weight:500;opacity:.72}
.dl-tiny{font-size:12.5px !important;color:var(--dim) !important;margin-top:2px}
.dl-tiny + .dl-tiny{margin-top:9px;padding-top:9px;border-top:1px dashed var(--line2)}

.req-wrap{margin-top:34px}
.req-t{font-size:15px;font-weight:700;margin-bottom:14px}
.req-table{border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.req-row{
  display:grid;grid-template-columns:110px 1fr;gap:16px;
  padding:13px 18px;
  border-bottom:1px solid var(--line);
  background:var(--panel);
  font-size:13.5px;
}
.req-row:last-child{border-bottom:0}
.req-row > span{color:var(--dim)}
.req-row > b{font-weight:500;color:var(--txt2);line-height:1.6}

.notice{
  margin-top:26px;padding:20px 22px;
  border:1px solid rgba(251,191,36,.22);
  border-radius:var(--r-lg);
  background:rgba(251,191,36,.05);
}
.notice strong{display:block;margin-bottom:8px;color:var(--gold);font-size:13.5px}
.notice p{margin:7px 0 0;font-size:13.5px;color:#c9b593;line-height:1.72}
.notice b{color:#f0d6a4}

/* ────────── 规则 ────────── */
.rules{
  display:grid;gap:1px;
  background:var(--line);
  border:1px solid var(--line);border-radius:var(--r-lg);
  overflow:hidden;
}
.rule{
  display:flex;gap:18px;align-items:flex-start;
  padding:20px 22px;background:var(--panel);
  transition:background .2s;
}
.rule:hover{background:var(--panel2)}
.rule span{
  font-family:ui-monospace,Menlo,Consolas,monospace;
  font-size:12px;font-weight:800;color:var(--grn);opacity:.75;
  padding-top:3px;min-width:18px;
}
.rule p{font-size:14.5px;color:var(--mut);line-height:1.72}
.rule b{color:var(--txt)}

.rule-more{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:22px}
.rule-box{
  padding:24px;
  border:1px solid var(--line);border-radius:var(--r-lg);
  background:var(--panel);
}
.rule-box h3{font-size:15.5px;font-weight:700;margin-bottom:14px}
.rule-box p{font-size:13.5px;color:var(--mut);line-height:1.72}
.rule-box a{color:var(--grn);border-bottom:1px solid rgba(74,222,128,.35)}
/* 规约框里也可能放按钮：按钮自己带底色，别再套链接的绿色文字与下划线（否则绿底绿字看不见） */
.rule-box a.btn{color:#04200f;border-bottom:none}
.rule-box a.btn-line,.rule-box a.btn-ghost{color:var(--txt)}

/* ────────── FAQ ────────── */
.faq{display:grid;gap:10px}
.faq-item{
  border:1px solid var(--line);border-radius:var(--r);
  background:var(--panel);
  overflow:hidden;
  transition:border-color .2s,background .2s;
}
.faq-item[open]{border-color:rgba(74,222,128,.24);background:var(--panel2)}
.faq-item summary{
  position:relative;cursor:pointer;list-style:none;
  padding:17px 50px 17px 20px;
  font-size:14.5px;font-weight:600;color:var(--txt);
}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{
  content:"+";position:absolute;right:20px;top:50%;
  transform:translateY(-50%);
  font-size:20px;font-weight:400;line-height:1;color:var(--grn);
  transition:transform .22s var(--ease);
}
.faq-item[open] summary::after{content:"−"}
.faq-a{
  padding:0 20px 18px;
  border-top:1px solid var(--line);
  margin-top:-1px;
  padding-top:14px;
}
.faq-a p{font-size:13.5px;color:var(--mut);line-height:1.75}
.faq-a a{color:var(--grn);border-bottom:1px solid rgba(74,222,128,.35)}
.faq-a b{color:var(--txt)}

/* ────────── 账号中心 ──────────
   四个模块：① 账号概要 ② 账号安全 ③ 偏好设置（左列） ④ 登录状态（右列）
   注册表单已迁到 /register，这里只放「管理」相关的东西。 */
.acct-grid{
  display:grid;grid-template-columns:1.24fr .76fr;gap:18px;align-items:start;
  max-width:1040px;margin:0 auto;
}
.acct-main{display:grid;gap:18px}
.acct-side{display:grid;gap:18px}
.acct-card{padding:24px}

/* 未登录 */
.acct-guest{max-width:430px;margin:0 auto;padding:30px}
.acct-guest-foot{
  margin:18px 0 0;padding-top:16px;border-top:1px solid var(--line);
  font-size:13px;color:var(--dim);display:flex;align-items:center;gap:6px;
}
.acct-guest-foot a{color:var(--grn);font-weight:600}
.acct-guest-foot .arr{color:var(--grn);transition:transform .18s var(--ease)}
.acct-guest-foot:hover .arr{transform:translateX(3px)}

/* ① 账号概要 */
.acct-id{display:flex;align-items:center;gap:14px}
.acct-id-txt{min-width:0}
.acct-id-txt h3{
  font-size:19px;font-weight:800;letter-spacing:-.015em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.me-avatar{
  display:grid;place-items:center;flex:none;
  width:50px;height:50px;border-radius:14px;
  background:linear-gradient(150deg,rgba(126,240,168,.24),rgba(56,189,248,.16));
  border:1px solid rgba(126,240,168,.3);
  font-size:20px;font-weight:800;color:var(--mint);
  text-transform:uppercase;
}
.acct-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.badge{
  display:inline-flex;align-items:center;
  padding:2px 9px;border-radius:999px;
  border:1px solid var(--line2);background:rgba(255,255,255,.04);
  font-size:11.5px;font-weight:600;color:var(--mut);white-space:nowrap;
}
.badge.b-ok{color:var(--grn);border-color:rgba(74,222,128,.38);background:rgba(74,222,128,.1)}
.badge.b-warn{color:var(--gold);border-color:rgba(251,191,36,.38);background:rgba(251,191,36,.1)}
.badge.b-bad{color:var(--red);border-color:rgba(248,113,113,.38);background:rgba(248,113,113,.1)}
.badge.b-platform{color:var(--cyan);border-color:rgba(56,189,248,.32);background:rgba(56,189,248,.08)}

.fact-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}
.fact{
  padding:12px 14px;border-radius:12px;
  border:1px solid var(--line);background:rgba(6,10,9,.55);
}
.fact span{display:block;font-size:11.5px;color:var(--dim);letter-spacing:.03em}
.fact b{display:block;margin-top:5px;font-size:14px;font-weight:700;word-break:break-all}

/* ② 账号安全 */
.form-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.f-end{justify-content:flex-end;align-content:end}
.sec-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.sec-foot .hint{flex:1 1 220px}

/* ③ 偏好设置 */
.pref-row{
  display:flex;align-items:center;justify-content:space-between;gap:18px;
  padding:13px 0;border-top:1px solid var(--line);
}
.pref-row:first-of-type{border-top:0;padding-top:0}
.pref-txt b{display:block;font-size:14px;font-weight:700}
.pref-txt p{margin:3px 0 0;font-size:12.5px;color:var(--dim);line-height:1.6}
.pref-seg{flex:none;min-width:172px;grid-template-columns:1fr 1fr}
.pref-seg span{padding:9px 6px;font-size:13px}

.switch{
  flex:none;width:48px;height:27px;border-radius:999px;
  border:1px solid var(--line2);background:var(--ink);
  padding:0;cursor:pointer;position:relative;
  transition:background .2s var(--ease),border-color .2s;
}
.switch i{
  position:absolute;top:3px;left:3px;
  width:19px;height:19px;border-radius:50%;
  background:#54685e;
  transition:transform .2s var(--ease),background .2s;
}
.switch.on{background:rgba(74,222,128,.18);border-color:rgba(74,222,128,.5)}
.switch.on i{transform:translateX(21px);background:var(--grn)}
.switch:focus-visible{outline:2px solid rgba(74,222,128,.6);outline-offset:2px}

.pref-select{
  flex:none;min-width:172px;
  padding:9px 12px;border-radius:10px;
  background:var(--ink);border:1px solid var(--line);
  color:var(--txt);font:inherit;font-size:13.5px;
  cursor:pointer;
}
.pref-select:hover{border-color:var(--line2)}
.pref-select:focus{outline:0;border-color:rgba(74,222,128,.55);box-shadow:0 0 0 3px rgba(74,222,128,.1)}

/* ④ 登录状态 */
.sess-facts{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:11px;overflow:hidden}
.sess-facts > div{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  background:rgba(6,10,9,.6);padding:9px 13px;font-size:12.5px;
}
.sess-facts span{color:var(--dim);white-space:nowrap}
.sess-facts b{font-weight:600;text-align:right;word-break:break-all}

.sess-list{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:8px}
.sess-item{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:10px 12px;border-radius:11px;
  border:1px solid var(--line);background:rgba(6,10,9,.5);
}
.sess-item.is-cur{border-color:rgba(74,222,128,.3);background:rgba(74,222,128,.06)}
.sess-txt{min-width:0}
.sess-txt b{display:block;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sess-txt p{margin:2px 0 0;font-size:11.5px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sess-tag{
  display:inline-block;margin-left:6px;
  padding:1px 7px;border-radius:999px;
  font-size:10.5px;font-weight:700;color:var(--grn);
  border:1px solid rgba(74,222,128,.4);background:rgba(74,222,128,.12);
  vertical-align:1px;
}
.sess-empty{margin:0;padding:14px 4px;font-size:12.5px;color:var(--dim);text-align:center}
.acct-acts{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}

/* 侧栏通用（注册页须知等） */
.side h3{font-size:15.5px;font-weight:700;margin-bottom:14px}
.side p{font-size:13px;color:var(--mut);line-height:1.7}
.side a{color:var(--grn);border-bottom:1px solid rgba(74,222,128,.35)}

/* 注册页：表单 + 须知两栏 */
.reg-grid{
  display:grid;grid-template-columns:1.12fr .88fr;gap:18px;align-items:start;
  max-width:940px;margin:0 auto;
}
.reg-grid .result{grid-column:1 / -1;max-width:520px;justify-self:center}

/* 注册成功卡 */
.result{
  text-align:center;
  border-color:rgba(74,222,128,.32);
  background:
    radial-gradient(120% 100% at 50% 0%,rgba(74,222,128,.12),transparent 70%),
    var(--panel);
  padding:32px 28px;
}
.result[hidden]{display:none}
.result-ico{
  display:grid;place-items:center;
  width:48px;height:48px;margin:0 auto 14px;
  border-radius:50%;
  background:rgba(74,222,128,.14);
  border:1px solid rgba(74,222,128,.34);
  color:var(--grn);font-size:22px;font-weight:800;
}
.result h3{font-size:19px;font-weight:800}
.result > p{margin-top:8px;font-size:13.5px;color:var(--mut)}
.result .result-rows{margin:20px 0;text-align:left}
.result-acts{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}

/* ============================================================
   社区组件：公告 / 论坛 / 商城（2026-10 新增）
   ============================================================ */

/* ────────── 通用：多行输入、骨架屏、空状态、分页 ────────── */
textarea{
  width:100%;padding:12px 13px;border-radius:10px;
  background:var(--ink);border:1px solid var(--line);
  color:var(--txt);font:inherit;font-size:14.5px;line-height:1.72;
  resize:vertical;transition:border-color .16s,box-shadow .16s,background .16s;
}
textarea:hover{border-color:var(--line2)}
textarea:focus{
  outline:0;border-color:rgba(74,222,128,.55);
  box-shadow:0 0 0 3px rgba(74,222,128,.1);background:#070b09;
}
textarea::placeholder{color:#4b5f56}

.seg-3{grid-template-columns:repeat(3,1fr)}

.skel{
  height:78px;border-radius:var(--r);
  border:1px solid var(--line);
  background:linear-gradient(100deg,var(--panel) 0%,var(--panel2) 42%,var(--panel) 84%);
  background-size:220% 100%;
  animation:shine 1.4s linear infinite;
}
.skel-card{height:252px}
@keyframes shine{to{background-position:-220% 0}}

.empty{padding:34px 4px;text-align:center;font-size:13.5px;color:var(--dim)}

.pager{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:22px}
.pager-n{font-size:12.5px;color:var(--dim)}

/* ────────── 公告 ────────── */
.notice-list{display:grid;gap:14px}
.notice-item{
  padding:22px 24px;
  border:1px solid var(--line);border-radius:var(--r-lg);
  background:var(--panel);
}
.notice-item.is-pin{
  border-color:rgba(74,222,128,.28);
  background:
    radial-gradient(120% 100% at 0% 0%,rgba(74,222,128,.09),transparent 62%),
    var(--panel);
}
.ni-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ni-type{
  font-size:11px;font-weight:700;letter-spacing:.04em;
  padding:3px 9px;border-radius:999px;border:1px solid;
}
.t-open{color:var(--grn);border-color:rgba(74,222,128,.4);background:rgba(74,222,128,.1)}
.t-maint{color:var(--gold);border-color:rgba(251,191,36,.4);background:rgba(251,191,36,.1)}
.t-upd{color:var(--cyan);border-color:rgba(56,189,248,.4);background:rgba(56,189,248,.1)}
.t-event{color:#c4b5fd;border-color:rgba(196,181,253,.4);background:rgba(196,181,253,.1)}
.t-info{color:var(--mut);border-color:var(--line2);background:rgba(255,255,255,.04)}
.ni-title{font-size:17px;font-weight:800;letter-spacing:-.01em}
.ni-pin{font-size:11px;color:var(--grn)}
.ni-time{margin-top:6px;font-size:12px;color:var(--dim)}
.ni-body{
  margin-top:12px;font-size:14px;color:var(--mut);line-height:1.82;
  white-space:pre-wrap;word-break:break-word;
}
/* 列表只列标题：整张卡片是链接，hover 抬一点 */
.notice-link{
  display:block;text-decoration:none;color:inherit;
  transition:border-color .18s ease,transform .18s ease,background .18s ease;
}
.notice-link:hover{border-color:rgba(74,222,128,.36);transform:translateY(-1px)}
.notice-link:focus-visible{outline:2px solid rgba(74,222,128,.5);outline-offset:3px}
.ni-line{margin-top:10px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.ni-line .ni-time{margin-top:0}
.ni-go{font-size:12.5px;color:var(--grn);white-space:nowrap;opacity:.85}
.notice-link:hover .ni-go{opacity:1}

/* ────────── 公告详情 ────────── */
.subhero-doc{padding:64px 0 30px}
.subhero-doc h1{
  font-size:clamp(26px,3.6vw,38px);line-height:1.22;
  letter-spacing:-.024em;
}
.nd-top{margin:0 0 16px}
.nd-back{
  display:inline-flex;align-items:center;gap:6px;
  font-size:13px;color:var(--mut);text-decoration:none;letter-spacing:.01em;
}
.nd-back:hover{color:var(--grn)}
.nd-back .arr{font-size:14px}
.nd-meta{margin:0 0 12px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.nd-card{
  padding:30px 34px;border:1px solid var(--line);border-radius:var(--r-lg);
  background:var(--panel);box-shadow:0 10px 34px rgba(0,0,0,.24);
}
.nd-text{
  margin:0;font-size:14.5px;line-height:1.95;color:var(--txt2);
  white-space:pre-wrap;word-break:break-word;
}
/* 正文富文本（notice-detail.js 用 DOM 拼出来）：段落 / 小标题 / 列表 / 重点 / 配图 */
.nd-body{font-size:14.5px;line-height:1.95;color:var(--txt2);word-break:break-word}
.nd-p{margin:0 0 17px}
.nd-p:last-child{margin-bottom:0}
.nd-h{
  margin:30px 0 13px;font-size:16.5px;font-weight:800;letter-spacing:-.012em;
  color:var(--txt);line-height:1.45;
}
.nd-h:first-child{margin-top:0}
.nd-ul,.nd-ol{margin:0 0 17px;display:grid;gap:7px;color:var(--txt2)}
.nd-ul{list-style:none;padding-left:3px}
.nd-ul li{position:relative;padding-left:17px}
.nd-ul li::before{
  content:'';position:absolute;left:0;top:.82em;
  width:5px;height:5px;border-radius:2px;background:var(--grn);opacity:.7;
}
.nd-ol{list-style:decimal;padding-left:24px}
.nd-ol li{padding-left:2px}
.nd-ol li::marker{color:var(--dim);font-variant-numeric:tabular-nums}
.nd-quote{
  margin:0 0 19px;padding:13px 16px;border-radius:10px;
  border-left:2px solid rgba(74,222,128,.5);
  background:rgba(74,222,128,.055);color:var(--txt2);line-height:1.9;
}
.nd-quote:last-child{margin-bottom:0}
.nd-hr{margin:26px 0;border:0;border-top:1px solid var(--line)}
.nd-fig{margin:22px 0;padding:0}
.nd-fig:first-child{margin-top:0}
.nd-fig img{
  display:block;width:100%;height:auto;border-radius:12px;
  border:1px solid var(--line);background:rgba(255,255,255,.03);
}
.nd-fig figcaption{margin-top:9px;font-size:12.5px;color:var(--dim);text-align:center;line-height:1.6}
.nd-body code{
  padding:1px 5px;border-radius:5px;background:rgba(255,255,255,.07);
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:.92em;color:var(--txt);
}
.nd-body b{color:var(--txt);font-weight:700}
.nd-foot{
  margin-top:22px;padding-top:14px;border-top:1px solid var(--line);
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:12px;
}
.nd-switch{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}
/* 只有上一篇或只有下一篇时占满一行，别留半格空白 */
.nd-switch.only-one{grid-template-columns:1fr}
.nd-switch.only-one .nd-next{align-items:flex-start;text-align:left}
.nd-switch a{
  display:flex;flex-direction:column;gap:6px;padding:14px 16px;
  border:1px solid var(--line);border-radius:var(--r);background:var(--panel);
  text-decoration:none;color:var(--txt2);transition:border-color .18s ease;
}
.nd-switch a:hover{border-color:rgba(74,222,128,.36)}
.nd-switch a b{font-size:13.5px;font-weight:700;letter-spacing:-.01em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nd-switch .nd-next{align-items:flex-end;text-align:right}
@media(max-width:640px){
  .nd-card{padding:22px 18px}
  .nd-switch{grid-template-columns:1fr}
  .nd-switch .nd-next{align-items:flex-start;text-align:left}
  .nd-text,.nd-body{font-size:14px;line-height:1.9}
  .nd-h{font-size:15.5px;margin:24px 0 11px}
  .nd-fig{margin:18px 0}
  .nd-quote{padding:12px 14px}
}

/* ────────── 论坛 ────────── */
.forum-top{
  display:flex;align-items:center;justify-content:space-between;
  gap:14px;flex-wrap:wrap;margin-bottom:18px;
}
.forum-tabs{margin-bottom:0}
.forum-acts{display:flex;gap:8px;flex-wrap:wrap}
.newpost{margin-bottom:20px}
.newpost-acts{display:flex;gap:10px;flex-wrap:wrap}

.post-list{display:grid;gap:10px}
.post-row{
  display:flex;align-items:center;justify-content:space-between;gap:18px;
  padding:16px 20px;
  border:1px solid var(--line);border-radius:var(--r);
  background:var(--panel);
  transition:border-color .18s,background .18s,transform .18s var(--ease);
}
.post-row:hover{border-color:rgba(74,222,128,.3);background:var(--panel2);transform:translateY(-1px)}
.pr-main{flex:1;min-width:0}
.pr-title{
  display:flex;align-items:center;gap:8px;
  font-size:15px;font-weight:700;color:var(--txt);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.pr-pin{
  flex:none;font-size:10.5px;font-weight:700;color:var(--grn);
  border:1px solid rgba(74,222,128,.4);border-radius:6px;padding:1px 6px;
}
.pr-ex{
  margin-top:5px;font-size:13px;color:var(--dim);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.pr-meta{display:flex;align-items:center;gap:14px;flex:none;font-size:12px;color:var(--dim)}
.pr-board{color:var(--grn);opacity:.85}
.pr-author{max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.back{display:inline-block;margin-bottom:14px;font-size:13px;color:var(--mut)}
.back:hover{color:var(--grn)}

.post-detail{padding:28px}
.pd-meta{font-size:12.5px;color:var(--dim)}
.post-detail h1{margin:8px 0 0;font-size:clamp(21px,3vw,27px);font-weight:800;letter-spacing:-.015em;line-height:1.32}
.pd-body{
  margin-top:16px;font-size:14.5px;color:var(--txt2);line-height:1.85;
  white-space:pre-wrap;word-break:break-word;
}
.pd-foot{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin-top:20px;padding-top:16px;border-top:1px solid var(--line);
}

.reply-t{margin:26px 0 12px;font-size:15px;font-weight:700}
.reply-list{display:grid;gap:10px}
.reply{padding:16px 18px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel)}
.reply-head{display:flex;align-items:baseline;gap:10px;font-size:13.5px}
.reply-head b{color:var(--txt)}
.reply-body{margin-top:8px;font-size:14px;color:var(--mut);line-height:1.8;white-space:pre-wrap;word-break:break-word}
.reply-form{margin-top:14px}

@media (max-width:760px){
  .post-row{flex-direction:column;align-items:flex-start;gap:10px;padding:14px 16px}
  .pr-meta{flex-wrap:wrap;gap:10px}
  .pr-title,.pr-ex{white-space:normal}
  .pr-ex{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .post-detail{padding:22px}
}

/* ────────── 商城 ────────── */
.wallet{
  display:flex;align-items:center;gap:22px;flex-wrap:wrap;
  padding:22px 24px;margin-bottom:26px;
  border:1px solid rgba(74,222,128,.26);border-radius:var(--r-lg);
  background:
    radial-gradient(120% 140% at 0% 0%,rgba(74,222,128,.14),transparent 60%),
    var(--panel);
}
.wallet-l{flex:none}
.wallet-k{font-size:11.5px;color:var(--dim);letter-spacing:.12em}
.wallet-v{display:flex;align-items:baseline;gap:6px;margin-top:2px;font-size:13px;color:var(--mut)}
.wallet-v b{
  font-family:ui-monospace,Menlo,Consolas,monospace;
  font-size:30px;font-weight:800;color:var(--mint);letter-spacing:-.02em;
}
/* 人民币参考值：100 天元币 = 1 元 */
.wallet-cny{
  display:block;margin-top:3px;font-style:normal;font-size:11.5px;color:var(--mut);
  letter-spacing:.04em;font-variant-numeric:tabular-nums;
}
.wallet-m{flex:1;min-width:190px}
.wallet-r{display:flex;gap:8px;flex-wrap:wrap}

.shop-cats{display:flex;flex-wrap:wrap;margin-bottom:22px}
.shop-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.goods{
  display:flex;flex-direction:column;
  padding:18px;
  border:1px solid var(--line);border-radius:var(--r-lg);
  background:linear-gradient(170deg,rgba(255,255,255,.035),transparent 46%),var(--panel);
  transition:transform .22s var(--ease),border-color .22s;
}
.goods:hover{transform:translateY(-3px);border-color:rgba(74,222,128,.3)}
.goods.is-owned{opacity:.6}
.goods-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.goods-ico{
  display:grid;place-items:center;flex:none;
  width:46px;height:46px;border-radius:13px;
  font-size:19px;font-weight:800;color:#eafff3;
  border:1px solid var(--line2);
}
.g-skin{background:linear-gradient(150deg,rgba(74,222,128,.35),rgba(34,197,94,.1))}
.g-cape{background:linear-gradient(150deg,rgba(56,189,248,.3),rgba(56,189,248,.07))}
.g-pet{background:linear-gradient(150deg,rgba(251,191,36,.3),rgba(251,191,36,.07))}
.g-fx{background:linear-gradient(150deg,rgba(196,181,253,.32),rgba(196,181,253,.07))}
.g-tag{background:linear-gradient(150deg,rgba(255,255,255,.16),rgba(255,255,255,.04))}
/* 没见过的槽位 / 自定义分类：按分类名 hash 取一个稳定色，同类同色，不再全掉进灰块 */
.g-k0{background:linear-gradient(150deg,rgba(244,114,182,.3),rgba(244,114,182,.07))}
.g-k1{background:linear-gradient(150deg,rgba(45,212,191,.3),rgba(45,212,191,.07))}
.g-k2{background:linear-gradient(150deg,rgba(248,113,113,.28),rgba(248,113,113,.06))}
.g-k3{background:linear-gradient(150deg,rgba(129,140,248,.3),rgba(129,140,248,.07))}
.g-k4{background:linear-gradient(150deg,rgba(163,230,53,.28),rgba(163,230,53,.06))}
.goods-tags{display:flex;flex-direction:column;align-items:flex-end;gap:5px;font-size:11px}
.goods-cat{color:var(--dim)}
.goods-rar{font-weight:700;padding:2px 8px;border-radius:999px;border:1px solid}
.r-n{color:var(--mut);border-color:var(--line2)}
.r-r{color:var(--cyan);border-color:rgba(56,189,248,.4);background:rgba(56,189,248,.08)}
.r-e{color:var(--gold);border-color:rgba(251,191,36,.42);background:rgba(251,191,36,.1)}
.goods-fx{font-size:10.5px;color:#c7b3ff;border:1px solid rgba(167,139,250,.4);background:rgba(167,139,250,.1);padding:2px 7px;border-radius:999px}
.goods-soon{font-size:10.5px;color:var(--dim);border:1px dashed var(--line2);padding:2px 7px;border-radius:999px}
.goods-name{margin-top:14px;font-size:15.5px;font-weight:800}
.goods-desc{flex:1;margin-top:6px;font-size:13px;color:var(--mut);line-height:1.65}
.goods-foot{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin-top:16px;padding-top:14px;border-top:1px solid var(--line);
}
.goods-price{font-size:12px;color:var(--dim)}
.goods-price b{
  font-family:ui-monospace,Menlo,Consolas,monospace;
  font-size:18px;font-weight:800;color:var(--mint);
}
/* 人民币参考价，跟在币价后面 */
.goods-cny{
  margin-left:7px;font-style:normal;font-size:11px;color:var(--mut);
  font-variant-numeric:tabular-nums;
}

.shop-note{
  margin-top:34px;padding:24px;
  border:1px solid var(--line);border-radius:var(--r-lg);
  background:var(--panel);
}
.shop-note h3{font-size:15px;font-weight:700;margin-bottom:10px}
.shop-note h3 + p{margin-bottom:4px}
.shop-note p{font-size:13.5px;color:var(--mut);line-height:1.78}
.shop-note b{color:var(--txt)}
.shop-note a{color:var(--grn);border-bottom:1px solid rgba(74,222,128,.35)}

.my-orders{margin-top:22px}
.my-orders h3{font-size:15px;font-weight:700;margin-bottom:12px}
.order-list{display:grid;gap:8px}
.order-row{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:13px 16px;
  border:1px solid var(--line);border-radius:var(--r);
  background:var(--panel);font-size:13.5px;
}
.or-main{min-width:0}
.or-item{font-weight:600;color:var(--txt)}
.or-meta{margin-top:3px;font-size:12px;color:var(--dim)}
.or-st{flex:none;font-size:12px;font-weight:700;padding:3px 10px;border-radius:999px;border:1px solid}
.st-wait{color:var(--gold);border-color:rgba(251,191,36,.4);background:rgba(251,191,36,.08)}
.st-done{color:var(--grn);border-color:rgba(74,222,128,.4);background:rgba(74,222,128,.08)}

/* ── 时装预览弹窗：点缩略图看整套模型 ── */
.model-box{
  width:min(640px,100%);display:grid;grid-template-columns:248px 1fr;gap:22px;
  padding:24px;
}
.model-stage{
  position:relative;display:grid;place-items:center;padding:10px 0;
  border:1px solid var(--line-g);border-radius:var(--r);
  background:
    radial-gradient(ellipse at 50% 78%,rgba(74,222,128,.14),transparent 64%),
    linear-gradient(180deg,rgba(255,255,255,.03),rgba(0,0,0,.25));
}
.model-stage img{
  width:196px;height:auto;image-rendering:pixelated;
  filter:drop-shadow(0 14px 22px rgba(0,0,0,.55));
}
/* 3D 时装：详情里直接渲染模型，按住拖动旋转、滚轮缩放 */
.model-canvas{
  width:224px;height:300px;border-radius:10px;overflow:hidden;
  cursor:grab;touch-action:none;
}
.model-canvas[hidden]{display:none}
.model-canvas.is-grab{cursor:grabbing}
.model-canvas canvas{display:block}
.f3d-tip{
  position:absolute;inset:0;display:grid;place-items:center;
  font-size:11px;color:var(--dim);pointer-events:none;
}
.f3d-hint{
  position:absolute;left:50%;bottom:8px;transform:translateX(-50%);
  padding:3px 9px;border-radius:999px;white-space:nowrap;
  font-size:10.5px;color:rgba(230,240,235,.72);
  background:rgba(4,8,7,.62);border:1px solid rgba(74,222,128,.22);
  pointer-events:none;
}
.model-tag{
  position:absolute;left:8px;bottom:8px;padding:2px 8px;border-radius:6px;
  font-size:10.5px;letter-spacing:.05em;color:var(--grn);
  background:rgba(4,8,7,.72);border:1px solid rgba(74,222,128,.35);
}
.model-side{display:flex;flex-direction:column;min-width:0}
.model-eyebrow{margin:0 0 6px;font-size:10.5px;letter-spacing:.22em;color:var(--dim)}
.model-meta{margin:6px 0 0;font-size:12px;color:var(--mut)}
.model-desc{margin:12px 0 18px;font-size:13px;color:var(--mut);line-height:1.75}
.model-side .btn{margin-top:auto}
.model-hint{margin:10px 0 0;font-size:11px;color:var(--dim);line-height:1.6}
/* 缩略图可点：给个明确的可点暗示 */
.goods-ico.has-art{cursor:zoom-in}
.goods-ico.has-art::after{
  content:"";position:absolute;inset:0;border-radius:inherit;
  border:1px solid transparent;transition:.16s;
}
.goods-ico.has-art:hover::after{border-color:rgba(74,222,128,.55)}
@media (max-width:620px){
  .model-box{grid-template-columns:1fr;width:min(340px,100%);padding:20px}
  .model-stage img{width:132px}
  .model-canvas{width:224px;height:260px}
}

/* ── 时装：卡片头像、已穿着态、我的背包 ── */
.goods-ico.has-art{position:relative;background:linear-gradient(160deg,rgba(74,222,128,.16),rgba(10,14,12,.5));overflow:hidden;padding:4px}
.goods-ico.has-art img{width:100%;height:100%;object-fit:contain;image-rendering:pixelated}
.goods.is-owned{opacity:.78}
.goods.is-worn{border-color:rgba(74,222,128,.5);box-shadow:0 0 0 1px rgba(74,222,128,.25) inset}

.my-bag{
  margin:0 0 26px;padding:16px 18px 14px;
  border:1px solid var(--line2);border-radius:16px;
  background:linear-gradient(180deg,rgba(74,222,128,.05),rgba(255,255,255,.015));
}
.bag-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.bag-head h3{margin:0;font-size:15px;font-weight:800}
.bag-tip{margin:0;font-size:12px;color:var(--mut)}
.bag-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(252px,1fr));gap:10px;margin-top:14px}
.bag-item{
  display:flex;align-items:center;gap:11px;padding:9px 11px;
  border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.02);
}
.bag-item.on{border-color:rgba(74,222,128,.45);background:rgba(74,222,128,.08)}
.bag-ico{
  flex:none;width:40px;height:60px;display:grid;place-items:center;overflow:hidden;
  border-radius:10px;border:1px solid var(--line2);font-size:16px;font-weight:800;color:#eafff3;
}
.bag-ico.has-art{background:rgba(0,0,0,.25);padding:3px}
.bag-ico.has-art img{width:100%;height:100%;object-fit:contain;image-rendering:pixelated}
.bag-info{flex:1;min-width:0}
.bag-name{font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bag-meta{margin-top:3px;font-size:11px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bag-note{margin:12px 0 0;font-size:11.5px;color:var(--dim);line-height:1.7}

@media (max-width:1080px){.shop-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:620px){
  .bag-grid{grid-template-columns:1fr}
  .shop-grid{grid-template-columns:1fr}
  .wallet{padding:18px;gap:16px}
  .wallet-v b{font-size:26px}
  .wallet-r{width:100%}
  .wallet-r .btn{flex:1}
  .shop-cats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px;width:100%}
  .shop-cats .tab{padding:8px 6px;font-size:12.5px}
}

/* ────────── 多线程下载进度面板（js/dl-fast.js） ────────── */
.dlp{
  position:fixed;right:20px;bottom:20px;z-index:90;
  width:min(360px,calc(100vw - 28px));
  padding:14px 16px 13px;
  border:1px solid var(--line2);border-radius:14px;
  background:rgba(16,25,23,.94);
  box-shadow:0 20px 44px rgba(0,0,0,.5);
  backdrop-filter:blur(12px);
  animation:dlpIn .22s ease-out;
}
@keyframes dlpIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.dlp-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}
.dlp-title{display:flex;flex-direction:column;gap:2px;min-width:0}
.dlp-title b{font-size:13.5px;color:var(--txt)}
.dlp-name{font-size:11.5px;color:var(--dim);font-family:ui-monospace,Menlo,Consolas,monospace;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:230px}
.dlp-x{
  flex:none;padding:3px 10px;border-radius:8px;cursor:pointer;
  border:1px solid var(--line2);background:transparent;color:var(--dim);
  font-size:12px;transition:color .15s,border-color .15s;
}
.dlp-x:hover{color:var(--txt);border-color:var(--line3)}
.dlp-x:disabled{opacity:.5;cursor:default}
.dlp-track{height:5px;border-radius:99px;background:rgba(255,255,255,.08);overflow:hidden}
.dlp-bar{display:block;height:100%;width:0;border-radius:99px;
  background:linear-gradient(90deg,var(--grn,#6b8e6b),#9ad4a4);
  transition:width .25s ease-out}
.dlp-foot{display:flex;justify-content:space-between;gap:10px;margin-top:8px;
  font-size:11.5px;color:var(--dim);font-family:ui-monospace,Menlo,Consolas,monospace}
.dlp.dlp-done .dlp-bar{background:linear-gradient(90deg,var(--grn,#6b8e6b),#b7e6bd)}
.dlp.dlp-done .dlp-pct{color:var(--grn,#6b8e6b)}
@media (max-width:620px){
  .dlp{right:10px;left:10px;bottom:10px;width:auto}
  .dlp-name{max-width:60vw}
}

/* ── 协议页（/terms）── */
.legal-tabs{
  position:sticky;top:0;z-index:5;display:flex;flex-wrap:wrap;gap:6px;
  margin:0 0 22px;padding:10px 0;
  background:linear-gradient(180deg,rgba(9,12,10,.96),rgba(9,12,10,.86));
  backdrop-filter:blur(6px);border-bottom:1px solid var(--line);
}
.legal-tabs a{
  padding:6px 13px;border:1px solid var(--line);border-radius:3px;
  font-size:12.5px;color:var(--mut);text-decoration:none;transition:.15s;
}
.legal-tabs a:hover{border-color:rgba(126,240,168,.4);color:var(--txt2)}
.legal-tabs a.on{border-color:rgba(126,240,168,.55);background:rgba(126,240,168,.1);color:var(--grn,#7ef0a8)}
.legal{padding:0 0 8px}
.legal+.legal{margin-top:34px;padding-top:26px;border-top:1px solid var(--line)}
.legal-head{margin:0 0 12px}
.legal-head h2{margin:0;font-size:20px;letter-spacing:.04em}
.legal-date{margin:6px 0 0;font-size:12px;color:var(--dim);letter-spacing:.04em}
.legal-intro{
  margin:0 0 6px;padding:12px 14px;border-left:2px solid rgba(126,240,168,.5);
  background:rgba(126,240,168,.05);border-radius:0 3px 3px 0;
  font-size:13.5px;line-height:1.85;color:var(--txt2);
}
.legal-sec{margin:20px 0 0}
.legal-sec h3{
  margin:0 0 8px;font-size:14px;font-weight:700;letter-spacing:.06em;color:var(--grn,#7ef0a8);
}
.legal-sec p{margin:0 0 9px;font-size:13.5px;line-height:1.9;color:var(--mut)}
.legal-sec p b{color:var(--txt2);font-weight:600}
.legal-foot{
  margin:30px 0 0;padding-top:16px;border-top:1px solid var(--line);
  font-size:12.5px;color:var(--dim);line-height:1.8;
}
@media (max-width:620px){
  .legal-head h2{font-size:18px}
  .legal-sec p{font-size:13px;line-height:1.85}
  .legal-tabs{position:static}
}
