/* ===== styles.css ===== */
:root{
  --bg:#0e1117; --bg2:#161b22; --line:#2d333b; --fg:#c9d1d9; --muted:#8b949e;
  --accent:#2f81f7; --good:#3fb950; --bad:#f85149; --warn:#d29922;
}
*{box-sizing:border-box}
body{margin:0;font:14px/1.5 ui-sans-serif,system-ui,Segoe UI,sans-serif;background:var(--bg);color:var(--fg)}
header{display:flex;justify-content:space-between;align-items:center;padding:14px 24px;border-bottom:1px solid var(--line);background:var(--bg2);position:sticky;top:0;z-index:5}
h1{margin:0;font-size:18px;font-weight:600}
h1 .dot{color:var(--accent)}
h1 em{color:var(--muted);font-style:normal;font-weight:400;margin-left:8px;font-size:13px}
main{padding:24px;display:grid;grid-template-columns:1fr;gap:18px}
.card{background:var(--bg2);border:1px solid var(--line);border-radius:8px;padding:16px}
.card h2{margin:0 0 12px;font-size:15px;display:flex;justify-content:space-between;align-items:center}
.card h2 small{color:var(--muted);font-weight:400;font-size:12px}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{color:var(--muted);font-weight:500}
tr:last-child td{border-bottom:none}
button{background:var(--bg);color:var(--fg);border:1px solid var(--line);padding:6px 12px;border-radius:5px;cursor:pointer;font-size:13px}
button:hover{border-color:var(--accent)}
button.primary{background:var(--accent);border-color:var(--accent);color:#fff}
button.primary:hover{background:#1f6feb}
button.danger{color:var(--bad);border-color:var(--bad)}
input,select{background:var(--bg);color:var(--fg);border:1px solid var(--line);padding:6px 8px;border-radius:5px;font-size:13px;width:100%}
label{display:block;margin-bottom:10px}
label > span{display:block;color:var(--muted);font-size:12px;margin-bottom:3px}
form{display:grid;gap:8px}
.hdr-right{display:flex;gap:8px}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:99}
.modal.hidden{display:none}
.modal-inner{background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:20px;min-width:420px;max-width:90vw}
.modal-inner.wide{min-width:80vw;max-height:80vh;overflow:auto}
.modal-inner h3{margin-top:0}
.actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
.pill{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;border:1px solid var(--line)}
.pill.up{background:rgba(63,185,80,.15);color:var(--good);border-color:rgba(63,185,80,.4)}
.pill.down{background:rgba(248,81,73,.15);color:var(--bad);border-color:rgba(248,81,73,.4)}
.pill.run{background:rgba(210,153,34,.15);color:var(--warn);border-color:rgba(210,153,34,.4)}
.pill.ok{background:rgba(63,185,80,.15);color:var(--good);border-color:rgba(63,185,80,.4)}
.pill.fail{background:rgba(248,81,73,.15);color:var(--bad);border-color:rgba(248,81,73,.4)}
pre{background:#010409;border:1px solid var(--line);border-radius:6px;padding:12px;white-space:pre-wrap;max-height:55vh;overflow:auto;font:12px/1.45 ui-monospace,Consolas,monospace}
.actions-row{display:flex;gap:4px;flex-wrap:wrap}
.role-tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;background:rgba(47,129,247,.15);color:var(--accent);border:1px solid rgba(47,129,247,.35)}
.btn-link{color:var(--accent);text-decoration:none;font-size:13px;padding:6px 12px;border:1px solid var(--accent);border-radius:5px;align-self:center}
.btn-link:hover{background:rgba(47,129,247,0.1)}
.btn-link.nav-bbs{background:rgba(47,129,247,.18);font-weight:600}
.btn-link.nav-bbs:hover{background:rgba(47,129,247,.28)}

/* capture toggle button */
.btn-capture{font-size:12px;padding:3px 10px;border-radius:12px;border:1px solid var(--line);background:var(--bg);color:var(--muted);cursor:pointer;transition:all .2s;min-width:62px}
.btn-capture:hover{border-color:var(--accent)}
.btn-capture.on{background:rgba(248,81,73,.18);color:#f85149;border-color:rgba(248,81,73,.5);font-weight:600}
.btn-capture:disabled{opacity:.5;cursor:wait}

.btn-log{font-size:11px;padding:2px 6px;border-radius:4px;border:1px solid var(--line);background:var(--bg);color:var(--muted);cursor:pointer;margin-left:4px}
.btn-log:hover{color:var(--accent);border-color:var(--accent)}


/* ===== docs.css ===== */
.docs-shell{display:grid;grid-template-columns:260px 1fr;gap:24px;padding:24px;max-width:1400px;margin:0 auto}
.docs-toc{position:sticky;top:70px;align-self:start;background:var(--bg2);border:1px solid var(--line);border-radius:8px;padding:14px 18px;max-height:80vh;overflow:auto}
.docs-toc h3{margin:0 0 8px;font-size:13px;color:var(--muted);font-weight:500}
.docs-toc ol{padding-left:18px;margin:0;font-size:13px}
.docs-toc li{margin:4px 0}
.docs-toc a{color:var(--fg);text-decoration:none}
.docs-toc a:hover{color:var(--accent)}
.docs-main section{background:var(--bg2);border:1px solid var(--line);border-radius:8px;padding:18px 22px;margin-bottom:18px;scroll-margin-top:70px}
.docs-main h2{margin:0 0 12px;font-size:17px;border-bottom:1px solid var(--line);padding-bottom:8px}
.docs-main h3{margin:14px 0 8px;font-size:14px;color:var(--accent)}
.docs-main p{margin:8px 0;line-height:1.65}
.docs-main ul, .docs-main ol{margin:8px 0;padding-left:22px;line-height:1.65}
.docs-main li{margin:3px 0}
.docs-main code{background:#010409;color:#79c0ff;padding:1px 6px;border-radius:3px;font-size:90%;border:1px solid #1f2630}
.docs-main pre{background:#010409;border:1px solid var(--line);border-radius:6px;padding:12px;overflow:auto;font:12px/1.5 ui-monospace,Consolas,monospace;color:#c9d1d9}
.docs-main pre code{background:transparent;border:none;padding:0;color:inherit}
.docs-main table{margin:10px 0}
.docs-main th{color:var(--muted);font-weight:500}
.docs-main td code{font-size:11px}
.btn-link{color:var(--accent);text-decoration:none;font-size:13px;padding:6px 12px;border:1px solid var(--accent);border-radius:5px}
.btn-link:hover{background:rgba(47,129,247,0.1)}
.todo-kind{display:inline-block;padding:1px 7px;border-radius:10px;font-size:11px;margin-right:6px}
.todo-kind.deferred{background:rgba(210,153,34,.15);color:var(--warn);border:1px solid rgba(210,153,34,.4)}
.todo-kind.future{background:rgba(110,118,129,.15);color:var(--muted);border:1px solid var(--line)}
.md{line-height:1.7}
.md table{border-collapse:collapse}
.md table th, .md table td{border-bottom:1px solid var(--line);padding:6px 10px;text-align:left}
.md table th{color:var(--muted)}
.md blockquote{border-left:3px solid var(--accent);padding-left:12px;color:var(--muted);margin:8px 0}
@media (max-width: 1000px){
  .docs-shell{grid-template-columns:1fr}
  .docs-toc{position:static;max-height:none}
}


/* ===== bbs_inline.css ===== */

  .bbs-shell{padding:24px;max-width:1040px;margin:0 auto;display:grid;gap:18px}
  details summary{cursor:pointer;color:var(--muted);font-size:13px;padding:4px 0}
  details summary:hover{color:var(--fg)}
  .post{display:grid;grid-template-columns:36px 1fr;gap:12px;padding:14px 16px;background:var(--bg2);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:8px}
  .avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:13px;margin-top:2px}
  .post-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:6px;font-size:13px}
  .post-slug{font-family:ui-monospace,Consolas,monospace;font-weight:600}
  .post-meta{color:var(--muted);font-size:12px;margin-left:auto}
  .kind-pill{display:inline-block;padding:2px 9px;border-radius:11px;font-size:11px;border:1px solid var(--line);font-weight:500}
  .kind-报道{background:rgba(47,129,247,.15);color:var(--accent);border-color:rgba(47,129,247,.4)}
  .kind-总结{background:rgba(63,185,80,.15);color:var(--good);border-color:rgba(63,185,80,.4)}
  .kind-公告{background:rgba(210,153,34,.15);color:var(--warn);border-color:rgba(210,153,34,.4)}
  .kind-修正{background:rgba(248,81,73,.15);color:var(--bad);border-color:rgba(248,81,73,.4)}
  .kind-缺陷{background:rgba(248,81,73,.18);color:var(--bad);border-color:rgba(248,81,73,.45)}
  .kind-审计{background:rgba(56,139,253,.12);color:#58a6ff;border-color:rgba(56,139,253,.38)}
  .kind-操作{background:rgba(163,113,247,.15);color:#a371f7;border-color:rgba(163,113,247,.45)}
  .post-title{font-weight:600;color:var(--fg)}
  .post-body{font-size:13px;line-height:1.55}
  .post-body h2,.post-body h3{font-size:13px;margin:10px 0 4px;color:var(--muted);font-weight:600;border:none}
  .post-body p{margin:4px 0}
  .post-body ul,.post-body ol{margin:4px 0;padding-left:22px}
  .post-body code{background:var(--bg);padding:1px 6px;border-radius:3px;font-size:12px}
  .post-body pre{background:var(--bg);padding:10px;border-radius:5px;font-size:12px;overflow-x:auto}
  .post-body blockquote{border-left:2px solid var(--line);margin:6px 0;padding:2px 12px;color:var(--muted)}
  .empty-bbs{color:var(--muted);padding:18px;text-align:center;font-size:13px}
  #guideline{font-size:13px}
  #guideline h2,#guideline h3{font-size:14px;margin-top:14px}
  #guideline pre{font-size:12px}
