/* Self-contained styles: no external fonts, frameworks or tracking. */
:root{--paper:#f7f6f1;--white:#fffefa;--ink:#1d3438;--muted:#59696a;--line:#d8ded6;--navy:#142c32;--navy-light:#1d3940;--mint:#bcd5c4;--orange:#f4aa7c;--rust:#8d492d;--serif:Georgia,'Times New Roman',serif;--sans:Arial,Helvetica,sans-serif;--mono:'Courier New',monospace}
*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:auto;scroll-padding-top:100px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased}body,button,a{-webkit-tap-highlight-color:transparent}h1,h2,h3,h4,p,figure{margin:0}h1,h2,h3{font-weight:400}h2{font-family:var(--serif);font-size:clamp(2rem,3.5vw,2.95rem);letter-spacing:-1.3px;line-height:1.15}h3{font-size:1.35rem;line-height:1.35;letter-spacing:-.4px}p+p{margin-top:1rem}a{color:inherit;text-decoration:none}a,button,summary{touch-action:manipulation}button{font:inherit;cursor:pointer}a:hover{color:var(--rust)}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #bf683e;outline-offset:5px;border-radius:2px}img,svg{display:block;max-width:100%}button{color:inherit}strong{font-weight:600}::selection{background:var(--orange);color:var(--navy)}[hidden]{display:none!important}.container{width:min(1184px,calc(100% - 96px));margin-inline:auto}.section{padding:96px 0;scroll-margin-top:20px}.eyebrow{font-family:var(--mono);font-size:.7rem;font-weight:600;letter-spacing:1.6px;line-height:1.5}.section-label{color:var(--rust);margin-bottom:22px}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:36px;margin-bottom:42px}.section-heading>div{max-width:710px}.section-heading>p{font-size:.91rem;color:var(--muted);max-width:306px;line-height:1.7}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:-100px;left:20px;padding:10px 20px;background:var(--white);color:var(--ink);z-index:100}.skip-link:focus{top:16px}.muted{color:var(--muted)}
/* Header and responsive navigation */
.site-header{position:sticky;top:0;z-index:20;background:rgba(247,246,241,.97);border-bottom:1px solid var(--line);backdrop-filter:blur(14px)}.header-inner{height:88px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;gap:12px;align-items:center;flex-shrink:0;font-size:.92rem;font-weight:600;letter-spacing:-.2px}.brand-mark{width:38px;height:38px;display:grid;place-content:center;background:var(--navy);color:var(--paper);font-size:35px;font-family:var(--serif);font-weight:400;line-height:1;position:relative;padding-right:6px}.brand-mark>span{position:absolute;right:4px;bottom:1px;color:var(--orange)}.brand-caption{display:block;font-size:.52rem;letter-spacing:1.6px;margin-top:1px;font-weight:400;color:var(--muted)}.primary-nav{display:flex;align-items:center;gap:25px;font-size:.76rem;font-weight:500}.primary-nav>a{padding:8px 0;position:relative}.primary-nav>a[aria-current="location"]:not(.nav-cv)::after{content:'';position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--rust)}.primary-nav .nav-cv{border:1px solid var(--ink);padding:8px 14px;display:flex;gap:14px;align-items:center}.menu-toggle{background:none;border:1px solid var(--line);padding:9px 12px;align-items:center;gap:10px;font-size:.85rem}.menu-icon{width:17px;height:10px;border-block:1px solid;position:relative}.menu-icon:after{content:'';position:absolute;top:4px;left:0;width:17px;border-top:1px solid}
/* Hero */
.hero{background:var(--navy);color:var(--paper);overflow:hidden}.hero-grid{display:grid;grid-template-columns:1.08fr 1fr;gap:36px;align-items:center;padding-block:76px 58px}.hero .eyebrow{color:var(--mint);font-size:.64rem;letter-spacing:1.4px;display:flex;align-items:center;gap:10px}.status-dot{width:6px;height:6px;background:var(--orange);border-radius:50%;flex-shrink:0}.hero h1{font-family:var(--serif);font-size:clamp(4.4rem,7.5vw,6.7rem);letter-spacing:-5px;line-height:1.1;margin-top:22px;white-space:nowrap}.hero h1 em{font-weight:400;color:var(--orange)}.hero-statement{font-family:var(--serif);font-size:clamp(1.5rem,2.2vw,2rem);line-height:1.3;margin-top:26px;letter-spacing:-.5px}.hero-description{max-width:490px;font-size:.94rem;line-height:1.85;color:#becdcc;margin-top:20px}.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}.button{display:inline-flex;justify-content:center;align-items:center;gap:25px;padding:13px 21px;font-size:.78rem;font-weight:600;border:1px solid transparent;min-height:48px;transition:background .18s,color .18s,transform .18s}.button-accent{background:var(--orange);color:var(--navy)}.button-accent:hover{background:#ffc29d;color:var(--navy);transform:translateY(-2px)}.button-outline{border-color:#698084;color:var(--paper)}.button-outline:hover{background:#28434a;color:var(--white);transform:translateY(-2px)}.hero-location{font-size:.67rem;color:#b4c5c4;margin-top:27px;display:flex;flex-wrap:wrap;align-items:center;gap:9px}.hero-location>span:first-child{font-size:16px}.location-divider{margin:0 4px;color:#6b8588}.hero-figure{position:relative;align-self:stretch;display:flex;flex-direction:column;justify-content:center;min-width:0;padding:14px 0 0 12px}.figure-topline{display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:.57rem;letter-spacing:2px;color:#8eaaa8;padding-bottom:14px;border-bottom:1px solid #365057}.hero-figure img{width:100%;height:auto;max-height:430px;object-fit:contain}.hero-figure figcaption{display:flex;justify-content:space-between;gap:16px;align-items:center;color:#a8bdbc;font-size:.57rem;border-top:1px solid #365057;padding-top:16px}.figure-caption-title{font-family:var(--serif);font-size:1rem;color:var(--mint)}.affiliation-strip{border-top:1px solid #365057;display:flex;align-items:center;gap:25px;padding-block:25px;color:#d5dfd8;font-family:var(--serif);font-size:1.12rem}.affiliation-label{font-family:var(--mono);font-size:.55rem;letter-spacing:1.5px;color:#91aba9;margin-right:20px}.strip-plus{color:var(--orange);font-family:var(--mono);font-size:1rem}.affiliation-detail{font-family:var(--sans);font-size:.66rem;color:#a1b8b4;margin-left:auto}
/* Content and research */
.about-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:80px}.about h2{font-size:2.55rem}.about-copy{color:var(--muted);font-size:.97rem}.text-link{display:inline-flex;align-items:center;gap:14px;font-size:.78rem;font-weight:600;border-bottom:1px solid #a9bbb1;padding-bottom:5px;color:var(--ink)}.text-link:hover{border-color:var(--rust)}.about-copy .text-link{margin-top:24px}.research-section{background:#eaece4;border-block:1px solid var(--line)}.project{background:var(--white);border:1px solid #d2d9d0;min-width:0}.project-featured{display:grid;grid-template-columns:.84fr 1fr;margin-bottom:22px}.project-art{background:#dce6dc;color:#476d64;display:flex;flex-direction:column;justify-content:center;padding:35px 30px;position:relative;overflow:hidden;min-height:355px;background-image:radial-gradient(#8ea99b55 .7px,transparent .7px);background-size:16px 16px}.art-label{font-size:.55rem;font-family:var(--mono);letter-spacing:1.5px;position:absolute;top:30px;left:30px}.project-art svg{width:100%;height:auto}.art-caption{position:absolute;bottom:27px;left:30px;font-size:.58rem;color:#526c60}.project-body{padding:34px 36px}.project-meta{display:flex;align-items:center;gap:16px;font-family:var(--mono);font-size:.59rem;letter-spacing:1.2px;color:var(--muted);margin-bottom:18px}.project-number{color:var(--rust);font-size:.72rem}.project h3{font-family:var(--serif);font-size:1.8rem;line-height:1.2;max-width:500px;letter-spacing:-.65px}.project p{font-size:.86rem;line-height:1.8;color:var(--muted);margin-top:17px}.tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:22px}.tags span{border:1px solid #d6ddd5;padding:4px 9px;font-size:.61rem;color:#425c55;line-height:1.5}.project-bottom{margin-top:25px;display:flex;flex-wrap:wrap;gap:20px;align-items:center;justify-content:space-between}.project-note{font-size:.62rem;color:var(--muted)}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.project-grid .project-body{height:100%;display:flex;flex-direction:column}.project-grid .tags{margin-top:auto;padding-top:22px}.project details{margin-top:24px}.project details p{margin-top:0}.project details p+p{margin-top:12px}details{border-top:1px solid var(--line)}summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:24px;padding-block:17px;font-size:.77rem;cursor:pointer;font-weight:600}summary::-webkit-details-marker{display:none}summary>span:last-child[aria-hidden]{font-size:1.1rem;line-height:1;font-weight:400;transition:transform .2s}details[open]>summary>span:last-child[aria-hidden]{transform:rotate(45deg)}summary:hover{color:var(--rust)}.details-content{padding-bottom:19px}.section-note{color:var(--muted);font-size:.72rem;margin-top:22px}
/* Experience */
.timeline{margin-top:50px}.timeline-row{display:grid;grid-template-columns:245px 1fr;border-top:1px solid var(--line);padding:38px 0 44px}.timeline-row:last-child{padding-bottom:0}.timeline-date{font-family:var(--mono);font-size:.7rem;letter-spacing:.5px;padding-top:5px}.timeline-date span{display:block;font-family:var(--sans);font-size:.78rem;color:var(--muted);letter-spacing:0;margin-top:8px}.role-type{font-family:var(--mono);font-size:.58rem;letter-spacing:1.5px;color:var(--rust)}.timeline-body h3{font-family:var(--serif);font-size:1.8rem;margin:9px 0}.organisation{font-weight:600;font-size:.91rem;line-height:1.7}.organisation>span{color:var(--muted);font-weight:400}.timeline-body>p:not(.organisation){font-size:.9rem;margin-top:20px;max-width:810px}.industry-projects{margin-top:33px}.industry-projects h4{font-family:var(--mono);font-weight:400;font-size:.64rem;letter-spacing:1px;text-transform:uppercase;margin-bottom:16px;color:var(--muted)}.industry-projects details:last-child{border-bottom:1px solid var(--line)}.industry-projects summary{font-size:.86rem;padding:20px 0}.summary-date{display:block;font-size:.66rem;color:var(--muted);font-weight:400;margin-top:3px}.industry-projects .details-content{color:var(--muted);font-size:.85rem;max-width:740px}
/* Publications */
.publications-section{background:#efeee8;border-block:1px solid var(--line)}.publication-toolbar{display:flex;gap:22px;justify-content:space-between;align-items:center;margin-bottom:26px}.filters{display:flex;gap:7px;flex-wrap:wrap}.filters button{background:transparent;border:1px solid #bec9c0;padding:8px 15px;font-size:.7rem;min-height:38px}.filters button:hover{border-color:var(--ink)}.filters button[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--paper)}.filters button>span{margin-left:10px;opacity:.7}.filter-count{font-size:.65rem;color:var(--muted)}.publication{display:grid;grid-template-columns:132px 1fr 98px;gap:26px;padding:30px 0;border-top:1px solid #cbd3c9;align-items:start}.publication:last-child{border-bottom:1px solid #cbd3c9}.publication-year{font-family:var(--mono);font-size:.78rem;display:flex;flex-direction:column;gap:13px;align-items:flex-start}.badge{font-family:var(--sans);font-size:.58rem;line-height:1.5;letter-spacing:.2px;padding:3px 8px;background:#dfe7de;color:#3d5a51;white-space:nowrap}.badge-warm{background:#efdfce;color:#784b26}.publication-copy h3{font-family:var(--serif);font-size:1.38rem;line-height:1.35;letter-spacing:-.3px}.authors{font-size:.76rem;margin-top:10px;color:var(--muted)}.publication-venue{font-size:.73rem;margin-top:7px;line-height:1.7;color:var(--muted)}.publication-link{font-size:.7rem;display:flex;gap:14px;justify-content:flex-end;align-items:center;min-height:34px;border-bottom:1px solid #adbdb0}.publication-pending{font-size:.62rem;color:var(--muted);text-align:right;padding-top:8px}
/* Skills */
.skills-section{background:var(--navy);color:var(--paper)}.skills-section .section-label{color:var(--orange)}.skills-section .section-heading>p{color:#b1c4c1}.skill-grid{display:grid;grid-template-columns:1fr 1fr;column-gap:70px;row-gap:40px}.skill-block{padding-top:24px;border-top:1px solid #415a5d}.skill-index{font-family:var(--mono);font-size:.66rem;color:var(--orange)}.skill-block h3{font-family:var(--serif);font-size:1.6rem;letter-spacing:-.4px;margin-top:10px}.skill-block p{font-size:.85rem;color:#b8cbc6;margin-top:15px;max-width:490px}.skill-block .tags span{border-color:#43605f;color:#d3dfd8;font-size:.64rem}.skill-block .tags{gap:8px}
/* Education and engagement */
.education-grid{display:grid;grid-template-columns:1fr 1fr;gap:25px}.education-card{padding:32px 35px;border:1px solid var(--line);background:var(--white)}.education-card .eyebrow{font-size:.62rem;color:var(--rust);letter-spacing:.8px}.education-card h3{font-family:var(--serif);font-size:1.6rem;margin-top:18px}.education-card h3>span{font-family:var(--sans);font-size:.65rem;white-space:nowrap;letter-spacing:0;color:var(--muted);display:block;margin-top:7px}.education-card .organisation{margin-top:20px;font-size:.83rem}.education-place{font-size:.68rem;color:var(--muted);margin-top:7px}.education-card>p:not([class]){font-size:.82rem;margin-top:26px;color:var(--muted)}.thesis-label{font-family:var(--mono);font-size:.57rem;letter-spacing:1px;color:var(--muted);margin-top:26px}.thesis{font-family:var(--serif);font-size:1.1rem;line-height:1.5;margin-top:7px}.education-note{font-size:.72rem;color:var(--muted);margin-top:13px}.training-row{display:grid;grid-template-columns:245px 1fr;gap:0;padding-top:32px}.training-row h3{font-family:var(--serif);font-size:1.25rem}.training-row p{font-size:.79rem}.training-row p+p{margin-top:14px}.training-row p>span{color:var(--muted);display:block;font-size:.67rem;margin-top:3px}.engagement-section{padding-top:0}.engagement-grid{border-top:1px solid var(--line);padding-top:65px;display:grid;grid-template-columns:1fr 1fr;gap:90px}.engagement-grid h2{font-size:2.5rem}.award{display:flex;gap:20px;margin-top:38px}.award-symbol{font-size:3rem;line-height:1;color:var(--rust)}.award .eyebrow{font-size:.58rem;color:var(--rust)}.award h3{font-family:var(--serif);font-size:1.4rem;margin-top:8px}.award p:not(.eyebrow){font-size:.78rem;color:var(--muted);margin-top:4px}.award .award-title{max-width:300px;margin-top:14px!important}.scholarship{font-size:.74rem;color:var(--muted);margin-top:30px;max-width:330px}.engagement-list article{border-top:1px solid var(--line);padding-block:23px}.engagement-list article:first-child{padding-top:0;border:0}.engagement-list article:last-child{padding-bottom:0}.engagement-list article>span{font-family:var(--mono);font-size:.58rem;letter-spacing:1px;color:var(--rust)}.engagement-list h3{font-size:1rem;margin-top:7px;font-weight:500}.engagement-list p{font-size:.82rem;color:var(--muted);margin-top:10px;line-height:1.8}
/* Contact and footer */
.contact-section{background:#dfe7db;padding:80px 0;scroll-margin-top:86px}.contact-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:100px}.contact-section .eyebrow{color:#536d60;font-size:.62rem}.contact-section h2{font-size:4.8rem;letter-spacing:-3px;margin-top:22px;line-height:1.02}.contact-section h2 em{font-weight:400;color:var(--rust)}.contact-section h2+p{font-size:.86rem;color:#506359;margin-top:25px;max-width:390px}.contact-email{display:inline-flex;align-items:center;gap:32px;font-size:1.45rem;font-family:var(--serif);border-bottom:1px solid #8fa18f;padding-bottom:5px;margin-top:28px}.contact-email>span{font-family:var(--sans);font-size:1.4rem}.copy-row{display:flex;gap:16px;align-items:center;margin-top:12px;min-height:25px}.copy-email{background:none;border:0;border-bottom:1px solid transparent;padding:4px 0;font-size:.66rem}.copy-email:hover{border-color:var(--ink)}#copy-status{font-size:.63rem;color:#415e50}.contact-aside{align-self:center}.contact-location{font-family:var(--mono);font-size:.58rem;letter-spacing:1px;color:#536d60;margin-bottom:30px}.contact-location>span{font-family:var(--sans);display:block;letter-spacing:0;font-size:.86rem;color:var(--ink);margin-top:7px}.contact-aside>a{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #acbaaa;font-size:.85rem;padding:16px 0}.contact-aside>a:last-child{border-bottom:1px solid #acbaaa}.contact-aside>a>span:not(.sr-only){font-size:.67rem}.site-footer{background:var(--navy);color:#bfd0c8;padding:26px 0}.footer-inner{display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:.64rem}.footer-inner p+p{margin:0;color:#8da8a3}.footer-inner a:hover{color:var(--orange)}
/* Tablet and smaller desktop */
@media(min-width:1500px){.hero-grid{padding-block:90px 70px}}@media(max-width:1150px){.container{width:calc(100% - 64px)}.primary-nav{gap:17px;font-size:.7rem}.brand-caption{font-size:.46rem}.hero-grid{gap:22px;padding-top:60px}.hero h1{font-size:5.5rem}.hero .eyebrow{font-size:.54rem;letter-spacing:1px}.hero-description{font-size:.88rem}.hero-actions{gap:10px}.button{gap:15px;padding-inline:17px}.affiliation-label{margin-right:0}.affiliation-strip{gap:18px}.affiliation-detail{font-size:.6rem}.section-heading>p{max-width:260px}.about-grid{gap:45px}.about h2{font-size:2.2rem}.project-body{padding:28px}.project h3{font-size:1.65rem}.timeline-row,.training-row{grid-template-columns:200px 1fr}.publication{grid-template-columns:112px 1fr 85px;gap:22px}.contact-grid{gap:60px}.engagement-grid{gap:55px}}
@media(max-width:900px){.header-inner{height:76px;flex-wrap:wrap;gap:0}.menu-toggle:not([hidden]){display:flex}.primary-nav{width:100%;gap:0;flex-wrap:wrap;background:var(--paper);padding:10px 0;border-top:1px solid var(--line)}.primary-nav>a{margin-right:20px;min-height:40px}.site-header:has(.primary-nav:not(.enhanced)){position:relative}.header-inner:has(.primary-nav:not(.enhanced)){height:auto;padding-top:18px}.primary-nav.enhanced{display:none;position:absolute;top:76px;left:0;padding:14px 32px 24px;box-shadow:0 16px 22px #142c3214;border-bottom:1px solid var(--line);font-size:.9rem}.primary-nav.enhanced.is-open{display:grid;grid-template-columns:1fr 1fr;gap:6px 20px}.primary-nav.enhanced>a{margin:0;padding:9px 0}.primary-nav.enhanced .nav-cv{justify-content:center;max-width:130px;margin-top:6px}.hero-grid{grid-template-columns:1.1fr 1fr;gap:22px;padding-top:54px}.hero h1{font-size:4.4rem;letter-spacing:-3px}.hero-statement{font-size:1.55rem}.hero .eyebrow{font-size:.51rem;letter-spacing:.5px}.hero-description{font-size:.83rem}.hero-figure{padding-left:0}.figure-caption-title{font-size:.8rem}.hero-figure figcaption{display:block}.hero-figure figcaption>span{display:block}.hero-figure figcaption>span+span{margin-top:4px}.hero-actions{flex-direction:column;align-items:flex-start;gap:10px}.hero-actions .button{min-width:195px}.hero-location{font-size:.6rem;gap:6px}.affiliation-strip{flex-wrap:wrap;font-size:1rem;gap:12px 18px}.affiliation-detail{flex-basis:100%;margin:0}.section{padding:72px 0}.about-grid{grid-template-columns:.9fr 1fr;gap:30px}.about h2{font-size:1.9rem}.about-copy{font-size:.87rem}.section-heading{display:block}.section-heading>p{max-width:530px;margin-top:20px}.project-featured{grid-template-columns:.7fr 1fr}.project-art{padding-inline:12px;min-height:0}.art-label{left:18px;top:23px;font-size:.44rem;letter-spacing:1px}.art-caption{left:18px;bottom:22px;font-size:.46rem}.project h3{font-size:1.55rem}.project-grid .project-body{padding:26px}.project-meta{font-size:.51rem;gap:12px;letter-spacing:1px}.timeline-row,.training-row{grid-template-columns:165px 1fr;gap:25px}.timeline-date{font-size:.59rem}.skill-grid{column-gap:40px}.publication{grid-template-columns:97px 1fr;gap:18px}.publication-link,.publication-pending{grid-column:2;justify-self:start;text-align:left}.publication-link{min-width:85px;justify-content:space-between}.publication-pending{padding:0}.education-card{padding:25px}.education-card h3{font-size:1.35rem}.education-card .organisation{font-size:.77rem}.engagement-section{padding-top:0}.engagement-grid{gap:40px}.engagement-grid h2{font-size:2.1rem}.contact-section{padding:65px 0}.contact-grid{gap:50px}.contact-section h2{font-size:4rem}.contact-email{font-size:1.3rem;gap:20px}.footer-inner p:nth-child(2){display:none}}
/* Mobile */
@media(max-width:640px){html{scroll-padding-top:90px}.container{width:calc(100% - 40px)}.header-inner{height:70px}.brand{font-size:.86rem}.brand-caption{font-size:.45rem}.brand-mark{width:34px;height:34px;font-size:31px}.primary-nav.enhanced{top:70px;padding-inline:20px}.hero-grid{grid-template-columns:1fr;padding-top:42px;padding-bottom:30px;gap:40px}.hero .eyebrow{font-size:.54rem;letter-spacing:.6px}.hero h1{font-size:clamp(4.25rem,17vw,6rem);letter-spacing:-3px;margin-top:20px}.hero-statement{font-size:1.65rem;margin-top:20px}.hero-description{font-size:.9rem;line-height:1.8;max-width:450px}.hero-actions{flex-direction:row;align-items:stretch;gap:10px;margin-top:25px}.hero-actions .button{min-width:0;gap:15px;font-size:.7rem;padding:12px 15px}.hero-location{margin-top:20px;font-size:.59rem}.hero-figure{padding-top:0;max-width:440px;width:100%;margin-inline:auto}.figure-topline{font-size:.51rem;padding-bottom:10px}.hero-figure img{max-height:340px}.hero-figure figcaption{display:flex;align-items:center;justify-content:space-between;font-size:.51rem;padding-top:10px}.hero-figure figcaption>span+span{margin:0}.figure-caption-title{font-size:.9rem}.affiliation-strip{font-size:1rem;gap:10px 14px;padding-block:22px}.affiliation-label{flex-basis:100%;font-size:.51rem;margin-bottom:5px}.affiliation-detail{font-size:.61rem;margin-top:2px}.section{padding:58px 0}.section-label{font-size:.59rem;margin-bottom:17px}.section-heading{margin-bottom:28px}.section-heading>p{font-size:.84rem;margin-top:17px}.section-heading h2{font-size:2.15rem;letter-spacing:-.9px}.about-grid{grid-template-columns:1fr;gap:25px}.about h2{font-size:2.15rem;letter-spacing:-.9px}.about-copy{font-size:.89rem}.about-copy .text-link{margin-top:20px;font-size:.72rem}.project-featured{grid-template-columns:1fr;margin-bottom:18px}.project-art{min-height:205px;padding:20px 40px}.project-art svg{height:185px}.art-label{left:23px;top:20px;font-size:.49rem}.art-caption{left:23px;bottom:17px;font-size:.49rem}.project-body,.project-grid .project-body{padding:26px 24px}.project-meta{font-size:.55rem}.project h3{font-size:1.7rem}.project p{font-size:.85rem}.project-grid{grid-template-columns:1fr;gap:18px}.tags span{font-size:.6rem}.project-note{font-size:.6rem}.project-bottom{gap:16px}.section-note{font-size:.65rem;line-height:1.8}.timeline{margin-top:30px}.timeline-row{grid-template-columns:1fr;gap:22px;padding-block:28px}.timeline-date{display:flex;justify-content:space-between;align-items:center;font-size:.59rem;gap:20px}.timeline-date span{font-size:.67rem;margin:0}.timeline-body h3{font-size:1.6rem}.timeline-body>p:not(.organisation){font-size:.86rem}.organisation{font-size:.83rem}.organisation>span{display:block}.industry-projects{margin-top:28px}.industry-projects summary{font-size:.8rem;padding-block:17px}.publication-toolbar{display:block}.filters{gap:6px}.filters button{font-size:.64rem;padding:8px 11px;min-height:40px}.filter-count{margin-top:15px;font-size:.6rem}.publication{grid-template-columns:1fr;gap:15px;padding:25px 0}.publication-year{flex-direction:row;align-items:center;gap:15px;font-size:.75rem}.badge{font-size:.55rem}.publication-copy h3{font-size:1.3rem}.authors{font-size:.73rem}.publication-venue{font-size:.7rem}.publication-link,.publication-pending{grid-column:1}.publication-pending{font-size:.59rem}.skill-grid{grid-template-columns:1fr;gap:30px}.skill-block{padding-top:20px}.skill-block h3{font-size:1.5rem}.skill-block p{font-size:.85rem}.skill-block .tags{margin-top:18px}.education-grid{grid-template-columns:1fr;gap:18px}.education-card{padding:26px 24px}.education-card h3{font-size:1.6rem}.education-card h3>span{display:inline;font-size:.63rem}.education-card .organisation{font-size:.86rem}.education-card>p:not([class]){font-size:.85rem}.training-row{grid-template-columns:1fr;gap:20px}.training-row h3{font-size:1.45rem}.training-row p{font-size:.78rem}.training-row p+p{margin-top:20px}.engagement-section{padding-top:0}.engagement-grid{grid-template-columns:1fr;padding-top:48px;gap:38px}.engagement-grid h2{font-size:2.3rem}.award{margin-top:28px}.engagement-list article:first-child{padding-top:23px;border-top:1px solid var(--line)}.engagement-list h3{font-size:1rem}.contact-section{padding:55px 0}.contact-grid{grid-template-columns:1fr;gap:38px}.contact-section h2{font-size:4.4rem;letter-spacing:-2.5px;margin-top:20px}.contact-section h2+p{font-size:.85rem;max-width:340px}.contact-email{font-size:1.5rem;gap:30px;margin-top:24px}.contact-location{margin-bottom:24px}.contact-aside>a{font-size:.85rem;padding:18px 0}.site-footer{padding:23px 0}.footer-inner{font-size:.59rem}.copy-row{min-height:30px}.copy-email{padding-block:8px}}
@media(max-width:360px){.container{width:calc(100% - 32px)}.hero .eyebrow{font-size:.47rem}.hero h1{font-size:3.8rem}.hero-actions{gap:8px}.hero-actions .button{padding-inline:11px;font-size:.65rem;gap:10px}.hero-figure figcaption{font-size:.45rem}.figure-caption-title{font-size:.8rem}.hero-location .location-divider{display:none}.contact-email{font-size:1.3rem}.filters button{padding-inline:9px}.affiliation-strip{font-size:.88rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}.button:hover{transform:none}}
@media print{html{font-size:10pt;scroll-padding:0}body{background:white;color:#172b30}.site-header,.hero-figure,.hero-actions,.affiliation-strip,.copy-row,.publication-toolbar,.contact-aside,.site-footer,.skip-link,.project-art{display:none!important}.container{width:100%}.section,.contact-section{padding:22px 0;background:white;color:#172b30;break-inside:auto}.hero{background:white;color:#172b30}.hero-grid{display:block;padding:0 0 18px}.hero h1{font-size:38pt;color:#172b30;letter-spacing:-1px}.hero h1 em{color:#172b30}.hero-description,.hero-location,.hero .eyebrow,.skills-section p,.skills-section .section-label,.skill-block p{color:#43514b}.hero-statement{font-size:17pt}.hero-location{margin-top:12px}.section-heading{margin-bottom:18px}.section-heading h2,.about h2{font-size:23pt}.section-label{margin-bottom:8px}.about-grid{gap:30px}.project-featured{display:block}.project-body{padding:18px}.project{break-inside:avoid}.project h3{font-size:17pt}.timeline-row{padding:20px 0;grid-template-columns:150px 1fr}.publication{break-inside:avoid;grid-template-columns:80px 1fr 60px;padding:16px 0}.publication[hidden]{display:grid!important}.publication-link{grid-column:auto}.skill-grid{gap:20px 30px}.skills-section .tags span{color:#43514b;border-color:#bbb}.skill-block h3{font-size:16pt}.skill-block{break-inside:avoid}.education-card{break-inside:avoid;padding:18px}.engagement-grid{padding-top:22px;gap:30px}.engagement-grid h2{font-size:22pt}.contact-grid{display:block}.contact-section h2{font-size:30pt;letter-spacing:-1px}.contact-section h2 br{display:none}.contact-section h2 em{margin-left:10px}.contact-email{font-size:16pt}.section-note{font-size:8pt}a[href^="http"]::after{content:' ↗';font-size:.7em}details:not([open]) .details-content{display:block}details>summary{padding-block:9px}details summary>span[aria-hidden]{display:none}}

/* Blog landing section and reusable article cards. */
.blogs-grid{display:grid;grid-template-columns:1fr 1fr;gap:90px;align-items:center}.blogs-intro{max-width:440px;color:var(--muted);font-size:.92rem;margin-top:23px}.blog-topics{margin-top:24px}.blog-empty{position:relative;border:1px solid var(--line);padding:38px;background:var(--white)}.blog-glyph{position:absolute;right:30px;top:27px;color:var(--rust);font-family:var(--serif);font-size:2rem}.blog-empty>.eyebrow{font-size:.58rem;color:var(--muted);letter-spacing:1.5px;padding-right:40px}.blog-empty h3{font-family:var(--serif);font-size:1.7rem;margin-top:36px}.blog-empty>p:not(.eyebrow){font-size:.86rem;color:var(--muted);max-width:350px;margin-top:16px}.blog-empty>.text-link{margin-top:26px}.blog-card{border-top:1px solid var(--line);padding:25px 0}.blog-card .eyebrow{color:var(--muted);font-size:.6rem}.blog-card h3{font-family:var(--serif);font-size:1.6rem;margin-top:14px}.blog-card>p:not(.eyebrow){font-size:.85rem;color:var(--muted);margin-top:13px}.blog-card .text-link{margin-top:20px}
@media(max-width:1150px){.blogs-grid{gap:45px}}
@media(max-width:900px){.blogs-grid{gap:30px}.blogs-grid h2{font-size:2.3rem}.blog-empty{padding:28px}.blog-glyph{right:25px;top:20px}}
@media(max-width:640px){.blogs-grid{grid-template-columns:1fr;gap:28px}.blogs-grid h2{font-size:2.3rem}.blogs-intro{font-size:.86rem;margin-top:20px}.blog-empty{padding:26px 24px}.blog-empty h3{font-size:1.55rem;margin-top:30px}.blog-topics{gap:6px}}
@media print{.blogs-section{display:none}}
/* Profile media and accessible gallery viewer. */
.hero-identity{display:flex;align-items:center;gap:18px}.profile-photo{width:72px;height:72px;object-fit:cover;object-position:50% 50%;border-radius:50%;border:1px solid #607b70;flex-shrink:0}.hero-identity .eyebrow{display:block;font-size:.59rem;line-height:1.8;position:relative}.hero-identity .status-dot{display:inline-block;margin-right:7px}.primary-nav{gap:20px}.gallery-section{padding-top:0}.gallery-section>.container{padding-top:65px;border-top:1px solid var(--line)}.gallery-empty{border:1px solid var(--line);background:#efeee8;display:flex;align-items:center;gap:28px;padding:40px}.gallery-empty svg{color:#7a8f7c;flex-shrink:0}.gallery-empty h3{font-family:var(--serif);font-size:1.5rem}.gallery-empty p{font-size:.84rem;color:var(--muted);margin-top:7px}.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.gallery-card{margin:0;min-width:0}.gallery-card button{display:block;width:100%;padding:0;background:#e6e9df;border:1px solid var(--line);overflow:hidden;position:relative}.gallery-card button::after{content:'↗';position:absolute;right:12px;bottom:12px;width:34px;height:34px;background:var(--paper);color:var(--ink);display:grid;place-items:center;font-size:18px}.gallery-card img{width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .25s}.gallery-card button:hover img{transform:scale(1.035)}.gallery-card figcaption{font-size:.78rem;line-height:1.65;margin-top:12px;color:var(--muted)}.lightbox{width:min(1000px,calc(100vw - 40px));max-height:calc(100dvh - 40px);padding:0;border:1px solid #698176;background:var(--navy);color:var(--paper);overscroll-behavior:contain}.lightbox::backdrop{background:#08171ce8;backdrop-filter:blur(5px)}.lightbox-inner{padding:20px 24px}.lightbox-close{display:flex;align-items:center;gap:22px;margin:0 0 18px auto;padding:7px 12px;border:1px solid #60796f;background:transparent;color:var(--paper);font-size:.78rem}.lightbox-close span{font-size:1.5rem;line-height:1}.lightbox figure>img{max-width:100%;max-height:65dvh;width:auto;height:auto;margin:auto;object-fit:contain}.lightbox figcaption{text-align:center;font-size:.84rem;margin:18px 0;color:#d4dfd8}.lightbox-controls{border-top:1px solid #415b54;padding-top:18px;display:flex;align-items:center;justify-content:space-between;gap:15px}.lightbox-controls button{background:transparent;border:1px solid #60796f;color:var(--paper);padding:9px 15px;min-height:42px;font-size:.76rem}.lightbox-controls button:disabled{opacity:.4;cursor:default}.lightbox-controls p{font-size:.7rem;color:var(--mint)}body:has(.lightbox[open]){overflow:hidden}
@media(max-width:1150px){.primary-nav{gap:14px;font-size:.68rem}.hero-identity .eyebrow{font-size:.54rem}.gallery-grid{gap:18px}}
@media(max-width:900px){.primary-nav.enhanced{font-size:.9rem;gap:6px 20px}.gallery-grid{grid-template-columns:1fr 1fr}.hero-identity{gap:14px}.profile-photo{width:64px;height:64px}.hero-identity .eyebrow{font-size:.52rem;letter-spacing:.7px}}
@media(max-width:640px){.hero-identity{gap:16px}.hero-identity .eyebrow{font-size:.55rem;letter-spacing:1px}.gallery-section{padding-top:0}.gallery-section>.container{padding-top:48px}.gallery-empty{padding:28px 24px;gap:20px;align-items:flex-start}.gallery-empty svg{width:42px;height:36px}.gallery-empty h3{font-size:1.35rem}.gallery-empty p{font-size:.78rem}.gallery-grid{grid-template-columns:1fr;gap:26px}.lightbox{width:calc(100vw - 20px);max-height:calc(100dvh - 20px)}.lightbox-inner{padding:15px}.lightbox figcaption{font-size:.78rem}.lightbox-controls button{padding:9px 12px;font-size:.7rem}.lightbox-controls p{font-size:.65rem}}
@media print{.profile-photo{display:none}.gallery-section,.lightbox{display:none!important}}
