/* ============================================================
   账小满 · 中台端
   ============================================================ */
:root{
  --ink:#0f172a; --ink2:#4a5568; --ink3:#8b95a7; --ink4:#aab2c0;
  --bg:#f5f6fa; --card:#fff; --line:#e8ebf1; --line2:#f3f5f9;
  --brand:#3b5bdb; --brand-2:#3049b5; --brand-soft:#eef1fd;
  --green:#0f9d58; --green-soft:#e9f7ef;
  --amber:#d97706; --amber-soft:#fdf3e2;
  --red:#dc2626; --red-soft:#fdecec;
  --teal:#0f766e; --teal-soft:#e6f4f2;
  --violet:#7c3aed;
  --r:14px;
  --side:236px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;height:100%}
body{
  background:var(--bg); color:var(--ink); font-size:13.5px; line-height:1.55;
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  -webkit-font-smoothing:antialiased;
}
button{font-family:inherit;cursor:pointer;border:0;background:none;color:inherit}
input,select{font-family:inherit;font-size:13px;color:var(--ink)}
.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}
a{text-decoration:none;color:inherit}

/* ---------- 侧栏 ---------- */
.side{
  position:fixed;left:0;top:0;bottom:0;width:var(--side);background:#0e1622;color:#cbd3e1;
  display:flex;flex-direction:column;z-index:50;
  background-image:radial-gradient(circle at 20% 0%,rgba(70,96,180,.22),transparent 55%);
}
.brand{display:flex;align-items:center;gap:10px;padding:22px 20px 18px}
.logo{
  width:34px;height:34px;border-radius:10px;background:linear-gradient(140deg,#4c6bf0,#2f47a8);
  color:#fff;display:grid;place-items:center;font-weight:600;font-size:16px;
  box-shadow:0 6px 14px -6px rgba(60,90,220,.8);
}
.brand .bt b{display:block;color:#fff;font-size:15px;letter-spacing:.3px}
.brand .bt span{display:block;font-size:11px;color:#7c8aa1;margin-top:1px}
.co{
  margin:6px 14px 14px;padding:10px 11px;border-radius:11px;background:rgba(255,255,255,.05);
  display:flex;align-items:center;gap:9px;border:1px solid rgba(255,255,255,.06);
}
.co-ava{width:28px;height:28px;border-radius:8px;background:#1d2b45;color:#9db0d6;display:grid;place-items:center;font-size:12px;flex:none}
.co b{display:block;font-size:12.5px;color:#e6ebf5;font-weight:500}
.co span{display:block;font-size:10.5px;color:#72809a;white-space:nowrap}

nav{padding:4px 10px;flex:1;overflow-y:auto}
nav a{
  display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:9px;margin-bottom:2px;
  font-size:13px;color:#a9b5c8;position:relative;cursor:pointer;transition:.14s;
}
nav a:hover{background:rgba(255,255,255,.05);color:#e8edf6}
nav a.on{background:rgba(90,120,240,.16);color:#fff;font-weight:500}
nav a.on::before{
  content:"";position:absolute;left:-10px;top:9px;bottom:9px;width:3px;border-radius:0 3px 3px 0;background:#5b7bf5;
}
nav a i{
  width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.45;flex:none;margin-left:2px;
}
nav a.on i{opacity:1;background:#7f9bff}
nav a em{
  margin-left:auto;font-style:normal;background:#e0483f;color:#fff;font-size:10.5px;font-weight:600;
  min-width:18px;height:18px;border-radius:9px;display:grid;place-items:center;padding:0 5px;
}
nav a em.zero{display:none}
.nav-sep{font-size:10.5px;color:#5b6880;padding:16px 12px 6px;letter-spacing:1px}

.side-foot{padding:10px 12px 14px;border-top:1px solid rgba(255,255,255,.06)}
.switch-end{
  display:flex;align-items:center;gap:8px;font-size:12px;color:#9fb0cb;padding:8px 10px;border-radius:8px;
  border:1px dashed rgba(255,255,255,.14);margin-bottom:10px;
}
.switch-end:hover{background:rgba(255,255,255,.06);color:#fff}
.me{display:flex;align-items:center;gap:9px;padding:6px 8px}
.me-ava{width:30px;height:30px;border-radius:9px;background:#2a3a58;color:#c3d2ea;display:grid;place-items:center;font-size:12px;font-weight:600}
.me b{display:block;font-size:12.5px;color:#e6ebf5;font-weight:500}
.me span{display:block;font-size:10.5px;color:#74829b}
.me svg{margin-left:auto;color:#5f6d85}

/* ---------- 主区 ---------- */
.main{margin-left:var(--side);min-height:100%;display:flex;flex-direction:column}
.topbar{
  position:sticky;top:0;z-index:30;background:rgba(245,246,250,.88);backdrop-filter:blur(10px);
  padding:18px 26px 14px;display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;
  border-bottom:1px solid rgba(232,235,241,.7);
}
.titles h1{margin:0;font-size:20px;font-weight:600;letter-spacing:-.3px}
.titles p{margin:4px 0 0;font-size:12.5px;color:var(--ink3)}
.actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.btn{
  display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--line);
  padding:7px 12px;border-radius:9px;font-size:12.5px;color:var(--ink2);transition:.14s;white-space:nowrap;
}
.btn:hover{background:#fafbfe;border-color:#d8dee9;color:var(--ink)}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.primary:hover{background:var(--brand-2);border-color:var(--brand-2);color:#fff}
.btn.danger{color:var(--red);border-color:#f2d4d4;background:#fff}
.btn.danger:hover{background:#fdf2f2}
.btn.sm{padding:5px 9px;font-size:12px;border-radius:7px}
.btn.ghost{background:transparent}
.btn:disabled{opacity:.45;cursor:not-allowed}
.icon-btn{
  width:32px;height:32px;border-radius:9px;border:1px solid var(--line);background:#fff;
  display:grid;place-items:center;color:var(--ink2);
}
.icon-btn:hover{background:#fafbfe}
.bell{width:32px;height:32px;border-radius:9px;border:1px solid var(--line);background:#fff;display:grid;place-items:center;color:var(--ink2);position:relative;cursor:pointer}
.bell span{position:absolute;top:6px;right:7px;width:6px;height:6px;border-radius:50%;background:var(--red);display:none}
.bell.has span{display:block}

.range{display:flex;align-items:center;gap:8px;position:relative}
.range select{
  appearance:none;background:#fff;border:1px solid var(--line);border-radius:9px;padding:7px 28px 7px 11px;
  font-size:12.5px;color:var(--ink2);cursor:pointer;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'><path d='M2 4l3 3 3-3' fill='none' stroke='%238b95a7' stroke-width='1.4'/></svg>");
  background-repeat:no-repeat;background-position:right 9px center;
}
.custom{display:none;align-items:center;gap:6px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:3px 6px}
.custom.on{display:flex}
.custom input{border:0;outline:0;font-size:12px;color:var(--ink2);width:112px;background:transparent}
.custom span{color:var(--ink4);font-size:11px}

#view{padding:20px 26px 40px;flex:1}

/* ---------- 卡片 & 栅格 ---------- */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px 18px}
.card.pad0{padding:0;overflow:hidden}
.card-hd{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}
.card-hd h2{margin:0;font-size:14px;font-weight:600;letter-spacing:-.1px}
.card-hd .hint{font-size:11.5px;color:var(--ink3);font-weight:400;margin-left:7px}
.card-hd .act{font-size:12px;color:var(--brand);cursor:pointer;display:flex;align-items:center;gap:3px}
.grid{display:grid;gap:14px;margin-bottom:14px}
.g2{grid-template-columns:1fr 1fr}
.g3{grid-template-columns:1.35fr 1fr}
.g4{grid-template-columns:1.6fr 1fr}
@media (max-width:1280px){.g4{grid-template-columns:1fr}.g3{grid-template-columns:1fr}}

/* KPI */
.kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:14px}
@media (max-width:1500px){.kpis{grid-template-columns:repeat(3,1fr)}}
.kpi{
  background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px 15px;position:relative;overflow:hidden;
}
.kpi .lb{font-size:12px;color:var(--ink3);display:flex;align-items:center;gap:5px}
.kpi .vl{font-size:23px;font-weight:600;letter-spacing:-.7px;margin:7px 0 3px;line-height:1.15}
.kpi .vl small{font-size:12.5px;font-weight:500;color:var(--ink3);letter-spacing:0;margin-left:3px}
.kpi .ft{font-size:11.5px;color:var(--ink3);display:flex;align-items:center;gap:5px}
.kpi .ft b{font-weight:600}
.kpi::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--brand);opacity:.9}
.kpi.k-amber::after{background:var(--amber)}
.kpi.k-blue::after{background:var(--brand)}
.kpi.k-red::after{background:var(--red)}
.kpi.k-green::after{background:var(--green)}
.kpi.k-teal::after{background:var(--teal)}
.kpi.k-slate::after{background:#64748b}
.up{color:var(--red)}
.down{color:var(--green)}

/* ---------- 图表 ---------- */
.chart{width:100%}
.chart svg{display:block;width:100%;height:auto;overflow:visible}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:11.5px;color:var(--ink2);margin-top:10px}
.legend i{width:8px;height:8px;border-radius:2px;display:inline-block;margin-right:5px;vertical-align:middle}
.bars{display:flex;flex-direction:column;gap:12px}
.bar-row .h{display:flex;justify-content:space-between;gap:10px;font-size:12.5px;margin-bottom:5px}
.bar-row .h .n{color:var(--ink);display:flex;align-items:center;gap:6px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.bar-row .h .v{color:var(--ink2);white-space:nowrap}
.bar-row .track{height:7px;border-radius:4px;background:#f0f2f7;overflow:hidden}
.bar-row .track i{display:block;height:100%;border-radius:4px;background:var(--brand)}
.bar-row.clickable{cursor:pointer;border-radius:8px;padding:5px 6px;margin:-5px -6px}
.bar-row.clickable:hover{background:#fafbfe}
.avatar-sm{width:22px;height:22px;border-radius:7px;display:grid;place-items:center;font-size:10.5px;color:#fff;flex:none}

/* 甜甜圈中心 */
.donut-wrap{display:flex;align-items:center;gap:18px}
.donut-wrap .chart{flex:1;max-width:190px}
.donut-center{position:relative}
.donut-legend{flex:1;display:flex;flex-direction:column;gap:8px;min-width:0}
.donut-legend .row{display:flex;align-items:center;gap:7px;font-size:12px}
.donut-legend .row i{width:7px;height:7px;border-radius:2px;flex:none}
.donut-legend .row .n{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink2)}
.donut-legend .row .v{color:var(--ink);font-weight:500;white-space:nowrap}
.donut-legend .row .p{color:var(--ink3);width:38px;text-align:right;font-size:11.5px}

/* 表格 */
.table-wrap{overflow-x:auto}
table.tb{width:100%;border-collapse:collapse;font-size:13px}
table.tb th{
  text-align:left;font-weight:500;font-size:11.5px;color:var(--ink3);padding:9px 10px;
  background:#fafbfd;border-bottom:1px solid var(--line);white-space:nowrap;position:sticky;top:0;z-index:2;
}
table.tb td{padding:11px 10px;border-bottom:1px solid var(--line2);vertical-align:middle}
table.tb tr:hover td{background:#fbfcfe}
table.tb td.r,table.tb th.r{text-align:right}
table.tb td.c,table.tb th.c{text-align:center}
table.tb .id{font-size:11.5px;color:var(--ink3);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
table.tb .main-t{font-weight:500;color:var(--ink)}
table.tb .sub-t{font-size:11.5px;color:var(--ink3);margin-top:1px}
table.tb tr.clickable{cursor:pointer}
table.tb .thumb{
  width:30px;height:38px;border-radius:5px;border:1px solid var(--line);background:#f7f8fb;
  display:inline-block;vertical-align:middle;object-fit:cover;object-position:top;cursor:zoom-in;
}
.tb-foot{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;font-size:12px;color:var(--ink3)}

/* 徽章 */
.badge{
  display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:2px 7px;border-radius:6px;
  background:#f1f3f7;color:#5b6472;font-weight:500;white-space:nowrap;line-height:1.65;
}
.badge::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.7}
.badge.no-dot::before{display:none}
.b-blue{background:#eaf0ff;color:#2c4bbd}
.b-green{background:var(--green-soft);color:#0b7a44}
.b-amber{background:var(--amber-soft);color:#9a5a05}
.b-red{background:var(--red-soft);color:#b91c1c}
.b-gray{background:#f1f3f7;color:#6b7280}
.b-teal{background:var(--teal-soft);color:#0b6b64}
.b-violet{background:#f2ecfd;color:#6d28d9}

/* 筛选条 */
.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.filters input[type=text],.filters input[type=date],.filters select{
  background:#fff;border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:12.5px;color:var(--ink2);
  outline:0;
}
.filters input[type=text]{width:190px}
.filters select{appearance:none;padding-right:24px;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'><path d='M2 4l3 3 3-3' fill='none' stroke='%238b95a7' stroke-width='1.4'/></svg>");
  background-repeat:no-repeat;background-position:right 8px center}
.filters .sp{flex:1}
.filters .cnt{font-size:12px;color:var(--ink3)}

/* 待办 */
.todo{display:flex;gap:11px;padding:12px 0;border-bottom:1px solid var(--line2);align-items:flex-start}
.todo:last-child{border-bottom:0;padding-bottom:0}
.todo .ti{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;flex:none}
.todo .tb{flex:1;min-width:0}
.todo .tb b{display:block;font-size:12.5px;font-weight:500}
.todo .tb span{display:block;font-size:11.5px;color:var(--ink3);margin-top:1px}
.todo .go{font-size:12px;color:var(--brand);white-space:nowrap;cursor:pointer}

/* 审核工作台 */
.inbox{display:grid;grid-template-columns:340px 1fr;gap:14px;align-items:start}
@media (max-width:1100px){.inbox{grid-template-columns:1fr}}
.queue{background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;position:sticky;top:86px}
.queue-hd{padding:12px 14px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}
.queue-hd b{font-size:13px}
.queue-hd span{font-size:11.5px;color:var(--ink3)}
.queue-list{max-height:calc(100vh - 210px);overflow-y:auto}
.qitem{padding:13px 14px;border-bottom:1px solid var(--line2);cursor:pointer;position:relative}
.qitem:hover{background:#fafbfe}
.qitem.on{background:var(--brand-soft)}
.qitem.on::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--brand)}
.qitem .l1{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.qitem .l1 b{font-size:13px;font-weight:500}
.qitem .l1 .a{font-weight:600;font-size:13.5px}
.qitem .l2{display:flex;justify-content:space-between;margin-top:4px;font-size:11.5px;color:var(--ink3)}
.qitem .l3{display:flex;gap:5px;margin-top:7px;flex-wrap:wrap}

.detail{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;min-height:420px}
.detail-hd{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding-bottom:14px;border-bottom:1px solid var(--line)}
.detail-hd h2{margin:0;font-size:17px;font-weight:600;letter-spacing:-.2px}
.detail-hd .m{font-size:12px;color:var(--ink3);margin-top:3px}
.detail-hd .amt{font-size:26px;font-weight:600;letter-spacing:-.8px;white-space:nowrap}
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 28px;margin-top:6px}
@media (max-width:900px){.detail-grid{grid-template-columns:1fr}}
.frow{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line2);font-size:13px}
.frow label{width:74px;color:var(--ink3);font-size:12px;flex:none}
.frow .val{flex:1;text-align:right;color:var(--ink)}
.frow input,.frow select{
  flex:1;text-align:right;border:1px solid transparent;background:#fafbfd;border-radius:7px;padding:5px 8px;
  font-size:13px;outline:0;min-width:0;color:var(--ink);
}
.frow input:focus,.frow select:focus{border-color:#c7d2f7;background:#fff}
.detail-note{margin-top:14px;background:#f8f9fc;border:1px solid var(--line2);border-radius:10px;padding:11px 13px;font-size:12.5px;color:var(--ink2)}
.detail-note b{display:block;margin-bottom:3px;color:var(--ink);font-size:11.5px;font-weight:500}
.thumbs{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.thumb-card{
  width:88px;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#f7f8fb;cursor:zoom-in;position:relative;
}
.thumb-card img{width:100%;height:110px;object-fit:cover;object-position:top;display:block}
.thumb-card span{display:block;font-size:10.5px;color:var(--ink3);padding:4px 6px;background:#fff;border-top:1px solid var(--line2);text-align:center}
.thumb-card.inv img{height:96px;object-fit:contain;background:#fff}

.actions-bar{display:flex;gap:9px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line);flex-wrap:wrap}
.actions-bar .btn{padding:9px 16px;font-size:13px}
.actions-bar .grow{flex:1}

.chat-mini{background:#f8f9fc;border-radius:10px;padding:10px 12px;font-size:12.5px;color:var(--ink2);margin-top:12px}
.chat-mini .line{display:flex;gap:8px;margin-bottom:6px}
.chat-mini .line:last-child{margin-bottom:0}
.chat-mini .who{color:var(--ink3);flex:none;width:36px}
.chat-mini .txt{flex:1}

/* 抽屉 */
#drawer{position:fixed;inset:0;z-index:80;display:none}
#drawer.on{display:block}
.drawer-mask{position:absolute;inset:0;background:rgba(15,23,42,.34);opacity:0;transition:.2s}
#drawer.on .drawer-mask{opacity:1}
.drawer{
  position:absolute;right:0;top:0;bottom:0;width:520px;max-width:94vw;background:#fff;
  box-shadow:-20px 0 60px -30px rgba(15,23,42,.4);transform:translateX(100%);transition:transform .24s cubic-bezier(.2,.8,.3,1);
  display:flex;flex-direction:column;
}
#drawer.on .drawer{transform:none}
.drawer-hd{padding:18px 20px 14px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:12px}
.drawer-hd h3{margin:0;font-size:16px}
.drawer-hd p{margin:3px 0 0;font-size:12px;color:var(--ink3)}
.drawer-bd{flex:1;overflow-y:auto;padding:18px 20px}
.drawer-ft{padding:12px 20px;border-top:1px solid var(--line);display:flex;gap:8px;background:#fcfcfe}

/* 类目矩阵 */
.matrix{font-size:12px;border-collapse:separate;border-spacing:4px;width:100%}
.matrix th{font-weight:500;color:var(--ink3);font-size:11px;padding:2px 4px;text-align:center}
.matrix th.l{text-align:left;white-space:nowrap}
.matrix td{padding:6px 8px;border-radius:6px;text-align:center;color:var(--ink2);background:#f7f8fb}
.matrix td.l{text-align:left;background:transparent;color:var(--ink);white-space:nowrap}
.matrix td.tot{font-weight:600;color:var(--ink);background:transparent}

/* 空态 */
.empty{padding:44px 20px;text-align:center;color:var(--ink3);font-size:12.5px}
.empty .em{font-size:28px;opacity:.35;margin-bottom:8px}

/* Toast / 弹层 */
.toast-box{position:fixed;left:50%;bottom:34px;transform:translateX(-50%);z-index:9999;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{background:#111827;color:#fff;font-size:12.5px;padding:9px 15px;border-radius:20px;display:flex;align-items:center;gap:7px;box-shadow:0 10px 30px -10px rgba(0,0,0,.45);animation:tin .2s}
.toast.ok{background:#0f7a46}
.toast.err{background:#b91c1c}
.toast.out{opacity:0;transform:translateY(6px);transition:.24s}
@keyframes tin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

.modal-wrap{position:fixed;inset:0;background:rgba(15,23,42,.4);z-index:120;display:flex;align-items:center;justify-content:center;padding:24px;opacity:0;transition:.16s}
.modal-wrap.in{opacity:1}
.modal{background:#fff;border-radius:16px;width:100%;max-width:480px;max-height:88vh;display:flex;flex-direction:column;transform:translateY(6px) scale(.99);transition:.16s;overflow:hidden}
.modal-wrap.in .modal{transform:none}
.modal.lg{max-width:900px}
.modal-hd{display:flex;justify-content:space-between;gap:12px;padding:16px 18px 12px;border-bottom:1px solid var(--line2)}
.modal-hd h3{margin:0;font-size:15px}
.modal-hd p{margin:3px 0 0;font-size:12px;color:var(--ink3)}
.modal-bd{padding:16px 18px;overflow-y:auto;font-size:13px;color:var(--ink2)}
.modal-ft{padding:12px 18px;border-top:1px solid var(--line2);display:flex;gap:8px;justify-content:flex-end;background:#fcfcfe}
.modal-ft .btn{padding:8px 14px}

/* 图片查看器 */
.viewer{display:grid;grid-template-columns:1.15fr .85fr;gap:18px}
@media (max-width:760px){.viewer{grid-template-columns:1fr}}
.viewer-stage{background:#0f172a;border-radius:12px;display:flex;align-items:center;justify-content:center;padding:14px;min-height:320px}
.viewer-stage img{max-width:100%;max-height:62vh;border-radius:8px;display:block}
.viewer-side .vs-row{display:flex;justify-content:space-between;font-size:12.5px;padding:7px 0;border-bottom:1px solid var(--line2)}
.viewer-side .vs-row span{color:var(--ink3)}
.vs-url{margin-top:14px}
.vs-url label{display:block;font-size:11.5px;color:var(--ink3);margin-bottom:5px}
.vs-url code{display:block;background:#f6f7fb;border:1px solid var(--line2);border-radius:7px;padding:8px;font-size:10.5px;color:var(--ink2);word-break:break-all;line-height:1.5}
.vs-url .btn{margin-top:7px}
.vs-nav{display:flex;align-items:center;gap:8px;margin-top:14px}
.vs-nav span{font-size:12px;color:var(--ink3);flex:1;text-align:center}
.vs-tip{font-size:11px;color:var(--ink3);margin-top:14px;line-height:1.6;background:#f8f9fc;padding:9px 11px;border-radius:8px}

/* 打印 */
@media print{
  .side,.topbar,.drawer-ft,#drawer .drawer-hd svg{display:none}
  .main{margin:0}
  #drawer{position:static}
  .drawer{width:100%;box-shadow:none;transform:none}
}

/* 查看器动作区（真实附件：再传 / 换图 / 删除） */
.vs-act{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
.vs-act .btn{flex:1;min-width:82px;white-space:nowrap}

/* 附件图片丢失兜底（ui.js 全局替换） */
.img-broken-tip{display:flex;align-items:center;justify-content:center;text-align:center;
  width:100%;min-height:72px;padding:10px;border-radius:8px;
  background:#f8f9fc;border:1px dashed var(--line);color:var(--ink3);font-size:12px;line-height:1.5}
.viewer-stage .img-broken-tip{background:#1e293b;border-color:#334155;color:#94a3b8;min-height:200px}

/* ============ 中控端登录层（/admin 独立入口） ============ */
.lg{
  position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;
  padding:40px 24px;background:#f2f4f8;
  background-image:radial-gradient(circle at 20% 0%,#fff 0%,transparent 50%),radial-gradient(circle at 85% 10%,#e8edfb 0%,transparent 50%);
  overflow-y:auto;
}
.lg[hidden]{display:none}
.lg-box{width:100%;max-width:380px;margin:auto;background:#fff;border:1px solid var(--line2);
  border-radius:18px;padding:30px 28px 26px;box-shadow:0 26px 60px -34px rgba(15,23,42,.4)}
.lg-logo{
  width:48px;height:48px;border-radius:14px;display:grid;place-items:center;
  background:linear-gradient(140deg,#4c6bf0,#2f47a8);color:#fff;font-size:20px;font-weight:600;
  box-shadow:0 12px 26px -14px rgba(60,90,220,.9);margin-bottom:16px;
}
.lg h2{margin:0;font-size:20px;letter-spacing:-.3px}
.lg-sub{margin:6px 0 20px;font-size:12.5px;color:var(--ink3);line-height:1.6}
.lg label{display:block;font-size:12px;color:var(--ink3);margin-bottom:13px}
.lg input{
  display:block;width:100%;margin-top:6px;padding:11px 12px;font-size:14px;
  border:1px solid var(--line2);border-radius:10px;outline:0;background:#fbfbfd;color:var(--ink);
}
.lg input:focus{border-color:#9fb0ee;background:#fff;box-shadow:0 0 0 3px rgba(59,91,219,.1)}
.lg-err{color:#dc2626;font-size:12px;min-height:17px;margin:-3px 0 8px;line-height:1.5}
.lg-btn{
  width:100%;padding:12px;border:0;border-radius:10px;font-size:14px;font-weight:500;
  background:#3b5bdb;color:#fff;font-family:inherit;cursor:pointer;
}
.lg-btn:hover{background:#2f47a8}
.lg-btn[disabled]{opacity:.6}
.lg-alt{display:block;margin-top:16px;text-align:center;font-size:12px;color:#3b5bdb;text-decoration:none}
.lg-alt:hover{text-decoration:underline}

/* 密码框：显示/隐藏 */
.lg .pw-wrap{position:relative;display:block;margin-top:6px}
.lg .pw-wrap input{margin-top:0;padding-right:60px}
.pw-eye{
  position:absolute;right:6px;top:50%;transform:translateY(-50%);
  padding:5px 10px;border-radius:7px;font-size:12px;line-height:1;
  color:#3b5bdb;background:transparent;border:0;cursor:pointer;font-family:inherit;
}
.pw-eye:hover{background:#eef1fd}

/* 版本行（设置页底部） */
.verline{font-size:11.5px;color:var(--ink3);margin:12px 0 0;padding-top:10px;border-top:1px solid var(--line2)}
.verline i{display:inline-block;font-style:normal;margin-left:8px;color:#c2410c;background:#fff7ed;
  border:1px solid #fed7aa;border-radius:7px;padding:2px 8px}
