:root{--ink:#172222;--muted:#5d6968;--paper:#f5f5ef;--line:#ced4ce;--lime:#d8f253;--teal:#0e726d;--deep:#112f30;--serif:"Source Serif 4",Georgia,serif;--sans:Manrope,Arial,sans-serif;--mono:"DM Mono",monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.55}.skip-link{position:absolute;left:-999px}.skip-link:focus{left:1rem;top:1rem;z-index:99;background:#fff;padding:.5rem}.site-header{height:76px;border-bottom:1px solid var(--line);background:rgba(245,245,239,.92);backdrop-filter:blur(12px);position:sticky;top:0;z-index:20}.nav-wrap{width:min(1240px,calc(100% - 48px));height:100%;margin:auto;display:flex;align-items:center;justify-content:space-between}.brand{color:var(--ink);display:flex;gap:12px;align-items:center;text-decoration:none;font-weight:800;font-size:.88rem;letter-spacing:-.02em}.brand-mark{font-family:var(--mono);font-size:.67rem;letter-spacing:.04em;background:var(--ink);color:var(--lime);padding:7px 5px}.site-nav{display:flex;align-items:center;gap:25px}.site-nav a{font-size:.78rem;font-weight:700;color:var(--ink);text-decoration:none}.site-nav a:hover{color:var(--teal)}.site-nav .nav-contact{background:var(--ink);color:var(--paper);padding:9px 15px}.menu-toggle{display:none;background:none;border:0;padding:8px}.menu-toggle span:not(.sr-only){display:block;width:22px;height:2px;background:var(--ink);margin:4px}.sr-only{position:absolute;clip:rect(0,0,0,0)}.section{width:min(1240px,calc(100% - 48px));margin:auto}.hero{min-height:calc(100vh - 76px);padding:clamp(80px,13vh,150px) 0 28px;display:flex;flex-direction:column;justify-content:space-between}.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:4rem;align-items:center}.eyebrow,.kicker,.project-type,.organization{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;font-size:.68rem;font-weight:500}.eyebrow{display:flex;align-items:center;gap:9px;margin:0 0 22px}.eyebrow span{width:23px;height:1px;background:currentColor}.hero h1{font-size:clamp(3rem,6.2vw,6.2rem);letter-spacing:-.075em;line-height:.94;margin:0 0 28px;max-width:750px}.hero h1 em{font-family:var(--serif);font-weight:500;color:var(--teal)}.hero-lede{max-width:580px;font-size:1.08rem;color:var(--muted);line-height:1.7}.hero-lede strong{color:var(--ink)}.hero-actions{display:flex;align-items:center;gap:25px;margin-top:35px}.button{display:inline-flex;align-items:center;gap:18px;border:1px solid var(--ink);padding:14px 18px;font-weight:800;text-decoration:none;font-size:.78rem;color:var(--ink)}.button-primary{background:var(--ink);color:#fff}.button-primary:hover{background:var(--teal);border-color:var(--teal)}.text-link{font-size:.8rem;font-weight:800;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--ink);padding-bottom:3px}.hero-visual{height:430px;position:relative;overflow:hidden;background:#e4e9df;border:1px solid var(--line);isolation:isolate}.hero-visual:before{content:"";position:absolute;inset:0;background:linear-gradient(140deg,transparent 48%,rgba(216,242,83,.35));z-index:-1}.orbit{position:absolute;border:1px solid rgba(23,34,34,.46);border-radius:50%;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-35deg)}.orbit-one{width:330px;height:330px}.orbit-two{width:470px;height:210px}.orbit-three{width:220px;height:440px}.core{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:118px;height:118px;border-radius:50%;background:var(--ink);color:white;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;text-align:center}.core span{font-family:var(--serif);font-size:2rem;color:var(--lime)}.core small{font-family:var(--mono);font-size:.45rem;letter-spacing:.07em;margin-top:7px}.node{width:11px;height:11px;background:var(--lime);border:2px solid var(--ink);border-radius:50%;position:absolute}.node-a{top:23%;left:30%}.node-b{top:39%;right:17%}.node-c{bottom:17%;left:37%}.node-d{bottom:30%;right:27%}.visual-label{position:absolute;font:500 .58rem var(--mono);letter-spacing:.08em;margin:0}.label-a{top:15%;right:10%}.label-b{bottom:11%;left:10%}.label-c{top:57%;left:12%}.hero-foot{display:flex;justify-content:space-between;color:var(--muted);font:400 .65rem var(--mono);letter-spacing:.06em;text-transform:uppercase;margin-top:75px}.hero-foot a{color:var(--ink);text-decoration:none}.hero-foot a span{color:var(--teal);font-size:1.1rem;margin-left:5px}.section:not(.hero){padding:130px 0}.section-label{display:flex;align-items:center;gap:11px;font:500 .65rem var(--mono);letter-spacing:.09em;text-transform:uppercase;margin-bottom:55px}.section-label span{color:var(--teal)}.section-label p{margin:0}.about{border-top:1px solid var(--line)}.about-grid{display:grid;grid-template-columns:.7fr 1.3fr;gap:clamp(45px,9vw,145px)}.portrait-placeholder{background:var(--deep);min-height:430px;position:relative;overflow:hidden;color:white;padding:25px}.portrait-grid{position:absolute;inset:0;background:linear-gradient(90deg,transparent 49.7%,rgba(216,242,83,.3) 50%,transparent 50.3%),linear-gradient(transparent 49.7%,rgba(216,242,83,.3) 50%,transparent 50.3%);background-size:50px 50px;opacity:.7}.portrait-initials{font:500 clamp(4rem,10vw,8rem) var(--serif);letter-spacing:-.1em;color:var(--lime);position:absolute;bottom:42px;left:28px}.portrait-placeholder p{position:absolute;bottom:13px;margin:0;font:400 .59rem var(--mono);letter-spacing:.06em;text-transform:uppercase}.kicker{color:var(--teal);margin:0 0 16px}.about h2,.section-heading h2,.pub-intro h2,.contact h2,.cv-band h2{font-size:clamp(2.3rem,4.1vw,4.2rem);line-height:.99;letter-spacing:-.065em;margin:0 0 29px;max-width:800px}.about-copy>p:not(.kicker){max-width:680px;font-size:1.02rem;color:var(--muted);margin:0 0 15px}.fact-grid{border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;margin-top:40px}.fact-grid div{padding:17px 8px 15px 0;border-bottom:1px solid var(--line)}.fact-grid span{display:block;color:var(--muted);font:400 .59rem var(--mono);text-transform:uppercase;letter-spacing:.08em}.fact-grid strong{font-size:.83rem}.research{background:var(--ink);color:#f5f5ef;width:100%;padding-left:max(24px,calc((100% - 1240px)/2));padding-right:max(24px,calc((100% - 1240px)/2))!important}.research > .section-label {
}.research .section-label span,.research .kicker{color:var(--lime)}.section-heading{margin-left:calc(15% + 1px);margin-bottom:55px}.research-list{border-top:1px solid rgba(255,255,255,.25);margin-left:25%}.research-item{display:grid;grid-template-columns:70px 1fr 40px;gap:18px;padding:28px 0;border-bottom:1px solid rgba(255,255,255,.25);align-items:start}.research-num{font:400 .66rem var(--mono);color:var(--lime)}.research-item h3{font-size:1.4rem;margin:0 0 8px;letter-spacing:-.04em}.research-item p{margin:0;max-width:590px;color:#bfc7c3;font-size:.92rem}.arrow{font-size:1.3rem;color:var(--lime);text-align:right}.projects.split-heading{display:flex;align-items:end;justify-content:space-between;gap:40px}.split-heading>p{max-width:310px;color:var(--muted);font-size:.86rem;margin-bottom:35px}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.project{border:1px solid var(--line);background:#eee}.project-featured{grid-column:span 2}.project-art{height:267px;background:var(--deep);position:relative;overflow:hidden}.project-featured .project-art{height:380px}.art-tag{position:absolute;z-index:2;top:16px;left:16px;color:white;font:400 .57rem var(--mono);letter-spacing:.08em}.art-welding svg{position:absolute;width:80%;height:90%;bottom:-7%;left:10%;stroke:var(--lime);stroke-width:4;fill:none;opacity:.92}.art-map{background:#b1d0c3}.map-grid{position:absolute;inset:0;background:linear-gradient(90deg,rgba(14,114,109,.3) 1px,transparent 1px),linear-gradient(rgba(14,114,109,.3) 1px,transparent 1px);background-size:38px 38px;transform:rotate(-7deg) scale(1.1)}.map-grid i{position:absolute;width:13px;height:13px;background:var(--ink);border-radius:50%}.map-grid i:nth-child(1){left:14%;top:23%}.map-grid i:nth-child(2){left:72%;top:19%}.map-grid i:nth-child(3){left:55%;top:57%;background:var(--lime)}.map-grid i:nth-child(4){left:28%;top:77%}.map-grid i:nth-child(5){right:11%;bottom:17%}.map-path{position:absolute;width:65%;height:47%;left:18%;top:27%;border-left:3px solid var(--ink);border-bottom:3px solid var(--ink);border-radius:0 0 0 85%;transform:rotate(-22deg)}.art-cad{background:#d9dde0}.cad-shape{width:180px;height:180px;border:3px solid var(--teal);position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(30deg);box-shadow:30px 35px 0 -3px transparent}.cad-line{height:1px;background:var(--teal);position:absolute;width:55%;left:8%;opacity:.8}.line-1{top:28%;transform:rotate(23deg)}.line-2{bottom:25%;transform:rotate(-32deg)}.project-info{padding:25px 28px 28px;display:grid;grid-template-columns:1fr 1fr;gap:20px;background:#eeeee9}.project:not(.project-featured) .project-info{display:block}.project-info h3{font-size:1.45rem;letter-spacing:-.045em;margin:6px 0 0}.project-info>p{font-size:.85rem;color:var(--muted);margin:0}.project-info a{font-size:.75rem;font-weight:800;color:var(--ink);text-decoration:none}.project-info a span{color:var(--teal)}.placeholder-note{color:var(--muted);font:400 .67rem var(--mono);margin:17px 0 0}.publications{border-top:1px solid var(--line)}.pub-intro{display:flex;justify-content:space-between;align-items:end;gap:30px}.pub-intro>p{max-width:250px;margin-bottom:30px;font-size:.85rem;color:var(--muted)}.publication-box{border:1px solid var(--line);padding:clamp(25px,5vw,60px);display:flex;justify-content:space-between;align-items:end;gap:30px}.pub-placeholder span{color:var(--teal);font-size:1.5rem}.pub-placeholder h3{font-size:1.5rem;letter-spacing:-.04em;margin:7px 0}.pub-placeholder p{color:var(--muted);max-width:550px;margin:0;font-size:.9rem}.button-outline:hover{background:var(--ink);color:#fff}.timeline{list-style:none;margin:0 0 0 25%;padding:0;border-top:1px solid var(--line)}.timeline li{display:grid;grid-template-columns:150px 1fr;gap:28px;padding:29px 0;border-bottom:1px solid var(--line)}.timeline-date{font:400 .65rem var(--mono);color:var(--teal);text-transform:uppercase}.timeline h3{font-size:1.2rem;margin:0 0 4px;letter-spacing:-.04em}.timeline .organization{color:var(--muted);margin:0 0 9px}.timeline-content>p:last-child{color:var(--muted);font-size:.88rem;margin:0}.cv-band{width:100%;background:var(--teal);color:#fff;padding-left:max(24px,calc((100% - 1240px)/2))!important;padding-right:max(24px,calc((100% - 1240px)/2))!important;display:flex;align-items:center;justify-content:space-between;gap:40px}.cv-band .eyebrow{color:var(--lime)}.cv-band h2{margin:0;max-width:700px}.button-light{background:var(--lime);border-color:var(--lime);white-space:nowrap}.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(35px,10vw,150px)}.contact-lede{max-width:480px;color:var(--muted);font-size:1rem}.contact-links{border-top:1px solid var(--line)}.contact-links a{display:grid;grid-template-columns:1fr 1.6fr 20px;align-items:center;gap:12px;padding:21px 0;border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none}.contact-links span{font:400 .62rem var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.contact-links strong{font-size:.86rem}.contact-links i{font-style:normal;color:var(--teal)}footer{width:min(1240px,calc(100% - 48px));margin:auto;border-top:1px solid var(--line);padding:22px 0;display:flex;justify-content:space-between;color:var(--muted);font:400 .61rem var(--mono);text-transform:uppercase;letter-spacing:.04em}footer p{margin:0}footer a{color:var(--ink);text-decoration:none}@media(max-width:760px){.site-header{height:64px}.nav-wrap{width:calc(100% - 32px)}.brand-name{display:none}.menu-toggle{display:block}.site-nav{display:none;position:absolute;left:0;right:0;top:63px;padding:20px 16px;background:var(--paper);border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;gap:18px}.site-nav.open{display:flex}.site-nav .nav-contact{text-align:center}.section{width:calc(100% - 32px)}.hero{min-height:auto;padding-top:68px}.hero-grid,.about-grid,.contact-grid{grid-template-columns:1fr;gap:40px}.hero h1{font-size:3.25rem}.hero-visual{height:330px}.hero-foot{margin-top:50px}.hero-foot span{display:none}.section:not(.hero){padding:80px 0}.section-label{margin-bottom:35px}.portrait-placeholder{min-height:330px}.section-heading,.research-list,.timeline{margin-left:0}.section-heading{margin-bottom:38px}.research{padding-left:16px;padding-right:16px!important}.research-item{grid-template-columns:40px 1fr 20px}.research-item h3{font-size:1.15rem}.split-heading,.pub-intro,.publication-box,.cv-band{display:block}.split-heading>p,.pub-intro>p{margin:0}.project-grid{grid-template-columns:1fr}.project-featured{grid-column:span 1}.project-featured .project-art{height:260px}.project-info{display:block}.project-info>p{margin:15px 0}.pub-intro{margin-bottom:30px}.publication-box .button{margin-top:25px}.timeline li{grid-template-columns:1fr;gap:8px}.cv-band{padding-left:16px!important;padding-right:16px!important}.cv-band .button{margin-top:28px}.contact-links a{grid-template-columns:1fr 1.35fr 15px}.hero-actions{align-items:flex-start;flex-direction:column;gap:18px}footer{width:calc(100% - 32px);display:block;line-height:2}footer p{display:inline;margin-right:12px}}
@media(prefers-reduced-motion:no-preference){.reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}.reveal.visible{opacity:1;transform:none}.orbit-one{animation:spin 28s linear infinite}.orbit-two{animation:spin 36s linear infinite reverse}.orbit-three{animation:spin 32s linear infinite}@keyframes spin{to{transform:translate(-50%,-50%) rotate(325deg)}}}
.portrait{min-height:430px;margin:0;position:relative;overflow:hidden;background:var(--deep)}.portrait:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 65%,rgba(17,47,48,.65))}.portrait img{display:block;width:100%;height:100%;min-height:430px;object-fit:cover;object-position:center top;filter:saturate(.85)}.portrait figcaption{position:absolute;z-index:1;bottom:18px;left:20px;color:#fff;font:400 .61rem var(--mono);line-height:1.6;text-transform:uppercase;letter-spacing:.06em}.art-glue{background:#e9d8bd}.glue-path{position:absolute;width:65%;height:58%;left:18%;top:22%;border:6px solid var(--teal);border-left:0;border-bottom:0;border-radius:0 90px 0 0;transform:rotate(-14deg)}.glue-node{position:absolute;width:22px;height:22px;border-radius:50%;background:var(--lime);border:3px solid var(--ink)}.glue-node.one{left:19%;bottom:22%}.glue-node.two{left:52%;top:22%}.glue-node.three{right:17%;top:45%}.publication-list{border-top:1px solid var(--line);margin-left:25%;padding-top:8px}.publication-list h3{font:500 .69rem var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--teal);margin:28px 0 13px}.publication-list ol{margin:0;padding-left:22px}.publication-list li{padding:13px 0 13px 7px;border-bottom:1px solid var(--line);font-size:.86rem;color:var(--muted)}.publication-list li::marker{font:400 .62rem var(--mono);color:var(--teal)}.contact-links a,.contact-link-placeholder{display:grid;grid-template-columns:1fr 1.6fr 20px;align-items:center;gap:12px;padding:21px 0;border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none}.contact-link-placeholder{opacity:.7}@media(max-width:760px){.portrait{min-height:330px}.portrait img{min-height:330px}.publication-list{margin-left:0}.contact-links a,.contact-link-placeholder{grid-template-columns:1fr 1.35fr 15px}}

/* Shared section grid and project media */
.media-frame{background:#102e2f}.project-video{display:block;width:100%;height:100%;object-fit:cover;background:#102e2f}.media-frame:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(0,0,0,.28),transparent 25%,transparent 72%,rgba(0,0,0,.32))}.media-frame .art-tag,.media-caption{z-index:2}.media-caption{position:absolute;right:16px;bottom:14px;color:#fff;font:400 .56rem var(--mono);letter-spacing:.06em;text-transform:uppercase}.projects .split-heading{display:grid;grid-template-columns:minmax(0,1fr) minmax(210px,.38fr);align-items:end;gap:clamp(30px,6vw,85px)}.projects .split-heading>p{max-width:300px;margin:0 0 31px;color:var(--muted);font-size:.86rem}.projects .project-grid{margin-top:54px}.projects .project-info{min-height:188px}
@media(min-width:761px){.section-label{margin-bottom:46px}.about-grid{grid-template-columns:minmax(300px,.76fr) minmax(0,1.24fr);gap:clamp(56px,8vw,128px);align-items:start}.section-heading,.research-list,.timeline,.publication-list{margin-left:25%;max-width:930px}.research>.section-label{margin-left:0}.projects .section-heading{margin-left:25%}.projects .project-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}.project-featured{grid-column:1 / -1}.project-featured .project-info{grid-template-columns:1.05fr .95fr;align-items:start}.project:not(.project-featured) .project-art{height:300px}.project:not(.project-featured) .project-info{min-height:250px}.portrait{min-height:520px}.portrait img{min-height:520px}}
@media(max-width:760px){.projects .split-heading{display:block}.projects .split-heading>p{margin:0}.projects .project-grid{margin-top:32px}.project-video{min-height:inherit}.media-caption{display:none}}

/* One shared alignment system for the complete site */
@media(min-width:761px){
  .section,.nav-wrap,footer{width:min(1360px,calc(100% - 96px))}
  .section:not(.hero){padding:112px 0}
  .section-label{margin:0 0 42px}
  .section-heading,.research-list,.timeline,.publication-list{margin-left:0;max-width:none}
  .section-heading{margin-bottom:48px}
  .about-grid{grid-template-columns:minmax(330px,.78fr) minmax(0,1.22fr);gap:clamp(54px,7vw,112px)}
  .about-copy{max-width:880px}
  .research{width:100%;padding-left:max(48px,calc((100% - 1360px)/2));padding-right:max(48px,calc((100% - 1360px)/2))!important}
  .research>.section-label{margin-left:0}
  .research .section-heading{max-width:930px}
  .research-list{max-width:980px}
  .projects .section-heading{margin-left:0;max-width:none}
  .projects .split-heading{grid-template-columns:minmax(0,1fr) minmax(255px,.32fr);gap:64px}
  .projects .project-grid{margin-top:44px}
  .pub-intro{display:grid;grid-template-columns:minmax(0,1fr) minmax(255px,.32fr);align-items:end;gap:64px;margin-bottom:44px}
  .pub-intro>p{justify-self:end;margin:0 0 8px;max-width:310px}
  .publication-list{max-width:none}
  .timeline{max-width:980px}
  .contact-grid{grid-template-columns:minmax(0,1fr) minmax(420px,.85fr);gap:90px}
}
.video-pending{display:grid;place-items:center;background:linear-gradient(145deg,#0e2627,#174547);color:#eef2ec;text-align:center}.video-pending>div{position:relative;z-index:2}.video-pending p{margin:12px 0 0;font-size:.8rem;line-height:1.6}.play-symbol{display:inline-grid;place-items:center;width:54px;height:54px;border:1px solid var(--lime);border-radius:50%;color:var(--lime);padding-left:3px}.project-video{position:relative;z-index:1}

/* Image-free profile surface */
.profile-panel{min-height:430px;position:relative;overflow:hidden;background:var(--deep);color:#fff;padding:26px;border:1px solid rgba(216,242,83,.3);display:flex;flex-direction:column;justify-content:space-between}.profile-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top;filter:saturate(.86) contrast(1.04)}.profile-panel:before,.profile-panel:after{content:"";position:absolute;z-index:1;pointer-events:none}.profile-panel:before{inset:0;background:linear-gradient(180deg,rgba(10,27,28,.18) 25%,rgba(10,27,28,.08) 46%,rgba(10,27,28,.82) 100%)}.profile-panel:after{width:250px;height:250px;left:-130px;bottom:-105px;border:1px solid rgba(216,242,83,.35);border-radius:50%}.profile-index{position:relative;z-index:2;margin:0;color:var(--lime);font:500 .62rem var(--mono);letter-spacing:.08em;text-shadow:0 1px 9px rgba(0,0,0,.72)}.profile-caption{position:relative;z-index:2;display:flex;flex-direction:column;gap:4px;margin-top:30px;font:400 .61rem var(--mono);letter-spacing:.06em;text-transform:uppercase;text-shadow:0 1px 9px rgba(0,0,0,.72)}.profile-caption strong{font-size:.74rem;color:#fff}.profile-caption span{color:#e1e8e3}
@media(min-width:761px){.profile-panel{min-height:520px}.section-heading>h2,.pub-intro h2{max-width:900px}.publication-list{padding-top:0}.publication-list h3:first-child{margin-top:0}.timeline{margin-top:0}}

/* Research uses one shared left edge for its label, title, and direction list. */
@media(min-width:761px){
  .research{padding:112px max(48px,calc((100% - 1360px)/2))!important}
  .research>.section-label,
  .research .section-heading,
  .research .research-list{width:min(940px,100%);margin-left:0;margin-right:0}
  .research>.section-label{margin-bottom:58px}
  .research .section-heading{margin-bottom:58px}
  .research .section-heading h2{max-width:860px;font-size:clamp(2.5rem,4.1vw,4.2rem);line-height:1.01}
  .research .research-list{max-width:940px}
}

/* Alternate the long content sections so the reading rhythm remains clear. */
.publications{width:100%;margin:0;background:var(--ink);color:#f5f5ef;border-top:0;padding-left:max(48px,calc((100% - 1360px)/2))!important;padding-right:max(48px,calc((100% - 1360px)/2))!important}
.publications .section-label span,.publications .kicker,.publications .publication-list h3,.publications .publication-list li::marker{color:var(--lime)}
.publications .pub-intro>p,.publications .publication-list li{color:#bfc7c3}
.publications .publication-list{border-color:rgba(255,255,255,.25)}
.publications .publication-list li{border-color:rgba(255,255,255,.25)}
.experience{border-top:1px solid var(--line)}
@media(max-width:760px){.publications{padding-left:16px!important;padding-right:16px!important}}

/* One gutter everywhere: header, light sections, and full-width dark sections. */
:root{--site-gutter:16px}
.research,.publications{padding-left:var(--site-gutter)!important;padding-right:var(--site-gutter)!important}
.research>.section-label,.publications>.section-label{margin-left:0!important}
.research-symbol{font-family:var(--sans);font-size:2rem;line-height:1;color:var(--lime)}
@media(max-width:760px){.research-symbol{font-size:1.55rem}}
.research-item{grid-template-columns:52px minmax(0,1fr) minmax(180px,240px)}
.research-item .arrow{display:none}
.research-icon{display:block;width:34px;height:34px;color:var(--lime)}
.research-icon svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.research-meta{display:flex;flex-wrap:wrap;justify-content:flex-end;align-content:start;gap:7px}.research-meta span{border:1px solid rgba(216,242,83,.5);color:var(--lime);padding:4px 7px;font:400 .57rem var(--mono);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}
@media(max-width:760px){.research-item{grid-template-columns:44px minmax(0,1fr)}.research-icon{width:28px;height:28px}.research-meta{grid-column:2;justify-content:flex-start;margin-top:-8px}}

/* Section labels are intentionally prominent enough to hold the page structure. */
.section-label{font-size:.86rem;font-weight:600;letter-spacing:.1em}
.kicker{font-size:.8rem;font-weight:600;letter-spacing:.1em}
@media(max-width:760px){.section-label{font-size:.78rem}.kicker{font-size:.74rem}}

/* Use the full desktop grid in Research instead of leaving an unused right margin. */
@media(min-width:761px){
  .research>.section-label{width:100%;max-width:1360px}
  .research .section-heading{width:100%;max-width:1200px}
  .research .section-heading h2{max-width:1120px}
  .research .research-list{width:100%;max-width:1360px}
  .research-item{grid-template-columns:58px minmax(0,1fr) minmax(230px,300px);gap:24px}
  .research-item p{max-width:760px}
}

/* Keep publication separators below group titles, never through their text. */
.publications .publication-list{border-top:0}
.publications .publication-list h3{margin:30px 0 14px;padding-bottom:13px;border-bottom:1px solid rgba(255,255,255,.25)}
.publications .publication-list h3:first-child{margin-top:0}
.publications .publication-list a{color:#f5f5ef;text-decoration-color:rgba(216,242,83,.7);text-decoration-thickness:1px;text-underline-offset:3px}.publications .publication-list a:hover{color:var(--lime)}

/* Experience uses the full desktop grid, with a useful focus column on the right. */
.role-meta{display:flex;flex-wrap:wrap;align-content:start;justify-content:flex-end;gap:7px}.role-meta span{border:1px solid var(--line);color:var(--teal);padding:4px 7px;font:400 .57rem var(--mono);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}
@media(min-width:761px){
  .experience .section-heading{max-width:1120px}
  .experience .section-heading h2{max-width:1000px}
  .experience .timeline{max-width:1360px}
  .experience .timeline li{grid-template-columns:190px minmax(0,1fr) minmax(220px,280px);gap:34px}
  .experience .timeline-content>p:last-child{max-width:780px}
}
@media(max-width:760px){.role-meta{grid-column:1 / -1;justify-content:flex-start;margin-top:-2px}}

/* Project cards read as concise technical case studies rather than simple captions. */
.projects .project-info,.projects .project-featured .project-info{display:block;min-height:0;padding:30px;background:#eeeee9}
.projects .project-info h3{margin:7px 0 13px;font-size:clamp(1.35rem,2vw,1.8rem)}
.project-summary{margin:0;color:var(--muted);font-size:.92rem;line-height:1.65}
.project-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin-top:23px;padding-top:19px;border-top:1px solid var(--line)}
.project-detail-grid p:not(.detail-label){margin:0;color:var(--muted);font-size:.81rem;line-height:1.55}
.detail-label{margin:0 0 8px;font:600 .64rem var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--teal)}
.project-detail-grid ul{margin:0;padding-left:17px;color:var(--muted);font-size:.79rem;line-height:1.65}
.tech-list{margin:22px 0 0;padding-top:15px;border-top:1px solid var(--line);font:400 .72rem var(--mono);line-height:1.65;color:var(--muted)}
.tech-list strong{color:var(--ink);font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.project-featured .project-art{height:440px}
@media(max-width:760px){.projects .project-info{padding:24px}.project-detail-grid{grid-template-columns:1fr;gap:18px}.project-featured .project-art{height:280px}}

/* Private, curated portfolio guide. No external chatbot service is required. */
.portfolio-assistant-toggle{position:fixed;z-index:30;right:26px;bottom:24px;display:flex;align-items:center;gap:9px;border:1px solid var(--ink);background:var(--ink);color:#fff;padding:13px 16px;font:700 .74rem var(--sans);box-shadow:0 12px 32px rgba(17,47,48,.24);cursor:pointer}.portfolio-assistant-toggle:hover{background:var(--teal);border-color:var(--teal)}.portfolio-assistant-toggle span{color:var(--lime);font-size:1rem}
.portfolio-assistant{position:fixed;z-index:31;right:26px;bottom:84px;width:min(400px,calc(100vw - 32px));background:var(--ink);color:#f5f5ef;border:1px solid rgba(255,255,255,.19);box-shadow:0 20px 60px rgba(10,22,22,.3)}.assistant-header{display:flex;justify-content:space-between;gap:20px;padding:21px 22px 17px;border-bottom:1px solid rgba(255,255,255,.17)}.assistant-header p,.assistant-answer-label,.assistant-note{margin:0;font:600 .59rem var(--mono);letter-spacing:.08em;color:var(--lime);text-transform:uppercase}.assistant-header h2{margin:4px 0 0;font-size:1.35rem;letter-spacing:-.04em}.assistant-close{width:32px;height:32px;border:0;background:transparent;color:#fff;font-size:1.7rem;line-height:1;cursor:pointer}.assistant-body{padding:20px 22px}.assistant-intro{margin:0 0 16px;color:#c8d0cc;font-size:.84rem;line-height:1.55}.assistant-prompts{display:grid;gap:8px}.assistant-prompts button{width:100%;border:1px solid rgba(255,255,255,.18);border-radius:0;background:rgba(255,255,255,.05);color:#f5f5ef;padding:12px 13px;text-align:left;font:500 .79rem var(--sans);line-height:1.35;cursor:pointer}.assistant-prompts button:hover{border-color:var(--lime);color:var(--lime)}.assistant-answer{margin-top:17px;padding:15px;border:1px solid rgba(216,242,83,.45);background:rgba(216,242,83,.06)}.assistant-answer-text{margin:9px 0 12px;color:#e3e9e5;font-size:.8rem;line-height:1.6}.assistant-answer-link{color:var(--lime);font-size:.75rem;font-weight:800;text-decoration:none}.assistant-note{padding:14px 22px;border-top:1px solid rgba(255,255,255,.17);color:#aeb9b3;font-size:.52rem;line-height:1.5}.portfolio-assistant[hidden]{display:none}@media(max-width:760px){.portfolio-assistant-toggle{right:16px;bottom:16px}.portfolio-assistant{right:16px;bottom:76px}.assistant-header,.assistant-body{padding-left:18px;padding-right:18px}.assistant-note{padding-left:18px;padding-right:18px}}
@media(min-width:761px){
  :root{--site-gutter:max(48px,calc((100% - 1360px)/2))}
  .nav-wrap,.section,footer{width:min(1360px,calc(100% - (2 * var(--site-gutter)))}
  .research,.publications{padding-left:var(--site-gutter)!important;padding-right:var(--site-gutter)!important}
}

/* Publication and patent identifiers use original vector marks, not third-party logos. */
.publication-heading{display:flex;align-items:center;gap:10px}
.publication-mark{display:inline-flex;align-items:center;justify-content:center;width:25px;height:25px;border:1px solid rgba(216,242,83,.65);color:var(--lime);flex:0 0 25px}
.publication-mark svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.patent-list{list-style:none;margin:0;padding:0;border-bottom:1px solid rgba(255,255,255,.25)}
.patent-list li{display:grid;grid-template-columns:44px minmax(0,1fr);gap:12px;align-items:center;padding:16px 0;border-top:1px solid rgba(255,255,255,.25);color:#f5f5ef}
.patent-list span{font:400 .62rem var(--mono);color:var(--lime)}
.patent-list strong{font-size:.9rem;letter-spacing:-.02em}
.project-patent{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 0;color:var(--muted);font:400 .72rem var(--mono);line-height:1.55}
.project-patent strong{color:var(--teal);font-weight:800;text-transform:uppercase;letter-spacing:.06em}
@media(max-width:760px){.patent-list li{grid-template-columns:34px minmax(0,1fr)}.publication-mark{width:23px;height:23px;flex-basis:23px}}