:root{
  --primary:#FF6B35;--primary-dark:#E8551F;--primary-light:#FFF1EB;
  --dark:#1F2430;--text:#2B3140;--muted:#8A90A0;--line:#EBEDF2;--bg:#F5F6F8;
  --green:#12B76A;--blue:#2E7CF6;--red:#F04438;--gold:#C79A4B;
  --radius:14px;--shadow:0 6px 24px rgba(31,36,48,.08);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--text);background:var(--bg);font-size:14px}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;outline:none}
input,select,textarea{font-family:inherit;font-size:14px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;width:100%;background:#fff;color:var(--text);outline:none;transition:.2s}
input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(255,107,53,.12)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;border-radius:10px;background:var(--primary);color:#fff;font-size:14px;font-weight:600;transition:.2s}
.btn:hover{background:var(--primary-dark)}
.btn.ghost{background:#fff;color:var(--text);border:1px solid var(--line)}
.btn.ghost:hover{border-color:var(--primary);color:var(--primary)}
.btn.danger{background:var(--red)}
.btn.sm{padding:6px 12px;font-size:13px;border-radius:8px}
.btn:disabled{opacity:.5;cursor:not-allowed}
.card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow)}
.row{display:flex;gap:12px;align-items:center}
.grow{flex:1}
.muted{color:var(--muted)}
.tag{display:inline-block;padding:2px 8px;border-radius:6px;font-size:12px;background:var(--primary-light);color:var(--primary)}
.tag.green{background:#E8F8F0;color:var(--green)}
.tag.gray{background:#F2F3F7;color:var(--muted)}
.tag.red{background:#FEE9E7;color:var(--red)}
.tag.blue{background:#EAF2FE;color:var(--blue)}
table{width:100%;border-collapse:collapse}
th{font-size:12px;color:var(--muted);font-weight:500;text-align:left;padding:12px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:12px;border-bottom:1px solid var(--line);font-size:13px}
tr:hover td{background:#FAFBFC}
.empty{text-align:center;color:var(--muted);padding:40px 0}
.modal-mask{position:fixed;inset:0;background:rgba(17,20,28,.45);display:flex;align-items:center;justify-content:center;z-index:99;padding:20px}
.modal{background:#fff;border-radius:16px;width:520px;max-width:100%;max-height:88vh;overflow:auto;padding:22px}
.modal h3{margin:0 0 16px;font-size:17px}
.form-item{margin-bottom:14px}
.form-item label{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}
.toast{position:fixed;top:24px;left:50%;transform:translateX(-50%);background:rgba(31,36,48,.92);color:#fff;padding:10px 20px;border-radius:10px;z-index:999;font-size:13px}
/* 文件选择行：输入框 + 上传按钮 */
.file-row{display:flex;gap:8px;align-items:center}
.file-row>input{flex:1;min-width:0}
.file-row>button{white-space:nowrap;flex:none}
.hidden-file{display:none}
/* 套餐到期阻断层：PC 与移动端共用（z-index 98 < 弹层 99，保证续费弹窗可覆盖） */
.plan-block{position:fixed;inset:0;z-index:98;background:rgba(17,20,28,.62);
  display:flex;align-items:center;justify-content:center;padding:20px}
.plan-block-card{background:#fff;border-radius:16px;max-width:460px;width:100%;padding:26px 24px;text-align:center;
  box-shadow:0 12px 40px rgba(0,0,0,.18)}
.plan-block-icon{font-size:34px;line-height:1}
.plan-block-card h2{margin:10px 0 12px;font-size:19px;color:#B42318}
.plan-block-card p{margin:0 0 10px;font-size:13.5px;line-height:1.8;color:#1F2430}
.plan-block-actions{display:flex;gap:10px;margin-top:16px}
.plan-block-actions .btn{flex:1}
/* 移动端口径的套餐状态行 */
.plan-line{margin:6px 0 0;font-size:12px;color:#475467}
.plan-line.warn{color:#B25E09}
.plan-line.danger{color:#B42318;font-weight:600}
