:root{--bg:#ffffff;--fg:#1d1f23;--muted:#5d6570;--rule:#e5e7eb;--accent:#1a5fb4;--chip:#f1f3f6;--serif:"Iowan Old Style", "Charter", "Bitstream Charter", Georgia, serif;--sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}@media(prefers-color-scheme:dark){:root{--bg:#15171b;--fg:#e4e6ea;--muted:#9aa2ad;--rule:#2b2f36;--accent:#82b1ff;--chip:#22262d}}*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.6 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:2px}.wrap{max-width:760px;margin:0 auto;padding:56px 20px 32px}.intro{display:flex;gap:28px;align-items:center}.photo{width:136px;height:136px;border-radius:50%;object-fit:cover;flex:none}h1{font:600 2.15rem/1.15 var(--serif);letter-spacing:-.01em;margin:0 0 4px}.role{color:var(--muted);font-size:1.05rem;margin:0 0 12px}.links{display:flex;flex-wrap:wrap;gap:4px 18px;list-style:none;margin:0;padding:0;font-size:.92rem}.links li:first-child{color:var(--muted)}.bio{margin-top:28px;font-size:1.02rem}.bio p{margin:0 0 12px}.toc{position:sticky;top:0;z-index:1;background:var(--bg);border-bottom:1px solid var(--rule);margin-top:32px}.toc ul{display:flex;gap:22px;list-style:none;margin:0;padding:12px 0;overflow-x:auto;font-size:.9rem}.toc a{color:var(--muted)}.toc a:hover{color:var(--accent)}section{padding-top:40px;scroll-margin-top:36px}h2{font:600 1.4rem/1.2 var(--serif);margin:0 0 18px;padding-bottom:8px;border-bottom:1px solid var(--rule)}.entry{display:grid;grid-template-columns:56px 1fr;gap:0 20px;margin-bottom:18px}.year{color:var(--muted);font-size:.9rem;font-variant-numeric:tabular-nums;padding-top:2px}.title{font-weight:600;line-height:1.4}.title a{color:var(--fg)}.title a:hover{color:var(--accent)}.authors{font-size:.93rem;margin-top:2px}.authors a{color:inherit}.authors a:hover{color:var(--accent)}.authors strong{font-weight:600}.meta{color:var(--muted);font-size:.9rem;margin-top:1px}.meta a{color:inherit;text-decoration:underline;text-decoration-color:var(--rule);text-underline-offset:2px}.meta a:hover{color:var(--accent);text-decoration-color:initial}.cve-ids{font-family:var(--mono);font-size:.82rem}.tags{display:inline-flex;flex-wrap:wrap;gap:6px;margin-left:4px;vertical-align:1px}.tags a,.kind{font:600 .7rem/1.6 var(--sans);letter-spacing:.04em;text-transform:uppercase;border-radius:4px;padding:0 7px;white-space:nowrap}.tags a{background:var(--chip);color:var(--muted)}.tags a:hover{color:var(--accent);text-decoration:none}.kind{border:1px solid var(--rule);color:var(--muted);vertical-align:1px;margin-left:4px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.card{display:block;border:1px solid var(--rule);border-radius:8px;padding:14px 16px;color:var(--fg);transition:border-color .15s}.card:hover{border-color:var(--accent);text-decoration:none}.card .title{display:block;color:var(--accent)}.card .desc{display:block;color:var(--muted);font-size:.9rem;line-height:1.45;margin-top:4px}.footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;margin-top:56px;padding-top:16px;border-top:1px solid var(--rule);color:var(--muted);font-size:.85rem}.footer a{color:inherit}.notfound pre{color:var(--muted);font:.8rem/1.2 var(--mono);overflow-x:auto}.notfound img{max-width:100%;height:auto;border-radius:8px}@media(max-width:560px){.wrap{padding-top:32px}.intro{flex-direction:column;align-items:flex-start;gap:16px}.photo{width:96px;height:96px}h1{font-size:1.85rem}.entry{grid-template-columns:1fr}.year:empty{display:none}.year{color:var(--fg);font-weight:600;padding:4px 0 6px}}@media print{.toc{display:none}.wrap{padding-top:0}}