:root{
  --ground:#f6f8f7; --surface:#fff; --surface-2:#eef2f0; --ink:#17211f; --muted:#5f6f6b;
  --faint:#8a9793; --border:#e0e6e3; --border-strong:#c9d2ce;
  --accent:#0d7d74; --accent-ink:#0a5c55; --accent-soft:rgba(13,125,116,.10);
  --phys:#0d7d74; --inorg:#b45309; --org:#3b6fd4; --anal:#7c5cbf;
  --good:#2f9e63; --warn:#c98a00; --weak:#d1495b; --r:10px;
}
@media (prefers-color-scheme:dark){:root{
  --ground:#0f1516; --surface:#161e1f; --surface-2:#1d2728; --ink:#e7edea; --muted:#9aa8a3;
  --faint:#6d7b76; --border:#283234; --border-strong:#3a4649;
  --accent:#3bb9ad; --accent-ink:#7fd6cd; --accent-soft:rgba(59,185,173,.14);
  --phys:#3bb9ad; --inorg:#e0912f; --org:#7ea2ee; --anal:#a992e6;
  --good:#4bbd7f; --warn:#e0a92f; --weak:#e26d7d;
}}
*{box-sizing:border-box;}
body{margin:0;background:var(--ground);color:var(--ink);
  font-family:"IBM Plex Sans","PingFang SC","Microsoft YaHei",system-ui,sans-serif;font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased;}
.mono{font-family:"IBM Plex Mono",ui-monospace,monospace;}
a{color:var(--accent-ink);}
h1,h2,h3{letter-spacing:-.01em;}

.topbar{display:flex;align-items:center;gap:14px;padding:12px 20px;background:var(--surface);border-bottom:1px solid var(--border);}
.topbar .brand{font-weight:700;font-size:16px;display:flex;gap:8px;align-items:center;}
.topbar nav{display:flex;gap:6px;margin-left:12px;}
.topbar nav a{padding:5px 12px;border-radius:8px;text-decoration:none;color:var(--muted);font-weight:500;}
.topbar nav a:hover{background:var(--surface-2);color:var(--ink);}
.topbar nav a.active{background:var(--accent-soft);color:var(--accent-ink);}
.topbar .spacer{margin-left:auto;}
.topbar .who{font-size:12.5px;color:var(--muted);}

.btn{border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);border-radius:8px;
  padding:8px 14px;font-size:13px;font-family:inherit;cursor:pointer;}
.btn:hover{border-color:var(--accent);}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;}
.btn.primary:hover{filter:brightness(1.05);}
.btn.danger{color:var(--weak);border-color:var(--weak);}
.btn.sm{padding:4px 10px;font-size:12px;}

input,select,textarea{font-family:inherit;font-size:13px;color:var(--ink);background:var(--ground);
  border:1px solid var(--border-strong);border-radius:8px;padding:8px 11px;width:100%;}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent);}
textarea{resize:vertical;min-height:70px;}
label.fld{display:block;margin-bottom:12px;}
label.fld > span{display:block;font-size:12px;color:var(--muted);margin-bottom:5px;}

.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:16px 18px;margin-bottom:16px;}
.card h3{font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:var(--faint);margin:0 0 12px;font-weight:600;}

.pill{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;font-size:12px;border:1px solid var(--border-strong);color:var(--muted);}
.pill.primary{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink);}
.chip{font-size:11px;padding:2px 8px;border-radius:5px;background:var(--surface-2);color:var(--muted);}
.dot{width:9px;height:9px;border-radius:50%;flex:none;}

.muted{color:var(--muted);} .faint{color:var(--faint);}
.empty{color:var(--faint);text-align:center;padding:60px 20px;}
.hidden{display:none!important;}
