:root{
  --bg:#0f1419; --panel:#1a2230; --panel2:#222c3d; --line:#2d3a4f;
  --text:#e6edf3; --muted:#8b98a9; --accent:#4f9dff; --accent2:#34d399;
  --red:#f87171; --green:#34d399; --yellow:#fbbf24; --purple:#a78bfa;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,"Segoe UI",Roboto,"Microsoft YaHei",sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5}
/* ============ 左侧栏 + 主区 骨架 ============ */
.shell{display:flex;height:100vh;overflow:hidden}
.side{width:236px;flex:0 0 236px;display:flex;flex-direction:column;background:#121a23;border-right:1px solid var(--line)}
.side-head{padding:14px 14px 10px;flex:0 0 auto}
.side-brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:15px;min-width:0}
.side-logo{font-size:17px;flex:0 0 auto}
.side-title{color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-ver{font-size:11px;color:var(--muted);margin-top:3px;padding-left:25px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-nav{flex:1 1 auto;overflow-y:auto;padding:2px 8px 12px}
.side-sec{display:flex;align-items:center;justify-content:space-between;font-size:11px;letter-spacing:.5px;color:var(--muted);padding:10px 8px 6px;cursor:pointer;user-select:none}
.side-sec:hover{color:var(--text)}
.side-sec::after{content:'⌄';font-size:12px;opacity:.65;transition:transform .15s}
.side-sec.closed::after{transform:rotate(-90deg)}
.side-sec.nav-dim{display:none!important}
.side-list{display:flex;flex-direction:column;gap:2px}
.side-list.closed{display:none}
/* 整段硬隐藏：本实例未开通的系统（例：财务系统）对应的分组标题 + 菜单一起收起。
   用 !important 压住顶部搜索的 filterNav —— 它是靠写 style.display='' 把分组翻出来的，
   没开通就是没开通，搜也不该搜出一堆点不动的财务菜单（app.js applySystemVisibility 加这个 class）。 */
.side-sec.group-off,.side-list.group-off{display:none!important}
/* 导航项：图标 + 名称，选中时左侧一条高亮竖条 */
.nav-btn{position:relative;display:flex;align-items:center;gap:9px;width:100%;background:transparent;border:none;color:var(--muted);padding:7px 10px;border-radius:8px;cursor:pointer;font-size:13.5px;text-align:left;font-family:inherit}
.nav-btn .ic{flex:0 0 18px;width:18px;text-align:center;font-size:14px}
.nav-btn .lb{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav-btn:hover{color:var(--text);background:rgba(255,255,255,.05)}
.nav-btn.active{color:#fff;background:rgba(79,157,255,.16)}
.nav-btn.active::before{content:'';position:absolute;left:-8px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--accent)}
.nav-btn.nav-dim{display:none!important}
/* 平台模式：左侧「公司与系统」列表里的在线状态点 + 空态提示 */
.nav-btn .st{flex:0 0 auto;width:6px;height:6px;border-radius:50%}
.side-tip{color:var(--muted);font-size:11.5px;line-height:1.6;padding:2px 10px 8px}
#nav.nav-searching .side-list.closed{display:flex}
.side-foot{flex:0 0 auto;border-top:1px solid var(--line);padding:10px}
.userbar{display:flex;flex-direction:column;gap:8px;color:var(--muted)}
.userbar .ub-row{display:flex;align-items:center;gap:9px;min-width:0}
.userbar .ub-avatar{flex:0 0 30px;width:30px;height:30px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}
.userbar .ub-txt{display:flex;flex-direction:column;min-width:0;line-height:1.3}
.userbar .uname{color:var(--text);font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.userbar .role{color:var(--muted);font-size:11px}
.userbar .ub-btns{display:flex;gap:6px}
.userbar .ub-btns .btn{flex:1 1 0;white-space:nowrap}
.main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;overflow:hidden}
.topbar{display:flex;align-items:center;gap:14px;padding:9px 20px;min-height:56px;background:var(--panel);border-bottom:1px solid var(--line);flex:0 0 auto}
.tb-title{font-weight:700;font-size:15px;white-space:nowrap;flex:0 0 auto}
.tb-search{flex:1 1 auto;min-width:160px;max-width:440px;display:flex;align-items:center;gap:8px;background:var(--panel2);border:1px solid var(--line);border-radius:9px;padding:0 10px;margin:0 auto}
.tb-search-ic{font-size:12px;opacity:.7}
.tb-search input{background:transparent;border:none;padding:8px 0;font-size:13px;width:100%}
.tb-search input:focus{outline:none}
.tb-actions{margin-left:auto;display:flex;gap:8px;align-items:center;flex:0 0 auto}
#app{flex:1 1 auto;overflow-y:auto;padding:18px 22px 30px;width:100%;max-width:1240px;margin:0 auto}
.brand{font-weight:700;font-size:16px;color:var(--accent);white-space:nowrap;flex:0 0 auto}
.tab{display:none}
.tab.active{display:block}
h2{font-size:18px;margin-bottom:14px}
h3{font-size:15px;margin:16px 0 10px;color:var(--muted)}
.btn{background:var(--accent);color:#fff;border:none;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:13px}
.btn:hover{filter:brightness(1.1)}
.btn:disabled{opacity:.6;cursor:not-allowed;filter:none}
.btn.gray{background:var(--panel2);color:var(--text)}
.btn.green{background:var(--green)}
.btn.red{background:var(--red)}
.btn.sm{padding:5px 10px;font-size:12px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px}
.card .k{color:var(--muted);font-size:13px}
.card .v{font-size:24px;font-weight:700;margin-top:6px}
.card .v.green{color:var(--green)} .card .v.red{color:var(--red)} .card .v.accent{color:var(--accent)}
table{width:100%;border-collapse:collapse;background:var(--panel);border-radius:10px;overflow:hidden}
th,td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--line);font-size:13px}
th{background:var(--panel2);color:var(--muted);font-weight:600}
tr:hover td{background:var(--panel2)}
.tag{display:inline-block;padding:2px 8px;border-radius:6px;font-size:12px}
.tag.ok{background:rgba(52,211,153,.15);color:var(--green)}
.tag.wait{background:rgba(251,191,36,.15);color:var(--yellow)}
.tag.no{background:rgba(248,113,113,.15);color:var(--red)}
.tag.info{background:rgba(79,157,255,.15);color:var(--accent)}
.tag.wms{background:rgba(99,102,241,.16);color:#a5b4fc;border:1px solid rgba(129,140,248,.4)}
.lnk{color:var(--accent);text-decoration:none;border-bottom:1px dashed var(--accent);cursor:pointer}
.lnk:hover{opacity:.8}
input,select,textarea{background:var(--panel2);border:1px solid var(--line);color:var(--text);padding:8px 10px;border-radius:8px;font-size:13px;width:100%}
/* 勾选框/单选框不要被上面的 width:100% 撑满，保持与文案同一行 */
input[type=checkbox],input[type=radio]{width:auto;padding:0;margin:0 7px 0 0;vertical-align:middle;accent-color:var(--accent)}
label{display:block;color:var(--muted);font-size:12px;margin:8px 0 4px}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:50}
.modal.hidden,.hidden{display:none}
/* 弹窗骨架：头部（标题 + 常驻说明）不滚动，只有内容区滚动 —— 长弹窗滚到底部时也知道自己在改哪个账号 */
.modal-box{background:var(--panel);border:1px solid var(--line);border-radius:14px;width:min(560px,92vw);max-height:88vh;display:flex;flex-direction:column;overflow:hidden}
.modal-head{flex:0 0 auto;display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line);font-weight:600}
.modal-lead{flex:0 0 auto;padding:14px 18px 0;font-size:12px;color:var(--muted);line-height:1.6}
.modal-lead.hidden{display:none}
.modal-body{flex:1 1 auto;min-height:0;overflow:auto;padding:18px}
#modal-close{background:none;border:none;color:var(--muted);font-size:16px;cursor:pointer}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--panel2);border:1px solid var(--line);padding:10px 18px;border-radius:10px;z-index:99}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.muted{color:var(--muted)}
.bar{height:8px;background:var(--panel2);border-radius:6px;overflow:hidden;margin-top:6px}
.bar>i{display:block;height:100%;background:var(--accent)}
.sub{font-size:12px;color:var(--muted);margin-bottom:10px}
/* 登录 */
.login{position:fixed;inset:0;background:var(--bg);display:flex;align-items:center;justify-content:center;z-index:100}
.login.hidden{display:none}
.login-box{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:28px;width:min(360px,92vw)}
/* 登录失败原因常驻提示：toast 会淡出，这条留在表单里（见 app.js setLoginErr） */
.login-err{margin-top:12px;padding:9px 11px;border-radius:9px;font-size:12.5px;line-height:1.55;color:#ffb4b4;background:rgba(248,113,113,.13);border:1px solid rgba(248,113,113,.45);text-align:left;word-break:break-word}
/* 登录页「免费开通试用」入口：用琥珀橙与蓝色登录按钮区分开，引导点击（此前与按钮同色系、不够跳） */
.wechat-btn{background:#07c160;color:#fff;border:1px solid #06ad56}
.wechat-btn:hover{background:#06ad56}
.lg-trial-link{color:#ffa940;font-weight:700;text-decoration:none;border-bottom:1px dashed rgba(255,169,64,.55);padding-bottom:1px;transition:color .15s,border-color .15s}
.lg-trial-link:hover{color:#ffc069;border-bottom-color:#ffc069}
/* 账号区（样式见上方「左侧栏」段：头像 + 姓名/角色 + 按钮） */
/* 图表 */
.chart{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:14px}
.chart svg{width:100%;height:auto;display:block}
.inv-msg{font-size:12px;margin-top:4px}
.inv-msg.ok{color:var(--green)} .inv-msg.bad{color:var(--red)}
.hidden{display:none!important}
/* 分仓库存成本明细（可折叠） */
.wh-cost{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin-bottom:8px}
.wh-cost>summary{cursor:pointer;font-weight:600;color:var(--text)}
.wh-cost>summary::marker{color:var(--accent)}
.wh-cost table{margin-top:8px}
/* 统一工作台 */
.portal{max-width:980px;margin:0 auto;padding:24px 8px}
.portal-head h2{margin:8px 0 2px;font-size:22px}
.portal-head .sub{margin:0 0 18px;color:var(--muted)}
.portal-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px}
.pcard{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px;display:flex;flex-direction:column;gap:10px;transition:transform .12s,border-color .12s}
.pcard:hover{transform:translateY(-3px);border-color:var(--accent)}
.pcard-ico{font-size:34px;line-height:1}
.pcard h3{margin:4px 0;font-size:18px}
.pcard p{margin:0;color:var(--muted);font-size:13px;line-height:1.6;flex:1}
.pcard .btn{margin-top:6px;align-self:flex-start}
/* 门户角色徽标：把「权限怎么分配」直接标在卡片上 */
.pbadge{align-self:flex-start;display:inline-block;padding:3px 9px;border-radius:999px;font-size:12px;line-height:1.5;border:1px solid var(--line);color:var(--muted);background:rgba(255,255,255,.04)}
.pbadge.ok{border-color:rgba(63,185,80,.55);color:#3fb950;background:rgba(63,185,80,.12)}
.pbadge.warn{border-color:rgba(210,153,34,.55);color:#d29922;background:rgba(210,153,34,.12)}
.pcard .caps{flex:none;font-size:12px;color:var(--muted);opacity:.85}
.portal-foot{margin-top:16px;font-size:12px;color:var(--muted);text-align:center}
/* 工作台「列表方式」：每个系统一行（图标 / 名称+角色徽标 / 说明 / 权限 / 操作），不再并排卡片 */
.portal .pwho{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 18px}
.plist{display:flex;flex-direction:column;gap:12px}
.prow{display:flex;gap:16px;align-items:flex-start;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px 18px;transition:border-color .12s}
.prow:hover{border-color:var(--accent)}
.prow-ico{flex:0 0 auto;width:46px;height:46px;display:flex;align-items:center;justify-content:center;font-size:26px;line-height:1;border-radius:12px;background:rgba(255,255,255,.04);border:1px solid var(--line)}
.prow-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.prow-ttl{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.prow-ttl b{font-size:16px}
.prow-desc,.prow-meta{margin:0;color:var(--muted);line-height:1.6}
.prow-desc{font-size:13px}
.prow-meta{font-size:12px;opacity:.88}
.prow-act{flex:0 0 auto;display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap;max-width:48%;align-self:center}
.prow-act .prow-hint{flex:1 1 100%;margin:0;text-align:left;font-size:12px}
.prow-dim{opacity:.72}
@media (max-width:760px){
  .prow{flex-wrap:wrap}
  .prow-act{max-width:100%;width:100%;justify-content:flex-start;align-self:auto}
}

/* 进销存内嵌视图（在统一工作台内直接使用 8899，无需另开标签页） */
.embed{display:flex;flex-direction:column;gap:10px}
.embed-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 14px}
.embed-ttl{font-weight:600;font-size:15px}
.embed-sp{flex:1}
.embed-frame{width:100%;height:calc(100vh - 210px);min-height:620px;border:1px solid var(--line);border-radius:12px;background:var(--panel)}
.embed-empty{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:44px 20px;display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}
.embed-empty h3{margin:0;font-size:18px;color:var(--text)}
.embed-empty .caps{color:var(--muted);font-size:13px;max-width:560px;line-height:1.7}
.embed-empty .row{justify-content:center;margin:6px 0 0}

/* 试用线索看板（整合进超级管理员后台「管理与设置 → 试用线索」） */
.trial-wrap{max-width:1180px;margin:0 auto;padding:18px}
.trial-wrap .warnbox{background:rgba(210,153,34,.12);border:1px solid rgba(210,153,34,.5);color:#d29922;border-radius:8px;padding:10px 12px;font-size:13px;margin-bottom:12px}
.trial-wrap .warnbox a{color:var(--accent)}
.trial-wrap .vchk{display:block;background:rgba(210,153,34,.1);border:1px solid rgba(210,153,34,.45);color:#d29922;border-radius:8px;padding:10px 12px;font-size:13px;margin-bottom:12px;cursor:pointer}
.trial-wrap .vchk input{margin-right:6px;vertical-align:middle}
.trial-wrap .bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.trial-wrap .hint{font-size:12px;color:var(--muted)}
.trial-wrap .hint a{color:var(--accent)}
.trial-table{width:100%;border-collapse:collapse;font-size:13px}
.trial-table th,.trial-table td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:top}
.trial-table th{color:var(--muted);font-weight:600;background:var(--panel2);position:sticky;top:0}
.trial-wrap .sys{display:inline-block;background:rgba(63,185,80,.14);color:#3fb950;font-size:11px;padding:1px 7px;border-radius:5px;margin:0 4px 4px 0}
.trial-wrap .malltag{display:inline-block;background:rgba(210,153,34,.14);color:#d29922;border:1px solid rgba(210,153,34,.4);font-size:11px;padding:1px 7px;border-radius:5px;margin:0 4px 4px 0}
.trial-wrap .empty{text-align:center;color:var(--muted);padding:40px 0}
.trial-wrap .st{display:inline-block;font-size:11px;padding:2px 8px;border-radius:10px;white-space:nowrap}
.trial-wrap .st-pending{background:rgba(210,153,34,.16);color:#d29922;border:1px solid rgba(210,153,34,.4)}
.trial-wrap .st-opened{background:rgba(63,185,80,.16);color:#3fb950;border:1px solid rgba(63,185,80,.4)}
.trial-wrap .st-failed{background:rgba(248,81,73,.16);color:#ff7b72;border:1px solid rgba(248,81,73,.4)}
.trial-wrap .st-rejected{background:var(--panel2);color:var(--muted);border:1px solid var(--line)}
.trial-wrap .st-promoted{background:rgba(88,166,255,.16);color:#58a6ff;border:1px solid rgba(88,166,255,.4)}
.trial-wrap .prov{display:inline-block;font-size:11px;color:var(--muted);background:var(--panel2);border-radius:4px;padding:1px 6px;margin-left:6px}
/* 勾选列：窄一点，别把操作列挤没了 */
.trial-wrap .chkcol{width:30px;text-align:center;padding-left:4px;padding-right:0}
.trial-wrap .chkcol input{cursor:pointer;vertical-align:middle}
.trial-wrap .bar>span:last-child button{margin-left:6px}
.trial-wrap tr.pending-row td{background:rgba(210,153,34,.06)}
.trial-wrap .acts button{padding:5px 10px;font-size:12px;margin:0 4px 4px 0;border:none;border-radius:8px;cursor:pointer}
.trial-wrap .acts button.ok{background:#0f6e56;color:#fff}
.trial-wrap .acts button.no{background:transparent;color:#ff7b72;border:1px solid rgba(248,81,73,.5)}
.trial-wrap .acts button.gray{background:var(--panel2);color:var(--muted)}
code.uscc{font-family:ui-monospace,Consolas,monospace;font-size:12px;letter-spacing:.4px;user-select:all}

/* ============ 附件（采购/销售/报销 自定义上传文档） ============ */
.file-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.file-row{display:flex;align-items:center;gap:8px;background:var(--panel2);border:1px solid var(--line);border-radius:9px;padding:5px 10px}
.file-ico{flex:0 0 auto}
.file-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.file-size{flex:0 0 auto;color:var(--muted);font-size:12px}
.file-row .btn{flex:0 0 auto}
.up-box{background:var(--panel2);border:1px dashed var(--line);border-radius:10px;padding:10px}
.up-box input[type=file]{background:transparent;border:none;padding:0;font-size:12px;min-width:180px}

/* ============ 利润测算台 ============ */
.pf-sec{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:14px}
.pf-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.pf-head b{font-size:15px}
.pf-head .pf-sp{flex:1 1 auto}
.pf-tbl input{width:100%;padding:6px 8px;font-size:13px}
.pf-tbl td,.pf-tbl th{padding:6px 8px}
.pf-tbl tfoot td{background:var(--panel2);font-weight:600}
.pf-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.pf-map{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin:10px 0}
.pf-prev{max-height:240px;overflow:auto;border:1px solid var(--line);border-radius:10px}
.pf-prev table{border-radius:0}
.pf-prev th,.pf-prev td{padding:6px 8px;font-size:12px;white-space:nowrap}
.pf-tip{font-size:12px;color:var(--muted);margin:6px 0 0}

/* 窄屏：左侧栏改为顶部横向导航条，主区自然滚动 */
@media (max-width:820px){
  .shell{flex-direction:column;height:auto;min-height:100vh;overflow:visible}
  .side{width:100%;flex:0 0 auto;border-right:none;border-bottom:1px solid var(--line)}
  .side-head{padding:10px 12px 6px}
  .side-nav{display:flex;flex-wrap:nowrap;align-items:center;gap:6px;overflow-x:auto;padding:6px 10px}
  .side-sec{flex:0 0 auto;padding:6px 8px}
  .side-sec::after{content:''}
  .side-list{display:flex!important;flex-direction:row;gap:6px;flex:0 0 auto}
  .side-list.closed{display:flex!important}
  .nav-btn{width:auto;white-space:nowrap;padding:6px 10px}
  .nav-btn.active::before{display:none}
  .side-foot{padding:8px 12px}
  .userbar{flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:wrap}
  .main{overflow:visible}
  #app{flex:0 0 auto;overflow:visible;padding:16px 14px 40px}
  .tb-search{max-width:none}
  .embed-frame{height:78vh}
}

/* ============ 报销超时提醒（与进销存 .aa-* 同款，适配财务深色变量） ============ */
.aa-tip{display:inline-block;margin-left:6px;padding:2px 8px;border-radius:10px;font-size:12px;line-height:1.6;
  background:rgba(79,157,255,.14);color:var(--accent);border:1px solid rgba(79,157,255,.35);white-space:nowrap;vertical-align:middle}
.aa-soon{background:rgba(251,191,36,.16);color:var(--yellow);border-color:rgba(251,191,36,.4)}
.aa-done{background:rgba(248,113,113,.14);color:var(--red);border-color:rgba(248,113,113,.35);opacity:.85}
.aa-flash{animation:aaPulse 1s ease 0 3}
@keyframes aaPulse{0%,100%{box-shadow:0 0 0 0 rgba(251,191,36,0)}50%{box-shadow:0 0 0 6px rgba(251,191,36,.28)}}
.aa-dock{position:fixed;right:16px;bottom:16px;z-index:1200;width:268px;max-width:calc(100vw - 32px);
  background:var(--panel2);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 28px rgba(0,0,0,.4);overflow:hidden}
.aa-dock-head{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;user-select:none;background:linear-gradient(180deg,rgba(248,113,113,.18),rgba(248,113,113,0))}
.aa-dock-bell{font-size:16px}
.aa-dock-title{font-size:13px;font-weight:600;color:var(--text);flex:1}
.aa-dock-arrow{font-size:12px;color:var(--muted)}
.aa-dock-list{max-height:260px;overflow:auto}
.aa-dock-item{padding:9px 12px;border-top:1px solid var(--line);cursor:pointer}
.aa-dock-item:hover{background:rgba(79,157,255,.08)}
.aa-dock-no{font-size:13px;color:var(--text)}
.aa-dock-sub{font-size:11px;color:var(--muted);margin-top:2px}
.aa-mute{opacity:.7}

/* ============ 密码强度工具条（新建/编辑账号、改密） ============ */
.pwd-meter{display:inline-block}
.pwd-req{font-size:12px;line-height:1.5}
.btn.sm{padding:5px 10px;font-size:12px}
.btn.gray{background:var(--panel);border:1px solid var(--line);color:var(--muted)}
.btn.gray:hover{border-color:var(--accent);color:var(--text)}
