:root{--bg:#f6f7f9;--fg:#1d2330;--muted:#667085;--line:#e3e6eb;--card:#fff;--accent:#1f5eff;--ok:#12805c;--warn:#b26b00;--bad:#c4302b}
*{box-sizing:border-box}body{margin:0;font:15px/1.55 -apple-system,"PingFang TC","Noto Sans TC",system-ui,sans-serif;background:var(--bg);color:var(--fg)}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
.top{display:flex;gap:24px;align-items:center;padding:10px 24px;background:var(--card);border-bottom:1px solid var(--line);flex-wrap:wrap}
.brand{font-weight:700;color:var(--fg)}.top nav{display:flex;gap:16px;flex-wrap:wrap}.top nav a{color:var(--muted)}.top nav a.on{color:var(--fg);font-weight:600}
.logout{margin-left:auto;display:flex;gap:8px;align-items:center;color:var(--muted);font-size:13px}
main{max-width:1200px;margin:0 auto;padding:24px 16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:20px;margin-bottom:16px}.narrow{max-width:420px;margin:40px auto}
h1{font-size:22px;margin:0 0 16px}h2{font-size:17px;margin:0 0 12px}
label{display:block;margin:0 0 12px;font-size:13px;color:var(--muted)}input,select,textarea{display:block;width:100%;margin-top:4px;padding:8px;border:1px solid var(--line);border-radius:6px;font:inherit;color:var(--fg)}
button{padding:7px 14px;border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:6px;font:inherit;cursor:pointer}button.ghost{background:#fff;color:var(--accent)}
.err{color:var(--bad)}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:ui-monospace,Menlo,monospace;word-break:break-all}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}.stat .n{font-size:28px;font-weight:700}.stat .l{color:var(--muted);font-size:13px}
table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:8px;border-bottom:1px solid var(--line);vertical-align:top}th{color:var(--muted);font-weight:500}
.badge{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;border:1px solid var(--line)}.green{color:var(--ok);border-color:var(--ok)}.yellow{color:var(--warn);border-color:var(--warn)}.red{color:#fff;background:var(--bad);border-color:var(--bad)}
.tabs{display:flex;gap:8px;margin-bottom:12px}.tabs a{padding:6px 12px;border:1px solid var(--line);border-radius:6px;background:#fff}.tabs a.on{border-color:var(--accent);font-weight:600}
blockquote{margin:6px 0;padding:6px 10px;border-left:3px solid var(--line);background:#fafbfc}
.board{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.col{background:#eef0f4;border-radius:8px;padding:10px}.col .item{background:#fff;border-radius:6px;padding:8px;margin-top:8px;border:1px solid var(--line)}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:end}.row label{margin:0}
.wide{max-width:560px}.inline{display:inline}
