:root{--paper:#f7f6f1;--surface:#efeee7;--ink:#252d2a;--muted:#656d66;--accent:#355b48;--line:#d9dcd2;--warm:#a96c43;--serif:Georgia,'Times New Roman',serif;--sans:system-ui,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;color-scheme:light}

/* One typography system: two families, three sizes, five treatments. */
:root{--type-display:clamp(48px,6vw,64px);--type-heading:26px;--type-body:15px}
body,button,input{font-family:var(--sans);font-size:var(--type-body);font-weight:400;font-style:normal;line-height:1.7;letter-spacing:normal}
h1{font-family:var(--serif);font-size:var(--type-display);font-weight:400;font-style:normal;line-height:1.05;letter-spacing:-.04em}
h2,h3,strong,b,.result-statement,.paper h3,.timeline strong,.award-list strong,.eyebrow,.quiet-label,.paper-area,.archive-group>h2,.paper-meta strong,.timeline time,.timeline .period,.outreach-list .outlet,.formal-language,.search-wrap label,.count-label,.filter,.result-status,.all-papers span:first-child,.research-profile .result-summary>li::before,.section-heading h2 .number,.formalisation-related h3 span{font-family:var(--sans);font-size:var(--type-body);font-weight:600;font-style:normal;line-height:1.55;letter-spacing:normal;text-transform:none}
em{font-family:var(--sans);font-size:var(--type-body);font-weight:400;font-style:italic;line-height:1.7;letter-spacing:normal}
.wordmark,.intro .lead,.section-heading h2,.research-item h3,.split h3,.current-work>h3,.contact h2,.contact .email,.formalisation-grid h3,.formalisation-related h3,.explorer-link strong,.archive-highlights>h2,.archive-bibliography>h2,.outreach-list .headline{font-family:var(--serif);font-size:var(--type-heading);font-weight:400;font-style:normal;line-height:1.3;letter-spacing:-.02em}
small{font-size:inherit}
.wordmark .initial{font-style:normal}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:34px}body{margin:0;background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration-color:#9daea1;text-underline-offset:5px;text-decoration-thickness:1px}a:hover{color:var(--accent);text-decoration-color:var(--accent)}button,a,input,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:5px}::selection{background:#d4e1d3}h1,h2,h3,p{margin:0}button{cursor:pointer}svg{vertical-align:middle}.container{max-width:1160px;margin:0 auto;padding:0 48px}.skip{position:fixed;top:-80px;left:16px;z-index:20;background:var(--ink);color:white;padding:10px 18px}.skip:focus{top:10px}.masthead{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:106px;border-bottom:1px solid var(--line)}.wordmark{text-decoration:none;white-space:nowrap}.wordmark .initial{color:var(--accent)}.navigation{display:flex;align-items:center;gap:27px}.navigation a{text-decoration:none;color:var(--muted)}.navigation a:hover,.navigation a[aria-current=page]{color:var(--accent)}.navigation .cv-link{border:1px solid var(--line);padding:7px 13px;color:var(--ink)}.eyebrow{color:var(--accent)}.hero{display:grid;grid-template-columns:1fr 1fr;gap:72px;padding:78px 0 68px;align-items:start}.hero h1{margin:20px 0 26px}.role{color:var(--muted)}.role strong{color:var(--ink);}.intro{padding-top:36px}.intro p+p{margin-top:20px;color:var(--muted);}.text-links{display:flex;flex-wrap:wrap;gap:10px 24px;margin-top:29px;}.text-links a{text-decoration:none;border-bottom:1px solid #9aab9b;padding-bottom:3px}.arrow{display:inline-block;margin-left:5px;}.hero-note{display:flex;align-items:baseline;gap:20px;padding:15px 0;border-top:1px solid var(--line);color:var(--muted)}.hero-note .eyebrow{flex-shrink:0;}.hero-note a{color:var(--accent)}.section{padding:65px 0;border-bottom:1px solid var(--line);scroll-margin-top:25px}.section-heading{display:flex;justify-content:space-between;align-items:baseline;gap:25px;margin-bottom:33px}.section-heading h2 .number{display:inline-block;color:var(--warm);margin-right:17px;vertical-align:middle}.section-heading>a{white-space:nowrap;color:var(--accent)}.research-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:38px}.research-item+.research-item{border-left:1px solid var(--line);padding-left:32px}.research-item h3{margin:15px 0 14px}.research-item p{color:var(--muted);}.research-item>a{display:inline-block;margin-top:19px}.papers{list-style:none;margin:0;padding:0}.paper{display:grid;grid-template-columns:93px 1fr;gap:22px;padding:23px 0;border-top:1px solid var(--line)}.paper:first-child{border-top:0;padding-top:0}.paper:last-child{padding-bottom:0}.paper-meta{padding-top:4px;color:var(--muted)}.paper-meta strong{display:block;color:var(--accent);}.paper h3 a{text-decoration:none}.paper h3 a:hover{text-decoration:underline}.authors{color:var(--muted);margin-top:5px}.authors strong{color:var(--ink)}.paper-links{display:flex;flex-wrap:wrap;gap:7px 18px;margin-top:9px;color:var(--accent)}.paper-links a{text-decoration:none;border-bottom:1px solid var(--line)}.paper-note{color:var(--muted);margin-top:7px}.paper-description{color:var(--muted);margin-top:8px;max-width:68ch}.all-papers{display:flex;justify-content:space-between;align-items:center;gap:25px;margin-top:28px;padding:19px 22px;background:var(--surface);text-decoration:none}.all-papers .arrow{color:var(--accent)}.split{display:grid;grid-template-columns:1fr 1fr;gap:72px}.split h3{margin-bottom:15px}.split p{color:var(--muted);}.split p+p{margin-top:16px}.timeline{list-style:none;padding:0;margin:24px 0 0}.timeline li{display:grid;grid-template-columns:95px 1fr;gap:20px;padding:14px 0;border-top:1px solid var(--line);}.timeline time,.timeline .period{color:var(--muted);padding-top:2px}.timeline strong{display:block;}.timeline small{color:var(--muted);}.timeline a{text-decoration:none}.quiet-label{color:var(--muted);margin-bottom:20px}.student-list{list-style:none;padding:0;margin:22px 0 0}.student-list li{border-top:1px solid var(--line);padding:12px 0}.student-list span{display:block;color:var(--muted)}.outreach-list{list-style:none;margin:0;padding:0}.outreach-list li{padding:16px 0;border-top:1px solid var(--line)}.outreach-list li:first-child{padding-top:0;border:0}.outreach-list a{text-decoration:none;display:flex;justify-content:space-between;gap:20px;align-items:baseline}.outreach-list .outlet{display:block;color:var(--accent);margin-bottom:5px}.outreach-list a:hover .headline{text-decoration:underline;text-underline-offset:4px}.small-links{margin-top:16px;display:flex;gap:17px;flex-wrap:wrap}.recognition{margin-top:26px;padding-top:22px;border-top:1px solid var(--line);color:var(--muted)}.recognition strong{color:var(--ink)}.contact{padding:54px 0 57px;display:grid;grid-template-columns:1fr 1fr;gap:72px}.contact p{color:var(--muted);margin-top:12px;max-width:350px}.contact .email{overflow-wrap:anywhere;text-decoration:none;border-bottom:1px solid #a4b3a6;padding-bottom:6px;display:inline-block}.footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:16px;padding:24px 0 32px;color:var(--muted);}.footer a{text-decoration:none}.archive-intro{padding:62px 0 35px;max-width:720px}.archive-intro h1{margin:14px 0 20px;}.archive-intro p{color:var(--muted)}.archive-controls{margin-bottom:35px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:20px 0}.search-line{display:flex;align-items:center;gap:20px}.search-wrap{position:relative;flex:1}.search-wrap label{display:block;color:var(--muted);margin-bottom:7px}.search-wrap input{width:100%;background:transparent;border:1px solid var(--line);padding:10px 13px;border-radius:0;color:var(--ink)}.count-label{color:var(--muted);white-space:nowrap;padding-top:24px}.filters{display:flex;gap:7px;flex-wrap:wrap;margin-top:17px}.filter{border:1px solid transparent;background:transparent;color:var(--muted);padding:7px 12px;border-radius:2px}.filter:hover{border-color:var(--line)}.filter[aria-pressed=true]{background:var(--accent);color:#fff}.archive-group{margin-bottom:43px}.archive-group>h2{color:var(--accent);margin:0 0 25px}.archive-group .paper:first-child{border-top:1px solid var(--line);padding-top:23px}.empty-state{padding:35px 0 80px;color:var(--muted)}.empty-state button{display:block;margin-top:15px;padding:8px 14px;background:var(--accent);color:#fff;border:0;}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[hidden]{display:none!important}.archive-footer{padding:10px 0 50px;color:var(--muted)}
@media(min-width:1400px){.container{max-width:1220px;padding:0 64px}.hero{padding-top:91px;padding-bottom:75px}}
@media(max-width:900px){.container{padding:0 32px}.hero{gap:38px}.navigation{gap:17px}.split,.contact{gap:40px}.research-grid{gap:22px}.research-item+.research-item{padding-left:22px}}
@media(max-width:650px){.container{padding:0 23px}.masthead{min-height:110px;align-items:flex-start;padding:21px 0 18px;flex-direction:column;gap:14px}.navigation{width:100%;gap:0;justify-content:space-between}.navigation .cv-link{padding:3px 8px}.hero{grid-template-columns:1fr;gap:24px;padding:44px 0 35px}.hero h1{margin:15px 0 17px}.hero h1 br{display:none}.intro{padding-top:0}.intro .lead{max-width:31ch}.intro p+p{margin-top:17px}.text-links{margin-top:23px}.hero-note{gap:10px;align-items:start;}.hero-note .eyebrow{padding-top:3px}.section{padding:43px 0}.section-heading{margin-bottom:25px;align-items:start}.section-heading h2 .number{margin-right:10px;}.section-heading>a{padding-top:9px}.research-grid{grid-template-columns:1fr;gap:25px}.research-item+.research-item{border-left:0;border-top:1px solid var(--line);padding-left:0;padding-top:24px}.research-item h3{margin-top:10px;margin-bottom:10px}.research-item p{max-width:50ch}.research-item>a{margin-top:12px}.paper{grid-template-columns:62px 1fr;gap:16px;padding:20px 0}.all-papers{padding:16px}.split,.contact{grid-template-columns:1fr;gap:34px}.timeline{margin-top:18px}.contact{padding:38px 0;gap:20px}.contact p{max-width:none}.footer{gap:15px}.archive-intro{padding:40px 0 28px}.search-line{gap:12px}.filters{gap:2px}.filter{padding:7px 8px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
@media print{body{background:white;color:black;}.container{max-width:none;padding:0}.navigation,.hero-note,.archive-controls,.all-papers,.skip{display:none}.masthead{min-height:50px}.hero{padding:30px 0;gap:30px}.intro{padding-top:10px}.section{padding:25px 0}.paper,.research-item,.timeline li{break-inside:avoid}a{color:inherit;text-decoration:none}.footer{padding:15px 0}.paper[hidden],.archive-group[hidden]{display:grid!important}.archive-group[hidden]{display:block!important}}
/* Media coverage and the job-market notice */
.hero-note{align-items:start;padding:17px 0}.hero-note .eyebrow{padding-top:2px;color:var(--ink)}.media-intro{max-width:70ch;color:var(--muted);margin:-9px 0 32px}.coverage-note{display:block;color:var(--muted);margin-top:8px}.research-discussion{border-top:1px solid var(--line);margin-top:25px;padding-top:21px}.research-discussion .quiet-label{margin-bottom:11px}.research-discussion .small-links{margin-top:0}.video-links{list-style:none;padding:0;margin:24px 0 0}.video-links li{padding:13px 0;border-top:1px solid var(--line)}.video-links li>span{display:block;color:var(--muted);margin-top:5px}
@media(max-width:650px){.hero-note{flex-direction:column;gap:6px;}}
/* Research contributions and autoformalisation */
.navigation{flex-wrap:wrap;justify-content:flex-end;row-gap:8px}.formal-language{color:var(--muted)}.formalisation-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:56px;align-items:start}.formalisation-grid h3{margin-bottom:18px}.formalisation-grid p{color:var(--muted);}.formalisation-grid p+p{margin-top:14px}.explorer-link{position:relative;display:block;padding:26px 30px 29px;background:var(--surface);border:1px solid var(--line);text-decoration:none}.explorer-link strong{display:block;margin:14px 25px 12px 0}.explorer-link>span:not(.eyebrow):not(.explorer-arrow){display:block;color:var(--muted);max-width:34ch}.explorer-link .explorer-arrow{position:absolute;right:23px;top:23px;color:var(--accent)}.explorer-link:hover{border-color:var(--accent)}.formalisation-links .small-links{gap:12px 20px;margin-top:18px}.current-work{margin-top:33px;padding-top:30px;border-top:1px solid var(--line)}.current-work>h3{margin-bottom:11px}.current-work>p{color:var(--muted);margin-bottom:21px}.current-work .papers{margin-top:22px;margin-bottom:22px}.current-work>p.current-note{margin:14px 0 0}
@media(max-width:900px){.formalisation-grid{gap:30px}.explorer-link{padding:23px}}
@media(max-width:650px){.navigation{justify-content:flex-start;gap:9px 16px}.masthead{min-height:125px}.formalisation-grid{grid-template-columns:1fr;gap:25px}}
/* Group the interlacing results under communication complexity. */
.research-programme-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 44px;align-items:start}.research-programme-grid>.research-item{border:0;padding:0}.research-programme-grid>.research-programme{grid-row:span 2}.research-programme-grid>.research-item:last-child{border-top:1px solid var(--line);padding-top:29px}.research-programme>p+p{margin-top:14px}
@media(max-width:650px){.research-programme-grid{grid-template-columns:1fr;gap:25px}.research-programme-grid>.research-programme{grid-row:auto}.research-programme-grid>.research-item+.research-item{border-top:1px solid var(--line);padding-top:24px}}
.research-item p.efx-context{margin-top:12px;}

/* Formalisation experiments and related work, with clear attribution */
.formal-language{text-align:right}.formalisation-links p.formalisation-scope{margin-top:15px}.formalisation-related{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:36px 56px;border-top:1px solid var(--line);padding-top:29px;margin-top:35px}.formalisation-related h3{margin:10px 0 13px}.formalisation-related h3 a{text-decoration:none}.formalisation-related h3 a:hover{text-decoration:underline}.formalisation-related h3 span{color:var(--accent)}.formalisation-related p:not(.eyebrow){color:var(--muted)}.formalisation-related .related-source{display:inline-block;margin-top:14px;color:var(--accent)}
@media(max-width:900px){.formalisation-related{gap:30px}}
@media(max-width:650px){.formalisation-related{grid-template-columns:1fr;gap:27px}.formalisation-related article+article{border-top:1px solid var(--line);padding-top:25px}.formal-language{max-width:13ch;}}

/* A small related-work note, subordinate to the research and paper lists. */
.research-aside{margin-top:29px;padding-top:22px;border-top:1px solid var(--line);max-width:82ch;scroll-margin-top:30px}.research-aside h3{margin-bottom:8px}.research-aside p{color:var(--muted)}

/* Separate the biography from the research results. */
.intro-biography{margin-top:34px;padding-top:24px;border-top:1px solid var(--line)}.intro-biography h2{margin:0 0 10px;color:var(--ink)}.intro p.academic-context{margin-top:0}.intro-biography .text-links{margin-top:20px}

/* Separate research coverage from outreach contributions. */
.media-coverage{max-width:82ch}.outreach-content .video-links{margin-top:0}

/* The supplied portrait complements the introduction without replacing it. */
.profile-photo{display:block;width:240px;height:240px;max-width:100%;margin-top:26px;object-fit:cover;object-position:center 35%;border-radius:3px}
@media(max-width:650px){.hero-identity{display:grid;grid-template-columns:minmax(0,1fr) 104px;column-gap:18px;align-items:start}.hero-identity>.eyebrow,.hero-identity>h1{grid-column:1 / -1}.hero-identity>.role{grid-column:1}.profile-photo{grid-column:2;width:104px;height:104px;margin-top:0}}

/* Make the job-market announcement easy to spot. */
.hero-note{color:#9f3030;}.hero-note .eyebrow,.hero-note a{color:inherit}

/* Keep awards readable but secondary to the academic background. */
.awards{margin-bottom:28px;scroll-margin-top:30px}.awards h3{margin-bottom:8px}.award-list{display:grid;grid-template-columns:1fr;gap:6px;list-style:none;margin:0;padding:0;}.award-year{color:var(--muted);margin-right:9px}.award-list strong{display:inline;color:var(--ink)}.award-context{display:inline;margin-left:6px;color:var(--muted)}.award-context::before{content:"("}.award-context::after{content:")"}

/* Let visitors entering through Publications see the results before the bibliography. */
.archive-highlights{padding-bottom:35px;margin-bottom:34px;border-bottom:1px solid var(--line)}
.archive-highlights .result-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 34px;margin-top:23px}
.archive-highlights .result-summary li+li{border-top:0;padding-top:0}
.archive-highlights .result-summary li:nth-child(even){border-left:1px solid var(--line);padding-left:34px}
.archive-highlights .result-summary li:nth-child(n+3){border-top:1px solid var(--line);padding-top:22px}
.programme-connection{margin-top:25px;color:var(--muted)}
.archive-bibliography>h2{margin-bottom:23px}
.archive-bibliography>.archive-footer{padding-bottom:30px}
.paper-area{color:var(--accent);margin-bottom:6px}
@media(max-width:900px){
  .archive-highlights .result-summary{grid-template-columns:1fr;gap:18px}
  .archive-highlights .result-summary li+li,.archive-highlights .result-summary li:nth-child(even),.archive-highlights .result-summary li:nth-child(n+3){border-left:0;border-top:1px solid var(--line);padding-left:0;padding-top:18px}
}


/* Put results and their authors together in the opening summary. */
.result-summary{list-style:none;margin:22px 0 0;padding:0;display:grid;gap:15px}.result-summary li+li{border-top:1px solid var(--line);padding-top:15px}.result-statement{display:block;color:var(--ink);text-decoration:none}.result-statement:hover{text-decoration:underline}.result-context{display:block;margin-top:6px;color:var(--muted)}.result-authors{display:block;margin-top:5px;color:var(--muted)}.result-authors strong{color:var(--ink)}.result-status{color:var(--accent);white-space:nowrap}
@media(max-width:650px){.result-summary{margin-top:18px;gap:13px}.result-summary li+li{padding-top:13px}}

/* The selected research profile: results first, with distinct biography and current work. */
.research-profile .hero{padding-top:52px;padding-bottom:52px;column-gap:58px;row-gap:0;grid-template-rows:auto 1fr}
.research-profile .hero-identity{grid-column:1;grid-row:1}
.research-profile .intro{padding-top:21px;grid-column:2;grid-row:1 / span 2}
.research-profile .intro p.achievement{color:var(--ink);margin:22px 0 25px}
.research-profile .results-heading{color:var(--accent);}
.research-profile .result-summary{counter-reset:result;margin-top:16px;gap:18px}
.research-profile .result-summary>li{counter-increment:result;position:relative;padding-left:29px}
.research-profile .result-summary>li::before{content:counter(result,decimal-leading-zero);position:absolute;left:0;top:4px;color:var(--accent)}
.research-profile .result-summary>li+li{padding-top:18px}
.research-profile .result-summary>li+li::before{top:22px}
.research-profile .thesis-connection{margin-top:9px}
.research-profile .hero-identity .hero-note{display:block;margin-top:25px;padding-top:17px}
.research-profile .hero-identity .hero-note .eyebrow{display:block;margin-bottom:5px}
.research-profile .hero>.intro-biography{grid-column:1;grid-row:2;margin-top:22px;padding-top:20px}
.research-profile .intro-biography .academic-context{color:var(--muted)}
.research-profile .intro-biography .text-links{gap:10px 19px;}
.research-profile .research-now{margin-top:27px;padding-top:22px;border-top:1px solid var(--line)}
.research-profile .research-now h2{color:var(--ink);margin-bottom:8px}
.research-profile .intro .research-now p{color:var(--muted);margin-top:0}
.research-profile .intro .research-now p+p{margin-top:11px}
.research-profile .recent-results-link{display:inline-block;margin-top:13px;color:var(--accent)}
@media(min-width:901px){
  .research-profile .hero{grid-template-columns:330px minmax(0,1fr);column-gap:42px}
}
@media(max-width:900px){
  .research-profile .hero{column-gap:36px}
}
@media(max-width:650px){
  .research-profile .hero{padding-top:31px;gap:29px;grid-template-rows:auto}
  .research-profile .hero-identity .hero-note{grid-column:1 / -1}
  .research-profile .hero>.intro-biography{grid-column:1;grid-row:3;margin-top:0}
  .research-profile .intro{padding-top:0;grid-column:1;grid-row:2}
  .research-profile .intro p.achievement{margin-top:20px}
  .research-profile .result-summary>li{padding-left:26px}
}
