@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}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}::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}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}.note{font-size:var(--fs-note);line-height:1.65}.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;gap:2rem;font-weight:500;white-space:nowrap}.nav a{color:var(--ink)}.nav a:hover{color:var(--link)}.hero{padding-top:88px;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:grid;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:64px;--gap:64px;font-variant-numeric:tabular-nums}.figures div{position:relative}.figures div+div::before{content:"";position:absolute;top:0;bottom:0;left:calc(var(--gap)/-2);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;max-width:19em}.section{margin-top:64px}.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}.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}.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{background:var(--tint);box-shadow:0 0 0 var(--hl,16px)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:.35rem}.meta{margin-top:.6rem;display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .75rem}.tag{font-size:.875rem;font-weight:500;line-height:1.5;color:var(--muted-ink);background:var(--hairline);padding:.05rem .5rem;border-radius:3px}.more{margin-top:28px;font-weight:500}.intro{margin-bottom:24px}.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}.page-head{padding-top:88px}.page-head p{margin-top:1.75rem;max-width:36em}.facade img,.map-frame{display:block;width:100%;border:1px solid var(--hairline);border-radius:8px}.facade img{height:auto}.facade .note{margin-top:16px}.facade .more{margin-top:12px}.map-frame{margin-top:64px;height:80vh;min-height:480px}.prose p+p{margin-top:1em}.page-head .meta{margin-top:1rem}.links{display:flex;flex-wrap:wrap;gap:.4rem 2rem;font-weight:500}.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}@media(max-width:960px){:root{--fs-display:2.25rem;--fs-body:1.125rem;--fs-note:1.0625rem}.figures{column-gap:40px;--gap:40px}.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:860px){.figures{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:28px}.figures div:nth-child(3)::before{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 a{padding:12px 0}.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;column-gap:24px;--gap:24px;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:48px}.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{--hl:8px}.rows li{display:block;padding:20px 0}.posts li{padding:0}.exp .detail{margin-top:.4rem}.map{display:block}.map .shot{max-width:320px}.map .item{margin-top:16px}.page-head{padding-top:32px}.page-head p{margin-top:.9rem}.map-frame{margin-top:48px}.links{column-gap:1.25rem}.foot{margin-top:56px}.foot nav a{padding:6px 0}.foot .wrap{flex-direction:column;padding-top:24px;padding-bottom:32px}}@media(max-width:430px){.mark{display:none}.brand{font-size:var(--fs-meta)}}@media(max-width:360px){.nav{gap:.75rem}}@media(max-width:340px){.bar .wrap{flex-wrap:wrap;height:auto;padding-top:8px;padding-bottom:8px;row-gap:2px}}