:root{--accent:#b31b1b;--ink:#212529;--muted:#6c757d;--faint:#adb5bd;--rule:#e9ecef;--bg:#fff;--soft:#f8f9fa}
*{box-sizing:border-box}
body{margin:0;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;color:var(--ink);background:var(--bg);font-size:16.5px;line-height:1.6}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
img{max-width:100%;display:block}
.nav{border-bottom:1px solid var(--rule);background:#fff;position:sticky;top:0;z-index:10}
.nav .in{max-width:1000px;margin:0 auto;padding:0 24px;height:60px;display:flex;align-items:center;justify-content:space-between}
.nav .brand{font-size:21px;color:var(--ink)}.nav .brand b{font-weight:700}
.nav ul{list-style:none;display:flex;gap:24px;margin:0;padding:0}.nav li a{color:var(--ink);font-size:17px}.nav li a.on{color:var(--accent)}
.page{max-width:1000px;margin:0 auto;padding:44px 24px 60px}
h1{font-weight:300;font-size:46px;margin:0 0 6px}h1 b{font-weight:700}
h2{font-weight:300;font-size:30px;margin:46px 0 14px;display:flex;align-items:baseline;justify-content:space-between}
h2 .more{font-size:14px;font-weight:400}
.desc{color:var(--muted);margin:0 0 24px;font-size:17px}.small{color:var(--muted);font-size:15px}
.hero{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:44px;align-items:start}
.hero p{margin:0 0 14px}
.pic img{width:280px;height:280px;object-fit:cover;border-radius:6px;box-shadow:0 4px 12px rgba(0,0,0,.12)}
.addr{font-family:SFMono-Regular,Menlo,Consolas,monospace;font-size:13.5px;margin-top:14px;line-height:1.5}
.links a{display:inline-block;border:1px solid var(--ink);color:var(--ink);font-size:13px;padding:5px 12px;border-radius:3px;margin:4px 8px 0 0;text-transform:uppercase;letter-spacing:.04em}
.links a:hover{background:var(--ink);color:#fff;text-decoration:none}
.news{display:grid;grid-template-columns:110px minmax(0,1fr);row-gap:12px;column-gap:18px}.news .d{font-weight:700;font-size:15px}
.news.full{row-gap:16px}
.year{text-align:right;color:#ced4da;font-size:30px;font-weight:300;margin:34px 0 -6px}
.pubs{display:flex;flex-direction:column}
.pub{display:grid;grid-template-columns:160px minmax(0,1fr);gap:26px;padding:22px 0;border-bottom:1px solid var(--rule)}
.pub .left{display:flex;flex-direction:column;gap:8px}
.badge{background:var(--accent);color:#fff;font-size:12px;font-weight:700;text-align:center;padding:3px 0;border-radius:2px;letter-spacing:.02em}
.th{position:relative;display:block;border-radius:4px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.15)}
.th img{width:100%;aspect-ratio:17/10;object-fit:cover;transition:transform .25s}.th:hover img{transform:scale(1.04)}
.th span{position:absolute;right:6px;bottom:6px;font-size:11px;text-transform:uppercase;letter-spacing:.05em;background:rgba(33,37,41,.8);color:#fff;padding:2px 7px;border-radius:3px;opacity:0;transition:opacity .2s}.th:hover span{opacity:1}
.pub .t{font-weight:500;font-size:18px;margin:0 0 3px;line-height:1.35}
.pub .au{margin:0 0 2px}.pub .au b{font-weight:500;border-bottom:1px solid var(--ink)}
.pub .ve{margin:0 0 10px;font-style:italic}.pub .ve .st{font-style:normal;color:var(--muted)}
.btns a{display:inline-block;border:1px solid var(--ink);color:var(--ink);font-size:12.5px;padding:3px 10px;border-radius:3px;margin:0 6px 6px 0;text-transform:uppercase;letter-spacing:.03em}
.btns a:hover{background:var(--ink);color:#fff;text-decoration:none}
.aw{display:inline-block;font-size:13px;color:var(--accent);border:1px solid var(--accent);padding:2px 8px;border-radius:3px;margin-top:6px}
.abs{display:none;margin-top:10px;padding:10px 14px;background:var(--soft);border-left:3px solid var(--rule);font-size:15px;color:#343a40}
.pub.open .abs{display:block}
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.card{display:block;border:1px solid var(--rule);border-radius:6px;overflow:hidden;color:var(--ink);transition:box-shadow .2s}.card:hover{box-shadow:0 6px 18px rgba(0,0,0,.12);text-decoration:none}
.card img{width:100%;aspect-ratio:17/10;object-fit:cover}.card .b{padding:12px 14px}.card h4{margin:0 0 6px;font-weight:500;font-size:17px}.card p{margin:0 0 8px;font-size:14.5px;color:var(--muted)}.card .w{font-size:13px;color:var(--faint)}
.tl{display:grid;grid-template-columns:150px minmax(0,1fr);row-gap:14px;column-gap:18px}.tl .when{color:var(--muted);font-size:15px;padding-top:2px}.tl .sub{color:var(--muted)}
ul.plain{padding-left:18px}ul.plain li{margin:6px 0}.mono{font-family:SFMono-Regular,Menlo,Consolas,monospace;font-size:14px;color:var(--muted)}
.btn{display:inline-block;border:1px solid var(--ink);color:var(--ink);padding:8px 16px;border-radius:3px;text-transform:uppercase;letter-spacing:.04em;font-size:14px}.btn:hover{background:var(--ink);color:#fff;text-decoration:none}
.foot{background:#1d1f21;color:#9aa0a6;text-align:center;font-size:13px;padding:16px 24px;line-height:1.6}.foot a{color:#cfd3d8}
.lb{position:fixed;inset:0;background:rgba(15,18,22,.9);display:none;align-items:center;justify-content:center;z-index:50;padding:32px;cursor:zoom-out}
.lb.open{display:flex}.lb img{max-width:100%;max-height:92vh;border-radius:4px;box-shadow:0 12px 40px rgba(0,0,0,.5)}
.lb .cap{position:absolute;left:0;right:0;bottom:10px;text-align:center;color:#cfd5db;font-size:14px}
@media (max-width:760px){.nav ul{gap:12px}.nav li a{font-size:14px}.hero{grid-template-columns:1fr}.pic{order:-1}.pic img{width:180px;height:180px}h1{font-size:36px}.pub{grid-template-columns:1fr;gap:12px}.pub .left{max-width:220px}.cards{grid-template-columns:1fr}.news,.tl{grid-template-columns:1fr;row-gap:4px}.year{text-align:left}}
