@font-face{font-family:ibm plex sans;src:url(/fonts/ibm-plex-sans-latin-400-normal.woff2)format('woff2');font-weight:400;font-display:swap}@font-face{font-family:ibm plex sans;src:url(/fonts/ibm-plex-sans-latin-500-normal.woff2)format('woff2');font-weight:500;font-display:swap}@font-face{font-family:ibm plex sans;src:url(/fonts/ibm-plex-sans-latin-600-normal.woff2)format('woff2');font-weight:600;font-display:swap}@font-face{font-family:ibm plex sans;src:url(/fonts/ibm-plex-sans-latin-700-normal.woff2)format('woff2');font-weight:700;font-display:swap}:root{--paper:#FFFFFF;--ink:#16191D;--muted-ink:#5A636E;--rule:#C4CBD3;--hairline:#E6E9ED;--link:#22689B;--photo:#3A93D4;--sky:#A9D0EE;--slate:#C4CBD3;--hatch:#9AA3AE;--tint:#DDECF8;--fs-display:2.75rem;--fs-head:2rem;--fs-body:1.25rem;--fs-note:1.125rem;--fs-meta:.9375rem;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--paper:#111315;--ink:#F1F3F5;--muted-ink:#B3BBC4;--rule:#48515B;--hairline:#262B31;--link:#7DB9E4;--sky:#2F5D80;--slate:#48515B;--hatch:#6B7580;--tint:#172A3A}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:96px;scrollbar-gutter:stable}body{margin:0;background:var(--paper);color:var(--ink);font:var(--fs-body)/1.6 ibm plex sans,system-ui,-apple-system,segoe ui,Roboto,sans-serif;min-height:100vh;display:flex;flex-direction:column}main{flex:1 0 auto;width:100%}::selection{background:var(--photo);color:#fff}h1,h2,h3,p,dl,dt,dd,figure,ul{margin:0}ul{padding:0;list-style:none}p{text-wrap:pretty}h1{font-size:var(--fs-display);line-height:1.18;font-weight:400;letter-spacing:-.015em;text-wrap:balance}h2{font-size:var(--fs-head);line-height:1.2;font-weight:500;letter-spacing:-.015em}h3{font-size:var(--fs-body);line-height:1.45;font-weight:600;text-wrap:balance}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.22em}a:focus-visible{outline:2px solid var(--link);outline-offset:3px;border-radius:2px}.meta{font-size:var(--fs-meta);line-height:1.5;color:var(--muted-ink);font-variant-numeric:tabular-nums}.nw{white-space:nowrap}.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip{position:absolute;left:16px;top:-48px;z-index:20;background:var(--paper);padding:8px 12px}.skip:focus{top:8px}.wrap{max-width:1184px;margin:0 auto;padding:0 32px}.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:32px}.bar{position:sticky;top:0;z-index:10;background:var(--paper);border-bottom:1px solid var(--hairline)}.bar .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;height:64px}.brand{color:var(--ink);font-weight:600;white-space:nowrap;display:inline-flex;align-items:center;gap:10px}.brand:hover{text-decoration:none}.mark{display:inline-flex;gap:2px}.mark i{display:block;height:12px;border-radius:2px}.mark i:nth-child(1){width:5px;background:var(--slate)}.mark i:nth-child(2){width:9px;background:var(--sky)}.mark i:nth-child(3){width:24px;background:var(--photo)}.nav{display:flex;align-items:center;gap:2rem;font-weight:500;white-space:nowrap}.nav ul{display:flex;gap:1.75rem}.nav a,.menu summary{color:var(--ink)}.nav a:hover,.menu summary:hover{color:var(--link)}.nav .cv{color:var(--link);padding-left:2rem;border-left:1px solid var(--rule)}.pdf::before{content:"";display:inline-block;width:1.2em;height:1.2em;margin-right:.2em;vertical-align:-.25em;background:currentColor;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3v4a1 1 0 0 0 1 1h4'/%3E%3Cpath d='M5 12V5a2 2 0 0 1 2-2h7l5 5v4'/%3E%3Cpath d='M5 18h1.5a1.5 1.5 0 0 0 0-3H5v6'/%3E%3Cpath d='M17 18h2'/%3E%3Cpath d='M20 15h-3v6'/%3E%3Cpath d='M11 15v6h1a2 2 0 0 0 2-2v-2a2 2 0 0 0-2-2z'/%3E%3C/svg%3E")center/contain no-repeat}.menu{display:none;position:relative}.menu summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:.4rem;padding:12px 0}.menu summary::-webkit-details-marker{display:none}.menu summary::after,.all::after{content:"";width:.4em;height:.4em;border:solid;border-width:0 1.5px 1.5px 0;transform:translateY(-.15em)rotate(45deg)}.menu[open] summary::after,.all[aria-expanded=true]::after{transform:translateY(.1em)rotate(-135deg)}.menu ul{position:absolute;right:-16px;top:100%;display:block;min-width:12rem;padding:8px 0;background:var(--paper);border:1px solid var(--rule);border-radius:8px}.menu li a{display:block;padding:11px 16px}.hero{padding-top:48px;align-items:start}.hero .text{grid-column:1/span 8}.hero .portrait{grid-column:9/span 4;justify-self:end;width:100%;max-width:280px;margin-top:.6rem}.portrait img{display:block;width:100%;height:auto;border-radius:8px;aspect-ratio:1;background:var(--photo)}h1 strong{font-weight:600;white-space:nowrap}.range{margin-top:1.75rem;max-width:36em}.contact{margin-top:1.5rem;display:flex;flex-wrap:wrap;column-gap:2rem;row-gap:.3rem;font-weight:500}.figures{margin-top:64px;display:flex;align-items:stretch;font-variant-numeric:tabular-nums}.figures dl{flex:none}.figures .sep{flex:1;min-width:48px;display:flex;justify-content:center}.figures .sep::before{content:"";border-left:1px solid var(--rule)}.figures dt{font-weight:600;line-height:1.05;white-space:nowrap}.figures .num{font-size:2.625rem;letter-spacing:-.02em}.figures .unit{font-size:1.25rem;font-weight:500;margin-left:.25em}.figures dd{margin-top:.6rem;font-size:var(--fs-meta);line-height:1.45;white-space:nowrap}.section{margin-top:48px}.head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem 2rem;margin-bottom:24px}.side{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:32px;align-items:start}.side .head{display:contents}.side .head h2{grid-column:1/-1;margin-bottom:24px}.side>:not(.head){grid-column:3/-1}.about a[href^=http]::after,.item h3 a[href^=http]::after{content:"";display:inline-block;width:.6em;height:.6em;margin-left:.25em;vertical-align:.05em;background:currentColor;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3.5 8.5l5-5M4.5 3.5h4v4' fill='none' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")center/contain no-repeat}.rows li{padding:24px 0;row-gap:.15rem}.rows li:first-child{padding-top:0}.rows li:last-child{padding-bottom:0}.rows li+li{border-top:1px solid var(--hairline)}.rows .when{grid-column:1/span 2;font-size:var(--fs-meta);font-weight:500;color:var(--muted-ink);line-height:1.5;padding-top:.1rem;font-variant-numeric:tabular-nums;white-space:nowrap}.rows .org{margin-top:.15rem;line-height:1.45}.rows .org b{font-weight:500}.rows .org span,.rows .pr{color:var(--muted-ink)}.rows .pr{font-weight:400}.exp .what,.exp .detail{grid-column:3/-1}.rows .when{position:relative;align-self:start;padding-left:12px}.exp li[id] .when::before{content:"";position:absolute;left:0;top:.25rem;bottom:.15rem;width:3px;border-radius:3px}.exp li.arch .when::before{background:var(--photo)}.exp li.eng .when::before{background:color-mix(in srgb,var(--sky),var(--link) 35%)}.exp li.grow .when::before{background:linear-gradient(var(--photo),var(--sky))}.exp li.ops .when::before{background:repeating-linear-gradient(135deg,var(--slate) 0 5px,var(--hatch) 5px 7px)}.exp li{position:relative;isolation:isolate;--pt:16px;--pb:16px}.exp li:first-child{--pt:-8px}.exp li:last-child{--pb:-8px}.exp li::after{content:"";position:absolute;z-index:-1;inset:var(--pt)-12px var(--pb)-6px;border-radius:3px;background:var(--lit,transparent)}.exp .detail{margin-top:.6rem;font-size:var(--fs-note);line-height:1.65}.strip{position:relative}.track{position:relative;height:40px}.seg{position:absolute;top:0;height:40px;border-radius:3px;left:calc((var(--s) - var(--y0))/var(--span) * 100%);width:calc((var(--e) - var(--s))/var(--span) * 100% - 3px)}.seg.arch,.legend .arch{background:var(--photo)}.seg.eng,.legend .eng{background:var(--sky)}.seg.grow{background:linear-gradient(90deg,var(--sky),var(--photo))}.seg.ops,.legend .ops{background:repeating-linear-gradient(135deg,var(--slate) 0 5px,var(--hatch) 5px 7px)}.marks{position:relative;height:2.9em;margin-top:6px;font-variant-numeric:tabular-nums}.marks span{position:absolute;top:0;left:calc((var(--s) - var(--y0))/var(--span) * 100%);padding:2px 0 0 7px;border-left:1px solid var(--rule);white-space:nowrap;line-height:1.35}.marks b{display:block;font-size:.85rem;font-weight:600;color:var(--muted-ink)}.marks em{display:block;font-style:normal;font-size:.82rem;color:var(--muted-ink)}.legend{margin:12px 0 40px;display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem 1.75rem;font-size:var(--fs-meta);color:var(--muted-ink)}.legend span{display:inline-flex;align-items:center;gap:.5rem}.legend i{display:inline-block;width:18px;height:10px;border-radius:2px}a.seg:hover,#resume:has(#r1:hover) .seg[href="#r1"],#resume:has(#r2:hover) .seg[href="#r2"],#resume:has(#r3:hover) .seg[href="#r3"],#resume:has(#r4:hover) .seg[href="#r4"],#resume:has(#r5:hover) .seg[href="#r5"],#resume:has(#r6:hover) .seg[href="#r6"],#resume:has(#r7:hover) .seg[href="#r7"],#resume:has(#r8:hover) .seg[href="#r8"],#resume:has(#r1:target) .seg[href="#r1"],#resume:has(#r2:target) .seg[href="#r2"],#resume:has(#r3:target) .seg[href="#r3"],#resume:has(#r4:target) .seg[href="#r4"],#resume:has(#r5:target) .seg[href="#r5"],#resume:has(#r6:target) .seg[href="#r6"],#resume:has(#r7:target) .seg[href="#r7"],#resume:has(#r8:target) .seg[href="#r8"]{box-shadow:inset 0 0 0 2px var(--ink);text-decoration:none}.when a{color:inherit}.when a:hover{color:var(--link)}.rows li:target .when a{color:var(--link)}.rows li:target,#resume:has(.seg[href="#r1"]:hover) #r1,#resume:has(.seg[href="#r2"]:hover) #r2,#resume:has(.seg[href="#r3"]:hover) #r3,#resume:has(.seg[href="#r4"]:hover) #r4,#resume:has(.seg[href="#r5"]:hover) #r5,#resume:has(.seg[href="#r6"]:hover) #r6,#resume:has(.seg[href="#r7"]:hover) #r7,#resume:has(.seg[href="#r8"]:hover) #r8{--lit:var(--tint)}#resume:has(.seg[href="#r1"]:hover) .marks .r1 b,#resume:has(.seg[href="#r3"]:hover) .marks .r3 b,#resume:has(.seg[href="#r4"]:hover) .marks .r4 b,#resume:has(.seg[href="#r5"]:hover) .marks .r5 b,#resume:has(.seg[href="#r6"]:hover) .marks .r6 b,#resume:has(.seg[href="#r7"]:hover) .marks .r7 b,#resume:has(.seg[href="#r8"]:hover) .marks .r8 b{color:var(--link)}.posts li{padding:0}.posts li+li{border-top:0}.posts .item{padding:20px 0}.posts li+li .item{border-top:1px solid var(--hairline)}.posts li:first-child .item{padding-top:0}.posts li:last-child .item{padding-bottom:0}.item .ann{margin-top:6px}.meta{margin-top:10px;line-height:22px;display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}.outlet{display:inline-flex;align-items:center;gap:.45em}.outlet img{display:block;border-radius:3px}.tag{font-size:.875rem;font-weight:500;line-height:20px;color:var(--muted-ink);background:var(--hairline);padding:1px 8px;border-radius:3px}.more{margin-top:28px;font-weight:500}.all,.close{display:inline-flex;align-items:center;gap:.5rem;padding:0;border:0;background:0 0;font:inherit;font-weight:500;color:var(--link);cursor:pointer}.all:hover,.close:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.22em}.all{margin-top:28px}.all:focus-visible,.close:focus-visible,.menu summary:focus-visible{outline:2px solid var(--link);outline-offset:3px;border-radius:2px}.posts li[hidden]{display:none}.posts li:has(+li[hidden]) .item{padding-bottom:0}.map{display:grid;grid-template-columns:minmax(0,1fr)minmax(0,2fr);column-gap:32px}.map .shot{display:block;border:1px solid var(--hairline);border-radius:8px;overflow:hidden}.map .shot img{display:block;width:100%;height:auto}.map .item{align-self:center}@media(min-width:961px){.side>.map{grid-column:1/-1;grid-template-columns:subgrid}.map .shot{grid-column:1/span 2}.map .item{grid-column:3/-1;align-self:start}}.page-head{padding-top:32px}.page-head p{margin-top:1rem}.page-head+.section{margin-top:32px}.page-head+.more{margin-top:24px}.crumbs{display:flex;flex-wrap:wrap;gap:.25rem .5rem;margin-bottom:12px;font-size:var(--fs-meta);font-weight:500;color:var(--muted-ink)}.facade .shot{display:block;border:1px solid var(--hairline);border-radius:8px;overflow:hidden}.facade .shot:hover{border-color:var(--link)}.facade img{display:block;width:100%;height:auto}.facade .more{margin-top:16px}.facade .alt{margin-top:4px;font-size:var(--fs-meta);color:var(--muted-ink)}.map-frame{display:block;width:100%;margin-top:12px;height:80vh;min-height:480px;border:1px solid var(--hairline);border-radius:8px;background:var(--hairline)}.prose p+p{margin-top:1em}.page-head .meta{margin-top:.5rem}.foot{margin-top:80px;border-top:1px solid var(--hairline)}.foot .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.75rem 1.5rem;padding-top:32px;padding-bottom:48px;font-size:var(--fs-meta);color:var(--muted-ink)}.foot nav{display:flex;flex-wrap:wrap;gap:.4rem 1.75rem}.foot a[aria-current]{color:var(--ink)}@media(max-width:960px){:root{--fs-display:2.25rem;--fs-body:1.125rem;--fs-note:1.0625rem}.figures .num{font-size:2.25rem}.marks .hide-tablet{display:none}.rows .when,.exp .what,.exp .detail{grid-column:1/-1}.side{display:block}.side .head{display:flex}.side .head h2{margin-bottom:0}}@media(max-width:900px){.nav .nav-links{display:none}.menu{display:block}}@media(max-width:1060px){.figures{display:grid;grid-template-columns:minmax(0,1fr)auto minmax(0,1fr);row-gap:28px}.figures .sep:nth-of-type(2){display:none}.figures dd{white-space:normal;text-wrap:balance}.figures dd br{display:none}}@media(max-width:600px){:root{--fs-display:1.6rem;--fs-head:1.5rem;--fs-body:1.0625rem;--fs-note:1rem;--fs-meta:.875rem}h1{line-height:1.28}.wrap{padding:0 16px}.grid{column-gap:16px}.bar .wrap{height:54px}.nav{gap:1rem;font-size:var(--fs-meta)}.nav .cv{padding:12px 0 12px 1rem}.hero{padding-top:20px;display:flex;flex-direction:column-reverse;align-items:flex-start}.hero .portrait{width:88px;margin:0 0 16px;justify-self:auto}.range{margin-top:.9rem}.contact{margin-top:1rem;column-gap:1.25rem}.figures{margin-top:28px;row-gap:18px}.figures .num{font-size:2rem}.figures .unit{font-size:1rem}.figures dd{line-height:1.4;margin-top:.35rem}.section{margin-top:40px}.head{margin-bottom:16px}.track,.seg{height:20px}.strip{padding-right:28px}.marks{height:2.7em}.marks b{font-size:.8125rem}.marks em{font-size:.75rem}.marks .hide-tablet,.marks .hide-phone{display:none}.legend{margin-bottom:28px;gap:.35rem 1.1rem}.rows li{display:block;padding:20px 0}.posts li{padding:0}.exp li{--pt:12px;--pb:12px}.exp li::after{left:-4px;right:-8px}.exp .detail{margin-top:.4rem}.map{display:block}.map .shot{max-width:320px}.map .item{margin-top:16px}.page-head{padding-top:24px}.page-head p{margin-top:.75rem}.page-head+.section{margin-top:24px}.map-frame{height:70vh;min-height:360px}.contact a{padding-block:9px;margin-block:-9px}.posts h3 a,.more a,.all{padding-block:11px}.foot{margin-top:56px}.foot nav{display:grid;grid-template-columns:auto auto;justify-content:start;column-gap:28px}.foot nav a{padding:11px 0;margin-block:-5px}.foot .wrap{flex-direction:column;padding-top:24px;padding-bottom:32px}}@media(max-width:430px){.mark{display:none}.brand{font-size:var(--fs-meta)}}