:root {
  --bg: #ffffff;
  --fg: #111827;
  --muted: #4b5563;
  --line: #e5e7eb;
  --soft: #f3f4f6;
  --accent: #1d4ed8;
  --accent-fg: #ffffff;
  --red: #b91c1c;
  --red-bg: #fee2e2;
  --orange: #c2410c;
  --orange-bg: #ffedd5;
  --amber: #a16207;
  --amber-bg: #fef9c3;
  --green: #15803d;
  --green-bg: #dcfce7;
  --gray: #4b5563;
  --gray-bg: #f3f4f6;
  color-scheme: light dark;
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg: #0b0f17;
    --fg: #e5e7eb;
    --muted: #9ca3af;
    --line: #1f2937;
    --soft: #111827;
    --accent: #93c5fd;
    --accent-fg: #0b0f17;
    --red: #fca5a5;
    --red-bg: #3f1212;
    --orange: #fdba74;
    --orange-bg: #3d1d0b;
    --amber: #fde047;
    --amber-bg: #332b07;
    --green: #86efac;
    --green-bg: #0c2e18;
    --gray: #d1d5db;
    --gray-bg: #1f2937;
  }
}

* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--fg); font: 16px/1.6 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; }
a { color: var(--accent); }
code, pre { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.875em; }
h1, h2 { line-height: 1.25; font-weight: 650; }
h1 { font-size: 2rem; margin: 0 0 0.5rem; }
h2 { font-size: 1.15rem; margin: 2rem 0 0.75rem; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

.top, main > section, footer { max-width: 760px; margin: 0 auto; padding-inline: 1rem; }
.top { display: flex; justify-content: space-between; align-items: center; padding-block: 1rem; }
.top nav { display: flex; gap: 1.25rem; }
.top nav a { color: var(--muted); text-decoration: none; }
.top nav a:hover { color: var(--fg); }
.brand { font-weight: 750; font-size: 1.2rem; color: var(--fg); text-decoration: none; }
.brand span { color: var(--accent); }

main > section { padding-block: 1.5rem; }
.hero { text-align: center; padding-block: 3.5rem 2.5rem !important; }
.hero h1 { font-size: clamp(2rem, 6vw, 2.75rem); }
.lead { color: var(--muted); font-size: 1.05rem; margin: 0 0 1.25rem; }
.small { color: var(--muted); font-size: 0.875rem; }
.try { color: var(--muted); font-size: 0.9rem; }
.try a { margin: 0 0.35rem; }

.search { display: flex; gap: 0.5rem; max-width: 560px; margin: 0 auto 1rem; }
section:not(.hero) > .search { margin-inline: 0; }
input { flex: 1; min-width: 0; font: inherit; color: var(--fg); background: var(--bg); border: 1px solid var(--line); border-radius: 8px; padding: 0.65rem 0.8rem; }
button { font: inherit; font-weight: 600; border-radius: 8px; padding: 0.6rem 1rem; cursor: pointer; background: var(--bg); color: var(--fg); border: 1px solid var(--line); }
button:disabled { cursor: default; opacity: 0.7; }
.primary { background: var(--accent); color: var(--accent-fg); border-color: transparent; }
.secondary { margin-top: 0.5rem; }
input:focus, button:focus-visible, a:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

.panel { border-top: 1px solid var(--line); }
.snippet { position: relative; background: var(--soft); border-radius: 8px; padding: 0.7rem 4.5rem 0.7rem 0.9rem; margin: 0.5rem 0; }
.snippet pre { margin: 0; white-space: pre-wrap; word-break: break-all; }
.copy { position: absolute; top: 0.4rem; right: 0.4rem; padding: 0.2rem 0.6rem; font-size: 0.8rem; }
.join { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.status { flex-basis: 100%; margin: 0; min-height: 1.4em; font-size: 0.9rem; }
.status.ok { color: var(--green); }
.status.err { color: var(--red); }

.crumbs { color: var(--muted); font-size: 0.875rem; margin-bottom: 1rem; }
.crumbs a { color: var(--muted); }

.result { border: 1px solid var(--line); border-radius: 12px; padding: 1.25rem 1.5rem; margin-bottom: 1rem; }
.what { color: var(--muted); margin: 0 0 0.5rem; }
/* The version page h1 holds "nginx 1.24.0" and the verdict badge, so search engines see both; it adds no style. */
.title { font-size: inherit; font-weight: inherit; line-height: inherit; margin: 0; }
.title .what { display: block; }
.title .verdict { font-weight: 650; line-height: 1.25; }
.verdict { display: inline-block; font-size: 1.35rem; margin: 0 0 0.5rem; padding: 0.15rem 0.7rem; border-radius: 8px; background: var(--gray-bg); color: var(--gray); }
.v-actively_exploited .verdict { background: var(--red-bg); color: var(--red); }
.v-end_of_life .verdict, .v-update_needed .verdict { background: var(--orange-bg); color: var(--orange); }
.v-minor_issues .verdict { background: var(--amber-bg); color: var(--amber); }
.v-no_known_vulnerabilities .verdict { background: var(--green-bg); color: var(--green); }
.meaning { margin: 0 0 1rem; }
.upgrade { font-size: 1.2rem; margin: 0; }
.upgrade + .small { margin-top: 0.15rem; }

.facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: 0.5rem; margin: 1rem 0; }
.facts div { background: var(--soft); border-radius: 8px; padding: 0.5rem 0.75rem; }
.facts dt { font-size: 0.8rem; color: var(--muted); }
.facts dd { margin: 0; font-weight: 600; }

.vulns { list-style: none; padding: 0; margin: 0 0 0.5rem; }
.vulns li { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; padding: 0.4rem 0; border-bottom: 1px solid var(--line); }
.badge { font-size: 0.75rem; font-weight: 700; border-radius: 999px; padding: 0 0.5rem; background: var(--gray-bg); color: var(--gray); }
.badge.critical, .badge.kev { background: var(--red-bg); color: var(--red); }
.badge.high { background: var(--orange-bg); color: var(--orange); }
.badge.medium { background: var(--amber-bg); color: var(--amber); }
.notes { color: var(--muted); font-size: 0.9rem; padding-left: 1.1rem; }

.lines { width: 100%; border-collapse: collapse; font-size: 0.95rem; }
.lines th { text-align: left; font-size: 0.8rem; color: var(--muted); font-weight: 600; }
.lines th, .lines td { padding: 0.45rem 0.5rem 0.45rem 0; border-bottom: 1px solid var(--line); }
.lines .eol td:last-child { color: var(--orange); }

.product-list { list-style: none; padding: 0; margin: 0; columns: 2 14rem; }
.product-list li { padding: 0.2rem 0; break-inside: avoid; }
.votes { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.chip { padding: 0.25rem 0.7rem; font-weight: 500; font-size: 0.875rem; }

details { border-bottom: 1px solid var(--line); padding: 0.7rem 0; }
summary { cursor: pointer; font-weight: 600; }
.agents-line { margin-top: 1.5rem; }

footer { padding-block: 2rem 3rem; margin-top: 2rem; color: var(--muted); font-size: 0.8rem; border-top: 1px solid var(--line); }
footer a { color: var(--muted); }
.credits { padding-left: 1.1rem; }

@media (max-width: 560px) {
  .hero { padding-block: 2rem 1.5rem !important; }
  .search { flex-direction: column; }
  .lines { font-size: 0.875rem; }
}
