@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4f6667dd39116621-s.00az9qtie3ho1.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/07935285219a259d-s.3j-a226dh71aj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/f58031ded4338640-s.2gwoz23eiro2t.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/77814b00d5ca94a4-s.0i3h3th1vs4m7.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/605ce01b664af129-s.p.0zr6hhvz-h9nw.woff2)format("woff2");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}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.T19VSG_className{font-family:Geist,Geist Fallback;font-style:normal}.T19VSG_variable{--font-geist-sans:"Geist", "Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/b0c6b664fd57c2c6-s.27spqqad3wyeo.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/6e342921ee4dcd9d-s.3f4zuumv8svu0.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2bb852295097cd96-s.34r5yzckw0h2s.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/9eb5a876700c0028-s.2jyz_zw3a8jit.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2a04751c893bf294-s.30bdpjkrtcces.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/07a39a8a4660cc7c-s.p.1v5bejj26fx9h.woff2)format("woff2");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}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}._8Li5zG_className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}._8Li5zG_variable{--font-geist-mono:"Geist Mono", "Geist Mono Fallback"}
@property --bg{syntax:"<color>";inherits:true;initial-value:#101010}@property --rim{syntax:"<percentage>";inherits:false;initial-value:55%}@property --fg{syntax:"<color>";inherits:true;initial-value:#ededed}:root{--bg:#101010;--fg:#ededed;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--text:var(--fg);--text-2:color-mix(in oklab, var(--fg) var(--mix-2,62%), var(--bg));--text-3:color-mix(in oklab, var(--fg) var(--mix-3,38%), var(--bg));--surface:color-mix(in oklab, var(--fg) 5%, var(--bg));--surface-2:color-mix(in oklab, var(--fg) 10%, var(--bg));--row-hover:color-mix(in oklab, var(--fg) 5%, var(--bg));--line:color-mix(in oklab, var(--fg) 9%, transparent);--icon-shadow:0 4px 12px -4px #000000b3;--column:1680px;--gutter:28px;--pill-x:12px;--grid-gap:12px;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1);--ease-reveal:cubic-bezier(.25, 1, .5, 1);--reveal-ms:1.1s;--stagger-start:.12s;--stagger-step:80ms;--font-sans:var(--font-geist-sans), system-ui, sans-serif;--font-mono:var(--font-geist-mono), ui-monospace, monospace}*{box-sizing:border-box;margin:0;padding:0}html{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;scroll-behavior:smooth;scrollbar-gutter:stable;overflow-anchor:none;scroll-padding-top:72px;font-size:14px;line-height:20px}body{background:var(--bg);min-height:100dvh;overflow-x:hidden}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}::selection{color:#111;background:#fff200}:focus-visible{outline:2px solid color-mix(in oklab, var(--fg) 60%, transparent);outline-offset:2px;border-radius:6px}[data-theme]{--icon-shadow:0 4px 10px -4px #00000047}.column{width:100%;max-width:calc(var(--column) + var(--gutter) * 2);padding:0 var(--gutter);margin:0 auto}main{padding-bottom:var(--gutter)}.intro{padding-left:calc(var(--gutter) + 4px);padding-top:round(clamp(32px,6vh,64px),1px);padding-bottom:72px}.intro h1{letter-spacing:-.005em;font-size:14px;font-weight:500}.intro .role{color:var(--text-2)}.intro .bio{color:var(--text-2);gap:14px;max-width:46ch;margin-top:28px;display:grid}.links{gap:18px;margin-top:28px;display:flex}.link{color:var(--text-2);align-items:center;gap:3px;transition:color .15s;display:inline-flex}.link svg{transition:transform .2s var(--ease-out)}@media (hover:hover) and (pointer:fine){.link:hover{color:var(--text)}.link:hover svg{transform:translate(1px,-1px)}}.underline{color:var(--text);text-decoration:underline;-webkit-text-decoration-color:var(--text-3);text-decoration-color:var(--text-3);text-underline-offset:3px;transition:text-decoration-color .15s}@media (hover:hover) and (pointer:fine){.underline:hover{-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}}.stagger>*{animation:rise var(--reveal-ms) var(--ease-reveal) backwards;animation-delay:calc(var(--stagger-start) + var(--i,0) * var(--stagger-step));will-change:transform}@keyframes rise{0%{opacity:0;transform:translateY(12px)}}.icon-stack{height:32px;width:calc(32px + 37px * (var(--n,5) - 1));box-sizing:content-box;margin-block:-8px;padding-block:8px;position:relative}.icon-stack-item{width:32px;height:32px;box-shadow:var(--icon-shadow);border-radius:8px;position:absolute;top:8px;left:0}.icon-stack-item img{border-radius:inherit;pointer-events:none;width:100%;height:100%;display:block}.work{scroll-margin-top:24px}.work-head{margin-bottom:24px;display:flow-root;position:relative}.filters{overscroll-behavior-x:contain;scrollbar-width:none;min-width:0;margin:-8px calc(-1 * var(--gutter));padding:8px var(--gutter);scroll-padding-inline:var(--gutter);isolation:isolate;gap:2px;display:flex;position:relative;overflow-x:auto}.filters::-webkit-scrollbar{display:none}.filter{white-space:nowrap;height:32px;padding:0 var(--pill-x);color:var(--text-2);transition:color .15s ease, transform .16s var(--ease-out);border-radius:999px;flex:none;align-items:center;gap:8px;display:inline-flex}.filter[aria-pressed=true]{color:var(--text)}.filter:active{transform:scale(.96)}@media (hover:hover) and (pointer:fine){.filter:hover{color:var(--text)}}.filter-pill{z-index:-1;-webkit-backdrop-filter:blur(12px)saturate(1.8);box-shadow:inset 0 -10px 18px -10px color-mix(in oklab, var(--fg) 14%, transparent), 0 8px 24px -8px #0009;pointer-events:none;will-change:transform;border-radius:999px;position:absolute;top:0;left:0}.filter-pill-rim{border-radius:inherit;-webkit-mask-composite:xor;padding:1px;position:absolute;inset:0;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.grid{gap:var(--grid-gap);grid-template-columns:repeat(3,minmax(0,1fr));display:grid;position:relative}@media (max-width:900px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:600px){.grid{grid-template-columns:minmax(0,1fr)}}.reveal{--delay:calc(var(--reveal-start,0s) + var(--i,0) * var(--stagger-step));opacity:0;transition:opacity var(--reveal-ms) var(--ease-reveal) var(--delay), translate var(--reveal-ms) var(--ease-reveal) var(--delay);translate:0 16px}.reveal[data-revealed=true]{opacity:1;translate:0}.grid-item{min-width:0}@media (max-width:520px){:root{--grid-gap:8px}}@media (max-width:600px){:root{--gutter:20px}}.icon-button{width:28px;height:28px;color:var(--text-2);background:var(--surface);box-shadow:0 0 0 1px var(--line) inset;transition:transform .16s var(--ease-out), color .15s ease, background-color .15s ease, opacity .15s ease;border-radius:999px;place-items:center;display:grid}.icon-button:active{transform:scale(.92)}.icon-button:disabled{opacity:.35;cursor:default}.icon-button:disabled:active{transform:none}@media (hover:hover) and (pointer:fine){.icon-button:not(:disabled):hover{color:var(--text)}.icon-button:not(:disabled):not(.glass):hover{background:var(--surface-2)}}.tile{aspect-ratio:1;background:var(--surface);width:100%;box-shadow:0 0 0 1px var(--line) inset;transition:transform .2s var(--ease-out);-webkit-user-drag:none;border-radius:14px;display:block;position:relative;overflow:hidden}.tile:active{transform:scale(.985)}.tile img,.tile video{object-fit:cover;-webkit-user-drag:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.placeholder{width:100%;height:100%;color:var(--text-3);font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;background:repeating-linear-gradient(-45deg, transparent 0 10px, color-mix(in oklab, var(--fg) 3%, transparent) 10px 11px), var(--surface);place-items:center;font-size:11px;display:grid}.tile-expand{color:#ffffffeb;-webkit-backdrop-filter:blur(10px);opacity:0;width:24px;height:24px;transition:opacity .15s ease, transform .2s var(--ease-out);pointer-events:none;background:#14141461;border-radius:999px;place-items:center;display:grid;position:absolute;top:10px;right:10px;transform:scale(.9)}.tile:focus-visible .tile-expand{opacity:1;transform:none}@media (hover:hover) and (pointer:fine){.tile:hover .tile-expand{opacity:1;transform:none}}.glass{isolation:isolate;background:radial-gradient(120% 100% at 25% 0%, color-mix(in oklab, var(--fg) 16%, transparent), transparent 60%), color-mix(in oklab, var(--fg) 7%, transparent);-webkit-backdrop-filter:blur(12px)saturate(1.8);box-shadow:inset 0 -10px 18px -10px color-mix(in oklab, var(--fg) 14%, transparent), 0 8px 24px -8px #0009;transition:--rim .2s ease, transform .16s var(--ease-out), color .15s ease;position:relative}.glass:before{content:"";z-index:-1;border-radius:inherit;background:linear-gradient(157.5deg, color-mix(in oklab, var(--fg) var(--rim), transparent), color-mix(in oklab, var(--fg) 12%, transparent) 35%, color-mix(in oklab, var(--fg) 6%, transparent) 55%, color-mix(in oklab, var(--fg) 22%, transparent));-webkit-mask-composite:xor;pointer-events:none;padding:1px;position:absolute;inset:0;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}@media (hover:hover) and (pointer:fine){.glass:hover{--rim:70%}}.glass:active{--rim:40%}.tile-expand.glass{color:#111;-webkit-backdrop-filter:blur(10px)saturate(1.8);transition:opacity .15s ease, transform .2s var(--ease-out);background:radial-gradient(120% 100% at 25% 0,#ffffffb3,#0000 65%),#ffffff80;position:absolute;box-shadow:inset 0 1px .5px #ffffffe6,inset 0 -6px 10px -6px #00000014,0 0 0 .5px #00000014,0 4px 12px -4px #0000004d}.tile-expand.glass[data-tone=dark]{color:#fff;background:radial-gradient(120% 100% at 25% 0,#ffffff42,#0000 65%),#ffffff1a;box-shadow:inset 0 1px .5px #fff6,inset 0 -6px 10px -6px #ffffff24,0 0 0 .5px #ffffff24,0 4px 12px -4px #00000080}.dock{top:max(16px, env(safe-area-inset-top));right:max(16px, env(safe-area-inset-right));z-index:40;background:color-mix(in oklab, var(--surface-2) 90%, transparent);-webkit-backdrop-filter:blur(20px)saturate(1.4);box-shadow:0 0 0 1px var(--line) inset, 0 10px 30px -12px #00000040;animation:dock-in .6s var(--ease-out) .5s both;transform-origin:100% 0;border-radius:999px;align-items:center;padding:4px;display:flex;position:fixed}@keyframes dock-in{0%{opacity:0;transform:translateY(-8px)scale(.96)}}.dock-item{height:30px;color:var(--text-2);transition:color .15s ease, transform .16s var(--ease-out);border-radius:999px;align-items:center;padding:0 5px;font-size:12.5px;font-weight:500;display:flex;position:relative}.dock-item:active{transform:scale(.95)}.dock-item.dock-end{padding:0 8px 0 5px}@media (hover:hover) and (pointer:fine){.dock-item:hover{color:var(--text)}}.theme-toggle{top:max(16px, env(safe-area-inset-top));left:max(16px, env(safe-area-inset-left));z-index:40;width:38px;height:38px;animation:dock-in .6s var(--ease-out) .5s both;place-items:center;display:grid;position:fixed}.swatch{width:20px;height:20px;transition:transform .2s var(--ease-out);border-radius:999px}.theme-toggle:active .swatch{transform:scale(.85)}@media (hover:hover) and (pointer:fine){.theme-toggle:hover .swatch{transform:scale(1.12)}}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}html[data-theme-animating]{transition:--bg .5s,--fg .5s}.lightbox{z-index:60;place-items:center;padding:clamp(16px,5vw,64px);display:grid;position:fixed;inset:0}.lightbox-backdrop{background:color-mix(in oklab, var(--bg) 94%, transparent);position:absolute;inset:0}.lightbox-media{will-change:transform;background:var(--surface);border-radius:18px;max-width:100%;max-height:100%;position:relative;overflow:hidden}.lightbox-media img,.lightbox-media video{object-fit:cover;width:100%;height:100%;display:block}.lightbox-low{position:absolute;inset:0}.lightbox-hi{opacity:0;transition:opacity .25s}.lightbox-hi[data-loaded=true]{opacity:1}.lightbox-ui{left:0;right:0;bottom:max(20px, env(safe-area-inset-bottom));color:var(--text-2);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;gap:8px;display:flex;position:absolute}.lightbox-count{color:var(--text);gap:10px;padding:0 6px;display:inline-flex}.lightbox-count span{color:var(--text-3)}.lightbox-close{top:max(16px, env(safe-area-inset-top));position:absolute;right:16px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.stagger>*{animation-name:fade}.reveal{translate:none}.dock,.theme-toggle{animation-name:fade}.tile:active,.icon-button:active,.dock-item:active,.filter:active{transform:none}}@keyframes fade{0%{opacity:0}}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.work-years{height:32px;padding-right:var(--pill-x);color:var(--text-2);font-variant-numeric:tabular-nums;white-space:pre;transition:opacity .24s var(--ease-reveal), translate .24s var(--ease-reveal);align-items:center;display:flex;position:absolute;top:0;right:0}.work-years[data-hidden=true]{opacity:0;pointer-events:none;translate:8px}.scramble-char{transition:color .16s ease-out}.scramble-char[data-done=false]{color:var(--text-3)}
