/* MachModel 冲压模具简算系统 —— 界面样式（浅色） */
:root{
  --bg:#f4f6fa; --panel:#fff; --line:#e3e7ef; --line2:#eef1f6; --ink:#000; --sub:#697386;
  /* 品牌色与 MachModel 官网一致（官网主色 #102840 / 标识深蓝 #0B2545） */
  --brand:#102840; --brand-soft:#e9eef6; --brand-ink:#0a1c2e;
  --ok:#0a7a4b; --okbg:#e9f8f0; --warn:#a15c07; --warnbg:#fff5e8; --bad:#b42318; --badbg:#fef3f2;
  --shadow:0 1px 2px rgba(16,24,40,.05), 0 1px 3px rgba(16,24,40,.06);
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font:13.5px/1.6 "Microsoft YaHei","Segoe UI",sans-serif;
  display:flex; flex-direction:column; overflow:hidden;
}
h1,h2,h3{margin:0; font-weight:650}
table{border-collapse:collapse; width:100%}
[hidden]{display:none !important}

/* ---------- 顶栏 ---------- */
.topbar{
  flex:0 0 auto; display:flex; align-items:center; gap:10px;
  padding:9px 16px; background:var(--panel); border-bottom:1px solid var(--line); z-index:20;
}
.logo{display:block; width:30px; height:30px; flex:0 0 auto}
.brand{display:flex; align-items:baseline; gap:8px}
.brand h1{font-size:15.5px; letter-spacing:.2px}
.ver{font-size:11px; color:var(--sub); background:var(--line2); border-radius:20px; padding:1px 7px}
.spacer{flex:1 1 auto}
.pill{font-size:12px; border-radius:20px; padding:3px 11px; white-space:nowrap;
      background:var(--line2); color:var(--sub); border:1px solid transparent}
.pill.ok{background:var(--okbg); color:var(--ok)}
.pill.bad{background:var(--badbg); color:var(--bad)}
.btn{
  font:inherit; font-size:12.5px; border-radius:8px; padding:6px 13px; cursor:pointer;
  border:1px solid var(--line); background:#fff; color:var(--ink); transition:.12s;
}
.btn:hover{border-color:#c9d2e3; background:#fafbfe}
.btn.primary{background:var(--brand); border-color:var(--brand); color:#fff}
.btn.primary:hover{background:var(--brand-ink); border-color:var(--brand-ink)}

/* ---------- 主体 ---------- */
main{flex:1 1 auto; display:grid; grid-template-columns:minmax(520px,30%) minmax(0,1fr);
     gap:14px; padding:14px 16px 16px; overflow:hidden; align-items:stretch}
.col{display:flex; flex-direction:column; gap:12px; min-width:0; overflow:auto; padding-right:2px}
#formCol{background:#f4f7fb; padding:12px; border-right:1px solid var(--line)}
.col::-webkit-scrollbar{width:9px}
.col::-webkit-scrollbar-thumb{background:#d5dbe6; border-radius:9px}
.col::-webkit-scrollbar-thumb:hover{background:#c2cad9}

.card{background:var(--panel); border:1px solid var(--line); border-radius:11px; padding:13px 15px;
      box-shadow:var(--shadow); flex:0 0 auto}
.card>h2{font-size:13px; display:flex; align-items:center; gap:8px; margin-bottom:11px; color:var(--ink)}
#formCol .card>h2{font-size:14.5px; font-weight:650; margin:-7px -9px 12px; padding:9px 14px; color:#fff; background:var(--brand); border-radius:10px; letter-spacing:.3px}
.card>h2 .n{width:18px; height:18px; border-radius:5px; background:var(--brand-soft); color:var(--brand);
            font-size:11px; display:grid; place-items:center; flex:0 0 auto}
#formCol .card>h2 .n{background:rgba(255,255,255,.2); color:#fff}
.card>h2 .cnt{margin-left:auto; font-size:11px; color:var(--sub); font-weight:400}
#formCol .card>h2 .cnt{color:#cdd8e8}

/* ---------- 参数表单 ---------- */
.fields{display:grid; grid-template-columns:1fr; gap:14px 0}
.f{display:flex; flex-direction:column; gap:3px; min-width:0}
.f.wide{grid-column:1 / -1}
.f label{font-size:12.5px; color:var(--brand); font-weight:600; display:flex; gap:4px; align-items:baseline; margin-bottom:1px;
         white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.f label .u{color:var(--sub); font-size:10.5px}
.f input,.f select{
  width:100%; padding:8px 10px; border:1px solid var(--line); border-radius:8px;
  font:inherit; font-size:14px; background:#fff; color:#000; font-weight:600; min-width:0;
}
.f input:focus,.f select:focus{outline:none; border-color:var(--brand);
  box-shadow:0 0 0 3px rgba(47,111,237,.13)}
.f .tip{font-size:10.5px; color:#000; white-space:normal; line-height:1.45; margin-top:2px}
/* 板块备注：渲染在卡片字段下方的一行小字（当前用于「模具」板块） */
.groupnote{margin-top:10px; padding-top:8px; border-top:1px dashed var(--line); font-size:11.5px; color:#000; line-height:1.6}
.grpname{font-size:11.5px; color:var(--brand); font-weight:650; margin:10px 0 6px}
.grpname:first-child{margin-top:0}

/* ★ 数字输入框不要上下微调箭头（Edge/Chrome/Firefox 通杀） */
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none; margin:0}
input[type=number]{-moz-appearance:textfield; appearance:textfield}
input[type=number]:disabled{background:#f5f7fb; color:#9aa4b5; cursor:not-allowed}

/* ---------- 特征输入区 ---------- */
table.slots th,table.slots td{border-bottom:1px solid var(--line2); padding:4px 4px; font-size:12px}
table.slots th{color:var(--sub); font-weight:500; font-size:11px; padding-bottom:3px;
               text-align:left; white-space:nowrap}
table.slots td.col{color:var(--sub); font-weight:650; width:26px; text-align:center}
table.slots .w-i{width:24px; text-align:center; color:var(--sub)}
table.slots .w-sel{width:78px}
table.slots input,table.slots select{
  width:100%; min-width:0; padding:3px 4px; border:1px solid var(--line); border-radius:6px;
  font:inherit; font-size:12px; background:#fff; color:var(--ink);
}
table.slots input:focus,table.slots select:focus{outline:none; border-color:var(--brand);
  box-shadow:0 0 0 2px rgba(47,111,237,.13)}
table.slots .w-num{width:54px}
table.slots tr.off input,table.slots tr.off select{background:#fafbfd; color:#a9b2c2}
.featbtns{display:flex; gap:8px; margin-top:9px}
.featbtns .btn{font-size:12px; padding:5px 12px}
.btn.danger{color:#c0392b; border-color:#f0c9c3}
.btn.danger:hover{background:#fdf3f2; border-color:#e39b90}
table.slots button.del{
  width:20px; height:20px; line-height:1; border:1px solid var(--line); border-radius:5px;
  background:#fff; color:#98a2b3; cursor:pointer; font-size:13px; padding:0;
}
table.slots button.del:hover{border-color:#e39b90; color:#c0392b; background:#fdf3f2}

/* ---------- 结果区（白底卡片） ---------- */
.hero{background:#fff; color:var(--ink); border:1px solid var(--line)}
.hero .cap{font-size:12px; color:var(--sub)}
.hero .big{font-size:31px; font-weight:700; letter-spacing:-.5px; line-height:1.25;
           font-variant-numeric:tabular-nums; color:var(--brand)}
.hero .ref{font-size:11.5px; color:var(--sub); margin-top:3px}
.hero .bar{margin-top:9px; height:5px; border-radius:5px; background:var(--line2); overflow:hidden}
.hero .bar i{display:block; height:100%; background:var(--brand); border-radius:5px}

table.list th,table.list td{border-bottom:1px solid var(--line2); padding:6px 5px; text-align:left; font-size:12.5px}
table.list th{color:var(--sub); font-weight:500; font-size:11.5px; padding-bottom:4px}
table.list tr:last-child td{border-bottom:none}
td.n,th.n{text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap}
td.src{color:#b4bccb; font-size:11px; text-align:right; white-space:nowrap}
tfoot td{font-weight:650; border-top:1.5px solid var(--brand); padding-top:8px; font-size:13px}
tfoot tr:last-child td{border-top:1.5px solid var(--brand); font-size:14px}

.tiles{display:grid; grid-template-columns:repeat(auto-fill,minmax(132px,1fr)); gap:8px}
.tile{border:1px solid var(--line2); border-radius:9px; padding:7px 9px; background:#fcfdff;
      min-width:0}
.tile .k{font-size:11px; color:var(--sub); white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.tile .v{font-size:15.5px; font-weight:650; font-variant-numeric:tabular-nums;
         white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.tile .v .u{font-size:10.5px; font-weight:400; color:var(--sub); margin-left:2px}

.note{font-size:11.5px; color:var(--sub); margin:7px 0 0}
.note b{color:var(--ink); font-weight:600}

/* ---------- 卡片收叠 ---------- */
.card>h2{cursor:pointer; user-select:none}
.card>h2 .caret{flex:0 0 auto; margin-left:6px; font-size:10px; color:var(--sub);
               transition:transform .15s}
.card.collapsed .caret{transform:rotate(-90deg)}
#formCol .card>h2 .caret{color:#cdd8e8}
.card.collapsed>*:not(h2){display:none}
.card.collapsed{padding-bottom:11px}

/* ---------- 提示条 ---------- */
.toast{position:fixed; top:58px; left:50%; transform:translateX(-50%); z-index:60;
       border-radius:9px; padding:9px 16px; font-size:12.5px; box-shadow:0 6px 20px rgba(16,24,40,.14);
       background:var(--okbg); color:var(--ok); border:1px solid #bfe6d1; max-width:70vw}
.toast.bad{background:var(--badbg); color:var(--bad); border-color:#f6cfcb}
.toast.warn{background:var(--warnbg); color:var(--warn); border-color:#f3dcbb}
.blockerr{background:var(--badbg); border:1px solid #f6cfcb; border-radius:9px; padding:11px 13px;
          color:var(--bad); font-size:12.5px; white-space:pre-wrap; margin-bottom:11px}
#bootWarn{background:var(--warnbg); color:var(--warn); border-bottom:1px solid #f3dcbb;
          padding:9px 16px; font-size:12.5px}

@media(max-width:1080px){
  main{grid-template-columns:1fr; overflow:auto}
  .col{overflow:visible}
}

/* ============ 网页版新增：账号 / 次数 / 弹层 / 留言 ============ */
.quota{font-size:12px; border-radius:20px; padding:3px 11px; white-space:nowrap;
       background:var(--brand-soft); color:var(--brand); border:1px solid #d5dfee}
.quota.zero{background:var(--badbg); color:var(--bad); border-color:#f6cfcb}
.whoami{font-size:12.5px; color:var(--sub); white-space:nowrap}

/* 弹层 */
.mask{position:fixed; inset:0; background:rgba(11,37,69,.42); z-index:80;
      display:flex; align-items:center; justify-content:center; padding:20px}
.modal{background:#fff; border-radius:13px; width:340px; max-width:94vw; max-height:86vh;
       overflow:auto; padding:18px 20px; box-shadow:0 18px 50px rgba(16,24,40,.28)}
.modal.rules{width:520px}
.modal-head{display:flex; align-items:center; justify-content:space-between; margin-bottom:10px}
.modal-head h3{font-size:15px}
.x{font:inherit; font-size:17px; line-height:1; border:none; background:none; cursor:pointer;
   color:var(--sub); padding:2px 6px; border-radius:6px}
.x:hover{background:var(--line2); color:var(--ink)}
.tabs{display:flex; gap:6px; margin-bottom:13px; border-bottom:1px solid var(--line); padding-bottom:0}
.tab{font:inherit; font-size:13px; padding:6px 14px; cursor:pointer; border:none;
     background:none; color:var(--sub); border-bottom:2px solid transparent; margin-bottom:-1px}
.tab.active{color:var(--brand); border-bottom-color:var(--brand); font-weight:600}
.mfield{margin-bottom:11px}
.mfield label{display:block; font-size:12px; color:var(--sub); margin-bottom:4px}
.mfield input{width:100%; font:inherit; font-size:13.5px; padding:8px 10px;
              border:1px solid var(--line); border-radius:8px; outline:none}
.mfield input:focus{border-color:var(--brand)}
.agree{display:flex; align-items:center; gap:6px; font-size:12px; color:var(--sub);
       margin:2px 0 10px; cursor:pointer}
.agree a{color:var(--brand)}
.merr{color:var(--bad); font-size:12.5px; min-height:16px; margin-bottom:8px; white-space:pre-wrap}
.btn.wide{width:100%}
.rules-body p{font-size:12.8px; color:var(--ink); margin:0 0 10px; line-height:1.7}
.rules-body b{color:var(--brand)}
.btn.helpbtn{border-color:#c9d2e3; color:var(--brand); font-weight:600; padding:6px 12px}
.btn.helpbtn::before{content:"?"; display:inline-block; width:14px; height:14px; line-height:14px;
  text-align:center; border-radius:50%; background:var(--brand-soft); color:var(--brand);
  font-size:11px; font-weight:700; margin-right:5px; vertical-align:1px}
.modal.help{width:780px}
.help-body{font-size:12.8px; color:var(--ink); line-height:1.75}
.help-body section{margin:0 0 15px}
.help-body h4{font-size:13.5px; color:var(--brand); margin:0 0 7px; padding-bottom:5px;
  border-bottom:1px solid var(--line2)}
.help-body ol,.help-body ul{margin:0; padding-left:19px}
.help-body li{margin:0 0 4px}
.help-body p{margin:0 0 6px}
.help-body table{font-size:12.3px; margin:3px 0 2px}
.help-body th,.help-body td{border:1px solid var(--line); padding:4px 9px; text-align:left;
  vertical-align:top; line-height:1.6}
.help-body th{background:var(--line2); font-weight:650; white-space:nowrap}
.help-body td:first-child{white-space:nowrap; color:var(--brand); font-weight:600}
.help-body code{background:var(--line2); border-radius:4px; padding:1px 5px; font-size:12px}
.help-note{color:var(--sub)}
.help-foot{margin:10px 0 6px; font-size:12.5px; text-align:center}
.help-foot a{color:var(--brand)}
/* 选项联动：模内攻丝/压装选「否」时，下挂参数置灰不可填 */
.f.dep-off{opacity:.45}
.f.dep-off input,.f.dep-off select{cursor:not-allowed}
.footnote{text-align:center; color:var(--sub); font-size:12px; margin:2px 0 14px}
.footnote a{color:var(--brand)}
.errActions{margin-top:9px}

/* 留言卡 */
#msgCard textarea{width:100%; font:inherit; font-size:13px; padding:8px 10px; resize:vertical;
                  border:1px solid var(--line); border-radius:8px; outline:none}
#msgCard textarea:focus{border-color:var(--brand)}
.msglist{margin-top:10px; max-height:220px; overflow:auto}
.msg{border:1px solid var(--line2); border-radius:9px; padding:7px 10px; margin-bottom:7px;
     background:#fcfdff}
.msg-t{font-size:11.5px; color:var(--sub); margin-bottom:2px}
.msg-b{font-size:12.8px; white-space:pre-wrap; word-break:break-word}
.mine-h{font-size:12px; color:var(--sub); font-weight:600; margin:4px 0 7px}
.stats{font-size:12.5px; color:var(--brand); background:var(--brand-soft);
       border-radius:8px; padding:7px 11px; margin-bottom:11px}

/* ============ v1.6：手动计算按钮 / 注册验证码 ============ */
.calcbtn{width:100%; margin:10px 0 2px; font-size:15px; padding:11px}
.calcbtn.dirty{box-shadow:0 0 0 3px rgba(240,182,92,.5); animation:calcpulse 1.7s infinite}
@keyframes calcpulse{50%{box-shadow:0 0 0 7px rgba(240,182,92,.15)}}
.calchint{font-size:12.5px; color:var(--sub); text-align:center; margin:4px 0 2px; line-height:1.5}
.btn:disabled{opacity:.55; cursor:default}

.caprow{display:flex; gap:8px; align-items:stretch}
.caprow input{flex:1; min-width:0}
.capimg{flex:none; width:118px; height:37px; padding:0; border:1px solid var(--line);
        border-radius:8px; background:#eef2f8; cursor:pointer; overflow:hidden}
.capimg svg{display:block; width:100%; height:100%}
.capimg:hover{border-color:var(--brand)}
.caprow .btn{flex:none; white-space:nowrap}

/* ---------- 推荐参数表（3 个「是否」→ 查表填参数） ---------- */
.modal.reco{width:460px}
.rqs{border:1px solid var(--line2); border-radius:10px; overflow:hidden; margin-bottom:7px}
.rq{display:flex; align-items:center; gap:10px; padding:8px 12px; border-bottom:1px solid var(--line2)}
.rq:last-child{border-bottom:none}
.rq-l{flex:1 1 auto; font-size:13.5px}
.rq-btns{flex:0 0 auto; display:flex; gap:6px}
.rqb{font:inherit; font-size:13px; padding:5px 12px; min-width:34px; border-radius:7px; cursor:pointer;
     border:1px solid var(--line); background:#fff; color:var(--sub); transition:.12s}
.rqb:hover{border-color:#c9d2e3}
.rqb.on-yes{background:#fff4e0; border-color:#dcae55; color:#8a5a12; font-weight:650}
.rqb.on-no{background:#fff4e0; border-color:#dcae55; color:#8a5a12; font-weight:650}
.rq-u{font-size:11.5px; color:var(--sub); font-style:normal; margin-left:1px}
.reco-result{border:1px solid #f0dcb6; background:linear-gradient(#fffdf8,#fffaf0);
             border-radius:10px; padding:10px 13px; min-height:58px}
.rr-h{font-size:12.5px; color:#8a5a12; line-height:1.9}
.rr-h b{color:#6b4406; font-size:13px}
.rr-k{font-size:11px; color:var(--sub); margin-left:8px}
.rr-k:first-child{margin-left:0}
.rr-sep{color:#d8c49a; margin:0 4px}
.rr-f{font-size:11.5px; color:var(--sub); margin-top:5px; word-break:break-all}
.rr-f b{color:#6b4406; font-weight:600}
.rr-f.dim{color:#b3a27e}
.rr-cap{font-size:11px; color:#b3a27e; margin-top:5px}
.rr-bad{font-size:12.5px; color:var(--bad)}
.reco-foot{display:flex; gap:8px; margin:13px 0 0}
.reco-foot .btn{flex:1 1 auto}
.toast.ok{background:var(--okbg); color:var(--ok); border-color:#c8e9d8}

/* ==================== 会员（2026-10-16 新增） ====================
   开关关闭时这些规则用不上（元素一直 hidden），留着不影响现有界面。 */
.modal.member{width:min(560px, 94vw)}
.plans{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
@media (max-width:520px){.plans{grid-template-columns:1fr}}
.plan{border:1px solid var(--line);border-radius:10px;padding:12px 14px;
  cursor:pointer;background:var(--panel);transition:border-color .15s}
.plan:hover{border-color:var(--brand)}
.plan.on{border-color:var(--brand);background:var(--brand-soft)}
.plan-hd{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.plan-hd b{font-size:15px;color:var(--ink)}
.plan-days{font-size:12px;color:var(--sub)}
.plan-price{margin:6px 0 4px;font-size:20px;color:var(--brand);font-weight:600}
.plan-old{margin-left:6px;font-size:12px;color:var(--sub);text-decoration:line-through}
.plan-note{font-size:12px;color:var(--sub)}

/* ======== 会员：支付方式选择 + 对公账户（2026-10-16 新增） ======== */
.payways{display:flex;gap:8px;margin:0 0 12px}
.payway{flex:1 1 0;padding:9px 12px;border:1px solid var(--line);
  border-radius:8px;background:var(--panel);cursor:pointer;
  font-size:14px;color:var(--ink)}
.payway:hover{border-color:var(--brand)}
.payway.on{border-color:var(--brand);background:var(--brand-soft);color:var(--brand);font-weight:600}
.bank-box{border:1px solid var(--line);border-radius:10px;padding:14px 16px;background:var(--panel)}
.bank-box h4{margin:0 0 10px;font-size:14px;color:var(--ink)}
.bank-row{display:flex;gap:10px;padding:7px 0;border-bottom:1px dashed var(--line2)}
.bank-row:last-of-type{border-bottom:none}
.bank-k{flex:0 0 76px;font-size:13px;color:var(--sub)}
.bank-v{flex:1;font-size:14px;color:var(--ink);word-break:break-all}
.bank-v.num{font-family:var(--font-mono,monospace);font-size:16px;letter-spacing:1px;font-weight:600}
.bank-tip{margin:12px 0 0;font-size:12.5px;color:var(--sub);line-height:1.7}
.bank-tip b{color:var(--ink)}

/* 支付方式：费率标签 + 不可用置灰（2026-10-16） */
.pw-fee{margin-left:6px;font-size:11.5px;color:var(--sub);font-weight:400}
.payway.on .pw-fee{color:var(--brand);opacity:.8}
.payway.off{opacity:.45;cursor:not-allowed;background:transparent}
.payway.off:hover{border-color:var(--line)}

/* ======== 会员开通规则（2026-10-16） ======== */
.mrules{color:var(--brand,#0a7);text-decoration:none;font-size:13.5px}
.mrules:hover{text-decoration:underline}
.modal.member-rules{width:min(620px,94vw);max-height:88vh}
.mrules-body{max-height:64vh;overflow-y:auto;padding:4px 4px 0}
.mrules-body h4{margin:16px 0 7px;font-size:14px;font-weight:600;color:var(--ink)}
.mrules-body h4:first-child{margin-top:0}
.mrules-body ul{margin:0;padding-left:20px}
.mrules-body li{margin:4px 0;font-size:13.5px;line-height:1.75}
.mrules-body ul li::marker{color:var(--sub)}
.mtable{width:100%;border-collapse:collapse;margin:4px 0}
.mtable td,.mtable th{border:1px solid var(--line);padding:7px 10px;font-size:13px;text-align:left}
.mtable th{background:var(--panel-2);font-weight:500;color:var(--sub)}
.mtable td.mr{width:96px;text-align:right;color:var(--brand,#0a7);font-size:15px}
.mn{color:var(--sub);font-size:12px;margin:6px 0 0;line-height:1.7}
.bank-v.amt b{color:var(--brand,#0a7);font-size:15px}
.bank-v.amt .bank-wait{color:var(--sub);font-weight:400;font-size:13px}

/* 会员规则弹窗要盖在会员弹窗之上（2026-10-16）。
   两个 .mask 默认都是 z-index:80，规则弹窗写在后面 → 被会员弹窗压住，
   页面上两坨内容叠在一起看不清。抬到 120。 */
#memberRulesModal{z-index:120}

/* ======== 会员管理（管理员，2026-10-16） ========
   本项目没有全局 input 样式（只有 .f input），所以这里照 .f input
   的写法单独立一个 .inp，别自造变量名。 */
.modal.mbr-admin{width:min(720px,96vw);max-height:92vh;display:flex;flex-direction:column}
.modal.mbr-admin .mrules-body,.modal.mbr-admin .modal-body{overflow-y:auto}
.mbr-h{margin:16px 0 8px;font-size:13.5px;font-weight:500;color:var(--ink);
  padding-bottom:6px;border-bottom:1px solid var(--line)}
.mbr-h:first-of-type{margin-top:12px}
.mbr-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.inp{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;
  font-size:14px;background:#fff;color:#000;min-width:0;font-weight:400}
.inp:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(47,111,237,.13)}
.mbr-suggest{margin-top:6px;border:1px solid var(--line);border-radius:8px;
  max-height:160px;overflow-y:auto;background:#fff}
.mbr-suggest button{display:block;width:100%;text-align:left;padding:8px 11px;
  border:0;border-bottom:1px solid var(--line);background:none;cursor:pointer;
  font:inherit;font-size:13.5px;color:var(--ink)}
.mbr-suggest button:hover{background:var(--brand-soft)}
.mbr-suggest button:last-child{border-bottom:0}
.mbr-msg{margin:10px 0 0;padding:9px 12px;border-radius:8px;font-size:13px;line-height:1.6}
.mbr-msg.ok{background:var(--brand-soft);color:var(--brand)}
.mbr-msg.bad{background:#fdecea;color:#a3271f}
.mbr-list{margin-top:8px;border:1px solid var(--line);border-radius:8px;
  max-height:240px;overflow-y:auto}
.mbr-list .mr-hd{display:flex;gap:8px;padding:7px 11px;background:var(--panel-2);
  font-size:12px;color:var(--sub);border-bottom:1px solid var(--line);
  position:sticky;top:0}
.mbr-list .mr-row{display:flex;gap:8px;align-items:center;padding:7px 11px;
  border-bottom:1px solid var(--line);font-size:13px}
.mbr-list .mr-row:last-child{border-bottom:0}
.mbr-list .mr-acct{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap}
.mbr-list .mr-tag{flex:0 0 auto;padding:1px 8px;border-radius:20px;font-size:11.5px}
.mbr-list .mr-tag.on{background:var(--brand-soft);color:var(--brand)}
.mbr-list .mr-tag.off{background:#f1f2f5;color:var(--sub)}
.mbr-list .mr-days{flex:0 0 92px;color:var(--sub);font-size:12.5px}
.mbr-list .mr-act{flex:0 0 auto}
.mbr-list .mr-act button{font-size:12px;padding:3px 9px}
.mbr-list .mr-empty{padding:18px 12px;text-align:center;color:var(--sub);font-size:13px}

/* ======== 付款凭证上传与审核（2026-10-16） ======== */
.rcpt-box{margin-top:14px;padding:14px 16px;border:1px dashed var(--line);
  border-radius:10px;background:var(--panel)}
.rcpt-box h4{margin:0 0 8px;font-size:14px;color:var(--ink)}
.rcpt-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:10px 0 8px}
.rcpt-hint{margin:0;font-size:12.5px;color:var(--sub);line-height:1.7}
.rcpt-hint.err{color:#a3271f}
.rcpt-hint.ok{color:var(--brand)}
.rcpt-prev{display:block;max-width:100%;max-height:260px;margin:10px 0 0;
  border:1px solid var(--line);border-radius:8px}
.rcpt-tip{margin:10px 0 0;font-size:12px;color:var(--sub)}
.mbr-badge{display:inline-block;min-width:18px;padding:0 6px;border-radius:20px;
  background:#e24b4a;color:#fff;font-size:11.5px;line-height:18px;
  text-align:center;vertical-align:1px;margin-left:4px}
.mbr-rcpt{margin-top:8px;display:flex;flex-direction:column;gap:8px;
  max-height:300px;overflow-y:auto}
.rc{display:flex;gap:10px;align-items:center;padding:9px 11px;
  border:1px solid var(--line);border-radius:9px;background:#fff;flex-wrap:wrap}
.rc .rc-main{flex:1 1 200px;min-width:0}
.rc .rc-acct{font-size:13.5px;color:var(--ink);overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.rc .rc-meta{font-size:12px;color:var(--sub);margin-top:2px}
.rc .rc-amt{flex:0 0 auto;font-size:15px;color:var(--brand);font-weight:500}
.rc .rc-act{flex:0 0 auto;display:flex;gap:6px}
.rc .rc-act button{font-size:12px;padding:4px 10px}
.rc .rc-st{flex:0 0 auto;font-size:11.5px;padding:1px 8px;border-radius:20px}
.rc .rc-st.pending{background:#fdf0e3;color:#854f0b}
.rc .rc-st.approved{background:var(--brand-soft);color:var(--brand)}
.rc .rc-st.rejected{background:#f1f2f5;color:var(--sub)}
.rc-empty{padding:16px 12px;text-align:center;color:var(--sub);font-size:13px;
  border:1px dashed var(--line);border-radius:9px}
.rc-img{max-width:100%;margin-top:10px;border:1px solid var(--line);
  border-radius:8px;display:block}

/* 会员徽标（2026-10-16）：管理员开通会员后顶栏显示这个，
   不再显示「管理员 · 次数不限」——让人一眼看出自己是会员。 */
.quota.vip{background:#e8f4ec;color:#1a7f43;border-color:#bfe3cd}
