/* ============================================================
   SailaiKIT · 设计系统
   蓝色主色 + 冷色青点缀 + 轻科技感（网格/光晕/单色数字）
   ============================================================ */

:root{
  --brand-950:#031a45;
  --brand-900:#062a6b;
  --brand-800:#083a8c;
  --brand-700:#0b46a8;
  --brand-600:#1259c3;
  --brand-500:#1a6fe0;
  --brand-400:#4d93ea;
  --brand-weak:#eaf2ff;
  --brand-weak-2:#d9e8ff;

  --cyan:#38bdf8;
  --cyan-deep:#0ea5e9;
  --cyan-soft:#e2f5fe;

  --bg:#f1f6fd;
  --card:#ffffff;
  --line:#e3eaf5;
  --line-strong:#cfdcee;

  --text:#0d1a2c;
  --text-2:#39495f;
  --muted:#7186a3;

  --ok:#0d7a66;
  --ok-bg:#e3f7f2;
  --warn:#8a5300;
  --warn-bg:#fdf2e0;
  --err:#b3261e;
  --err-bg:#fdecea;

  --radius:14px;
  --radius-sm:10px;
  --shadow-sm:0 1px 2px rgba(11,38,76,.06);
  --shadow:0 12px 32px -18px rgba(11,38,76,.34);
  --shadow-lift:0 18px 42px -20px rgba(11,38,76,.42);

  --mono:ui-monospace,SFMono-Regular,Menlo,"JetBrains Mono","Cascadia Mono",monospace;
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  min-height:100vh;
  color:var(--text);
  font:14px/1.68 var(--font);
  background:
    radial-gradient(900px 420px at 12% -8%, #dceaff 0%, rgba(220,234,255,0) 62%),
    radial-gradient(760px 380px at 92% 2%, #e6f7ff 0%, rgba(230,247,255,0) 60%),
    linear-gradient(180deg,#f5f9ff 0%,#f1f6fd 42%,#eef4fc 100%);
  background-attachment:fixed;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--brand-600);text-decoration:none;transition:color .16s}
a:hover{color:var(--brand-500)}

/* ---------------- 顶栏 ---------------- */
.app-header{
  position:sticky;top:0;z-index:50;
  background:linear-gradient(102deg,#04205a 0%,var(--brand-900) 28%,var(--brand-700) 62%,#1568d8 100%);
  box-shadow:0 2px 20px -6px rgba(4,26,72,.55);
  isolation:isolate;
}
.app-header::before{
  content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background-image:
    linear-gradient(rgba(255,255,255,.055) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.055) 1px,transparent 1px);
  background-size:34px 34px;
  mask-image:linear-gradient(90deg,rgba(0,0,0,.9),rgba(0,0,0,.25) 62%,rgba(0,0,0,0));
  -webkit-mask-image:linear-gradient(90deg,rgba(0,0,0,.9),rgba(0,0,0,.25) 62%,rgba(0,0,0,0));
}
.app-header::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(56,189,248,.85) 22%,rgba(125,211,252,.9) 50%,rgba(56,189,248,.85) 78%,transparent);
  opacity:.85;
}
.nav{
  max-width:1180px;margin:0 auto;height:62px;padding:0 24px;
  display:flex;align-items:center;gap:8px;
}
.brand{display:flex;align-items:center;gap:10px;margin-right:18px;flex:none}
.brand:hover{color:inherit}
.brand-mark{width:32px;height:32px;flex:none;filter:drop-shadow(0 2px 8px rgba(56,189,248,.45))}
.brand-text{display:flex;align-items:baseline;gap:0;font-size:17px;font-weight:700;letter-spacing:.2px;color:#fff;line-height:1}
.brand-text .kit{
  color:var(--cyan);
  letter-spacing:1.4px;
  text-shadow:0 0 18px rgba(56,189,248,.55);
}
.brand-sub{
  display:block;font-size:9.5px;font-weight:500;letter-spacing:2.6px;
  color:rgba(255,255,255,.5);text-transform:uppercase;margin-top:4px;
}
.nav-link{
  color:rgba(255,255,255,.76);font-size:13.5px;font-weight:500;
  padding:7px 13px;border-radius:9px;white-space:nowrap;
  border:1px solid transparent;transition:background .16s,color .16s,border-color .16s;
}
.nav-link:hover{color:#fff;background:rgba(255,255,255,.1)}
.nav-link.is-active{
  color:#fff;background:rgba(255,255,255,.16);
  border-color:rgba(255,255,255,.18);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16);
}
.spacer{flex:1}

.user-chip{
  display:flex;align-items:center;gap:9px;padding:5px 6px 5px 12px;
  border-radius:99px;background:rgba(255,255,255,.1);
  border:1px solid rgba(255,255,255,.16);
  color:rgba(255,255,255,.92);font-size:12.5px;white-space:nowrap;
}
.user-chip .who{display:flex;flex-direction:column;line-height:1.25}
.user-chip .who b{font-weight:600;font-size:12.5px;color:#fff}
.user-chip .who span{font-size:10.5px;color:rgba(255,255,255,.62)}
.user-chip .lvl{font-size:11.5px;letter-spacing:0;color:rgba(255,255,255,.9)}
.avatar{
  width:26px;height:26px;border-radius:50%;flex:none;
  display:grid;place-items:center;font-size:11.5px;font-weight:600;color:#fff;
  background:linear-gradient(135deg,rgba(56,189,248,.92),rgba(96,165,250,.6));
  border:1px solid rgba(255,255,255,.4);
}
.ghost-btn{
  background:none;border:none;padding:6px 10px;border-radius:8px;
  color:rgba(255,255,255,.66);font:inherit;font-size:12.5px;cursor:pointer;
  transition:background .16s,color .16s;
}
.ghost-btn:hover{background:rgba(255,255,255,.12);color:#fff}

/* ---------------- 布局 ---------------- */
main{max-width:1180px;margin:0 auto;padding:30px 24px 72px}
main.main-flush{max-width:none;padding:0;margin:0}
.page-head{margin-bottom:22px}
.eyebrow{
  display:inline-flex;align-items:center;gap:6px;
  font-size:10.5px;font-weight:600;letter-spacing:2px;text-transform:uppercase;
  color:var(--brand-600);background:var(--brand-weak);
  border:1px solid var(--brand-weak-2);border-radius:99px;
  padding:3px 10px;margin-bottom:10px;
}
.eyebrow::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--brand-500);box-shadow:0 0 0 3px rgba(26,111,224,.14)}
h1{font-size:23px;font-weight:700;letter-spacing:-.2px;margin:0 0 6px;color:var(--text)}
.page-head p{margin:0;color:var(--muted);font-size:13px;max-width:760px}
h2{font-size:14px;font-weight:700;letter-spacing:.2px;margin:0 0 14px;color:var(--text);display:flex;align-items:center;gap:8px}
h2::before{content:"";width:3px;height:13px;border-radius:2px;background:linear-gradient(180deg,var(--brand-500),var(--cyan));flex:none}

.card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:20px 22px;margin-bottom:16px;
  box-shadow:var(--shadow-sm),var(--shadow);
}
.card.tight{padding:16px 18px}
.muted{color:var(--muted);font-size:12.5px}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}

/* ---------------- 指标卡 ---------------- */
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:0 0 18px}
.stat{
  position:relative;overflow:hidden;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:17px 18px 15px;box-shadow:var(--shadow-sm);
  transition:transform .2s,box-shadow .2s,border-color .2s;
}
.stat::before{
  content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--brand-600),var(--cyan));
  opacity:.9;
}
.stat::after{
  content:"";position:absolute;right:-26px;top:-26px;width:86px;height:86px;border-radius:50%;
  background:radial-gradient(circle,rgba(26,111,224,.13),rgba(26,111,224,0) 70%);
  pointer-events:none;
}
.stat:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift);border-color:var(--line-strong)}
.stat b{
  display:block;font-family:var(--mono);font-size:27px;font-weight:600;
  line-height:1.2;letter-spacing:-1px;
  background:linear-gradient(135deg,var(--brand-800),var(--brand-500) 58%,var(--cyan-deep));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.stat span{display:block;margin-top:3px;font-size:12px;color:var(--muted);letter-spacing:.3px}

/* ---------------- 表单 ---------------- */
label{display:block;font-size:12px;font-weight:600;color:var(--text-2);margin:15px 0 6px;letter-spacing:.2px}
label:first-child{margin-top:0}
input[type=text],input[type=password],input[type=file],select,textarea{
  width:100%;padding:10px 12px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);
  font:inherit;font-size:13.5px;background:#fbfdff;color:var(--text);
  transition:border-color .16s,box-shadow .16s,background .16s;
}
input[type=text]:focus,input[type=password]:focus,select:focus,textarea:focus{
  outline:none;background:#fff;border-color:var(--brand-500);
  box-shadow:0 0 0 3.5px rgba(26,111,224,.13);
}
input[type=file]{
  padding:9px 10px;cursor:pointer;background:#fbfdff;
}
input[type=file]::file-selector-button{
  margin-right:12px;padding:7px 14px;border-radius:8px;border:1px solid var(--brand-weak-2);
  background:var(--brand-weak);color:var(--brand-700);font:inherit;font-size:12.5px;
  font-weight:600;cursor:pointer;transition:background .16s;
}
input[type=file]::file-selector-button:hover{background:var(--brand-weak-2)}
textarea{
  min-height:280px;font-family:var(--mono);font-size:12.5px;line-height:1.85;
  background:#fafcff;resize:vertical;
}
select{appearance:none;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%237186a3' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}

/* ---------------- 按钮 ---------------- */
button,.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  padding:9px 18px;border-radius:var(--radius-sm);border:1px solid var(--line-strong);
  background:#fff;color:var(--text-2);cursor:pointer;font:inherit;font-size:13.5px;font-weight:600;
  transition:background .16s,border-color .16s,box-shadow .16s,transform .16s;
  text-decoration:none;
}
button:hover,.btn:hover{background:#f7faff;border-color:var(--brand-400);color:var(--brand-700)}
.primary,button.primary,.btn.primary{
  background:linear-gradient(135deg,var(--brand-700),var(--brand-500) 62%,#2a86ec);
  border-color:transparent;color:#fff;
  box-shadow:0 6px 18px -8px rgba(18,89,195,.75),inset 0 1px 0 rgba(255,255,255,.22);
}
.primary:hover,button.primary:hover,.btn.primary:hover{
  background:linear-gradient(135deg,var(--brand-800),var(--brand-600) 62%,var(--brand-500));
  color:#fff;transform:translateY(-1px);
  box-shadow:0 10px 24px -8px rgba(18,89,195,.8),inset 0 1px 0 rgba(255,255,255,.24);
}
.primary:active{transform:translateY(0)}
.danger{color:var(--err);border-color:#f3cfcb;background:#fff}
.danger:hover{background:var(--err-bg);border-color:#e9a9a3;color:var(--err)}
.btn-lg{padding:11px 24px;font-size:14px}
.btn-block{width:100%}

/* ---------------- 提示条 ---------------- */
.msg{
  position:relative;padding:11px 15px 11px 40px;border-radius:var(--radius-sm);
  margin-bottom:12px;font-size:13px;border:1px solid transparent;
  background:var(--brand-weak);color:var(--brand-800);border-color:var(--brand-weak-2);
}
.msg::before{
  content:"";position:absolute;left:15px;top:50%;transform:translateY(-50%);
  width:14px;height:14px;border-radius:50%;background:currentColor;opacity:.16;
}
.msg.success{background:var(--ok-bg);color:var(--ok);border-color:#bfe8de}
.msg.error{background:var(--err-bg);color:var(--err);border-color:#f6cdc9}
.msg.warning{background:var(--warn-bg);color:var(--warn);border-color:#f3ddb8}
.msg.info{background:var(--brand-weak);color:var(--brand-800);border-color:var(--brand-weak-2)}

/* ---------------- 表格 ---------------- */
.table-wrap{overflow-x:auto;margin:0 -4px;padding:0 4px}
table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
th,td{text-align:left;padding:11px 10px;border-bottom:1px solid var(--line);vertical-align:top}
th{
  color:var(--muted);font-weight:600;font-size:11px;letter-spacing:1.1px;
  text-transform:uppercase;padding:8px 10px;
  background:linear-gradient(180deg,#f7fbff,#f2f7ff);
  border-bottom:1px solid var(--line-strong);
}
th:first-child{border-top-left-radius:9px}
th:last-child{border-top-right-radius:9px}
tbody tr{transition:background .14s}
tbody tr:hover{background:#f8fbff}
tbody tr:last-child td{border-bottom:none}
td.num{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:600}

/* ---------------- 标签 ---------------- */
.tag{
  display:inline-flex;align-items:center;gap:4px;
  padding:2px 9px;border-radius:99px;background:var(--brand-weak);color:var(--brand-700);
  font-size:11.5px;font-weight:600;white-space:nowrap;border:1px solid var(--brand-weak-2);
}
.tag.gray{background:#f2f5fa;color:var(--muted);border-color:var(--line)}
.tag.ok{background:var(--ok-bg);color:var(--ok);border-color:#c3e9e0}
.tag.warn{background:var(--warn-bg);color:var(--warn);border-color:#f0dcba}
.tag.err{background:var(--err-bg);color:var(--err);border-color:#f4cdc9}
.tag.cyan{background:var(--cyan-soft);color:#0369a1;border-color:#bfe9fa}
.tag.mono{font-family:var(--mono);font-weight:500;letter-spacing:.2px}

/* 超管专属标记：跟在按钮后面，一眼看出来这是只有超级管理员能点的操作 */
.su-flag{
  display:inline-flex;align-items:center;justify-content:center;
  margin-left:5px;padding:0 4px;height:15px;min-width:15px;
  border-radius:4px;background:#fff3e2;border:1px solid #f2cf9f;
  color:#b45c07;font-size:10px;font-weight:700;line-height:1;letter-spacing:0;
  vertical-align:middle;
}
a .su-flag,button .su-flag{pointer-events:none}

/* ---------------- 网格与行 ---------------- */
.fields{display:grid;grid-template-columns:repeat(2,1fr);gap:2px 18px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.row.between{justify-content:space-between}
.divider{height:1px;background:var(--line);margin:18px 0}

/* ---------------- 等级 ---------------- */
.level{font-size:17px;letter-spacing:3px;line-height:1.3}
.level-wrap{
  background:linear-gradient(120deg,#fbfdff,#f2f8ff 60%,#eef7ff);
  border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;margin-bottom:16px;
  box-shadow:var(--shadow-sm);position:relative;overflow:hidden;
}
.level-wrap::after{
  content:"";position:absolute;right:-40px;bottom:-60px;width:220px;height:220px;border-radius:50%;
  background:radial-gradient(circle,rgba(56,189,248,.16),rgba(56,189,248,0) 68%);
}
.level-score{
  font-family:var(--mono);font-size:30px;font-weight:600;letter-spacing:-1px;
  background:linear-gradient(135deg,var(--brand-800),var(--cyan-deep));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.bar{height:8px;border-radius:99px;background:#e6eefa;overflow:hidden;margin-top:14px;position:relative}
.bar > i{
  display:block;height:100%;border-radius:99px;
  background:linear-gradient(90deg,var(--brand-600),var(--brand-400) 55%,var(--cyan));
  box-shadow:0 0 12px rgba(56,189,248,.6);
  transition:width .6s cubic-bezier(.4,0,.2,1);
}

/* ---------------- 导航小卡（首页快捷入口） ---------------- */
.quick{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px}
.quick a{
  display:block;background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:17px 18px;box-shadow:var(--shadow-sm);
  transition:transform .18s,box-shadow .18s,border-color .18s;
}
.quick a:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift);border-color:var(--brand-weak-2)}
.quick .q-title{font-size:13.5px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:8px;margin-bottom:4px}
.quick .q-title em{
  font-style:normal;width:24px;height:24px;border-radius:7px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--brand-700),var(--brand-500));color:#fff;font-size:12px;
  box-shadow:0 4px 10px -4px rgba(18,89,195,.8);
}
.quick .q-desc{font-size:12px;color:var(--muted);line-height:1.6}

/* ---------------- 检索空态 ---------------- */
.empty{
  text-align:center;padding:44px 20px;color:var(--muted);font-size:13px;
}
.empty .empty-mark{
  width:46px;height:46px;margin:0 auto 12px;border-radius:14px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--brand-weak),var(--cyan-soft));
  border:1px solid var(--brand-weak-2);font-size:20px;
}

/* ---------------- 页脚 ---------------- */
.app-footer{
  max-width:1180px;margin:0 auto;padding:0 24px 34px;
  display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;
  font-size:11.5px;color:#93a6bf;
}
.app-footer .dot{width:5px;height:5px;border-radius:50%;background:var(--cyan-deep);display:inline-block;margin-right:6px;vertical-align:middle;opacity:.7}
.foot-meta{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap}
/* 版本号：登录页左下角 + 登录后页脚右下角共用。数值取 VERSION/CHANGELOG，
   与 git 标签 v<版本> 同源（见 config/version.py），不要在这里写死。 */
.ver-tag{
  font-family:var(--mono);font-variant-numeric:tabular-nums;
  font-size:10.5px;letter-spacing:.2px;line-height:1.7;white-space:nowrap;
  color:#8fa4bf;padding:0 7px;border-radius:999px;
  border:1px solid rgba(147,166,191,.26);background:rgba(147,166,191,.06);
}
.ver-tag.on-dark{color:rgba(255,255,255,.52);border-color:rgba(255,255,255,.2);background:rgba(255,255,255,.06)}

/* ---------------- 登录页 ---------------- */
.auth{
  min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr;
  background:var(--bg);
}
.auth-visual{
  position:relative;overflow:hidden;padding:48px 52px;
  display:flex;flex-direction:column;justify-content:space-between;
  background:linear-gradient(150deg,#031a45 0%,#062a6b 34%,#0b46a8 68%,#1568d8 100%);
  color:#fff;
}
.auth-visual::before{
  content:"";position:absolute;inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,.07) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px);
  background-size:46px 46px;
  mask-image:radial-gradient(720px 520px at 22% 26%,#000,rgba(0,0,0,.35) 62%,transparent);
  -webkit-mask-image:radial-gradient(720px 520px at 22% 26%,#000,rgba(0,0,0,.35) 62%,transparent);
}
.auth-visual::after{
  content:"";position:absolute;width:520px;height:520px;border-radius:50%;
  right:-190px;bottom:-230px;
  background:radial-gradient(circle,rgba(56,189,248,.34),rgba(56,189,248,0) 66%);
}
.auth-visual > *{position:relative;z-index:1}
.auth-brand{display:flex;align-items:center;gap:12px}
.auth-brand .brand-mark{width:40px;height:40px}
.auth-brand .brand-text{font-size:21px}
.auth-hero{margin:auto 0;padding:10px 0}
.auth-line{
  font-size:27px;line-height:1.62;font-weight:600;letter-spacing:1.2px;
  color:#fff;margin:0;max-width:420px;
  text-shadow:0 2px 20px rgba(3,16,43,.35);
}
.auth-line::after{
  content:"";display:block;width:44px;height:3px;border-radius:2px;margin-top:26px;
  background:linear-gradient(90deg,#7dd3fc,rgba(125,211,252,0));
}
.auth-foot{
  font-size:11.5px;color:rgba(255,255,255,.42);letter-spacing:.3px;
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
}

.auth-panel{display:flex;align-items:center;justify-content:center;padding:40px 24px;background:#fff}
.auth-box{width:100%;max-width:360px}
.auth-box h1{font-size:22px;margin-bottom:6px}
.auth-box .sub{color:var(--muted);font-size:13px;margin:0 0 26px}
.auth-box .msg{margin-bottom:16px}
.auth-box .primary{margin-top:22px}
.auth-hint{
  margin-top:20px;padding:11px 13px;border-radius:10px;font-size:11.5px;line-height:1.7;
  background:#f7faff;border:1px dashed var(--line-strong);color:var(--muted);
}

/* ---------------- 响应式 ---------------- */
@media(max-width:980px){
  .grid{grid-template-columns:repeat(2,1fr)}
  .quick{grid-template-columns:1fr}
  .auth{grid-template-columns:1fr}
  .auth-visual{padding:34px 26px;min-height:auto}
  .auth-line{font-size:21px;letter-spacing:.8px}
  .auth-visual{padding-bottom:30px}
}
@media(max-width:760px){
  .nav{height:auto;padding:10px 16px;flex-wrap:wrap;gap:6px}
  .brand{margin-right:6px}
  .brand-sub{display:none}
  main{padding:20px 16px 56px}
  .fields{grid-template-columns:1fr}
  .grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .stat b{font-size:23px}
  .user-chip{padding:4px 8px}
  .user-chip .who{display:none}
  h1{font-size:20px}
}
@media(max-width:520px){
  .nav-link{padding:6px 9px;font-size:12.5px}
  .grid{grid-template-columns:1fr 1fr}
}

/* ============================================================
   个人中心 / 账号管理
   ============================================================ */
a.user-chip{text-decoration:none}
a.user-chip:hover{color:rgba(255,255,255,.92);background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.3)}

.split{display:grid;grid-template-columns:1.12fr .88fr;gap:16px;align-items:start}
.split > .card{margin-bottom:0}
.split + .card{margin-top:16px}
.stack{display:grid;gap:16px}

.kv{display:grid;grid-template-columns:88px 1fr;gap:12px 16px;margin:0;font-size:13px}
.kv dt{color:var(--muted);font-size:12.5px}
.kv dd{margin:0;font-weight:500;word-break:break-all}

.mini-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.mini{
  background:linear-gradient(180deg,#fbfdff,#f3f8ff);
  border:1px solid var(--line);border-radius:12px;padding:12px 13px;
}
.mini b{
  display:block;font-family:var(--mono);font-size:21px;font-weight:600;letter-spacing:-.5px;line-height:1.3;
  color:var(--brand-700);
}
.mini b.spent{color:var(--muted)}
.mini b.earn{
  background:linear-gradient(135deg,var(--brand-800),var(--cyan-deep));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.mini span{font-size:11.5px;color:var(--muted);display:block;margin-top:2px}

.pill-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}
.state-on{background:var(--ok-bg);color:var(--ok);border-color:#c3e9e0}
.state-off{background:#f4f5f8;color:#8a8f9c;border-color:#e3e5ea}

.rowline{
  display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);
}
.rowline:last-child{border-bottom:none}
.rowline .grow{flex:1;min-width:0}
.rowline .t{display:block;font-size:13px;font-weight:600;line-height:1.5}
.rowline .s{display:block;font-size:11.5px;color:var(--muted);line-height:1.5}

.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:0 16px}
.form-grid .full{grid-column:1 / -1}

.note-box{
  background:#f7faff;border:1px dashed var(--line-strong);border-radius:10px;
  padding:11px 13px;font-size:11.8px;line-height:1.75;color:var(--muted);
}
.note-box b{color:var(--text-2)}

.danger-zone{border-color:#f3d6d2;background:#fffaf9}
.danger-zone h2::before{background:linear-gradient(180deg,#e0665c,#f0a79f)}

details.new-account > summary{
  cursor:pointer;list-style:none;display:flex;align-items:center;gap:10px;
  font-size:14px;font-weight:700;color:var(--brand-700);
}
details.new-account > summary::-webkit-details-marker{display:none}
details.new-account > summary::before{
  content:"+";width:22px;height:22px;border-radius:7px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--brand-700),var(--brand-500));color:#fff;font-size:14px;font-weight:600;
}
details[open].new-account > summary::before{content:"−"}
details.new-account > summary:hover{color:var(--brand-500)}

.tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin-bottom:16px}
.tab{
  padding:8px 14px;font-size:13px;color:var(--muted);border-bottom:2px solid transparent;
  margin-bottom:-1px;font-weight:500;
}
.tab:hover{color:var(--brand-600)}
.tab.on{color:var(--brand-700);border-bottom-color:var(--brand-500);font-weight:700}

.amount-input{display:flex;gap:8px;align-items:center}
.amount-input input{flex:1}
.seg{display:flex;gap:6px;flex-wrap:wrap}
.seg button{padding:6px 12px;font-size:12px;font-weight:600}

@media(max-width:900px){
  .split{grid-template-columns:1fr}
  .mini-grid{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:640px){
  .form-grid{grid-template-columns:1fr}
  .mini-grid{grid-template-columns:1fr 1fr}
}

/* ============================================================
   拖拽上传区（Dropzone）
   ============================================================ */
.hint{font-size:11.8px;color:var(--muted);line-height:1.7;margin:6px 0 0}
.row.wrap{flex-wrap:wrap;gap:10px}

.dropzone{
  position:relative;margin-top:8px;border-radius:14px;cursor:pointer;
  border:1.5px dashed var(--line-strong);
  background:
    radial-gradient(600px 120px at 50% -30%,rgba(56,189,248,.14),transparent 70%),
    linear-gradient(180deg,#fbfdff,#f5f9ff);
  padding:26px 20px;text-align:center;
  transition:border-color .16s ease,background .16s ease,box-shadow .16s ease,transform .16s ease;
  outline:none;
}
.dropzone:hover{border-color:var(--brand-400);background:linear-gradient(180deg,#fbfdff,#eef6ff)}
.dropzone:focus-visible{border-color:var(--brand-500);box-shadow:0 0 0 3px rgba(26,111,224,.16)}

.dropzone.is-drag{
  border-color:var(--brand-500);border-style:solid;
  background:linear-gradient(180deg,#eef6ff,#e2f0ff);
  box-shadow:0 0 0 3px rgba(26,111,224,.14),0 14px 30px -18px rgba(11,38,76,.5);
  transform:translateY(-1px);
}
.dropzone.is-drag .dz-ico{color:var(--brand-500);transform:translateY(-3px)}

.dz-ico{width:42px;height:42px;color:var(--brand-400);margin:0 auto 10px;display:block;transition:transform .16s ease,color .16s ease}
.dz-empty b{display:block;font-size:14px;color:var(--text);font-weight:700;letter-spacing:.2px}
.dz-empty > span{display:block;font-size:11.8px;color:var(--muted);margin-top:5px}
.dz-empty .dz-hint{color:var(--brand-400);font-weight:500}

.dz-drag-tip{
  display:none;position:absolute;left:50%;top:8px;transform:translateX(-50%);
  font-size:11px;font-weight:700;letter-spacing:.6px;color:var(--brand-600);
  background:#fff;border:1px solid var(--brand-weak-2);border-radius:999px;padding:2px 10px;
}
.dropzone.is-drag .dz-drag-tip{display:block}

[hidden]{display:none !important}

.dz-filled{display:flex;align-items:center;gap:12px;text-align:left}
.dz-badge{
  flex:0 0 auto;width:46px;height:46px;border-radius:12px;display:grid;place-items:center;
  font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.5px;color:#fff;
  background:linear-gradient(135deg,var(--brand-700),var(--cyan-deep));
  box-shadow:0 8px 18px -10px rgba(11,70,168,.9);
}
.dz-meta{flex:1;min-width:0}
.dz-meta b{display:block;font-size:13.5px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dz-meta span{display:block;font-size:11.5px;color:var(--muted);margin-top:3px;font-family:var(--mono)}
.dz-clear{
  flex:0 0 auto;padding:6px 12px;font-size:12px;font-weight:600;
  background:#fff;border:1px solid var(--line-strong);border-radius:9px;color:var(--text-2);
  cursor:pointer;transition:all .14s ease;
}
.dz-clear:hover{border-color:#f0b8b2;color:var(--err);background:var(--err-bg)}

.dropzone.has-file{border-style:solid;border-color:var(--line-strong);background:linear-gradient(180deg,#fff,#f7fbff)}
.dropzone.has-file:hover{border-color:var(--brand-400)}

@keyframes dz-shake{
  0%,100%{transform:translateX(0)}
  20%{transform:translateX(-6px)}
  50%{transform:translateX(6px)}
  80%{transform:translateX(-3px)}
}
.dropzone.shake{animation:dz-shake .42s ease;border-color:#f0b8b2;background:var(--err-bg)}

/* ============================================================
   识别队列（单进程串行，前端轮询进度）
   ============================================================ */
.queue-card{position:relative;overflow:hidden}
.queue-card::after{
  content:"";position:absolute;inset:0 0 auto 0;height:3px;
  background:linear-gradient(90deg,var(--brand-600),var(--cyan));
  opacity:.9;
}
.queue-bar{
  height:9px;border-radius:99px;overflow:hidden;margin-top:16px;
  background:rgba(113,134,163,.16);
  box-shadow:inset 0 1px 2px rgba(11,38,76,.08);
}
.queue-bar i{
  display:block;height:100%;min-width:3px;border-radius:99px;
  background:linear-gradient(90deg,var(--brand-600),var(--cyan));
  transition:width .6s cubic-bezier(.4,0,.2,1);
  box-shadow:0 0 12px rgba(56,189,248,.45);
}
.queue-card .tag.cyan{animation:q-pulse 2s ease-in-out infinite}
@keyframes q-pulse{0%,100%{opacity:1}50%{opacity:.55}}

/* ============================================================
   帖子式记录页：正文 Markdown + 补正回帖
   ============================================================ */
.thread{display:flex;flex-direction:column;gap:14px;margin-bottom:16px}
.post{
  position:relative;background:var(--card);border:1px solid var(--line);
  border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow-sm);
}
.post-main{border-left:3px solid var(--brand-500)}
.post-reply{border-left:3px solid var(--cyan)}
.post-reply:target{border-color:var(--cyan-deep);box-shadow:0 0 0 3px rgba(56,189,248,.18)}
.post-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:14px}
.post-head .who{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:13.5px;line-height:1.5}
.post-head .who b{font-weight:600}
.post-head .who .muted{width:100%;font-size:11.5px}
.post-side{margin-left:auto}
.post-head .avatar{
  flex:0 0 auto;width:34px;height:34px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:14px;font-weight:600;
  background:var(--brand-weak);color:var(--brand-700);
}
.post-head .avatar.alt{background:var(--cyan-soft);color:#0369a1}
.tag.floor{background:#fff;color:var(--muted);border-color:var(--line-strong);font-size:11px;padding:1px 7px}
.mini-tag{font-size:11px;padding:1px 7px}
.post-foot{
  display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;
  margin-top:16px;padding-top:11px;border-top:1px dashed var(--line);
}
.attr-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.attr{
  display:inline-flex;gap:6px;align-items:baseline;
  background:#f7faff;border:1px solid var(--line);border-radius:999px;
  padding:4px 11px;font-size:12.5px;max-width:100%;
}
.attr i{font-style:normal;color:var(--muted);font-size:11.5px}
.empty-hint{color:var(--muted);font-size:13px;text-align:center;padding:14px 0}
.mini{padding:4px 10px;font-size:12px;border-radius:8px;box-shadow:none}
.pt-ctl{display:flex;align-items:center;gap:4px}
.pt-ctl input[type=number]{
  width:54px;padding:4px 6px;font-size:12px;text-align:center;
  border-radius:8px;
}
.hide-box{margin-top:12px;padding-top:14px;border-top:1px dashed var(--line)}
details.card>summary{cursor:pointer;list-style:none}
details.card>summary::-webkit-details-marker{display:none}
details.card>summary::after{content:"展开";float:right;color:var(--muted);font-size:12px}
details.card[open]>summary::after{content:"收起"}

/* Markdown 正文 */
.md-body{font-size:14px;line-height:1.85;color:var(--text);word-break:break-word;overflow-wrap:anywhere}
.md-body>:first-child{margin-top:0}
.md-body>:last-child{margin-bottom:0}
.md-body p{margin:.55em 0}
.md-body h1,.md-body h2,.md-body h3,.md-body h4{margin:1.1em 0 .5em;line-height:1.45;font-weight:600}
.md-body h1{font-size:19px}
.md-body h2{font-size:17px}
.md-body h3{font-size:15px}
.md-body ul,.md-body ol{margin:.5em 0;padding-left:1.6em}
.md-body li{margin:.2em 0}
.md-body strong{font-weight:600}
.md-body blockquote{
  margin:.7em 0;padding:.3em 0 .3em 12px;
  border-left:3px solid var(--brand-400);color:var(--text-2);
}
.md-body code{
  font-family:var(--mono);font-size:12.5px;background:#f1f5fb;
  padding:1px 5px;border-radius:5px;color:var(--brand-800);
}
.md-body pre{background:#0b1b33;color:#e6eefc;padding:12px 14px;border-radius:10px;overflow:auto;margin:.8em 0}
.md-body pre code{background:none;color:inherit;padding:0;font-size:12.5px}
.md-body table{
  display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;
  margin:.9em 0;font-size:13px;
}
.md-body th,.md-body td{border:1px solid var(--line);padding:7px 11px;text-align:left;min-width:64px;vertical-align:top}
.md-body th{background:#f7faff;font-weight:600;white-space:nowrap}
.md-body tbody tr:nth-child(even) td{background:#fbfdff}
.md-body tbody tr:hover td{background:#f4f9ff}
.md-body a{color:var(--brand-600);text-decoration:none;border-bottom:1px solid rgba(18,89,195,.25)}
.md-body a:hover{border-bottom-color:var(--brand-500)}
.md-body hr{border:none;border-top:1px solid var(--line);margin:1.2em 0}
.md-body img{max-width:100%;border-radius:8px}

/* ============================================================
   模块选项卡（资料库 / 检索 / 我的贡献 …）
   ============================================================ */
.tabs{
  display:flex;align-items:stretch;gap:2px;height:100%;margin-left:10px;
  align-self:stretch;overflow-x:auto;scrollbar-width:none;
}
.tabs::-webkit-scrollbar{display:none}
.tab{
  position:relative;display:flex;align-items:center;padding:0 15px;
  font-size:13.5px;font-weight:500;color:rgba(255,255,255,.74);
  white-space:nowrap;transition:color .16s,background .16s;
}
.tab:hover{color:#fff;background:rgba(255,255,255,.08)}
.tab.is-active{color:#fff;font-weight:600}
.tab.is-active::after{
  content:"";position:absolute;left:13px;right:13px;bottom:0;height:2px;border-radius:2px;
  background:var(--cyan);box-shadow:0 0 10px rgba(56,189,248,.85);
}

/* ============================================================
   资料库列表
   ============================================================ */
.lib-head{display:flex;align-items:flex-end;justify-content:space-between;gap:22px;flex-wrap:wrap}

/* 「我要分享」：胶囊 + 内高光 + 柔和投影，接近 Apple 的实心按钮 */
.share-cta{
  display:inline-flex;align-items:center;gap:8px;white-space:nowrap;flex:none;
  padding:11px 24px 11px 17px;border-radius:999px;
  font-size:14px;font-weight:600;letter-spacing:.2px;line-height:1;
  color:#fff;
  background:linear-gradient(180deg,#3d93f9 0%,#1470e4 52%,#0b5fd4 100%);
  border:1px solid rgba(9,74,176,.5);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.34),
    0 8px 22px -9px rgba(11,95,212,.7),
    0 2px 6px -3px rgba(11,38,76,.28);
  transition:transform .22s cubic-bezier(.22,1,.36,1),box-shadow .22s,filter .22s;
  -webkit-tap-highlight-color:transparent;
}
.share-cta:hover{
  color:#fff;transform:translateY(-1px) scale(1.015);
  filter:brightness(1.04) saturate(1.05);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.4),
    0 12px 28px -10px rgba(11,95,212,.78),
    0 3px 8px -3px rgba(11,38,76,.3);
}
.share-cta:active{transform:scale(.972);filter:brightness(.97);box-shadow:inset 0 2px 6px rgba(3,26,69,.28)}
.share-cta:focus-visible{outline:none;box-shadow:0 0 0 3.5px rgba(56,189,248,.45),0 8px 22px -9px rgba(11,95,212,.7)}
.share-cta .plus{
  display:grid;place-items:center;width:20px;height:20px;border-radius:50%;
  background:rgba(255,255,255,.22);
  box-shadow:inset 0 0 0 .5px rgba(255,255,255,.4);
  font-size:13px;font-weight:600;line-height:1;margin:0;
}
@media (prefers-reduced-motion:reduce){
  .share-cta{transition:none}
  .share-cta:hover,.share-cta:active{transform:none}
}
.lib-stats{
  display:flex;align-items:center;gap:20px;flex-wrap:wrap;
  padding:10px 16px;margin:-4px 0 18px;
  background:linear-gradient(180deg,#fff,rgba(255,255,255,.72));
  border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-sm);
}
.lib-stats>span{font-size:12.5px;color:var(--muted)}
.lib-stats b{font-family:var(--mono);font-size:15px;color:var(--brand-700);margin-right:4px;letter-spacing:-.2px}
/* 二级导航右侧的检索框：智能检索的唯一入口 */
.subnav-search{position:relative;margin-left:auto;flex:none;display:flex;align-items:center;gap:6px}
.subnav-search .ss-ic{
  position:absolute;left:11px;width:14px;height:14px;display:block;
  color:var(--muted);pointer-events:none;
}
.subnav-search input{
  width:252px;height:32px;padding:0 14px 0 30px;
  font-family:inherit;font-size:12.5px;color:var(--text);
  background:rgba(255,255,255,.8);
  border:1px solid rgba(207,220,238,.95);border-radius:999px;
  -webkit-appearance:none;appearance:none;
  transition:background .18s,border-color .18s,box-shadow .18s,width .2s cubic-bezier(.22,1,.36,1);
}
.subnav-search input::-webkit-search-decoration,
.subnav-search input::-webkit-search-cancel-button{-webkit-appearance:none}
.subnav-search input::placeholder{color:#93a4bd}
.subnav-search input:hover{background:#fff}
.subnav-search input:focus{
  outline:none;width:300px;background:#fff;border-color:var(--brand-400);
  box-shadow:0 0 0 3.5px rgba(26,111,224,.13);
}
.subnav-search.is-on input{border-color:var(--brand-400);background:#fff;box-shadow:0 0 0 3px rgba(26,111,224,.1)}
/* 检索按钮：回车照旧能搜，但很多手机键盘的确认键不显眼，给一颗能点的实体按钮 */
.subnav-search .ss-go{
  flex:none;height:32px;padding:0 15px;
  font-family:inherit;font-size:12.5px;font-weight:600;line-height:1;
  color:#fff;cursor:pointer;
  background:linear-gradient(180deg,#3d93f9,#1470e4 55%,#0b5fd4);
  border:1px solid rgba(9,74,176,.45);border-radius:999px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.3),0 5px 12px -7px rgba(11,95,212,.7);
  transition:filter .18s,transform .12s,box-shadow .18s;
  -webkit-tap-highlight-color:transparent;
}
.subnav-search .ss-go:hover{filter:brightness(1.05) saturate(1.04);box-shadow:inset 0 1px 0 rgba(255,255,255,.36),0 7px 16px -7px rgba(11,95,212,.8)}
.subnav-search .ss-go:active{transform:scale(.96);filter:brightness(.97)}
.subnav-search .ss-go:focus-visible{outline:none;box-shadow:0 0 0 3.5px rgba(56,189,248,.45),0 5px 12px -7px rgba(11,95,212,.7)}

.post-list{display:flex;flex-direction:column;gap:12px}
.pcard{
  position:relative;display:block;overflow:hidden;
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:17px 20px 14px;box-shadow:var(--shadow-sm);color:inherit;
  transition:transform .18s,box-shadow .18s,border-color .18s;
}
.pcard::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,var(--brand-500),var(--cyan));
  opacity:0;transition:opacity .18s;
}
.pcard:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift);border-color:var(--line-strong);color:inherit}
.pcard:hover::before{opacity:1}
.pcard-head{display:flex;align-items:center;gap:9px;margin-bottom:9px}
.pavatar{
  flex:0 0 auto;width:27px;height:27px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:600;background:var(--brand-weak);color:var(--brand-700);
  border:1px solid var(--brand-weak-2);
}
.pcard-who{display:flex;align-items:center;gap:6px;min-width:0;font-size:12.5px;color:var(--text-2)}
.pcard-who b{font-weight:600;color:var(--text)}
.pcard-who .sep{color:var(--muted);opacity:.55}
.pcard-who .lvl{font-size:11.5px;letter-spacing:0;color:var(--brand-600)}
.pcard-tags{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.pcard-title{
  margin:0 0 6px;font-size:16px;font-weight:650;line-height:1.45;
  letter-spacing:-.15px;color:var(--text);transition:color .16s;
}
.pcard:hover .pcard-title{color:var(--brand-700)}
.pcard-excerpt{
  margin:0;color:var(--text-2);font-size:13px;line-height:1.74;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.pcard-foot{display:flex;align-items:center;justify-content:space-between;margin-top:11px}
.pcard-more{font-size:12.5px;color:var(--brand-600);opacity:.85}
.pcard:hover .pcard-more{opacity:1}

.lib-filter-tip{
  display:flex;align-items:center;gap:10px;margin-bottom:14px;
  font-size:12.5px;color:var(--text-2);background:var(--brand-weak);
  border:1px solid var(--brand-weak-2);border-radius:10px;padding:8px 13px;
}
.lib-filter-tip a{margin-left:auto;font-size:12px}

/* 我的草稿 */
.draft-box{padding:16px 20px}
.draft-list{display:flex;flex-direction:column;gap:2px}
.draft{
  display:flex;align-items:center;gap:11px;padding:9px 8px;border-radius:9px;
  color:var(--text);font-size:13px;transition:background .16s;
}
.draft:hover{background:#f7faff;color:var(--text)}
.draft-note{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.draft-go{margin-left:auto;color:var(--brand-600);font-size:12.5px;white-space:nowrap}

/* 分页 */
.pager{display:flex;align-items:center;justify-content:center;gap:18px;margin:22px 0 4px;font-size:13px}
.pager .disabled{color:var(--muted);opacity:.5}
.pager a{color:var(--brand-600)}

/* ============================================================
   分享（文字 / 文件）
   ============================================================ */
.share-card{max-width:880px}
.seg{
  display:inline-flex;gap:4px;padding:4px;margin-bottom:20px;
  background:var(--brand-weak);border:1px solid var(--brand-weak-2);border-radius:11px;
}
.seg-btn{
  border:none;background:none;box-shadow:none;font:inherit;font-size:13px;font-weight:600;
  color:var(--brand-700);padding:7px 18px;border-radius:8px;
}
.seg-btn:hover{background:rgba(255,255,255,.6);color:var(--brand-800);transform:none}
.seg-btn.is-on{background:#fff;color:var(--brand-800);box-shadow:0 1px 4px rgba(11,38,76,.14)}
.pane{animation:fade-in .18s ease-out}
@keyframes fade-in{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}
.counter{font-size:12px;color:var(--muted);white-space:nowrap}
.req{
  display:inline-block;margin-left:6px;padding:0 5px;border-radius:4px;
  font-size:10px;font-weight:600;color:var(--brand-700);background:var(--brand-weak);
  vertical-align:1px;
}
.shake{animation:shake .42s}
@keyframes shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-5px)}40%{transform:translateX(5px)}60%{transform:translateX(-3px)}80%{transform:translateX(3px)}}

/* ============================================================
   核对页
   ============================================================ */
.confirm-grid{display:grid;grid-template-columns:minmax(0,1fr) 292px;gap:16px;align-items:start}
.confirm-grid>.card{margin-bottom:0}
.confirm-side{display:flex;flex-direction:column;gap:14px}
.confirm-side .card{margin-bottom:0}
.confirm-banner{
  display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-bottom:18px;
  padding:10px 13px;border-radius:10px;font-size:13px;color:var(--text-2);
  background:#f7faff;border:1px solid var(--line);
}
.confirm-banner .tag{margin:0}
.big-textarea{min-height:220px;font-size:13.5px;line-height:2.02;letter-spacing:.2px}
.kv{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 12px;margin:0;font-size:12.5px}
.kv dt{color:var(--muted);white-space:nowrap}
.kv dd{margin:0;color:var(--text);word-break:break-word}
.field-fold{margin-top:18px;padding-top:14px;border-top:1px dashed var(--line)}
.field-fold summary{cursor:pointer;list-style:none;font-size:13px;font-weight:600;color:var(--brand-700)}
.field-fold summary::-webkit-details-marker{display:none}
.field-fold summary::before{content:"▸ ";color:var(--muted)}
.field-fold[open] summary::before{content:"▾ "}
.withdraw-bar{
  display:flex;align-items:center;justify-content:flex-end;gap:12px;
  margin:4px 0 24px;font-size:12.5px;
}

@media (max-width:900px){
  .confirm-grid{grid-template-columns:minmax(0,1fr)}
  .subnav-inner{flex-wrap:wrap}
  .subnav-search{margin-left:0;width:100%}
  .subnav-search input,.subnav-search input:focus{width:100%;flex:1 1 auto;min-width:0}
  .pcard-tags{display:none}
  .tabs{margin-left:0}
}

.confirm-side .danger-zone button{margin-top:12px;width:100%;justify-content:center}

/* ============================================================
   资料库二级导航（iOS 分段控件）
   ============================================================ */
.subnav{
  position:relative;z-index:30;
  background:rgba(255,255,255,.74);
  border-bottom:1px solid rgba(222,231,244,.95);
  backdrop-filter:saturate(180%) blur(20px);
  -webkit-backdrop-filter:saturate(180%) blur(20px);
}
.subnav-inner{
  max-width:1180px;margin:0 auto;padding:10px 24px;
  display:flex;align-items:center;gap:14px;
  overflow-x:auto;scrollbar-width:none;
}
.subnav-inner::-webkit-scrollbar{display:none}
.seg-group{
  display:inline-flex;align-items:center;gap:2px;padding:3px;flex:none;
  background:rgba(120,145,180,.13);
  border:1px solid rgba(207,220,238,.75);
  border-radius:999px;
}
.seg-item{
  padding:6px 15px;border-radius:999px;font-size:13px;font-weight:500;
  color:var(--text-2);white-space:nowrap;
  transition:background .2s cubic-bezier(.22,1,.36,1),color .2s,box-shadow .2s;
}
.seg-item:hover{color:var(--brand-700);background:rgba(255,255,255,.62)}
.seg-item.is-on{
  background:#fff;color:var(--brand-800);font-weight:600;
  box-shadow:0 1px 3px rgba(11,38,76,.14),0 0 0 .5px rgba(11,38,76,.05);
}

/* 头像：两个字时缩小一点才不挤 */
.avatar.two{font-size:9.5px;letter-spacing:-.2px}
.pavatar.two{font-size:9.5px;letter-spacing:-.2px}
.post-head .avatar.two{font-size:11.5px}

/* 楼层被隐藏 */
.post.is-hidden{opacity:.74}
.post.is-hidden .md-body{filter:grayscale(.35)}
.masked-body{
  display:flex;align-items:center;gap:8px;
  padding:14px 16px;border-radius:10px;
  background:repeating-linear-gradient(135deg,#f7faff,#f7faff 8px,#f2f7fd 8px,#f2f7fd 16px);
  border:1px dashed var(--line-strong);
  color:var(--muted);font-size:13px;
}
.masked-ico{font-size:15px;opacity:.7}

@media (max-width:900px){
  .subnav-inner{padding:8px 14px;gap:8px}
  .seg-item{padding:6px 12px;font-size:12.5px}
}

/* 个人中心头部的大头像 */
.profile-hero{display:flex;align-items:center;gap:16px}
.profile-hero .eyebrow{margin-bottom:7px}
.avatar-lg{width:56px;height:56px;font-size:20px;font-weight:600;letter-spacing:0}
.avatar-lg.two{font-size:15px}

/* ============================================================
   智能检索页
   ============================================================ */
.searchbar{
  position:relative;display:flex;align-items:center;gap:10px;
  padding:8px 8px 8px 16px;margin-bottom:18px;
  background:var(--card);border:1px solid var(--line);border-radius:999px;
  box-shadow:var(--shadow-sm);
  transition:border-color .18s,box-shadow .18s;
}
.searchbar:focus-within{border-color:var(--brand-400);box-shadow:0 0 0 4px rgba(26,111,224,.12),var(--shadow-sm)}
.searchbar .sb-ic{width:17px;height:17px;flex:none;color:var(--muted);display:block}
.searchbar input{
  flex:1;min-width:0;border:none;background:none;outline:none;
  font-family:inherit;font-size:14px;color:var(--text);height:38px;
}
.searchbar input::placeholder{color:#9aabc2}
.searchbar .primary{
  flex:none;border:none;cursor:pointer;font-family:inherit;font-size:13.5px;font-weight:600;
  color:#fff;padding:10px 22px;border-radius:999px;
  background:linear-gradient(180deg,#3d93f9,#1470e4 55%,#0b5fd4);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.3),0 6px 16px -8px rgba(11,95,212,.7);
  transition:transform .18s,filter .18s;
}
.searchbar .primary:active{transform:scale(.97)}

.sr-meta{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  margin:0 2px 14px;font-size:12.5px;color:var(--muted);
}
.sr-meta b{font-family:var(--mono);font-size:14px;color:var(--brand-700)}
.sr-dot{width:3px;height:3px;border-radius:50%;background:var(--line-strong)}
.sr-terms{display:inline-flex;gap:6px;flex-wrap:wrap;margin-left:2px}
.sr-terms code{
  font-family:var(--mono);font-size:11.5px;padding:2px 7px;border-radius:6px;
  background:var(--brand-weak);color:var(--brand-700);
}

.sr-card{
  display:block;position:relative;overflow:hidden;
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:16px 20px 12px;box-shadow:var(--shadow-sm);color:inherit;
  transition:transform .18s,box-shadow .18s,border-color .18s;
}
.sr-card::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,var(--brand-500),var(--cyan));opacity:0;transition:opacity .18s;
}
.sr-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift);border-color:var(--line-strong);color:inherit}
.sr-card:hover::before{opacity:1}
.sr-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:9px}
.sr-title{font-size:15px;font-weight:600;color:var(--brand-900);letter-spacing:.1px}
.sr-snip{
  display:flex;gap:10px;align-items:flex-start;
  padding:7px 0;border-top:1px dashed rgba(224,233,245,.9);
  font-size:13px;line-height:1.78;color:var(--text-2);
}
.sr-snip:first-of-type{border-top:none}
.sr-where{
  flex:none;margin-top:2px;font-size:11px;font-weight:600;letter-spacing:.2px;
  color:var(--brand-600);background:var(--brand-weak);
  padding:2px 8px;border-radius:6px;white-space:nowrap;
}
.sr-text{flex:1;min-width:0;word-break:break-word}
.sr-foot{
  display:flex;align-items:center;gap:12px;margin-top:8px;
  font-size:11.5px;color:var(--muted);
}
.sr-go{margin-left:auto;color:var(--brand-600);font-weight:600}
mark{
  background:linear-gradient(180deg,rgba(56,189,248,.28),rgba(56,189,248,.16));
  color:var(--brand-900);padding:0 1.5px;border-radius:3px;font-weight:600;
}

.sr-none{display:flex;align-items:flex-start;gap:14px;padding:6px 0 14px}
.sr-icon{
  flex:none;width:38px;height:38px;border-radius:50%;
  display:grid;place-items:center;color:var(--brand-600);
  background:var(--brand-weak);
}
.sr-icon svg{width:17px;height:17px}
.sr-none b{font-size:15px;color:var(--brand-900)}
.sr-none p{margin:6px 0 0;font-size:13px;line-height:1.8}
.sr-none code{
  font-family:var(--mono);font-size:12px;padding:1.5px 6px;border-radius:5px;
  background:var(--brand-weak);color:var(--brand-700);
}
.sr-hint{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px;line-height:1.8}
.sr-hint code{
  font-family:var(--mono);font-size:12px;padding:2px 7px;border-radius:6px;
  background:var(--brand-weak);color:var(--brand-700);
}

.ai-note{
  display:flex;flex-direction:column;gap:5px;
  padding:13px 16px;border-radius:12px;
  background:rgba(120,145,180,.07);border:1px dashed rgba(207,220,238,.95);
  font-size:12.5px;line-height:1.8;color:var(--muted);
}
.ai-note b{font-size:13px;color:var(--brand-800);font-weight:600}
.ai-note.err b{color:#b4530a}
.ai-block{margin-top:6px}
.ai-badge{
  display:inline-block;font-size:11px;font-weight:700;letter-spacing:.6px;
  color:#0369a1;background:var(--cyan-soft);padding:3px 9px;border-radius:999px;margin-bottom:10px;
}
.ai-answer{font-size:14px;line-height:1.95;color:var(--text);white-space:pre-wrap;margin-bottom:10px}
.ai-item{
  display:flex;align-items:baseline;gap:10px;
  padding:10px 0;border-top:1px dashed rgba(224,233,245,.9);color:inherit;font-size:13.5px;
}
.ai-item b{color:var(--brand-800)}
.ai-item .muted{font-size:11.5px;margin-left:auto;white-space:nowrap}

/* ============================================================
   等级图标（带计数的四进制徽章）
   ============================================================ */
.lvbadge{display:inline-flex;align-items:center;gap:7px}
.lv-ic{display:inline-flex;align-items:baseline;font-size:14px;line-height:1;white-space:nowrap}
.lv-ic i{
  font-style:normal;font-size:10.5px;font-weight:700;letter-spacing:0;
  color:var(--brand-600);margin-left:1.5px;
}
.lv-no{font-size:11.5px;margin-left:7px;white-space:nowrap}
.lv-icons{font-size:14px;letter-spacing:1.5px}
.ladder td{vertical-align:middle}
.ladder .num{font-family:var(--mono)}
.lv-wrap .level-label{font-size:12px;color:var(--muted);margin-top:6px;letter-spacing:.2px}

/* 大号等级图标（个人中心 / 我的贡献） */
.level-icons{display:flex;align-items:baseline;gap:9px;font-size:17px;line-height:1.3;flex-wrap:wrap}
.level-icons .lv-ic i{font-size:11.5px;margin-left:2px}

.post-head .lvl{font-size:11.5px;letter-spacing:0;color:var(--brand-600);white-space:nowrap}

/* ============================================================
   超管管理台
   ============================================================ */
.tab-badge{
  margin-left:6px;min-width:17px;height:17px;padding:0 5px;border-radius:99px;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--cyan);color:#04203f;font-size:10.5px;font-weight:800;line-height:1;
}
.console-head{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;align-items:flex-end}
.console-stats{margin-bottom:16px}
.console-stats .stat span{line-height:1.5}
.console-tabs{margin:0 0 18px}
.console-tabs .seg-item i{font-style:normal;font-size:11px;color:var(--muted);margin-left:5px;font-weight:600}
.console-tabs .seg-item.is-on i{color:var(--brand-600)}

/* 存储看板 */
.grid.two-col{grid-template-columns:repeat(2,minmax(0,1fr))}
.quota-card{padding:18px 20px}
.quota-top{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap}
.quota-label{font-size:12px;color:var(--muted);margin-right:8px}
.quota-top b{font-family:var(--mono);font-size:25px;letter-spacing:-.6px;color:var(--brand-800)}
.quota-right{display:flex;align-items:center;gap:12px;font-size:12.5px}
.quota-right b{font-family:var(--mono);font-size:14px;color:var(--ok)}
.quota-bar{height:12px;border-radius:999px;background:#e8eefb;overflow:hidden;margin:12px 0 8px;box-shadow:inset 0 1px 2px rgba(11,38,76,.08)}
.quota-bar>span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#4d93ea,#1470e4);transition:width .5s}
.quota-bar>span.is-warn{background:linear-gradient(90deg,#f0b429,#e08c00)}
.quota-bar>span.is-full{background:linear-gradient(90deg,#e23b2e,#b3261e)}
.quota-foot{display:flex;gap:14px;flex-wrap:wrap;align-items:center;font-size:12px;color:var(--muted)}
.quota-foot #q-pct{font-family:var(--mono);font-weight:600;color:var(--brand-700)}
.mini-bar{height:6px;border-radius:999px;background:#e8eefb;overflow:hidden;margin-bottom:4px}
.mini-bar>span{display:block;height:100%;background:linear-gradient(90deg,#7ab0f5,#1470e4)}
.warn-txt{color:var(--err)!important}
@media (max-width:900px){
  .grid.two-col{grid-template-columns:minmax(0,1fr)}
}
.tag.brand{background:var(--brand-700);color:#fff;border-color:var(--brand-700)}

.rev-group{margin-bottom:22px}
.rev-group-head{display:flex;align-items:baseline;gap:12px;margin:0 2px 10px}
.rev-group-head h2{margin:0;font-size:15px}
.rev-group-head .muted{font-size:12.5px}

.rev-item{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px 18px;box-shadow:var(--shadow-sm);margin-bottom:10px;
  transition:border-color .18s,box-shadow .18s;
}
.rev-item:hover{border-color:var(--line-strong);box-shadow:var(--shadow)}
.rev-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.rev-title{font-size:14.5px;font-weight:600;color:var(--brand-900);letter-spacing:.1px}
.rev-who{
  margin-left:auto;display:inline-flex;align-items:center;gap:7px;
  font-size:12px;color:var(--muted);white-space:nowrap;
}
.rev-excerpt{margin:9px 0 11px;font-size:13px;line-height:1.78;color:var(--text-2)}
.rev-quote{padding-left:11px;border-left:2px solid var(--brand-weak-2)}
.rev-actions{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding-top:11px;border-top:1px dashed var(--line);
}
.rev-actions input[type="text"]{
  flex:1;min-width:200px;height:34px;padding:0 12px;
  border:1px solid var(--line-strong);border-radius:9px;
  background:#fbfdff;color:var(--text);font:inherit;font-size:12.5px;
}
.rev-actions input[type="text"]:focus{
  outline:none;background:#fff;border-color:var(--brand-400);
  box-shadow:0 0 0 3px rgba(26,111,224,.11);
}
.rev-why{color:var(--warn);font-size:12.5px;line-height:1.7}
/* 待复核队列里的「隐藏这条」：独立一行，跟通过/不加分分开，避免误点 */
.rev-hide{margin-top:9px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}

.force-banner{
  display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;
  max-width:640px;margin-bottom:16px;padding:13px 16px;border-radius:12px;
  background:var(--warn-bg);border:1px solid #f0dcba;color:var(--warn);font-size:13px;
}
.force-banner b{font-size:13.5px}

.adjust-grid{display:grid;grid-template-columns:120px 1fr;gap:12px}
@media (max-width:640px){
  .adjust-grid{grid-template-columns:1fr}
  .rev-who{margin-left:0;width:100%}
}

/* ============================================================
   表格识别提示 / 原件对照
   ============================================================ */
.tbl-note{
  margin:0 0 16px;padding:12px 15px;border-radius:11px;
  background:var(--brand-weak);border:1px solid rgba(191,214,244,.9);
  font-size:12.5px;line-height:1.78;color:var(--text-2);
}
.tbl-note.is-warn{background:var(--warn-bg);border-color:#f0dcba}
.tbl-note .tn-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:6px}
.tbl-note .tn-head b{font-size:13px;color:var(--brand-800)}
.tbl-note .tn-ic{font-size:14px;line-height:1;color:var(--brand-600)}
.tbl-note.is-warn .tn-ic{color:var(--warn)}
.tbl-note .tn-head .tag{margin:0}
.tbl-note p{margin:0}
.tbl-note b{color:var(--brand-800)}
.tbl-note.is-warn b{color:var(--warn)}

.src-shot{
  display:block;border-radius:10px;overflow:hidden;
  border:1px solid var(--line);background:#f7f9fc;cursor:zoom-in;
  transition:border-color .18s,box-shadow .18s;
}
.src-shot:hover{border-color:var(--line-strong);box-shadow:var(--shadow-sm)}
.src-shot img{display:block;width:100%;max-height:380px;height:auto;object-fit:contain;object-position:top}
.src-thumb-doc{
  display:grid;place-items:center;width:100%;min-height:96px;
  font-family:var(--mono);font-size:15px;font-weight:600;letter-spacing:.5px;color:var(--brand-700);
  background:repeating-linear-gradient(135deg,#eef4ff,#eef4ff 8px,#e5eeff 8px,#e5eeff 16px);
}

/* 详情页顶部的原件条：左缩略图、右文件信息、最右「查看原图」 */
.src-strip{
  display:flex;align-items:center;gap:14px;
  margin:2px 0 16px;padding:10px 12px;
  background:linear-gradient(180deg,#fafcff,#f4f8ff);
  border:1px solid var(--line);border-radius:12px;
}
.src-thumb{
  flex:none;display:block;width:112px;height:84px;overflow:hidden;
  border:1px solid var(--line);border-radius:9px;background:#fff;cursor:zoom-in;
  transition:border-color .18s,box-shadow .18s,transform .18s;
}
.src-thumb:hover{border-color:var(--brand-400);box-shadow:0 6px 18px -10px rgba(11,95,212,.7);transform:translateY(-1px)}
.src-thumb img{display:block;width:100%;height:100%;object-fit:cover;object-position:top}
.src-thumb .src-thumb-doc{height:100%;min-height:0}
.src-meta{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.src-meta b{font-size:13px;font-weight:600;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.src-meta .muted{font-size:12px;font-family:var(--mono)}
.src-hint{font-size:11.5px;color:var(--muted)}
.src-open{flex:none;white-space:nowrap}

/* --- 原图预览：点一下在页面里放大，再点一下缩回（不进全屏、不跳新窗口） --- */
a[data-zoom]{cursor:zoom-in}
.is-zoomed a[data-zoom]{cursor:zoom-out}

/* 详情页顶部原件条：放大后缩略图铺满整条，超高时在框内上下滚动 */
.src-strip.is-zoomed{flex-wrap:wrap;align-items:flex-start}
.src-strip.is-zoomed .src-thumb{
  width:100%;height:auto;flex:1 1 100%;
  max-height:min(70vh,760px);overflow:auto;
  background:#fff;border-color:var(--brand-400);
  box-shadow:0 16px 36px -24px rgba(11,95,212,.6);
}
/* 放大后按原图分辨率显示：比框大的缩到框宽，比框小的保持原尺寸（不硬拉大糊掉） */
.src-strip.is-zoomed .src-thumb{text-align:center}
.src-strip.is-zoomed .src-thumb img{display:block;margin:0 auto;width:auto;max-width:100%;height:auto;object-fit:contain;object-position:top}
.src-strip.is-zoomed .src-meta{flex:1 1 240px}
.src-strip.is-zoomed .src-hint{color:var(--brand-700);font-weight:600}

/* 核对页右侧对照卡：放大时把这一列加宽，左边正文照常在 */
.confirm-grid.is-zoomed .src-shot{
  max-height:min(74vh,820px);overflow:auto;
  background:#fff;border-color:var(--brand-400);cursor:zoom-out;
  box-shadow:0 16px 36px -24px rgba(11,95,212,.6);
}
.confirm-grid.is-zoomed .src-shot img{width:auto;max-width:100%;max-height:none;object-fit:contain}
@media (min-width:900px){
  .confirm-grid.is-zoomed{grid-template-columns:minmax(0,1fr) clamp(320px,34vw,520px)}
}

.link-plain{
  display:inline-block;font-size:12px;color:var(--brand-700);
  border-bottom:1px dashed rgba(11,95,212,.45);text-decoration:none;
}
.link-plain:hover{color:var(--brand-800);border-bottom-style:solid}

@media (max-width:640px){
  .src-strip{flex-wrap:wrap}
  .src-meta{flex:1 1 120px}
  .src-open{width:100%;text-align:center}
}

@media (max-width:860px){
  .src-shot img{max-height:260px}
}

/* ============================================================
   上传警示条 / AI 整理标记
   ============================================================ */
.danger-banner{
  display:flex;align-items:center;gap:10px;
  margin:16px 0 4px;padding:14px 16px;
  background:var(--err-bg);
  border:1.5px solid #e8a19b;
  border-left:5px solid var(--err);
  border-radius:var(--radius-sm);
  color:#8f1c15;font-size:14.5px;font-weight:700;line-height:1.6;letter-spacing:.2px;
  box-shadow:0 2px 10px -6px rgba(179,38,30,.5);
}
.danger-banner .db-ico{
  flex:none;width:22px;height:22px;border-radius:50%;
  display:grid;place-items:center;
  background:var(--err);color:#fff;font-size:14px;font-weight:800;font-family:var(--mono);
}

.ai-line{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 8px;font-size:12px}
.tag.ai-tag{background:#f3ecff;color:#6d28d9;border-color:#ddd0fb}
.ai-preview{
  margin-top:14px;padding:14px 16px;
  border:1px dashed var(--line-strong);border-radius:var(--radius-sm);background:#fbfdff;
}
.ai-preview-head{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;font-size:12px;margin-bottom:8px}
.ai-preview .md-body{font-size:13.5px}
.linkbtn{
  background:none;border:0;padding:0;color:var(--brand-600);
  font:inherit;font-size:12px;cursor:pointer;
  text-decoration:underline;text-underline-offset:2px;
}
.linkbtn:hover{color:var(--brand-700)}
.inl{display:inline}

@media (max-width:640px){
  .danger-banner{font-size:13px;padding:12px 13px;align-items:flex-start}
  .danger-banner .db-ico{margin-top:1px}
}

.raw-fold{margin-top:14px;border-top:1px dashed var(--line);padding-top:10px}
.raw-fold summary{cursor:pointer;font-size:12px;color:var(--muted);list-style:none}
.raw-fold summary::-webkit-details-marker{display:none}
.raw-fold summary::before{content:"▸ ";color:var(--muted)}
.raw-fold[open] summary::before{content:"▾ "}
.raw-fold summary:hover{color:var(--brand-600)}
.raw-body{margin-top:10px;padding:12px 14px;background:#f7f9fd;border-radius:var(--radius-sm);font-size:12.5px;color:var(--text-2)}

/* ============================================================
   求助 / 讨论 + 站内通知
   ============================================================ */
.thread-list{display:flex;flex-direction:column;gap:12px;margin-bottom:18px}
.thread-item{
  display:flex;align-items:center;gap:14px;
  padding:15px 18px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--radius);box-shadow:var(--shadow-sm);color:inherit;
  transition:transform .18s,box-shadow .18s,border-color .18s;
}
.thread-item:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift);border-color:var(--line-strong);color:inherit}
.thread-item.is-solved{background:linear-gradient(180deg,#fcfffd,#f4fbf7)}
.ti-main{flex:1;min-width:0}
.ti-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ti-title{font-size:15.5px;font-weight:600;color:var(--text);line-height:1.4}
.ti-excerpt{
  margin:6px 0 9px;font-size:13px;color:var(--text-2);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.ti-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.ti-foot b{font-weight:500;color:var(--text-2)}
.ti-dot{width:3px;height:3px;border-radius:50%;background:var(--line-strong)}
.ti-go{flex:none;font-size:12.5px;font-weight:600;color:var(--brand-600);white-space:nowrap}
.avatar.tiny{width:20px;height:20px;font-size:10px;letter-spacing:0}

.kind-tag{
  display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:6px;
  font-size:11.5px;font-weight:600;letter-spacing:.2px;white-space:nowrap;
}
.kind-tag.help{background:#e8f1ff;color:#0b46a8}
.kind-tag.discuss{background:var(--cyan-soft);color:#0369a1}

.pager{display:flex;align-items:center;justify-content:center;gap:12px;margin:6px 0 22px}

.kind-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.kind-opt{display:block;cursor:pointer;margin:0;position:relative}
.kind-opt input{position:absolute;opacity:0;pointer-events:none}
.kind-opt span{
  display:flex;flex-direction:column;gap:3px;padding:12px 14px;
  border:1.5px solid var(--line);border-radius:12px;background:#fbfdff;
  transition:border-color .18s,background .18s,box-shadow .18s;
}
.kind-opt span b{font-size:14px;color:var(--text)}
.kind-opt span i{font-style:normal;font-size:12px;color:var(--muted)}
.kind-opt input:checked + span{border-color:var(--brand-500);background:var(--brand-weak);box-shadow:0 0 0 3px rgba(26,111,224,.1)}
.kind-opt input:focus-visible + span{box-shadow:0 0 0 3.5px rgba(56,189,248,.4)}

.notice-list{display:flex;flex-direction:column;gap:10px}
.notice-item{
  display:flex;gap:12px;padding:14px 16px;color:inherit;
  background:var(--card);border:1px solid var(--line);border-radius:12px;
  transition:border-color .18s,box-shadow .18s,transform .18s;
}
.notice-item:hover{border-color:var(--line-strong);box-shadow:var(--shadow-sm);color:inherit;transform:translateY(-1px)}
.notice-item.is-unread{border-color:var(--brand-400);background:linear-gradient(180deg,#f8fbff,#eef5ff)}
.ni-dot{width:8px;height:8px;border-radius:50%;background:var(--line-strong);margin-top:7px;flex:none}
.notice-item.is-unread .ni-dot{background:var(--brand-500);box-shadow:0 0 0 3px rgba(26,111,224,.16)}
.ni-main{flex:1;min-width:0}
.ni-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ni-head b{font-size:14px;font-weight:600;color:var(--text)}
.ni-summary{margin:5px 0 6px;font-size:12.5px;color:var(--text-2)}
.ni-foot{display:flex;gap:10px;flex-wrap:wrap;font-size:11.5px;color:var(--muted)}
.ni-go{flex:none;font-size:12px;font-weight:600;color:var(--brand-600);align-self:center;white-space:nowrap}

@media (max-width:700px){
  .kind-picker{grid-template-columns:minmax(0,1fr)}
  .thread-item{flex-direction:column;align-items:flex-start;gap:8px}
  .ti-go{display:none}
}

/* ============================================================
   资料库文件树 / 目录管理 / 建类提议
   ============================================================ */
.tree-shell{display:grid;grid-template-columns:250px minmax(0,1fr);gap:18px;align-items:start;margin-bottom:28px}
.tree-side{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:13px 11px;box-shadow:var(--shadow-sm);position:sticky;top:14px;
}
.tree-side-head{
  display:flex;justify-content:space-between;align-items:center;
  padding:2px 8px 9px;margin-bottom:7px;border-bottom:1px solid var(--line);
  font-size:12.5px;color:var(--muted);
}
.tree-side-head b{color:var(--text);font-size:13px}

.tree-link{
  display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:9px;
  color:var(--text-2);font-size:13px;text-decoration:none;
  transition:background .15s,color .15s;
}
.tree-link:hover{background:var(--brand-weak);color:var(--brand-700)}
.tree-link.is-on{
  background:linear-gradient(135deg,var(--brand-700),var(--brand-500));color:#fff;font-weight:600;
  box-shadow:0 8px 18px -12px rgba(11,70,168,.85);
}
.tree-link.is-on .tree-count{background:rgba(255,255,255,.22);color:#fff}
.tree-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tree-count{
  font-family:var(--mono);font-size:11px;color:var(--muted);background:#f1f5fc;
  border-radius:20px;padding:1px 7px;flex:none;
}
.tree-kids{margin-left:10px;padding-left:9px;border-left:1px dashed var(--line-strong)}
.tree-kids .tree-link{font-size:12.5px;padding:6px 8px}

.tree-propose{margin-top:10px;padding:10px 4px 0;border-top:1px solid var(--line)}
.tree-propose summary{
  cursor:pointer;list-style:none;font-size:12.5px;font-weight:600;color:var(--brand-600);
  padding:5px 7px;border-radius:8px;
}
.tree-propose summary:hover{background:var(--brand-weak)}
.tree-propose summary::-webkit-details-marker{display:none}
.tree-propose form{display:grid;gap:6px;padding:8px 2px 2px}
.tree-propose label{font-size:11.5px;color:var(--muted);margin:2px 0 -2px}
.tree-propose input{width:100%;font-size:12.5px;padding:7px 9px}
.tree-propose .btn{width:100%;margin-top:4px}
.tree-propose .hint{margin:2px 0 0;font-size:11px}

.crumb{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:12.5px;color:var(--muted);margin-bottom:12px}
.crumb a{color:var(--brand-600);text-decoration:none}
.crumb a:hover{text-decoration:underline}
.crumb b{color:var(--text)}
.crumb .sep{color:var(--line-strong)}

.dir-head{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;align-items:flex-start;margin-bottom:14px}
.dir-title{margin:0;font-size:18px;letter-spacing:-.2px}
.dir-desc{margin:4px 0 0;font-size:12.5px;color:var(--muted);max-width:64ch}
.dir-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

.dir-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(238px,1fr));gap:12px;margin-bottom:18px}
.dir-card{
  display:flex;align-items:center;gap:11px;padding:13px 14px;
  background:var(--card);border:1px solid var(--line);border-radius:12px;
  box-shadow:var(--shadow-sm);color:inherit;text-decoration:none;
  transition:border-color .16s,box-shadow .16s,transform .16s;
}
.dir-card:hover{border-color:var(--brand-400);transform:translateY(-1px);box-shadow:var(--shadow)}
.dir-ico{
  width:34px;height:34px;flex:none;display:grid;place-items:center;
  border-radius:10px;background:var(--brand-weak);color:var(--brand-600);
}
.dir-ico svg{width:19px;height:16px;display:block}
.dir-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.dir-body b{font-size:13.5px;color:var(--text)}
.dir-meta{font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dir-count{
  font-family:var(--mono);font-size:12px;color:var(--brand-700);background:var(--brand-weak);
  border-radius:20px;padding:2px 8px;flex:none;
}

.file-list{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow-sm);overflow:hidden;margin-bottom:16px;
}
.file-row{
  display:flex;align-items:center;gap:10px;padding:9px 13px;
  border-bottom:1px solid var(--line);
  transition:background .15s;
}
.file-row:last-child{border-bottom:none}
.file-row:hover{background:#f7faff}
.file-hit{
  flex:1;min-width:0;display:flex;align-items:center;gap:12px;
  padding:3px 2px;color:inherit;text-decoration:none;
}
.file-assign{flex:none;display:flex;align-items:center}
.file-assign select{
  height:30px;max-width:200px;font-size:12px;padding:0 26px 0 8px;
  border:1px solid var(--line-strong);border-radius:8px;
  background:#fff;color:var(--text-2);cursor:pointer;
  appearance:none;-webkit-appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,#8a97ad 50%),linear-gradient(135deg,#8a97ad 50%,transparent 50%);
  background-position:calc(100% - 14px) 13px,calc(100% - 9px) 13px;
  background-size:5px 5px,5px 5px;background-repeat:no-repeat;
  transition:border-color .15s,color .15s,background-color .15s;
}
.file-assign select:hover{border-color:var(--brand-400);color:var(--text)}
.file-assign select:focus{outline:none;border-color:var(--brand-500);box-shadow:0 0 0 3px var(--brand-weak)}
.file-ico{
  width:38px;height:38px;flex:none;display:grid;place-items:center;border-radius:9px;
  font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.4px;
}
.file-ico.pdf{background:var(--err-bg);color:var(--err)}
.file-ico.img{background:var(--cyan-soft);color:#0369a1}
.file-ico.txt{background:var(--brand-weak);color:var(--brand-700)}
.file-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.file-title{font-size:13.5px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-sub{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-side{display:flex;align-items:center;gap:10px;flex:none;font-size:11.5px}

.req-list{display:flex;flex-direction:column}
.req-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 0;border-bottom:1px dashed var(--line)}
.req-row:last-child{border-bottom:none}
.req-name{font-weight:600;color:var(--text)}

.sec-title{font-size:14.5px;margin:24px 0 10px;color:var(--text);letter-spacing:.2px}
.req-cards{display:grid;gap:12px}
.req-card{margin-bottom:0}
.req-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.req-head b{font-size:15px}
.req-note{margin:6px 0 10px}
.req-form{display:grid;gap:10px}
.req-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.req-actions input[type=text]{flex:1;min-width:200px}
.req-reject{display:flex;gap:10px;align-items:center;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}
.req-reject input{flex:1;min-width:180px}

.cat-rows{display:grid;gap:6px}
.cat-row{background:var(--card);border:1px solid var(--line);border-radius:11px;padding:9px 12px;box-shadow:var(--shadow-sm)}
.cat-main{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.cat-name{font-weight:600;font-size:13.5px}
.cat-note{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cat-edit{margin-top:6px}
.cat-edit summary{
  cursor:pointer;list-style:none;display:inline-block;
  font-size:12px;font-weight:600;color:var(--brand-600);
}
.cat-edit summary::-webkit-details-marker{display:none}
.cat-edit[open] summary{margin-bottom:8px}

.pick-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.pick-row select{flex:1;min-width:220px}
.propose-box{
  margin-top:12px;padding:11px 13px;border:1px dashed var(--line-strong);
  border-radius:11px;background:#fbfdff;
}
.propose-box summary{cursor:pointer;list-style:none;font-size:12.5px;font-weight:600;color:var(--brand-600)}
.propose-box summary::-webkit-details-marker{display:none}
.propose-box[open] summary{margin-bottom:10px}
.propose-box .fields{margin-bottom:8px}

.cat-assign{
  display:flex;align-items:center;gap:9px;flex-wrap:wrap;
  margin-top:10px;padding-top:10px;border-top:1px dashed var(--line);
}
.cat-assign label{font-size:12.5px;color:var(--muted);margin:0}
.cat-assign select{max-width:320px}

@media (max-width:900px){
  .tree-shell{grid-template-columns:minmax(0,1fr)}
  .tree-side{position:static}
  .file-side{display:none}
}

/* ============================================================
   上传进度与失败提示（XHR 提交）
   ============================================================ */
.up-bar{
  height:8px;margin-top:14px;border-radius:99px;
  background:#eef3fb;overflow:hidden;
}
.up-bar i{
  display:block;height:100%;width:0;border-radius:99px;
  background:linear-gradient(90deg,var(--brand-600),var(--brand-400));
  transition:width .18s ease;
}
.up-fail{
  margin-top:14px;padding:13px 15px;font-size:13px;
  border:1px solid #f0cdcd;background:var(--err-bg,#fdf0f0);border-radius:11px;
}
.up-fail b{display:block;margin-bottom:6px;color:var(--err,#b3261e);font-size:13.5px}
.up-fail p{margin:0 0 8px}
.up-fail-tip{color:var(--text-2);font-size:12.5px;line-height:1.75}

/* ============================================================
   首页顶部：自己还没核对的草稿
   ============================================================ */
.draft-strip{padding:14px 16px;margin-bottom:16px;border-color:#dbe7fb;background:linear-gradient(180deg,#f8fbff,#fff)}
.draft-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.draft-head b{font-size:13.5px;color:var(--text)}
.draft-list{display:grid;gap:4px}
.draft-item{
  display:flex;align-items:center;gap:10px;padding:8px 9px;border-radius:9px;
  color:inherit;text-decoration:none;border:1px solid transparent;transition:background .15s,border-color .15s;
}
.draft-item:hover{background:var(--brand-weak);border-color:#dbe7fb}
.draft-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.draft-go{font-size:12px;font-weight:600;color:var(--brand-600);flex:none}

/* ============================================================
   账号安全：改密规则提示
   ============================================================ */
.pwd-rule{margin-top:7px;font-size:12px;line-height:1.75;color:var(--muted)}
