:root{--ink:#222;--mute:#666;--line:#e6e6e6;--acc:#a4264f}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;background:#fff;color:var(--ink);font:19px/1.65 "Newsreader",Georgia,serif}
a{color:var(--acc);text-underline-offset:3px}a:hover{color:#6d1233}
a:focus-visible{outline:2px solid var(--acc);outline-offset:3px}
.wrap{max-width:1040px;margin:0 auto;padding:0 24px;display:grid;grid-template-columns:260px 1fr;gap:64px}
aside{position:sticky;top:0;align-self:start;padding:56px 0}
.ph{width:200px;height:200px;border-radius:50%;object-fit:cover;object-position:50% 25%;display:block;box-shadow:0 0 0 1px var(--line)}
h1{font-size:1.9rem;line-height:1.15;margin:22px 0 4px;font-weight:600}
.role{color:var(--mute);margin:0 0 18px;font-size:1rem;line-height:1.4}
.soc{list-style:none;padding:0;margin:0 0 20px;font:400 .95rem/2 "Instrument Sans",system-ui,sans-serif}
.soc li{display:flex;gap:10px;align-items:center}.soc i{font-style:normal;width:22px;text-align:center}
.soc a{color:var(--ink);text-decoration:none}.soc a:hover{color:var(--acc)}
nav{font:600 .9rem "Instrument Sans",system-ui,sans-serif;display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--line);padding-top:16px}
nav a{text-decoration:none;color:var(--mute)}nav a:hover,nav a[aria-current]{color:var(--acc)}
main{padding:56px 0 80px;min-width:0}
h2{font-size:1.7rem;margin:0 0 16px;font-weight:600}
main section{margin-bottom:48px}
h3{font:600 1.05rem "Instrument Sans",system-ui,sans-serif;margin:32px 0 10px;color:var(--ink);border-bottom:1px solid var(--line);padding-bottom:6px}
p{margin:0 0 14px}
.cols{margin:0;padding-left:22px;column-count:2;column-gap:40px;font-size:1.02rem}
.cols li{padding:2px 0;line-height:1.5;break-inside:avoid}.cols li::marker,.pl li::marker{color:var(--acc)}
.news{list-style:none;padding:0;margin:0}
.news li{display:grid;grid-template-columns:110px 1fr;gap:12px;padding:9px 0;border-bottom:1px solid var(--line);font-size:.98rem;line-height:1.5}
.news b{font:600 .85rem "Instrument Sans",system-ui,sans-serif;color:var(--acc);padding-top:2px}
.job{margin-bottom:28px}.job .t{font-weight:600;font-size:1.15rem;line-height:1.3}
.job .m{color:var(--mute);font-size:.92rem;margin-bottom:8px;font-family:"Instrument Sans",system-ui,sans-serif}
.more{font:600 .95rem "Instrument Sans",system-ui,sans-serif}
.trail{font:400 1rem/1.7 ui-monospace,Menlo,Consolas,monospace;margin:0 0 28px}.trail em{display:block}
.open{font:600 .9rem "Instrument Sans",system-ui,sans-serif;margin:0 0 10px}
.pdf{width:100%;height:1100px;border:1px solid var(--line);border-radius:4px;background:#f7f7f7}
footer{color:var(--mute);font-size:.85rem;margin-top:48px}
@media(max-width:820px){.wrap{grid-template-columns:1fr;gap:0}aside{position:static;padding:32px 0 0}.ph{width:150px;height:150px}nav{flex-direction:row;flex-wrap:wrap;gap:6px 18px}main{padding-top:32px}.news li{grid-template-columns:1fr;gap:0}.pdf{height:75vh}}
@media(max-width:560px){.cols{column-count:1}}
/* coursework */
.topics{margin:0 0 6px;padding-left:22px;font-size:1.02rem;line-height:1.55}
.topics li{margin-bottom:8px}.topics li::marker{color:var(--acc)}
/* blog */
.cards{display:grid;gap:20px}
.card{border:1px solid var(--line);border-radius:6px;padding:22px 24px;transition:border-color .15s,box-shadow .15s}
.card:hover{border-color:var(--acc);box-shadow:0 2px 10px rgba(0,0,0,.05)}
.card .d{font:600 .8rem "Instrument Sans",system-ui,sans-serif;color:var(--acc);text-transform:uppercase;letter-spacing:.04em;margin:0 0 6px}
.card h3{border:0;padding:0;margin:0 0 8px;font:600 1.35rem/1.25 "Newsreader",Georgia,serif}
.card h3 a{color:var(--ink);text-decoration:none}.card h3 a:hover{color:var(--acc)}
.card p{margin:0 0 10px;font-size:1rem;color:#444;line-height:1.55}
.card .go{font:600 .9rem "Instrument Sans",system-ui,sans-serif;text-decoration:none}
.post .back{font:600 .9rem "Instrument Sans",system-ui,sans-serif;margin:0 0 22px}
.post .back a{text-decoration:none}
.post h2.ptitle{font-size:2.1rem;line-height:1.2;margin:0 0 8px}
.post h2.ptitle a.red{color:#d32f2f;text-decoration-thickness:2px}
.post h2.ptitle a.red:hover{color:#8e0000}
.post .meta{color:var(--mute);font:400 .9rem "Instrument Sans",system-ui,sans-serif;margin:0 0 28px}
.post h3{font:600 1.3rem "Newsreader",Georgia,serif;border:0;margin:36px 0 10px;padding:0}
.post p,.post li{font-size:1.05rem}
.post ul{padding-left:22px;margin:0 0 16px}.post ul li{margin-bottom:6px}.post ul li::marker{color:var(--acc)}
.post blockquote{margin:20px 0;padding:4px 0 4px 18px;border-left:3px solid var(--acc);color:#444;font-style:italic}
.post table{border-collapse:collapse;width:100%;margin:18px 0 24px;font:400 .92rem/1.4 "Instrument Sans",system-ui,sans-serif}
.post th,.post td{border-bottom:1px solid var(--line);padding:8px 10px;text-align:left}
.post th{font-weight:600;color:var(--mute)}
.post .note{font-size:.9rem;color:var(--mute);border-top:1px solid var(--line);padding-top:14px;margin-top:40px}
.post .meta{line-height:1.5}

.post .ctx{font-size:.95em;border-left:3px solid #d32f2f;padding:.4em 0 .4em .9em;margin:1em 0 1.4em;color:inherit;opacity:.9}

.post figure{margin:26px 0 30px;padding:0}
.post figure img{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:8px;background:#fff}
.post figcaption{font:400 .88rem/1.5 "Instrument Sans",system-ui,sans-serif;color:var(--mute);margin-top:8px}
