/* TJ Base 平台后台 · 黑白 · 令牌见 tokens.mono.css */
body{margin:0;background:var(--tj-bg);color:var(--tj-ink);font:14px/1.55 var(--tj-font-body);-webkit-font-smoothing:antialiased}
a{color:inherit}
.pf{display:grid;grid-template-columns:var(--tjb-side-w) 1fr;min-height:100vh}
.pf__side{background:var(--tjb-side-bg);color:var(--tjb-side-ink);padding:20px 14px;display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100vh;box-sizing:border-box}
.pf__brand{display:flex;align-items:center;gap:10px;font-weight:600;text-decoration:none;padding:4px 8px;letter-spacing:-.01em}
.pf__brand img{border-radius:7px}
.pf__nav{display:flex;flex-direction:column;gap:2px}
.pf__nav a{padding:9px 10px;border-radius:8px;text-decoration:none;color:var(--tjb-side-muted);font-size:13.5px}
.pf__nav a:hover{background:var(--tjb-side-active);color:var(--tjb-side-ink)}
.pf__nav a[aria-current="page"]{background:var(--tjb-side-active);color:var(--tjb-side-ink)}
.pf__side-foot{margin-top:auto;display:flex;flex-direction:column;gap:6px;font-size:12px;padding:0 8px}
.pf__link{background:none;border:0;color:var(--tjb-side-muted);cursor:pointer;text-align:left;padding:0;font:inherit;font-size:12px}
.pf__link:hover{color:#fff}
.pf__main{padding:32px 40px 80px;max-width:1280px;width:100%;box-sizing:border-box}
.pf__head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.pf__head h1{font-size:22px;letter-spacing:-.02em;margin:0 0 2px;font-weight:600}
.pf__muted{color:var(--tj-ink-3)}
.pf__actions{display:flex;gap:8px}
.pf__stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:20px}
.pf__stat{border:1px solid var(--tj-line);border-radius:12px;padding:14px 16px}
.pf__stat .l{font-size:12px;color:var(--tj-ink-3);margin-bottom:4px}
.pf__stat .v{font-size:24px;font-weight:600;letter-spacing:-.02em;font-family:var(--tj-font-mono)}
.pf__filters{display:flex;gap:10px;align-items:center;margin-bottom:16px}
.pf__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.pf__card{border:1px solid var(--tj-line);border-radius:12px;padding:18px;display:flex;flex-direction:column;gap:12px;background:var(--tj-surface);transition:border-color .12s}
.pf__card:hover{border-color:var(--tj-ink-2)}
.pf__card-h{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.pf__card-h .n{font-weight:600;font-size:15px}
.pf__card-h .s{font-family:var(--tj-font-mono);font-size:12px;color:var(--tj-ink-3)}
.pf__kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.pf__kpis div{font-size:11px;color:var(--tj-ink-3)}
.pf__kpis b{display:block;font-size:15px;font-family:var(--tj-font-mono);color:var(--tj-ink);font-weight:500}
.pf__card-f{display:flex;gap:8px;margin-top:auto}
.pf__auth{padding:0}
.pf__dlg{border:1px solid var(--tj-line);border-radius:14px;padding:24px 26px;width:min(440px,92vw);box-shadow:var(--tj-sh2)}
.pf__dlg--wide{width:min(600px,92vw)}
.pf__dlg::backdrop{background:rgba(10,10,10,.35)}
.pf__dlg h2{margin:0 0 14px;font-size:18px;letter-spacing:-.01em}
.pf__dlg-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}
.pf__seg{display:flex;gap:6px}
.pf__seg label{flex:1;border:1px solid var(--tj-line);border-radius:8px;padding:9px 10px;text-align:center;cursor:pointer;font-size:13px;position:relative}
.pf__seg input{position:absolute;opacity:0;inset:0}
.pf__seg input:checked+span{font-weight:600}
.pf__seg label:has(input:checked){border-color:var(--tj-ink);background:var(--tj-surface-2)}
.pf__kv{display:grid;grid-template-columns:90px 1fr auto;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--tj-line-soft);font-size:13px}
.pf__kv code{font-family:var(--tj-font-mono);font-size:12px;word-break:break-all;background:var(--tj-surface-2);padding:6px 8px;border-radius:6px}
.pf__dl{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.pf__dl a{border:1px solid var(--tj-line);border-radius:10px;padding:12px;text-decoration:none;display:flex;flex-direction:column;gap:2px}
.pf__dl a b{font-size:13px}.pf__dl a span{font-size:11px;color:var(--tj-ink-3)}
.pf__dl a:hover{border-color:var(--tj-ink)}
@media (max-width:860px){.pf{grid-template-columns:1fr}.pf__side{position:static;height:auto;flex-direction:row;align-items:center;flex-wrap:wrap}.pf__side-foot{margin:0 0 0 auto}.pf__main{padding:20px}.pf__dl{grid-template-columns:1fr}}
