/* 共用：回到顶部 + 登录/用户面板 */
/* 回到顶部：白底圆形线框按钮，里面只有一枚上箭头（当前色随主题蓝） */
.back-top-btn{
  position:fixed; left:50%; bottom:58px; z-index:60;
  display:flex; align-items:center; justify-content:center;
  width:46px; height:46px; padding:0;
  border:1px solid #d7e2f4; border-radius:50%;
  background:#fff; color:#2563eb; cursor:pointer;
  box-shadow:0 6px 18px rgba(28,35,51,.13);
  opacity:0; visibility:hidden; transform:translate(-50%, 12px);
  transition:opacity .25s, transform .25s, visibility .25s,
             top .2s ease, left .2s ease, bottom .2s ease,
             background .18s, border-color .18s, color .18s;
}
.back-top-btn svg{width:19px; height:19px; display:block}
.back-top-btn.show{opacity:1; visibility:visible; transform:translate(-50%, 0)}
.back-top-btn:hover{background:#eff5ff; border-color:#b9cdf1; color:#1d4ed8}
.back-top-btn:active{background:#e4eeff; border-color:#a9c2ee}
/* 电脑端：与电梯导航同列（圆心对齐导航中轴），尺寸不变，位置由脚本算 */
@media (max-width:640px){
  .back-top-btn{width:40px; height:40px; bottom:64px}
  .back-top-btn svg{width:17px; height:17px}
  /* 流水页：与电梯导航同排，直径 = 导航整体高度（50px，含内边距与边框；
     实际尺寸由脚本按导航实测高度写入，这里只是脚本生效前的兜底） */
  .back-top-btn.bt-row{width:50px; height:50px}
  .back-top-btn.bt-row svg{width:42%; height:42%}
}

.auth-mask{
  position:fixed; top:0; left:0; right:0; bottom:0; z-index:1200; display:none;
  align-items:center; justify-content:center;
  padding:var(--mb-gap, 20px);
  background:rgba(15,23,42,.45); backdrop-filter:blur(2px);
}
.auth-mask.show{display:flex}
/* 最大高度用 shell.css 的 --mb-max（82dvh，老浏览器 82vh）：
   以前这里写 86vh / .tall 88vh / 手机 90vh，手机上几乎顶满屏，
   现在四套弹窗（.ind-* / .hist-* / .modal-* / .auth-*）同一个封顶值。 */
.auth-box{
  width:min(94vw,460px); max-height:var(--mb-max, 82vh); overflow:auto;
  background:#fff; border-radius:14px; box-shadow:0 20px 60px rgba(15,23,42,.3);
  animation:authPop .18s ease-out;
}
@keyframes authPop{from{transform:scale(.96);opacity:0}to{transform:scale(1);opacity:1}}
/* 标题行吸顶：正文滚到下面时 ✕ 仍然在顶部，不用滚回去才能关 */
.auth-head{display:flex;align-items:center;justify-content:space-between;
  position:sticky;top:0;z-index:3;background:#fff;border-radius:14px 14px 0 0;
  padding:15px 18px;border-bottom:1px solid #eef2f7}
.auth-head h3{margin:0;font-size:16px;color:#1e293b}
.auth-x{border:none;background:none;font-size:16px;color:#94a3b8;cursor:pointer;padding:2px 6px;border-radius:6px}
.auth-x:hover{background:#f1f5f9}
.auth-body{padding:16px 18px 18px}
.auth-field{margin-bottom:12px}
.auth-field label{display:block;font-size:12.5px;color:#64748b;margin-bottom:5px}
.auth-field input{width:100%;box-sizing:border-box;padding:9px 11px;border:1px solid #dbe2ec;border-radius:8px;font-size:14px;outline:none}
.auth-field input:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.auth-btn{width:100%;padding:10px;border:none;border-radius:9px;background:#2563eb;color:#fff;font-size:14px;font-weight:600;cursor:pointer}
.auth-btn:hover{background:#1d4ed8}
.auth-btn.ghost{background:#eef2ff;color:#3157c8}
.auth-btn.ghost:hover{background:#e0e7ff}
.auth-row{display:flex;gap:10px;margin-top:10px}
.auth-row .auth-btn{width:auto;flex:1}
.auth-err{color:#dc2626;font-size:12.5px;min-height:16px;margin-bottom:6px}
.auth-link{background:none;border:none;color:#2563eb;font-size:12.5px;cursor:pointer;padding:0}
.auth-actions{border-top:1px solid #eef2f7;margin-top:14px;padding-top:6px}
.auth-action{display:flex;align-items:center;justify-content:space-between;padding:11px 2px;border-bottom:1px solid #f1f5f9;font-size:14px;color:#334155;cursor:pointer}
.auth-action:hover{color:#2563eb}
.auth-action .chev{color:#cbd5e1}
.auth-me{padding:10px 0 6px;font-size:13px;color:#64748b}
.auth-me b{color:#1e293b;font-size:14px}
.auth-tag{display:inline-block;font-size:11px;padding:1px 7px;border-radius:10px;background:#eef2ff;color:#3157c8;margin-left:6px}
.auth-sub{font-size:12px;color:#94a3b8;padding:2px 0 8px}
.auth-list{border:1px solid #eef2f7;border-radius:8px;max-height:220px;overflow:auto}
.auth-list .row{padding:8px 10px;border-bottom:1px solid #f4f6fa;font-size:13px;color:#334155;display:flex;justify-content:space-between;gap:8px}
.auth-list .row:last-child{border-bottom:none}
.auth-list .muted{color:#94a3b8;font-size:12px}
.auth-pill{font-size:11px;padding:1px 6px;border-radius:8px;background:#f1f5f9;color:#64748b}
.auth-pill.ok{background:#dcfce7;color:#15803d}
.auth-pill.bad{background:#fee2e2;color:#b91c1c}
.auth-hint{font-size:12px;color:#94a3b8;line-height:1.6;margin-top:8px}

/* ================= 弹窗尺寸（列表类弹窗更高更宽） =================
   高度不再单独放大：.tall 只负责变宽 + 让列表自己滚，封顶值统一取 --mb-max。 */
.auth-box.tall{width:min(96vw,600px);max-height:var(--mb-max, 82vh);
  display:flex;flex-direction:column;overflow:hidden}
.auth-box.tall .auth-body{display:flex;flex-direction:column;min-height:0;flex:1}
.auth-list.tall{max-height:none;flex:1;min-height:140px;overflow:auto;border-radius:12px}
@media (max-width:640px){
  .auth-box.tall{width:calc(100vw - 2 * var(--mb-gap, 20px))}
}

/* ================= 服务器端记录：卡片式条目 ================= */
.sv-list{display:flex;flex-direction:column;gap:8px;overflow:auto;flex:1;min-height:120px;
  padding-right:2px}
.sv-item{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;
  border:1px solid #edf1f7;border-radius:11px;background:#fff;
  transition:border-color .15s,box-shadow .15s,transform .15s;
  text-decoration:none;color:inherit}
.sv-item:hover{border-color:#c7d7f7;box-shadow:0 4px 14px rgba(37,99,235,.10);transform:translateY(-1px)}
.sv-item .sv-main{flex:1;min-width:0}
.sv-item .sv-subject{font-size:13px;color:#1e293b;line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sv-item .sv-meta{font-size:11.5px;color:#94a3b8;margin-top:3px;display:flex;
  align-items:center;gap:6px;flex-wrap:wrap}
.sv-item .sv-open{flex:none;align-self:center;font-size:12px;font-weight:600;
  color:#2563eb;background:#eef4ff;border-radius:8px;padding:5px 10px;white-space:nowrap}
.sv-item:hover .sv-open{background:#2563eb;color:#fff}
.sv-foot{display:flex;align-items:center;gap:10px;padding:10px 2px 0}
.sv-foot .auth-btn{flex:none;width:auto;padding:9px 18px}
.sv-more{flex:1;font-size:12.5px;color:#64748b}
.auth-pill.credit{background:#e8effd;color:#1d4ed8}
.auth-pill.flow{background:#e6f7ee;color:#15803d}
/* 财报单独用紫色：三模块站在一起时要能一眼分清，别和征信的蓝撞色 */
.auth-pill.financial{background:#f3ecfe;color:#7c3aed}

/* ================= 局部骨架（服务端记录 / 列表） ================= */
.sk-item{padding:10px 12px;border:1px solid #edf1f7;border-radius:11px;background:#fff}
.sk-item .l{display:block;height:11px;border-radius:6px;background:#e8edf6;
  position:relative;overflow:hidden}
.sk-item .l+.l{margin-top:7px}
.sk-item .l::after{content:"";position:absolute;top:0;bottom:0;left:0;width:55%;
  transform:translateX(-130%);
  background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.95),rgba(255,255,255,0));
  animation:authSk 1.15s ease-in-out infinite}
@keyframes authSk{0%{transform:translateX(-130%)}100%{transform:translateX(240%)}}
@media (prefers-reduced-motion:reduce){.sk-item .l::after{animation:none}}

/* ================= 「查看服务器端全部记录」按钮（放弹窗底栏） ================= */
.btn-server-records{display:inline-flex;
  align-items:center;gap:6px;height:31px;padding:0 13px;border-radius:999px;
  border:1px solid #dbe6fb;background:#f2f7ff;color:#2563eb;
  font-size:12.5px;font-weight:600;white-space:nowrap;cursor:pointer;
  transition:background .15s,border-color .15s,color .15s,box-shadow .15s}
.btn-server-records:hover{background:#2563eb;border-color:#2563eb;color:#fff;
  box-shadow:0 3px 10px rgba(37,99,235,.22)}
.btn-server-records svg{width:15px;height:15px;flex:none}
/* 老模板（没有 .hist-foot）仍注入标题行时保持右对齐 */
.hist-head .btn-server-records{margin-left:auto;margin-right:10px}
/* 深色：这颗按钮是浅底蓝字（#f2f7ff），落在深色历史弹窗的底栏上就是一块白斑。
   它是 auth.js 动态注入的，四页共用，所以在 auth.css 里一处改掉。 */
html[data-theme="dark"] .btn-server-records{
  background:rgba(107,155,247,.14);border-color:rgba(107,155,247,.28);color:#a6c3fb}
html[data-theme="dark"] .btn-server-records:hover{
  background:#3a6fd8;border-color:#3a6fd8;color:#fff;box-shadow:none}

/* ================= 用户面板 ================= */
.auth-me-card{display:flex;align-items:center;gap:12px;padding:14px;
  border-radius:14px;background:linear-gradient(135deg,#eef4ff,#e6edff);
  border:1px solid #dde7fb;margin-bottom:14px}
.auth-me-av{width:44px;height:44px;border-radius:50%;flex:none;display:flex;
  align-items:center;justify-content:center;font-size:18px;font-weight:700;
  color:#fff;background:linear-gradient(135deg,#3b82f6,#6366f1);
  box-shadow:0 6px 16px rgba(59,130,246,.32)}
.auth-me-info{min-width:0}
.auth-me-name{font-size:15px;font-weight:700;color:#1e293b;display:flex;
  align-items:center;gap:7px}
.auth-me-tip{font-size:12px;color:#64748b;margin-top:2px}
.auth-group{margin-top:14px}
.auth-group-t{font-size:11.5px;color:#94a3b8;letter-spacing:.5px;
  padding:0 2px 6px;text-transform:uppercase}
.auth-cards{display:flex;flex-direction:column;gap:8px}
.auth-card{display:flex;align-items:center;gap:11px;padding:11px 13px;
  border:1px solid #edf1f7;border-radius:12px;background:#fff;cursor:pointer;
  font-size:13.5px;color:#334155;transition:border-color .15s,box-shadow .15s,transform .15s}
.auth-card:hover{border-color:#c7d7f7;box-shadow:0 4px 14px rgba(37,99,235,.10);
  transform:translateY(-1px);color:#1d4ed8}
.auth-card .ico{width:30px;height:30px;border-radius:9px;flex:none;display:flex;
  align-items:center;justify-content:center;font-size:14px;background:#f1f5fb;
  color:#4066bd;transition:background .15s,color .15s}
.auth-card .ico svg{width:17px;height:17px;display:block}
.auth-card:hover .ico{background:#e6efff;color:#1d4ed8}
.auth-card.danger{color:#dc2626}
.auth-card.danger .ico{background:#fef2f2;color:#dc2626}
.auth-card.danger:hover .ico{background:#fde8e8;color:#dc2626}
.auth-card .chev{margin-left:auto;color:#cbd5e1;font-size:16px;display:flex;
  align-items:center;transition:color .15s}
.auth-card .chev svg{width:15px;height:15px;display:block}
.auth-card:hover .chev{color:#93a7c8}
