:root{--paper: #faf8f3;--paper-2: #f3efe6;--ink: #1a1916;--ink-soft: #4a4842;--ink-faint: #8c887d;--rule: #ddd7c9;--accent: #0f5c5b;--accent-soft: #e4eeec;--review: #7c2128;--review-soft: #f3e3e1;--serif: "Newsreader", Georgia, "Times New Roman", serif;--sans: "IBM Plex Sans", system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, monospace;--maxw: 980px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif);font-size:18px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}.masthead{border-bottom:2px solid var(--ink);padding:56px 0 22px}.kicker{font-family:var(--mono);font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin:0 0 10px}.masthead h1{font-family:var(--serif);font-weight:500;font-size:clamp(34px,5vw,54px);line-height:1.04;letter-spacing:-.015em;margin:0}.masthead .sub{font-family:var(--sans);font-size:15px;color:var(--ink-soft);margin:14px 0 0;max-width:60ch}.controls{position:sticky;top:0;z-index:20;background:var(--paper);border-bottom:1px solid var(--rule);padding:16px 0;margin-bottom:4px}.search-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.search-box{flex:1 1 320px;font-family:var(--sans);font-size:16px;padding:11px 14px;border:1px solid var(--rule);border-radius:2px;background:#fff;color:var(--ink)}.search-box:focus{outline:2px solid var(--accent);border-color:var(--accent)}.count{font-family:var(--mono);font-size:13px;color:var(--ink-soft);white-space:nowrap}.facets{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.chip{font-family:var(--sans);font-size:13px;padding:6px 12px;border:1px solid var(--rule);border-radius:100px;background:#fff;color:var(--ink-soft);cursor:pointer;transition:all .12s ease;user-select:none}.chip:hover{border-color:var(--accent);color:var(--accent)}.chip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}.meta-row{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-top:12px}.select{font-family:var(--sans);font-size:13px;padding:7px 10px;border:1px solid var(--rule);border-radius:2px;background:#fff;color:var(--ink)}.clear-btn{font-family:var(--sans);font-size:13px;background:none;border:none;color:var(--review);cursor:pointer;padding:7px 4px;text-decoration:underline}.year-group{margin-top:38px}.year-head{font-family:var(--mono);font-size:13px;letter-spacing:.1em;color:var(--accent);border-bottom:1px solid var(--rule);padding-bottom:8px;margin:0 0 14px}.pub{padding:16px 0;border-bottom:1px solid var(--rule);display:grid;grid-template-columns:1fr;gap:6px}.pub.hidden,.year-group.hidden{display:none}.pub .title{font-size:19px;font-weight:500;line-height:1.32;margin:0}.pub .title a{color:var(--ink);text-decoration:none;background-image:linear-gradient(var(--accent),var(--accent));background-size:0 1px;background-repeat:no-repeat;background-position:0 100%;transition:background-size .2s}.pub .title a:hover{background-size:100% 1px}.pub .authors{font-family:var(--sans);font-size:14px;color:var(--ink-soft);margin:0}.pub .venue{font-family:var(--sans);font-size:13.5px;color:var(--ink-soft);margin:0}.pub .venue .journal{font-style:italic;color:var(--ink)}.pub .tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.tag{font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--accent);background:var(--accent-soft);padding:2px 8px;border-radius:2px}.tag.type{color:var(--ink-soft);background:var(--paper-2)}.idlinks{font-family:var(--mono);font-size:12px;display:flex;gap:14px;margin-top:2px}.idlinks a{color:var(--accent);text-decoration:none}.idlinks a:hover{text-decoration:underline}.flag-review{font-family:var(--mono);font-size:11px;color:var(--review);background:var(--review-soft);padding:2px 8px;border-radius:2px}.empty{font-family:var(--sans);color:var(--ink-soft);padding:60px 0;text-align:center}footer{border-top:2px solid var(--ink);margin-top:64px;padding:28px 0 64px;font-family:var(--sans);font-size:13px;color:var(--ink-soft)}footer a{color:var(--accent)}@media (max-width: 600px){body{font-size:17px}.masthead{padding:36px 0 18px}}
