/* ===== 潆欣 Sign 样式（底部Tab · 移动优先） ===== */
* { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
:root{
  --blue:#2563eb; --blue2:#3b82f6; --blue-l:#60a5fa;
  --green:#22c55e; --red:#ef4444; --orange:#f59e0b;
  --bg:#f3f4f6; --card:#fff; --t1:#1a1b1c; --t2:#64748b; --t3:#9ca3af;
  --line:#eef0f3;
}
html,body{ height:100%; }
body{
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'PingFang SC',sans-serif;
  background:var(--bg); color:var(--t1); font-size:13px; line-height:1.5;
}
a{ text-decoration:none; color:inherit; }
button{ font-family:inherit; cursor:pointer; }
input,select,textarea{ font-family:inherit; }

/* 桌面端：居中手机列 */
.app{
  max-width:480px; margin:0 auto; min-height:100vh;
  background:var(--bg); position:relative;
  box-shadow:0 0 40px rgba(0,0,0,.06);
}
.screen{ padding:14px 14px 92px; display:flex; flex-direction:column; gap:12px; }
.screen.has-topbar{ padding-top:12px; }

/* ===== 子页面顶部栏 ===== */
.topbar{
  position:sticky; top:0; z-index:30;
  height:50px; display:flex; align-items:center;
  background:#fff; border-bottom:1px solid var(--line);
  padding:0 12px;
}
.tb-back{ font-size:30px; color:var(--blue); width:40px; line-height:1; font-weight:300; }
.tb-title{ flex:1; text-align:center; font-size:16px; font-weight:700; }
.tb-right{ width:40px; }

/* ===== 卡片 ===== */
.card{
  background:var(--card); border-radius:16px; padding:16px;
  box-shadow:0 1px 4px rgba(17,24,39,.04);
}
.card-title{ font-size:16px; font-weight:800; margin-bottom:13px; }
.card.px0{ padding-left:0; padding-right:0; }
.card.p0{ padding:0; }

/* ===== Banner ===== */
.banner{
  position:relative; overflow:hidden;
  background:linear-gradient(120deg,#4a9ff8,#2563eb);
  border-radius:18px; padding:22px 22px 20px; color:#fff;
}
.banner-sub{ font-size:12px; opacity:.9; }
.banner-title{ font-size:26px; font-weight:900; margin:4px 0 12px; letter-spacing:.5px; }
.banner-tags{ display:flex; gap:8px; flex-wrap:wrap; margin-bottom:16px; }
.banner-tags span{ font-size:11px; background:rgba(255,255,255,.2); padding:4px 13px; border-radius:14px; }
.btn-pill-white{
  background:#fff; color:var(--blue); font-weight:700; font-size:13px;
  padding:9px 26px; border-radius:20px; border:none; display:inline-block;
}
.banner-art{ position:absolute; right:12px; top:50%; transform:translateY(-50%); width:126px; height:126px; pointer-events:none; }
.banner-art img{ width:126px; height:126px; object-fit:contain; display:block; }

/* ===== 按钮 ===== */
.btn{ display:inline-block; border:none; font-size:13px; font-weight:700; padding:11px 18px; border-radius:11px; text-align:center; }
.btn-block{ display:block; width:100%; }
.btn-primary{ background:var(--blue); color:#fff; }
.btn-blue{ background:linear-gradient(135deg,var(--blue-l),var(--blue)); color:#fff; }
.btn-gold{ background:linear-gradient(135deg,#ffc233,#ff9f0a); color:#fff; }
.btn-outline{ background:#fff; border:1.5px solid var(--blue); color:var(--blue); }
.btn-sm{ padding:7px 14px; font-size:12px; border-radius:9px; }
.btn:disabled{ opacity:.5; }

/* ===== 通知条 ===== */
.notice{ display:flex; align-items:center; gap:9px; font-size:12px; color:var(--t2); }
.notice .n-ico{ color:var(--blue); font-size:15px; flex-shrink:0; }
.notice .n-dot{ width:7px;height:7px;border-radius:50%;background:var(--blue);flex-shrink:0; }
.notice .n-txt{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* ===== 用户欢迎卡 ===== */
.hello{ display:flex; align-items:center; gap:13px; }
.hello-avatar{
  width:52px;height:52px;border-radius:50%; flex-shrink:0;
  background:linear-gradient(135deg,#cbd5e1,#94a3b8);
  border:2px solid #fff; box-shadow:0 2px 6px rgba(0,0,0,.1);
  overflow:hidden; display:flex;align-items:center;justify-content:center;
}
.hello-avatar img{ width:100%;height:100%;object-fit:cover; }
.hello-mid{ flex:1; min-width:0; }
.hello-name{ font-size:17px; font-weight:800; display:flex; align-items:center; gap:7px; }
.vip-badge{ background:linear-gradient(135deg,#fb923c,#f97316); color:#fff; font-size:10px; padding:2px 9px; border-radius:6px; font-weight:700; }
.hello-sub{ font-size:12px; color:var(--t3); margin-top:3px; }

/* ===== 大功能卡（两大入口 + 宫格） ===== */
.bigtwo{ display:flex; }
.bigtwo>a{ flex:1; text-align:center; padding:18px 10px; position:relative; }
.bigtwo>a:first-child{ border-right:1px solid var(--line); }
.bigtwo .bt-name{ font-size:17px; font-weight:800; }
.bigtwo .bt-desc{ font-size:12px; color:var(--t3); margin-top:3px; }
.hot-flag{ position:absolute; top:8px; right:12px; background:var(--red); color:#fff; font-size:9px; padding:2px 8px; border-radius:8px; }
.grid4{ display:grid; grid-template-columns:repeat(4,1fr); gap:6px; padding:14px 8px 6px; border-top:1px solid var(--line); }
.gtile{ text-align:center; padding:6px 2px; }
.gicon{
  width:50px;height:50px;margin:0 auto 6px;
  display:flex;align-items:center;justify-content:center;
}
.gicon img{ width:50px;height:50px;object-fit:contain;display:block; }
.g-blue{ background:linear-gradient(135deg,#dbeafe,#bfdbfe); }
.g-green{ background:linear-gradient(135deg,#dcfce7,#bbf7d0); }
.g-red{ background:linear-gradient(135deg,#fee2e2,#fecaca); }
.g-yellow{ background:linear-gradient(135deg,#fef3c7,#fde68a); }
.g-purple{ background:linear-gradient(135deg,#ede9fe,#ddd6fe); }
.g-name{ font-size:12px; font-weight:700; }
.g-desc{ font-size:10px; color:var(--t3); }

/* ===== 平台专享 + 右侧两卡 ===== */
.split2{ display:grid; grid-template-columns:1.55fr 1fr; gap:12px; }
.platform{
  background:linear-gradient(135deg,#eff6ff,#e3efff); border-radius:16px;
  padding:16px; position:relative; overflow:hidden; min-height:150px;
}
.pc-art{ position:absolute; right:6px; bottom:0; width:132px; height:118px; pointer-events:none; }
.pc-art img{ width:100%; height:100%; object-fit:contain; display:block; }
.pc-label{ font-size:11px; color:var(--blue); font-weight:800; position:relative; z-index:1; }
.pc-title{ font-size:16px; font-weight:800; margin-top:4px; position:relative; z-index:1; }
.pc-desc{ font-size:11px; color:var(--t3); margin-top:2px; position:relative; z-index:1; }
.pc-stats{ display:flex; gap:18px; margin-top:14px; font-size:11px; color:var(--t2); position:relative; z-index:1; }
.pc-stats b{ font-size:20px; color:var(--blue); display:block; }
.side-stack{ display:flex; flex-direction:column; gap:12px; }
.mini-card{ display:flex; align-items:center; gap:9px; padding:14px; flex:1; }
.mini-card .mc-t{ font-size:15px; font-weight:800; }
.mini-card .mc-s{ font-size:11px; color:var(--blue); margin-top:2px; }
.mini-card .mc-ico{ margin-left:auto; width:78px; height:78px; flex-shrink:0; display:flex; align-items:center; justify-content:center; }
.mini-card .mc-ico img{ width:78px; height:78px; object-fit:contain; display:block; }

/* 底部两入口 */
.row2{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.link-card{ display:flex; align-items:center; gap:10px; padding:15px 16px; }
.link-card .lc-ico{ width:28px; height:28px; flex-shrink:0; display:flex; align-items:center; justify-content:center; }
.link-card .lc-ico img{ width:28px; height:28px; object-fit:contain; display:block; }
.link-card .lc-t{ font-size:15px; font-weight:800; }
.coin-ico{ width:16px; height:16px; object-fit:contain; vertical-align:-3px; margin-right:2px; }

/* ===== 设备页 ===== */
.dstats{ display:flex; gap:0; justify-content:space-between; position:relative; padding-right:90px; }
.dstat{ text-align:center; flex:1; }
.dstat .n{ font-size:24px; font-weight:900; }
.dstat .l{ font-size:11px; color:var(--t3); }
.dstats-art{ position:absolute; right:0; top:-6px; font-size:58px; }
.linkline{ display:flex; align-items:center; flex-wrap:wrap; gap:0; font-size:12px; color:var(--blue); }
.linkline a,.linkline span{ padding:4px 10px; }
.linkline .sep{ color:#d8dee8; padding:0; }
.setrow{ display:flex; align-items:center; gap:8px; font-size:12px; color:var(--t2); }
.setrow input{ width:54px; text-align:center; background:#f8fafc;border:1px solid var(--line);border-radius:8px;padding:6px; }

/* 设备卡片 */
.dev{
  border:1.5px solid #e9edf3; border-radius:14px; padding:14px 15px;
  position:relative; overflow:hidden;
}
.dev-head{ display:flex; justify-content:space-between; align-items:flex-start; }
.dev-name{ font-size:17px; font-weight:800; color:#16a34a; display:flex; align-items:center; gap:7px; }
.green-dot{ width:11px;height:11px;border-radius:50%;background:var(--green); }
.dev-tags{ font-size:11px; margin-top:4px; color:var(--t3); }
.dev-tags b{ font-weight:800; }
.t-blue{ color:var(--blue); } .t-green{ color:#16a34a; } .t-orange{ color:var(--orange); }
.dev-icons{ display:flex; gap:16px; font-size:19px; }
.dev-icons .del{ color:var(--red); }
.dev-info{ margin-top:11px; font-size:13px; }
.dev-info .r{ display:flex; padding:2px 0; }
.dev-info .k{ width:48px; color:var(--t3); flex-shrink:0; }
.dev-info .v{ color:#374151; }
.mono{ font-family:monospace; }
a.querylink{ color:var(--blue); }
.wbar{ flex:1; height:5px; background:#edf0f4; border-radius:3px; margin-left:10px; align-self:center; }
.wbar>i{ display:block; height:100%; background:var(--blue2); border-radius:3px; }
.dev-watermark{
  position:absolute; right:18px; top:42%; font-size:52px; color:#16a34a;
  opacity:.16; font-weight:900; transform:rotate(-14deg); pointer-events:none;
}
.dev-actions{ display:flex; border-top:1px solid var(--line); margin:11px -15px -14px; }
.dev-actions a{ flex:1; text-align:center; padding:13px 0; font-size:13px; color:var(--blue); }
.dev-actions a:not(:first-child){ border-left:1px solid var(--line); }

/* ===== 我的页 ===== */
.me-head{
  background:linear-gradient(135deg,#f0f7ff,#e2eeff); border-radius:16px; padding:18px;
  position:relative; overflow:hidden;
}
.me-top{ display:flex; gap:14px; align-items:flex-start; }
.me-avatar{ width:62px;height:62px;border-radius:50%;overflow:hidden;border:3px solid #fff;box-shadow:0 3px 10px rgba(0,0,0,.12);flex-shrink:0; }
.me-avatar img{ width:100%;height:100%;object-fit:cover; }
.me-id{ font-size:20px; font-weight:800; }
.me-username{ font-size:13px; color:var(--t2); margin-top:2px; }
.me-bal{ font-size:15px; margin-top:8px; color:var(--t2); }
.me-bal b{ color:var(--blue); font-size:19px; }
.me-points{ position:absolute; top:16px; right:16px; text-align:center; }
.me-points .pbox{ width:58px;height:58px;border-radius:14px;background:linear-gradient(135deg,var(--blue-l),var(--blue));color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center; }
.me-points .pbox b{ font-size:19px; } .me-points .pbox span{ font-size:9px; }
.me-recharge{ position:absolute; right:16px; top:86px; }
.me-rank{ display:flex; align-items:center; gap:10px; margin-top:14px; padding-top:13px; border-top:1px solid rgba(37,99,235,.12); font-size:13px; color:var(--t2); }
.me-rank b{ color:var(--orange); font-size:16px; }
.me-signin{ margin-left:auto; background:#fff; color:var(--blue); border:1px solid var(--blue); font-size:12px; padding:6px 14px; border-radius:16px; font-weight:700; }

/* 设置行（带开关） */
.setcard .sc-head{ display:flex; align-items:center; gap:11px; font-size:17px; font-weight:800; }
.setcard .sc-head .sc-ico{ width:30px;text-align:center; }
.setcard .sc-body{ display:flex; gap:9px; margin-top:12px; }
.setcard .sc-body .form-input{ flex:1; }
.sc-note{ font-size:12px; color:var(--orange); margin-top:10px; }

/* 开关 */
.toggle{ width:48px;height:27px;border-radius:14px;background:#d6dbe3;border:none;position:relative;margin-left:auto;flex-shrink:0;transition:background .2s; }
.toggle::after{ content:'';position:absolute;width:23px;height:23px;background:#fff;border-radius:50%;top:2px;left:2px;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:left .2s; }
.toggle.on{ background:var(--blue); }
.toggle.on::after{ left:23px; }

/* 密钥卡 */
.keybox{ background:#f8fafc;border:1px solid var(--line);border-radius:11px;padding:13px;font-family:monospace;font-size:13px;color:#374151;word-break:break-all; }
.key-actions{ display:flex; gap:10px; margin-top:12px; }
.key-actions .btn{ flex:1; }

/* 账户操作列表 */
.oplist a{ display:flex; align-items:center; gap:13px; padding:14px 4px; border-bottom:1px solid var(--line); }
.oplist a:last-child{ border-bottom:none; }
.oplist .op-ico{ font-size:24px; }
.oplist .op-t{ font-size:15px; font-weight:700; }
.oplist .op-s{ font-size:11px; color:var(--t3); }
.oplist .arrow{ margin-left:auto; color:var(--t3); font-size:18px; }

/* ===== 表单 ===== */
.form-group{ margin-bottom:13px; }
.form-label{ display:block; font-size:13px; font-weight:700; margin-bottom:6px; }
.form-input,.form-select{
  width:100%; background:#f8fafc; border:1px solid #e4e8ee; border-radius:10px;
  padding:11px 13px; font-size:13px; color:var(--t1);
}
.form-input:focus,.form-select:focus{ outline:none; border-color:var(--blue); background:#fff; }
.form-row{ display:flex; gap:9px; }
.form-row>*{ flex:1; }
textarea.form-input{ resize:vertical; }

/* ===== 应用列表 ===== */
.approw{ display:flex; align-items:center; gap:13px; padding:13px 16px; border-bottom:1px solid var(--line); }
.approw:last-child{ border-bottom:none; }
.app-ico{ width:54px;height:54px;border-radius:14px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:24px;color:#fff; }
.app-meta{ flex:1; min-width:0; }
.app-name{ font-size:15px; font-weight:800; }
.app-bundle{ font-size:11px; color:var(--t3); margin-top:1px; white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.app-tags{ display:flex; gap:5px; margin-top:5px; }
.app-tag{ font-size:9px; background:#f1f5f9; color:var(--t2); padding:2px 8px; border-radius:6px; }
.install-btn{
  background:linear-gradient(135deg,var(--blue-l),var(--blue)); color:#fff;
  font-size:13px; font-weight:700; padding:9px 20px; border-radius:18px;border:none;
  box-shadow:0 3px 9px rgba(37,99,235,.3);
}
.searchbar{ display:flex;align-items:center;gap:9px;border:1.5px solid var(--line);border-radius:22px;padding:11px 16px;color:var(--t3);font-size:13px;background:#fff; }

/* ===== 表格 & 横向滚动 ===== */
.table-wrap{ overflow-x:auto;-webkit-overflow-scrolling:touch; }
.table{ width:100%;border-collapse:collapse;font-size:12px; }
.table th{ text-align:left;padding:9px 11px;color:var(--t2);font-weight:700;border-bottom:1px solid #e4e8ee;white-space:nowrap; }
.table td{ padding:10px 11px;border-bottom:1px solid #f4f5f7;white-space:nowrap; }

/* ===== Alert ===== */
.alert{ padding:11px 14px;border-radius:11px;font-size:13px; }
.alert-success{ background:#ecfdf5;color:#065f46; }
.alert-error{ background:#fef2f2;color:#991b1b; }
.alert-info{ background:#eff6ff;color:#1e40af; }

/* ===== 底部Tab栏 ===== */
.tabbar{
  position:fixed; bottom:0; left:50%; transform:translateX(-50%);
  width:100%; max-width:480px; height:66px;
  background:#fff; border-top:1px solid var(--line);
  display:flex; z-index:50;
  padding-bottom:env(safe-area-inset-bottom);
}
.tab{ flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; color:var(--t3); }
.tab .tab-icon{ font-size:21px; line-height:1; }
.tab .tab-label{ font-size:10px; font-weight:600; }
.tab.active{ color:var(--blue); }
.tab-add{ position:relative; }
.tab-add-btn{
  width:52px;height:52px;border-radius:50%;
  background:linear-gradient(135deg,var(--blue-l),var(--blue));
  color:#fff; font-size:32px; line-height:48px; text-align:center;
  margin-top:-26px; box-shadow:0 6px 14px rgba(37,99,235,.4); font-weight:300;
}
.tab-add .tab-label{ color:var(--blue); }

/* ===== 登录/注册（无Tab） ===== */
.auth-body{ background:#f7f9fc; }
.auth-wrap{ min-height:100vh; display:flex; flex-direction:column; padding:0 24px 30px; max-width:480px;margin:0 auto; }
.auth-top{ display:flex; align-items:center; gap:11px; padding:22px 0; }
.auth-logo{ width:52px;height:52px;border-radius:14px;background:linear-gradient(135deg,#fde68a,#fbbf24);display:flex;align-items:center;justify-content:center;font-size:26px; }
.auth-sname{ font-size:23px; font-weight:900; color:var(--blue); }
.auth-lang{ margin-left:auto; border:1px solid var(--line);border-radius:16px;padding:5px 14px;font-size:12px;color:var(--t2);background:#fff; }
.auth-card{ background:#fff;border-radius:18px;padding:24px 20px;box-shadow:0 4px 20px rgba(17,24,39,.05); margin-top:8px; }
.auth-tab{ display:block;width:100%;background:#f1f5f9;border-radius:12px;text-align:center;padding:12px;font-size:15px;font-weight:800;margin-bottom:20px; }
.auth-input{ display:flex;align-items:center;gap:10px;border:1.5px solid #e6e9ef;border-radius:12px;padding:12px 14px;margin-bottom:14px; }
.auth-input .ai-ico{ color:var(--t3);font-size:17px; }
.auth-input input{ border:none;flex:1;background:transparent;font-size:14px;outline:none;min-width:0; }
.reg-code-btn{flex:none;border:none;background:#eff6ff;color:#2563eb;font-size:12.5px;font-weight:800;
  padding:8px 12px;border-radius:9px;cursor:pointer;white-space:nowrap;}
.reg-code-btn:disabled{color:#94a3b8;background:#f1f5f9;cursor:default;}
.auth-check{ display:flex;align-items:center;gap:9px;font-size:12px;color:var(--t2);margin:6px 0 18px; }
.auth-check .box{ width:19px;height:19px;border:1.5px solid #cbd2dc;border-radius:5px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px; }
.auth-check.checked .box{ background:var(--blue);border-color:var(--blue); }
.auth-check a{ color:var(--blue); }
.auth-submit{ width:100%;background:var(--blue);color:#fff;border:none;padding:14px;border-radius:13px;font-size:16px;font-weight:800; }
.auth-foot{ text-align:center;margin-top:18px;font-size:13px;color:var(--t2); }
.auth-foot a{ color:var(--blue);font-weight:700; }
.auth-copy{ text-align:center;margin-top:auto;padding-top:26px;font-size:11px;color:var(--t3);line-height:2; }

/* 结果/完成页 */
.result-page{ text-align:center;padding:46px 24px; }
.result-page .rico{ font-size:60px; }
.result-page .rt{ font-size:20px;font-weight:800;margin:14px 0 6px; }
.result-page .rs{ font-size:13px;color:var(--t3);margin-bottom:26px;line-height:1.7; }

/* ===== 兼容类（次级页面） ===== */
.grid-2{ display:grid;grid-template-columns:1fr 1fr;gap:12px; }
.grid-3{ display:grid;grid-template-columns:repeat(3,1fr);gap:12px; }
.grid-4b{ display:grid;grid-template-columns:repeat(4,1fr);gap:12px; }
.grid-4{ display:grid;grid-template-columns:repeat(4,1fr);gap:12px; }
@media (max-width:600px){
  .grid-4,.grid-4b{ grid-template-columns:repeat(3,1fr);gap:10px; }
}
.auth-page{ min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#eff6ff,#dbeafe);padding:20px; }
.auth-box{ background:#fff;border-radius:20px;padding:32px 28px;width:100%;max-width:380px;box-shadow:0 8px 30px rgba(0,0,0,.08); }
.auth-title{ font-size:22px;font-weight:800;text-align:center;margin-bottom:6px; }
.auth-sub{ text-align:center;color:var(--t3);font-size:12px;margin-bottom:24px; }
.auth-btn{ width:100%;background:var(--blue);color:#fff;border:none;padding:12px;border-radius:10px;font-size:14px;font-weight:700; }
.auth-link{ text-align:center;margin-top:16px;font-size:12px;color:var(--t2); }
.auth-link a{ color:var(--blue);font-weight:600; }
.feature-tile{ text-align:center;padding:10px 4px; }
.feature-icon{ width:48px;height:48px;margin:0 auto 6px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:22px; }
.fi-blue{ background:linear-gradient(135deg,#dbeafe,#bfdbfe); } .fi-green{ background:linear-gradient(135deg,#dcfce7,#bbf7d0); }
.fi-red{ background:linear-gradient(135deg,#fee2e2,#fecaca); } .fi-yellow{ background:linear-gradient(135deg,#fef3c7,#fde68a); }
.fi-purple{ background:linear-gradient(135deg,#ede9fe,#ddd6fe); }
.feature-name{ font-size:12px;font-weight:600; } .feature-desc{ font-size:10px;color:var(--t3); }
.stats-row{ display:flex;gap:18px;flex-wrap:wrap; }
.stat-item{ text-align:center; } .stat-num{ font-size:24px;font-weight:800; } .stat-label{ font-size:10px;color:var(--t3); }
.text-blue{ color:var(--blue); } .text-green{ color:var(--green); } .text-red{ color:var(--red); } .text-orange{ color:var(--orange); }
.icon-wall{ display:grid;grid-template-columns:repeat(5,1fr);gap:9px; }
.iw-item{ aspect-ratio:1;border-radius:22%;background:#eef2f7; }
.welcome-card,.welcome-avatar{ }
@media(min-width:520px){ .icon-wall{ grid-template-columns:repeat(8,1fr);} }

/* ============================================================
 * 添加证书完整配置器 · 组件样式
 * （价格面板 / 分段选择器 / 售后版本 / 摘要卡 / UDID / 提交条）
 * ============================================================ */

/* ---------- 1. 实时价格面板 ---------- */
.price-panel{ padding:0; overflow:hidden; }
.pp-head{
  display:flex; align-items:center; gap:8px;
  padding:14px 16px; cursor:pointer; user-select:none;
  transition:background .18s;
}
.pp-head:active{ background:#f8fafc; }
.pp-ico{ font-size:16px; }
.pp-title{ font-size:15px; font-weight:800; }
.pp-sub{ font-size:10px; color:var(--t3); }
.pp-arrow{ margin-left:auto; font-size:13px; color:var(--t2); transition:transform .22s ease; }
.pp-close{
  width:24px;height:24px;border-radius:50%;border:none;flex-shrink:0;
  background:#f1f5f9;color:var(--t2);font-size:12px;line-height:1;
  display:flex;align-items:center;justify-content:center;
  transition:background .18s,color .18s,transform .18s;
}
.pp-close:active{ background:#e2e8f0; color:var(--t1); transform:scale(.9); }
.pp-body{
  padding:0 14px 14px;
  border-top:1px solid var(--line);
  animation:ppIn .22s ease;
}
@keyframes ppIn{ from{ opacity:0; transform:translateY(-4px);} to{ opacity:1; transform:none;} }
.price-panel.collapsed .pp-body{ display:none; }

.price-grid{ display:grid; grid-template-columns:1fr 1fr 1fr 1fr; gap:6px; margin-top:12px; }
.price-version{
  border:1.5px solid #e9edf3; border-radius:10px; padding:6px 6px;
  background:#fcfdff; transition:border-color .2s, box-shadow .2s, background .2s, transform .2s;
}
.price-version.orange{ border-color:#fde3b8; background:#fffbf4; }
.price-version.active{
  border-color:var(--blue); background:#f2f7ff;
  box-shadow:0 3px 12px rgba(37,99,235,.14); transform:translateY(-1px);
}
.price-version.orange.active{
  border-color:var(--orange); background:#fff7ec;
  box-shadow:0 3px 12px rgba(245,158,11,.18);
}
.pv-head{ display:flex; align-items:baseline; gap:3px; margin-bottom:4px; flex-wrap:wrap; }
.pv-name{ font-size:10px; font-weight:800; }
.price-version.orange .pv-name{ color:#b45309; }
.price-version.active .pv-name{ color:var(--blue); }
.price-version.orange.active .pv-name{ color:#b45309; }
.pv-days{ font-size:9px; color:var(--t3); margin-left:auto; }
.pv-rows{ display:flex; flex-direction:column; gap:3px; }
.pv-row{ display:flex; align-items:center; justify-content:space-between; font-size:9px; }
.pv-k{ color:var(--t3); font-size:8px; }
.pv-num{ font-weight:800; color:var(--blue); font-family:-apple-system,sans-serif; font-size:10px; }
.price-version.orange .pv-num{ color:#d97706; }
.pv-off{ font-size:8px; color:#cbd5e1; }
.pp-tip{ font-size:10px; color:var(--t3); text-align:center; margin-top:11px; line-height:1.6; }

.pp-reopen{
  display:flex; align-items:center; gap:8px;
  background:#fff; border-radius:14px; padding:12px 16px;
  font-size:13px; font-weight:800; color:var(--blue);
  box-shadow:0 1px 4px rgba(17,24,39,.04); cursor:pointer;
  transition:transform .18s;
}
.pp-reopen span{ margin-left:auto; font-size:11px; font-weight:600; color:var(--t3); }
.pp-reopen:active{ transform:scale(.985); }
/* [hidden] 需显式覆盖，否则 display:flex 会压过浏览器默认样式 */
.pp-reopen[hidden],.result-card[hidden]{ display:none !important; }

/* ---------- 2. 分段选择器 ---------- */
.seg-group{
  display:flex; gap:4px; padding:4px;
  background:#f1f5f9; border-radius:13px;
}
.seg-item{
  flex:1; text-align:center; padding:9px 4px;
  font-size:13px; font-weight:700; color:var(--t2);
  border-radius:10px; cursor:pointer; user-select:none;
  transition:background .2s ease, color .2s ease, box-shadow .2s ease, transform .14s ease;
}
.seg-item:active{ transform:scale(.97); }
.seg-item.active{
  background:#fff; color:var(--blue);
  box-shadow:0 2px 7px rgba(37,99,235,.16);
}

/* ---------- 3. 售后版本卡片网格 ---------- */
.ver-grid{ display:grid; grid-template-columns:1fr 1fr 1fr 1fr; gap:6px; }
.ver-card{
  position:relative; border:1.5px solid #e9edf3; border-radius:14px;
  padding:12px 12px 10px; background:#fcfdff; cursor:pointer;
  transition:border-color .2s, box-shadow .2s, background .2s, transform .16s;
}
.ver-card:active{ transform:scale(.98); }
.ver-card.orange{ border-color:#fde3b8; background:#fffbf4; }
.ver-card.active{
  border-color:var(--blue); background:#f2f7ff;
  box-shadow:0 4px 14px rgba(37,99,235,.16);
}
.ver-card.orange.active{
  border-color:var(--orange); background:#fff7ec;
  box-shadow:0 4px 14px rgba(245,158,11,.2);
}
.vc-check{
  position:absolute; top:-1px; right:-1px;
  width:24px;height:24px; border-radius:0 14px 0 14px;
  background:var(--blue); color:#fff; font-size:13px; font-weight:800;
  display:flex;align-items:center;justify-content:center;
  opacity:0; transform:scale(.5);
  transition:opacity .2s ease, transform .2s ease;
}
.ver-card.active .vc-check{ opacity:1; transform:scale(1); }
.ver-card.orange.active .vc-check{ background:var(--orange); }
.vc-name{ font-size:14px; font-weight:800; }
.ver-card.orange .vc-name{ color:#b45309; }
.vc-days{ font-size:10px; color:var(--t3); margin-top:3px; }
.ver-card.orange .vc-days{ color:#d97706; }
.vc-price{ font-size:13px; font-weight:800; color:var(--blue); margin-top:7px; }
.ver-card.orange .vc-price{ color:#d97706; }
.vc-price.off{ font-size:10px; color:#cbd5e1; font-weight:600; }

/* ---------- 4. 当前选择 · 渐变摘要卡 ---------- */
.sel-summary{
  position:relative; overflow:hidden;
  background:linear-gradient(135deg,#6366f1,#2563eb 55%,#3b82f6);
  border-radius:16px; padding:16px 18px; color:#fff;
  box-shadow:0 6px 18px rgba(37,99,235,.28);
}
.sel-summary::after{
  content:''; position:absolute; right:-30px; top:-40px;
  width:130px;height:130px;border-radius:50%;
  background:rgba(255,255,255,.12);
}
.ss-top{ display:flex; align-items:center; gap:8px; position:relative; z-index:1; }
.ss-label{
  font-size:10px; letter-spacing:1px; opacity:.9;
  background:rgba(255,255,255,.2); padding:3px 10px; border-radius:10px;
}
.ss-price{ margin-left:auto; font-size:20px; font-weight:900; transition:opacity .2s; }
.ss-price.off{ font-size:13px; font-weight:700; opacity:.85; }
.ss-main{ font-size:19px; font-weight:900; margin-top:10px; position:relative; z-index:1; letter-spacing:.3px; }
.ss-sub{ font-size:11px; opacity:.9; margin-top:4px; position:relative; z-index:1; }

/* ---------- 5. UDID 获取 ---------- */
.udid-area{ min-height:92px; line-height:1.7; letter-spacing:.4px; font-size:12px; }
.udid-btns{ display:flex; gap:9px; margin-top:10px; }
.udid-btn{
  flex:1; display:block; text-align:center; border:none;
  font-size:13px; font-weight:700; padding:11px 8px; border-radius:11px;
  color:#fff; cursor:pointer;
  transition:transform .16s ease, box-shadow .2s ease, opacity .2s;
}
.udid-btn:active{ transform:scale(.97); }
.udid-btn.blue{ background:linear-gradient(135deg,var(--blue-l),var(--blue)); box-shadow:0 3px 10px rgba(37,99,235,.26); }
.udid-btn.orange{ background:linear-gradient(135deg,#fbbf24,var(--orange)); box-shadow:0 3px 10px rgba(245,158,11,.26); }
.udid-btn.green{ background:linear-gradient(135deg,#4ade80,var(--green)); box-shadow:0 3px 10px rgba(34,197,94,.26); }
.udid-note{ font-size:10px; color:var(--t3); margin-top:9px; line-height:1.7; }

/* ---------- 6. 底部提交条 ---------- */
.submit-bar{
  position:sticky; bottom:74px; z-index:20;
  background:rgba(255,255,255,.94); backdrop-filter:blur(10px);
  border-radius:16px; padding:11px 12px;
  box-shadow:0 -2px 18px rgba(17,24,39,.09);
}
.submit-btn{ padding:14px; font-size:15px; font-weight:800; letter-spacing:.3px; }
.submit-hint{ text-align:center; font-size:10px; color:var(--t3); margin-top:7px; }

/* ---------- 7. UDID 获取页 ---------- */
.udid-guide .ug-step{ display:flex; align-items:center; gap:10px; padding:7px 0; }
.ug-n{
  width:22px;height:22px;border-radius:50%;flex-shrink:0;
  background:linear-gradient(135deg,var(--blue-l),var(--blue)); color:#fff;
  font-size:11px; font-weight:800;
  display:flex;align-items:center;justify-content:center;
}
.ug-t{ font-size:13px; color:#374151; }
.ug-warn{
  margin-top:10px; font-size:11px; color:#b45309;
  background:#fff7ec; border-radius:10px; padding:9px 11px; line-height:1.6;
}

.share-card .share-link{
  background:#f8fafc; border:1px dashed #cbd5e1; border-radius:11px;
  padding:11px 12px; font-size:11px; color:#374151;
  word-break:break-all; line-height:1.7;
}

.poll-card{ }
.poll-head{ display:flex; align-items:center; gap:9px; }
.poll-dot{
  width:9px;height:9px;border-radius:50%;flex-shrink:0;
  background:var(--orange); animation:pollPulse 1.3s ease-in-out infinite;
}
.poll-dot.ok{ background:var(--green); animation:none; }
@keyframes pollPulse{ 0%,100%{ opacity:1; transform:scale(1);} 50%{ opacity:.35; transform:scale(.75);} }
.poll-text{ font-size:13px; font-weight:700; }
.poll-bar{ height:5px; background:#eef2f7; border-radius:3px; margin-top:11px; overflow:hidden; }
.poll-bar>i{ display:block; height:100%; width:0; border-radius:3px; background:linear-gradient(90deg,var(--blue-l),var(--blue)); transition:width .5s ease; }

.result-card{ text-align:center; animation:rcIn .3s ease; }
@keyframes rcIn{ from{ opacity:0; transform:translateY(8px);} to{ opacity:1; transform:none;} }
.rc-ico{ font-size:40px; line-height:1; }
.rc-title{ font-size:17px; font-weight:900; color:#16a34a; margin:8px 0 12px; }
.rc-udid{
  background:#f0fdf4; border:1px solid #bbf7d0; border-radius:11px;
  padding:13px 12px; font-size:14px; font-weight:800; color:#15803d;
  word-break:break-all; letter-spacing:.6px;
}
.rc-meta{ font-size:11px; color:var(--t3); margin-top:9px; line-height:1.7; }
.result-card .udid-btns{ margin-top:14px; }

/* ===== 系统体检 ===== */
.health-summary .hs-nums{display:flex;justify-content:space-around;margin-bottom:16px;}
.hs-n{text-align:center;}
.hs-n .n{font-size:30px;font-weight:800;line-height:1;}
.hs-n .l{font-size:12px;color:var(--t3);margin-top:5px;}
.hs-n.ok .n{color:var(--green);}
.hs-n.warn .n{color:var(--orange);}
.hs-n.bad .n{color:var(--red);}
.hs-tip{font-size:11px;color:var(--t3);line-height:1.6;margin-top:12px;}

.hrow{display:flex;align-items:flex-start;gap:9px;padding:9px 0;border-bottom:1px solid #f1f5f9;}
.hrow:last-child{border-bottom:none;}
.h-ico{flex:none;width:20px;text-align:center;font-size:13px;line-height:1.5;}
.h-label{flex:none;min-width:108px;font-size:12.5px;font-weight:600;color:var(--t1);line-height:1.5;}
.h-detail{flex:1;font-size:11.5px;line-height:1.55;text-align:right;color:var(--t2);word-break:break-word;}
.h-detail.ok{color:var(--green);}
.h-detail.warn{color:var(--orange);}
.h-detail.bad{color:var(--red);}
.h-fix{display:block;font-style:normal;color:var(--t3);margin-top:2px;font-size:10.5px;}
@media (max-width:360px){.h-label{min-width:86px;}}

/* ===== 已有证书检测 ===== */
.exist-card{border-left:4px solid var(--green);}
.ec-head{display:flex;gap:11px;align-items:flex-start;margin-bottom:12px;}
.ec-ico{flex:none;font-size:24px;line-height:1.2;}
.ec-title{font-size:14px;font-weight:800;color:var(--t1);line-height:1.4;}
.ec-sub{font-size:11px;color:var(--t3);margin-top:3px;line-height:1.5;}
.ec-row{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-top:1px dashed #e5e7eb;flex-wrap:wrap;}
.ec-name{font-size:12.5px;font-weight:700;color:var(--green);}
.ec-meta{font-size:10.5px;color:var(--t3);text-align:right;}
.ec-actions{display:flex;gap:9px;margin-top:13px;flex-wrap:wrap;}
.ec-actions .btn{flex:1;min-width:130px;}

/* ===== 体检行内操作 / 安装日志 ===== */
.hc-action{display:inline-block;margin-top:7px;padding:6px 12px;border-radius:8px;background:#2563eb;color:#fff !important;font-size:11.5px;font-weight:700;white-space:nowrap;}
.hc-action:active{opacity:.85;}
.root-cmd{background:#0f172a;color:#7ee787;padding:11px 12px;border-radius:9px;font-size:11px;line-height:1.6;word-break:break-all;margin-bottom:9px;}
.log-line{padding:8px 0;border-top:1px dashed #e5e7eb;}
.log-line span{font-size:10.5px;color:var(--t3);word-break:break-all;}
.log-line pre{margin:5px 0 0;font-size:10.5px;color:var(--t2);white-space:pre-wrap;word-break:break-all;font-family:inherit;}

/* ============ 证书权限弹窗 ============ */
.perm-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:9999;display:none;align-items:flex-end;justify-content:center;}
.perm-overlay.show{display:flex;}
.perm-sheet{width:100%;max-width:520px;background:#fff;border-radius:20px 20px 0 0;max-height:88vh;display:flex;flex-direction:column;overflow:hidden;animation:permUp .25s ease;}
@keyframes permUp{from{transform:translateY(40px);opacity:.6;}to{transform:translateY(0);opacity:1;}}
.perm-sheet-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 6px;}
.perm-sheet-head h3{margin:0;font-size:17px;color:#111827;}
.perm-close{border:none;background:#f3f4f6;width:30px;height:30px;border-radius:50%;font-size:18px;line-height:1;color:#374151;cursor:pointer;}
.perm-tabs{display:flex;gap:6px;padding:8px 14px;}
.perm-tab{flex:1;border:none;background:#f3f4f6;color:#6b7280;font-size:13px;padding:8px 0;border-radius:10px;cursor:pointer;}
.perm-tab.active{background:#2563eb;color:#fff;font-weight:600;}
.perm-pane{padding:6px 16px 22px;overflow-y:auto;-webkit-overflow-scrolling:touch;}
.perm-filter{font-size:12.5px;color:#2563eb;font-weight:600;padding:6px 2px 10px;}
.perm-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;}
.perm-chip{display:flex;align-items:center;gap:5px;background:#f3f4f6;border-radius:9px;padding:8px 6px;font-size:11.5px;color:#9ca3af;}
.perm-chip-dot{width:8px;height:8px;border-radius:50%;background:#d1d5db;flex:none;}
.perm-chip.on{background:#ecfdf5;color:#047857;}
.perm-chip.on .perm-chip-dot{background:#22c55e;}
.perm-chip-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.perm-kv{display:flex;justify-content:space-between;gap:12px;padding:11px 2px;border-bottom:1px solid #f3f4f6;font-size:13.5px;}
.perm-kv span{color:#6b7280;}
.perm-kv b{color:#111827;font-weight:600;text-align:right;word-break:break-all;}
.perm-devlist div{font-size:11.5px;color:#374151;padding:7px 2px;border-bottom:1px solid #f3f4f6;word-break:break-all;}
@media(min-width:600px){.perm-overlay{align-items:center;}.perm-sheet{border-radius:18px;}}

/* ============================================================
 * 前台新增组件
 * 站点品牌条 / 分类筛选 / IPA 解析预览 / 签到 / 邮箱绑定 / 客服 / 弹窗公告
 * ============================================================ */
[hidden]{ display:none !important; }

/* ---------- 站点品牌条（配置了 Logo 或客服才出现） ---------- */
.yx-brand{ display:flex; align-items:center; gap:9px; padding:2px 2px 0; }
.yx-brand-logo{
  width:34px;height:34px;border-radius:10px;flex:none;overflow:hidden;
  background:linear-gradient(135deg,#dbeafe,#bfdbfe);
  display:flex;align-items:center;justify-content:center;font-size:18px;
}
.yx-brand-logo .yx-logo{ width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block; }
.yx-brand-name{ font-size:14px;font-weight:800;letter-spacing:.3px; }
.yx-brand-kf{ margin-left:auto;font-size:12px;font-weight:700;color:var(--blue);background:#fff;border:1px solid #dbeafe;border-radius:14px;padding:5px 12px; }
.yx-logo-emoji{ line-height:1; }

/* ---------- 应用列表：搜索 / 分类 / 空态 ---------- */
.searchbar input{ flex:1;min-width:0;border:none;background:transparent;outline:none;font-size:13px;color:var(--t1); }
.searchbar input::placeholder{ color:var(--t3); }
.cat-tabs{
  display:flex;gap:8px;max-width:100%;padding:2px 0 4px;
  overflow-x:auto;-webkit-overflow-scrolling:touch;
}
.cat-tabs::-webkit-scrollbar{ display:none; }
.cat-tab{
  flex:none;white-space:nowrap;font-size:12.5px;font-weight:700;color:var(--t2);
  background:#fff;border:1.5px solid var(--line);border-radius:16px;padding:7px 15px;
}
.cat-tab.active{
  background:linear-gradient(135deg,var(--blue-l),var(--blue));
  border-color:transparent;color:#fff;box-shadow:0 3px 9px rgba(37,99,235,.28);
}
.app-ico-img{ width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block; }
.app-empty{ text-align:center;font-size:12.5px;color:var(--t3);padding:26px 14px;line-height:1.9;overflow-wrap:anywhere; }
.app-warn{ background:#fff7ec;border-radius:10px;padding:11px 12px;font-size:12px;color:#b45309;line-height:1.8;overflow-wrap:anywhere; }

/* ---------- IPA 自动解析预览 ---------- */
.ipa-preview{ margin:0 0 13px; }
.ipa-card{ display:flex;align-items:center;gap:12px;border:1.5px solid #e9edf3;background:#fcfdff;border-radius:13px;padding:12px; }
.ipa-card.ok{ border-color:#bbf7d0;background:#f0fdf4; }
.ipa-card.err{ border-color:#fecaca;background:#fef2f2; }
.ipa-icon{ width:52px;height:52px;flex:none;border-radius:13px;background:#eef2f7;display:flex;align-items:center;justify-content:center;font-size:24px;overflow:hidden; }
.ipa-icon img{ width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block; }
.ipa-meta{ flex:1;min-width:0; }
.ipa-name{ font-size:14px;font-weight:800;word-break:break-all;overflow-wrap:anywhere; }
.ipa-sub{ font-size:11px;color:var(--t3);margin-top:3px;word-break:break-all;overflow-wrap:anywhere; }
.ipa-tip{ font-size:11px;color:#15803d;margin-top:4px; }
.ipa-note{ font-size:10.5px;color:var(--t3);margin-top:9px;line-height:1.7; }

/* ---------- 签到 ---------- */
.me-signin-form{ margin-left:auto;display:flex; }
.me-signin.done{ background:#ecfdf5;color:#16a34a;border-color:#bbf7d0;opacity:1; }
.me-signinfo{ display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:11px;font-size:12px;color:var(--t2); }
.me-signinfo b{ color:var(--blue);font-size:14px; }
.me-signnote{ font-size:10.5px;color:var(--t3);margin-top:7px;line-height:1.7; }

/* ---------- 设置卡（邮箱 / 微信） ---------- */
.sc-toggle{ margin-left:auto;display:flex; }
.sc-bound{ font-size:12.5px;color:var(--t2);margin-top:10px;word-break:break-all;overflow-wrap:anywhere; }
.sc-bound b{ color:var(--t1); }
.link-btn{ border:none;background:transparent;color:var(--blue);font-size:12px;font-weight:700;padding:0 0 0 8px; }
.sc-msg{ font-size:11.5px;color:var(--t3);margin-top:9px;line-height:1.7;word-break:break-all; }
.sc-msg.ok{ color:#15803d; }
.sc-msg.err{ color:#b91c1c; }
.sc-state{ flex:1;font-size:13px;color:var(--t2);align-self:center; }
.btn-muted{ background:#eef2f7;color:var(--t2); }
.sc-body[hidden],.email-bind[hidden]{ display:none !important; }

/* ---------- 页脚：客服入口 + 备案号 ---------- */
.yx-foot{ display:flex;flex-direction:column;gap:10px;min-width:0; }
.kf-block{ background:#fff;border-radius:16px;padding:15px 16px;box-shadow:0 1px 4px rgba(17,24,39,.04);min-width:0; }
.kf-head{ display:flex;align-items:center;gap:8px;font-size:14px;font-weight:800;margin-bottom:11px; }
.kf-btns{ display:flex;flex-wrap:wrap;gap:9px; }
.kf-btn{
  display:inline-flex;align-items:center;gap:6px;
  border:1.5px solid #dbeafe;background:#f5f9ff;color:var(--blue);
  font-size:12.5px;font-weight:700;border-radius:11px;padding:9px 14px;
}
.kf-btn:active{ opacity:.85; }
.kf-ico{ font-size:14px; }
.kf-values{ margin-top:11px; }
/* 客服号 / 客服链接可能很长，flex 子项必须给 min-width:0 + overflow-wrap:anywhere，
   否则 min-content 撑开父级，窄屏会出现横向溢出 */
.kf-row{ display:flex;justify-content:space-between;gap:12px;font-size:11.5px;color:var(--t3);padding:5px 0;border-top:1px dashed #eef0f3;min-width:0; }
.kf-row span{ flex:none; }
.kf-row b{ flex:1 1 auto;min-width:0;color:#374151;text-align:right;word-break:break-all;overflow-wrap:anywhere; }
.yx-beian{ text-align:center;font-size:11px;color:var(--t3);padding:2px 0 4px;overflow-wrap:anywhere; }
.yx-beian a{ color:var(--t3); }
.yx-disabled-link{ color:var(--t3);font-weight:700; }

/* ---------- 弹窗公告 ---------- */
.yx-popup{ position:fixed;inset:0;z-index:9998;display:flex;align-items:center;justify-content:center;padding:26px; }
.yx-popup-mask{ position:absolute;inset:0;background:rgba(15,23,42,.5); }
.yx-popup-box{
  position:relative;width:100%;max-width:340px;background:#fff;border-radius:18px;
  padding:20px 18px;box-shadow:0 18px 40px rgba(15,23,42,.25);animation:yxPop .22s ease;
}
@keyframes yxPop{ from{ opacity:0;transform:translateY(10px) scale(.97);} to{ opacity:1;transform:none;} }
.yx-popup-title{ font-size:16px;font-weight:900;margin-bottom:10px; }
.yx-popup-body{ font-size:13px;color:#374151;line-height:1.9;max-height:52vh;overflow-y:auto;word-break:break-word;overflow-wrap:anywhere;margin-bottom:16px; }

/* ---------- 登录 / 注册页 Logo ---------- */
.auth-logo .yx-logo{ width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block; }

/* ============ 应用安装 底部弹窗 ============ */
.inst-overlay{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:80;display:none;}
.inst-overlay.show{display:block;}
.inst-sheet{position:absolute;left:0;right:0;top:0;bottom:0;display:flex;flex-direction:column;
  background:#fff;border-radius:0;overflow:hidden;animation:instUp .28s ease;}
@keyframes instUp{from{transform:translateY(40px);opacity:.4;}to{transform:none;opacity:1;}}
.inst-head{display:flex;align-items:center;justify-content:space-between;
  padding:max(14px,env(safe-area-inset-top)) 18px 10px;flex:none;background:#fff;}
.inst-head h3{margin:0;font-size:17px;font-weight:800;}
.inst-close{background:none;border:none;font-size:26px;color:var(--t3);cursor:pointer;line-height:1;padding:0;}
.inst-body{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:0 16px calc(env(safe-area-inset-bottom) + 14px);}
.inst-app{display:flex;align-items:center;gap:13px;background:linear-gradient(135deg,#f0f6ff,#f8fbff);
  border:1px solid #e3edfb;border-radius:14px;padding:13px;margin-bottom:16px;}
.inst-app .ia{width:54px;height:54px;border-radius:13px;overflow:hidden;flex:none;background:#e2e8f0;
  display:flex;align-items:center;justify-content:center;font-size:24px;position:relative;cursor:pointer;}
.inst-app .ia img{width:100%;height:100%;object-fit:cover;}
.inst-app .ia .badge{position:absolute;right:-2px;bottom:-2px;width:20px;height:20px;border-radius:50%;
  background:var(--blue);color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center;border:2px solid #fff;}
.inst-app .nm{font-size:16px;font-weight:800;}
.inst-app .bd{font-size:11px;color:var(--t3);margin-top:2px;word-break:break-all;}
.inst-app .tip{font-size:11px;color:var(--blue);margin-top:3px;}
.inst-sec{font-size:14px;font-weight:800;margin:16px 0 9px;color:var(--t1);}
.inst-opt{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:13px;
  padding:12px 13px;margin-bottom:9px;cursor:pointer;}
.inst-opt input{position:absolute;opacity:0;pointer-events:none;}
.inst-box{width:23px;height:23px;border-radius:7px;border:2px solid #cbd5e1;flex:none;position:relative;transition:.15s;}
.inst-opt input:checked + .inst-box{background:var(--blue);border-color:var(--blue);}
.inst-opt input:checked + .inst-box::after{content:"";position:absolute;left:7px;top:3px;width:6px;height:11px;
  border:solid #fff;border-width:0 2.5px 2.5px 0;transform:rotate(45deg);}
.inst-opt .ot-t{font-size:13.5px;font-weight:700;display:block;}
.inst-opt .ot-s{font-size:11px;color:var(--t3);margin-top:1px;line-height:1.5;display:block;}
.inst-dylib{border:1px solid var(--line);border-radius:13px;padding:11px 13px;margin-bottom:9px;background:#fafbfc;}
.inst-dylib .dl-t{font-size:12px;color:var(--t2);margin-bottom:7px;}
.inst-dylib .dl-chip{display:inline-flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--line);
  border-radius:999px;padding:6px 11px;font-size:12px;margin:0 6px 6px 0;cursor:pointer;}
.inst-dylib .dl-chip.on{background:#eff6ff;border-color:var(--blue);color:var(--blue);}
.inst-dylib .dl-chip .x{width:15px;height:15px;border-radius:5px;border:1.8px solid #cbd5e1;position:relative;}
.inst-dylib .dl-chip.on .x{background:var(--blue);border-color:var(--blue);}
.inst-dylib .dl-chip.on .x::after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;
  border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg);}
.inst-inject{border:1px solid var(--line);border-radius:13px;padding:12px 13px;margin-bottom:9px;background:#fafbfc;}
.inst-inject label.fbtn{display:block;text-align:center;background:var(--blue);color:#fff;padding:12px;border-radius:10px;
  font-weight:700;font-size:13.5px;margin:8px 0;cursor:pointer;}
.inst-inject .meta{font-size:11px;color:var(--t3);line-height:1.7;}
.inst-submit{position:sticky;bottom:calc(env(safe-area-inset-bottom) + 8px);width:100%;
  background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:none;
  padding:15px;border-radius:14px;font-size:16px;font-weight:800;margin-top:10px;cursor:pointer;
  box-shadow:0 6px 18px rgba(37,99,235,.32);z-index:2;}
.inst-submit:disabled{opacity:.5;}
@media(min-width:760px){.inst-sheet{left:50%;right:auto;top:50%;bottom:auto;transform:translate(-50%,-50%);width:480px;max-height:88vh;border-radius:20px;}
  .inst-head{padding-top:16px;}
  @keyframes instUp{from{transform:translate(-50%,calc(-50%+30px));opacity:.4;}to{transform:translate(-50%,-50%);opacity:1;}}}

/* 我的 - 头像设置 */
.avatar-card{padding:14px 15px;}
.av-row{display:flex;align-items:center;gap:12px;}
.av-now{width:52px;height:52px;border-radius:14px;overflow:hidden;flex:none;background:#eef2ff;}
.av-now img{width:100%;height:100%;object-fit:cover;display:block;}
.av-fallback{width:100%;height:100%;background:linear-gradient(135deg,#93c5fd,#3b82f6);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:23px;font-weight:800;}
.av-btn{display:flex;align-items:center;justify-content:center;width:100%;
  padding:11px;border-radius:11px;font-size:13.5px;font-weight:800;cursor:pointer;border:none;}
.av-upload{background:#eff6ff;color:#2563eb;}
.av-upload:hover{background:#dbeafe;}
.av-qq{background:#f0fdf4;color:#16a34a;}
.av-qq:hover{background:#dcfce7;}

/* 我的 - 等级与今日限额 */
.lv-card{padding:14px 15px;}
.lv-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;}
.lv-name{font-size:15px;font-weight:800;color:#b45309;}
.lv-up{font-size:11.5px;color:var(--blue);text-decoration:none;font-weight:700;}
.lv-grid{display:flex;gap:11px;}
.lv-box{flex:1;background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:11px 12px;min-width:0;}
.lv-k{font-size:11.5px;color:var(--t3);}
.lv-v{font-size:14px;font-weight:800;margin:5px 0 7px;white-space:nowrap;}
.lv-bar{height:6px;border-radius:99px;background:#e5e7eb;overflow:hidden;}
.lv-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#fbbf24,#d97706);}

/* ============ 抽屉（折叠面板） ============ */
.drw{border:1px solid var(--line);border-radius:13px;margin-bottom:10px;background:#fafbfc;overflow:hidden;}
.drw-head{display:flex;align-items:center;gap:8px;width:100%;background:#fff;border:none;
  padding:13px 14px;cursor:pointer;text-align:left;}
.drw-tt{font-size:14px;font-weight:800;color:var(--t1);flex:none;}
.drw-sub{font-size:11.5px;color:var(--t3);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.drw-chev{flex:none;font-size:20px;color:var(--t3);line-height:1;transition:transform .22s ease;}
.drw.open .drw-chev{transform:rotate(90deg);}
.drw-body{max-height:0;overflow:hidden;transition:max-height .26s ease;}
.drw.open .drw-body{max-height:2400px;}
.drw-body > *{padding:11px 13px 4px;}
.drw-body .inst-opt:last-child{margin-bottom:9px;}

/* ============ 签名记录 ============ */
.st-section-title{font-size:13px;font-weight:800;color:var(--t2);margin:14px 4px 9px;}
.st-progress{display:flex;align-items:center;gap:14px;background:linear-gradient(135deg,#eff6ff,#f8fbff);border-color:#dbeafe;}
.st-spin{width:34px;height:34px;border-radius:50%;border:3px solid #bfdbfe;border-top-color:var(--blue);
  animation:stspin .8s linear infinite;flex:none;}
@keyframes stspin{to{transform:rotate(360deg);}}
.st-row{display:flex;align-items:center;gap:12px;padding:13px 15px;}
.st-row .st-ic{width:46px;height:46px;border-radius:12px;flex:none;overflow:hidden;background:#eef2f7;
  display:flex;align-items:center;justify-content:center;font-size:22px;}
.st-row .st-ic img{width:100%;height:100%;object-fit:cover;}
.st-meta{flex:1;min-width:0;}
.st-name{font-size:14px;font-weight:800;display:flex;align-items:center;gap:8px;}
.st-sub{font-size:11px;color:var(--t3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.st-badge{font-size:10.5px;font-weight:700;padding:2px 9px;border-radius:999px;}
.st-badge.warn{background:#fef3c7;color:#b45309;}
.st-badge.ok{background:#dcfce7;color:#15803d;}
.st-badge.bad{background:#fee2e2;color:#b91c1c;}
.st-install{display:flex;align-items:center;justify-content:center;width:100%;
  padding:12px 16px;font-size:15px;font-weight:800;margin:0 0 9px;}
.st-row.hl{border-color:var(--blue);box-shadow:0 0 0 2px rgba(37,99,235,.25);}
a.st-entry{display:flex;align-items:center;gap:12px;color:var(--t1);}
a.st-entry:hover{border-color:var(--blue);}

/* 成品卡片 + 操作按钮行 */
.st-done-card{padding:13px 15px 12px;}
.st-done-card.hl{border-color:var(--blue);box-shadow:0 0 0 2px rgba(37,99,235,.25);}
.st-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.st-actions a{flex:1;min-width:74px;text-align:center;font-size:12px;font-weight:700;color:var(--t2);
  background:#f1f5f9;border-radius:9px;padding:9px 6px;text-decoration:none;}
.st-actions a:hover{background:#e2e8f0;}
.st-actions form{flex:1;min-width:74px;display:inline;}
.st-del-btn{width:100%;font-size:12px;font-weight:700;color:#dc2626;background:#fee2e2;border:none;
  border-radius:9px;padding:9px 6px;cursor:pointer;}
.st-del-btn:hover{background:#fecaca;}

/* 签名任务进度 */
.st-task-card{padding:13px 15px 12px;}
.st-bar{height:9px;border-radius:999px;background:#e8edf3;overflow:hidden;}
.st-bar-fill{height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,#3b82f6,#2563eb);
  background-size:24px 24px;transition:width .5s ease;position:relative;}
.st-bar-fill::after{content:"";position:absolute;inset:0;border-radius:999px;
  background-image:linear-gradient(45deg,rgba(255,255,255,.28) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.28) 50%,rgba(255,255,255,.28) 75%,transparent 75%);
  background-size:18px 18px;animation:stbar 1s linear infinite;}
@keyframes stbar{to{background-position:18px 0;}}
.st-stage{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:9px;}
.st-stage-txt{font-size:11.5px;color:var(--t2);line-height:1.5;}
.st-elapsed{font-size:11px;color:var(--blue);font-weight:700;flex:none;font-variant-numeric:tabular-nums;}
.inst-inject .ij-hint{font-size:12px;color:var(--t2);line-height:1.7;margin-bottom:9px;}
.inst-inject .ij-hint b{color:var(--t1);}
.inst-inject .ij-files{font-size:12px;color:var(--blue);line-height:1.7;background:#fff;border:1px solid var(--line);
  border-radius:10px;padding:9px 11px;margin:2px 0 4px;word-break:break-all;}

/* 签名诊断 */
.dg-result{font-weight:800;font-size:15px;padding:16px;}
.dg-ok{background:#dcfce7;color:#15803d;border-color:#86efac;}
.dg-warn{background:#fef9c3;color:#a16207;border-color:#fde047;}
.dg-bad{background:#fee2e2;color:#b91c1c;border-color:#fca5a5;}
.dg-card .dg-title{font-size:15px;font-weight:800;}
.dg-card .dg-sub{font-size:11px;color:var(--t3);margin-top:3px;}
.dg-table{width:100%;border-collapse:collapse;margin-top:12px;font-size:12px;}
.dg-table td{padding:9px 4px;border-top:1px solid var(--line);vertical-align:top;}
.dg-table td.k{color:var(--t2);width:34%;}
.dg-table td.v{word-break:break-all;}
.dg-table td.s{width:22px;text-align:center;font-weight:800;}
.dg-table td.s.dg-ok{color:#16a34a;} .dg-table td.s.dg-bad{color:#dc2626;} .dg-table td.s.dg-warn{color:#d97706;}
.dg-fatal{background:#fef2f2;color:#991b1b;font-size:12.5px;line-height:1.8;border-color:#fecaca;}
.dg-warn{background:#fffbeb;color:#92400e;font-size:12.5px;line-height:1.8;border-color:#fde68a;}
.st-dg{font-size:11.5px;color:var(--t3);margin-top:8px;text-align:center;display:block;}

/* ===================== 会员中心 vip.php ===================== */
.vip-hero{border-radius:18px;padding:18px 17px;color:#fff;margin-bottom:14px;
  background:linear-gradient(135deg,#f59e0b,#d97706);
  box-shadow:0 10px 24px rgba(217,119,6,.28);}
.vh-top{display:flex;align-items:center;gap:13px;}
.vh-crown{width:48px;height:48px;border-radius:14px;background:rgba(255,255,255,.18);
  display:flex;align-items:center;justify-content:center;font-size:25px;flex:none;}
.vh-name{font-size:19px;font-weight:900;}
.vh-sub{font-size:11.5px;opacity:.92;margin-top:3px;line-height:1.5;}
.vh-quota{display:flex;margin-top:16px;background:rgba(255,255,255,.14);border-radius:13px;overflow:hidden;}
.vh-quota>div{flex:1;text-align:center;padding:11px 4px;}
.vh-quota>div:not(:last-child){border-right:1px solid rgba(255,255,255,.18);}
.vh-quota b{display:block;font-size:14px;font-weight:900;}
.vh-quota span{display:block;font-size:10.5px;opacity:.9;margin-top:3px;}
.vip-section-title{font-size:14px;font-weight:900;color:var(--t2);margin:4px 2px 11px;}
.vip-card{position:relative;background:#fff;border:1.5px solid #eef0f4;border-radius:17px;
  padding:16px 16px 15px;margin-bottom:13px;}
.vip-card.cur{border-color:#f59e0b;box-shadow:0 8px 20px rgba(245,158,11,.14);}
.vip-card.best{border-color:#fbbf24;}
.vip-flag{position:absolute;top:-9px;right:15px;background:linear-gradient(135deg,#fbbf24,#f59e0b);
  color:#fff;font-size:10.5px;font-weight:800;padding:4px 11px;border-radius:9px;}
.vc-head{display:flex;justify-content:space-between;align-items:flex-end;gap:10px;}
.vc-name{font-size:16px;font-weight:900;}
.vc-tag{font-size:10.5px;font-weight:800;color:#d97706;background:#fef3c7;
  padding:2px 8px;border-radius:7px;vertical-align:middle;}
.vc-price b{font-size:22px;font-weight:900;color:#d97706;}
.vc-price span{font-size:11px;color:var(--t3);}
.vc-benefits{margin:13px 0 14px;}
.vc-row{display:flex;justify-content:space-between;align-items:center;
  font-size:12.5px;color:var(--t2);padding:8px 0;border-bottom:1px solid #f4f5f7;}
.vc-row b{font-size:12.5px;color:var(--t1);}
.vc-btn{width:100%;border:none;border-radius:12px;padding:13px;font-size:14.5px;font-weight:900;
  color:#fff;background:linear-gradient(135deg,#fbbf24,#f59e0b);cursor:pointer;}
.vc-btn.ghost{background:#fff;color:#d97706;border:1.5px solid #f59e0b;}
.vc-btn:disabled{background:#f1f5f9;color:#94a3b8;cursor:default;}
.vip-tip{font-size:11.5px;color:var(--t3);line-height:1.9;background:#f8fafc;
  border:1px solid var(--line);border-radius:13px;padding:12px 14px;}
.vip-tip a{color:var(--blue);font-weight:700;}

/* 我的 - 开通会员按钮 */
.lv-open-btn{display:flex;align-items:center;justify-content:center;margin-top:13px;
  padding:12px;border-radius:12px;font-size:13.5px;font-weight:900;text-decoration:none;
  color:#92400e;background:linear-gradient(135deg,#fde68a,#fbbf24);}
.lv-open-btn:hover{filter:brightness(1.02);}

/* ===================== 分片续传上传组件 .ru ===================== */
.ru{background:#f8fafc;border:1px solid var(--line);border-radius:14px;padding:13px 14px;margin-top:11px;}
.ru-head{display:flex;justify-content:space-between;align-items:center;gap:10px;}
.ru-name{font-size:13px;font-weight:800;color:var(--t1);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;}
.ru-pct{font-size:14px;font-weight:900;color:var(--blue);flex:none;}
.ru-bar{height:8px;border-radius:6px;background:#e5e7eb;margin:10px 0 9px;overflow:hidden;}
.ru-bar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#3b82f6,#2563eb);
  width:0;transition:width .2s;}
.ru-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.ru-size{font-size:11px;color:var(--t2);}
.ru-speed{font-size:11px;font-weight:800;color:#059669;}
.ru-toggle,.ru-retry{margin-left:auto;border:1px solid var(--line);background:#fff;color:var(--t2);
  font-size:11.5px;font-weight:700;padding:6px 13px;border-radius:9px;cursor:pointer;}
.ru-retry{border-color:var(--blue);color:var(--blue);}
.ru-msg{font-size:11.5px;margin-top:9px;line-height:1.6;}
.ru-msg.warn{color:#b45309;} .ru-msg.err{color:var(--red);}
.ru-msg.info{color:var(--blue);} .ru-msg.ok{color:var(--green);font-weight:700;}

/* IPA 选择区（续传） */
.ipa-pick{display:flex;align-items:center;gap:11px;border:1.5px dashed #cbd5e1;border-radius:13px;
  padding:16px 14px;background:#f8fafc;cursor:pointer;}
.ipa-pick:active{background:#f1f5f9;}
.ipa-pick .ip-ico{font-size:23px;flex:none;}
.ipa-pick .ip-txt{font-size:13px;color:var(--t2);font-weight:700;}
.btn:disabled,.btn[disabled]{opacity:.5;cursor:not-allowed;}

/* ===================== 会员购买流程 vip.php ===================== */
.buy-step{font-size:14px;font-weight:900;color:var(--t1);margin:18px 2px 11px;}
.lvl-opt{display:flex;align-items:center;gap:12px;width:100%;text-align:left;
  background:#fff;border:1.5px solid var(--line);border-radius:15px;padding:14px 15px;margin-bottom:10px;cursor:pointer;}
.lvl-opt.sel{border-color:var(--blue);background:#eff6ff;}
.lo-radio{width:20px;height:20px;border-radius:50%;border:2px solid #cbd5e1;flex:none;position:relative;}
.lvl-opt.sel .lo-radio{border-color:var(--blue);}
.lvl-opt.sel .lo-radio::after{content:'';position:absolute;inset:3px;border-radius:50%;background:var(--blue);}
.lo-info{flex:1;min-width:0;}
.lo-name{display:block;font-size:14.5px;font-weight:900;color:var(--t1);}
.lo-cur{font-style:normal;font-size:10px;font-weight:800;color:#d97706;background:#fef3c7;
  padding:2px 7px;border-radius:7px;margin-left:6px;vertical-align:middle;}
.lo-sub{display:block;font-size:11.5px;color:var(--t3);margin-top:3px;}
.lo-chev{color:#cbd5e1;font-size:20px;flex:none;}
.dur-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;}
.dur-opt{border:1.5px solid var(--line);background:#fff;border-radius:13px;padding:13px 10px;cursor:pointer;}
.dur-opt:last-child{grid-column:span 2;}
.dur-opt.sel{border-color:var(--blue);background:#eff6ff;}
.dur-name{display:block;font-size:13px;font-weight:800;color:var(--t1);}
.dur-price{display:block;font-size:15px;font-weight:900;color:#d97706;margin-top:6px;}
.buy-bar{position:sticky;bottom:calc(64px + env(safe-area-inset-bottom));z-index:30;
  display:flex;align-items:center;gap:12px;background:#fff;border:1.5px solid var(--line);
  border-radius:15px;padding:11px 12px;margin:16px 0 8px;box-shadow:0 8px 22px rgba(15,23,42,.12);}
.bb-sum{flex:1;min-width:0;}
.bb-sel{font-size:12px;color:var(--t2);font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.bb-price{font-size:20px;font-weight:900;color:#d97706;line-height:1.2;}
.bb-pay{border:none;border-radius:12px;padding:13px 18px;font-size:14px;font-weight:900;color:#fff;
  background:linear-gradient(135deg,#fbbf24,#f59e0b);cursor:pointer;flex:none;}

/* 应用分组标题 */
.grp-card{margin-bottom:12px;}
.grp-head{display:flex;align-items:center;gap:8px;padding:12px 15px 9px;}
.gh-name{font-size:13.5px;font-weight:900;color:var(--t1);}
.gh-count{font-size:10.5px;font-weight:700;color:var(--t3);background:#f1f5f9;
  padding:2px 8px;border-radius:8px;}

/* 软件源链接卡片 */
.src-box .src-row{display:flex;gap:9px;}
.src-url{flex:1;min-width:0;border:1px solid var(--line);background:#f8fafc;border-radius:10px;
  padding:10px 12px;font-size:12px;color:var(--t2);}
.src-copy{border:none;background:var(--blue);color:#fff;font-weight:800;font-size:13px;
  padding:0 17px;border-radius:10px;cursor:pointer;flex:none;}
.src-hint{font-size:11px;color:var(--t3);line-height:1.7;margin-top:9px;}

/* ===== 我的页：两列彩色功能卡片（对齐上游） ===== */
.dash-tile{display:flex;align-items:flex-start;gap:10px;background:#f8fafc;border:1px solid #eef2f7;
  border-radius:14px;padding:13px 12px;text-decoration:none;color:inherit;transition:transform .12s;}
.dash-tile:active{transform:scale(.97);}
.dash-tile img{width:38px;height:38px;flex-shrink:0;}
.dash-tile .dt-t{font-size:14px;font-weight:800;color:var(--t1);line-height:1.3;}
.dash-tile .dt-s{font-size:10px;color:var(--t3);margin-top:3px;line-height:1.4;}

/* ============================================================
   PAGE: index + tabbar
   首页 home-* 布局 + 底部 bottom-nav（1:1 还原上游 cert.ioszz.cn）
   上游主色 #1f7ec8。本块只新增类，不修改已有共享类。
   ============================================================ */

/* 首页内容容器：抵消 .screen 左右 14px padding，内部用上游 10px 间距 */
.home-wrap{ margin:0 -14px; padding:0 10px 16px; }

/* --- 蓝色渐变 Banner --- */
.home-banner-shell{ position:relative; margin-bottom:10px; overflow:hidden; border-radius:14px; }
.home-banner-deco{ position:absolute; top:4px; right:4px; z-index:4; width:132px; height:132px;
  background:url(../upstream_img/device-summary-bg.svg) no-repeat center/contain; pointer-events:none; }
.home-hero-banner{ border-radius:14px; padding:18px 16px 16px;
  background:linear-gradient(135deg,#1f7ec8,#3aa0e8 55%,#7ec8f5); color:#fff; }
.home-hero-eyebrow{ font-size:12px; opacity:.9; margin-bottom:6px; }
.home-hero-title{ font-size:22px; font-weight:800; line-height:1.25; }
.home-hero-tags{ display:flex; flex-wrap:wrap; gap:6px; margin-top:10px; }
.home-hero-tags span{ font-size:11px; padding:3px 8px; border-radius:999px; background:rgba(255,255,255,.22); }
.home-hero-cta{ display:inline-block; margin-top:14px; padding:7px 16px; border-radius:999px;
  background:#fff; color:#1f7ec8; font-size:13px; font-weight:700; }

/* --- 通知条 --- */
.home-news{ display:flex; align-items:center; background:#fff; border-radius:12px; height:40px;
  overflow:hidden; margin-bottom:10px; border:1px solid #ececec; }
.home-news-label{ flex-shrink:0; padding:0 10px; color:#1f7ec8; font-size:12px; font-weight:700;
  white-space:nowrap; display:flex; align-items:center; gap:4px; }
.home-news-horn{ flex-shrink:0; }
.home-news-scroll{ flex:1; height:40px; overflow:hidden; position:relative; }
.home-news-list{ list-style:none; margin:0; padding:0; }
.home-news-list li{ height:40px; line-height:40px; font-size:12px; color:#555; padding-right:10px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.home-news-item{ display:flex; align-items:center; gap:6px; }
.home-news-item-text{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* --- 用户信息卡 --- */
.home-user-card{ display:flex; align-items:center; gap:10px; background:#fff; border-radius:14px;
  padding:12px; margin-bottom:10px; border:1px solid #ececec; }
.home-user-avatar{ width:44px; height:44px; border-radius:50%; overflow:hidden; flex-shrink:0; background:#eaf5ff; }
.home-user-avatar img{ width:100%; height:100%; object-fit:cover; display:block; }
.home-user-avatar-fb{ width:100%; height:100%; display:flex; align-items:center; justify-content:center;
  color:#1f7ec8; font-size:14px; font-weight:700; }
.home-user-meta{ flex:1; min-width:0; }
.home-user-name{ font-size:15px; font-weight:700; color:#222; display:flex; align-items:center; gap:6px; }
.home-vip-pill{ font-size:10px; font-weight:700; color:#fff; background:#f60; border-radius:4px; padding:1px 5px; }
.home-user-sub{ margin-top:3px; font-size:12px; color:#888; }
.home-user-btn{ flex-shrink:0; display:inline-flex; align-items:center; justify-content:center; gap:4px;
  min-width:78px; height:36px; padding:0 12px; border-radius:12px; color:#7a4a00; font-size:13px;
  font-weight:700; background:#f5a623; box-shadow:0 4px 12px rgba(232,155,18,.28); text-decoration:none; }
.home-user-btn-ico{ width:18px; height:18px; }

/* --- 两大入口 + 四宫格 --- */
.home-panel{ background:#fff; border:1px solid #ececec; border-radius:14px; margin-bottom:10px; overflow:hidden; }
.home-dual{ display:grid; grid-template-columns:1fr 1fr; border-bottom:1px solid #f0f0f0; }
.home-dual-item{ padding:16px 14px; text-decoration:none; color:inherit; position:relative; text-align:center; }
.home-dual-item+.home-dual-item::before{ content:""; position:absolute; left:0; top:14px; bottom:14px; width:1px; background:#f0f0f0; }
.home-dual-title{ font-size:16px; font-weight:800; color:#222; }
.home-dual-sub{ margin-top:4px; font-size:12px; color:#999; }
.home-icons{ display:grid; grid-template-columns:repeat(4,1fr); padding:14px 6px 12px; }
.home-icon-item{ text-align:center; text-decoration:none; color:inherit; }
.home-icon-circle-img img{ width:48px; height:48px; margin:0 auto; display:block; }
.home-icon-title{ margin-top:6px; font-size:12px; font-weight:700; color:#222; }
.home-icon-sub{ margin-top:2px; font-size:10px; color:#999; }
.home-icon-badge{ position:absolute; top:8px; right:10px; background:#ff4d4f; color:#fff;
  font-size:9px; font-weight:700; padding:1px 5px; border-radius:8px 8px 8px 2px; }

/* --- 平台专享 + 代销/贴牌 --- */
.home-promo{ display:grid; grid-template-columns:1.15fr 1fr; gap:8px; margin-bottom:10px; }
.home-promo-main{ display:block; background:linear-gradient(160deg,#e8f5ff,#fff 55%);
  border:1px solid #d6eaf8; border-radius:14px; padding:14px 12px; text-decoration:none; color:inherit;
  min-height:168px; position:relative; overflow:hidden; }
.home-promo-main::after{ content:""; position:absolute; right:-8px; bottom:-6px; width:150px; height:150px;
  background:url(../upstream_img/home-promo-bg.svg) no-repeat center/contain; pointer-events:none; }
.home-promo-main>*{ position:relative; z-index:1; }
.home-promo-kicker{ font-size:11px; color:#1f7ec8; font-weight:700; }
.home-promo-title{ margin-top:6px; font-size:16px; font-weight:800; color:#222; }
.home-promo-desc{ margin-top:4px; font-size:12px; color:#888; }
.home-promo-btn{ display:inline-block; margin-top:10px; padding:3px 9px; border-radius:999px;
  background:#1f7ec8; color:#fff; font-size:11px; font-weight:700; }
.home-promo-stats{ display:flex; gap:14px; margin-top:16px; }
.home-promo-stats b{ display:block; font-size:18px; color:#1f7ec8; font-weight:800; }
.home-promo-stats em{ font-style:normal; font-size:11px; color:#999; }
.home-promo-side{ display:flex; flex-direction:column; gap:8px; }
.home-promo-mini{ flex:1; display:block; background:#fff; border:1px solid #ececec; border-radius:14px;
  padding:14px 12px; text-decoration:none; color:inherit; position:relative; overflow:hidden; }
.home-promo-agent::after, .home-promo-signtool::after{ content:""; position:absolute; right:-6px; bottom:-4px;
  width:88px; height:88px; pointer-events:none; }
.home-promo-agent::after{ background:url(../upstream_svg/home-agent-bg.svg) no-repeat center/contain; }
.home-promo-signtool::after{ background:url(../upstream_svg/home-signtool-bg.svg) no-repeat center/contain; }
.home-promo-mini-title{ font-size:15px; font-weight:800; color:#222; }
.home-promo-mini-sub{ margin-top:4px; font-size:12px; color:#1f7ec8; }

/* --- 排行/账变 + 客服行 --- */
.home-more{ display:grid; grid-template-columns:repeat(2,1fr); gap:8px; }
.home-more-item{ display:flex; align-items:center; gap:8px; background:#fff; border:1px solid #ececec;
  border-radius:12px; padding:12px; text-decoration:none; color:#222; font-size:14px; font-weight:700;
  min-height:56px; }
.home-more-svg{ width:28px; height:28px; flex-shrink:0; }
.home-more-emoji{ font-size:22px; width:28px; text-align:center; flex-shrink:0; }

/* --- 底部 Tab 栏（上游 bottom-nav，中间凸起圆形添加按钮） --- */
.bottom-nav{ display:flex; position:fixed; bottom:0; left:50%; transform:translateX(-50%);
  width:100%; max-width:480px; height:62px; padding-top:10px;
  padding-bottom:env(safe-area-inset-bottom,0px); background:transparent; z-index:99; overflow:visible; }
.bottom-nav .nav-bar-shape{ position:absolute; left:0; right:0; bottom:0; width:100%; height:70px; z-index:0; pointer-events:none; }
.bottom-nav .nav-bar-shape-path{ fill:#fff; stroke:#eaeaea; stroke-width:1; }
.bottom-nav a{ flex:1; position:relative; z-index:2; display:flex; flex-direction:column; align-items:center;
  justify-content:center; color:#666; text-decoration:none; font-size:12px; }
.bottom-nav .nav-svg-icon{ width:24px; height:24px; margin-bottom:2px; display:block; object-fit:contain; opacity:.72; }
.bottom-nav .nav-svg-add{ width:44px; height:44px; opacity:1; margin-top:-12px; margin-bottom:-4px; }
.bottom-nav a.active .nav-svg-icon, .bottom-nav a:hover .nav-svg-icon{ opacity:1; }
.bottom-nav a.active>span, .bottom-nav a.nav-add>span{ color:#1f7ec8; font-weight:700; }

/* === PAGE: devices + apps === */
:root{
  --up-blue:#1f7ec8; --up-blue-d:#1869a8; --up-blue-l:#6bb6f5;
  --up-green:#2f7d32; --up-green-n:#2f9e44;
  --up-red:#e05353; --up-red-d:#c62828; --up-orange:#d48806;
  --up-line:#ececec; --up-line2:#eaeaea; --up-bg:#f5f5f5;
}

/* ---------- 设备页：统计卡 ---------- */
.device-summary-section{
  position:relative; background:#fff; border:1px solid var(--up-line);
  border-radius:10px; padding:12px; margin:0 0 8px; overflow:hidden;
}
.device-summary-section::before{
  content:""; position:absolute; top:-10px; right:-8px; width:140px; height:140px;
  background:url('../upstream_svg/device-summary-bg.svg') no-repeat 50% 50%/contain;
  pointer-events:none; opacity:.9;
}
.stats-row{
  display:grid; grid-template-columns:repeat(5,1fr); gap:4px 8px;
  margin:0 0 12px; position:relative; z-index:1;
}
.stat-item{ display:block; }
.stat-number{ font-size:18px; font-weight:700; line-height:1.2; color:var(--up-blue); display:block; }
.stat-number.normal{ color:var(--up-green-n); }
.stat-number.warning{ color:var(--up-red); }
.stat-number.banned{ color:var(--up-red-d); }
.stat-number.expired{ color:var(--up-orange); }
.stat-title{ font-size:11px; color:#888; margin-top:2px; }

.device-actions-main{ position:relative; z-index:1; }
.da-btn{ display:block; width:100%; text-align:center; border:none; cursor:pointer;
  height:36px; line-height:36px; font-size:13px; font-weight:600; border-radius:8px; }
.da-btn-primary{ background:var(--up-blue); color:#fff; }
.da-btn-primary:active{ background:var(--up-blue-d); }
.device-actions-sub{
  display:flex; flex-wrap:wrap; align-items:center; gap:2px 0;
  margin-top:10px; position:relative; z-index:1;
}
.da-link{ color:var(--up-blue); font-size:12px; font-weight:500; padding:2px 10px; }
.da-sep{ width:1px; height:11px; background:#e2e6ea; display:inline-block; }
.force-days-bar{ margin-top:8px; padding-top:6px; position:relative; z-index:1; }
.force-days-row{ display:flex; align-items:center; gap:6px; font-size:12px; color:#555; }
.force-days-row input{
  width:46px; height:26px; text-align:center; border:1px solid var(--up-line);
  border-radius:6px; background:#fff; font-size:12px; color:#333;
}
.force-days-save{
  margin-left:auto; border:none; background:var(--up-blue); color:#fff;
  height:26px; padding:0 12px; border-radius:6px; font-size:12px; font-weight:600; cursor:pointer;
}

/* ---------- 设备页：设备卡片 ---------- */
.device-list{ display:flex; flex-direction:column; gap:8px; }
.device-empty{
  background:#fff; border:1px solid var(--up-line); border-radius:10px;
  padding:36px 12px; text-align:center; font-size:13px; color:#999;
}
.device-card{
  position:relative; background:#fff; border:1px solid #ebebeb; border-radius:10px;
  padding:0; overflow:hidden;
}
.dc-head{ display:flex; justify-content:space-between; align-items:flex-start; padding:12px 12px 0; }
.dc-head-main{ min-width:0; }
.dc-title-row{ display:flex; align-items:center; gap:6px; }
.dc-title{ font-size:14px; font-weight:650; color:var(--up-green); line-height:1.3; }
.dc-title.warning{ color:var(--up-red); }
.dc-title.banned{ color:var(--up-red-d); }
.dc-title.expired{ color:var(--up-orange); }
.dc-status-dot{ width:8px; height:8px; border-radius:50%; background:var(--up-green); flex:none; }
.dc-status-dot.warning{ background:var(--up-red); }
.dc-status-dot.banned{ background:var(--up-red-d); }
.dc-status-dot.expired{ background:var(--up-orange); }
.dc-meta{ display:flex; flex-wrap:wrap; align-items:center; gap:4px 8px; margin-top:3px; font-size:11px; }
.dc-meta-kid{ color:#888; }
.dc-meta-instant{ color:#0284c7; font-weight:600; }
.dc-meta-chi-public{ color:#2563eb; font-weight:600; }
.dc-meta-pkg{ color:#0d9488; font-weight:600; }
.dc-kind-dev{ color:#16a34a; font-weight:600; }
.dc-kind-dist{ color:#475569; font-weight:600; }
.dc-head-actions{ display:flex; gap:10px; flex:none; }
.dc-icon{
  border:none; background:transparent; color:#9aa0a6; cursor:pointer;
  width:22px; height:22px; padding:0; display:inline-flex; align-items:center; justify-content:center;
}
.dc-icon svg{ width:17px; height:17px; display:block; }
.dc-icon.danger{ color:#ef4444; }
.dc-icon.copied{ color:var(--up-green); }

.dc-kv{ display:flex; padding:10px 12px 0; position:relative; }
.dc-kv-rows{ flex:1; min-width:0; }
.dc-kv-row{ display:flex; align-items:center; padding:2px 0; font-size:11px; }
.dc-k{ width:34px; color:#999; flex:none; }
.dc-v{ color:#555; word-break:break-all; }
.dc-v.mono{ font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-size:11px; }
.dc-v.is-copy{ cursor:pointer; }
.dc-link-btn{ border:none; background:transparent; color:var(--up-blue); padding:0; font-size:11px; cursor:pointer; }
.dc-status-mark{
  position:absolute; right:14px; top:50%; transform:translateY(-50%) rotate(-14deg);
  font-size:42px; font-weight:800; line-height:1; color:rgba(47,125,50,.14); pointer-events:none;
  user-select:none;
}
.dc-status-mark.warning{ color:rgba(224,83,83,.14); }
.dc-status-mark.banned{ color:rgba(198,40,40,.14); }
.dc-status-mark.expired{ color:rgba(212,136,6,.14); }

.dc-warranty{ display:flex; align-items:center; gap:8px; padding:6px 12px 8px; }
.dc-warranty-text{ font-size:11px; color:#999; flex:none; }
.dc-warranty-text.ok{ color:var(--up-green); }
.dc-warranty-bar{ flex:1; height:2px; background:#efefef; border-radius:0; overflow:hidden; }
.dc-warranty-fill{ display:block; height:2px; background:var(--up-blue); width:var(--w,0%); }
.dc-remark-row{ padding:0 12px 6px; }

.dc-actions{ display:flex; border-top:1px solid #f0f0f0; margin-top:4px; }
.dc-actions > *{ flex:1; }
.dc-action{
  flex:1; text-align:center; padding:10px 0; font-size:12px; font-weight:500;
  color:var(--up-blue); text-decoration:none;
}
.dc-actions > * + *{ border-left:1px solid #f0f0f0; }
.dc-action:active{ background:#f5f9fc; }

/* ---------- 应用页：横幅 / 通知 ---------- */
.sign-ad-banner{
  background:#fff; border:1px solid var(--up-line); border-radius:10px;
  padding:10px; margin:0 0 8px; overflow:hidden;
}
.sign-ad-banner .icon-wall{ margin:0; }
.sign-notice{
  display:flex; align-items:center; background:#fff; border:1px solid var(--up-line);
  border-radius:10px; height:36px; padding:0 8px 0 10px; margin:0 0 8px; overflow:hidden;
}
.sign-notice-label{ color:var(--up-blue); font-size:12px; font-weight:700; flex:none; display:flex; align-items:center; gap:4px; }
.sign-notice-viewport{ flex:1; min-width:0; overflow:hidden; height:36px; display:flex; align-items:center; }
.sign-notice-track{ display:flex; white-space:nowrap; animation:upMarquee 18s linear infinite; }
.sign-notice-item{ font-size:12px; color:#555; padding:0 24px; }
@keyframes upMarquee{ from{transform:translateX(0);} to{transform:translateX(-50%);} }

/* ---------- 应用页：分类行 + 搜索 ---------- */
.app-class-tabs-row{ display:flex; align-items:center; gap:8px; margin:0 0 8px; }
.app-class-tabs{
  flex:1; min-width:0; display:flex; gap:8px; overflow-x:auto; padding:2px 0;
  -webkit-overflow-scrolling:touch; flex-wrap:nowrap;
}
.app-class-tabs::-webkit-scrollbar{ display:none; }
.app-class-tabs .cat-tab{
  flex:none; white-space:nowrap; font-size:12.5px; font-weight:500; color:#666;
  background:#fff; border:1px solid var(--up-line); border-radius:16px; padding:6px 14px;
  text-decoration:none;
}
.app-class-tabs .cat-tab.active{
  background:var(--up-blue); border-color:var(--up-blue); color:#fff; font-weight:600;
}

/* 右侧悬浮按钮组：时间锁 / 签名记录 / 软件源 */
.side-fab{
  position:fixed; right:10px; top:45%; z-index:60;
  display:flex; flex-direction:column; gap:10px;
}
.side-fab a{
  width:44px; height:44px; border-radius:50%;
  background:#fff; color:var(--up-blue); border:1px solid var(--up-line);
  box-shadow:0 4px 16px rgba(0,0,0,.12);
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  font-size:17px; text-decoration:none; line-height:1;
}
.side-fab a span{ font-size:8px; font-weight:600; margin-top:2px; color:#666; }
.side-fab a:active{ transform:scale(.94); }
.app-search-bar{
  display:flex; align-items:center; gap:8px; background:#fff; border:1px solid var(--up-line);
  border-radius:18px; height:36px; padding:0 12px; margin:0 0 8px;
}
.app-search-ico{
  width:16px; height:16px; flex:none; opacity:.45;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2.2' stroke-linecap='round'><circle cx='11' cy='11' r='7'/><path d='m20 20-3.5-3.5'/></svg>") no-repeat 50% 50%/contain;
}
.app-search-input{ flex:1; min-width:0; border:none; background:transparent; outline:none; font-size:14px; color:#333; height:34px; }
.app-search-input::placeholder{ color:#999; }

/* ---------- 应用页：应用列表 ---------- */
.app-list{
  background:#fff; border:1px solid var(--up-line); border-radius:10px;
  margin:0 0 8px; overflow:hidden;
}
.grp-card .grp-head{ display:flex; align-items:center; gap:8px; padding:12px 12px 6px; }
.grp-head .gh-name{ font-size:13px; font-weight:700; color:#333; }
.grp-head .gh-count{ font-size:10px; font-weight:600; color:#999; background:#f3f4f6; padding:2px 8px; border-radius:8px; }
.app-item{ display:flex; align-items:center; gap:12px; padding:12px; border-bottom:1px solid #f2f3f5; }
.app-item:last-child{ border-bottom:none; }
.app-item[hidden]{ display:none; }
.app-icon{
  width:56px; height:56px; border-radius:8px; flex:none; overflow:hidden;
  background:#f7f7f7; border:1px solid #eee; display:flex; align-items:center; justify-content:center;
  font-size:24px; color:#bbb;
}
.app-icon img{ width:100%; height:100%; object-fit:cover; display:block; }
.app-info{ flex:1; min-width:0; }
.app-name{ font-size:16px; font-weight:600; color:#333; line-height:1.3; margin-bottom:2px; }
.app-bid{ display:block; font-size:12px; color:#888; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.app-details{ display:flex; align-items:center; gap:6px; margin-top:5px; }
.app-size, .app-version{
  font-size:11px; color:#888; background:#f7f7f7; border:1px solid #eaeaea;
  border-radius:4px; padding:1px 6px; line-height:1.6;
}
.app-action{ flex:none; }
.get-btn{
  width:72px; height:32px; border:none; cursor:pointer; border-radius:11px;
  background:var(--up-blue) url('../upstream_svg/app-install-btn.svg') no-repeat 50% 50%/100% 100%;
  color:#fff; font-size:13px; font-weight:700; display:inline-flex; align-items:center; justify-content:center; gap:3px;
  box-shadow:0 3px 10px rgba(31,126,200,.28);
}
.get-btn:active{ opacity:.9; }
.app-btn-ico{ width:14px; height:14px; display:block; }

/* 上传IPA / 签名记录 入口卡 */
.st-entry-card{
  display:flex; align-items:center; gap:12px; background:#fff; border:1px solid var(--up-line);
  border-radius:10px; padding:13px 14px; margin:0 0 8px; text-decoration:none; color:inherit;
}
.st-entry-ico{ font-size:20px; flex:none; }
.st-entry-tx{ flex:1; min-width:0; display:flex; flex-direction:column; }
.st-entry-title{ font-size:14px; font-weight:700; color:#333; }
.st-entry-sub{ font-size:11px; color:#999; margin-top:2px; }
.st-badge.blue{ background:#eff6ff; color:var(--up-blue); font-size:11px; font-weight:600; padding:3px 9px; border-radius:6px; flex:none; }

/* ============================================================
   PAGE: me + subpages
   我的页 / 价格 / 充值 / 工单 / 卡密 / 邀请 / 排行 / 账变 / 代销 / 贴牌 / 独立池 / 帮助
   1:1 还原上游 cert.ioszz.cn —— 主色 #1f7ec8
   ============================================================ */

/* ---------- 用户信息卡 .m2-hero ---------- */
.m2-hero{
  position:relative; overflow:hidden;
  background:linear-gradient(135deg,rgba(232,244,255,.92),rgba(247,251,255,.96) 48%);
  border:1px solid rgba(31,126,200,.14);
  border-radius:16px; padding:14px 12px 12px; margin:0 0 10px;
}
.m2-hero-deco{
  position:absolute; top:-10px; right:-10px; width:120px; height:120px;
  background:url(../upstream_svg/profile-hero-deco.svg) no-repeat 50% 50%/contain;
  opacity:.5; pointer-events:none;
}
.m2-top{ display:flex; gap:12px; position:relative; z-index:1; }
.m2-avatar{
  width:56px; height:56px; border-radius:50%; overflow:hidden; flex-shrink:0;
  background:linear-gradient(135deg,#6bb6f5,#1f7ec8); border:2px solid #fff;
  box-shadow:0 2px 8px rgba(31,126,200,.18);
}
.m2-avatar img{ width:100%; height:100%; object-fit:cover; display:block; }
.m2-avatar-fallback{
  width:100%; height:100%; display:flex; align-items:center; justify-content:center;
  color:#fff; font-size:22px; font-weight:700;
}
.m2-meta{ flex:1; min-width:0; }
.m2-name-row{ display:flex; align-items:flex-start; justify-content:space-between; gap:8px; }
.m2-name-block{ min-width:0; }
.m2-name{ font-size:17px; font-weight:750; color:#1a3a55; line-height:1.25; display:flex; align-items:center; gap:6px; }
.m2-sub{ font-size:12px; color:#7a93a8; margin-top:2px; }
.m2-points{
  flex-shrink:0; display:flex; flex-direction:column; align-items:center;
  background:linear-gradient(145deg,#eaf5ff,#dff0ff);
  border:1px solid rgba(31,126,200,.18); border-radius:12px; padding:6px 10px;
  text-decoration:none; color:inherit;
}
.m2-points-val{ font-size:16px; font-weight:800; color:#1f7ec8; line-height:1; }
.m2-points-label{ font-size:10px; color:#7a93a8; margin-top:2px; }
.m2-money{ display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:8px; }
.m2-money-text{ font-size:13px; color:#555; }
.m2-money-text b{ color:#1f7ec8; font-size:16px; font-weight:800; }
.m2-money-actions{ flex-shrink:0; }
.m2-recharge-btn{
  display:inline-flex; align-items:center; gap:3px;
  background:#f5a623 url(../upstream_svg/home-recharge-btn.svg) no-repeat 50% 50%/100% 100%;
  color:#7a4a00; font-size:12px; font-weight:700;
  padding:6px 14px; border-radius:12px; text-decoration:none;
  box-shadow:0 3px 10px rgba(245,166,35,.3);
}
.m2-recharge-btn img{ width:16px; height:16px; }
.m2-bottom{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  margin-top:10px; padding-top:10px; border-top:1px solid rgba(31,126,200,.1);
  position:relative; z-index:1;
}
.m2-rank{ display:flex; align-items:center; gap:6px; font-size:12px; color:#7a93a8; }
.m2-rank b{ color:#f5a623; font-size:14px; font-weight:800; }
.m2-rank-dev{
  background:rgba(31,126,200,.1); color:#1f7ec8; font-size:11px; font-weight:700;
  padding:2px 8px; border-radius:999px;
}
.m2-signin{
  background:rgba(31,126,200,.1); color:#1f7ec8; border:none;
  font-size:12px; font-weight:700; padding:5px 12px; border-radius:999px; cursor:pointer;
}
.m2-signin.done{ background:#e8f5e9; color:#2f9e44; }
.m2-signin:disabled{ cursor:default; }

/* ---------- 通用模块卡 .m2-section ---------- */
.m2-section{
  background:rgba(255,255,255,.92);
  border:1px solid rgba(31,126,200,.12);
  border-radius:14px; padding:12px; margin:0 0 10px;
}
.m2-header{ display:flex; align-items:center; margin-bottom:10px; }
.m2-header-icon{
  width:24px; height:24px; margin-right:10px; flex-shrink:0;
  display:flex; align-items:center; justify-content:center; font-size:18px;
}
.m2-header-icon img{ width:24px; height:24px; }
.m2-title{ font-size:16px; font-weight:700; color:#1a3a55; flex:1; margin:0; }
.m2-more-link{ margin-left:auto; font-size:12px; color:#1f7ec8; text-decoration:none; }

/* ---------- 开关 .m2-toggle ---------- */
.m2-toggle-form{ margin-left:auto; }
.m2-toggle{
  display:block; width:46px; height:26px; border-radius:999px; cursor:pointer;
  background:#d3dde6; position:relative; transition:background .2s; border:none; padding:0;
}
.m2-toggle::after{
  content:""; position:absolute; top:3px; left:3px; width:20px; height:20px;
  border-radius:50%; background:#fff; transition:transform .2s; box-shadow:0 1px 3px rgba(0,0,0,.15);
}
.m2-toggle.on{ background:linear-gradient(135deg,#6bb6f5,#1f7ec8); }
.m2-toggle.on::after{ transform:translateX(20px); }

/* ---------- 通知卡 body ---------- */
.m2-notify-body{ display:flex; gap:8px; align-items:center; margin-top:4px; }
.m2-notify-body + .m2-notify-body{ margin-top:8px; }
.m2-email-row{ display:flex; gap:8px; width:100%; }
.m2-email-input{
  flex:1; min-width:0; border:1px solid rgba(31,126,200,.18); border-radius:10px;
  background:linear-gradient(#f7fbff,#fff); padding:9px 12px; font-size:13px; color:#445566;
  outline:none;
}
.m2-email-input:focus{ border-color:#1f7ec8; }
.m2-warn{ font-size:12px; color:#f5a623; margin-top:8px; }
.m2-state{ flex:1; font-size:13px; color:#7a93a8; }
.m2-msg{ font-size:11.5px; color:#7a93a8; margin-top:8px; line-height:1.6; word-break:break-all; }
.m2-msg.ok{ color:#2f9e44; }
.m2-msg.err{ color:#e05353; }

/* ---------- 按钮 ---------- */
.m2-primary-btn{
  flex-shrink:0; border:none; cursor:pointer;
  background:linear-gradient(135deg,#6bb6f5,#1f7ec8); color:#fff;
  font-size:13px; font-weight:600; padding:9px 16px; border-radius:11px;
  display:inline-flex; align-items:center; justify-content:center; gap:6px;
}
.m2-primary-btn:active{ opacity:.9; }
.m2-primary-btn.is-muted{ background:#c8d6e0; color:#fff; }
.m2-outline-btn{
  border:1px solid rgba(31,126,200,.16); cursor:pointer;
  background:linear-gradient(#fff,#f3f8fc); color:#1a3a55;
  font-size:13px; font-weight:600; padding:9px 14px; border-radius:11px;
  display:inline-flex; align-items:center; justify-content:center; gap:6px; text-decoration:none;
}
.m2-outline-btn:active{ background:#eef5fa; }
.m2-block-btn{ display:flex; width:100%; margin-top:10px; }
.m2-block-label{ display:flex; align-items:center; justify-content:center; width:100%; cursor:pointer; }

/* ---------- 密钥卡 .m2-token ---------- */
.m2-token-hint{ font-size:12px; color:#7a93a8; margin:0 0 10px; }
.m2-token-display{ width:100%; }
.m2-token-input{
  width:100%; border:1px solid rgba(31,126,200,.18); border-radius:10px;
  background:linear-gradient(#f7fbff,#fff); padding:10px 12px;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:12px; color:#445566; outline:none; box-sizing:border-box;
}
.m2-token-btns{ display:flex; gap:8px; margin-top:10px; }
.m2-token-copy{ flex:1; }
.m2-token-change{ flex:1; }
.m2-btn-ico{ width:15px; height:15px; }

/* ---------- 功能卡片网格 .m2-grid ---------- */
.m2-grid{ display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.m2-item{
  display:flex; align-items:flex-start; gap:10px;
  background:linear-gradient(160deg,#fff,#f7fbff);
  border:1px solid rgba(31,126,200,.12); border-radius:12px;
  padding:12px 10px; text-decoration:none; color:inherit;
  transition:transform .12s;
}
.m2-item:active{ transform:scale(.97); }
.m2-item-icon{ width:36px; height:36px; flex-shrink:0; }
.m2-item-icon img{ width:36px; height:36px; }
.m2-item-info{ min-width:0; }
.m2-item-info h4{ font-size:14px; font-weight:700; color:#1a3a55; margin:0 0 2px; line-height:1.3; }
.m2-item-info p{ font-size:11px; color:#7a93a8; margin:0; line-height:1.4; }

/* ---------- 头像设置行 ---------- */
.m2-avatar-row{ display:flex; align-items:center; gap:12px; margin-bottom:12px; }
.m2-avatar-lg{
  width:52px; height:52px; border-radius:50%; overflow:hidden; flex-shrink:0;
  background:linear-gradient(135deg,#6bb6f5,#1f7ec8);
}
.m2-avatar-lg img{ width:100%; height:100%; object-fit:cover; }
.m2-avatar-lg .m2-avatar-fallback{ font-size:20px; }
.m2-avatar-tip{ flex:1; font-size:12px; color:#7a93a8; line-height:1.6; }
.m2-row-btns{ display:flex; gap:8px; }

/* ---------- 会员额度 ---------- */
.m2-lv-grid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:10px; }
.m2-lv-box{
  background:linear-gradient(160deg,#fff,#f7fbff); border:1px solid rgba(31,126,200,.12);
  border-radius:12px; padding:10px;
}
.m2-lv-k{ font-size:11px; color:#7a93a8; }
.m2-lv-v{ font-size:13px; font-weight:700; color:#1a3a55; margin:3px 0 6px; }
.m2-lv-bar{ height:4px; background:#e8f0f7; border-radius:999px; overflow:hidden; }
.m2-lv-bar i{ display:block; height:100%; background:linear-gradient(90deg,#6bb6f5,#1f7ec8); border-radius:999px; }

/* ---------- 表单组 ---------- */
.m2-form-group{ margin-bottom:10px; }

/* ---------- 退出按钮 ---------- */
.m2-logout-section{
  background:rgba(255,255,255,.78); border:1px solid rgba(31,126,200,.12);
  border-radius:14px; padding:10px; margin-top:4px;
}
.m2-logout-btn{
  display:flex; align-items:center; justify-content:center; gap:8px;
  width:100%; padding:13px; border:none; border-radius:12px; cursor:pointer;
  background:linear-gradient(135deg,#ffb4a8,#e85d3b); color:#fff;
  font-size:15px; font-weight:700; text-decoration:none;
}
.m2-logout-btn:active{ opacity:.9; }

/* ============================================================
   子页面通用：统一 hero 卡 / 列表卡 / 统计行（蓝色主题 #1f7ec8）
   ============================================================ */
.sp-hero{
  background:linear-gradient(135deg,#e8f4ff,#f4faff);
  border:1px solid rgba(31,126,200,.14); border-radius:14px;
  padding:16px; margin-bottom:10px;
}
.sp-hero-blue{ background:linear-gradient(135deg,#1f7ec8,#3aa0e8); color:#fff; border:none; }
.sp-hero-blue .sp-hero-sub{ opacity:.9; }
.sp-hero-title{ font-size:18px; font-weight:800; color:#1a3a55; }
.sp-hero-blue .sp-hero-title{ color:#fff; }
.sp-hero-sub{ font-size:12px; color:#7a93a8; margin-top:4px; line-height:1.6; }
.sp-stats{ display:flex; gap:16px; margin-top:12px; }
.sp-stat-num{ font-size:22px; font-weight:900; }
.sp-stat-label{ font-size:10px; opacity:.85; }

/* 子页面白色内容卡 */
.sp-card{
  background:#fff; border:1px solid rgba(31,126,200,.12); border-radius:14px;
  padding:14px; margin-bottom:10px;
}
.sp-card-title{ font-size:15px; font-weight:700; color:#1a3a55; margin-bottom:12px; }

/* 子页面列表项 */
.sp-list-item{
  display:flex; align-items:center; gap:11px; padding:12px 0;
  border-bottom:1px solid #f0f4f8;
}
.sp-list-item:last-child{ border-bottom:none; }
.sp-list-ico{
  width:38px; height:38px; border-radius:12px; flex-shrink:0;
  display:flex; align-items:center; justify-content:center; font-size:18px;
}
.sp-list-body{ flex:1; min-width:0; }
.sp-list-title{ font-size:13px; font-weight:700; color:#1a3a55; }
.sp-list-desc{ font-size:11px; color:#7a93a8; margin-top:2px; }
.sp-list-right{ text-align:right; flex-shrink:0; }

/* 子页面金额/状态标签 */
.sp-amount{ font-weight:800; font-size:15px; }
.sp-amount.in{ color:#2f9e44; }
.sp-amount.out{ color:#e05353; }
.sp-tag{
  display:inline-block; font-size:10px; font-weight:700; padding:2px 8px; border-radius:6px;
}
.sp-tag.ok{ background:#e8f5e9; color:#2f9e44; }
.sp-tag.wait{ background:#fff7e6; color:#d48806; }
.sp-tag.err{ background:#fde8e8; color:#e05353; }
