:root{--bg:#f4f6f9;--card:#fff;--line:#e3e8ef;--txt:#1f2d3d;--muted:#8492a6;--pri:#1565c0;--pri-d:#0d47a1;--up:#c62828;--down:#2e7d32}
*{box-sizing:border-box}
body{margin:0;font-family:"Microsoft YaHei","PingFang SC",-apple-system,sans-serif;background:var(--bg);color:var(--txt)}
.nav{background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:9}
.nav-in{max-width:1180px;margin:0 auto;display:flex;align-items:center;gap:22px;padding:10px 18px}
.brand{font-weight:700;color:var(--pri-d);text-decoration:none;font-size:17px}
.nav-links{display:flex;align-items:center;gap:16px;margin-left:auto;flex-wrap:wrap}
.nav-links a{color:var(--txt);text-decoration:none;font-size:14px}
.nav-links a:hover{color:var(--pri)}
.nav-links .me{font-size:13px;color:var(--muted);background:#eef2f7;padding:3px 10px;border-radius:20px}
.nav-links .logout{color:var(--up)}
.wrap{max-width:1180px;margin:24px auto;padding:0 18px}
h2{margin:6px 0 4px}
.tip{color:var(--muted);font-size:13.5px;margin-top:0}
.foot{max-width:1180px;margin:40px auto 20px;padding:0 18px;color:var(--muted);font-size:12px;text-align:center}
.flash{padding:11px 14px;border-radius:8px;margin:10px 0;font-size:14px}
.flash.ok{background:#e8f5e9;color:#2e7d32;border:1px solid #c8e6c9}
.flash.err{background:#ffebee;color:#c62828;border:1px solid #ffcdd2}
.btn{display:inline-block;background:#eef2f7;border:1px solid var(--line);color:var(--txt);padding:8px 16px;border-radius:8px;font-size:14px;cursor:pointer;text-decoration:none}
.btn:hover{background:#e2e8f0}
.btn.primary{background:var(--pri);border-color:var(--pri);color:#fff}
.btn.primary:hover{background:var(--pri-d)}
.btn.danger{background:#ffebee;border-color:#ffcdd2;color:#c62828}
.btn.big{padding:11px 26px;font-size:15px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-top:16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px;text-decoration:none;color:var(--txt);transition:.15s;display:block}
.card:hover{border-color:var(--pri);box-shadow:0 4px 14px rgba(21,101,192,.10);transform:translateY(-2px)}
.card.ghost{opacity:.62;cursor:default}
.card h3{margin:8px 0 6px;font-size:17px}
.card p{color:var(--muted);font-size:13.5px;margin:0 0 10px}
.card .go{color:var(--pri);font-size:13px;font-weight:600}
.badge{display:inline-block;background:#e3f2fd;color:var(--pri-d);font-size:12px;padding:2px 10px;border-radius:20px}
.badge.gray{background:#eceff1;color:#607d8b}
.panel{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:20px;margin-top:18px}
.panel h4{margin:0 0 14px}
.panel.note ul{margin:0;padding-left:20px;color:var(--muted);font-size:13.5px;line-height:1.9}
.row{margin-bottom:16px}
.row label{display:block;font-size:13.5px;font-weight:600;margin-bottom:6px}
.row input[type=text],.row input[type=password],.row input[type=file],.row select{padding:9px 11px;border:1px solid var(--line);border-radius:8px;font-size:14px;background:#fff}
.row input[type=text],.row input[type=password]{width:100%;max-width:420px}
.hint{color:var(--muted);font-size:12.5px;margin:6px 0 0;word-break:break-all}
table{width:100%;border-collapse:collapse;font-size:13.5px;margin-top:12px}
th,td{border:1px solid var(--line);padding:8px 10px;text-align:left}
th{background:#f7f9fc;font-weight:600}
.muted{color:var(--muted)}
.up{color:var(--up)}.down{color:var(--down)}
.stat{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px}
.stat h4{margin:0 0 8px;color:var(--muted);font-size:13px}
.stat p{margin:4px 0}
.act{padding:2px 8px;border-radius:6px;background:#eef2f7;font-size:12.5px}
.act.登录成功{background:#e8f5e9;color:#2e7d32}
.act.登录失败{background:#ffebee;color:#c62828}
.act.下载{background:#e3f2fd;color:#1565c0}
.detail{max-width:420px;word-break:break-all}
.search{display:flex;gap:10px;margin-top:16px}
.search input{flex:1;max-width:420px;padding:9px 11px;border:1px solid var(--line);border-radius:8px}
.inline-form{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.inline-form input,.inline-form select{padding:8px 11px;border:1px solid var(--line);border-radius:8px;font-size:14px}
.del-form{display:inline}
.st{display:inline-block;font-size:12.5px;padding:2px 10px;border-radius:20px}
.st.ok{background:#e8f5e9;color:#2e7d32}
.st.off{background:#eceff1;color:#607d8b}
.ops{white-space:nowrap}
.ops .del-form{margin-right:6px}
.row-off td{color:#8492a6}
.login-box{max-width:400px;margin:70px auto;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:34px;text-align:center}
.login-box h1{margin:0;font-size:21px}
.login-box .sub{color:var(--muted);font-size:13.5px;margin:8px 0 22px}
.login-box input{width:100%;padding:11px 13px;margin-bottom:14px;border:1px solid var(--line);border-radius:8px;font-size:14px}
.center-box{text-align:center;padding:70px 0}
.center-box h1{font-size:56px;margin:0;color:var(--pri)}
pre.log{background:#f7f9fc;border:1px solid var(--line);border-radius:8px;padding:12px;font-size:12px;overflow:auto;white-space:pre-wrap}
code{background:#eef2f7;padding:2px 7px;border-radius:6px;font-size:13px}
.badge.ok{background:#e8f5e9;color:#2e7d32}
.badge.wait{background:#fff3e0;color:#e65100}
.panel.next-step{border-color:#a5d6a7;background:#f1f8e9}
.panel.next-step h4{color:#2e7d32}
.grid.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin-top:16px}
/* 操作流程页 */
h3.sec{margin:26px 0 4px;font-size:16px;border-left:4px solid var(--pri);padding-left:10px}
.flow{margin:14px 0 8px}
.flow .step{display:flex;gap:14px;position:relative;padding-bottom:18px}
.flow .step:not(:last-child)::after{content:"";position:absolute;left:15px;top:34px;bottom:0;width:2px;background:#cdd8e4}
.flow .dot{flex:0 0 32px;height:32px;border-radius:50%;background:var(--pri);color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;font-size:14px;z-index:1}
.flow .body{flex:1;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.flow .body h4{margin:0 0 6px;font-size:15px}
.flow .body p{margin:4px 0;font-size:13.5px;color:#3c4c5e;line-height:1.7}
.flow .body .out{margin-top:8px;font-size:12.5px;color:var(--muted);background:#f7f9fc;border-radius:8px;padding:7px 10px}
.flow.detail .dot{background:#2e7d32}
.tag{display:inline-block;font-size:11.5px;padding:1px 8px;border-radius:12px;margin-left:6px;vertical-align:middle;font-weight:400}
.tag.auto{background:#e3f2fd;color:#1565c0}
.tag.manual{background:#fff3e0;color:#e65100}
