/* The vulnerability pages' own rules, on top of the site's stylesheet (the
   shell's <link> lines come first) or the fallback one. Everything is under
   .vf, the content block inside <main>, so nothing here reaches the site's
   header, footer or cookie bar. The tokens (--line, --muted, --red, ...) are
   the site's. Layout and look are reports/vulnfeed-mock, accepted by Arif
   on 2026-10-24; the width is the site's .wrap. */
.vf{padding-bottom:40px}
.vf .head{padding:40px 0 20px}
.vf .head--entry{padding-top:14px}
.vf h1{font-size:clamp(1.7rem,3vw,2.3rem);line-height:1.15;margin:8px 0 0}
.vf h2{font-size:1.15rem;margin:30px 0 10px;letter-spacing:-.01em}
.vf p{margin:0}
.vf .lede{color:var(--muted);margin-top:10px;font-size:1.02rem}
.vf .crumb{font-size:.82rem;color:var(--muted);padding-top:22px}
.vf .crumb a{color:var(--accent-2)}
.vf a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* severity pills */
.vf .pill{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;padding:2px 8px;border-radius:999px;border:1px solid var(--line);background:var(--surface)}
.vf .pill--crit{background:var(--red-soft);color:var(--red);border-color:var(--red-bd)}
.vf .pill--high{background:#f59e0b1a;color:#7a4b00;border-color:#f59e0b66}
.vf .pill--med{background:#eab3081a;color:#6b5200;border-color:#eab30866}
.vf .pill--low{background:var(--accent-soft);color:var(--accent-2);border-color:var(--accent-bd)}
.vf .pill--gone{background:#5F7C781a;color:var(--muted);border-color:#5F7C7866}

/* stats strip */
.vf .stats{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin:22px 0 18px}
.vf .stat{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:var(--surface)}
.vf .stat b{display:block;font-size:1.6rem;font-weight:600;letter-spacing:-.02em;line-height:1.1}
.vf .stat span{font-size:.78rem;color:var(--muted)}
.vf .stat--crit b{color:var(--red)}
.vf .stat--db{background:var(--bg-raise);border-color:var(--accent-bd)}
.vf .stat--db b{font-size:1rem;font-family:var(--mono);margin-top:4px}

/* The severity cards are the list's filters: links, the listed one marked
   (aria-current) with the accent border. */
.vf a.stat{display:block;color:inherit;text-decoration:none;transition:border-color .15s,background-color .15s}
.vf a.stat:hover{border-color:var(--accent-bd);background:var(--bg-raise)}
.vf a.stat[aria-current]{border-color:var(--accent-2);box-shadow:inset 0 0 0 1px var(--accent-2);background:var(--bg-raise)}
.vf a.stat:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* control row: the search takes the width the button leaves */
.vf .ctl{display:flex;gap:10px;align-items:stretch;margin:0 0 18px}
.vf .ctl__q{flex:1 1 auto;min-width:0;height:44px;padding:0 14px 0 40px;border:1px solid var(--line-2,var(--line));border-radius:8px;background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235F7C78' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") no-repeat 13px center/18px 18px;color:var(--text);font:inherit;font-size:.95rem}
.vf .ctl__q::placeholder{color:var(--muted)}
.vf .ctl__q:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}
.vf .ctl .btn{flex:none;font:inherit;font-weight:600;cursor:pointer}

/* list table */
.vf .tbl{width:100%;border-collapse:collapse;font-size:.93rem}
.vf .tbl th{text-align:left;font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding:10px 12px;border-bottom:1px solid var(--line)}
.vf .tbl td{padding:14px 12px;border-bottom:1px solid var(--line);vertical-align:top}
.vf .tbl tr:hover td{background:var(--bg-raise)}
.vf .id{font-family:var(--mono);font-size:.86rem;color:var(--accent-2);white-space:nowrap}
.vf .t{font-weight:500}
.vf .sub{display:block;color:var(--muted);font-size:.82rem;margin-top:2px}
.vf .src{font-size:.82rem;color:var(--muted)}
.vf .src--note{margin-top:8px}
.vf .score{display:block;font-family:var(--mono);font-size:.76rem;color:var(--muted);margin-top:2px}
.vf .when{white-space:nowrap;font-size:.86rem}
.vf .when small{display:block;color:var(--muted);font-size:.76rem}
.vf .empty{color:var(--muted);padding:28px 0 40px}

/* pager */
.vf .pager{display:flex;justify-content:flex-end;gap:6px;padding:18px 0 40px;font-size:.88rem}
.vf .pager a,.vf .pager span{padding:6px 11px;border:1px solid var(--line);border-radius:6px}
.vf .pager span[aria-current]{background:var(--ink);color:#fff;border-color:var(--ink)}
.vf .pager .gap{border:0;background:none;color:var(--muted)}

/* record page */
.vf .grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:36px;padding-bottom:48px}
.vf .meta{display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:14px;font-size:.88rem;color:var(--muted)}
.vf .meta b{color:var(--text);font-weight:500}
.vf .banner{margin-top:22px;border:1px solid var(--line);border-left:3px solid var(--accent-2);border-radius:0 10px 10px 0;padding:10px 14px;background:var(--bg-raise);font-size:.92rem}
.vf .banner--gone{border-left-color:var(--red-bd);background:var(--red-soft)}
.vf .banner b{font-weight:600}
.vf .banner span{display:block;color:var(--muted);font-size:.84rem}
.vf .since{margin-top:20px;border:1px solid var(--accent-bd);background:var(--bg-raise);border-radius:12px;padding:14px 18px;display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:center}
.vf .since svg{width:34px;height:34px;stroke:var(--accent-2);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.vf .since b{display:block;font-weight:600}
.vf .since span{display:block;color:var(--muted);font-size:.86rem}
.vf .desc{line-height:1.6;white-space:pre-line}
.vf .sev{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;margin-top:6px}
.vf .sev div{border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.vf .sev small{display:block;font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.vf .sev b{font-size:1.25rem;font-weight:600}
.vf .sev span{display:block;font-size:.78rem;color:var(--muted);font-family:var(--mono);word-break:break-all}
.vf .pk{width:100%;border-collapse:collapse;font-size:.88rem}
.vf .pk th{text-align:left;font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding:8px 10px;border-bottom:1px solid var(--line)}
.vf .pk td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top}
.vf .pk td:last-child{font-family:var(--mono);font-size:.82rem}
.vf .pk td.nofix{font-family:var(--sans);color:var(--muted);font-size:.84rem}
.vf .refs{list-style:none;padding:0;margin:0;font-size:.86rem;display:grid;gap:6px}
.vf .refs li{color:var(--muted)}
.vf .refs a{color:var(--accent-2);word-break:break-all}
.vf details>summary{cursor:pointer;color:var(--accent-2);font-size:.86rem;margin-top:8px;list-style-position:inside}
.vf details>.pk,.vf details>.refs{margin-top:8px}
.vf code{font-family:var(--mono);font-size:.86em}

/* the side box */
.vf .box{border:1px solid var(--line);border-radius:14px;padding:22px 24px;background:var(--surface);position:sticky;top:calc(var(--nav-h, 0px) + 20px)}
.vf .box h2.box__title{font-size:1.05rem;font-weight:600;margin:0 0 6px;letter-spacing:0}
.vf .box p.lead{color:var(--muted);font-size:.9rem;margin-bottom:14px}
.vf .box ol{padding-left:0;margin:0;list-style:none;display:grid;gap:12px}
.vf .box li{display:grid;grid-template-columns:28px 1fr;gap:10px;font-size:.9rem}
.vf .box li i{width:28px;height:28px;border-radius:8px;background:var(--accent-soft);color:var(--accent-2);display:grid;place-items:center;font-style:normal;font-family:var(--mono);font-size:.72rem}
.vf .box li b{display:block;font-weight:600}
.vf .box li span{color:var(--muted);font-size:.84rem}
.vf .blind{margin-top:16px;border-left:3px solid var(--red-bd);padding:8px 12px;background:var(--red-soft);border-radius:0 8px 8px 0;font-size:.84rem;color:var(--text)}
.vf .box .btn{width:100%;margin-top:18px}
.vf .box .btn--ghost{margin-top:8px}

/* 404 */
.vf .nf{padding:56px 0 72px}
.vf .nf .btn{margin-top:22px}

/* the data attribution, on every page */
.vf .vf-attr{color:var(--muted);font-size:.76rem;line-height:1.5;border-top:1px solid var(--line);padding-top:14px;margin-top:8px}

/* Long tokens (URLs, package lists, version strings, IDs without spaces)
   wrap anywhere rather than widen a phone's page. */
.vf .desc,.vf .lede,.vf .refs,.vf .refs li,.vf .t,.vf .sub,.vf .src,.vf .pk td,.vf .sev span,.vf .meta,.vf .since b,.vf .since span,.vf .box span,.vf .crumb,.vf h1{overflow-wrap:anywhere}

@media (max-width:960px){
  .vf .grid{grid-template-columns:minmax(0,1fr);gap:8px}
  .vf .box{position:static}
  .vf .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .vf .stat--db{grid-column:1/-1}
}
@media (max-width:760px){
  /* The tables become one card per row; each cell names its column. */
  .vf .tbl,.vf .tbl tbody,.vf .tbl tr,.vf .tbl td,.vf .pk,.vf .pk tbody,.vf .pk tr,.vf .pk td{display:block;width:100%}
  .vf .tbl thead,.vf .pk thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .vf .tbl tr{border:1px solid var(--line);border-radius:12px;padding:6px 14px;margin-bottom:12px}
  .vf .tbl td{border-bottom:0;padding:6px 0}
  .vf .tbl tr:hover td{background:transparent}
  .vf .tbl td[data-label]::before,.vf .pk td[data-label]::before{content:attr(data-label);display:block;font-family:var(--mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
  .vf .when{white-space:normal}
  .vf .pk tr{border-bottom:1px solid var(--line);padding:8px 0}
  .vf .pk td{border-bottom:0;padding:2px 0}
  .vf .pager{justify-content:center;flex-wrap:wrap}
  .vf .meta{gap:6px 16px}
}
