/* Copyright (c) 2026 zenitudeserenity — 全部本地，不引 CDN，断网也要能打开 */
:root{--bg:#0f1115;--card:#181b22;--fg:#e6e8ee;--dim:#8a92a6;--line:#262b36;
      --ok:#3fb950;--warn:#d29922;--err:#f85149;--acc:#58a6ff}
@media(prefers-color-scheme:light){:root{--bg:#f6f7f9;--card:#fff;--fg:#1c2028;
      --dim:#66707f;--line:#e3e6ea}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);
     font:14px/1.6 "Noto Sans CJK SC","Microsoft YaHei",system-ui,sans-serif}
header{display:flex;align-items:center;gap:12px;padding:14px 20px;
       border-bottom:1px solid var(--line);background:var(--card)}
header h1{font-size:16px;margin:0}
header .sp{flex:1}
a{color:var(--acc);text-decoration:none}
main{padding:20px;max-width:1200px;margin:0 auto}
section{background:var(--card);border:1px solid var(--line);border-radius:10px;
        padding:16px;margin-bottom:18px}
section h2{font-size:14px;margin:0 0 12px;color:var(--dim);font-weight:600}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{text-align:left;padding:7px 10px;border-bottom:1px solid var(--line)}
th{color:var(--dim);font-weight:600}
tr:last-child td{border-bottom:none}
.tag{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px}
.t-ok{background:rgba(63,185,80,.15);color:var(--ok)}
.t-run{background:rgba(88,166,255,.15);color:var(--acc)}
.t-warn{background:rgba(210,153,34,.15);color:var(--warn)}
.t-err{background:rgba(248,81,73,.15);color:var(--err)}
.dim{color:var(--dim)}
.empty{color:var(--dim);padding:12px 0}
.login{max-width:340px;margin:14vh auto;text-align:center}
input[type=password]{width:100%;padding:10px;border-radius:8px;border:1px solid var(--line);
     background:var(--bg);color:var(--fg);font-size:14px}
button{margin-top:10px;width:100%;padding:10px;border:0;border-radius:8px;
       background:var(--acc);color:#04101f;font-size:14px;font-weight:600;cursor:pointer}
.err{color:var(--err);margin-top:8px}
audio{width:100%;max-width:320px}
/* ---- 设置页 ---- */
[hidden]{display:none!important}
header a+a{margin-left:4px}
header h1 a.home{color:var(--fg)}
main.narrow{max-width:720px}
.desc{margin:-4px 0 14px;font-size:13px}
code{font-family:ui-monospace,"JetBrains Mono",monospace;font-size:12px;
     background:var(--bg);padding:1px 6px;border-radius:4px}
.card-note{padding:12px 14px;margin-bottom:16px;border-radius:8px;font-size:13px;
           border:1px solid var(--line)}
.card-note.good{border-color:var(--ok);background:rgba(63,185,80,.08)}
.card-note.warn{border-color:var(--warn);background:rgba(210,153,34,.08);color:var(--warn)}
.card-note.bad{border-color:var(--err);background:rgba(248,81,73,.08);color:var(--err)}
.card-note.info{border-color:rgba(88,166,255,.35);background:rgba(88,166,255,.06);color:var(--dim);font-size:12px}
.card-note .kv{display:flex;gap:8px;margin-top:4px}
.card-note .kv>span:first-child{width:48px;flex-shrink:0}
.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.row .sp{flex:1}
.field{display:block;margin-bottom:14px}
.field>span:first-child{display:block;font-size:12px;font-weight:600;color:var(--dim);margin-bottom:4px}
.field input{width:100%;padding:8px 10px;border-radius:8px;border:1px solid var(--line);
     background:var(--bg);color:var(--fg);font-size:14px}
.field input[type=radio],.field input[type=checkbox]{width:auto;padding:0}
#plugin-state{display:block;margin:-4px 0 14px}
.field input.grow{flex:1;width:auto;min-width:0}
.field input.short{width:100px}
.field small{display:block;margin-top:4px;font-size:12px}
.row small{margin-top:0}
label.inline{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:13px}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}
.actions button,.row button{width:auto;margin-top:0;padding:8px 18px}
button.success{background:var(--ok)}
button.ghost{background:transparent;color:var(--fg);border:1px solid var(--line)}
button:disabled{opacity:.5;cursor:not-allowed}
.ok-text{color:var(--ok);font-size:12px}
.warn-text{color:var(--warn);font-size:12px}
.job-title{font-size:12px;font-weight:600;color:var(--dim);margin:18px 0 4px;display:flex;align-items:center;gap:6px}
.log{height:240px;overflow-y:auto;padding:10px 12px;background:#0b0d11;color:#d4d4d8;
     border:1px solid var(--line);border-radius:8px;font:11px/1.6 ui-monospace,monospace;
     white-space:pre-wrap;word-break:break-all}
.log .l-err{color:#ef4444}.log .l-ok{color:#22c55e}.log .l-warn{color:#f59e0b}.log .l-cmd{color:#a78bfa}
.pulse{width:8px;height:8px;border-radius:50%;background:var(--err);animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{50%{opacity:.3}}
