:root{--bg:#07070a;--panel:rgba(255,255,255,.045);--stroke:rgba(255,255,255,.09);--stroke2:rgba(255,255,255,.16);--txt:#eceef4;--muted:#9a9aae;--dim:#6b6b7d;--acc:#7c5cff;--acc2:#22d3ee;--grad:linear-gradient(135deg,#7c5cff,#22d3ee);--ok:#34d399;--warn:#fbbf24;--danger:#ff5c7a;--font:-apple-system,BlinkMacSystemFont,"SF Pro Display","Inter","PingFang SC","Microsoft YaHei",sans-serif}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--font);background:var(--bg);color:var(--txt);line-height:1.6}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(800px 460px at 8% -6%,rgba(124,92,255,.14),transparent 60%),radial-gradient(700px 420px at 96% 2%,rgba(34,211,238,.1),transparent 60%)}
a{color:inherit;text-decoration:none}
.anav{position:sticky;top:0;z-index:50;backdrop-filter:blur(16px);background:rgba(9,9,13,.72);border-bottom:1px solid var(--stroke)}
.anav-in{max-width:1200px;margin:0 auto;padding:13px 22px;display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap}
.abrand{font-weight:700;display:flex;align-items:center;gap:9px}
.abrand .dot{width:10px;height:10px;border-radius:50%;background:var(--grad)}
.anav a{padding:7px 12px;border-radius:9px;color:var(--muted);font-size:14px;transition:.2s}
.anav a:hover{color:var(--txt);background:var(--panel)}
.anav a.on{color:var(--txt);background:rgba(255,255,255,.08)}
.anav a.ghost{border:1px solid var(--stroke2)}
.acontent{max-width:1200px;margin:0 auto;padding:26px 22px 60px}
.acard{background:var(--panel);border:1px solid var(--stroke);border-radius:20px;padding:22px;backdrop-filter:blur(12px)}
.muted{color:var(--muted)}.small{font-size:13px}.dim{color:var(--dim)}
.row{display:flex;gap:12px;align-items:center}.between{display:flex;justify-content:space-between;align-items:center;gap:14px}
.grid{display:grid;gap:14px}.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}
@media(max-width:900px){.g2,.g3,.g4{grid-template-columns:1fr}}
.mt{margin-top:16px}.mt2{margin-top:26px}.mt3{margin-top:44px}
h1{font-size:28px;font-weight:750;letter-spacing:-.02em}h2{font-size:21px;font-weight:700}h3{font-size:16px;font-weight:650}
.eyebrow{display:inline-block;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);border:1px solid var(--stroke2);padding:5px 12px;border-radius:999px}
.grad-txt{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 18px;border-radius:11px;font-size:14px;font-weight:600;cursor:pointer;border:1px solid transparent;transition:.2s}
.btn-primary{background:var(--grad);color:#0a0a12}
.btn-primary:hover{filter:brightness(1.08)}
.btn-ghost{background:var(--panel);border-color:var(--stroke2);color:var(--txt)}
.btn-ghost:hover{background:rgba(255,255,255,.08)}
.btn-danger{background:rgba(255,92,122,.14);border-color:rgba(255,92,122,.4);color:#ff9db0}
.btn-sm{padding:6px 12px;font-size:12.5px;border-radius:9px}
.input,select,textarea{width:100%;padding:11px 14px;border-radius:11px;font-size:14.5px;font-family:var(--font);background:rgba(0,0,0,.32);border:1px solid var(--stroke);color:var(--txt)}
.input:focus,select:focus,textarea:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 4px rgba(124,92,255,.15)}
select option{background:#14141b}
.field{margin-bottom:14px}.field label{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}
.metric{font-size:26px;font-weight:750}.metric-l{font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid var(--stroke2);background:var(--panel)}
.badge.danger{color:var(--danger);border-color:rgba(255,92,122,.4);background:rgba(255,92,122,.12)}
.badge.acc{color:var(--acc2);border-color:rgba(34,211,238,.35);background:rgba(34,211,238,.1)}
.badge.ok{color:var(--ok);border-color:rgba(52,211,153,.35);background:rgba(52,211,153,.1)}
.chip{display:inline-block;padding:3px 9px;border-radius:7px;font-size:12px;background:rgba(255,255,255,.07);border:1px solid var(--stroke);margin:2px 3px 0 0}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th,td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--stroke);vertical-align:top}
th{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.05em}
tr:hover td{background:rgba(255,255,255,.03)}
.alert{padding:13px 16px;border-radius:13px;font-size:14px;border:1px solid var(--stroke2);background:var(--panel)}
.alert.err{border-color:rgba(255,92,122,.4);background:rgba(255,92,122,.1);color:#ffc2cf}
.alert.warn{border-color:rgba(251,191,36,.4);background:rgba(251,191,36,.1);color:#ffe6ab}
.alert.ok{border-color:rgba(52,211,153,.35);background:rgba(52,211,153,.08);color:#a7f3d0}
.alogin{min-height:84vh;display:flex;align-items:center;justify-content:center;padding:24px}
.alogin .acard{width:100%;max-width:400px}
.clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-width:520px}
pre.body{white-space:pre-wrap;word-break:break-word;font-family:var(--font);line-height:1.75;font-size:14.5px}
.tiny{font-size:11.5px;line-height:1.5}
.atable{width:100%;border-collapse:collapse;font-size:13px}
.atable th,.atable td{padding:7px 10px;border-bottom:1px solid var(--stroke);text-align:left;vertical-align:top}
.atable thead th{font-weight:500;color:var(--dim);font-size:12px;background:rgba(255,255,255,.035)}
.atable tbody tr:hover{background:rgba(255,255,255,.035)}
.atable tbody tr:last-child td{border-bottom:0}

/* ---------- 自动分析 / 数据质量 ---------- */
.tstat{font-variant-numeric:tabular-nums}
.badge.danger{color:#ffc2cf;border-color:rgba(255,92,122,.45);background:rgba(255,92,122,.12)}
.chip.danger{color:#ffc2cf;border-color:rgba(255,92,122,.45);background:rgba(255,92,122,.12)}
.chip.tiny{font-size:10.5px;padding:1px 7px;margin-top:3px}
.anabar{height:8px;border-radius:99px;background:rgba(255,255,255,.09);overflow:hidden;min-width:60px}
.anabar > i{display:block;height:100%;background:linear-gradient(90deg,#6ea8fe,#a78bfa);border-radius:99px}
.anabar.warn > i{background:linear-gradient(90deg,#f0a35e,#e0763a)}
.anabar.bad  > i{background:linear-gradient(90deg,#ff758f,#e5484d)}
.anabar.good > i{background:linear-gradient(90deg,#4ade80,#22c55e)}
