:root{
  --ink:#1a1a1a;--mut:#6b7280;--faint:#9ca3af;--line:#e5e5e3;--line2:#f0f0ee;
  --bg:#f5f5f3;--card:#fff;--soft:#f9fafb;
  --accent:#2563eb;--accent-bg:#eff6ff;--green:#15803d;--green-bg:#dcfce7;
  --amber:#92400e;--amber-bg:#fef3c7;--purple:#6d28d9;--purple-bg:#ede9fe;
}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;color:var(--ink);background:var(--bg);line-height:1.5}
a{color:var(--accent);text-decoration:none}
/* ---- shared nav ---- */
.app-nav{background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}
.nav-in{max-width:1300px;margin:0 auto;display:flex;align-items:center;gap:16px;padding:10px 20px}
.nav-brand{font-size:15px;font-weight:600;display:flex;align-items:center;gap:8px;color:var(--ink)}
.nav-brand svg{width:20px;height:20px;flex:none}
.nav-tabs{display:flex;gap:2px;margin-left:auto;flex-wrap:wrap}
.nav-tab{font-size:13px;padding:7px 13px;border-radius:8px;color:#475569;text-decoration:none}
.nav-tab:hover{background:#f3f4f6}
.nav-tab.on{background:var(--accent-bg);color:var(--accent);font-weight:600}
/* ---- page shell ---- */
.page-wrap{max-width:1300px;margin:0 auto;padding:18px 20px 40px}
.h1{font-size:18px;font-weight:600;margin:0}
.sub{font-size:12.5px;color:var(--mut);margin-top:2px}
.panel{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin-top:14px}
.panel-h{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.panel-h .t{font-size:11px;font-weight:700;color:#888;text-transform:uppercase;letter-spacing:.04em}
.panel-h .s{font-size:11.5px;color:var(--faint)}
/* kpi */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.kpi{background:var(--soft);border-radius:8px;padding:11px 13px}
.kpi .k{font-size:12.5px;color:var(--mut)}
.kpi .v{font-size:24px;font-weight:600;margin-top:1px}
.kpi .d{font-size:11.5px;color:var(--faint);margin-top:1px}
/* tables */
table.t{width:100%;border-collapse:collapse;font-size:12.5px}
table.t th{text-align:left;font-size:9.5px;text-transform:uppercase;letter-spacing:.02em;color:#888;font-weight:600;padding:6px 7px;border-bottom:1px solid var(--line);white-space:nowrap;cursor:pointer}
table.t th:hover{color:var(--accent)}
table.t td{padding:6px 7px;border-bottom:1px solid var(--line2);vertical-align:middle}
table.t tr:hover td{background:#fafaf8}
.num{text-align:right;font-variant-numeric:tabular-nums}
.score{font-weight:600}
/* chips + badges */
.seg{display:inline-flex;border:1px solid #cbd5e1;border-radius:8px;overflow:hidden}
.seg button{font-size:12px;font-weight:600;padding:5px 12px;background:#fff;border:none;cursor:pointer;color:#475569}
.seg button.on{background:#111827;color:#fff}
.chip{font-size:12px;padding:3px 9px;border-radius:20px;border:1px solid #d1d5db;background:#fff;color:#374151;cursor:pointer;user-select:none}
.chip:hover{border-color:#9ca3af}
.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.chip.on-g{background:var(--green);border-color:var(--green);color:#fff}
.chipb{font-size:10.5px;background:var(--accent-bg);color:var(--accent);border-radius:20px;padding:1px 8px;margin-right:3px;display:inline-block}
.tag{font-size:10px;background:#f1f5f9;color:#334155;border:1px solid #e2e8f0;border-radius:4px;padding:1px 5px;margin-right:2px;display:inline-block}
.badge{font-size:10px;font-weight:600;padding:1px 6px;border-radius:5px;display:inline-block}
.b-grant{background:var(--amber-bg);color:var(--amber)}
.b-trial{background:var(--accent-bg);color:var(--accent)}
.b-both{background:var(--green-bg);color:var(--green)}
.pill{font-size:10.5px;font-weight:600;padding:1px 7px;border-radius:20px;display:inline-block}
.p-new{background:#f1f5f9;color:#64748b}.p-con{background:var(--accent-bg);color:var(--accent)}
.p-warn{background:var(--amber-bg);color:var(--amber)}.p-won{background:var(--green-bg);color:var(--green)}
.bar{height:6px;border-radius:3px;background:#eef2f7;overflow:hidden}
.bar>i{display:block;height:100%;background:var(--accent)}
.btn{font-size:12px;font-weight:600;padding:6px 12px;border:1px solid #d1d5db;border-radius:7px;background:#fff;cursor:pointer;color:var(--ink)}
.btn:hover{background:#f3f4f6}
.search-box{font-size:12px;padding:6px 10px;border:1px solid #d1d5db;border-radius:7px;outline:none}
.search-box:focus{border-color:var(--accent)}
.rowcount{font-size:11.5px;color:var(--faint)}
.foot{font-size:11px;color:var(--faint);margin-top:18px;text-align:center}
.flab{font-size:10px;text-transform:uppercase;letter-spacing:.03em;color:var(--mut);font-weight:600;margin-bottom:5px;display:flex;gap:6px;align-items:center}
.hint{color:var(--accent);font-size:10px;font-weight:400;cursor:pointer}
.chipwrap{display:flex;flex-wrap:wrap;gap:5px}
.dbwrap{overflow-x:auto}
.loading{padding:2rem;text-align:center;color:var(--faint);font-size:13px}
