Add files via upload

This commit is contained in:
公明
2026-06-09 17:34:36 +08:00
committed by GitHub
parent 99a41d8188
commit 6bfa7b8959
9 changed files with 521 additions and 212 deletions
-107
View File
@@ -37,7 +37,6 @@
Form Controls (scoped to C2 pages)
============================================================================ */
#page-c2 .form-control,
#page-c2-listeners .form-control,
#page-c2-sessions .form-control,
#page-c2-tasks .form-control,
@@ -61,7 +60,6 @@
appearance: none;
}
#page-c2 .form-control:focus,
#page-c2-listeners .form-control:focus,
#page-c2-sessions .form-control:focus,
#page-c2-tasks .form-control:focus,
@@ -73,7 +71,6 @@
box-shadow: 0 0 0 3px var(--c2-accent-dim);
}
#page-c2 select.form-control,
#page-c2-payloads select.form-control,
.c2-modal select.form-control {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M2.5 4.5L6 8l3.5-3.5'/%3E%3C/svg%3E");
@@ -85,7 +82,6 @@
}
/* 原生下拉:避免 appearance:none 在部分浏览器中导致 select 无法正常展开 */
#page-c2 select.form-control.c2-native-select,
#page-c2-payloads select.form-control.c2-native-select,
.c2-modal select.form-control.c2-native-select {
appearance: auto;
@@ -94,7 +90,6 @@
padding-right: 14px;
}
#page-c2 textarea.form-control,
#page-c2-payloads textarea.form-control,
.c2-modal textarea.form-control {
resize: vertical;
@@ -104,7 +99,6 @@
line-height: 1.6;
}
#page-c2 .form-control::placeholder,
#page-c2-payloads .form-control::placeholder,
.c2-modal .form-control::placeholder {
color: var(--c2-text-muted);
@@ -140,9 +134,6 @@
Layout
============================================================================ */
.c2-layout { display: flex; flex-direction: column; height: 100%; }
.c2-main { flex: 1; overflow-y: auto; }
.c2-empty {
display: flex;
flex-direction: column;
@@ -171,103 +162,6 @@
margin: 12px;
}
/* ============================================================================
Dashboard / Welcome
============================================================================ */
.c2-welcome {
text-align: center;
padding: 100px 24px 80px;
max-width: 860px;
margin: 0 auto;
}
.c2-welcome-icon {
margin-bottom: 16px;
animation: c2-float 4s ease-in-out infinite;
}
@keyframes c2-float {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-8px); }
}
.c2-welcome h3 {
font-size: 28px;
margin-bottom: 12px;
color: var(--c2-text);
font-weight: 800;
letter-spacing: -0.5px;
}
.c2-welcome p {
color: var(--c2-text-dim);
font-size: 15px;
line-height: 1.7;
margin-bottom: 48px;
max-width: 520px;
margin-left: auto;
margin-right: auto;
}
.c2-stats {
display: flex;
justify-content: center;
gap: 16px;
margin-bottom: 48px;
flex-wrap: wrap;
}
.c2-stat-item {
display: flex;
flex-direction: column;
align-items: center;
padding: 28px 40px;
background: var(--c2-surface);
border-radius: var(--c2-radius);
border: 1.5px solid var(--c2-border);
min-width: 160px;
transition: all 0.3s ease;
}
.c2-stat-item:hover {
transform: translateY(-4px);
box-shadow: var(--c2-shadow-md);
border-color: var(--c2-accent);
}
.c2-stat-item:nth-child(1) .c2-stat-value { color: var(--c2-accent); }
.c2-stat-item:nth-child(2) .c2-stat-value { color: var(--c2-green); }
.c2-stat-item:nth-child(3) .c2-stat-value { color: var(--c2-amber); }
.c2-stat-value {
font-size: 36px;
font-weight: 800;
line-height: 1;
letter-spacing: -1px;
}
.c2-stat-label {
font-size: 12px;
color: var(--c2-text-dim);
margin-top: 12px;
font-weight: 600;
letter-spacing: 0.3px;
}
.c2-actions {
display: flex;
gap: 12px;
justify-content: center;
flex-wrap: wrap;
max-width: 420px;
margin-inline: auto;
}
.c2-actions > button {
flex: 1;
min-width: min(100%, 160px);
}
/* ============================================================================
Listener Cards
============================================================================ */
@@ -1590,7 +1484,6 @@
border-right: none;
border-bottom: 1px solid var(--c2-border);
}
.c2-stats { flex-direction: column; gap: 12px; }
.c2-payload-grid { grid-template-columns: 1fr; }
.c2-listener-grid { grid-template-columns: 1fr; padding: 16px; }
.c2-task-detail-grid { grid-template-columns: 1fr; }
+249
View File
@@ -15971,6 +15971,255 @@ tr.mcp-stats-tool-row[data-tool-name]:focus-visible {
transform: translateX(2px);
}
/* 最近漏洞 / 近期事实 Tab */
.dashboard-section-header--tabs {
align-items: center;
gap: 12px;
}
.dashboard-feed-tabs {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 3px;
background: #f1f5f9;
border-radius: 10px;
border: 1px solid rgba(15, 23, 42, 0.06);
}
.dashboard-feed-tab {
padding: 7px 14px;
border: none;
background: transparent;
color: #64748b;
border-radius: 8px;
cursor: pointer;
font-size: 0.8125rem;
font-weight: 600;
line-height: 1.2;
transition: background 0.15s, color 0.15s, box-shadow 0.15s;
}
.dashboard-feed-tab:hover {
color: #0f172a;
}
.dashboard-feed-tab.is-active {
color: #0066ff;
background: #fff;
box-shadow: 0 1px 3px rgba(15, 23, 42, 0.08);
}
.dashboard-feed-tab-badge {
margin-left: 4px;
font-size: 0.75rem;
font-weight: 600;
color: #64748b;
font-variant-numeric: tabular-nums;
}
.dashboard-feed-tab.is-active .dashboard-feed-tab-badge {
color: #0066ff;
}
.dashboard-feed-tab:focus-visible {
outline: 2px solid rgba(0, 102, 255, 0.45);
outline-offset: 2px;
}
.dashboard-feed-panel[hidden] {
display: none !important;
}
.dashboard-recent-facts {
display: flex;
flex-direction: column;
gap: 4px;
min-height: 60px;
width: 100%;
min-width: 0;
align-items: stretch;
}
.dashboard-recent-facts-empty {
text-align: center;
color: var(--text-secondary);
padding: 28px 12px;
font-size: 0.875rem;
background: #fafbfc;
border-radius: 10px;
border: 1px dashed rgba(0, 0, 0, 0.08);
}
.dashboard-recent-facts-empty.is-rich {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 28px 16px;
text-align: center;
gap: 8px;
}
.dashboard-recent-facts-meta {
font-size: 0.75rem;
color: var(--text-secondary, #6b7280);
padding: 2px 4px 8px;
font-variant-numeric: tabular-nums;
}
.dashboard-recent-fact-item {
display: grid;
/* 置顶 / 分类 / 置信度 固定列宽,保证各行对齐 */
grid-template-columns: 20px 64px 56px minmax(0, 1.4fr) minmax(0, 1fr) 9.5rem;
align-items: center;
column-gap: 10px;
padding: 12px 10px;
border-radius: 8px;
cursor: pointer;
transition: background 0.15s;
text-decoration: none;
color: inherit;
border-bottom: 1px solid #f3f4f6;
width: 100%;
max-width: 100%;
min-width: 0;
box-sizing: border-box;
}
.dashboard-recent-fact-item:last-child {
border-bottom: none;
}
.dashboard-recent-fact-item:hover {
background: rgba(0, 102, 255, 0.04);
}
.dashboard-recent-fact-item:focus-visible {
outline: 2px solid rgba(0, 102, 255, 0.5);
outline-offset: 2px;
}
.dashboard-recent-fact-pin {
width: 20px;
flex-shrink: 0;
font-size: 0.75rem;
line-height: 1;
text-align: center;
justify-self: center;
}
.dashboard-recent-fact-cat,
.dashboard-recent-fact-conf {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 3px 6px;
border-radius: 6px;
font-size: 0.6875rem;
font-weight: 700;
line-height: 1.2;
white-space: nowrap;
justify-self: start;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
}
.dashboard-recent-fact-cat {
width: 64px;
box-sizing: border-box;
}
.dashboard-recent-fact-conf {
width: 56px;
box-sizing: border-box;
}
.dashboard-recent-fact-cat {
background: rgba(99, 102, 241, 0.1);
color: #4338ca;
}
.dashboard-recent-fact-cat.cat-finding,
.dashboard-recent-fact-cat.cat-vuln,
.dashboard-recent-fact-cat.cat-exploit,
.dashboard-recent-fact-cat.cat-poc,
.dashboard-recent-fact-cat.cat-chain {
background: rgba(239, 68, 68, 0.1);
color: #b91c1c;
}
.dashboard-recent-fact-cat.cat-target,
.dashboard-recent-fact-cat.cat-env,
.dashboard-recent-fact-cat.cat-auth {
background: rgba(14, 165, 233, 0.12);
color: #0369a1;
}
.dashboard-recent-fact-conf.conf-confirmed {
background: rgba(34, 197, 94, 0.12);
color: #15803d;
}
.dashboard-recent-fact-conf.conf-tentative {
background: rgba(245, 158, 11, 0.12);
color: #b45309;
}
.dashboard-recent-fact-summary {
font-weight: 600;
color: var(--text-primary);
font-size: 0.875rem;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.dashboard-recent-fact-meta {
color: var(--text-secondary);
font-size: 0.8125rem;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;
}
.dashboard-recent-fact-time {
color: var(--text-secondary);
font-size: 0.75rem;
text-align: left;
white-space: nowrap;
font-variant-numeric: tabular-nums;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
}
@media (max-width: 900px) {
.dashboard-recent-fact-item {
grid-template-columns: 20px 64px minmax(0, 1fr) auto 8.25rem;
}
.dashboard-recent-fact-conf { display: none; }
}
@media (max-width: 720px) {
.dashboard-recent-fact-item {
grid-template-columns: 20px 64px minmax(0, 1fr) auto;
}
.dashboard-recent-fact-meta { display: none; }
}
@media (max-width: 480px) {
.dashboard-recent-fact-item {
grid-template-columns: 20px minmax(0, 1fr) auto;
}
.dashboard-recent-fact-cat { display: none; }
.dashboard-recent-fact-time { display: none; }
}
/* 最近漏洞列表 */
.dashboard-recent-vulns {
display: flex;