@font-face{font-family:plexSans;src:url(../media/ibm_plex_sans_regular-s.p.263d7ogqy83uo.ttf)format("truetype");font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:plexSans;src:url(../media/ibm_plex_sans_medium-s.p.0lefmzus2tetz.ttf)format("truetype");font-display:swap;font-weight:500;font-style:normal}@font-face{font-family:plexSans Fallback;src:local(Arial);ascent-override:101.35%;descent-override:27.19%;line-gap-override:0.0%;size-adjust:101.13%}.plexsans_d8f5da3a-module__39_0OW__className{font-family:plexSans,plexSans Fallback}.plexsans_d8f5da3a-module__39_0OW__variable{--font-ibm-plex-sans:"plexSans", "plexSans Fallback"}
:root,:root[data-paper=porcelain]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#f3f1ed;--ink:#11100e;--muted:#625e57;--accent:#8f3e2f;--intro-pixel:#aaa39a;--rule:color-mix(in srgb, var(--ink) 18%, transparent);--rule-strong:color-mix(in srgb, var(--ink) 42%, transparent);--serif:"New York", "NewYork", "Iowan Old Style", Baskerville, "Palatino Linotype", "Book Antiqua", Palatino, Georgia, serif;--sans:var(--font-ibm-plex-sans), "Helvetica Neue", sans-serif;--page-gutter:clamp(24px, 5vw, 96px);--frame-max:1440px;--header-height:66px;--ease:cubic-bezier(.22, 1, .36, 1)}:root[data-paper=white]{--paper:#fff;--ink:#101010;--muted:#5c5c5c;--accent:#34586a;--intro-pixel:#b5b5b5}:root[data-paper=sage]{--paper:#e6ebe2;--ink:#111711;--muted:#566056;--accent:#365b43;--intro-pixel:#91a08d}:root[data-paper=black]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:#0c0c0b;--ink:#f2f0eb;--muted:#aaa69e;--accent:#d78570;--intro-pixel:#77736c}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + 20px);background:var(--paper)}body{background:var(--paper);min-width:320px;color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;transition:background-color .32s var(--ease), color .32s var(--ease);margin:0;font-size:14px;overflow-x:clip}a{color:inherit;text-decoration:none}button,summary{color:inherit;font:inherit;-webkit-tap-highlight-color:transparent}h1,h2,h3,p,figure,dl,dd,ol,ul{margin:0}ol,ul{padding:0;list-style:none}::selection{background:var(--ink);color:var(--paper)}:focus-visible{outline:1px solid var(--ink);outline-offset:5px}.frame{width:min(calc(100% - var(--page-gutter) * 2), var(--frame-max));margin-inline:auto}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:500;background:var(--ink);min-height:44px;color:var(--paper);letter-spacing:.08em;text-transform:uppercase;transition:transform .18s var(--ease);padding:13px 18px;font-size:11px;font-weight:500;position:fixed;top:10px;left:10px;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.section-label,.project-aside strong,.project-rail__note strong,.hero__aside p{letter-spacing:.17em;text-transform:uppercase;font-size:8px;font-weight:500;line-height:1.4}.section-label{align-items:center;gap:10px;display:flex}.section-label i{background:var(--accent);width:13px;height:1px}.scroll-progress{z-index:120;top:calc(var(--header-height) - 1px);pointer-events:none;height:2px;transition:opacity .32s var(--ease);position:fixed;left:0;right:0}.scroll-progress:after{background:var(--accent);content:"";transform-origin:0;width:100%;height:100%;display:block;transform:scaleX(0)}@keyframes reading-progress{to{transform:scaleX(1)}}@supports (animation-timeline:scroll()){.scroll-progress:after{animation:linear both reading-progress;animation-timeline:scroll(root)}}@media (max-width:760px){:root{--page-gutter:20px;--header-height:68px}}@media (max-width:480px){:root{--page-gutter:16px}}@media (prefers-contrast:more){:root{--muted:color-mix(in srgb, var(--ink) 76%, var(--paper));--rule:color-mix(in srgb, var(--ink) 42%, transparent);--rule-strong:color-mix(in srgb, var(--ink) 75%, transparent)}}@media (forced-colors:active){.site-header,.mobile-menu,.theme-picker__panel{color:canvastext;background:canvas}}
.site-header{z-index:100;height:var(--header-height);border-bottom:1px solid var(--rule);background:color-mix(in srgb, var(--paper) 96%, transparent);transition:background-color .32s var(--ease), border-color .32s var(--ease);position:sticky;top:0}.site-header__inner{justify-content:space-between;align-items:center;gap:clamp(18px,2.5vw,40px);height:100%;display:flex}.identity{align-items:baseline;gap:clamp(18px,2.2vw,38px);min-height:44px;display:inline-flex}.identity__name,.mobile-menu__name{font-family:var(--serif);letter-spacing:-.02em;font-size:clamp(19px,1.55vw,27px)}.identity__location{letter-spacing:.19em;text-transform:uppercase;font-size:7px;font-weight:500}.desktop-nav{align-items:center;gap:clamp(22px,2.5vw,46px);height:100%;margin-left:auto;display:flex}.desktop-nav a{letter-spacing:.08em;text-transform:uppercase;align-items:center;min-height:44px;font-size:8px;font-weight:500;display:inline-flex;position:relative}.desktop-nav a:after{background:var(--accent);content:"";transform-origin:100%;height:1px;transition:transform .22s var(--ease);position:absolute;bottom:8px;left:0;right:0;transform:scaleX(0)}.desktop-nav a:hover:after,.desktop-nav a:focus-visible:after,.desktop-nav a.is-active:after{transform-origin:0;transform:scaleX(1)}.header-tools{align-items:center;gap:12px;display:flex}.theme-picker{position:relative}.theme-picker summary{cursor:pointer;letter-spacing:.13em;text-transform:uppercase;align-items:center;gap:8px;min-width:62px;min-height:44px;padding:0;font-size:7px;font-weight:500;list-style:none;display:inline-flex}.theme-picker summary::-webkit-details-marker{display:none}.theme-picker summary>i{border:1px solid var(--rule-strong);width:12px;height:12px;box-shadow:inset 0 0 0 2px var(--paper)}.theme-swatch--porcelain{background:#f3f1ed}.theme-swatch--white{background:#fff}.theme-swatch--sage{background:#e6ebe2}.theme-swatch--black{background:#0c0c0b}.theme-picker__panel{z-index:220;border:1px solid var(--rule-strong);background:var(--paper);width:172px;padding:8px;position:absolute;top:calc(100% + 8px);right:0}.theme-picker__panel button{cursor:pointer;text-align:left;background:0 0;border:0;grid-template-columns:28px 1fr;align-items:center;width:100%;min-height:42px;padding:0 8px;display:grid}.theme-picker__panel button:hover,.theme-picker__panel button:focus-visible,.theme-picker__panel button[aria-pressed=true]{background:color-mix(in srgb, var(--ink) 7%, transparent)}.theme-picker__panel button>i{border:1px solid var(--rule-strong);width:16px;height:16px}.theme-picker__panel button>span{letter-spacing:.1em;text-transform:uppercase;font-size:8px;font-weight:500}.menu-toggle,.mobile-menu__close{cursor:pointer;letter-spacing:.13em;text-transform:uppercase;background:0 0;border:0;justify-content:flex-end;align-items:center;gap:12px;min-width:76px;min-height:44px;padding:0;font-size:8px;font-weight:500;display:none}.menu-toggle__mark{width:18px;height:10px;position:relative}.menu-toggle__mark i{background:var(--accent);width:18px;height:1px;position:absolute;right:0}.menu-toggle__mark i:first-child{top:2px}.menu-toggle__mark i:last-child{top:8px}.mobile-menu{z-index:200;background:var(--paper);width:100vw;max-width:none;height:100svh;max-height:none;color:var(--ink);border:0;margin:0;padding:0 3vw 42px;position:fixed;inset:0;overflow-y:auto}.mobile-menu[open]{animation:mobile-menu-enter .52s var(--ease) both}.mobile-menu::backdrop{background:var(--paper)}.mobile-menu__header{min-height:var(--header-height);border-bottom:1px solid var(--rule);justify-content:space-between;align-items:center;display:flex}.mobile-menu[open] .mobile-menu__header{animation:mobile-menu-header-enter .56s var(--ease) 60ms both}.mobile-menu__close{display:inline-flex}.mobile-menu__close .menu-toggle__mark i{top:5px}.mobile-menu__close .menu-toggle__mark i:first-child{transform:rotate(45deg)}.mobile-menu__close .menu-toggle__mark i:last-child{transform:rotate(-45deg)}.mobile-menu nav{border-top:1px solid var(--ink);margin-top:30px}.mobile-menu a{border-bottom:1px solid var(--rule-strong);min-height:82px;font-family:var(--serif);letter-spacing:-.025em;transition:background-color .26s var(--ease), color .26s var(--ease), opacity .26s var(--ease), padding-left .38s var(--ease), transform .38s var(--ease);grid-template-columns:42px 1fr;align-items:center;font-size:clamp(34px,7vw,56px);display:grid;position:relative}.mobile-menu[open] a{animation:mobile-menu-link-enter .62s var(--ease) both}.mobile-menu[open] a:first-child{animation-delay:.1s}.mobile-menu[open] a:nth-child(2){animation-delay:.15s}.mobile-menu[open] a:nth-child(3){animation-delay:.2s}.mobile-menu[open] a:nth-child(4){animation-delay:.25s}.mobile-menu[data-selecting=true] a:not([data-selected=true]){animation:mobile-menu-link-dim .28s var(--ease) both}.mobile-menu a[data-selected=true]{background:var(--ink);color:var(--paper);animation:mobile-menu-link-select .46s var(--ease) both}.mobile-menu a span{font-family:var(--sans);letter-spacing:.12em;font-size:8px}.mobile-menu>p{letter-spacing:.14em;text-transform:uppercase;margin-top:42px;font-size:8px}.mobile-menu[open]>p{animation:mobile-menu-caption-enter .56s var(--ease) .3s both}@keyframes mobile-menu-enter{0%{opacity:0;transform:translateY(-12px)scale(.995)}to{opacity:1;transform:none}}@keyframes mobile-menu-header-enter{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}@keyframes mobile-menu-link-enter{0%{opacity:0;transform:translate(-24px,10px)}to{opacity:1;transform:none}}@keyframes mobile-menu-link-dim{0%{opacity:1;transform:none}to{opacity:.24;transform:translate(-10px)}}@keyframes mobile-menu-link-select{0%{color:var(--ink);background:0 0;padding-left:0;transform:none}52%{background:var(--ink);color:var(--paper);padding-left:14px;transform:translate(5px)}to{background:var(--ink);color:var(--paper);padding-left:10px;transform:translate(2px)}}@keyframes mobile-menu-caption-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}body:has(.mobile-menu[open]){overflow:hidden}@media (max-width:900px){.site-header__inner{gap:12px}.identity__location,.desktop-nav{display:none}.header-tools{margin-left:auto}.menu-toggle{display:inline-flex}.mobile-menu{padding-inline:20px}}@media (prefers-reduced-motion:reduce){.mobile-menu[open],.mobile-menu[open] .mobile-menu__header,.mobile-menu[open] a,.mobile-menu[open]>p,.mobile-menu[data-selecting=true] a,.mobile-menu a[data-selected=true]{transition:none;animation:none}.mobile-menu[data-selecting=true] a:not([data-selected=true]){opacity:1;transform:none}}
.hero{grid-template-rows:auto 1fr auto;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(12px,1.4vw,24px);min-height:clamp(560px,68svh,640px);padding-block:clamp(28px,3.5vh,42px) clamp(20px,2.5vh,30px);display:grid}.hero__information{grid-column:1/span 5;max-width:470px}.hero__bio{max-width:390px;margin-top:26px;font-size:clamp(10px,.86vw,13px);line-height:1.55}.fact-list{margin-top:20px}.fact-list>div{border-bottom:1px solid var(--rule);grid-template-columns:minmax(86px,.9fr) 1.4fr;align-items:center;min-height:28px;display:grid}.fact-list dt{letter-spacing:.14em;text-transform:uppercase;font-size:7px;font-weight:500}.fact-list dd{overflow-wrap:anywhere;min-width:0;color:var(--muted);text-align:right;transition:transform .22s var(--ease);font-size:clamp(8px,.7vw,11px)}.fact-list a{position:relative}.fact-list a:after{background:var(--accent);content:"";transform-origin:100%;height:1px;transition:transform .18s var(--ease);position:absolute;bottom:-3px;left:0;right:0;transform:scaleX(0)}.fact-list a:hover:after,.fact-list a:focus-visible:after{transform-origin:0;transform:scaleX(1)}.fact-list>div:hover dd{transform:translate(-4px)}.hero h1{font-family:var(--serif);letter-spacing:-.035em;grid-column:1/-1;align-self:center;margin-block:clamp(20px,3vh,32px);font-size:clamp(58px,7.1vw,112px);font-weight:400;line-height:.91}.hero h1 span{display:block}.hero__jump{letter-spacing:.13em;text-transform:uppercase;grid-column:1/span 4;justify-self:start;align-items:center;gap:9px;min-height:44px;font-size:8px;font-weight:500;display:inline-flex}.hero__jump span{color:var(--accent);transition:transform .18s var(--ease)}.hero__jump:hover span,.hero__jump:focus-visible span{transform:translate(7px)}.hero__aside,.project-aside{width:clamp(110px,10vw,154px);color:var(--muted)}.hero__aside{grid-column:11/-1;place-self:end}.hero__aside p,.project-aside strong{color:var(--ink)}.hero__aside span,.project-aside p{margin-top:9px;font-size:clamp(8px,.68vw,10px);line-height:1.55;display:block}.hero__aside i,.project-aside i{border-right:1px solid var(--rule-strong);border-bottom:1px solid var(--rule-strong);border-color:var(--accent);width:42px;height:22px;margin-top:12px;margin-left:auto;display:block}.work-index{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;column-gap:clamp(10px,1.2vw,22px);padding-block:14px;display:grid}.work-index>.section-label{grid-column:1/span 2;padding-top:12px}.work-index__list{grid-column:4/span 8}.work-index__list a{border-bottom:1px solid var(--rule);grid-template-columns:48px minmax(120px,1.1fr) 2.4fr 54px 22px;align-items:center;min-height:38px;font-size:9px;display:grid}.work-index__list a:last-child{border-bottom:0}.work-index__list strong{letter-spacing:.1em;text-transform:uppercase;transition:transform .22s var(--ease);font-size:9px;font-weight:500}.work-index__list small{color:var(--muted);font-size:9px}.work-index__list em{letter-spacing:.13em;text-transform:uppercase;font-size:7px;font-style:normal;font-weight:500}.work-index__list i{color:var(--accent);transition:transform .18s var(--ease);font-size:13px;font-style:normal}.work-index__list a:hover strong,.work-index__list a:focus-visible strong,.work-index__list a:hover i,.work-index__list a:focus-visible i{transform:translate(7px)}.closing-notes{border-bottom:1px solid var(--rule);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.closing-panel{min-height:288px;padding:22px clamp(18px,2.2vw,36px) 32px}.closing-panel--about{grid-column:1/span 4}.closing-panel--technical{grid-column:5/span 4}.closing-panel--education{grid-column:9/span 4}.closing-panel h2:not(.section-label){font-family:var(--serif);letter-spacing:-.025em;margin-top:18px;font-size:clamp(25px,2.25vw,38px);font-weight:400;line-height:.98}.closing-panel--about>p:last-child,.education-entry__description{max-width:420px;color:var(--muted);margin-top:20px;font-size:clamp(9px,.73vw,11px);line-height:1.6}.technical-list{margin-top:18px}.technical-list>div{border-top:1px solid var(--rule);grid-template-columns:.9fr 1.35fr;gap:16px;padding-block:10px;display:grid}.technical-list dt{letter-spacing:.1em;text-transform:uppercase;font-size:7px;font-weight:500;line-height:1.5}.technical-list dd{color:var(--muted);font-size:clamp(8px,.68vw,10px);line-height:1.45}.education-list{margin-top:18px}.education-entry+.education-entry{border-top:1px solid var(--rule);margin-top:22px;padding-top:22px}.education-entry h3{font-family:var(--serif);letter-spacing:-.025em;font-size:clamp(22px,1.75vw,30px);font-weight:400;line-height:1}.education-course{letter-spacing:.1em;text-transform:uppercase;margin-top:14px;font-size:8px;font-weight:500;line-height:1.6}.education-course span{color:var(--muted)}.education-entry__description{margin-top:14px}.site-footer{border-top:1px solid var(--rule)}.site-footer__inner{grid-template-columns:1fr 1fr auto;align-items:center;gap:22px;min-height:64px;display:grid}.site-footer p,.site-footer a{letter-spacing:.08em;text-transform:uppercase;font-size:7px}.site-footer nav{align-items:center;gap:clamp(24px,3vw,48px);display:flex}.site-footer a{align-items:center;min-height:44px;display:inline-flex}@media (max-width:900px){.hero__information{grid-column:1/span 6}.work-index__list{grid-column:4/-1}}@media (max-width:760px){.hero{min-height:auto;padding-block:36px 56px;display:block}.hero__information{max-width:none}.hero__bio{max-width:340px;margin-top:22px;font-size:11px}.fact-list{max-width:420px;margin-top:28px}.fact-list>div{min-height:34px}.fact-list dd{font-size:9px}.hero h1{margin-block:40px 0;font-size:clamp(43px,13vw,72px);line-height:.94}.hero__jump{margin-top:24px}.hero__aside{width:min(45%,165px);margin:40px 0 0 auto}.work-index{grid-template-columns:1fr;padding-block:18px 8px}.work-index>.section-label,.work-index__list{grid-column:1}.work-index>.section-label{padding:0 0 18px}.work-index__list a{grid-template-columns:34px 1fr 22px;min-height:66px;padding-block:10px}.work-index__list strong{font-size:10px}.work-index__list small{grid-column:2;margin-top:4px;font-size:9px}.work-index__list em{display:none}.work-index__list i{grid-area:1/3/span 2}.closing-notes{display:block}.closing-panel{min-height:0;padding:36px 0 44px}.closing-panel h2:not(.section-label){max-width:520px;font-size:clamp(34px,9.5vw,52px)}.education-entry h3{max-width:520px;font-size:clamp(30px,7.5vw,44px)}.technical-list dt,.technical-list dd{font-size:9px}.site-footer__inner{grid-template-columns:1fr auto;padding-block:14px}.site-footer p:nth-child(2){display:none}}@media (max-width:480px){.hero h1{font-size:clamp(40px,12.2vw,56px)}.technical-list>div{grid-template-columns:.85fr 1.25fr}.site-footer__inner{padding-block:18px;display:block}.site-footer nav{justify-content:space-between;margin-top:8px}}
.project-sequence{--project-panel-height:calc(90svh - var(--header-height));isolation:isolate;position:relative}.project-chapter{--chapter-padding:clamp(48px, 7vh, 80px);z-index:1;top:var(--header-height);min-height:var(--project-panel-height);background:var(--paper);scroll-margin-top:var(--header-height);transition:background-color .32s var(--ease);position:sticky;overflow:clip}.project-chapter+.project-chapter{border-top:1px solid var(--rule)}.project-chapter:last-child{border-bottom:1px solid var(--rule)}.project-chapter__grid{min-height:var(--project-panel-height);padding-block:var(--chapter-padding);grid-template-columns:repeat(12,minmax(0,1fr));align-content:center;align-items:start;column-gap:clamp(10px,1.2vw,22px);display:grid;position:relative}.project-rail{grid-column:1/span 2}.project-rail__note{max-width:128px;color:var(--muted);margin-top:20px}.project-rail__note p{margin-top:8px;font-size:clamp(8px,.66vw,10px);line-height:1.55}.project-body{grid-column:4/span 7}.project-heading{align-items:flex-end;gap:clamp(14px,1.8vw,30px);display:flex}.project-heading h3{font-family:var(--serif);letter-spacing:.065em;text-transform:uppercase;transition:transform .26s var(--ease);font-size:clamp(44px,4.7vw,78px);font-weight:400;line-height:.86}.project-heading h3 span,.project-heading>p span{display:block}.project-heading>p{letter-spacing:.15em;text-transform:uppercase;max-width:170px;padding-bottom:3px;font-size:7px;font-weight:500;line-height:1.45}.project-summary{max-width:610px;margin-top:18px;font-size:clamp(9px,.72vw,12px);line-height:1.5}.project-themes{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px clamp(20px,4vw,68px);max-width:630px;margin-top:18px;display:grid}.project-themes li{padding-left:13px;font-size:clamp(8px,.64vw,10px);line-height:1.35;position:relative}.project-themes li:before{color:var(--accent);content:"—";position:absolute;top:0;left:0}.project-aside{right:0;bottom:var(--chapter-padding);position:absolute}.project-chapter:hover .project-heading h3{transform:translate(7px)}.project-chapter--offset .project-body{grid-column:5/span 6}.project-chapter--reverse .project-body{grid-column:2/span 8}.project-chapter--reverse .project-rail{grid-column:1}.project-chapter--reverse .project-heading{justify-content:space-between}.project-chapter--reverse .project-heading h3{letter-spacing:.09em}@media (max-width:900px){.project-chapter{--chapter-padding:clamp(48px, 7vw, 72px);z-index:1;top:var(--header-height);min-height:var(--project-panel-height);padding-block:0;position:sticky;overflow:clip}.project-chapter__grid{min-height:var(--project-panel-height);padding-block:var(--chapter-padding)}.project-body{grid-column:3/span 8}.project-chapter--offset .project-body{grid-column:4/span 7}.project-chapter--reverse .project-body{grid-column:2/span 8}.project-heading,.project-chapter--reverse .project-heading{flex-direction:column;justify-content:flex-start;align-items:flex-start}.project-heading>p{padding-bottom:0}.project-aside{bottom:var(--chapter-padding)}}@media (max-width:760px){.project-chapter{--chapter-padding:56px}.project-chapter__grid{display:block}.project-rail{justify-content:space-between;align-items:flex-start;display:flex}.project-rail__note{display:none}.project-body,.project-chapter--offset .project-body,.project-chapter--reverse .project-body{margin-top:28px}.project-chapter--offset .project-body{margin-left:8vw}.project-chapter--reverse .project-body{margin-right:5vw}.project-heading h3{font-size:clamp(48px,15vw,76px)}.project-summary{margin-top:24px;font-size:11px}.project-themes{gap:10px 20px;margin-top:24px}.project-themes li{font-size:10px}.project-aside{width:min(45%,165px);margin:28px 0 0 auto;position:relative;bottom:auto;right:auto}}@media (max-width:480px){.project-chapter{--chapter-padding:52px}.project-themes{grid-template-columns:1fr}.project-chapter--offset .project-body{margin-left:5vw}}
@keyframes header-arrival{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes project-panel-scroll-in{0%{opacity:.68;transform:translateY(18px)}to{opacity:1;transform:translate(0,0)}}@keyframes portfolio-focus{0%{opacity:.46}to{opacity:1}}@keyframes intro-content-arrival{0%{opacity:0;filter:blur(10px);transform:translateY(8px)scale(.992)}to{opacity:1;filter:blur();transform:translate(0,0)}}@property --intro-curtain-progress{syntax:"<percentage>";inherits:false;initial-value:-12%}@property --intro-curtain-x{syntax:"<percentage>";inherits:false;initial-value:-8%}@property --intro-curtain-y{syntax:"<percentage>";inherits:false;initial-value:-12%}@keyframes intro-curtain-reveal{0%{--intro-curtain-progress:-12%;--intro-curtain-x:-8%;--intro-curtain-y:-12%;-webkit-backdrop-filter:blur(18px)saturate(.82)}to{--intro-curtain-progress:112%;--intro-curtain-x:2%;--intro-curtain-y:1%;-webkit-backdrop-filter:blur()saturate()}}.intro-sequence{z-index:1000;background:var(--intro-paper,var(--paper));-webkit-backdrop-filter:blur(18px)saturate(.82);-webkit-mask-image:radial-gradient(ellipse 145% 140% at var(--intro-curtain-x) var(--intro-curtain-y), transparent 0, transparent calc(var(--intro-curtain-progress) - 8%), #0000001f calc(var(--intro-curtain-progress) - 4%), #00000094 calc(var(--intro-curtain-progress) + 3%), #000 calc(var(--intro-curtain-progress) + 9%));mask-image:radial-gradient(ellipse 145% 140% at var(--intro-curtain-x) var(--intro-curtain-y), transparent 0, transparent calc(var(--intro-curtain-progress) - 8%), #0000001f calc(var(--intro-curtain-progress) - 4%), #00000094 calc(var(--intro-curtain-progress) + 3%), #000 calc(var(--intro-curtain-progress) + 9%));-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:radial-gradient(ellipse 145% 140% at var(--intro-curtain-x) var(--intro-curtain-y), transparent 0, transparent calc(var(--intro-curtain-progress) - 8%), #0000001f calc(var(--intro-curtain-progress) - 4%), #00000094 calc(var(--intro-curtain-progress) + 3%), #000 calc(var(--intro-curtain-progress) + 9%));cursor:wait;place-items:center;display:grid;position:fixed;inset:0;overflow:hidden;-webkit-mask-repeat:no-repeat}.intro-sequence--revealing{pointer-events:none;animation:3s cubic-bezier(.22,.61,.36,1) .1s both intro-curtain-reveal}.intro-face{--intro-pixel-size:clamp(3px, .32vw, 5px);--intro-pixel-gap:clamp(1px, .1vw, 2px);color:var(--intro-pixel);opacity:0;animation:.76s steps(6,end) .14s forwards intro-face-arrival;transform:scale(.9)}.intro-face__grid{grid-template-columns:repeat(33, var(--intro-pixel-size));grid-template-rows:repeat(27, var(--intro-pixel-size));gap:var(--intro-pixel-gap);display:grid}.intro-pixel{width:var(--intro-pixel-size);height:var(--intro-pixel-size);opacity:0;transition:opacity .28s steps(2, end) var(--intro-pixel-delay), transform .42s steps(3, end) var(--intro-pixel-delay), background-color .28s steps(2, end) var(--intro-pixel-delay);background:0 0;transform:scale(.65)}.intro-pixel.is-on{background:var(--intro-pixel);opacity:1;box-shadow:0 0 8px color-mix(in srgb, var(--intro-pixel) 24%, transparent);transform:scale(1)}.intro-sequence--revealing .intro-face{opacity:0;transition:opacity 1.1s steps(7, end), transform 1.8s var(--ease);transform:scale(1.14)}[data-intro-state] .scroll-progress{opacity:0}[data-intro-state=neutral] .portfolio-site,[data-intro-state=smile] .portfolio-site{opacity:.46;filter:blur(14px)}[data-intro-state=revealing] .portfolio-site{animation:portfolio-focus 2.6s var(--ease) both}[data-intro-state=revealing] .portfolio-site .identity,[data-intro-state=revealing] .portfolio-site .desktop-nav a,[data-intro-state=revealing] .portfolio-site .theme-picker,[data-intro-state=revealing] .portfolio-site .menu-toggle,[data-intro-state=revealing] .portfolio-site .hero__information,[data-intro-state=revealing] .portfolio-site #hero-title span,[data-intro-state=revealing] .portfolio-site .hero__jump,[data-intro-state=revealing] .portfolio-site .hero__aside,[data-intro-state=revealing] .portfolio-site .work-index{will-change:opacity, filter, transform;animation:1.6s cubic-bezier(.2,.72,.2,1) both intro-content-arrival}[data-intro-state=revealing] .portfolio-site .identity{animation-delay:.1s}[data-intro-state=revealing] .portfolio-site .hero__information{animation-delay:.25s}[data-intro-state=revealing] .portfolio-site #hero-title span:first-child{animation-delay:.45s}[data-intro-state=revealing] .portfolio-site #hero-title span:nth-child(2){animation-delay:.65s}[data-intro-state=revealing] .portfolio-site #hero-title span:nth-child(3){animation-delay:.85s}[data-intro-state=revealing] .portfolio-site .desktop-nav a:first-child{animation-delay:.9s}[data-intro-state=revealing] .portfolio-site .desktop-nav a:nth-child(2){animation-delay:1.05s}[data-intro-state=revealing] .portfolio-site .desktop-nav a:nth-child(3){animation-delay:1.2s}[data-intro-state=revealing] .portfolio-site .desktop-nav a:nth-child(4){animation-delay:1.35s}[data-intro-state=revealing] .portfolio-site .hero__jump{animation-delay:1.15s}[data-intro-state=revealing] .portfolio-site .work-index{animation-delay:1.3s}[data-intro-state=revealing] .portfolio-site .hero__aside{animation-delay:1.45s}[data-intro-state=revealing] .portfolio-site .theme-picker,[data-intro-state=revealing] .portfolio-site .menu-toggle{animation-delay:1.6s}@keyframes intro-face-arrival{to{opacity:1;transform:scale(1)}}.has-js .identity,.has-js .desktop-nav a,.has-js .theme-picker,.has-js .menu-toggle{animation:header-arrival .72s var(--ease) both}.reveal-ready [data-reveal]{opacity:0;transition:opacity .68s ease, transform .68s var(--ease);transform:translateY(16px)}.reveal-ready [data-reveal].is-visible{opacity:1;transform:translateY(0)}.reveal-ready [data-reveal] .section-label i,.reveal-ready .section-label[data-reveal] i{transform-origin:0;transition:transform .52s var(--ease) 90ms;transform:scaleX(0)}.reveal-ready [data-reveal].is-visible .section-label i,.reveal-ready .section-label[data-reveal].is-visible i{transform:scaleX(1)}.reveal-ready #hero-title[data-reveal]{opacity:1;transition:none;transform:none}.reveal-ready #hero-title span{opacity:0;clip-path:inset(0 0 100%);transition:clip-path .85s var(--ease), transform .85s var(--ease), opacity .22s ease;transform:translateY(.18em)}.reveal-ready #hero-title.is-visible span{opacity:1;clip-path:inset(0);transform:translateY(0)}.reveal-ready #hero-title span:nth-child(2){transition-delay:70ms}.reveal-ready #hero-title span:nth-child(3){transition-delay:.14s}.reveal-ready .closing-panel h2,.reveal-ready .closing-panel>p:not(.section-label),.reveal-ready .closing-panel--technical .technical-list{opacity:0;transition:opacity .4s ease 90ms, transform .62s var(--ease) 90ms;transform:translateY(8px)}.reveal-ready .closing-panel.is-visible h2,.reveal-ready .closing-panel.is-visible>p:not(.section-label),.reveal-ready .closing-panel--technical.is-visible .technical-list{opacity:1;transform:translateY(0)}.reveal-ready .hero__aside i{transform-origin:100% 100%;transition:transform .62s var(--ease) .18s;transform:scale(0)}.reveal-ready .hero__aside.is-visible i{transform:scale(1)}.technical-list dt,.technical-list dd{transition:transform .22s var(--ease)}.technical-list>div:hover dt,.technical-list>div:hover dd{transform:translate(4px)}@media (max-width:900px) and (prefers-reduced-motion:no-preference){.reveal-ready [data-project-panel]{opacity:0;filter:blur(8px);transition:opacity .76s ease, filter .9s ease, transform .92s var(--ease);will-change:opacity, filter, transform;transform:translateY(30px)scale(.985)}.reveal-ready [data-project-panel].is-visible{opacity:1;filter:blur();transform:none}}@media (min-width:901px) and (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.project-chapter{view-timeline-name:--project-scroll;view-timeline-axis:block}.project-chapter__grid{animation:linear both project-panel-scroll-in;animation-timeline:--project-scroll;animation-range:entry entry 24%}}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}.scroll-progress,.intro-sequence{display:none}.portfolio-site{filter:none!important;opacity:1!important;animation:none!important;transform:none!important}.project-chapter{min-height:auto;position:relative;top:auto;overflow:visible}.project-chapter__grid{min-height:0;animation:none!important}.reveal-ready [data-reveal],.reveal-ready #hero-title span,.reveal-ready .closing-panel h2,.reveal-ready .closing-panel>p:not(.section-label),.reveal-ready .closing-panel--technical .technical-list{opacity:1;clip-path:inset(0);transform:none}}@media (min-width:901px) and (prefers-reduced-motion:reduce){.project-chapter__grid{padding-block:clamp(56px,7vw,80px)}}
