:root{--bg:#f2f2f0;--surface:#fff;--soft:#f7f7f5;--line:#dfdfda;--line2:#ececE8;--text:#1f2124;--text2:#44484e;--muted:#6b7077;--brand:#c0312b;--ok:#14794d;--ok-soft:#e5f4ed;--warn:#9a5b00;--warn-soft:#fdf1dc;--bad:#b3261e;--bad-soft:#fce9e7;--side:#26282c}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--text);font:15px/1.5 -apple-system,"PingFang SC","Microsoft YaHei","Noto Sans SC",sans-serif}
button,input,select,textarea{font:inherit;color:inherit}
a{color:inherit;text-decoration:none}
.num{font-variant-numeric:tabular-nums;white-space:nowrap}
.shell{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100%}
.side{background:var(--side);color:#e8e8e4;padding:0 0 16px}
.logo{height:64px;display:flex;align-items:center;padding:0 20px;font-size:18px;font-weight:700;border-bottom:1px solid #3a3d42}
.logo i{font-style:normal;color:#f0857f}
.gl{font-size:13px;color:#a0a4aa;padding:16px 20px 6px}
.nav{display:block;height:42px;line-height:42px;padding:0 20px;border-left:3px solid transparent;color:#d8d8d3}
.nav:hover{background:#31343a}
.nav.on{background:#393c42;color:#fff;border-left-color:#ef6b63;font-weight:600}
.work{min-width:0}
.top{min-height:64px;background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:8px 24px;flex-wrap:wrap}
.top small{color:var(--muted);font-size:13px;display:block;line-height:1.2}
.top b{font-size:20px;line-height:1.25}
.who{color:var(--text2)}
.grow{flex:1}
.main{padding:16px 24px 28px;max-width:1680px}
.btn{display:inline-block;height:36px;line-height:34px;padding:0 14px;border:1px solid #c9c9c3;border-radius:5px;background:var(--surface);cursor:pointer;white-space:nowrap;text-align:center}
.btn:hover{background:var(--soft)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.pri{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.pri:hover{background:#a82a25}
.btn.dan{color:var(--bad);border-color:#e0a5a1}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:12px}
.stats.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:12px 16px}
.stat span{color:var(--text2)}
.stat b{display:block;font-size:28px;line-height:1.3}
.stat small{color:var(--muted);font-size:13px}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:16px;margin-bottom:12px;min-width:0}
.panel h2{font-size:17px;margin:0 0 10px}
.panel p{margin:6px 0}
.tool{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.tool input,.tool select,.form input,.form select,.form textarea,.field{height:36px;padding:0 10px;border:1px solid #c9c9c3;border-radius:5px;background:var(--surface)}
.field{width:130px}
.scroll{overflow-x:auto}
table{width:100%;border-collapse:collapse}
th{font-size:14px;color:var(--text2);text-align:left;background:var(--soft);padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:4px 10px;height:44px;border-bottom:1px solid var(--line2);white-space:nowrap}
td.wrap{white-space:normal;min-width:220px}
.tag{display:inline-block;padding:0 8px;height:24px;line-height:24px;border-radius:4px;font-size:13px;font-weight:600;white-space:nowrap}
.tag.ok{background:var(--ok-soft);color:var(--ok)}.tag.warn{background:var(--warn-soft);color:var(--warn)}.tag.bad{background:var(--bad-soft);color:var(--bad)}.tag.off{background:var(--line2);color:var(--muted)}
.note{background:var(--soft);border:1px solid var(--line);border-left:3px solid var(--brand);padding:8px 12px;margin-bottom:12px;color:var(--text2);border-radius:4px}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:12px}
.tab{height:40px;line-height:40px;padding:0 16px;border-bottom:3px solid transparent;color:var(--text2);font-weight:600}
.tab.on{color:var(--text);border-bottom-color:var(--brand)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:12px}
.src{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:12px 14px}
.src h3{font-size:16px;margin:0 0 6px;display:flex;justify-content:space-between;align-items:center}
.src dl{display:grid;grid-template-columns:88px minmax(0,1fr);gap:2px 8px;margin:0 0 10px}
.src dt{color:var(--muted)}.src dd{margin:0;overflow-wrap:anywhere}
.src .ops{display:flex;gap:8px}
.sw{display:inline-block;width:38px;height:20px;border-radius:10px;background:#bdbdb7;position:relative;border:0;cursor:pointer;vertical-align:middle}
.sw::after{content:"";position:absolute;width:16px;height:16px;left:2px;top:2px;background:#fff;border-radius:50%}
.sw.on{background:var(--ok)}.sw.on::after{left:20px}
.sw:disabled{opacity:.5;cursor:not-allowed}
.form{display:grid;grid-template-columns:130px minmax(0,820px);gap:12px;align-items:start}
.form>label{padding-top:7px;color:var(--text2);font-weight:600}
.form input,.form textarea,.form select{width:100%}
.form textarea{height:84px;padding:8px 10px}
.hint{color:var(--muted);font-size:13px;margin-top:3px}
.logo-thumb{display:block;height:40px;max-width:180px;object-fit:contain;background:var(--soft)}
.form td input{min-width:220px}
.form td input.h-input{min-width:0;width:90px}
.file{cursor:pointer}
.actions{margin-top:16px;display:flex;gap:8px}
.alert{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line2);flex-wrap:wrap}
.alert:last-child{border-bottom:0}
.alert time{color:var(--muted);font-size:13px}
.pager{display:flex;gap:10px;align-items:center;justify-content:center;margin-top:12px}
.raw{display:flex;gap:4px;flex-wrap:wrap;margin:8px 0}
.raw span{min-width:30px;height:28px;line-height:26px;text-align:center;border:1px solid var(--line);border-radius:4px;background:var(--soft);font-weight:600}
.secret{font-size:18px;letter-spacing:1px;white-space:normal;overflow-wrap:anywhere}
.mask{position:fixed;inset:0;background:rgba(0,0,0,.45);display:grid;place-items:center;z-index:20;padding:16px}
.dlg{background:var(--surface);border-radius:8px;padding:20px;width:480px;max-width:100%}
.dlg h2{font-size:17px;margin:0 0 10px}
.dlg-warn{background:var(--warn-soft);color:var(--warn);padding:8px 10px;border-radius:4px;margin-top:10px}
.toast{position:fixed;top:18px;left:50%;transform:translateX(-50%);z-index:30;padding:9px 18px;border-radius:6px;background:#1f2124;color:#fff;max-width:90%}
.toast.err{background:var(--bad)}
.login-body{display:grid;place-items:center;padding:16px;background:#26282c}
.login{background:var(--surface);border-radius:8px;padding:28px;width:360px;max-width:100%;display:grid;gap:14px}
.login h1{font-size:20px;margin:0 0 4px;text-align:center}
.login label{display:grid;gap:4px;color:var(--text2);font-weight:600}
.login input{height:40px;padding:0 10px;border:1px solid #c9c9c3;border-radius:5px}
.login .btn{height:42px}
.login-err{color:var(--bad)}
@media (max-width:900px){.shell{grid-template-columns:minmax(0,1fr)}.side{display:flex;flex-wrap:wrap;padding:4px}.logo,.gl{display:none}.nav{height:36px;line-height:36px;padding:0 10px;border-left:0}.stats,.stats.three{grid-template-columns:repeat(2,minmax(0,1fr))}.form{grid-template-columns:minmax(0,1fr)}.form>label{padding-top:0}.top{padding:8px 12px}.main{padding:12px}.grid{grid-template-columns:minmax(0,1fr)}}
