:root{--ink:#1c2733;--muted:#66727f;--line:#dfe5ea;--bg:#f6f8fa;--card:#fff;--brand:#0f6fb7;--brand2:#0a5590;--ok:#1a7f4b;--warn:#b76e00;--bad:#b3261e;--r:8px}
*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
header{background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:10px 20px;gap:16px;flex-wrap:wrap}
.brand{font-weight:700;font-size:17px;display:flex;align-items:center;gap:8px}.brand .dot{width:12px;height:12px;border-radius:50%;background:var(--brand);display:inline-block}
.brand .sub{font-weight:400;color:var(--muted);font-size:13px;margin-left:8px}
nav{display:flex;align-items:center;gap:14px}nav a{color:var(--brand);text-decoration:none;font-weight:600;padding:4px 2px;border-bottom:2px solid transparent}nav a.active{border-color:var(--brand)}
#who{color:var(--muted);font-size:13px;margin-left:8px}
main{max-width:1100px;margin:22px auto;padding:0 20px}
h1{font-size:26px;margin:0 0 6px}h2{font-size:20px;margin:0 0 10px}h3{font-size:15px;margin:18px 0 6px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
button{font:inherit;cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:var(--r);padding:8px 14px}
button.primary{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}button.primary:hover{background:var(--brand2)}
button.link{border:none;background:none;color:var(--brand);padding:4px 6px}button[disabled]{opacity:.5;cursor:default}
.searchbar{display:flex;gap:8px;margin:6px 0 4px}.searchbar input{flex:1;font:inherit;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r)}
.muted{color:var(--muted)}.small{font-size:13px}code{background:#eef2f5;padding:1px 5px;border-radius:4px}
table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}th{background:#f0f3f6;font-size:13px;color:var(--muted);font-weight:600}
tr:last-child td{border-bottom:none}tbody tr:hover{background:#f7fafc}td.num{text-align:right;white-space:nowrap}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;margin:12px 0}
.kv{display:grid;grid-template-columns:150px 1fr;gap:4px 12px;font-size:14px}.kv b{color:var(--muted);font-weight:600}
.pill{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px;background:#eef2f5;color:var(--muted);margin-right:6px}
.pill.ok{background:#e6f4ec;color:var(--ok)}.pill.warn{background:#fff4e0;color:var(--warn)}.pill.bad{background:#fbe9e7;color:var(--bad)}
.rowlink{color:var(--brand);cursor:pointer;font-weight:600}
.missing td{color:#9aa4ad}
.actions{display:flex;gap:10px;align-items:center;margin:10px 0 4px;flex-wrap:wrap}
#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 16px;border-radius:var(--r);box-shadow:0 6px 24px rgba(0,0,0,.2);max-width:90vw}
#signin{max-width:560px;margin:60px auto;text-align:center}#signin p{margin:10px 0 18px}
.spinner{display:inline-block;width:14px;height:14px;border:2px solid #cbd5df;border-top-color:var(--brand);border-radius:50%;animation:spin .8s linear infinite;vertical-align:-2px;margin-right:6px}@keyframes spin{to{transform:rotate(360deg)}}
@media (max-width:700px){.kv{grid-template-columns:1fr}th:nth-child(4),td:nth-child(4){display:none}}
