:root{
  --bg:#0f1115; --card:#171a21; --line:#252a34; --fg:#e8eaed; --dim:#a8b0be;
  --acc:#5b8cff; --ok:#3fb950; --warn:#d29922; --bad:#f85149;
  --r:12px;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);
  font:15px/1.6 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft Yahei",sans-serif}
.wrap{max-width:1180px;margin:0 auto;padding:28px 20px 60px}
header{display:flex;justify-content:space-between;align-items:center;gap:20px;
  margin-bottom:24px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:14px}
.dot{width:38px;height:38px;border-radius:11px;
  background:linear-gradient(135deg,var(--acc),#8b5bff);flex:none}
h1{margin:0;font-size:19px;letter-spacing:.3px}
.brand p{margin:2px 0 0;color:var(--dim);font-size:13px}
nav{display:flex;gap:6px;background:var(--card);padding:4px;border-radius:10px;border:1px solid var(--line)}
.tab{border:0;background:transparent;color:var(--dim);padding:8px 18px;border-radius:7px;
  cursor:pointer;font-size:14px;font-family:inherit}
.tab.active{background:var(--acc);color:#fff}
.tabpane{display:none}
.tabpane.active{display:block}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px}
.span2{grid-column:1/-1}
h2{margin:0 0 14px;font-size:15px;color:var(--fg)}
.drop{border:1.5px dashed var(--line);border-radius:10px;padding:26px;text-align:center;
  color:var(--dim);transition:.18s;cursor:pointer}
.drop:hover,.drop.over{border-color:var(--acc);background:rgba(91,140,255,.06)}
.drop p{margin:0 0 4px}
.hint{font-size:12px;color:#6b7484}
.link{color:var(--acc);cursor:pointer;text-decoration:underline}
.files{list-style:none;margin:14px 0;padding:0;max-height:190px;overflow:auto}
.files li{display:flex;justify-content:space-between;gap:10px;padding:7px 11px;
  background:#11141a;border:1px solid var(--line);border-radius:8px;margin-bottom:6px;font-size:13px}
.files b{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.files span{color:var(--dim);flex:none}
button.primary{background:var(--acc);color:#fff;border:0;padding:11px 22px;border-radius:9px;
  cursor:pointer;font-size:14px;font-family:inherit}
button.primary:disabled{opacity:.55;cursor:not-allowed;
  filter:saturate(.5)}
button.ghost{background:transparent;color:var(--fg);border:1px solid var(--line);
  padding:10px 18px;border-radius:9px;cursor:pointer;font-family:inherit;font-size:14px}
button.ghost:disabled{opacity:.55;cursor:not-allowed}
.msg{font-size:13px;color:var(--dim);min-height:20px;margin:10px 0 0}
.msg.err{color:var(--bad)}
.msg.ok{color:var(--ok)}
.results{display:flex;flex-direction:column;gap:12px;max-height:520px;overflow:auto}
.empty{color:var(--dim);font-size:13px;margin:0}
.res{border:1px solid var(--line);border-radius:10px;padding:13px;background:#11141a}
.res.bad{border-color:rgba(248,81,73,.5)}
.res-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:9px}
.res-top b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tag{font-size:11px;padding:2px 8px;border-radius:20px;flex:none}
.tag.high{background:rgba(63,185,80,.16);color:var(--ok)}
.tag.medium{background:rgba(210,153,34,.16);color:var(--warn)}
.tag.needs_human{background:rgba(248,81,73,.16);color:var(--bad)}
.kv{display:grid;grid-template-columns:78px 1fr;gap:3px 10px;font-size:12.5px}
.kv span{color:var(--dim)}
.kv b{font-weight:400;word-break:break-all}
.probs{margin:8px 0 0;padding-left:16px;font-size:12px;color:var(--bad)}
/* 每个 item 的两个凭证位：发票 / 交易凭证 */
.vouchers{display:flex;gap:10px;margin-top:10px;flex-wrap:wrap}
.vslot{display:flex;align-items:center;gap:7px;font-size:12px;
  background:#0e1116;border:1px solid var(--line);border-radius:8px;padding:5px 9px}
.vlabel{color:var(--dim)}
.vok{color:var(--ok)}
.vup{color:var(--acc);cursor:pointer;text-decoration:underline}
.vclear{border:0;background:transparent;color:var(--dim);cursor:pointer;
  font-size:14px;line-height:1;padding:0 2px}
.vclear:hover{color:var(--bad)}
.form{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:13px}
.form label{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:var(--dim)}
input,select{background:#11141a;border:1px solid var(--line);color:var(--fg);
  padding:9px 11px;border-radius:8px;font-size:14px;font-family:inherit;width:100%}
input:focus,select:focus{outline:0;border-color:var(--acc)}
.sumline{margin:16px 0 12px;font-size:14px;color:var(--dim)}
.sumline b{color:var(--fg);font-size:19px}
.todos{display:flex;flex-direction:column;gap:9px;margin-top:14px;max-height:640px;overflow:auto}
.todo{display:grid;grid-template-columns:96px 1fr 132px;gap:14px;align-items:center;
  padding:11px 13px;border:1px solid var(--line);border-radius:9px;background:#11141a;font-size:13px}
.todo .who{color:var(--dim)}
.todo .who b{display:block;color:var(--fg);font-size:14px;font-weight:500}
.todo .mid{min-width:0;line-height:1.45}
.todo .mid b{font-weight:500;color:var(--fg)}
.todo .when{font-size:12px;text-align:right;white-space:nowrap}
.todo .when b{display:block;font-size:16px;font-weight:600}
/* ⚠ 等级色必须写到 .todo .when.lv-* —— 只写 .lv-red 会被 .todo .when 的
   color 覆盖（后者选择器更具体），实测颜色完全不生效。 */
.todo .when.lv-red{color:var(--bad)}
.todo .when.lv-orange{color:var(--warn)}
.todo .when.lv-yellow{color:#d5b26a}
.todo .when.lv-grey{color:var(--dim)}
/* 用 CSS 圆点代替 emoji：无头浏览器/部分 Windows 缺 emoji 字体，🔴 会显示成 □ */
.lvdot{display:inline-block;width:8px;height:8px;border-radius:50%;
  margin-right:5px;vertical-align:1px;background:currentColor}
/* 报销列表 25 条要能一路看到底，不限高（.todos 的 max-height 只给「其他待办」用） */
#reimbs{max-height:none;overflow:visible}
#reimbs .todo:first-child{border-color:rgba(248,81,73,.4)}
.rowbtns{display:flex;gap:9px;margin:12px 0}
@media(max-width:820px){.grid{grid-template-columns:1fr}}

/* ---- 登录页 ---- */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.login-card{width:100%;max-width:380px;background:var(--card);border:1px solid var(--line);
  border-radius:16px;padding:32px 28px}
.login-card h1{margin:0 0 8px;font-size:22px}
.login-card .hint{margin:0 0 20px;line-height:1.7;color:#b6bdc9;font-size:13px}
.login-card label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;
  color:var(--dim);margin-bottom:14px}
.login-card button{width:100%;margin-top:6px}
.whoami{font-size:12.5px;color:var(--dim);padding:0 10px;align-self:center;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
button.ghost.small{padding:5px 12px;font-size:12.5px}
@media(max-width:820px){.whoami{max-width:110px}}
