@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-ext-wght-normal-DCwSJGxG.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-wght-normal-D_ZTVpCC.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#ececea;--ink:oklch(27% .004 100);--ink-2:oklch(45% .004 100);--ink-3:oklch(63% .004 100);--tile:#e3e3e1;--rule:#d2d2cf;--accent:#d5ff2e;--gutter:clamp(16px, 1.6vw, 28px);--gap:clamp(10px, 1.1vw, 18px);--card-gap:clamp(4px, .4vw, 8px);--bar-h:64px;--nav-mid:40px;--work-h:58svh;--title:clamp(2rem, 3.4vw, 3.75rem);--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-io:cubic-bezier(.5, 0, .2, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box;margin:0}html,body{overscroll-behavior:none;height:100%;overflow:hidden}body{background:var(--bg);color:var(--ink);letter-spacing:-.005em;-webkit-font-smoothing:antialiased;font-family:Figtree Variable,system-ui,sans-serif;font-size:15px;line-height:1.35}::selection{background:var(--accent);color:var(--ink)}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;text-align:inherit;background:0 0;border:0;padding:0}:focus-visible{outline:1.5px solid var(--ink);outline-offset:4px;border-radius:2px}svg{flex:none;width:1em;height:1em}.bar{z-index:3;padding:var(--gutter);gap:var(--gap);pointer-events:none;grid-template-columns:repeat(4,1fr);align-items:baseline;display:grid;position:fixed;inset:0 0 auto}.by{letter-spacing:-.005em;font-family:Figtree Variable,system-ui,sans-serif;font-size:15px;font-weight:400}.role,.by{color:var(--ink-3)}.nav,.clock{color:var(--ink-2)}.role{text-wrap:pretty;grid-column:1/span 2;max-width:62ch}.role,.clock{animation:fade-in .6s var(--ease-out) .35s both}.role.is-leaving,.clock.is-leaving{animation:fade-out .35s var(--ease-out) both}.clock{grid-column:4;justify-self:end}.nav{grid-column:3;justify-self:start;gap:1.2em;display:flex}.nav a{isolation:isolate;position:relative}.nav a:after,.link:after{content:"";transform-origin:100%;height:1px;transition:transform .5s var(--ease-out);background:currentColor;position:absolute;bottom:-2px;left:0;right:0;transform:scaleX(0)}@media (hover:hover){.nav a:hover:after,.link:hover:after{transform-origin:0;transform:scaleX(1)}}.nav a[aria-current=page]:after{transform:scaleX(1)}.nav a:after{z-index:-1;background:var(--accent);height:.5em;bottom:.05em}.bar>*{pointer-events:auto}.page{grid-template-rows:1fr var(--work-h);touch-action:none;-webkit-user-select:none;user-select:none;height:100svh;display:grid}.top{justify-content:space-between;align-items:last baseline;gap:var(--gap);padding:var(--gutter);min-height:0;padding-bottom:0;display:flex}mark{color:inherit;background:linear-gradient(transparent 62%, var(--accent) 62%, var(--accent) 92%, transparent 92%);-webkit-box-decoration-break:clone;box-decoration-break:clone}.signature{color:var(--ink)}.now{color:var(--ink-3);flex:none}.now a{color:var(--ink-2)}@media (hover:hover){.now a:hover mark{background:var(--accent)}}.hero,.now{transition:opacity .5s var(--ease-out)}.is-away .hero,.is-away .now{opacity:0}.hero{letter-spacing:-.03em;margin-bottom:-.2em;font-family:Lora,Georgia,serif;font-size:clamp(1.5rem,2.4vw,2.5rem);font-weight:400;line-height:1}.pr-title,.pr-next-title{font-family:Lora,Georgia,serif;font-size:var(--title);letter-spacing:-.03em;color:var(--ink);padding-bottom:.06em;font-weight:400;line-height:1}.work{min-height:0;padding-bottom:var(--gutter);position:relative;overflow:hidden}.track{--card-h:calc(var(--work-h) - var(--gutter) * 2 - 28px);align-items:flex-end;gap:var(--card-gap);height:100%;padding-left:var(--gutter);cursor:grab;display:flex}.track.is-dragging{cursor:grabbing}.card{width:calc(var(--card-h) * .78 + 20px);will-change:transform;transform-origin:50% 100%;transition:translate .95s var(--ease-io) var(--delay,0s);flex-direction:column;flex:none;display:flex}.cards-out .card:not(.is-lifted){translate:calc(var(--dir,0) * 6vw) 115%}.card.is-lifted .card-media{visibility:hidden}.card-hang{flex-direction:column;display:flex}.page.is-hung .top,.page.is-hung .work{visibility:hidden}.card-caption{color:var(--ink-3);transition:opacity .5s var(--ease-out), color .4s var(--ease-out)}.card.is-active .card-caption{color:var(--ink)}.card.is-lifted .card-caption{opacity:0}.card-media,.pm,.pr-next-thumb{background:var(--tile);position:relative;overflow:hidden}.card-media{height:var(--card-h)}.card-media>*,.pm>*,.pr-next-thumb>*{object-fit:cover;width:100%;height:100%;display:block}.card-media>*{will-change:transform}.card-media>.is-waiting{opacity:0}.card-media>.is-ready{transition:opacity .9s ease-out}.card-media:before{content:"";background:linear-gradient(100deg, transparent 35%, color-mix(in srgb, var(--bg) 55%, transparent) 50%, transparent 65%);background-size:250% 100%;animation:.5s ease-out .6s both skeleton-in,1.5s ease-in-out .6s infinite skeleton-sweep;position:absolute;inset:0}.card-media:has(>.is-ready):before{opacity:0;animation:none}@keyframes skeleton-in{0%{opacity:0}}@keyframes skeleton-sweep{0%{background-position:100% 0}to{background-position:-50% 0}}.card-caption{padding-top:8px}.proj{z-index:2;pointer-events:none;position:fixed;inset:0}.pm{top:var(--bar-h);left:var(--gutter);width:calc(50vw - var(--gutter) * 1.5);height:calc(100svh - var(--bar-h) - var(--gutter));z-index:1;position:fixed}.pm .pm-layer{position:absolute;inset:0}.pm-layer>*{object-fit:cover;width:100%;height:100%;display:block}.pm-layer>.still,.card-media>.still{position:absolute;inset:0}[data-swap]{display:block}.pr{top:var(--bar-h);bottom:0;left:calc(50vw + var(--gutter) * .5);z-index:2;overscroll-behavior:contain;pointer-events:auto;scrollbar-width:thin;scrollbar-color:var(--rule) transparent;position:fixed;right:0;overflow-y:auto}.pr-inner{padding:0 var(--gutter) var(--gutter) 0}.pr-sheet{flex-direction:column;display:flex}.pr-intro{min-height:calc(100svh - var(--bar-h) - var(--gutter));flex-direction:column;justify-content:flex-end;display:flex}.back{top:var(--nav-mid);left:var(--gutter);z-index:4;pointer-events:auto;align-items:center;margin-left:-.08em;font-size:clamp(28px,2.4vw,40px);display:flex;position:fixed;translate:0 -50%}.back svg{transition:transform .5s var(--ease-out)}@media (hover:hover){.back:hover svg{transform:translate(-5px)}}.pr-tags{color:var(--ink-2);margin-top:.7em}.pr-lead{letter-spacing:-.02em;text-wrap:pretty;max-width:32ch;margin-top:clamp(32px,6svh,64px);font-size:clamp(1.25rem,1.75vw,1.75rem);line-height:1.2}.pr-facts{border-top:1px solid var(--rule);margin-top:clamp(40px,8svh,88px)}.pr-facts>div{gap:var(--gap);border-bottom:1px solid var(--rule);grid-template-columns:1fr 2fr;padding:10px 0;display:grid}.pr-facts dt{color:var(--ink-3)}.pr-facts dd{margin:0}.link{align-items:center;gap:.3em;display:inline-flex;position:relative}.pr-block{gap:var(--gap);grid-template-columns:1fr 2fr;margin-top:clamp(48px,10svh,112px);display:grid}.pr-block h2{font-size:inherit;color:var(--ink-3);text-wrap:balance;font-weight:400}.pr-block p{text-wrap:pretty;max-width:62ch}.pr-next{border-top:1px solid var(--rule);width:100%;margin-top:clamp(80px,18svh,200px);padding-top:10px;display:block}.pr-next-label{color:var(--ink-3)}.pr-next-row{align-items:flex-end;gap:var(--gap);margin-top:14px;display:flex}.pr-next-thumb{aspect-ratio:4/5;flex:none;width:clamp(96px,11vw,168px)}.pr-next-thumb>*{transition:transform .9s var(--ease-out)}.pr-next-title{padding-bottom:0}@media (hover:hover){.pr-next:hover .pr-next-thumb>*{transform:scale(1.06)}}.proj.is-in .rv{animation:rv-in .9s var(--ease-out) both;animation-delay:calc(var(--base) + var(--i) * 55ms)}.proj.is-out .rv{animation:rv-out .35s var(--ease-out) both}@keyframes rv-in{0%{opacity:0;transform:translateY(28px)}}.proj.is-in .back.rv,.proj.is-in .pr-title.rv{animation-name:fade-in;animation-duration:1.1s}.proj.is-out .back.rv,.proj.is-out .pr-title.rv{animation:fade-out .6s var(--ease-out) both}@keyframes ground-in{0%{background:0 0}}@keyframes fade-out{to{opacity:0}}@keyframes fade-in{0%{opacity:0}}@keyframes nav-to-right{0%{opacity:0;justify-self:start;animation-timing-function:ease-out;transform:none}18%{opacity:0;justify-self:start;transform:none}18.01%,45%{opacity:0;animation-timing-function:var(--ease-out);justify-self:end;transform:translateY(-10px)}to{opacity:1;justify-self:end;transform:none}}@keyframes nav-to-top{0%,42%{opacity:0;animation-timing-function:var(--ease-out);transform:translateY(-10px)}}@keyframes nav-in{0%{opacity:0;transform:translateY(-10px)}}@keyframes rv-out{to{opacity:0;transform:translateY(-12px)}}.ar{--k:clamp(0, (var(--ap,0) - var(--at,.5)) / .25, 1);opacity:var(--k);translate:0 calc((1 - var(--k)) * (1 - var(--k)) * 36px);filter:blur(calc((1 - var(--k)) * (1 - var(--k)) * 8px))}.ab:not(.is-on) .ar{translate:0 calc((1 - var(--k)) * -14px);filter:blur(calc((1 - var(--k)) * 4px))}.ab{z-index:2;pointer-events:none;position:fixed;inset:0}.ab-scroll{inset:var(--bar-h) 0 0;overscroll-behavior:contain;padding:0 var(--gutter) var(--gutter);scrollbar-width:thin;scrollbar-color:var(--rule) transparent;position:absolute;overflow-y:auto}.ab.is-on .ab-scroll{pointer-events:auto}.ab-intro{min-height:calc(100svh - var(--bar-h) - var(--gutter));flex-direction:column;justify-content:flex-end;display:flex}.ab-intro h1{letter-spacing:-.035em;text-wrap:balance;max-width:17ch;padding-bottom:.06em;font-family:Lora,Georgia,serif;font-size:clamp(2.25rem,5vw,5.75rem);font-weight:400;line-height:.98}.ab-row,.ab-block,.ab-close{gap:var(--gap);grid-template-columns:repeat(4,1fr);display:grid}.ab-row{align-items:end;margin-top:clamp(40px,9svh,104px)}.ab-lead{letter-spacing:-.02em;text-wrap:pretty;max-width:30ch;color:var(--ink-2);grid-column:1/span 2;font-size:clamp(1.25rem,1.75vw,1.75rem);line-height:1.2}.ab-facts{border-top:1px solid var(--rule);grid-column:3/span 2}.ab-facts>div{gap:var(--gap);border-bottom:1px solid var(--rule);grid-template-columns:1fr 1fr;padding:10px 0;display:grid}.ab-facts dt,.ab-block h2,.ab-dates,.ab-close-label{color:var(--ink-3)}.ab-facts dd{margin:0}.ab-block{margin-top:clamp(72px,16svh,176px)}.ab-block h2{font-size:inherit;grid-column:1;align-self:start;font-weight:400;position:sticky;top:10px}.ab-list{grid-column:2/span 3}.ab-entry:first-child{border-top:1px solid var(--rule)}.ab-entry{gap:var(--gap);border-bottom:1px solid var(--rule);grid-template-columns:1fr 2fr;padding:10px 0 clamp(20px,3.4svh,36px);display:grid}.ab-body{max-width:62ch}.ab-body h3{letter-spacing:-.02em;font-size:clamp(1.25rem,1.75vw,1.75rem);font-weight:400;line-height:1.2}.ab-body h3 span{letter-spacing:-.005em;color:var(--ink-2);margin-top:.35em;font-size:15px;line-height:1.35;display:block}.ab-note{color:var(--ink-2);margin-top:.35em}.ab-pills{flex-wrap:wrap;grid-column:1/span 2;gap:8px;max-width:34rem;margin-top:4px;padding:0;list-style:none;display:flex}.ab-pills li{border:1px solid var(--rule);color:var(--ink-2);transition:background-color .3s var(--ease-out), border-color .3s var(--ease-out), color .3s var(--ease-out);border-radius:999px;padding:.4em .95em .45em;font-size:clamp(15px,1.15vw,18px)}@media (hover:hover){.ab-pills li:hover{background:var(--accent);border-color:var(--accent);color:var(--ink)}}.ab-close{border-top:1px solid var(--rule);row-gap:14px;margin-top:clamp(96px,22svh,240px);padding-top:10px}.ab-close-label{grid-column:1/-1}.ab-mail{font-family:Lora,Georgia,serif;font-size:min(var(--title), 7.4vw);letter-spacing:-.03em;overflow-wrap:anywhere;grid-column:1/-1;justify-self:start;line-height:1.05}.ab-mail mark{transition:background-size .6s var(--ease-out);background-repeat:no-repeat;background-size:0% 100%}@media (hover:hover){.ab-mail:hover mark{background-size:100% 100%}}html.intro .track{animation:1.6s ease-out both fade-in}html.intro .card-caption{animation:1.4s ease-out 1.5s both fade-in}html.intro .hero{animation:intro-up 1.6s var(--ease-out) 1s both}html.intro .now{animation:intro-up 1.5s var(--ease-out) 1.4s both}html.intro .role{animation:intro-up 1.6s var(--ease-out) 1.7s both}html.intro .bar .nav{animation:intro-up 1.5s var(--ease-out) 2s both}html.intro .clock{animation:intro-up 1.5s var(--ease-out) 2.25s both}html.returning .hero{animation:intro-up 1.3s var(--ease-out) 50ms both}html.returning .now{animation:intro-up 1.2s var(--ease-out) .22s both}html.returning .role{animation:intro-up 1.3s var(--ease-out) .36s both}html.returning .clock{animation:intro-up 1.2s var(--ease-out) .62s both}@keyframes intro-up{0%{opacity:0;transform:translateY(14px)}}.nf{min-height:100svh;padding:var(--gutter);align-items:flex-end;display:flex}.nf-in>*{animation:intro-up 1.2s var(--ease-out) both}.nf-code{color:var(--ink-3);animation-delay:.1s!important}.nf-title{letter-spacing:-.035em;margin-top:.4em;padding-bottom:.06em;font-family:Lora,Georgia,serif;font-size:clamp(2.75rem,7vw,7.5rem);font-weight:400;line-height:.98;animation-delay:.2s!important}.nf-lead{letter-spacing:-.02em;max-width:32ch;color:var(--ink-2);text-wrap:pretty;margin-top:clamp(20px,4svh,40px);font-size:clamp(1.25rem,1.75vw,1.75rem);line-height:1.2;animation-delay:.38s!important}.nf-path{color:var(--ink);overflow-wrap:anywhere}.nf-row{flex-wrap:wrap;align-items:baseline;gap:12px 40px;margin-top:clamp(32px,7svh,72px);display:flex;animation-delay:.55s!important}.nf-home{align-items:center;gap:.4em;display:inline-flex}.nf-home svg{transition:transform .5s var(--ease-out)}@media (hover:hover){.nf-home:hover mark{background:var(--accent)}.nf-home:hover svg{transform:translate(4px)}}.nf-or{color:var(--ink-3)}.nf-or .link{color:var(--ink-2)}@media (width<=760px){.bar{grid-template-columns:1fr;row-gap:28px}.role{grid-column:1}.role.is-leaving{top:var(--gutter);left:var(--gutter);right:var(--gutter);position:absolute}.nav{grid-column:1;gap:.9em}.bar:not(.is-project):not(.is-about){height:calc(100svh - var(--work-h));grid-template-rows:auto 1fr;row-gap:0;padding-bottom:0}.bar:not(.is-project):not(.is-about) .nav{align-self:center}.is-about .nav{animation:1.1s both nav-to-top}.hero{white-space:nowrap;font-size:min(1.8rem,7.4vw)}.now{white-space:nowrap;flex:none}.clock{display:none}.card{width:calc(var(--card-h) * .72 + 20px)}.pm{width:calc(100vw - var(--gutter) * 2);height:46svh}.pr{left:0}.pr-inner{padding:calc(46svh + 12px) 0 0}.bar:not(.is-project):not(.is-about) .nav{animation:nav-in .7s var(--ease-out) .3s both}html.returning .bar .nav{animation:intro-up 1.2s var(--ease-out) .5s both}.is-project .nav{justify-self:end;animation:1.3s both nav-to-right}.pr-intro{min-height:calc(100svh - var(--bar-h) - 46svh - 12px - 14px);justify-content:flex-start}.proj.is-in .pr-sheet{animation:0s linear 1.05s both ground-in}.proj.is-out .pr-sheet{background:0 0}.pr-sheet{background:var(--bg);padding:14px var(--gutter) calc(var(--gutter) + env(safe-area-inset-bottom));min-height:calc(100svh - var(--bar-h))}.pr-block{grid-template-columns:1fr;gap:6px}.pr-block p{letter-spacing:-.01em;font-size:17px;line-height:1.45}.ab-row,.ab-block,.ab-close,.ab-entry{grid-template-columns:1fr}.ab-lead,.ab-facts,.ab-list,.ab-pills{grid-column:1}.ab-entry{gap:6px}.ab-block h2{position:static}.ab-row{gap:36px}.ab-scroll{padding-bottom:calc(var(--gutter) + env(safe-area-inset-bottom))}}@media (prefers-reduced-motion:reduce){.proj.is-in .rv,.proj.is-out .rv{animation-duration:1ms;animation-delay:0s}.card{transition-duration:1ms}.nav,html.intro *{animation-duration:1ms!important;animation-delay:0s!important}}
