/* ============================================================
   融镜 · 文档智能分析  H5 外壳样式（移动端优先 · 浅色简洁）
   ---------------------------------------------------------------
   品牌色取自「融镜」logo 的采样值 #DA0206（见 h5/assets/brand/palette.json），
   与盛融普惠主品牌 #E60012 同族，保持「白底 + 中国红」的 logo 观感。
   报告内容区的视觉体系另在 shared/report-style.js（对齐拼图配征信报告页），
   那里是全套蓝色系，不要混用本文件的品牌红。
   ============================================================ */
:root{
  --bg:#f5f6f8;
  --card:#ffffff;
  --line:#eceef2;
  --line-2:#f3f5f8;
  --text:#1c1f23;
  --text-2:#4b5563;
  --muted:#8d949e;

  /* —— 品牌（中国红） —— */
  --brand:#da0206;
  --brand-d:#b30105;
  --brand-l:#e6434a;
  --brand-soft:#fff1f0;
  --brand-line:#ffd9d7;

  --good:#16a34a;
  --good-soft:#e9f8ee;
  --warn:#f59e0b;
  --warn-soft:#fff5e5;
  --bad:#dc2626;
  --bad-soft:#fdeceb;
  --info-soft:#f4f5f7;
  --radius:14px;
  --shadow:0 2px 10px rgba(23,43,77,.06);
  --shadow-lg:0 8px 28px rgba(23,43,77,.10);
  --tabbar-h:56px;
  --safe-b:env(safe-area-inset-bottom,0px);

  /* —— 报告页（拼图配风）专用色板：别改 —— */
  --pp-blue:#3d7bfa;
  --pp-blue-2:#5b95fc;
  --pp-link:#2563eb;
  --pp-head:#f5f8fc;
  --pp-line:#f1f4f9;
  --pp-text:#1e293b;
  --pp-sub:#58708a;
  --pp-dim:#9aa7bb;
  --pp-red:#e53e3e;
  --pp-orange:#e87220;
  --pp-yellow:#d4a017;
  --pp-green:#0f9d58;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",Helvetica,Arial,sans-serif;
  font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}
/* 三种底栏状态互斥：底部导航 / 报告动作条 / 都没有 */
body{padding-bottom:calc(26px + var(--safe-b))}
body.has-tabbar{padding-bottom:calc(var(--tabbar-h) + 22px + var(--safe-b))}
body.has-actbar{padding-bottom:calc(74px + var(--safe-b))}
h1,h2,h3,p,ul,ol,li{margin:0;padding:0}
ul,ol{list-style:none}
button{font-family:inherit;font-size:inherit;border:0;background:none;cursor:pointer;color:inherit}
strong{font-weight:600}
img{max-width:100%}

.view{display:none}
.view.active{display:block}
.page{max-width:640px;margin:0 auto;padding:0 16px}

/* ---------------- 顶部栏 ---------------- */
.appbar{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.94);
  -webkit-backdrop-filter:saturate(180%) blur(12px);backdrop-filter:saturate(180%) blur(12px);
  border-bottom:1px solid var(--line)}
.appbar-in{max-width:640px;margin:0 auto;display:flex;align-items:center;gap:10px;
  padding:calc(9px + env(safe-area-inset-top,0px)) 16px 9px;min-height:52px}
.appbar-logo{height:29px;width:auto;display:block;flex:0 0 auto}
/* logo 旁边的一句话定位。窄屏用省略号兜底，绝不把顶部栏挤成两行 */
.appbar-tag{flex:1 1 auto;min-width:0;font-size:12.5px;color:var(--muted);letter-spacing:.6px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  border-left:1px solid var(--line);padding-left:11px;line-height:1.3}
.appbar-title{font-size:17px;font-weight:700;letter-spacing:.4px;flex:1}
/* ★ V3.7.8 「我的」页品牌头：融镜 | 以数据为镜，鉴信用风险（复刻用户参考图） */
.appbar-brand{flex:1;display:flex;align-items:center;gap:10px;min-width:0}
.appbar-brand .bb-logo{font-size:19px;font-weight:800;color:#da0206;letter-spacing:2px;flex:0 0 auto}
.appbar-brand .bb-sep{width:1px;height:16px;background:#e5e9f0;flex:0 0 auto}
.appbar-brand .bb-sub{font-size:12.5px;color:#8a94a6;letter-spacing:.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.link-btn{font-size:13px;color:var(--muted);flex:0 0 auto}
.link-btn:active{color:var(--brand)}

/* ---------------- 首页 ---------------- */
.hero-card{position:relative;overflow:hidden;margin:16px auto 0;width:100%;
  background:linear-gradient(135deg,#e6434a 0%,#da0206 54%,#b30105 100%);
  border-radius:18px;padding:26px 18px 20px;text-align:center;color:#fff;
  box-shadow:0 10px 26px rgba(218,2,6,.20)}
/* 右上角半透明圆环：呼应 logo 的圆形构图，纯装饰不参与布局 */
.hero-card::after{content:"";position:absolute;right:-48px;top:-56px;width:152px;height:152px;
  border:16px solid rgba(255,255,255,.10);border-radius:50%;pointer-events:none}
.hero-t{font-size:18.5px;font-weight:700;letter-spacing:.4px;position:relative}
.hero-s{font-size:12.5px;opacity:.88;margin-top:7px;line-height:1.6;position:relative}
/* ★ V3.7.2：四类业务列表加粗提亮；「自动识别」说明弱化为次行 */
.hero-types{font-size:13px;font-weight:600;opacity:1;letter-spacing:.2px}
.hero-s2{font-size:11.5px;opacity:.72;margin-top:5px}
/* ★ V3.7.2：「无法提供报告」失败态卡片（浅色简洁，与整体风格一致） */
.usc{background:var(--card);border-radius:16px;box-shadow:var(--shadow);padding:38px 24px 30px;
  margin:26px 14px;text-align:center}
.usc-ico{font-size:44px;line-height:1}
.usc-t{font-size:18px;font-weight:700;color:var(--text);margin-top:14px}
.usc-d{font-size:13px;color:var(--text-2);margin-top:10px;line-height:1.7;word-break:break-all}
.usc-s{display:inline-block;font-size:12px;color:#1d4ed8;background:#eef4ff;border-radius:8px;
  padding:7px 12px;margin-top:14px;line-height:1.6}
.usc-s2{font-size:11.5px;color:var(--muted);margin-top:10px;line-height:1.7}
.usc-btn{display:block;width:100%;margin-top:22px;background:linear-gradient(135deg,#e6434a,#da0206);
  color:#fff;border:0;border-radius:12px;padding:12px;font-size:14.5px;font-weight:600}
.upload-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:20px;position:relative}
.hero-fmt{font-size:11.5px;opacity:.78;margin-top:14px;position:relative}

/* ---------------- ★ V3.11.0：首页公告条 + 公告详情弹层 ----------------
   位置＝首页顶部、上传卡之上（用户截图红框处）。
   V3.9.0 / V3.10.0 是把整篇富文本正文铺在这里，用户反馈「这样在首页不美观」；
   现在首页只留**一行**「公告 · 标题 ›」（.notice-bar），正文放进点击后弹出的详情层
   （#noticeSheet → .notice-box）。正文由后台净化后下发，详情层只负责排版
   （.nb-body 里的 p/b/ul 等按前台通用规则走）。 */
.notice-list{display:flex;flex-direction:column;gap:8px;margin:13px auto 0}
.notice-bar{display:flex;align-items:center;gap:8px;width:100%;text-align:left;cursor:pointer;
  background:var(--card);border:1px solid var(--line);border-left:3px solid var(--brand);
  border-radius:12px;padding:10px 12px;box-shadow:var(--shadow);
  font-family:inherit;font-size:13.5px;line-height:1.4;-webkit-appearance:none}
.notice-bar:active{background:var(--brand-soft)}
.nb-tag{flex:0 0 auto;font-size:10.5px;font-weight:700;color:var(--brand);background:var(--brand-soft);
  border:1px solid var(--brand-line);border-radius:6px;padding:1px 6px;letter-spacing:.5px;line-height:1.6}
.nb-title{flex:1 1 auto;min-width:0;font-size:13.5px;font-weight:600;color:var(--text);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nb-arrow{flex:0 0 auto;color:var(--muted);font-size:16px;line-height:1}

/* 公告详情层：居中卡片 —— 头部固定、正文滚动、底部按钮固定
   ★ 选择器必须写成 `.sheet-mask.notice-mask`：本文件里 `.sheet-mask` 定义在后面，
     同优先级下后者会赢，`align-items:flex-end` 会把卡片按到底部（不再是「小窗口」）。 */
.sheet-mask.notice-mask{align-items:center;justify-content:center;padding:18px}
.notice-box{width:100%;max-width:440px;max-height:82vh;background:var(--card);border-radius:16px;
  display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-lg);
  animation:ntcPop .2s ease-out}
@keyframes ntcPop{from{transform:scale(.96);opacity:.6}to{transform:none;opacity:1}}
.nb-head{display:flex;align-items:center;gap:8px;padding:14px 12px 12px 14px;border-bottom:1px solid var(--line)}
.nb-x{flex:0 0 auto;width:28px;height:28px;border:0;background:transparent;color:var(--muted);
  font-size:15px;line-height:1;border-radius:50%;cursor:pointer;-webkit-appearance:none}
.nb-x:active{background:var(--info-soft)}
.nb-body{flex:1 1 auto;overflow:auto;padding:14px;font-size:13px;color:var(--text-2);
  line-height:1.78;word-break:break-word;-webkit-overflow-scrolling:touch}
.nb-body p{margin:0 0 7px}
.nb-body p:last-child{margin-bottom:0}
.nb-body ul,.nb-body ol{margin:0 0 7px;padding-left:19px}
.nb-body li{margin:2px 0}
.nb-body h3,.nb-body h4{font-size:13.5px;font-weight:600;color:var(--text);margin:9px 0 4px}
.nb-body a{color:#1d4ed8;text-decoration:underline}
.nb-foot{display:flex;align-items:center;gap:8px;padding:11px 14px calc(11px + var(--safe-b));
  border-top:1px solid var(--line);background:var(--card)}
.nb-time{flex:1 1 auto;min-width:0;font-size:11px;color:var(--muted);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nb-foot .btn{flex:0 0 auto;padding:8px 14px;font-size:13px}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;
  padding:11px 18px;border-radius:10px;font-size:14.5px;font-weight:500;
  transition:transform .12s ease,opacity .12s ease}
.btn:active{transform:scale(.97)}
.btn .ico{font-size:14px}
.btn-brand{background:var(--brand);color:#fff;box-shadow:0 4px 12px rgba(218,2,6,.26)}
.btn-brand:active{background:var(--brand-d)}
.btn-primary{background:var(--brand);color:#fff;box-shadow:0 4px 12px rgba(218,2,6,.26)}
.btn-white{background:#fff;color:var(--brand);font-weight:600;box-shadow:0 4px 12px rgba(0,0,0,.10)}
.btn-outline{background:rgba(255,255,255,.16);color:#fff;border:1px solid rgba(255,255,255,.44)}
.btn-ghost{background:var(--info-soft);color:var(--text-2);border:1px solid var(--line)}
.btn-sm{padding:9px 15px;font-size:13.5px;flex:1}
.btn[disabled]{opacity:.5;pointer-events:none}

/* ---------------- ★ V3.12.0：上传卡内的「安全承诺条」 ----------------
   位置＝红色上传卡内部、格式说明（.hero-fmt）正下方 —— 也就是用户截图里画框的那条空带。
   V3.11.0 及以前它是一条**卡外的白底灰字卡**，用户反馈「不够显眼」，而且上传卡底部
   还留着一条空带。现在两件事一起解决：把提示搬进卡内、填掉空带，并做成
   「红底玻璃条 + 白底红字徽章」—— 在整片红色里，那块纯白徽章是最抓眼睛的元素。
   文案由 app.js 按 OCR 开关动态改写（开了 OCR 就不能再说「不会上传」），
   所以只做样式，不要在这里写死文案。
   ★ 用块级 + text-align:center，而不是 flex —— 徽章是 display:inline-block 的行内元素，
     放不下时**自动折到第二行并居中**（就是想要的效果）；用 flex 反而会把徽章留在
     第一行把正文压成两三行（375px 实测挤成 3 行）。 */
.safe-note{position:relative;display:block;margin:14px auto 0;max-width:100%;
  padding:8px 12px;border-radius:11px;
  background:rgba(255,255,255,.21);border:1px solid rgba(255,255,255,.44);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.20);
  font-size:12px;line-height:1.72;color:#fff;text-align:center}
.safe-note .ico{display:inline-flex;vertical-align:-2.5px;margin-right:4px;color:#fff;opacity:.95}
.safe-note .ico svg{display:block}
/* 关键词做成白底红字徽章：红卡上唯一的纯白块，最抓眼睛 */
.safe-note strong{display:inline-block;background:#fff;color:var(--brand);
  border-radius:5px;padding:0 6px;margin-left:2px;font-weight:700;letter-spacing:.2px;
  white-space:nowrap;box-shadow:0 1px 4px rgba(120,0,0,.18)}

.card{margin:12px auto 0;background:var(--card);
  border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}
.card-title{font-size:14.5px;font-weight:600;margin-bottom:12px;display:flex;justify-content:space-between;align-items:center}

.feature-list li{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--line-2);align-items:flex-start}
.feature-list li:last-child{border-bottom:0;padding-bottom:0}
.feature-list li:first-child{padding-top:0}
.tag{flex:0 0 auto;font-size:11.5px;padding:3px 8px;border-radius:6px;font-weight:600;line-height:1.5;margin-top:1px;white-space:nowrap}
.tag-brand{background:var(--brand-soft);color:var(--brand)}
.tag-good{background:var(--good-soft);color:var(--good)}
.tag-warn{background:var(--warn-soft);color:#b26a00}
.tag-gray{background:var(--info-soft);color:var(--muted)}
.tag-red{background:var(--bad-soft);color:var(--bad)}
.tag-blue{background:#eef4ff;color:#2563eb}
.feat-desc{font-size:12.8px;color:var(--text-2);line-height:1.62}

/* ---------------- 报告列表 ---------------- */
#historyList .h-item{display:flex;gap:12px;align-items:center;background:var(--card);
  border-radius:14px;box-shadow:var(--shadow);padding:14px;margin-top:10px}
#historyList .h-item:first-child{margin-top:14px}
#historyList .h-ico{flex:0 0 auto;width:42px;height:42px;border-radius:12px;background:var(--brand-soft);
  color:var(--brand);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700}
#historyList .h-left{flex:1;min-width:0}
#historyList .h-name{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#historyList .h-meta{font-size:11.5px;color:var(--muted);margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* ★ V3.9.0 需求5：云端留存的条目打标
   ★ V3.10.0 需求3：列表顶部那行 .hist-hint 同步说明按用户要求去掉，样式一并删掉 */
#historyList .h-cloud{display:inline-block;margin-right:5px;padding:0 5px;border-radius:5px;
  font-size:10px;color:#1d4ed8;background:#eef4ff;border:1px solid #dbe6ff;vertical-align:1px}
#historyList .h-score{flex:0 0 auto;text-align:center;min-width:52px}
#historyList .h-score b{display:block;font-size:18px;line-height:1.15;font-weight:700}
#historyList .h-score i{display:block;font-style:normal;font-size:10.5px;color:var(--muted);margin-top:1px}
#historyList .h-del{flex:0 0 auto;width:26px;height:26px;border-radius:50%;background:var(--info-soft);
  color:var(--muted);font-size:12px;line-height:1;display:flex;align-items:center;justify-content:center}
.lv-a{color:var(--good)} .lv-b{color:#2563eb} .lv-c{color:var(--warn)} .lv-d{color:var(--bad)}
.lv-none{color:var(--muted);font-size:13px}

/* ★ V3.23.0：上传后进「我的报告」等结果 —— 列表顶部的「进行中 / 失败」卡片
   设计取意：像一条已经存在的记录，只是还在跑。用户不用猜「文件到底传上去没有」。 */
#historyList .h-item.is-task{align-items:flex-start}
#historyList .h-ico-task{background:#eef4ff;color:#1d4ed8}
#historyList .h-spin{display:block;width:16px;height:16px;border-radius:50%;
  border:2px solid #c7d8fb;border-top-color:#1d4ed8;animation:hSpin .8s linear infinite}
@keyframes hSpin{to{transform:rotate(360deg)}}
#historyList .h-bar{margin-top:8px;height:4px;border-radius:99px;background:#eef2f8;overflow:hidden}
#historyList .h-bar i{display:block;height:100%;width:0;border-radius:99px;
  background:linear-gradient(90deg,#4a7dfb,#2f5fe0);transition:width .35s ease}
#historyList .h-task-tip{flex:0 0 auto;font-size:10.5px;color:var(--muted);
  background:var(--info-soft);border-radius:6px;padding:3px 6px;white-space:nowrap}
#historyList .h-item.is-fail{background:#fff8f8}
#historyList .h-ico-fail{background:#fdecec;color:#c62828}
#historyList .h-task-fail{color:#c62828;white-space:normal;line-height:1.55;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
#historyList .h-task-btn{flex:0 0 auto;border:0;background:var(--brand);color:#fff;
  font-size:12px;font-weight:600;padding:6px 12px;border-radius:999px}
/* 图片型 / 扫描件：数字来自残缺文字层，必须一眼看得出来 */
#historyList .h-img{display:inline-block;margin-right:5px;padding:0 5px;border-radius:5px;
  font-size:10px;color:#9a6700;background:#fff6e0;border:1px solid #ffe2a8;vertical-align:1px}

.empty{padding:70px 24px;text-align:center;color:var(--muted);font-size:13.5px;line-height:1.9}
.empty .ico{display:block;font-size:34px;margin-bottom:12px;opacity:.55}

/* ---------------- ★ V3.23.1：报告列表锁定态 ----------------
   未登录 / 设备被移除时，报告列表不再渲染任何记录（本机缓存也不给看），
   换成一块说明卡 + 出口按钮。留白比普通空态小一点，避免整页太空。 */
.empty.lk{padding:56px 24px}
.empty.lk .ico{opacity:.5;font-size:32px;margin-bottom:10px}
.empty.lk .lk-t{display:flex;align-items:center;justify-content:center;gap:6px;font-size:15px;font-weight:600;color:var(--text-2);margin-bottom:6px}
.empty.lk .lk-d{font-size:13px;color:var(--muted);line-height:1.85;margin:0 auto;max-width:19em}
.empty.lk .lk-btns{margin-top:18px;display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.empty.lk .lk-btn{min-width:132px}

/* ---- ★ V3.24.0 「？」帮助按钮 + 说明弹层（报告锁定态 / 会员中心未登录页共用） ---- */
.lk-help,.mc-help{
  flex:0 0 auto;width:19px;height:19px;padding:0;border:1px solid var(--line);
  border-radius:50%;background:#fff;color:var(--muted);font-size:12px;line-height:17px;
  font-weight:600;text-align:center;cursor:pointer;
}
.lk-help:active,.mc-help:active{background:#faf3f3;color:var(--brand)}
.help-mask{
  position:fixed;inset:0;z-index:200;background:rgba(15,23,42,.45);
  display:flex;align-items:center;justify-content:center;padding:24px;
}
.help-card{
  width:100%;max-width:330px;background:#fff;border-radius:16px;padding:18px 18px 16px;
  box-shadow:0 18px 50px rgba(15,23,42,.22);
}
.help-hd{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.help-hd b{flex:1;min-width:0;font-size:15px;color:var(--text)}
.help-x{
  flex:0 0 auto;width:26px;height:26px;padding:0;border:0;border-radius:50%;
  background:#f6f6f8;color:var(--muted);font-size:17px;line-height:1;cursor:pointer;
}
.help-bd{font-size:13px;color:#5b6879;line-height:1.85;margin-bottom:16px;word-break:break-word}
.help-ok{margin-top:0;width:100%}

/* ---------------- 我的 ---------------- */
.mine-card{margin:14px auto 0}
/* ★ V3.5.0：原 .mine-guest（红渐变卡）/ .mine-vip*（三宫格额度卡）已废弃 ——
   「我的」页会员中心改为参照盛融百科的结构，样式整套挪到 h5/member.css 的
   .mc-head / .mc-card / .mc-renew 段（保持浅色白卡 + 品牌红点缀）。
   留在这里只会让人误以为还在用。 */

.kv-list li{display:flex;justify-content:space-between;gap:14px;padding:9px 0;
  border-bottom:1px solid var(--line-2);font-size:13px}
.kv-list li:last-child{border-bottom:0;padding-bottom:0}
.kv-list li:first-child{padding-top:0}
.kv-list li span{color:var(--muted);flex:0 0 auto}
.kv-list li b{font-weight:500;color:var(--text-2);text-align:right}
.mine-tip{font-size:11.5px;color:var(--muted);line-height:1.7;margin-top:12px;
  padding-top:11px;border-top:1px dashed var(--line)}
.mine-note{font-size:12.5px;color:var(--text-2);line-height:1.75}

/* ---------------- 底部导航 ---------------- */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;
  background:rgba(255,255,255,.97);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  border-top:1px solid var(--line);padding-bottom:var(--safe-b)}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  height:var(--tabbar-h);color:var(--muted);font-size:10.5px;transition:color .15s ease}
.tab svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.75;
  stroke-linecap:round;stroke-linejoin:round}
.tab.is-on{color:var(--brand)}
.tab:active{opacity:.72}

/* ---------------- 品牌页脚 ----------------
   ★ V3.7.0：版权与备案信息固定在视口底部（不再随内容流走）。
   有底部导航时悬在导航上方；无导航的页面（报告页）贴底。
   背景用「实底 → 透明」的渐变，长内容从它底下滚过不生硬；
   整层 pointer-events:none，绝不挡住底下内容的点击。 */
.brand-foot{
  position:fixed;left:0;right:0;bottom:var(--safe-b,0px);
  margin:0;padding:9px 0 8px;text-align:center;z-index:30;pointer-events:none;
  background:linear-gradient(to top,var(--bg) 58%,rgba(0,0,0,0));
}
body.has-tabbar .brand-foot{bottom:calc(var(--tabbar-h) + var(--safe-b,0px))}
body.has-tabbar{padding-bottom:calc(var(--tabbar-h) + 86px + var(--safe-b))}
body{padding-bottom:calc(78px + var(--safe-b))}
/* logo 已做透明底：不再需要靠 opacity 压白框，提到 1 反而更干净 */
.brand-foot-logo{height:33px;width:auto;opacity:1}
/* logo 正下方的一句话定位（比英文名更醒目，字号大一级） */
.brand-foot-slogan{font-size:12.5px;color:var(--text-2);letter-spacing:.4px;margin-top:10px;font-weight:500}
/* ★ V3.3.0：去掉了 logo 下方那行英文「SHENG RONG PU HUI」（用户要求不要） */
.brand-foot-icp{font-size:11px;color:var(--muted);margin-top:9px;line-height:1.7}
/* ★ V3.7.6 合规：备案号是可点击链接（工信部/公安部备案库），视觉与纯文本一致
   ★ V3.14.1 修复：外层 .brand-foot 是 pointer-events:none（不挡底下内容），
   这一层会**连带**让里面的链接完全收不到点击 → 用户反馈「备案信息点了没反应」。
   子元素显式 pointer-events:auto 即可把命中区域「要回来」，又不破坏整层不挡内容的设计。 */
.brand-foot-icp a.icp-link{color:inherit;text-decoration:none;pointer-events:auto}
.brand-foot-icp a.icp-link:hover{text-decoration:underline}

/* 未登录时上传区下方的「需注册登录」提示（点它直接打开登录页） */
.hero-lock{display:flex;align-items:center;justify-content:center;gap:6px;
  margin:12px auto 0;padding:8px 14px;border-radius:999px;
  background:rgba(255,255,255,.2);border:1px dashed rgba(255,255,255,.62);
  color:#fff;font-size:12.5px;font-weight:600;font-family:inherit;cursor:pointer;width:auto}
.hero-lock .hl-ico{font-size:13px}
.hero-lock:active{background:rgba(255,255,255,.3)}
.hero-lock[hidden]{display:none}

/* ---------------- 分析中 ---------------- */
.loading-wrap{max-width:420px;margin:0 auto;padding:calc(90px + env(safe-area-inset-top,0px)) 30px 40px;text-align:center}
.spinner{width:44px;height:44px;margin:0 auto 20px;border:3px solid var(--line);
  border-top-color:var(--brand);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.loading-file{font-size:13.5px;color:var(--text-2);word-break:break-all;padding:0 8px}
.steps{margin:26px auto 0;text-align:left;display:inline-block}
.steps li{font-size:13.5px;color:var(--muted);padding:7px 0 7px 26px;position:relative}
.steps li::before{content:"";position:absolute;left:4px;top:13px;width:9px;height:9px;border-radius:50%;
  background:var(--line);transition:background .2s}
.steps li.done{color:var(--text-2)}
.steps li.done::before{background:var(--good)}
.steps li.active{color:var(--brand);font-weight:600}
.steps li.active::before{background:var(--brand);box-shadow:0 0 0 4px rgba(218,2,6,.14)}
.loading-tip{margin-top:22px;font-size:11.5px;color:var(--muted)}

/* ---------------- 弹层 / 提示 ---------------- */
.sheet-mask{position:fixed;inset:0;background:rgba(17,24,39,.42);z-index:50;display:flex;align-items:flex-end}
.sheet{width:100%;background:#fff;border-radius:16px 16px 0 0;padding:18px 18px calc(18px + var(--safe-b));
  animation:up .22s ease-out;max-height:80vh;overflow:auto}
@keyframes up{from{transform:translateY(30px);opacity:.6}to{transform:none;opacity:1}}
.sheet-head{font-size:15.5px;font-weight:600;text-align:center}
.sheet-sub{font-size:12px;color:var(--muted);text-align:center;margin-top:5px}
.sheet-options{margin-top:14px;display:flex;flex-direction:column;gap:9px}
.sheet-options button{padding:13px;border-radius:11px;background:var(--info-soft);font-size:14.5px;color:var(--text);border:1px solid var(--line)}
.sheet-options button.on{background:var(--brand-soft);color:var(--brand);border-color:var(--brand-line);font-weight:600}
.sheet-cancel{margin-top:12px;width:100%}

.toast{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);background:rgba(17,24,39,.88);color:#fff;
  font-size:13.5px;padding:11px 18px;border-radius:10px;max-width:76vw;text-align:center;line-height:1.5;
  /* ★ V3.16.0：z-index 从 99 提到 10000。
     改前是 99，而「我的」页各弹层的遮罩都比它高 —— .mb-mask=120、.mc-sheet-mask=130、
     .mc-daily-mask=1300、.mb-agrmask（协议层）=9999。于是**任何弹层里触发的 toast
     都被压在 45% 暗色遮罩下面**（深灰字条 + 深色浮层 ≈ 完全看不见），
     用户报「联系客服的两个复制点了没反应」——其实复制是成功的，只是提示看不见。
     铁律：toast 必须是全场最高层，靠**抬高自己**解决，绝不去调低遮罩。 */
  z-index:10000}

/* 海报预览层 */
.poster-mask{align-items:center;justify-content:center;padding:16px}
.poster-box{width:100%;max-width:420px;max-height:88vh;background:#fff;border-radius:16px;
  display:flex;flex-direction:column;overflow:hidden}
.poster-head{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line)}
.poster-tip{font-size:12.5px;color:var(--muted);line-height:1.5;flex:1}
.poster-x{flex:0 0 auto;width:28px;height:28px;border-radius:50%;background:var(--info-soft);
  color:var(--muted);font-size:14px;line-height:1;border:none}
.poster-img{flex:1;overflow:auto;background:#eef2f8;padding:12px;text-align:center;-webkit-overflow-scrolling:touch}
.poster-img img{width:100%;max-width:340px;height:auto;display:block;margin:0 auto;border-radius:10px;
  box-shadow:0 4px 16px rgba(23,43,77,.14)}
.poster-actions{display:flex;gap:10px;padding:12px 14px calc(12px + var(--safe-b));border-top:1px solid var(--line)}
.poster-actions .btn{flex:1}

[hidden]{display:none !important}

@media (min-width:700px){
  .upload-actions .btn{padding:12px 24px}
}
@media (max-width:360px){
  .card{padding:14px}
  .hero-card{padding:22px 14px 18px}
  .hero-t{font-size:17px}
  /* ★ V3.12.0：超窄屏把安全承诺条收一档，保证「不上传」徽章不被挤到折行 */
  .safe-note{font-size:11.5px;padding:7px 10px}
}

/* ============================================================
   ★ V3.5.0：报告末尾的「扫码查看 / 转发」二维码卡片
   ---------------------------------------------------------------
   放在报告正文最后（免责申明之后），走品牌红体系（与报告内容区的蓝色系区分）：
   二维码本身用深灰 #111827，保证手机摄像头好识别，不要染成品牌红。
   ============================================================ */
.rep-qr{margin:14px 0 4px;background:var(--card);border:1px solid var(--line);
  border-radius:14px;padding:14px 14px 16px}
.rep-qr-h{display:flex;align-items:center;gap:7px;font-size:14px;color:var(--text);
  padding-bottom:11px;border-bottom:1px solid var(--line-2);margin-bottom:13px}
.rep-qr-h b{font-weight:600}
.rep-qr-ico{display:inline-flex;align-items:center;justify-content:center;
  width:20px;height:20px;border-radius:6px;background:var(--brand-soft);
  color:var(--brand);font-size:11px;line-height:1}
.rep-qr-body{display:flex;gap:14px;align-items:flex-start}
.rep-qr-code{position:relative;flex:0 0 auto;width:148px;height:148px;background:#fff;border-radius:10px;
  display:flex;align-items:center;justify-content:center;overflow:hidden}
.rep-qr-code .rep-qr-img{display:block !important;width:148px;height:148px}
/* ★ V3.6.0（需求 7）：二维码中心叠融镜 logo。
   白底圆角底座把码元盖住一小块，靠二维码本身的纠错级别 H（30%）还原。
   底座尺寸 56×30 ≈ 码面 7.7% 面积，远小于 H 的容错上限，不影响扫码。 */
.rep-qr-logo{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:56px;height:30px;border-radius:6px;background:#fff;
  display:flex;align-items:center;justify-content:center;pointer-events:none}
.rep-qr-logo img{display:block;width:46px;height:auto;max-height:23px}
.rep-qr-wait{font-size:12px;color:var(--muted);text-align:center;padding:0 8px;line-height:1.7}
.rep-qr-side{flex:1;min-width:0}
.rep-qr-tip{font-size:12.5px;color:var(--text-2);line-height:1.75;margin:0 0 9px}
.rep-qr-tip b{color:var(--text);font-weight:600}
.rep-qr-url{font-size:11.5px;color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  word-break:break-all;background:var(--line-2);border-radius:8px;padding:8px 10px;line-height:1.6}
.rep-qr-acts{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.rep-qr-btn{font-size:12.5px;padding:8px 14px;border-radius:9px;border:1px solid var(--brand);
  background:var(--brand);color:#fff;text-decoration:none;display:inline-block;line-height:1.2;
  font-family:inherit}
.rep-qr-btn:disabled{opacity:.5;border-color:var(--line);background:var(--line);color:var(--muted)}
.rep-qr-btn.ghost{background:#fff;color:var(--brand)}
.rep-qr-exp{font-size:11.5px;color:var(--muted);margin:9px 0 0}
.rep-qr-note{font-size:12.5px;color:var(--text-2);line-height:1.75;margin:0 0 10px}
@media (max-width:360px){
  .rep-qr-body{flex-direction:column;align-items:center}
  .rep-qr-side{width:100%}
}
