:root{--bg: #f5f7fa;--panel: #ffffff;--text: #1f2937;--muted: #667085;--line: #d9dee7;--primary: #1769aa;--primary-dark: #0f4d7d;--danger: #b42318;--warning: #b54708;--ok: #067647;--radius: 8px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-dark)}.shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:220px;background:#111827;color:#fff;padding:20px 16px}.brand{font-size:18px;font-weight:700;margin-bottom:24px}.sidebar nav{display:grid;gap:6px}.sidebar button{border:0;background:transparent;color:#cbd5e1;text-align:left;padding:10px 12px;border-radius:6px;cursor:pointer;font:inherit}.sidebar button.active,.sidebar button:hover{background:#263244;color:#fff}.main{margin-left:220px;padding:24px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px}h1,h2{margin:0;line-height:1.3}h1{font-size:24px}h2{font-size:17px}.topbar p{margin:6px 0 0;color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:12px;margin-bottom:16px}.stat,.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.stat{padding:16px}.stat span{color:var(--muted)}.stat strong{display:block;margin-top:8px;font-size:26px}.grid{display:grid;gap:16px;margin-bottom:16px}.grid.two{grid-template-columns:minmax(0,1.6fr) minmax(320px,.8fr)}.panel{padding:16px;margin-bottom:16px;overflow-x:auto}.panel-head,.detail-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px}.detail-head{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.detail-head h2{margin-top:8px;font-size:20px}.detail-head p{margin:8px 0 0;color:var(--muted)}table{width:100%;border-collapse:collapse;min-width:760px}th,td{padding:11px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{color:#475467;font-weight:600;background:#f8fafc}.title-link,.link-button,.back{border:0;padding:0;background:transparent;color:#174ea6;cursor:pointer;font:inherit}.muted{color:var(--muted)}.empty{color:var(--muted);text-align:center;padding:24px}.error{background:#fee4e2;color:var(--danger);border-radius:6px;padding:10px 12px}.button,button.button{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:0 14px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--text);cursor:pointer;font:inherit}.button:hover{border-color:var(--primary)}.button.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.button.ghost{background:transparent}.button.small{min-height:30px;padding:0 10px}.button:disabled{cursor:wait;opacity:.65}.badge{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border-radius:999px;background:#eef2f6;color:#344054;white-space:nowrap}.severity-严重,.severity-高危{background:#fee4e2;color:var(--danger)}.severity-中危{background:#fef0c7;color:var(--warning)}.severity-低危{background:#e0f2fe;color:#075985}.severity-信息{background:#dcfae6;color:var(--ok)}.filters{display:grid;grid-template-columns:160px 140px 140px minmax(220px,1fr) auto auto;gap:10px;margin-bottom:14px}input,select,textarea{width:100%;min-height:36px;border:1px solid var(--line);border-radius:6px;padding:8px 10px;background:#fff;color:var(--text);font:inherit}textarea{resize:vertical}.stack{display:grid;gap:10px}.meta{display:grid;grid-template-columns:96px 1fr;gap:10px 14px;margin:14px 0 0}.meta dt{color:var(--muted)}.meta dd{margin:0}.summary{line-height:1.8;color:#344054}.snapshot{border:1px solid var(--line);border-radius:6px;margin-top:10px;background:#fbfcfe}.snapshot summary{cursor:pointer;padding:10px 12px;color:#344054}.snapshot pre{white-space:pre-wrap;word-break:break-word;max-height:420px;overflow:auto;margin:0;padding:12px;border-top:1px solid var(--line);line-height:1.7;color:#344054}@media(max-width:980px){.sidebar{position:static;width:auto}.main{margin-left:0;padding:16px}.stats,.grid.two,.filters{grid-template-columns:1fr}.topbar,.panel-head,.detail-head{align-items:flex-start;flex-direction:column}}
