:root { --ink:#202d27; --paper:#faf9f5; --moss:#315c4a; --line:#d9ddd4; --muted:#59655d; --tint:#edf1e9; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:104px; }
body { margin:0; color:var(--ink); background:var(--paper); font:16px/1.75 Manrope,Arial,sans-serif; }
a { color:var(--moss); text-underline-offset:4px; transition:color .16s ease, background-color .16s ease, border-color .16s ease; }
a:hover { text-decoration-thickness:2px; }
a:focus-visible { outline:2px solid var(--moss); outline-offset:5px; }
h1,h2,h3,p { margin-top:0; }
h1,h2 { font-family:Fraunces,Georgia,serif; font-weight:500; line-height:1.2; letter-spacing:-.025em; }
h1 { font-size:clamp(2rem,4vw,2.7rem); margin-bottom:10px; }
h2 { font-size:1.95rem; margin-bottom:24px; color:var(--moss); }
h3 { font-size:1rem; line-height:1.6; font-weight:600; margin-bottom:6px; }
p { margin-bottom:16px; }
.site-header { position:sticky; top:0; z-index:20; background:var(--paper); max-width:1000px; margin:auto; padding:24px 32px; display:flex; align-items:center; justify-content:space-between; gap:20px; border-bottom:1px solid var(--line); }
.wordmark { color:var(--ink); font-size:14px; font-weight:700; text-decoration:none; }
nav { display:flex; flex-wrap:wrap; gap:12px 22px; font-size:13px; }
nav a { text-decoration:none; }
nav a:hover { text-decoration:underline; }
main { max-width:936px; margin:auto; padding:0 32px; }
.hero { padding:56px 0 46px; }
.hero h1 { margin-bottom:16px; }
.hero-grid { display:grid; grid-template-columns:minmax(0,1fr) 180px; gap:42px; align-items:start; }
.position { color:var(--moss); font-size:15px; font-weight:600; margin-bottom:6px; }
.affiliation { border-left:2px solid #b3c3ad; padding-left:14px; color:var(--muted); font-size:14px; line-height:1.6; margin-bottom:22px; }
.profile-photo { margin:8px 0 0; }
.profile-photo img { width:100%; aspect-ratio:4/5; object-fit:cover; object-position:58% center; border-radius:5px; display:block; }
.profile-links { align-items:center; margin-top:24px; display:flex; flex-wrap:wrap; gap:8px 20px; font-size:14px; }
.statement,.works,.outputs,.contact { padding:38px 0; }
.statement { border-top:1px solid var(--line); }
.works,.contact { border-top:1px solid var(--line); }
.section-heading { display:flex; align-items:baseline; justify-content:space-between; gap:20px; margin-bottom:22px; }
.section-heading h2 { margin:0; }
.text-link { font-size:13px; }
.publication-list { list-style:none; padding:0; margin:0; }
.publication-list li + li { margin-top:28px; padding-top:28px; border-top:1px solid var(--line); }
.publication { display:grid; grid-template-columns:146px minmax(0,1fr); gap:24px; align-items:start; }
.publication-figure { padding:7px; background:#fff; border:1px solid var(--line); border-radius:4px; }
.publication-figure img { display:block; width:100%; height:104px; object-fit:contain; }
.publication-list h3 { font-family:Fraunces,Georgia,serif; font-size:1.2rem; font-weight:500; line-height:1.4; margin-bottom:10px; }
.publication-copy { min-width:0; }
.publication-copy > .text-link { display:inline-block; margin-top:8px; font-weight:600; }
.publication-list h3 a { color:var(--ink); text-decoration:none; }
.publication-list h3 a:hover { color:var(--moss); text-decoration:underline; }
.publication-list p { font-size:13px; margin-bottom:3px; color:var(--muted); }
.publication-list strong { color:var(--ink); }
.publication-list p:has(em) { color:var(--moss); margin-top:6px; }
.outputs-head p { color:var(--muted); font-size:14px; }
.output-list a { display:grid; grid-template-columns:58px minmax(0,1fr); gap:5px 20px; padding:20px 0; border-bottom:1px solid var(--line); text-decoration:none; }
.output-list a:last-child { border-bottom:0; padding-bottom:0; }
.output-list a:hover { background:#f2f4ee; }
.output-list a:hover strong { text-decoration:underline; text-underline-offset:4px; }
.output-list span { color:var(--moss); font:500 12px/1.8 "DM Mono",monospace; background:var(--tint); border-radius:3px; padding:3px 8px; align-self:start; justify-self:start; }
.output-list strong { font-size:15px; font-weight:600; line-height:1.6; }
.output-list small { display:block; color:var(--muted); font-size:13px; font-weight:400; margin-top:3px; }
.output-list em { grid-column:2; font-size:12px; color:var(--muted); font-style:normal; }
.contact-intro { font-size:14px; }
.contact-details { display:flex; gap:40px; flex-wrap:wrap; font-size:14px; }
.contact-details p { margin:0; }
footer { max-width:936px; margin:auto; padding:20px 32px 32px; border-top:1px solid var(--line); color:var(--muted); font-size:12px; display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:16px; }
.visitor-counter { display:inline-flex; }
.visitor-counter img { max-width:100%; }
.skip-link { position:fixed; z-index:30; top:-60px; left:16px; padding:8px; background:var(--paper); }
.skip-link:focus { top:8px; }
.output-page { padding-top:40px; padding-bottom:40px; }
.output-page h1 { font-size:clamp(1.8rem,4vw,2.7rem); margin:16px 0; }
.back-link { font-size:14px; }
.eyebrow { font-size:12px; color:var(--muted); margin:24px 0 8px; }
.event-meta { font-size:14px; color:var(--muted); }
.output-summary { margin:28px 0; }
.materials,.script { border-top:1px solid var(--line); }
.material { display:grid; grid-template-columns:1fr auto; gap:20px; align-items:center; padding:20px 0; border-bottom:1px solid var(--line); }
.material h2 { font-size:1.2rem; margin:0 0 6px; }
.material p,.script p { font-size:14px; color:var(--muted); margin-bottom:0; }
.material-link { font-size:13px; }
.script { margin-top:30px; padding-top:24px; }
.script pre { padding:20px; background:#eeeee7; white-space:pre-wrap; overflow-wrap:anywhere; font:13px/1.7 monospace; }
@media(max-width:640px) {
 html { scroll-padding-top:158px; }
 .site-header { display:block; padding:20px 24px; }
 nav { margin-top:12px; gap:8px 16px; }
 main { padding:0 24px; }
 .hero { padding-top:30px; }
 .hero-grid { grid-template-columns:1fr; gap:24px; }
 .profile-photo { grid-row:1; width:112px; margin:0; }
 .section-heading { gap:12px; }
 h2 { font-size:1.7rem; }
 .statement,.works,.outputs,.contact { padding:30px 0; }
 .publication { grid-template-columns:1fr; gap:16px; }
 .publication-figure { width:146px; }
 .output-list a { grid-template-columns:48px minmax(0,1fr); gap:5px 12px; }
 .contact-details { gap:16px; }
 footer { margin:0 24px; padding:20px 0; }
 .output-page { padding-top:28px; padding-bottom:28px; }
 .material { grid-template-columns:1fr; gap:8px; }
}
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } a { transition:none; } }
