mirror of
https://github.com/0xMarcio/cve.git
synced 2026-10-27 16:51:03 +00:00
Every colour is now a Primer dark_default token. The header band, its four capability pills and the heading above the trending table are gone, so the search field is the first thing on the page and the switcher labels its own table. Rows tighten to 10px, descriptions clamp to two lines, and the PoC list loses its box for a hairline rule. Blue is the only thing you can click. Amber means 500 stars or more and red means known-exploited, and nothing else carries a hue: the star glyph is dimmed at every value so the column reads as numbers rather than symbols. The handoff's placeholder wanted an em dash. It reads "Search CVE, vendor, product or keyword, exclude with -windows" with the middot the count line already uses, and the six em dashes I had left in code comments are gone too.
300 lines
8.1 KiB
CSS
300 lines
8.1 KiB
CSS
/* CVE PoC Hub. GitHub Primer dark_default tokens, per the refit handoff. */
|
|
:root {
|
|
--canvas: #0d1117;
|
|
--canvas-subtle: #161b22;
|
|
--border: #30363d;
|
|
--border-muted: #21262d;
|
|
--fg: #e6edf3;
|
|
--fg-muted: #8b949e;
|
|
--neutral: #6e7681;
|
|
--accent: #2f81f7;
|
|
--accent-hover: #58a6ff;
|
|
--accent-emphasis: #1f6feb;
|
|
--attention: #e3b341;
|
|
--danger: #f85149;
|
|
--mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
--sans: 'Space Grotesk', system-ui, -apple-system, sans-serif;
|
|
}
|
|
|
|
*, *::before, *::after { box-sizing: border-box; }
|
|
* { scrollbar-width: thin; scrollbar-color: var(--border) transparent; }
|
|
|
|
html, body { margin: 0; padding: 0; background: var(--canvas); min-height: 100%; }
|
|
body {
|
|
font-family: var(--sans);
|
|
-webkit-font-smoothing: antialiased;
|
|
display: flex;
|
|
flex-direction: column;
|
|
min-height: 100vh;
|
|
}
|
|
|
|
a { color: var(--accent); text-decoration: none; }
|
|
a:hover { color: var(--accent-hover); }
|
|
:focus-visible { outline: 2px solid var(--accent-emphasis); outline-offset: 2px; border-radius: 2px; }
|
|
[hidden] { display: none !important; }
|
|
|
|
.container { max-width: 1240px; width: 100%; margin: 0 auto; padding: 0 32px; }
|
|
|
|
/* ---- search, the first element on the page ------------------------------ */
|
|
|
|
.search-bar { padding-top: 30px; }
|
|
.search {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 13px;
|
|
height: 52px;
|
|
padding: 0 17px;
|
|
background: var(--canvas-subtle);
|
|
border: 1px solid var(--border);
|
|
border-radius: 6px;
|
|
}
|
|
.search:focus-within { border-color: var(--accent-emphasis); }
|
|
.search svg { flex: none; display: block; }
|
|
.search input {
|
|
flex: 1;
|
|
min-width: 0;
|
|
background: transparent;
|
|
border: 0;
|
|
outline: 0;
|
|
padding: 0;
|
|
font: 400 15px/1 var(--mono);
|
|
color: var(--fg);
|
|
}
|
|
.search input::placeholder { color: var(--neutral); }
|
|
.search-status {
|
|
flex: none;
|
|
white-space: nowrap;
|
|
font: 400 11.5px/1 var(--mono);
|
|
color: var(--fg-muted);
|
|
}
|
|
|
|
.content { flex: 1; padding-top: 26px; padding-bottom: 48px; }
|
|
|
|
/* ---- shared table shell ------------------------------------------------- */
|
|
|
|
.panel { border: 1px solid var(--border); border-radius: 6px; overflow: hidden; }
|
|
.panel-head {
|
|
display: flex;
|
|
align-items: baseline;
|
|
gap: 10px;
|
|
padding: 13px 16px;
|
|
border-bottom: 1px solid var(--border);
|
|
}
|
|
.panel-head h2 {
|
|
flex: none;
|
|
margin: 0;
|
|
font: 600 14px/1 var(--sans);
|
|
letter-spacing: -.01em;
|
|
color: var(--fg);
|
|
}
|
|
.panel-count {
|
|
flex: none;
|
|
white-space: nowrap;
|
|
font: 400 11.5px/1 var(--mono);
|
|
color: var(--fg-muted);
|
|
}
|
|
.col-head {
|
|
display: grid;
|
|
padding: 8px 16px;
|
|
background: var(--canvas-subtle);
|
|
border-bottom: 1px solid var(--border);
|
|
font: 400 9.5px/1 var(--mono);
|
|
letter-spacing: .12em;
|
|
color: var(--fg-muted);
|
|
}
|
|
|
|
/* ---- state A: results --------------------------------------------------- */
|
|
|
|
.results .col-head, .result-row { grid-template-columns: 196px minmax(0, 1fr); }
|
|
.result-row { display: grid; border-bottom: 1px solid var(--border-muted); }
|
|
.result-row:last-child { border-bottom: 0; }
|
|
|
|
.result-meta { padding: 16px; border-right: 1px solid var(--border-muted); }
|
|
.result-id { font: 500 13.5px/1.2 var(--mono); letter-spacing: -.01em; }
|
|
.result-pocs { margin-top: 8px; font: 400 11.5px/1 var(--mono); color: var(--fg-muted); }
|
|
.result-dates {
|
|
margin: 12px 0 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 4px;
|
|
font: 400 11px/1.4 var(--mono);
|
|
color: var(--fg-muted);
|
|
}
|
|
.chips { margin-top: 13px; display: flex; gap: 6px; flex-wrap: wrap; }
|
|
.chip {
|
|
font: 400 10.5px/1 var(--mono);
|
|
letter-spacing: .06em;
|
|
color: var(--fg-muted);
|
|
border: 1px solid var(--border);
|
|
border-radius: 4px;
|
|
padding: 5px 8px;
|
|
}
|
|
a.chip:hover { color: var(--fg); border-color: var(--fg-muted); }
|
|
.chip-kev {
|
|
font-weight: 500;
|
|
color: var(--danger);
|
|
background: rgba(248, 81, 73, .1);
|
|
border-color: rgba(248, 81, 73, .4);
|
|
}
|
|
|
|
.result-body { padding: 16px; min-width: 0; }
|
|
.result-desc {
|
|
margin: 0;
|
|
max-width: 96ch;
|
|
font: 400 13.5px/1.6 var(--sans);
|
|
color: var(--fg-muted);
|
|
max-height: 3.2em;
|
|
overflow: hidden;
|
|
text-wrap: pretty;
|
|
}
|
|
.result-desc.is-open { max-height: none; }
|
|
.expander {
|
|
margin-top: 8px;
|
|
background: transparent;
|
|
border: 0;
|
|
padding: 0;
|
|
cursor: pointer;
|
|
font: 400 11px/1 var(--mono);
|
|
color: var(--accent);
|
|
}
|
|
.expander:hover { color: var(--accent-hover); }
|
|
|
|
.poc-list { margin-top: 14px; border-top: 1px solid var(--border-muted); }
|
|
.poc-row {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) 78px 52px;
|
|
gap: 14px;
|
|
align-items: center;
|
|
padding: 9px 0;
|
|
border-bottom: 1px solid var(--border-muted);
|
|
}
|
|
.poc-name {
|
|
min-width: 0;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
font: 400 12.5px/1 var(--mono);
|
|
color: var(--fg-muted);
|
|
}
|
|
.poc-sep { color: var(--neutral); }
|
|
.poc-name a { color: var(--fg); font-weight: 500; }
|
|
.poc-name a:hover { color: var(--accent); }
|
|
.poc-name a.plain { color: var(--fg-muted); font-weight: 400; }
|
|
.poc-name a.plain:hover { color: var(--accent); }
|
|
.poc-stars { text-align: right; font: 400 12px/1 var(--mono); color: var(--fg-muted); }
|
|
.poc-stars.is-popular { color: var(--attention); }
|
|
.star { color: var(--neutral); }
|
|
.poc-age { text-align: right; font: 400 11.5px/1 var(--mono); color: var(--fg-muted); }
|
|
.poc-more {
|
|
display: block;
|
|
width: 100%;
|
|
text-align: left;
|
|
background: transparent;
|
|
border: 0;
|
|
padding: 9px 0 0;
|
|
cursor: pointer;
|
|
font: 400 11px/1 var(--mono);
|
|
color: var(--fg-muted);
|
|
}
|
|
.poc-more:hover { color: var(--accent); }
|
|
|
|
/* ---- state B: nothing matched ------------------------------------------- */
|
|
|
|
.empty {
|
|
padding: 44px 16px;
|
|
text-align: center;
|
|
font: 400 13px/1 var(--mono);
|
|
color: var(--fg-muted);
|
|
}
|
|
|
|
/* ---- state C: trending -------------------------------------------------- */
|
|
|
|
.trend-controls {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 14px;
|
|
flex-wrap: wrap;
|
|
margin-bottom: 14px;
|
|
}
|
|
.switch { display: flex; border: 1px solid var(--border); border-radius: 4px; overflow: hidden; }
|
|
.switch button {
|
|
border: 0;
|
|
padding: 7px 12px;
|
|
cursor: pointer;
|
|
font: 500 10.5px/1 var(--mono);
|
|
letter-spacing: .06em;
|
|
background: transparent;
|
|
color: var(--fg-muted);
|
|
}
|
|
.switch button[aria-pressed="true"] { background: var(--accent-emphasis); color: #ffffff; }
|
|
.trend-note {
|
|
flex: none;
|
|
white-space: nowrap;
|
|
font: 400 11.5px/1 var(--mono);
|
|
color: var(--fg-muted);
|
|
}
|
|
|
|
.trending .col-head, .trend-row {
|
|
grid-template-columns: 74px 96px 300px minmax(0, 1fr);
|
|
gap: 18px;
|
|
}
|
|
.trend-row {
|
|
display: grid;
|
|
align-items: center;
|
|
padding: 10px 16px;
|
|
border-bottom: 1px solid var(--border-muted);
|
|
}
|
|
.trend-row:last-child { border-bottom: 0; }
|
|
.trend-row:hover { background: var(--canvas-subtle); }
|
|
.col-stars { text-align: right; }
|
|
.trend-stars {
|
|
text-align: right;
|
|
white-space: nowrap;
|
|
font: 500 12.5px/1 var(--mono);
|
|
color: var(--fg-muted);
|
|
}
|
|
.trend-stars.is-popular { color: var(--attention); }
|
|
.trend-age { white-space: nowrap; font: 400 12px/1 var(--mono); color: var(--fg-muted); }
|
|
.trend-name {
|
|
font: 500 12.5px/1 var(--mono);
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.trend-desc {
|
|
font: 400 12.5px/1.4 var(--sans);
|
|
color: var(--fg-muted);
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
/* ---- footer ------------------------------------------------------------- */
|
|
|
|
.site-footer { border-top: 1px solid var(--border-muted); padding: 14px 0; }
|
|
.site-footer .container {
|
|
display: flex;
|
|
gap: 20px;
|
|
flex-wrap: wrap;
|
|
font: 400 11px/1.6 var(--mono);
|
|
color: var(--fg-muted);
|
|
}
|
|
.site-footer span:last-child { margin-left: auto; }
|
|
|
|
/* ---- narrow viewports --------------------------------------------------- */
|
|
|
|
@media (max-width: 900px) {
|
|
.container { padding: 0 16px; }
|
|
.results .col-head { display: none; }
|
|
.result-row { grid-template-columns: 1fr; }
|
|
.result-meta { border-right: 0; border-bottom: 1px solid var(--border-muted); }
|
|
.trending .col-head, .trend-row { grid-template-columns: 70px 92px minmax(0, 1fr); }
|
|
.col-desc, .trend-desc { display: none; }
|
|
}
|
|
|
|
@media (max-width: 620px) {
|
|
.trending .col-head, .trend-row { grid-template-columns: 66px minmax(0, 1fr); }
|
|
.col-updated, .trend-age { display: none; }
|
|
.search-status { display: none; }
|
|
}
|